diff --git a/.env.dist b/.env.dist
new file mode 100644
index 0000000..2766b0e
--- /dev/null
+++ b/.env.dist
@@ -0,0 +1,13 @@
+# This file is a "template" of which env vars need to be defined for your application
+# Copy this file to .env file for development, create environment variables when deploying to production
+# https://symfony.com/doc/current/best_practices/configuration.html#infrastructure-related-configuration
+
+###> symfony/framework-bundle ###
+APP_ENV=prod
+APP_SECRET=NOT_A_SECRET
+#TRUSTED_PROXIES=127.0.0.1,127.0.0.2
+#TRUSTED_HOSTS=localhost,example.com
+###< symfony/framework-bundle ###
+
+BACKEND_MAINNET=http://backend.navexplorer.com
+BACKEND_TESTNET=http://backend.navexplorer.com:8080
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..48718bb
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,19 @@
+.idea
+
+###> symfony/framework-bundle ###
+.env
+/public/bundles/
+/var/
+/vendor/
+###< symfony/framework-bundle ###
+
+###> symfony/web-server-bundle ###
+.web-server-pid
+###< symfony/web-server-bundle ###
+
+###> symfony/webpack-encore-pack ###
+/node_modules/
+/public/build/
+###< symfony/webpack-encore-pack ###
+
+docker/logs/nginx/*
\ No newline at end of file
diff --git a/assets/.gitignore b/assets/.gitignore
new file mode 100644
index 0000000..e69de29
diff --git a/assets/css/app.scss b/assets/css/app.scss
new file mode 100644
index 0000000..c8ffb55
--- /dev/null
+++ b/assets/css/app.scss
@@ -0,0 +1,134 @@
+@import 'open-iconic';
+
+@import 'colors';
+@import 'buttons';
+@import 'table';
+@import 'header';
+@import 'footer';
+@import 'transaction';
+@import 'form';
+@import 'chart';
+@import 'search';
+@import 'soft-fork';
+@import 'distribution';
+
+.body {
+ padding-bottom: 50px;
+}
+
+a {
+ color: $purple;
+ span {
+ position: absolute;
+ top: -9999px;
+ left: -9999px;
+ }
+}
+
+a.disabled {
+ pointer-events: none;
+ opacity: 0.5;
+ color: $grey;
+}
+
+a:hover {
+ color: $blue;
+ text-decoration: none;
+}
+
+p {
+ margin-bottom: 0.5rem;
+}
+
+.badge {
+ font-weight: normal;
+}
+
+small {
+ color: $grey;
+}
+
+.container-fluid {
+ max-width: 1200px;
+}
+
+
+.badge-transaction-count {
+ margin-right: 1rem;
+}
+
+.badge-staking {
+ margin-right: 1rem;
+}
+
+.block-summary,
+.transaction-summary {
+ margin-bottom: 1.25rem;
+}
+
+.block-links {
+ padding: 0.5rem 0.25rem;
+ vertical-align: top;
+ border-top: 1px solid #DFD7CA;
+}
+
+.block-transactions {
+ margin-bottom: 28px;
+
+
+ ul {
+ list-style: none;
+ padding: initial;
+ }
+
+ li {
+ clear: both;
+ overflow: hidden;
+ }
+}
+
+
+
+.card-list {
+ margin-bottom: 2rem;
+
+ .card-header {
+ font-size: 1.25rem;
+ }
+
+ .card-body {
+ padding: 0.5rem;
+ }
+
+ .list-group-title {
+ font-weight: bold;
+ }
+
+ .list-group-item {
+ padding: 0.25rem 1.25rem;
+ }
+}
+
+.break-word {
+ overflow: hidden;
+ display: -webkit-box;
+ -webkit-line-clamp: 2;
+ -webkit-box-orient: vertical;
+
+ /* These are technically the same, but use both */
+ overflow-wrap: break-word;
+ word-wrap: break-word;
+
+ -ms-word-break: break-all;
+ /* This is the dangerous one in WebKit, as it breaks things wherever */
+ word-break: break-all;
+ /* Instead use this non-standard one: */
+ word-break: break-word;
+
+ /* Adds a hyphen where the word breaks, if supported (No Blink) */
+ -ms-hyphens: auto;
+ -moz-hyphens: auto;
+ -webkit-hyphens: none;
+ hyphens: none;
+
+}
\ No newline at end of file
diff --git a/assets/css/buttons.scss b/assets/css/buttons.scss
new file mode 100644
index 0000000..fc2bf61
--- /dev/null
+++ b/assets/css/buttons.scss
@@ -0,0 +1,10 @@
+.btn-info {
+ color: #fff;
+ background-color: $purple;
+ border-color: $purple;
+}
+
+.btn-info:hover {
+ background-color: $dark-purple;
+ border-color: $dark-purple;
+}
\ No newline at end of file
diff --git a/assets/css/chart.scss b/assets/css/chart.scss
new file mode 100644
index 0000000..1c9bdb7
--- /dev/null
+++ b/assets/css/chart.scss
@@ -0,0 +1,8 @@
+svg {
+ .legend {
+ font-size: 0.875rem;
+ }
+ rect {
+ stroke-width: 2;
+ }
+}
\ No newline at end of file
diff --git a/assets/css/colors.scss b/assets/css/colors.scss
new file mode 100644
index 0000000..cfb844f
--- /dev/null
+++ b/assets/css/colors.scss
@@ -0,0 +1,9 @@
+$purple: #7d59b5;
+$dark-purple: #4d3474;
+$blue: hsl(199, 81%, 59%);
+$grey: grey;
+$green: green;
+$light-grey: #f9f9f9;
+$white: #ffffff;
+$off-white: #cccccc;
+$yellow: #f0c067
\ No newline at end of file
diff --git a/assets/css/distribution.scss b/assets/css/distribution.scss
new file mode 100644
index 0000000..9c7849b
--- /dev/null
+++ b/assets/css/distribution.scss
@@ -0,0 +1,14 @@
+.distribution {
+ svg {
+ margin-bottom: 1rem;
+ }
+
+ table {
+ .box {
+ width: 1rem;
+ height: 1rem;
+ display: inline-block;
+ border-radius: 0.25rem;
+ }
+ }
+}
\ No newline at end of file
diff --git a/assets/css/footer.scss b/assets/css/footer.scss
new file mode 100644
index 0000000..46910e4
--- /dev/null
+++ b/assets/css/footer.scss
@@ -0,0 +1,43 @@
+footer {
+ position: fixed;
+ //height: 20px;
+ bottom: 0;
+ width: 100%;
+ border-top: $purple 5px solid;
+ background-color: $dark-purple;
+ margin-top: 2rem;
+ padding: 0.25rem;
+ color: $off-white;
+
+ .network {
+ float:left;
+
+ ul {
+ list-style: none;
+ padding: 0;
+ margin: 0;
+
+ li {
+ display: inline-block;
+ padding-right: 0.2rem;
+
+ a {
+ color: $grey;
+ text-transform: capitalize;
+ }
+ a:hover {
+ color: $white;
+ }
+ a.active {
+ pointer-events: none;
+ color: $white;
+ }
+
+ }
+
+ li:not(:first-child):before {
+ content: "| ";
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/assets/css/form.scss b/assets/css/form.scss
new file mode 100644
index 0000000..ad65968
--- /dev/null
+++ b/assets/css/form.scss
@@ -0,0 +1,24 @@
+.form-filter {
+ float: right;
+ margin-top: 0.5rem;
+
+ span {
+ font-size: 1rem;
+ }
+
+ label {
+ padding-left: 0.5rem;
+ }
+
+ input {
+ margin-left: 0.25rem;
+ }
+}
+
+.form-filter-disabled {
+ pointer-events: none;
+
+ label, input {
+ opacity: 0.5;
+ }
+}
\ No newline at end of file
diff --git a/assets/css/header.scss b/assets/css/header.scss
new file mode 100644
index 0000000..85b5f03
--- /dev/null
+++ b/assets/css/header.scss
@@ -0,0 +1,70 @@
+header {
+ margin-bottom: 1.25rem;
+ background-color: $light-grey;
+ border-bottom: $purple 5px solid;
+
+ @media (max-width: 575px) {
+ a {
+ display:none;
+ }
+ }
+
+ a, a:hover {
+ color: $blue;
+ }
+
+ h1 {
+ font-size: 4.4em;
+ margin-bottom: 12px;
+ padding: 0.5rem;
+
+ @media (min-width: 576px) {
+ padding: 14px 0 2px 210px;
+
+ span {
+ display: none;
+ }
+
+ background: url("/images/logo-extended.png") 0 100% no-repeat;
+ background-size: 200px 62px;
+ }
+ }
+
+ .navbar-dark .navbar-nav .nav-link {
+ color: #FFF;
+ text-shadow: 0 0.075em 0.075em rgba(0,0,0,.5);
+ font-size: 1.1em;
+ line-height: 22px;
+ font-weight: 100;
+ text-transform: inherit;
+ padding: 0.5rem 1.8rem 0.5rem 0;
+ }
+
+ .bg-nav {
+ background-color: $dark-purple;
+ }
+}
+
+
+.alpha-warning {
+ position: sticky;
+ top: 0;
+ z-index: 1000;
+ font-size: 14px;
+ background-color: #dc3545;
+ color: $white;
+ padding: 0.5rem;
+ text-align: center;
+}
+
+
+.testnet-warning {
+ position: sticky;
+ top: 0;
+ z-index: 1000;
+ font-size: 14px;
+ background-color: $blue;
+ color: $white;
+ padding: 0.5rem;
+ text-align: center;
+}
\ No newline at end of file
diff --git a/assets/css/open-iconic.scss b/assets/css/open-iconic.scss
new file mode 100644
index 0000000..993cf84
--- /dev/null
+++ b/assets/css/open-iconic.scss
@@ -0,0 +1,957 @@
+/* Bootstrap */
+
+/* Override Bootstrap default variable */
+$icon-font-path: '../fonts/' !default;
+
+@font-face {
+ font-family: 'Icons';
+ src: url('#{$icon-font-path}open-iconic.eot');
+ src: url('#{$icon-font-path}open-iconic.eot?#iconic-sm') format('embedded-opentype'), url('#{$icon-font-path}open-iconic.woff') format('woff'), url('#{$icon-font-path}open-iconic.ttf') format('truetype'), url('#{$icon-font-path}open-iconic.svg#iconic-sm') format('svg');
+ font-weight: normal;
+ font-style: normal;
+}
+
+// Catchall baseclass
+.oi {
+ position: relative;
+ top: 1px;
+ display: inline-block;
+ font-family: 'Icons';
+ font-style: normal;
+ font-weight: normal;
+ line-height: 1;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+
+
+ &:empty:before {
+ width: 1em;
+ text-align: center;
+ box-sizing: content-box;
+ }
+
+ &.oi-align-center:before {
+ text-align: center;
+ }
+
+ &.oi-align-left:before {
+ text-align: left;
+ }
+
+ &.oi-align-right:before {
+ text-align: right;
+ }
+
+
+ &.oi-flip-horizontal:before {
+ -webkit-transform: scale(-1, 1);
+ -ms-transform: scale(-1, 1);
+ transform: scale(-1, 1);
+ }
+
+ &.oi-flip-vertical:before {
+ -webkit-transform: scale(1, -1);
+ -ms-transform: scale(-1, 1);
+ transform: scale(1, -1);
+ }
+
+ &.oi-flip-horizontal-vertical:before {
+ -webkit-transform: scale(-1, -1);
+ -ms-transform: scale(-1, 1);
+ transform: scale(-1, -1);
+ }
+}
+
+
+
+.oi-account-login:before {
+ content:'\e000';
+}
+
+.oi-account-logout:before {
+ content:'\e001';
+}
+
+.oi-action-redo:before {
+ content:'\e002';
+}
+
+.oi-action-undo:before {
+ content:'\e003';
+}
+
+.oi-align-center:before {
+ content:'\e004';
+}
+
+.oi-align-left:before {
+ content:'\e005';
+}
+
+.oi-align-right:before {
+ content:'\e006';
+}
+
+.oi-aperture:before {
+ content:'\e007';
+}
+
+.oi-arrow-bottom:before {
+ content:'\e008';
+}
+
+.oi-arrow-circle-bottom:before {
+ content:'\e009';
+}
+
+.oi-arrow-circle-left:before {
+ content:'\e00a';
+}
+
+.oi-arrow-circle-right:before {
+ content:'\e00b';
+}
+
+.oi-arrow-circle-top:before {
+ content:'\e00c';
+}
+
+.oi-arrow-left:before {
+ content:'\e00d';
+}
+
+.oi-arrow-right:before {
+ content:'\e00e';
+}
+
+.oi-arrow-thick-bottom:before {
+ content:'\e00f';
+}
+
+.oi-arrow-thick-left:before {
+ content:'\e010';
+}
+
+.oi-arrow-thick-right:before {
+ content:'\e011';
+}
+
+.oi-arrow-thick-top:before {
+ content:'\e012';
+}
+
+.oi-arrow-top:before {
+ content:'\e013';
+}
+
+.oi-audio-spectrum:before {
+ content:'\e014';
+}
+
+.oi-audio:before {
+ content:'\e015';
+}
+
+.oi-badge:before {
+ content:'\e016';
+}
+
+.oi-ban:before {
+ content:'\e017';
+}
+
+.oi-bar-chart:before {
+ content:'\e018';
+}
+
+.oi-basket:before {
+ content:'\e019';
+}
+
+.oi-battery-empty:before {
+ content:'\e01a';
+}
+
+.oi-battery-full:before {
+ content:'\e01b';
+}
+
+.oi-beaker:before {
+ content:'\e01c';
+}
+
+.oi-bell:before {
+ content:'\e01d';
+}
+
+.oi-bluetooth:before {
+ content:'\e01e';
+}
+
+.oi-bold:before {
+ content:'\e01f';
+}
+
+.oi-bolt:before {
+ content:'\e020';
+}
+
+.oi-book:before {
+ content:'\e021';
+}
+
+.oi-bookmark:before {
+ content:'\e022';
+}
+
+.oi-box:before {
+ content:'\e023';
+}
+
+.oi-briefcase:before {
+ content:'\e024';
+}
+
+.oi-british-pound:before {
+ content:'\e025';
+}
+
+.oi-browser:before {
+ content:'\e026';
+}
+
+.oi-brush:before {
+ content:'\e027';
+}
+
+.oi-bug:before {
+ content:'\e028';
+}
+
+.oi-bullhorn:before {
+ content:'\e029';
+}
+
+.oi-calculator:before {
+ content:'\e02a';
+}
+
+.oi-calendar:before {
+ content:'\e02b';
+}
+
+.oi-camera-slr:before {
+ content:'\e02c';
+}
+
+.oi-caret-bottom:before {
+ content:'\e02d';
+}
+
+.oi-caret-left:before {
+ content:'\e02e';
+}
+
+.oi-caret-right:before {
+ content:'\e02f';
+}
+
+.oi-caret-top:before {
+ content:'\e030';
+}
+
+.oi-cart:before {
+ content:'\e031';
+}
+
+.oi-chat:before {
+ content:'\e032';
+}
+
+.oi-check:before {
+ content:'\e033';
+}
+
+.oi-chevron-bottom:before {
+ content:'\e034';
+}
+
+.oi-chevron-left:before {
+ content:'\e035';
+}
+
+.oi-chevron-right:before {
+ content:'\e036';
+}
+
+.oi-chevron-top:before {
+ content:'\e037';
+}
+
+.oi-circle-check:before {
+ content:'\e038';
+}
+
+.oi-circle-x:before {
+ content:'\e039';
+}
+
+.oi-clipboard:before {
+ content:'\e03a';
+}
+
+.oi-clock:before {
+ content:'\e03b';
+}
+
+.oi-cloud-download:before {
+ content:'\e03c';
+}
+
+.oi-cloud-upload:before {
+ content:'\e03d';
+}
+
+.oi-cloud:before {
+ content:'\e03e';
+}
+
+.oi-cloudy:before {
+ content:'\e03f';
+}
+
+.oi-code:before {
+ content:'\e040';
+}
+
+.oi-cog:before {
+ content:'\e041';
+}
+
+.oi-collapse-down:before {
+ content:'\e042';
+}
+
+.oi-collapse-left:before {
+ content:'\e043';
+}
+
+.oi-collapse-right:before {
+ content:'\e044';
+}
+
+.oi-collapse-up:before {
+ content:'\e045';
+}
+
+.oi-command:before {
+ content:'\e046';
+}
+
+.oi-comment-square:before {
+ content:'\e047';
+}
+
+.oi-compass:before {
+ content:'\e048';
+}
+
+.oi-contrast:before {
+ content:'\e049';
+}
+
+.oi-copywriting:before {
+ content:'\e04a';
+}
+
+.oi-credit-card:before {
+ content:'\e04b';
+}
+
+.oi-crop:before {
+ content:'\e04c';
+}
+
+.oi-dashboard:before {
+ content:'\e04d';
+}
+
+.oi-data-transfer-download:before {
+ content:'\e04e';
+}
+
+.oi-data-transfer-upload:before {
+ content:'\e04f';
+}
+
+.oi-delete:before {
+ content:'\e050';
+}
+
+.oi-dial:before {
+ content:'\e051';
+}
+
+.oi-document:before {
+ content:'\e052';
+}
+
+.oi-dollar:before {
+ content:'\e053';
+}
+
+.oi-double-quote-sans-left:before {
+ content:'\e054';
+}
+
+.oi-double-quote-sans-right:before {
+ content:'\e055';
+}
+
+.oi-double-quote-serif-left:before {
+ content:'\e056';
+}
+
+.oi-double-quote-serif-right:before {
+ content:'\e057';
+}
+
+.oi-droplet:before {
+ content:'\e058';
+}
+
+.oi-eject:before {
+ content:'\e059';
+}
+
+.oi-elevator:before {
+ content:'\e05a';
+}
+
+.oi-ellipses:before {
+ content:'\e05b';
+}
+
+.oi-envelope-closed:before {
+ content:'\e05c';
+}
+
+.oi-envelope-open:before {
+ content:'\e05d';
+}
+
+.oi-euro:before {
+ content:'\e05e';
+}
+
+.oi-excerpt:before {
+ content:'\e05f';
+}
+
+.oi-expand-down:before {
+ content:'\e060';
+}
+
+.oi-expand-left:before {
+ content:'\e061';
+}
+
+.oi-expand-right:before {
+ content:'\e062';
+}
+
+.oi-expand-up:before {
+ content:'\e063';
+}
+
+.oi-external-link:before {
+ content:'\e064';
+}
+
+.oi-eye:before {
+ content:'\e065';
+}
+
+.oi-eyedropper:before {
+ content:'\e066';
+}
+
+.oi-file:before {
+ content:'\e067';
+}
+
+.oi-fire:before {
+ content:'\e068';
+}
+
+.oi-flag:before {
+ content:'\e069';
+}
+
+.oi-flash:before {
+ content:'\e06a';
+}
+
+.oi-folder:before {
+ content:'\e06b';
+}
+
+.oi-fork:before {
+ content:'\e06c';
+}
+
+.oi-fullscreen-enter:before {
+ content:'\e06d';
+}
+
+.oi-fullscreen-exit:before {
+ content:'\e06e';
+}
+
+.oi-globe:before {
+ content:'\e06f';
+}
+
+.oi-graph:before {
+ content:'\e070';
+}
+
+.oi-grid-four-up:before {
+ content:'\e071';
+}
+
+.oi-grid-three-up:before {
+ content:'\e072';
+}
+
+.oi-grid-two-up:before {
+ content:'\e073';
+}
+
+.oi-hard-drive:before {
+ content:'\e074';
+}
+
+.oi-header:before {
+ content:'\e075';
+}
+
+.oi-headphones:before {
+ content:'\e076';
+}
+
+.oi-heart:before {
+ content:'\e077';
+}
+
+.oi-home:before {
+ content:'\e078';
+}
+
+.oi-image:before {
+ content:'\e079';
+}
+
+.oi-inbox:before {
+ content:'\e07a';
+}
+
+.oi-infinity:before {
+ content:'\e07b';
+}
+
+.oi-info:before {
+ content:'\e07c';
+}
+
+.oi-italic:before {
+ content:'\e07d';
+}
+
+.oi-justify-center:before {
+ content:'\e07e';
+}
+
+.oi-justify-left:before {
+ content:'\e07f';
+}
+
+.oi-justify-right:before {
+ content:'\e080';
+}
+
+.oi-key:before {
+ content:'\e081';
+}
+
+.oi-laptop:before {
+ content:'\e082';
+}
+
+.oi-layers:before {
+ content:'\e083';
+}
+
+.oi-lightbulb:before {
+ content:'\e084';
+}
+
+.oi-link-broken:before {
+ content:'\e085';
+}
+
+.oi-link-intact:before {
+ content:'\e086';
+}
+
+.oi-list-rich:before {
+ content:'\e087';
+}
+
+.oi-list:before {
+ content:'\e088';
+}
+
+.oi-location:before {
+ content:'\e089';
+}
+
+.oi-lock-locked:before {
+ content:'\e08a';
+}
+
+.oi-lock-unlocked:before {
+ content:'\e08b';
+}
+
+.oi-loop-circular:before {
+ content:'\e08c';
+}
+
+.oi-loop-square:before {
+ content:'\e08d';
+}
+
+.oi-loop:before {
+ content:'\e08e';
+}
+
+.oi-magnifying-glass:before {
+ content:'\e08f';
+}
+
+.oi-map-marker:before {
+ content:'\e090';
+}
+
+.oi-map:before {
+ content:'\e091';
+}
+
+.oi-media-pause:before {
+ content:'\e092';
+}
+
+.oi-media-play:before {
+ content:'\e093';
+}
+
+.oi-media-record:before {
+ content:'\e094';
+}
+
+.oi-media-skip-backward:before {
+ content:'\e095';
+}
+
+.oi-media-skip-forward:before {
+ content:'\e096';
+}
+
+.oi-media-step-backward:before {
+ content:'\e097';
+}
+
+.oi-media-step-forward:before {
+ content:'\e098';
+}
+
+.oi-media-stop:before {
+ content:'\e099';
+}
+
+.oi-medical-cross:before {
+ content:'\e09a';
+}
+
+.oi-menu:before {
+ content:'\e09b';
+}
+
+.oi-microphone:before {
+ content:'\e09c';
+}
+
+.oi-minus:before {
+ content:'\e09d';
+}
+
+.oi-monitor:before {
+ content:'\e09e';
+}
+
+.oi-moon:before {
+ content:'\e09f';
+}
+
+.oi-move:before {
+ content:'\e0a0';
+}
+
+.oi-musical-note:before {
+ content:'\e0a1';
+}
+
+.oi-paperclip:before {
+ content:'\e0a2';
+}
+
+.oi-pencil:before {
+ content:'\e0a3';
+}
+
+.oi-people:before {
+ content:'\e0a4';
+}
+
+.oi-person:before {
+ content:'\e0a5';
+}
+
+.oi-phone:before {
+ content:'\e0a6';
+}
+
+.oi-pie-chart:before {
+ content:'\e0a7';
+}
+
+.oi-pin:before {
+ content:'\e0a8';
+}
+
+.oi-play-circle:before {
+ content:'\e0a9';
+}
+
+.oi-plus:before {
+ content:'\e0aa';
+}
+
+.oi-power-standby:before {
+ content:'\e0ab';
+}
+
+.oi-print:before {
+ content:'\e0ac';
+}
+
+.oi-project:before {
+ content:'\e0ad';
+}
+
+.oi-pulse:before {
+ content:'\e0ae';
+}
+
+.oi-puzzle-piece:before {
+ content:'\e0af';
+}
+
+.oi-question-mark:before {
+ content:'\e0b0';
+}
+
+.oi-rain:before {
+ content:'\e0b1';
+}
+
+.oi-random:before {
+ content:'\e0b2';
+}
+
+.oi-reload:before {
+ content:'\e0b3';
+}
+
+.oi-resize-both:before {
+ content:'\e0b4';
+}
+
+.oi-resize-height:before {
+ content:'\e0b5';
+}
+
+.oi-resize-width:before {
+ content:'\e0b6';
+}
+
+.oi-rss-alt:before {
+ content:'\e0b7';
+}
+
+.oi-rss:before {
+ content:'\e0b8';
+}
+
+.oi-script:before {
+ content:'\e0b9';
+}
+
+.oi-share-boxed:before {
+ content:'\e0ba';
+}
+
+.oi-share:before {
+ content:'\e0bb';
+}
+
+.oi-shield:before {
+ content:'\e0bc';
+}
+
+.oi-signal:before {
+ content:'\e0bd';
+}
+
+.oi-signpost:before {
+ content:'\e0be';
+}
+
+.oi-sort-ascending:before {
+ content:'\e0bf';
+}
+
+.oi-sort-descending:before {
+ content:'\e0c0';
+}
+
+.oi-spreadsheet:before {
+ content:'\e0c1';
+}
+
+.oi-star:before {
+ content:'\e0c2';
+}
+
+.oi-sun:before {
+ content:'\e0c3';
+}
+
+.oi-tablet:before {
+ content:'\e0c4';
+}
+
+.oi-tag:before {
+ content:'\e0c5';
+}
+
+.oi-tags:before {
+ content:'\e0c6';
+}
+
+.oi-target:before {
+ content:'\e0c7';
+}
+
+.oi-task:before {
+ content:'\e0c8';
+}
+
+.oi-terminal:before {
+ content:'\e0c9';
+}
+
+.oi-text:before {
+ content:'\e0ca';
+}
+
+.oi-thumb-down:before {
+ content:'\e0cb';
+}
+
+.oi-thumb-up:before {
+ content:'\e0cc';
+}
+
+.oi-timer:before {
+ content:'\e0cd';
+}
+
+.oi-transfer:before {
+ content:'\e0ce';
+}
+
+.oi-trash:before {
+ content:'\e0cf';
+}
+
+.oi-underline:before {
+ content:'\e0d0';
+}
+
+.oi-vertical-align-bottom:before {
+ content:'\e0d1';
+}
+
+.oi-vertical-align-center:before {
+ content:'\e0d2';
+}
+
+.oi-vertical-align-top:before {
+ content:'\e0d3';
+}
+
+.oi-video:before {
+ content:'\e0d4';
+}
+
+.oi-volume-high:before {
+ content:'\e0d5';
+}
+
+.oi-volume-low:before {
+ content:'\e0d6';
+}
+
+.oi-volume-off:before {
+ content:'\e0d7';
+}
+
+.oi-warning:before {
+ content:'\e0d8';
+}
+
+.oi-wifi:before {
+ content:'\e0d9';
+}
+
+.oi-wrench:before {
+ content:'\e0da';
+}
+
+.oi-x:before {
+ content:'\e0db';
+}
+
+.oi-yen:before {
+ content:'\e0dc';
+}
+
+.oi-zoom-in:before {
+ content:'\e0dd';
+}
+
+.oi-zoom-out:before {
+ content:'\e0de';
+}
diff --git a/assets/css/search.scss b/assets/css/search.scss
new file mode 100644
index 0000000..4a77684
--- /dev/null
+++ b/assets/css/search.scss
@@ -0,0 +1,21 @@
+.search-form {
+ margin-bottom: 2rem;
+
+ input {
+ float: left;
+ margin: 0 0.75rem 0.75rem 0;
+ width: 80%;
+ }
+
+ button {
+ min-width: 18%;
+ }
+}
+
+@media only screen and (max-width: 670px) {
+ .search-form {
+ input {
+ width: 75%;
+ }
+ }
+}
\ No newline at end of file
diff --git a/assets/css/soft-fork.scss b/assets/css/soft-fork.scss
new file mode 100644
index 0000000..2792336
--- /dev/null
+++ b/assets/css/soft-fork.scss
@@ -0,0 +1,25 @@
+.page-soft-forks-index {
+ .card {
+ margin-bottom: 1.25rem;
+ }
+
+ .progressbar-position {
+ color: #DFD7CA;
+ background-color: #DFD7CA;
+ border-right: 2px solid $grey;
+ }
+
+ .progressbar-signalled {
+ color: $purple;
+ background-color: $purple;
+ }
+
+ .threshold {
+ position: absolute;
+ margin-left: 75%;
+ height: 2rem;
+ margin-top: -0.5rem;
+ border: none;
+ border-left: $grey 2px dashed;
+ }
+}
\ No newline at end of file
diff --git a/assets/css/table.scss b/assets/css/table.scss
new file mode 100644
index 0000000..e606755
--- /dev/null
+++ b/assets/css/table.scss
@@ -0,0 +1,124 @@
+.table {
+ margin-bottom: 0;
+
+ th,
+ td {
+ padding: 0.5rem 0.25rem;
+ }
+
+ badge {
+ margin-left: 0.25rem;
+ }
+}
+
+.table-striped {
+ thead {
+ th {
+ border-bottom: 0;
+ }
+ }
+
+ tbody {
+ tr:nth-of-type(odd) {
+ background-color: $light-grey;
+ }
+ }
+}
+
+@media only screen and (max-width: 576px) {
+ .table-adaptive {
+
+ .table-pagination {
+ .float-right {
+ float: none !important;
+ }
+ }
+
+ margin-bottom: 1.75rem;
+
+ thead, tbody, th, td, tr {
+ display: block;
+ }
+
+ thead {
+ tr {
+ position: absolute;
+ top: -9999px;
+ left: -9999px;
+ }
+ }
+
+ tbody {
+ tr {
+ border: 1px solid #ccc;
+ border-bottom: 0;
+ }
+
+ th {
+ font-weight: normal;
+ }
+
+ td {
+ /* Behave like a "row" */
+ border: none;
+ border-bottom: 1px solid #eee;
+ position: relative;
+ padding: 0.25rem 1rem 0.25rem 35%;
+ text-align: right !important;
+ }
+
+ td:before {
+ /* Now like a table header */
+ position: absolute;
+ /* Top/left values mimic padding */
+ top: 0.25rem;
+ left: 0.25rem;
+ //width: 45%;
+ padding-right: 10px;
+ white-space: nowrap;
+ }
+ }
+
+ td[data-role="address"]:before { content: "Address"; }
+ td[data-role="amount"]:before { content: "Amount"; }
+ td[data-role="balance"]:before { content: "Balance"; }
+ td[data-role="block"]:before { content: "Block"; }
+ td[data-role="blocks"]:before { content: "Blocks"; }
+ td[data-role="date/time"]:before { content: "Date/Time"; }
+ td[data-role="hourlyPeriod"]:before { content: "Period"; }
+ td[data-role="hash"]:before { content: "Hash"; }
+ td[data-role="height"]:before { content: "Height"; }
+ td[data-role="index"]:before { content: "Index"; }
+ td[data-role="lastBlock"]:before { content: "Last Block"; }
+ td[data-role="percentageOfCoins"]:before { content: "% of Coins"; }
+ td[data-role="previousOutput"]:before { content: "Previous Output"; }
+ td[data-role="stakedBy"]:before { content: "Staked By"; }
+ td[data-role="stakeRewards"]:before { content: "Stake Rewards"; }
+ td[data-role="rank"]:before { content: "Rank"; }
+ td[data-role="redeemedIn"]:before { content: "Redeemed In"; }
+ td[data-role="stake"]:before { content: "Stake"; }
+ td[data-role="navSpent"]:before { content: "NAV Spent"; }
+ td[data-role="transactions"]:before { content: "Transactions"; }
+ }
+}
+
+
+.table-pagination {
+ ul {
+ list-style: none;
+ padding: 0;
+
+ li {
+ display: inline-block;
+ padding-right: 0.2rem;
+
+ a {
+ text-transform: capitalize;
+ }
+ }
+
+ li:not(:first-child):before {
+ content: "| ";
+ }
+ }
+}
\ No newline at end of file
diff --git a/assets/css/transaction.scss b/assets/css/transaction.scss
new file mode 100644
index 0000000..4ca0525
--- /dev/null
+++ b/assets/css/transaction.scss
@@ -0,0 +1,66 @@
+.transaction-list {
+ .card {
+ margin-bottom: 1.25rem;
+
+ .card-header {
+ background-color: #eee;
+
+ small {
+ color: inherit;
+ }
+ }
+
+ .card-body {
+ padding: 0;
+
+ .row {
+
+ @media (max-width: 767px) {
+ span.caption {
+ font-size: 1rem;
+ }
+ .inputs {
+ border-bottom: 1px solid rgba(223,215,202,0.75);
+ padding-bottom: 0.75rem;
+ margin-bottom: 0.75rem;
+ }
+ }
+ @media (min-width: 768px) {
+ background: url("/images/arrow-thick-right.svg") 50% 50% no-repeat;
+ background-size: 28px;
+
+ span.caption {
+ display: none;
+ }
+
+ .inputs {
+ padding-right: 2rem;
+ }
+
+ .outputs {
+ padding-left: 2rem;
+ }
+ }
+
+ padding: 0.75rem 1.25rem;
+
+ ul {
+ list-style: none;
+ padding: 0;
+ margin: 0;
+
+ li {
+ overflow: hidden;
+
+ .address {
+ max-width: 65%;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ }
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/assets/js/app.js b/assets/js/app.js
new file mode 100644
index 0000000..b416dd7
--- /dev/null
+++ b/assets/js/app.js
@@ -0,0 +1,10 @@
+require('../css/app.scss');
+
+require('./services/Timezone');
+
+require('./page/AddressIndexPage');
+require('./page/BlockIndexPage');
+require('./page/BlockViewPage');
+require('./page/Home');
+require('./page/RichListIndexPage');
+require('./page/TransactionIndexPage');
\ No newline at end of file
diff --git a/assets/js/page/AddressIndexPage.js b/assets/js/page/AddressIndexPage.js
new file mode 100644
index 0000000..77b17eb
--- /dev/null
+++ b/assets/js/page/AddressIndexPage.js
@@ -0,0 +1,56 @@
+const $ = require('jquery');
+
+import TableManager from "../services/TableManager";
+import NavNumberFormat from "../services/NavNumberFormat";
+import moment from 'moment/src/moment';
+
+class AddressIndexPage {
+ constructor() {
+ console.log("Page: Address Index");
+
+ this.tableManager = new TableManager('#transaction-list table', 'transactions', this.createTableRow);
+ }
+
+ createTableRow(data) {
+ let numberFormatter = new NavNumberFormat();
+
+ let $row = $(document.createElement('tr'));
+ $row.attr('data-id', data.id);
+
+ $row.append($(document.createElement('td'))
+ .attr('data-role', 'block')
+ .append(''+data.height+' ')
+ );
+
+ $row.append($(document.createElement('td'))
+ .attr('data-role', 'date/time')
+ .append(moment(data.time).utc().format('MMM[ ]Do[ ]YYYY, h:mm:ss[ ]a'))
+ );
+
+ $row.append($(document.createElement('td'))
+ .attr('data-role', 'hash')
+ .append('' + data.transaction.substr(0, 15) + '... ')
+ );
+
+ $row.append($(document.createElement('td'))
+ .attr('data-role', 'amount')
+ .append(numberFormatter.format(data.amount) + ' NAV')
+ .append(data.type === "STAKING" ? ' Stake ' : '')
+ );
+
+ $row.append($(document.createElement('td'))
+ .attr('data-role', 'balance')
+ .addClass("text-right")
+ .append(numberFormatter.format(data.balance) + ' NAV')
+ );
+
+ return $row;
+ }
+}
+
+
+$(function() {
+ if ($('body').is('.page-address-index')) {
+ new AddressIndexPage();
+ }
+});
\ No newline at end of file
diff --git a/assets/js/page/BlockIndexPage.js b/assets/js/page/BlockIndexPage.js
new file mode 100644
index 0000000..677e7d2
--- /dev/null
+++ b/assets/js/page/BlockIndexPage.js
@@ -0,0 +1,56 @@
+const $ = require('jquery');
+
+import TableManager from "../services/TableManager";
+import NavNumberFormat from "../services/NavNumberFormat";
+import moment from 'moment/src/moment';
+
+class BlockIndexPage {
+ constructor() {
+ console.log("Block Index Page");
+
+ this.tableManager = new TableManager('#block-list table', 'blocks', this.createTableRow);
+ }
+
+ createTableRow(data) {
+ let numberFormatter = new NavNumberFormat();
+
+ let $row = $(document.createElement('tr'));
+ $row.attr('data-id', data.id);
+
+ $row.append($(document.createElement('td'))
+ .attr('data-role', 'height')
+ .append(''+data.height+' ')
+ );
+
+ $row.append($(document.createElement('td'))
+ .attr('data-role', 'date/time')
+ .append(moment(data.created).utc().format('MMM[ ]Do[ ]YYYY, h:mm:ss[ ]a'))
+ );
+
+ $row.append($(document.createElement('td'))
+ .attr('data-role', 'transactions')
+ .addClass('text-center')
+ .append(data.transactions)
+ );
+
+ $row.append($(document.createElement('td'))
+ .attr('data-role', 'stakedBy')
+ .append(data.staked_by ? '' + data.staked_by + ' ' : ' ')
+ );
+
+ $row.append($(document.createElement('td'))
+ .attr('data-role', 'stake')
+ .addClass("text-right")
+ .append(numberFormatter.formatNav(data.stake))
+ );
+
+ return $row;
+ }
+}
+
+
+$(function() {
+ if ($('body').is('.page-block-index')) {
+ new BlockIndexPage();
+ }
+});
\ No newline at end of file
diff --git a/assets/js/page/BlockViewPage.js b/assets/js/page/BlockViewPage.js
new file mode 100644
index 0000000..150315e
--- /dev/null
+++ b/assets/js/page/BlockViewPage.js
@@ -0,0 +1,19 @@
+const $ = require('jquery');
+
+import TransactionLoader from "../services/TransactionLoader";
+
+class BlockViewPage {
+ constructor() {
+ console.log("Block View Page");
+
+ let transactionLoader = new TransactionLoader();
+ transactionLoader.loadBlockTransactions();
+ }
+}
+
+
+$(function() {
+ if ($('body').is('.page-block-view')) {
+ new BlockViewPage();
+ }
+});
\ No newline at end of file
diff --git a/assets/js/page/Home.js b/assets/js/page/Home.js
new file mode 100644
index 0000000..4fe6c48
--- /dev/null
+++ b/assets/js/page/Home.js
@@ -0,0 +1,12 @@
+const $ = require('jquery');
+
+class PageHome {
+ constructor()
+ {
+ console.log("Home Page");
+ }
+}
+
+if ($('body').is('.page-home')) {
+ new PageHome();
+}
\ No newline at end of file
diff --git a/assets/js/page/RichListIndexPage.js b/assets/js/page/RichListIndexPage.js
new file mode 100644
index 0000000..68120b6
--- /dev/null
+++ b/assets/js/page/RichListIndexPage.js
@@ -0,0 +1,18 @@
+const $ = require('jquery');
+
+import Distribution from "../services/Distribution";
+
+class RichListIndexPage {
+ constructor() {
+ console.log("Rich List Index Page");
+
+ let wealthDistribution = new Distribution('#wealthDistribution', '/distribution/balance.json');
+ }
+}
+
+
+$(function() {
+ if ($('body').is('.page-richList-index')) {
+ new RichListIndexPage();
+ }
+});
\ No newline at end of file
diff --git a/assets/js/page/TransactionIndexPage.js b/assets/js/page/TransactionIndexPage.js
new file mode 100644
index 0000000..623a738
--- /dev/null
+++ b/assets/js/page/TransactionIndexPage.js
@@ -0,0 +1,63 @@
+const $ = require('jquery');
+
+
+import TableManager from "../services/TableManager";
+import NavNumberFormat from "../services/NavNumberFormat";
+import moment from 'moment/src/moment';
+
+class PageTransaction {
+ constructor() {
+ console.log("Transaction Index Page");
+
+ this.tableManager = new TableManager('#transaction-list table', 'transactions', this.createTableRow);
+ }
+
+ createTableRow(data) {
+ let numberFormatter = new NavNumberFormat();
+
+ let $row = $(document.createElement('tr'));
+ $row.attr('data-id', data.id);
+
+ $row.append($(document.createElement('td'))
+ .attr('data-role', 'hash')
+ .append('' + data.hash.substring(20) + '... ')
+ );
+
+ $row.append($(document.createElement('td'))
+ .attr('data-role', 'height')
+ .append(''+ data.height + ' ')
+ );
+
+ $row.append($(document.createElement('td'))
+ .attr('data-role', 'date/time')
+ .append(moment(data.time).utc().format('MMM[ ]Do[ ]YYYY, h:mm:ss[ ]a'))
+ );
+
+ if (data.stake) {
+ $row.append($(document.createElement('td'))
+ .addClass("text-right")
+ .attr('data-role', 'amount')
+ .append('Staking ')
+ .append(numberFormatter.format(data.stake) + ' NAV')
+ );
+ } else {
+ let amount = 0;
+ data.outputs.forEach(function (output) {
+ amount += output.amount;
+ });
+ $row.append($(document.createElement('td'))
+ .addClass("text-right")
+ .attr('data-role', 'amount')
+ .append(numberFormatter.format(amount) + ' NAV')
+ );
+ }
+
+ return $row;
+ }
+}
+
+$(function() {
+ if ($('body').is('.page-transaction-index')) {
+ new PageTransaction();
+ }
+});
diff --git a/assets/js/services/Distribution.js b/assets/js/services/Distribution.js
new file mode 100644
index 0000000..2df3eaa
--- /dev/null
+++ b/assets/js/services/Distribution.js
@@ -0,0 +1,103 @@
+const $ = require('jquery');
+
+import axios from "axios";
+import * as d3 from "d3";
+import NavNumberFormat from "../services/NavNumberFormat";
+
+export default class Distribution {
+ constructor(target, dataUrl) {
+ this.target = target;
+ this.dataUrl = dataUrl;
+ this.init();
+ }
+
+ init() {
+ this.dataSet = [];
+ axios.get(this.dataUrl).then(this.handleData.bind(this));
+ this.colors = ['#4d3474', '#44B5E9', '#1547AE', '#CE2DAF', '#5A78D1', '#5879D2', '#1547AE', '#41BEEB'];
+ }
+
+ handleData(response) {
+ if (response.status !== 200) {
+ return;
+ }
+
+ this.rawData = response.data;
+
+ if (typeof this.rawData.segments === "undefined") {
+ return;
+ }
+ this.buildChart(this.rawData.segments);
+ this.buildTable(this.rawData.segments);
+ }
+
+ buildChart(segments) {
+ let navNumberFormat = new NavNumberFormat();
+ segments.forEach(function (segment) {
+ this.dataSet.push({
+ 'label': segment.position ? 'Top ' + segment.position + ' (' + segment.percentage.toFixed(2) + '%) - ' + navNumberFormat.formatNav(segment.total, false) : 'All - ' + navNumberFormat.formatNav(segment.total, false),
+ 'count': segment.value,
+ });
+ }.bind(this));
+
+ let width = 290;
+ let height = 290;
+ let radius = Math.min(width, height) / 2;
+
+ let colors = d3.scaleOrdinal().range(this.colors);
+
+ let svg = d3.select(this.target + " svg")
+ .attr('width', width)
+ .attr('height', height)
+ .append('g')
+ .attr('transform', 'translate(' + width/2 + ',' + height/2 +')');
+
+ let arc = d3.arc()
+ .innerRadius(radius - 75)
+ .outerRadius(radius);
+
+ let pie = d3.pie()
+ .value(function(d) { return d.count; })
+ .sort(null);
+
+ let path = svg.selectAll('path')
+ .data(pie(this.dataSet))
+ .enter()
+ .append('path')
+ .attr('d', arc)
+ .attr('fill', function(d, i) {
+ return colors(d.data.label);
+ });
+ }
+
+ buildTable(segments) {
+ let numberFormatter = new NavNumberFormat();
+
+ let $table = $(this.target + " table");
+ let $tablebody = $table.find("tbody").empty();
+ let colors = this.colors;
+
+ segments.forEach(function(segment, index) {
+ let $row = $(document.createElement('tr'));
+
+ $row.append($(document.createElement('td'))
+ .attr('class', 'text-center')
+ .append(' ')
+ );
+
+ $row.append($(document.createElement('td'))
+ .append(segment.position ? numberFormatter.format(segment.position) : 'All')
+ );
+
+ $row.append($(document.createElement('td'))
+ .append(numberFormatter.formatNav(segment.value, false))
+ );
+
+ $row.append($(document.createElement('td'))
+ .attr('class', 'text-center')
+ .append(numberFormatter.format(segment.percentage, false) + '%')
+ );
+ $tablebody.append($row);
+ });
+ }
+}
\ No newline at end of file
diff --git a/assets/js/services/FormFilter.js b/assets/js/services/FormFilter.js
new file mode 100644
index 0000000..5362e64
--- /dev/null
+++ b/assets/js/services/FormFilter.js
@@ -0,0 +1,19 @@
+const $ = require('jquery');
+
+export default class FormFilter {
+ constructor() {
+ $(function() {
+ $(".form-filter input").change(function() {
+ let $form = $(this).closest('form');
+ let filters = '';
+ $form.find('input').each(function() {
+ if ($(this).prop('checked')) {
+ filters += $(this).attr('name') + ',';
+ }
+ });
+ filters = filters.substring(0, filters.length - 1)
+ document.location.href = $form.attr('action')+'?filters='+filters;
+ });
+ });
+ }
+}
\ No newline at end of file
diff --git a/assets/js/services/NavNumberFormat.js b/assets/js/services/NavNumberFormat.js
new file mode 100644
index 0000000..b1c5561
--- /dev/null
+++ b/assets/js/services/NavNumberFormat.js
@@ -0,0 +1,30 @@
+export default class NavNumberFormat {
+ format(x, decimals = true) {
+ if (typeof x === "undefined") {
+ return false;
+ }
+
+ let parts = x.toString().split(".");
+
+ parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",");
+
+ if (decimals === false) {
+ return parts[0];
+ }
+
+ if (typeof parts[1] !== 'undefined') {
+ parts[1] = '' + parts[1] + ' ';
+ }
+
+ return parts.join(".");
+ }
+
+ formatNav(x, decimals = true) {
+ let number = this.format(x, decimals);
+ if (number === false) {
+ return false;
+ }
+
+ return number + " NAV";
+ }
+}
\ No newline at end of file
diff --git a/assets/js/services/Pagination.js b/assets/js/services/Pagination.js
new file mode 100644
index 0000000..87f40bd
--- /dev/null
+++ b/assets/js/services/Pagination.js
@@ -0,0 +1,175 @@
+const $ = require('jquery');
+
+export default class Pagination {
+ constructor(tableManager) {
+ this.tableManager = tableManager;
+ let containers = tableManager.table.find('.table-pagination');
+ if (containers.length !== 0) {
+ this.containers = containers;
+ this.active = true;
+ this.initialized = false;
+ } else {
+ this.active = false;
+ }
+ }
+
+ hide() {
+ if (this.active === true) {
+ this.containers.each(function() {
+ $(this).hide();
+ });
+ }
+ }
+
+ init(data) {
+ this.state = {};
+ this.state.first = typeof data.first !== "undefined" ? data.first : true;
+ this.state.last = typeof data.last !== "undefined" ? data.last : true;
+ this.state.page = typeof data.number !== "undefined" ? data.number : 0;
+ this.state.size = typeof data.size !== "undefined" ? data.size : 50;
+ this.state.numberOfElements = typeof data.number_of_elements !== "undefined" ? data.number_of_elements : 0;
+ this.state.totalElements = typeof data.total_elements !== "undefined" ? data.total_elements : 0;
+ this.state.totalPages = typeof data.total_pages !== "undefined" ? data.total_pages : 1;
+
+ let lastPageSize = (this.state.totalElements % this.state.size);
+ this.state.lastPageElements = (lastPageSize === 0) ? this.state.size : lastPageSize;
+
+ this.initialized = true;
+
+ return this;
+ }
+
+ click(event) {
+ event.preventDefault();
+
+ let button = $(event.target);
+ $(event.target).addClass("disabled");
+
+ if (button.hasClass('paginator-first')) {
+ this.clickFirst();
+ }
+
+ if (button.hasClass('paginator-previous')) {
+ this.clickPrevious();
+ }
+
+ if (button.hasClass('paginator-next')) {
+ this.clickNext();
+ }
+
+ if (button.hasClass('paginator-last')) {
+ this.clickLast();
+ }
+
+ this.updateStateFirstPage();
+ this.updateStateLastPage();
+ }
+
+ clickFirst() {
+ this.tableManager.loadNextPage(this.tableManager.dataUrl);
+ this.state.page = 0;
+ }
+
+ clickPrevious() {
+ let urlSplit = this.tableManager.dataUrl.split('?');
+ let queryParam = (urlSplit.length > 1 && urlSplit[1] !== '') ? '&' : '?';
+ let id = this.tableManager.table.find('tbody tr:first').attr('data-id');
+
+ this.tableManager.loadNextPage(this.tableManager.dataUrl + queryParam + 'to=' + id);
+ this.state.page--;
+ }
+
+ clickNext() {
+ let urlSplit = this.tableManager.dataUrl.split('?');
+ let queryParam = (urlSplit.length > 1 && urlSplit[1] !== '') ? '&' : '?';
+ let id = this.tableManager.table.find('tbody tr:last').attr('data-id');
+
+ this.tableManager.loadNextPage(this.tableManager.dataUrl + queryParam + 'from=' + id);
+ this.state.page++;
+ }
+
+ clickLast() {
+ let urlSplit = this.tableManager.dataUrl.split('?');
+ let queryParam = (urlSplit.length > 1 && urlSplit[1] !== '') ? '&' : '?';
+
+ this.tableManager.loadNextPage(this.tableManager.dataUrl + queryParam + 'to=last&size='+this.state.lastPageElements);
+ this.state.page = this.state.totalPages - 1;
+ }
+
+ updateStateFirstPage() {
+ this.state.first = (this.state.page === 0);
+ }
+
+ updateStateLastPage() {
+ this.state.last = (this.state.page === this.state.totalPages - 1);
+ }
+
+ render() {
+ var pagination = this;
+ this.containers.each(function () {
+ $(this).empty();
+
+ let container = $(this);
+
+ let details = $(document.createElement('span'));
+ details.addClass('pagination-details');
+ details.html("Showing page " + (pagination.state.page+1) + " of " + pagination.state.totalPages);
+
+ let buttons = $(document.createElement('span'));
+ buttons.addClass('float-right');
+
+ let buttonList = $(document.createElement('ul'));
+ buttons.append(buttonList);
+
+ let firstButton = $(document.createElement('li'));
+ let firstButtonLink = pagination.renderButton('first');
+ firstButtonLink.click(pagination.click.bind(pagination));
+ if (pagination.state.first === true) {
+ firstButtonLink.addClass('disabled');
+ }
+ firstButton.append(firstButtonLink);
+ buttonList.append(firstButton);
+
+ let previousButton = $(document.createElement('li'));
+ let previousButtonLink = pagination.renderButton('previous');
+ previousButtonLink.click(pagination.click.bind(pagination));
+ if (pagination.state.first === true) {
+ previousButtonLink.addClass('disabled');
+ }
+ previousButton.append(previousButtonLink);
+ buttonList.append(previousButton);
+
+ let nextButton = $(document.createElement('li'));
+ let nextButtonLink = pagination.renderButton('next');
+ nextButtonLink.click(pagination.click.bind(pagination));
+ if (pagination.state.last === true) {
+ nextButtonLink.addClass('disabled');
+ }
+ nextButton.append(nextButtonLink);
+ buttonList.append(nextButton);
+
+ let lastButton = $(document.createElement('li'));
+ let lastButtonLink = pagination.renderButton('last');
+ lastButtonLink.click(pagination.click.bind(pagination));
+ if (pagination.state.last === true) {
+ lastButtonLink.addClass('disabled');
+ }
+ lastButton.append(lastButtonLink);
+ buttonList.append(lastButton);
+
+ container.append(details);
+ container.append(buttons);
+ });
+ }
+
+ renderButton(id) {
+ let lastButtonLink = $(document.createElement('a'));
+
+ lastButtonLink.attr('href', '#');
+ lastButtonLink.addClass('paginator');
+ lastButtonLink.addClass('paginator-' + id);
+ lastButtonLink.html(id);
+
+ return lastButtonLink;
+ }
+}
diff --git a/assets/js/services/TableManager.js b/assets/js/services/TableManager.js
new file mode 100644
index 0000000..3e0d9f3
--- /dev/null
+++ b/assets/js/services/TableManager.js
@@ -0,0 +1,84 @@
+const $ = require('jquery');
+
+import axios from "axios";
+import Pagination from "../services/Pagination";
+import FormFilter from "../services/FormFilter";
+
+export default class TableManager {
+ constructor(identifier, elementType, rowCreatedCallback) {
+ let table = $(identifier);
+ this.elementType = elementType;
+ this.rowCreatedCallback = rowCreatedCallback;
+
+ if (table.length !== 1) {
+ return;
+ }
+
+ this.init(table);
+ }
+
+ init(table) {
+ this.table = table;
+ this.dataUrl = this.table.attr('data-url');
+ this.pagination = new Pagination(this);
+ this.formFilter = new FormFilter();
+
+ this.loadDefaultPage(this.dataUrl);
+ }
+
+ loadDefaultPage(dataUrl) {
+ axios.get(dataUrl).then(this.handleDefaultResponse.bind(this));
+ }
+
+ loadNextPage(dataUrl) {
+ axios.get(dataUrl).then(this.handleNextResponse.bind(this));
+ }
+
+ handleDefaultResponse(response) {
+ let elements = response.data.elements;
+ if (typeof elements === "undefined") {
+ if (this.paginated === true) {
+ this.pagination.hide();
+ }
+ } else {
+ this.pagination.init(response.data);
+ this.handleResponse(elements);
+ }
+ }
+
+ handleNextResponse(response) {
+ let elements = response.data.elements;
+
+ if (typeof elements === "undefined") {
+ if (this.paginated === true) {
+ this.pagination.hide();
+ }
+ } else {
+ this.handleResponse(elements);
+ }
+ }
+
+ handleResponse(elements) {
+ this.emptyTable();
+
+ if (elements.length === 0) {
+ this.noResultsFound();
+ }
+
+ elements.forEach(function (tx) {
+ this.table.append(this.rowCreatedCallback(tx));
+ }.bind(this));
+
+ this.pagination.render();
+ }
+
+ noResultsFound() {
+ let columnCount = this.table.find("thead tr:first th").length;
+
+ this.table.append('
There are no ' + this.elementType + ' ');
+ }
+
+ emptyTable() {
+ this.table.find('tbody').empty();
+ }
+}
\ No newline at end of file
diff --git a/assets/js/services/Timezone.js b/assets/js/services/Timezone.js
new file mode 100644
index 0000000..b562c8c
--- /dev/null
+++ b/assets/js/services/Timezone.js
@@ -0,0 +1,15 @@
+const $ = require('jquery');
+
+import moment from 'moment/src/moment';
+
+class Timezone {
+ constructor() {
+ $(function() {
+ $('.date-localised').each(function() {
+ // $(this).html(moment($(this).data('timestamp')).format('MMM[ ]Do[ ]YYYY, h:mm:ss[ ]a'));
+ });
+ });
+ }
+}
+
+new Timezone();
\ No newline at end of file
diff --git a/assets/js/services/TransactionLoader.js b/assets/js/services/TransactionLoader.js
new file mode 100644
index 0000000..77b065f
--- /dev/null
+++ b/assets/js/services/TransactionLoader.js
@@ -0,0 +1,104 @@
+const $ = require('jquery');
+
+import axios from "axios";
+
+export default class TransactionLoader {
+ loadBlockTransactions() {
+ let self = this;
+ let height = $('.block').data('height');
+
+ axios.get('/block/'+height+'/tx.json').then(function (response) {
+ self.transactionHtml(response.data);
+ });
+ }
+
+ loadAddressTransactions(callback) {
+ let address = $('.address').data('hash');
+
+ axios.get('/address/'+address+'/tx').then(callback);
+ }
+
+ transactionHtml(data) {
+ let self = this;
+ let $transactionList = $(".transaction-list");
+ data.elements.forEach(function (tx) {
+ $transactionList.append(
+ '\n' +
+ ' \n' +
+ '
\n' +
+ '
\n' +
+ '
Inputs ' + self.inputList(tx.inputs) + '
\n' +
+ '
Outputs ' + self.inputList(tx.outputs) + '
\n' +
+ '
\n' +
+ '
\n' +
+ '
'
+ );
+ });
+ }
+
+ inputList(inputs) {
+ let BreakException = {};
+ let list = $(document.createElement('ul'));
+ let self = this;
+
+ if (inputs) {
+ try {
+ inputs.forEach(function (input, index) {
+ let address = $(document.createElement('div'));
+ address.attr('class', 'address float-left');
+ if (typeof input.address !== 'undefined') {
+ let a = $(document.createElement('a')).attr('href', '/address/' + input.address).html(input.address);
+ address.append(a);
+ } else {
+ address.html('N/A');
+ }
+
+ let amount = $(document.createElement('div'));
+ amount.attr('class', 'amount float-right');
+ amount.html((input.amount ? self.numberWithCommas(input.amount) : '0') + ' NAV');
+
+ let item = $(document.createElement('li'));
+ item.append(address)
+ item.append(amount)
+
+ list.append(item);
+ });
+ } catch (e) {
+ if (e === BreakException) {
+ let item = $(document.createElement('li')).append(''+(inputs.length-5)+' more inputs... ');
+ list.append(item);
+ } else {
+ throw e;
+ }
+ }
+ }
+
+ return list[0].outerHTML;
+ }
+
+ numberWithCommas(x) {
+ let parts = x.toString().split(".");
+ parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",");
+
+ if (typeof parts[1] !== 'undefined') {
+ parts[1] = ''+parts[1]+' ';
+ }
+
+ return parts.join(".");
+ }
+
+ sumOutputs(outputs) {
+ let sum = 0;
+
+ if (outputs) {
+ outputs.forEach(function (output) {
+ sum += output.amount;
+ });
+ }
+
+ return '' + this.numberWithCommas(sum) + ' NAV' + ' ';
+ }
+}
\ No newline at end of file
diff --git a/bin/console b/bin/console
new file mode 100755
index 0000000..14932be
--- /dev/null
+++ b/bin/console
@@ -0,0 +1,39 @@
+#!/usr/bin/env php
+load(__DIR__.'/../.env');
+}
+
+$input = new ArgvInput();
+$env = $input->getParameterOption(['--env', '-e'], $_SERVER['APP_ENV'] ?? 'dev', true);
+$debug = ($_SERVER['APP_DEBUG'] ?? ('prod' !== $env)) && !$input->hasParameterOption('--no-debug', true);
+
+if ($debug) {
+ umask(0000);
+
+ if (class_exists(Debug::class)) {
+ Debug::enable();
+ }
+}
+
+$kernel = new Kernel($env, $debug);
+$application = new Application($kernel);
+$application->run($input);
diff --git a/composer.json b/composer.json
new file mode 100644
index 0000000..88f1456
--- /dev/null
+++ b/composer.json
@@ -0,0 +1,71 @@
+{
+ "type": "project",
+ "license": "proprietary",
+ "require": {
+ "php": "^7.0.8",
+ "ext-iconv": "*",
+ "endroid/qr-code-bundle": "^3.2",
+ "guzzlehttp/guzzle": "^6.3",
+ "sensio/framework-extra-bundle": "^5.1",
+ "symfony/asset": "^3.4",
+ "symfony/console": "^3.4",
+ "symfony/expression-language": "^3.4",
+ "symfony/flex": "^1.0",
+ "symfony/framework-bundle": "^3.4",
+ "symfony/lts": "^3",
+ "symfony/monolog-bundle": "^3.2",
+ "symfony/property-access": "^3.4",
+ "symfony/serializer": "^3.4",
+ "symfony/twig-bundle": "^3.4",
+ "symfony/webpack-encore-pack": "^1.0",
+ "symfony/yaml": "^3.4",
+ "twig/extensions": "^1.5"
+ },
+ "require-dev": {
+ "symfony/dotenv": "^3.4",
+ "symfony/profiler-pack": "^1.0",
+ "symfony/web-server-bundle": "^3.4"
+ },
+ "config": {
+ "preferred-install": {
+ "*": "dist"
+ },
+ "sort-packages": true
+ },
+ "autoload": {
+ "psr-4": {
+ "App\\": "src/"
+ }
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "App\\Tests\\": "tests/"
+ }
+ },
+ "replace": {
+ "symfony/polyfill-iconv": "*",
+ "symfony/polyfill-php70": "*",
+ "symfony/polyfill-php56": "*"
+ },
+ "scripts": {
+ "auto-scripts": {
+ "cache:clear": "symfony-cmd",
+ "assets:install --symlink --relative %PUBLIC_DIR%": "symfony-cmd"
+ },
+ "post-install-cmd": [
+ "@auto-scripts"
+ ],
+ "post-update-cmd": [
+ "@auto-scripts"
+ ]
+ },
+ "conflict": {
+ "symfony/symfony": "*"
+ },
+ "extra": {
+ "symfony": {
+ "id": "01C82JP6SJW45NYZS446EVXYEX",
+ "allow-contrib": false
+ }
+ }
+}
diff --git a/composer.lock b/composer.lock
new file mode 100644
index 0000000..c50fad7
--- /dev/null
+++ b/composer.lock
@@ -0,0 +1,4021 @@
+{
+ "_readme": [
+ "This file locks the dependencies of your project to a known state",
+ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
+ "This file is @generated automatically"
+ ],
+ "content-hash": "89f496b825fc4220acb3b10dbfccdebe",
+ "packages": [
+ {
+ "name": "bacon/bacon-qr-code",
+ "version": "1.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Bacon/BaconQrCode.git",
+ "reference": "5a91b62b9d37cee635bbf8d553f4546057250bee"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Bacon/BaconQrCode/zipball/5a91b62b9d37cee635bbf8d553f4546057250bee",
+ "reference": "5a91b62b9d37cee635bbf8d553f4546057250bee",
+ "shasum": ""
+ },
+ "require": {
+ "ext-iconv": "*",
+ "php": "^5.4|^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8"
+ },
+ "suggest": {
+ "ext-gd": "to generate QR code images"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "BaconQrCode": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-2-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Ben Scholzen 'DASPRiD'",
+ "email": "mail@dasprids.de",
+ "homepage": "http://www.dasprids.de",
+ "role": "Developer"
+ }
+ ],
+ "description": "BaconQrCode is a QR code generator for PHP.",
+ "homepage": "https://github.com/Bacon/BaconQrCode",
+ "time": "2017-10-17T09:59:25+00:00"
+ },
+ {
+ "name": "doctrine/annotations",
+ "version": "v1.6.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/annotations.git",
+ "reference": "c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/annotations/zipball/c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5",
+ "reference": "c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/lexer": "1.*",
+ "php": "^7.1"
+ },
+ "require-dev": {
+ "doctrine/cache": "1.*",
+ "phpunit/phpunit": "^6.4"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.6.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "Docblock Annotations Parser",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "annotations",
+ "docblock",
+ "parser"
+ ],
+ "time": "2017-12-06T07:11:42+00:00"
+ },
+ {
+ "name": "doctrine/cache",
+ "version": "v1.7.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/cache.git",
+ "reference": "b3217d58609e9c8e661cd41357a54d926c4a2a1a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/cache/zipball/b3217d58609e9c8e661cd41357a54d926c4a2a1a",
+ "reference": "b3217d58609e9c8e661cd41357a54d926c4a2a1a",
+ "shasum": ""
+ },
+ "require": {
+ "php": "~7.1"
+ },
+ "conflict": {
+ "doctrine/common": ">2.2,<2.4"
+ },
+ "require-dev": {
+ "alcaeus/mongo-php-adapter": "^1.1",
+ "mongodb/mongodb": "^1.1",
+ "phpunit/phpunit": "^5.7",
+ "predis/predis": "~1.0"
+ },
+ "suggest": {
+ "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.7.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "Caching library offering an object-oriented API for many cache backends",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "cache",
+ "caching"
+ ],
+ "time": "2017-08-25T07:02:50+00:00"
+ },
+ {
+ "name": "doctrine/collections",
+ "version": "v1.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/collections.git",
+ "reference": "a01ee38fcd999f34d9bfbcee59dbda5105449cbf"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/collections/zipball/a01ee38fcd999f34d9bfbcee59dbda5105449cbf",
+ "reference": "a01ee38fcd999f34d9bfbcee59dbda5105449cbf",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "~0.1@dev",
+ "phpunit/phpunit": "^5.7"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Doctrine\\Common\\Collections\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "Collections Abstraction library",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "array",
+ "collections",
+ "iterator"
+ ],
+ "time": "2017-07-22T10:37:32+00:00"
+ },
+ {
+ "name": "doctrine/common",
+ "version": "v2.8.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/common.git",
+ "reference": "f68c297ce6455e8fd794aa8ffaf9fa458f6ade66"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/common/zipball/f68c297ce6455e8fd794aa8ffaf9fa458f6ade66",
+ "reference": "f68c297ce6455e8fd794aa8ffaf9fa458f6ade66",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/annotations": "1.*",
+ "doctrine/cache": "1.*",
+ "doctrine/collections": "1.*",
+ "doctrine/inflector": "1.*",
+ "doctrine/lexer": "1.*",
+ "php": "~7.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^5.7"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.8.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Common\\": "lib/Doctrine/Common"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "Common Library for Doctrine projects",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "annotations",
+ "collections",
+ "eventmanager",
+ "persistence",
+ "spl"
+ ],
+ "time": "2017-08-31T08:43:38+00:00"
+ },
+ {
+ "name": "doctrine/inflector",
+ "version": "v1.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/inflector.git",
+ "reference": "5527a48b7313d15261292c149e55e26eae771b0a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/inflector/zipball/5527a48b7313d15261292c149e55e26eae771b0a",
+ "reference": "5527a48b7313d15261292c149e55e26eae771b0a",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "Common String Manipulations with regard to casing and singular/plural rules.",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "inflection",
+ "pluralize",
+ "singularize",
+ "string"
+ ],
+ "time": "2018-01-09T20:05:19+00:00"
+ },
+ {
+ "name": "doctrine/lexer",
+ "version": "v1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/lexer.git",
+ "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c",
+ "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Doctrine\\Common\\Lexer\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "lexer",
+ "parser"
+ ],
+ "time": "2014-09-09T13:34:57+00:00"
+ },
+ {
+ "name": "endroid/qr-code",
+ "version": "3.2.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/endroid/qr-code.git",
+ "reference": "844f9ea95bd6b012097890c6106c909cd802add2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/endroid/qr-code/zipball/844f9ea95bd6b012097890c6106c909cd802add2",
+ "reference": "844f9ea95bd6b012097890c6106c909cd802add2",
+ "shasum": ""
+ },
+ "require": {
+ "bacon/bacon-qr-code": "^1.0.3",
+ "ext-gd": "*",
+ "khanamiryan/qrcode-detector-decoder": "^1.0",
+ "myclabs/php-enum": "^1.5",
+ "php": ">=7.1",
+ "symfony/options-resolver": "^2.7|^3.0|^4.0",
+ "symfony/property-access": "^2.7|^3.0|^4.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^5.7|^6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Endroid\\QrCode\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jeroen van den Enden",
+ "email": "info@endroid.nl",
+ "homepage": "https://endroid.nl/"
+ }
+ ],
+ "description": "Endroid QR Code",
+ "homepage": "https://github.com/endroid/qr-code",
+ "keywords": [
+ "bundle",
+ "code",
+ "endroid",
+ "php",
+ "qr",
+ "qrcode"
+ ],
+ "time": "2018-02-27T21:35:30+00:00"
+ },
+ {
+ "name": "endroid/qr-code-bundle",
+ "version": "3.2.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/endroid/qr-code-bundle.git",
+ "reference": "2b971be53ec4666d2b1064a0143206a153464657"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/endroid/qr-code-bundle/zipball/2b971be53ec4666d2b1064a0143206a153464657",
+ "reference": "2b971be53ec4666d2b1064a0143206a153464657",
+ "shasum": ""
+ },
+ "require": {
+ "endroid/qr-code": "^3.2.5",
+ "php": ">=7.1",
+ "symfony/framework-bundle": "^3.4|^4.0",
+ "symfony/twig-bundle": "^3.4|^4.0",
+ "symfony/yaml": "^3.4|^4.0"
+ },
+ "require-dev": {
+ "endroid/bundle-test": "dev-master"
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Endroid\\QrCodeBundle\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jeroen van den Enden",
+ "email": "info@endroid.nl",
+ "homepage": "https://endroid.nl/"
+ }
+ ],
+ "description": "Endroid QR Code Bundle",
+ "homepage": "https://github.com/endroid/qr-code-bundle",
+ "keywords": [
+ "bundle",
+ "code",
+ "endroid",
+ "php",
+ "qr",
+ "symfony"
+ ],
+ "time": "2018-04-02T19:28:50+00:00"
+ },
+ {
+ "name": "guzzlehttp/guzzle",
+ "version": "6.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/guzzle/guzzle.git",
+ "reference": "f4db5a78a5ea468d4831de7f0bf9d9415e348699"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/guzzle/guzzle/zipball/f4db5a78a5ea468d4831de7f0bf9d9415e348699",
+ "reference": "f4db5a78a5ea468d4831de7f0bf9d9415e348699",
+ "shasum": ""
+ },
+ "require": {
+ "guzzlehttp/promises": "^1.0",
+ "guzzlehttp/psr7": "^1.4",
+ "php": ">=5.5"
+ },
+ "require-dev": {
+ "ext-curl": "*",
+ "phpunit/phpunit": "^4.0 || ^5.0",
+ "psr/log": "^1.0"
+ },
+ "suggest": {
+ "psr/log": "Required for using the Log middleware"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "6.2-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/functions_include.php"
+ ],
+ "psr-4": {
+ "GuzzleHttp\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Michael Dowling",
+ "email": "mtdowling@gmail.com",
+ "homepage": "https://github.com/mtdowling"
+ }
+ ],
+ "description": "Guzzle is a PHP HTTP client library",
+ "homepage": "http://guzzlephp.org/",
+ "keywords": [
+ "client",
+ "curl",
+ "framework",
+ "http",
+ "http client",
+ "rest",
+ "web service"
+ ],
+ "time": "2017-06-22T18:50:49+00:00"
+ },
+ {
+ "name": "guzzlehttp/promises",
+ "version": "v1.3.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/guzzle/promises.git",
+ "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646",
+ "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "GuzzleHttp\\Promise\\": "src/"
+ },
+ "files": [
+ "src/functions_include.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Michael Dowling",
+ "email": "mtdowling@gmail.com",
+ "homepage": "https://github.com/mtdowling"
+ }
+ ],
+ "description": "Guzzle promises library",
+ "keywords": [
+ "promise"
+ ],
+ "time": "2016-12-20T10:07:11+00:00"
+ },
+ {
+ "name": "guzzlehttp/psr7",
+ "version": "1.4.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/guzzle/psr7.git",
+ "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/guzzle/psr7/zipball/f5b8a8512e2b58b0071a7280e39f14f72e05d87c",
+ "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.4.0",
+ "psr/http-message": "~1.0"
+ },
+ "provide": {
+ "psr/http-message-implementation": "1.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "GuzzleHttp\\Psr7\\": "src/"
+ },
+ "files": [
+ "src/functions_include.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Michael Dowling",
+ "email": "mtdowling@gmail.com",
+ "homepage": "https://github.com/mtdowling"
+ },
+ {
+ "name": "Tobias Schultze",
+ "homepage": "https://github.com/Tobion"
+ }
+ ],
+ "description": "PSR-7 message implementation that also provides common utility methods",
+ "keywords": [
+ "http",
+ "message",
+ "request",
+ "response",
+ "stream",
+ "uri",
+ "url"
+ ],
+ "time": "2017-03-20T17:10:46+00:00"
+ },
+ {
+ "name": "khanamiryan/qrcode-detector-decoder",
+ "version": "1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/khanamiryan/php-qrcode-detector-decoder.git",
+ "reference": "96d5f80680b04803c4f1b69d6e01735e876b80c7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/khanamiryan/php-qrcode-detector-decoder/zipball/96d5f80680b04803c4f1b69d6e01735e876b80c7",
+ "reference": "96d5f80680b04803c4f1b69d6e01735e876b80c7",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.6|^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^5.7"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "lib/"
+ ],
+ "files": [
+ "lib/common/customFunctions.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ashot Khanamiryan",
+ "email": "a.khanamiryan@gmail.com",
+ "homepage": "https://github.com/khanamiryan",
+ "role": "Developer"
+ }
+ ],
+ "description": "QR code decoder / reader",
+ "homepage": "https://github.com/khanamiryan/php-qrcode-detector-decoder",
+ "keywords": [
+ "barcode",
+ "qr",
+ "zxing"
+ ],
+ "time": "2017-01-13T09:11:46+00:00"
+ },
+ {
+ "name": "monolog/monolog",
+ "version": "1.23.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Seldaek/monolog.git",
+ "reference": "fd8c787753b3a2ad11bc60c063cff1358a32a3b4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd8c787753b3a2ad11bc60c063cff1358a32a3b4",
+ "reference": "fd8c787753b3a2ad11bc60c063cff1358a32a3b4",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0",
+ "psr/log": "~1.0"
+ },
+ "provide": {
+ "psr/log-implementation": "1.0.0"
+ },
+ "require-dev": {
+ "aws/aws-sdk-php": "^2.4.9 || ^3.0",
+ "doctrine/couchdb": "~1.0@dev",
+ "graylog2/gelf-php": "~1.0",
+ "jakub-onderka/php-parallel-lint": "0.9",
+ "php-amqplib/php-amqplib": "~2.4",
+ "php-console/php-console": "^3.1.3",
+ "phpunit/phpunit": "~4.5",
+ "phpunit/phpunit-mock-objects": "2.3.0",
+ "ruflin/elastica": ">=0.90 <3.0",
+ "sentry/sentry": "^0.13",
+ "swiftmailer/swiftmailer": "^5.3|^6.0"
+ },
+ "suggest": {
+ "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
+ "doctrine/couchdb": "Allow sending log messages to a CouchDB server",
+ "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
+ "ext-mongo": "Allow sending log messages to a MongoDB server",
+ "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
+ "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver",
+ "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib",
+ "php-console/php-console": "Allow sending log messages to Google Chrome",
+ "rollbar/rollbar": "Allow sending log messages to Rollbar",
+ "ruflin/elastica": "Allow sending log messages to an Elastic Search server",
+ "sentry/sentry": "Allow sending log messages to a Sentry server"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Monolog\\": "src/Monolog"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ }
+ ],
+ "description": "Sends your logs to files, sockets, inboxes, databases and various web services",
+ "homepage": "http://github.com/Seldaek/monolog",
+ "keywords": [
+ "log",
+ "logging",
+ "psr-3"
+ ],
+ "time": "2017-06-19T01:22:40+00:00"
+ },
+ {
+ "name": "myclabs/php-enum",
+ "version": "1.5.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/myclabs/php-enum.git",
+ "reference": "3ed7088cfd0a0e06534b7f8b0eee82acea574fac"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/myclabs/php-enum/zipball/3ed7088cfd0a0e06534b7f8b0eee82acea574fac",
+ "reference": "3ed7088cfd0a0e06534b7f8b0eee82acea574fac",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8.35|^5.7|^6.0",
+ "squizlabs/php_codesniffer": "1.*"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "MyCLabs\\Enum\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP Enum contributors",
+ "homepage": "https://github.com/myclabs/php-enum/graphs/contributors"
+ }
+ ],
+ "description": "PHP Enum implementation",
+ "homepage": "http://github.com/myclabs/php-enum",
+ "keywords": [
+ "enum"
+ ],
+ "time": "2017-06-28T16:24:08+00:00"
+ },
+ {
+ "name": "psr/cache",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/cache.git",
+ "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8",
+ "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Cache\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for caching libraries",
+ "keywords": [
+ "cache",
+ "psr",
+ "psr-6"
+ ],
+ "time": "2016-08-06T20:24:11+00:00"
+ },
+ {
+ "name": "psr/container",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/container.git",
+ "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
+ "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Container\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common Container Interface (PHP FIG PSR-11)",
+ "homepage": "https://github.com/php-fig/container",
+ "keywords": [
+ "PSR-11",
+ "container",
+ "container-interface",
+ "container-interop",
+ "psr"
+ ],
+ "time": "2017-02-14T16:28:37+00:00"
+ },
+ {
+ "name": "psr/http-message",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/http-message.git",
+ "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
+ "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Message\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for HTTP messages",
+ "homepage": "https://github.com/php-fig/http-message",
+ "keywords": [
+ "http",
+ "http-message",
+ "psr",
+ "psr-7",
+ "request",
+ "response"
+ ],
+ "time": "2016-08-06T14:39:51+00:00"
+ },
+ {
+ "name": "psr/log",
+ "version": "1.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/log.git",
+ "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
+ "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Log\\": "Psr/Log/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for logging libraries",
+ "homepage": "https://github.com/php-fig/log",
+ "keywords": [
+ "log",
+ "psr",
+ "psr-3"
+ ],
+ "time": "2016-10-10T12:19:37+00:00"
+ },
+ {
+ "name": "psr/simple-cache",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/simple-cache.git",
+ "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b",
+ "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\SimpleCache\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interfaces for simple caching",
+ "keywords": [
+ "cache",
+ "caching",
+ "psr",
+ "psr-16",
+ "simple-cache"
+ ],
+ "time": "2017-10-23T01:57:42+00:00"
+ },
+ {
+ "name": "sensio/framework-extra-bundle",
+ "version": "v5.1.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sensiolabs/SensioFrameworkExtraBundle.git",
+ "reference": "bf4940572e43af679aaa13be98f3446a1c237bd8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/bf4940572e43af679aaa13be98f3446a1c237bd8",
+ "reference": "bf4940572e43af679aaa13be98f3446a1c237bd8",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/common": "^2.2",
+ "symfony/config": "^3.3|^4.0",
+ "symfony/dependency-injection": "^3.3|^4.0",
+ "symfony/framework-bundle": "^3.3|^4.0",
+ "symfony/http-kernel": "^3.3|^4.0"
+ },
+ "require-dev": {
+ "doctrine/doctrine-bundle": "^1.6",
+ "doctrine/orm": "^2.5",
+ "symfony/browser-kit": "^3.3|^4.0",
+ "symfony/dom-crawler": "^3.3|^4.0",
+ "symfony/expression-language": "^3.3|^4.0",
+ "symfony/finder": "^3.3|^4.0",
+ "symfony/phpunit-bridge": "^3.3|^4.0",
+ "symfony/psr-http-message-bridge": "^0.3",
+ "symfony/security-bundle": "^3.3|^4.0",
+ "symfony/twig-bundle": "^3.3|^4.0",
+ "symfony/yaml": "^3.3|^4.0",
+ "twig/twig": "~1.12|~2.0",
+ "zendframework/zend-diactoros": "^1.3"
+ },
+ "suggest": {
+ "symfony/expression-language": "",
+ "symfony/psr-http-message-bridge": "To use the PSR-7 converters",
+ "symfony/security-bundle": ""
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Sensio\\Bundle\\FrameworkExtraBundle\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "This bundle provides a way to configure your controllers with annotations",
+ "keywords": [
+ "annotations",
+ "controllers"
+ ],
+ "time": "2018-02-14T08:40:54+00:00"
+ },
+ {
+ "name": "symfony/asset",
+ "version": "v3.4.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/asset.git",
+ "reference": "89e9267bf33a8214efceb1ead12fb73504e81089"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/asset/zipball/89e9267bf33a8214efceb1ead12fb73504e81089",
+ "reference": "89e9267bf33a8214efceb1ead12fb73504e81089",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8"
+ },
+ "require-dev": {
+ "symfony/http-foundation": "~2.8|~3.0|~4.0",
+ "symfony/http-kernel": "~2.8|~3.0|~4.0"
+ },
+ "suggest": {
+ "symfony/http-foundation": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Asset\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Asset Component",
+ "homepage": "https://symfony.com",
+ "time": "2018-01-03T07:37:34+00:00"
+ },
+ {
+ "name": "symfony/cache",
+ "version": "v3.4.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/cache.git",
+ "reference": "cce49c7aa2fc82077355c8a6dfcd9e619abe6e98"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/cache/zipball/cce49c7aa2fc82077355c8a6dfcd9e619abe6e98",
+ "reference": "cce49c7aa2fc82077355c8a6dfcd9e619abe6e98",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8",
+ "psr/cache": "~1.0",
+ "psr/log": "~1.0",
+ "psr/simple-cache": "^1.0",
+ "symfony/polyfill-apcu": "~1.1"
+ },
+ "conflict": {
+ "symfony/var-dumper": "<3.3"
+ },
+ "provide": {
+ "psr/cache-implementation": "1.0",
+ "psr/simple-cache-implementation": "1.0"
+ },
+ "require-dev": {
+ "cache/integration-tests": "dev-master",
+ "doctrine/cache": "~1.6",
+ "doctrine/dbal": "~2.4",
+ "predis/predis": "~1.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Cache\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Cache component with PSR-6, PSR-16, and tags",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "caching",
+ "psr6"
+ ],
+ "time": "2018-02-11T14:42:07+00:00"
+ },
+ {
+ "name": "symfony/class-loader",
+ "version": "v3.4.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/class-loader.git",
+ "reference": "e63c12699822bb3b667e7216ba07fbcc3a3e203e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/class-loader/zipball/e63c12699822bb3b667e7216ba07fbcc3a3e203e",
+ "reference": "e63c12699822bb3b667e7216ba07fbcc3a3e203e",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8"
+ },
+ "require-dev": {
+ "symfony/finder": "~2.8|~3.0|~4.0",
+ "symfony/polyfill-apcu": "~1.1"
+ },
+ "suggest": {
+ "symfony/polyfill-apcu": "For using ApcClassLoader on HHVM"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\ClassLoader\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony ClassLoader Component",
+ "homepage": "https://symfony.com",
+ "time": "2018-01-03T07:37:34+00:00"
+ },
+ {
+ "name": "symfony/config",
+ "version": "v3.4.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/config.git",
+ "reference": "05e10567b529476a006b00746c5f538f1636810e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/config/zipball/05e10567b529476a006b00746c5f538f1636810e",
+ "reference": "05e10567b529476a006b00746c5f538f1636810e",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8",
+ "symfony/filesystem": "~2.8|~3.0|~4.0"
+ },
+ "conflict": {
+ "symfony/dependency-injection": "<3.3",
+ "symfony/finder": "<3.3"
+ },
+ "require-dev": {
+ "symfony/dependency-injection": "~3.3|~4.0",
+ "symfony/event-dispatcher": "~3.3|~4.0",
+ "symfony/finder": "~3.3|~4.0",
+ "symfony/yaml": "~3.0|~4.0"
+ },
+ "suggest": {
+ "symfony/yaml": "To use the yaml reference dumper"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Config\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Config Component",
+ "homepage": "https://symfony.com",
+ "time": "2018-02-14T10:03:57+00:00"
+ },
+ {
+ "name": "symfony/console",
+ "version": "v3.4.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/console.git",
+ "reference": "067339e9b8ec30d5f19f5950208893ff026b94f7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/console/zipball/067339e9b8ec30d5f19f5950208893ff026b94f7",
+ "reference": "067339e9b8ec30d5f19f5950208893ff026b94f7",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8",
+ "symfony/debug": "~2.8|~3.0|~4.0",
+ "symfony/polyfill-mbstring": "~1.0"
+ },
+ "conflict": {
+ "symfony/dependency-injection": "<3.4",
+ "symfony/process": "<3.3"
+ },
+ "require-dev": {
+ "psr/log": "~1.0",
+ "symfony/config": "~3.3|~4.0",
+ "symfony/dependency-injection": "~3.4|~4.0",
+ "symfony/event-dispatcher": "~2.8|~3.0|~4.0",
+ "symfony/lock": "~3.4|~4.0",
+ "symfony/process": "~3.3|~4.0"
+ },
+ "suggest": {
+ "psr/log": "For using the console logger",
+ "symfony/event-dispatcher": "",
+ "symfony/lock": "",
+ "symfony/process": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Console\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Console Component",
+ "homepage": "https://symfony.com",
+ "time": "2018-02-26T15:46:28+00:00"
+ },
+ {
+ "name": "symfony/debug",
+ "version": "v3.4.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/debug.git",
+ "reference": "9b1071f86e79e1999b3d3675d2e0e7684268b9bc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/debug/zipball/9b1071f86e79e1999b3d3675d2e0e7684268b9bc",
+ "reference": "9b1071f86e79e1999b3d3675d2e0e7684268b9bc",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8",
+ "psr/log": "~1.0"
+ },
+ "conflict": {
+ "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2"
+ },
+ "require-dev": {
+ "symfony/http-kernel": "~2.8|~3.0|~4.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Debug\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Debug Component",
+ "homepage": "https://symfony.com",
+ "time": "2018-02-28T21:49:22+00:00"
+ },
+ {
+ "name": "symfony/dependency-injection",
+ "version": "v3.4.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/dependency-injection.git",
+ "reference": "12e901abc1cb0d637a0e5abe9923471361d96b07"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/12e901abc1cb0d637a0e5abe9923471361d96b07",
+ "reference": "12e901abc1cb0d637a0e5abe9923471361d96b07",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8",
+ "psr/container": "^1.0"
+ },
+ "conflict": {
+ "symfony/config": "<3.3.7",
+ "symfony/finder": "<3.3",
+ "symfony/proxy-manager-bridge": "<3.4",
+ "symfony/yaml": "<3.4"
+ },
+ "provide": {
+ "psr/container-implementation": "1.0"
+ },
+ "require-dev": {
+ "symfony/config": "~3.3|~4.0",
+ "symfony/expression-language": "~2.8|~3.0|~4.0",
+ "symfony/yaml": "~3.4|~4.0"
+ },
+ "suggest": {
+ "symfony/config": "",
+ "symfony/expression-language": "For using expressions in service container configuration",
+ "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required",
+ "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them",
+ "symfony/yaml": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\DependencyInjection\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony DependencyInjection Component",
+ "homepage": "https://symfony.com",
+ "time": "2018-03-04T03:54:53+00:00"
+ },
+ {
+ "name": "symfony/event-dispatcher",
+ "version": "v3.4.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/event-dispatcher.git",
+ "reference": "58990682ac3fdc1f563b7e705452921372aad11d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/58990682ac3fdc1f563b7e705452921372aad11d",
+ "reference": "58990682ac3fdc1f563b7e705452921372aad11d",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8"
+ },
+ "conflict": {
+ "symfony/dependency-injection": "<3.3"
+ },
+ "require-dev": {
+ "psr/log": "~1.0",
+ "symfony/config": "~2.8|~3.0|~4.0",
+ "symfony/dependency-injection": "~3.3|~4.0",
+ "symfony/expression-language": "~2.8|~3.0|~4.0",
+ "symfony/stopwatch": "~2.8|~3.0|~4.0"
+ },
+ "suggest": {
+ "symfony/dependency-injection": "",
+ "symfony/http-kernel": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\EventDispatcher\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony EventDispatcher Component",
+ "homepage": "https://symfony.com",
+ "time": "2018-02-14T10:03:57+00:00"
+ },
+ {
+ "name": "symfony/expression-language",
+ "version": "v3.4.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/expression-language.git",
+ "reference": "867e4d1f5d4e52435a8ffff6b24fd6a801582241"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/expression-language/zipball/867e4d1f5d4e52435a8ffff6b24fd6a801582241",
+ "reference": "867e4d1f5d4e52435a8ffff6b24fd6a801582241",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8",
+ "symfony/cache": "~3.1|~4.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\ExpressionLanguage\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony ExpressionLanguage Component",
+ "homepage": "https://symfony.com",
+ "time": "2018-01-03T07:37:34+00:00"
+ },
+ {
+ "name": "symfony/filesystem",
+ "version": "v3.4.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/filesystem.git",
+ "reference": "253a4490b528597aa14d2bf5aeded6f5e5e4a541"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/253a4490b528597aa14d2bf5aeded6f5e5e4a541",
+ "reference": "253a4490b528597aa14d2bf5aeded6f5e5e4a541",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Filesystem\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Filesystem Component",
+ "homepage": "https://symfony.com",
+ "time": "2018-02-22T10:48:49+00:00"
+ },
+ {
+ "name": "symfony/finder",
+ "version": "v3.4.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/finder.git",
+ "reference": "a479817ce0a9e4adfd7d39c6407c95d97c254625"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/a479817ce0a9e4adfd7d39c6407c95d97c254625",
+ "reference": "a479817ce0a9e4adfd7d39c6407c95d97c254625",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Finder\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Finder Component",
+ "homepage": "https://symfony.com",
+ "time": "2018-03-05T18:28:11+00:00"
+ },
+ {
+ "name": "symfony/flex",
+ "version": "v1.0.70",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/flex.git",
+ "reference": "1f00c05d35523dc0ac52e4a457989a069be5a7a4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/flex/zipball/1f00c05d35523dc0ac52e4a457989a069be5a7a4",
+ "reference": "1f00c05d35523dc0ac52e4a457989a069be5a7a4",
+ "shasum": ""
+ },
+ "require": {
+ "composer-plugin-api": "^1.0",
+ "php": "^7.0"
+ },
+ "require-dev": {
+ "composer/composer": "^1.0.2",
+ "symfony/phpunit-bridge": "^3.2.8"
+ },
+ "type": "composer-plugin",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ },
+ "class": "Symfony\\Flex\\Flex"
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Flex\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien.potencier@gmail.com"
+ }
+ ],
+ "time": "2018-02-22T07:00:47+00:00"
+ },
+ {
+ "name": "symfony/framework-bundle",
+ "version": "v3.4.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/framework-bundle.git",
+ "reference": "ee18b39bb52c6cc7ed550a9df981650660d4be92"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/ee18b39bb52c6cc7ed550a9df981650660d4be92",
+ "reference": "ee18b39bb52c6cc7ed550a9df981650660d4be92",
+ "shasum": ""
+ },
+ "require": {
+ "ext-xml": "*",
+ "php": "^5.5.9|>=7.0.8",
+ "symfony/cache": "~3.4|~4.0",
+ "symfony/class-loader": "~3.2",
+ "symfony/config": "~3.4|~4.0",
+ "symfony/dependency-injection": "^3.4.3|^4.0.3",
+ "symfony/event-dispatcher": "~3.4|~4.0",
+ "symfony/filesystem": "~2.8|~3.0|~4.0",
+ "symfony/finder": "~2.8|~3.0|~4.0",
+ "symfony/http-foundation": "^3.3.11|~4.0",
+ "symfony/http-kernel": "~3.4|~4.0",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/routing": "^3.4.5|^4.0.5"
+ },
+ "conflict": {
+ "phpdocumentor/reflection-docblock": "<3.0",
+ "phpdocumentor/type-resolver": "<0.2.1",
+ "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0",
+ "symfony/asset": "<3.3",
+ "symfony/console": "<3.4",
+ "symfony/form": "<3.4",
+ "symfony/property-info": "<3.3",
+ "symfony/serializer": "<3.3",
+ "symfony/stopwatch": "<3.4",
+ "symfony/translation": "<3.4",
+ "symfony/validator": "<3.4",
+ "symfony/workflow": "<3.3"
+ },
+ "require-dev": {
+ "doctrine/annotations": "~1.0",
+ "doctrine/cache": "~1.0",
+ "fig/link-util": "^1.0",
+ "phpdocumentor/reflection-docblock": "^3.0|^4.0",
+ "symfony/asset": "~3.3|~4.0",
+ "symfony/browser-kit": "~2.8|~3.0|~4.0",
+ "symfony/console": "~3.4|~4.0",
+ "symfony/css-selector": "~2.8|~3.0|~4.0",
+ "symfony/dom-crawler": "~2.8|~3.0|~4.0",
+ "symfony/expression-language": "~2.8|~3.0|~4.0",
+ "symfony/form": "~3.4|~4.0",
+ "symfony/lock": "~3.4|~4.0",
+ "symfony/polyfill-intl-icu": "~1.0",
+ "symfony/process": "~2.8|~3.0|~4.0",
+ "symfony/property-info": "~3.3|~4.0",
+ "symfony/security": "~2.8|~3.0|~4.0",
+ "symfony/security-core": "~3.2|~4.0",
+ "symfony/security-csrf": "~2.8|~3.0|~4.0",
+ "symfony/serializer": "~3.3|~4.0",
+ "symfony/stopwatch": "~3.4|~4.0",
+ "symfony/templating": "~2.8|~3.0|~4.0",
+ "symfony/translation": "~3.4|~4.0",
+ "symfony/validator": "~3.4|~4.0",
+ "symfony/var-dumper": "~3.3|~4.0",
+ "symfony/web-link": "~3.3|~4.0",
+ "symfony/workflow": "~3.3|~4.0",
+ "symfony/yaml": "~3.2|~4.0",
+ "twig/twig": "~1.34|~2.4"
+ },
+ "suggest": {
+ "ext-apcu": "For best performance of the system caches",
+ "symfony/console": "For using the console commands",
+ "symfony/form": "For using forms",
+ "symfony/property-info": "For using the property_info service",
+ "symfony/serializer": "For using the serializer service",
+ "symfony/validator": "For using validation",
+ "symfony/web-link": "For using web links, features such as preloading, prefetching or prerendering",
+ "symfony/yaml": "For using the debug:config and lint:yaml commands"
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Bundle\\FrameworkBundle\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony FrameworkBundle",
+ "homepage": "https://symfony.com",
+ "time": "2018-03-01T14:51:10+00:00"
+ },
+ {
+ "name": "symfony/http-foundation",
+ "version": "v3.4.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/http-foundation.git",
+ "reference": "6f5935723c11b4125fc9927db6ad2feaa196e175"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/http-foundation/zipball/6f5935723c11b4125fc9927db6ad2feaa196e175",
+ "reference": "6f5935723c11b4125fc9927db6ad2feaa196e175",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8",
+ "symfony/polyfill-mbstring": "~1.1",
+ "symfony/polyfill-php70": "~1.6"
+ },
+ "require-dev": {
+ "symfony/expression-language": "~2.8|~3.0|~4.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\HttpFoundation\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony HttpFoundation Component",
+ "homepage": "https://symfony.com",
+ "time": "2018-02-22T10:48:49+00:00"
+ },
+ {
+ "name": "symfony/http-kernel",
+ "version": "v3.4.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/http-kernel.git",
+ "reference": "a443bbbd93682aa08e623fade4c94edd586ed2de"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/http-kernel/zipball/a443bbbd93682aa08e623fade4c94edd586ed2de",
+ "reference": "a443bbbd93682aa08e623fade4c94edd586ed2de",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8",
+ "psr/log": "~1.0",
+ "symfony/debug": "~2.8|~3.0|~4.0",
+ "symfony/event-dispatcher": "~2.8|~3.0|~4.0",
+ "symfony/http-foundation": "^3.4.4|^4.0.4"
+ },
+ "conflict": {
+ "symfony/config": "<2.8",
+ "symfony/dependency-injection": "<3.4.5|<4.0.5,>=4",
+ "symfony/var-dumper": "<3.3",
+ "twig/twig": "<1.34|<2.4,>=2"
+ },
+ "provide": {
+ "psr/log-implementation": "1.0"
+ },
+ "require-dev": {
+ "psr/cache": "~1.0",
+ "symfony/browser-kit": "~2.8|~3.0|~4.0",
+ "symfony/class-loader": "~2.8|~3.0",
+ "symfony/config": "~2.8|~3.0|~4.0",
+ "symfony/console": "~2.8|~3.0|~4.0",
+ "symfony/css-selector": "~2.8|~3.0|~4.0",
+ "symfony/dependency-injection": "^3.4.5|^4.0.5",
+ "symfony/dom-crawler": "~2.8|~3.0|~4.0",
+ "symfony/expression-language": "~2.8|~3.0|~4.0",
+ "symfony/finder": "~2.8|~3.0|~4.0",
+ "symfony/process": "~2.8|~3.0|~4.0",
+ "symfony/routing": "~3.4|~4.0",
+ "symfony/stopwatch": "~2.8|~3.0|~4.0",
+ "symfony/templating": "~2.8|~3.0|~4.0",
+ "symfony/translation": "~2.8|~3.0|~4.0",
+ "symfony/var-dumper": "~3.3|~4.0"
+ },
+ "suggest": {
+ "symfony/browser-kit": "",
+ "symfony/config": "",
+ "symfony/console": "",
+ "symfony/dependency-injection": "",
+ "symfony/finder": "",
+ "symfony/var-dumper": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\HttpKernel\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony HttpKernel Component",
+ "homepage": "https://symfony.com",
+ "time": "2018-03-05T19:41:07+00:00"
+ },
+ {
+ "name": "symfony/inflector",
+ "version": "v3.4.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/inflector.git",
+ "reference": "217fa0f0e8fce417bd225e4195b12c56e87273a8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/inflector/zipball/217fa0f0e8fce417bd225e4195b12c56e87273a8",
+ "reference": "217fa0f0e8fce417bd225e4195b12c56e87273a8",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Inflector\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@gmail.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Inflector Component",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "inflection",
+ "pluralize",
+ "singularize",
+ "string",
+ "symfony",
+ "words"
+ ],
+ "time": "2018-01-03T17:14:19+00:00"
+ },
+ {
+ "name": "symfony/lts",
+ "version": "v3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/lts.git",
+ "reference": "3a4e88df038e3197e6b66d091d2495fd7d255c0b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/lts/zipball/3a4e88df038e3197e6b66d091d2495fd7d255c0b",
+ "reference": "3a4e88df038e3197e6b66d091d2495fd7d255c0b",
+ "shasum": ""
+ },
+ "conflict": {
+ "symfony/asset": ">=4",
+ "symfony/browser-kit": ">=4",
+ "symfony/cache": ">=4",
+ "symfony/class-loader": ">=4",
+ "symfony/config": ">=4",
+ "symfony/console": ">=4",
+ "symfony/css-selector": ">=4",
+ "symfony/debug": ">=4",
+ "symfony/debug-bundle": ">=4",
+ "symfony/dependency-injection": ">=4",
+ "symfony/doctrine-bridge": ">=4",
+ "symfony/dom-crawler": ">=4",
+ "symfony/dotenv": ">=4",
+ "symfony/event-dispatcher": ">=4",
+ "symfony/expression-language": ">=4",
+ "symfony/filesystem": ">=4",
+ "symfony/finder": ">=4",
+ "symfony/form": ">=4",
+ "symfony/framework-bundle": ">=4",
+ "symfony/http-foundation": ">=4",
+ "symfony/http-kernel": ">=4",
+ "symfony/inflector": ">=4",
+ "symfony/intl": ">=4",
+ "symfony/ldap": ">=4",
+ "symfony/lock": ">=4",
+ "symfony/monolog-bridge": ">=4",
+ "symfony/options-resolver": ">=4",
+ "symfony/process": ">=4",
+ "symfony/property-access": ">=4",
+ "symfony/property-info": ">=4",
+ "symfony/proxy-manager-bridge": ">=4",
+ "symfony/routing": ">=4",
+ "symfony/security": ">=4",
+ "symfony/security-bundle": ">=4",
+ "symfony/security-core": ">=4",
+ "symfony/security-csrf": ">=4",
+ "symfony/security-guard": ">=4",
+ "symfony/security-http": ">=4",
+ "symfony/serializer": ">=4",
+ "symfony/stopwatch": ">=4",
+ "symfony/symfony": ">=4",
+ "symfony/templating": ">=4",
+ "symfony/translation": ">=4",
+ "symfony/twig-bridge": ">=4",
+ "symfony/twig-bundle": ">=4",
+ "symfony/validator": ">=4",
+ "symfony/var-dumper": ">=4",
+ "symfony/web-link": ">=4",
+ "symfony/web-profiler-bundle": ">=4",
+ "symfony/web-server-bundle": ">=4",
+ "symfony/workflow": ">=4",
+ "symfony/yaml": ">=4"
+ },
+ "type": "metapackage",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3-dev"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Enforces Long Term Supported versions of Symfony components",
+ "homepage": "https://symfony.com",
+ "time": "2017-10-19T02:02:36+00:00"
+ },
+ {
+ "name": "symfony/monolog-bridge",
+ "version": "v3.4.11",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/monolog-bridge.git",
+ "reference": "9bf32d32810d09b6409fde30844b9ab2bc554ee7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/9bf32d32810d09b6409fde30844b9ab2bc554ee7",
+ "reference": "9bf32d32810d09b6409fde30844b9ab2bc554ee7",
+ "shasum": ""
+ },
+ "require": {
+ "monolog/monolog": "~1.19",
+ "php": "^5.5.9|>=7.0.8",
+ "symfony/http-kernel": "~2.8|~3.0|~4.0"
+ },
+ "conflict": {
+ "symfony/http-foundation": "<3.3"
+ },
+ "require-dev": {
+ "symfony/console": "~2.8|~3.0|~4.0",
+ "symfony/event-dispatcher": "~2.8|~3.0|~4.0",
+ "symfony/security-core": "~2.8|~3.0|~4.0",
+ "symfony/var-dumper": "~3.3|~4.0"
+ },
+ "suggest": {
+ "symfony/console": "For the possibility to show log messages in console commands depending on verbosity settings. You need version ~2.3 of the console for it.",
+ "symfony/event-dispatcher": "Needed when using log messages in console commands.",
+ "symfony/http-kernel": "For using the debugging handlers together with the response life cycle of the HTTP kernel.",
+ "symfony/var-dumper": "For using the debugging handlers like the console handler or the log server handler."
+ },
+ "type": "symfony-bridge",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Bridge\\Monolog\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Monolog Bridge",
+ "homepage": "https://symfony.com",
+ "time": "2018-05-11T15:52:51+00:00"
+ },
+ {
+ "name": "symfony/monolog-bundle",
+ "version": "v3.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/monolog-bundle.git",
+ "reference": "8781649349fe418d51d194f8c9d212c0b97c40dd"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/8781649349fe418d51d194f8c9d212c0b97c40dd",
+ "reference": "8781649349fe418d51d194f8c9d212c0b97c40dd",
+ "shasum": ""
+ },
+ "require": {
+ "monolog/monolog": "~1.22",
+ "php": ">=5.3.2",
+ "symfony/config": "~2.7|~3.0|~4.0",
+ "symfony/dependency-injection": "~2.7|~3.0|~4.0",
+ "symfony/http-kernel": "~2.7|~3.0|~4.0",
+ "symfony/monolog-bridge": "~2.7|~3.0|~4.0"
+ },
+ "require-dev": {
+ "symfony/console": "~2.3|~3.0|~4.0",
+ "symfony/phpunit-bridge": "^3.3|^4.0",
+ "symfony/yaml": "~2.3|~3.0|~4.0"
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Bundle\\MonologBundle\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Symfony Community",
+ "homepage": "http://symfony.com/contributors"
+ },
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "Symfony MonologBundle",
+ "homepage": "http://symfony.com",
+ "keywords": [
+ "log",
+ "logging"
+ ],
+ "time": "2018-03-05T14:51:36+00:00"
+ },
+ {
+ "name": "symfony/options-resolver",
+ "version": "v3.4.7",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/options-resolver.git",
+ "reference": "f3109a6aedd20e35c3a33190e932c2b063b7b50e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/options-resolver/zipball/f3109a6aedd20e35c3a33190e932c2b063b7b50e",
+ "reference": "f3109a6aedd20e35c3a33190e932c2b063b7b50e",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\OptionsResolver\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony OptionsResolver Component",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "config",
+ "configuration",
+ "options"
+ ],
+ "time": "2018-01-11T07:56:07+00:00"
+ },
+ {
+ "name": "symfony/polyfill-apcu",
+ "version": "v1.7.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-apcu.git",
+ "reference": "e8ae2136ddb53dea314df56fcd88e318ab936c00"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-apcu/zipball/e8ae2136ddb53dea314df56fcd88e318ab936c00",
+ "reference": "e8ae2136ddb53dea314df56fcd88e318ab936c00",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.7-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Apcu\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting apcu_* functions to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "apcu",
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "time": "2018-01-30T19:27:44+00:00"
+ },
+ {
+ "name": "symfony/polyfill-mbstring",
+ "version": "v1.7.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
+ "reference": "78be803ce01e55d3491c1397cf1c64beb9c1b63b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/78be803ce01e55d3491c1397cf1c64beb9c1b63b",
+ "reference": "78be803ce01e55d3491c1397cf1c64beb9c1b63b",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "suggest": {
+ "ext-mbstring": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.7-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Mbstring\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for the Mbstring extension",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "mbstring",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "time": "2018-01-30T19:27:44+00:00"
+ },
+ {
+ "name": "symfony/property-access",
+ "version": "v3.4.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/property-access.git",
+ "reference": "a6e8c778b220dfd5cd5f5dcb09f87ee232dd608a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/property-access/zipball/a6e8c778b220dfd5cd5f5dcb09f87ee232dd608a",
+ "reference": "a6e8c778b220dfd5cd5f5dcb09f87ee232dd608a",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8",
+ "symfony/inflector": "~3.1|~4.0",
+ "symfony/polyfill-php70": "~1.0"
+ },
+ "require-dev": {
+ "symfony/cache": "~3.1|~4.0"
+ },
+ "suggest": {
+ "psr/cache-implementation": "To cache access methods."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\PropertyAccess\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony PropertyAccess Component",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "access",
+ "array",
+ "extraction",
+ "index",
+ "injection",
+ "object",
+ "property",
+ "property path",
+ "reflection"
+ ],
+ "time": "2018-01-03T07:37:34+00:00"
+ },
+ {
+ "name": "symfony/routing",
+ "version": "v3.4.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/routing.git",
+ "reference": "8773a9d52715f1a579576ce0e60213de34f5ef3e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/routing/zipball/8773a9d52715f1a579576ce0e60213de34f5ef3e",
+ "reference": "8773a9d52715f1a579576ce0e60213de34f5ef3e",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8"
+ },
+ "conflict": {
+ "symfony/config": "<2.8",
+ "symfony/dependency-injection": "<3.3",
+ "symfony/yaml": "<3.4"
+ },
+ "require-dev": {
+ "doctrine/annotations": "~1.0",
+ "doctrine/common": "~2.2",
+ "psr/log": "~1.0",
+ "symfony/config": "~2.8|~3.0|~4.0",
+ "symfony/dependency-injection": "~3.3|~4.0",
+ "symfony/expression-language": "~2.8|~3.0|~4.0",
+ "symfony/http-foundation": "~2.8|~3.0|~4.0",
+ "symfony/yaml": "~3.4|~4.0"
+ },
+ "suggest": {
+ "doctrine/annotations": "For using the annotation loader",
+ "symfony/config": "For using the all-in-one router or any loader",
+ "symfony/dependency-injection": "For loading routes from a service",
+ "symfony/expression-language": "For using expression matching",
+ "symfony/http-foundation": "For using a Symfony Request object",
+ "symfony/yaml": "For using the YAML loader"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Routing\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Routing Component",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "router",
+ "routing",
+ "uri",
+ "url"
+ ],
+ "time": "2018-02-28T21:49:22+00:00"
+ },
+ {
+ "name": "symfony/serializer",
+ "version": "v3.4.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/serializer.git",
+ "reference": "11bea1aebe9c8d506f47c01931b0df9f18629a8f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/serializer/zipball/11bea1aebe9c8d506f47c01931b0df9f18629a8f",
+ "reference": "11bea1aebe9c8d506f47c01931b0df9f18629a8f",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8"
+ },
+ "conflict": {
+ "phpdocumentor/type-resolver": "<0.2.1",
+ "symfony/dependency-injection": "<3.2",
+ "symfony/property-access": ">=3.0,<3.0.4|>=2.8,<2.8.4",
+ "symfony/property-info": "<3.1",
+ "symfony/yaml": "<3.4"
+ },
+ "require-dev": {
+ "doctrine/annotations": "~1.0",
+ "doctrine/cache": "~1.0",
+ "phpdocumentor/reflection-docblock": "^3.0|^4.0",
+ "symfony/cache": "~3.1|~4.0",
+ "symfony/config": "~2.8|~3.0|~4.0",
+ "symfony/dependency-injection": "~3.2|~4.0",
+ "symfony/http-foundation": "~2.8|~3.0|~4.0",
+ "symfony/property-access": "~2.8|~3.0|~4.0",
+ "symfony/property-info": "~3.1|~4.0",
+ "symfony/yaml": "~3.4|~4.0"
+ },
+ "suggest": {
+ "doctrine/annotations": "For using the annotation mapping. You will also need doctrine/cache.",
+ "doctrine/cache": "For using the default cached annotation reader and metadata cache.",
+ "psr/cache-implementation": "For using the metadata cache.",
+ "symfony/config": "For using the XML mapping loader.",
+ "symfony/http-foundation": "To use the DataUriNormalizer.",
+ "symfony/property-access": "For using the ObjectNormalizer.",
+ "symfony/property-info": "To deserialize relations.",
+ "symfony/yaml": "For using the default YAML mapping loader."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Serializer\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Serializer Component",
+ "homepage": "https://symfony.com",
+ "time": "2018-02-14T14:07:03+00:00"
+ },
+ {
+ "name": "symfony/twig-bridge",
+ "version": "v3.4.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/twig-bridge.git",
+ "reference": "9cb6f18ab49fa3c28137533966e5ceb74c20f766"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/9cb6f18ab49fa3c28137533966e5ceb74c20f766",
+ "reference": "9cb6f18ab49fa3c28137533966e5ceb74c20f766",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8",
+ "twig/twig": "^1.35|^2.4.4"
+ },
+ "conflict": {
+ "symfony/console": "<3.4",
+ "symfony/form": "<3.4.5|<4.0.5,>=4.0"
+ },
+ "require-dev": {
+ "symfony/asset": "~2.8|~3.0|~4.0",
+ "symfony/console": "~3.4|~4.0",
+ "symfony/dependency-injection": "~2.8|~3.0|~4.0",
+ "symfony/expression-language": "~2.8|~3.0|~4.0",
+ "symfony/finder": "~2.8|~3.0|~4.0",
+ "symfony/form": "^3.4.5|^4.0.5",
+ "symfony/http-foundation": "^3.3.11|~4.0",
+ "symfony/http-kernel": "~3.2|~4.0",
+ "symfony/polyfill-intl-icu": "~1.0",
+ "symfony/routing": "~2.8|~3.0|~4.0",
+ "symfony/security": "~2.8|~3.0|~4.0",
+ "symfony/security-acl": "~2.8|~3.0",
+ "symfony/stopwatch": "~2.8|~3.0|~4.0",
+ "symfony/templating": "~2.8|~3.0|~4.0",
+ "symfony/translation": "~2.8|~3.0|~4.0",
+ "symfony/var-dumper": "~2.8.10|~3.1.4|~3.2|~4.0",
+ "symfony/web-link": "~3.3|~4.0",
+ "symfony/workflow": "~3.3|~4.0",
+ "symfony/yaml": "~2.8|~3.0|~4.0"
+ },
+ "suggest": {
+ "symfony/asset": "For using the AssetExtension",
+ "symfony/expression-language": "For using the ExpressionExtension",
+ "symfony/finder": "",
+ "symfony/form": "For using the FormExtension",
+ "symfony/http-kernel": "For using the HttpKernelExtension",
+ "symfony/routing": "For using the RoutingExtension",
+ "symfony/security": "For using the SecurityExtension",
+ "symfony/stopwatch": "For using the StopwatchExtension",
+ "symfony/templating": "For using the TwigEngine",
+ "symfony/translation": "For using the TranslationExtension",
+ "symfony/var-dumper": "For using the DumpExtension",
+ "symfony/web-link": "For using the WebLinkExtension",
+ "symfony/yaml": "For using the YamlExtension"
+ },
+ "type": "symfony-bridge",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Bridge\\Twig\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Twig Bridge",
+ "homepage": "https://symfony.com",
+ "time": "2018-03-01T10:20:21+00:00"
+ },
+ {
+ "name": "symfony/twig-bundle",
+ "version": "v3.4.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/twig-bundle.git",
+ "reference": "c06e47e4b93500c1e6dbf9a29d10f88845d7958c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/c06e47e4b93500c1e6dbf9a29d10f88845d7958c",
+ "reference": "c06e47e4b93500c1e6dbf9a29d10f88845d7958c",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8",
+ "symfony/config": "~3.2|~4.0",
+ "symfony/http-foundation": "~2.8|~3.0|~4.0",
+ "symfony/http-kernel": "^3.3|~4.0",
+ "symfony/twig-bridge": "^3.4.3|^4.0.3",
+ "twig/twig": "~1.34|~2.4"
+ },
+ "conflict": {
+ "symfony/dependency-injection": "<3.4",
+ "symfony/event-dispatcher": "<3.3.1"
+ },
+ "require-dev": {
+ "doctrine/annotations": "~1.0",
+ "doctrine/cache": "~1.0",
+ "symfony/asset": "~2.8|~3.0|~4.0",
+ "symfony/dependency-injection": "~3.4|~4.0",
+ "symfony/expression-language": "~2.8|~3.0|~4.0",
+ "symfony/finder": "~2.8|~3.0|~4.0",
+ "symfony/form": "~2.8|~3.0|~4.0",
+ "symfony/framework-bundle": "^3.3.11|~4.0",
+ "symfony/routing": "~2.8|~3.0|~4.0",
+ "symfony/stopwatch": "~2.8|~3.0|~4.0",
+ "symfony/templating": "~2.8|~3.0|~4.0",
+ "symfony/web-link": "~3.3|~4.0",
+ "symfony/yaml": "~2.8|~3.0|~4.0"
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Bundle\\TwigBundle\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony TwigBundle",
+ "homepage": "https://symfony.com",
+ "time": "2018-02-14T12:23:44+00:00"
+ },
+ {
+ "name": "symfony/webpack-encore-pack",
+ "version": "v1.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/webpack-encore-pack.git",
+ "reference": "f9f4e91659e5f55de370d6aebe77e64bce35e4d3"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/webpack-encore-pack/zipball/f9f4e91659e5f55de370d6aebe77e64bce35e4d3",
+ "reference": "f9f4e91659e5f55de370d6aebe77e64bce35e4d3",
+ "shasum": ""
+ },
+ "type": "symfony-pack",
+ "extra": {
+ "thanks": {
+ "name": "symfony/webpack-encore",
+ "url": "https://github.com/symfony/webpack-encore"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "A pack for Symfony Encore",
+ "time": "2017-12-21T02:20:09+00:00"
+ },
+ {
+ "name": "symfony/yaml",
+ "version": "v3.4.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/yaml.git",
+ "reference": "6af42631dcf89e9c616242c900d6c52bd53bd1bb"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/6af42631dcf89e9c616242c900d6c52bd53bd1bb",
+ "reference": "6af42631dcf89e9c616242c900d6c52bd53bd1bb",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8"
+ },
+ "conflict": {
+ "symfony/console": "<3.4"
+ },
+ "require-dev": {
+ "symfony/console": "~3.4|~4.0"
+ },
+ "suggest": {
+ "symfony/console": "For validating YAML files using the lint command"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Yaml\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Yaml Component",
+ "homepage": "https://symfony.com",
+ "time": "2018-02-16T09:50:28+00:00"
+ },
+ {
+ "name": "twig/extensions",
+ "version": "v1.5.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/twigphp/Twig-extensions.git",
+ "reference": "d188c76168b853481cc75879ea045bf93d718e9c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/twigphp/Twig-extensions/zipball/d188c76168b853481cc75879ea045bf93d718e9c",
+ "reference": "d188c76168b853481cc75879ea045bf93d718e9c",
+ "shasum": ""
+ },
+ "require": {
+ "twig/twig": "~1.27|~2.0"
+ },
+ "require-dev": {
+ "symfony/phpunit-bridge": "~3.3@dev",
+ "symfony/translation": "~2.3|~3.0"
+ },
+ "suggest": {
+ "symfony/translation": "Allow the time_diff output to be translated"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.5-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Twig_Extensions_": "lib/"
+ },
+ "psr-4": {
+ "Twig\\Extensions\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "Common additional features for Twig that do not directly belong in core",
+ "homepage": "http://twig.sensiolabs.org/doc/extensions/index.html",
+ "keywords": [
+ "i18n",
+ "text"
+ ],
+ "time": "2017-06-08T18:19:53+00:00"
+ },
+ {
+ "name": "twig/twig",
+ "version": "v2.4.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/twigphp/Twig.git",
+ "reference": "d2117ec118c1ff3d28ccddca8212d82787a4809f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/twigphp/Twig/zipball/d2117ec118c1ff3d28ccddca8212d82787a4809f",
+ "reference": "d2117ec118c1ff3d28ccddca8212d82787a4809f",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0",
+ "symfony/polyfill-mbstring": "~1.0"
+ },
+ "require-dev": {
+ "psr/container": "^1.0",
+ "symfony/debug": "~2.7",
+ "symfony/phpunit-bridge": "~3.3@dev"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Twig_": "lib/"
+ },
+ "psr-4": {
+ "Twig\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com",
+ "homepage": "http://fabien.potencier.org",
+ "role": "Lead Developer"
+ },
+ {
+ "name": "Armin Ronacher",
+ "email": "armin.ronacher@active-4.com",
+ "role": "Project Founder"
+ },
+ {
+ "name": "Twig Team",
+ "homepage": "http://twig.sensiolabs.org/contributors",
+ "role": "Contributors"
+ }
+ ],
+ "description": "Twig, the flexible, fast, and secure template language for PHP",
+ "homepage": "http://twig.sensiolabs.org",
+ "keywords": [
+ "templating"
+ ],
+ "time": "2018-03-03T16:23:01+00:00"
+ }
+ ],
+ "packages-dev": [
+ {
+ "name": "doctrine/instantiator",
+ "version": "1.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/instantiator.git",
+ "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda",
+ "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1"
+ },
+ "require-dev": {
+ "athletic/athletic": "~0.1.8",
+ "ext-pdo": "*",
+ "ext-phar": "*",
+ "phpunit/phpunit": "^6.2.3",
+ "squizlabs/php_codesniffer": "^3.0.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com",
+ "homepage": "http://ocramius.github.com/"
+ }
+ ],
+ "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
+ "homepage": "https://github.com/doctrine/instantiator",
+ "keywords": [
+ "constructor",
+ "instantiate"
+ ],
+ "time": "2017-07-22T11:58:36+00:00"
+ },
+ {
+ "name": "jms/metadata",
+ "version": "1.6.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/schmittjoh/metadata.git",
+ "reference": "6a06970a10e0a532fb52d3959547123b84a3b3ab"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/schmittjoh/metadata/zipball/6a06970a10e0a532fb52d3959547123b84a3b3ab",
+ "reference": "6a06970a10e0a532fb52d3959547123b84a3b3ab",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "require-dev": {
+ "doctrine/cache": "~1.0",
+ "symfony/cache": "~3.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.5.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Metadata\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Apache-2.0"
+ ],
+ "authors": [
+ {
+ "name": "Johannes M. Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "Class/method/property metadata management in PHP",
+ "keywords": [
+ "annotations",
+ "metadata",
+ "xml",
+ "yaml"
+ ],
+ "time": "2016-12-05T10:18:33+00:00"
+ },
+ {
+ "name": "jms/parser-lib",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/schmittjoh/parser-lib.git",
+ "reference": "c509473bc1b4866415627af0e1c6cc8ac97fa51d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/schmittjoh/parser-lib/zipball/c509473bc1b4866415627af0e1c6cc8ac97fa51d",
+ "reference": "c509473bc1b4866415627af0e1c6cc8ac97fa51d",
+ "shasum": ""
+ },
+ "require": {
+ "phpoption/phpoption": ">=0.9,<2.0-dev"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "JMS\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Apache2"
+ ],
+ "description": "A library for easily creating recursive-descent parsers.",
+ "time": "2012-11-18T18:08:43+00:00"
+ },
+ {
+ "name": "jms/serializer",
+ "version": "1.11.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/schmittjoh/serializer.git",
+ "reference": "e7c53477ff55c21d1b1db7d062edc050a24f465f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/schmittjoh/serializer/zipball/e7c53477ff55c21d1b1db7d062edc050a24f465f",
+ "reference": "e7c53477ff55c21d1b1db7d062edc050a24f465f",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/annotations": "^1.0",
+ "doctrine/instantiator": "^1.0.3",
+ "jms/metadata": "~1.1",
+ "jms/parser-lib": "1.*",
+ "php": "^5.5|^7.0",
+ "phpcollection/phpcollection": "~0.1",
+ "phpoption/phpoption": "^1.1"
+ },
+ "conflict": {
+ "twig/twig": "<1.12"
+ },
+ "require-dev": {
+ "doctrine/orm": "~2.1",
+ "doctrine/phpcr-odm": "^1.3|^2.0",
+ "ext-pdo_sqlite": "*",
+ "jackalope/jackalope-doctrine-dbal": "^1.1.5",
+ "phpunit/phpunit": "^4.8|^5.0",
+ "propel/propel1": "~1.7",
+ "psr/container": "^1.0",
+ "symfony/dependency-injection": "^2.7|^3.3|^4.0",
+ "symfony/expression-language": "^2.6|^3.0",
+ "symfony/filesystem": "^2.1",
+ "symfony/form": "~2.1|^3.0",
+ "symfony/translation": "^2.1|^3.0",
+ "symfony/validator": "^2.2|^3.0",
+ "symfony/yaml": "^2.1|^3.0",
+ "twig/twig": "~1.12|~2.0"
+ },
+ "suggest": {
+ "doctrine/cache": "Required if you like to use cache functionality.",
+ "doctrine/collections": "Required if you like to use doctrine collection types as ArrayCollection.",
+ "symfony/yaml": "Required if you'd like to serialize data to YAML format."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.11-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "JMS\\Serializer": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Apache-2.0"
+ ],
+ "authors": [
+ {
+ "name": "Asmir Mustafic",
+ "email": "goetas@gmail.com"
+ },
+ {
+ "name": "Johannes M. Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "Library for (de-)serializing data of any complexity; supports XML, JSON, and YAML.",
+ "homepage": "http://jmsyst.com/libs/serializer",
+ "keywords": [
+ "deserialization",
+ "jaxb",
+ "json",
+ "serialization",
+ "xml"
+ ],
+ "time": "2018-02-04T17:48:54+00:00"
+ },
+ {
+ "name": "jms/serializer-bundle",
+ "version": "2.3.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/schmittjoh/JMSSerializerBundle.git",
+ "reference": "9dec7ab62248aa97f33cce70c301af15154f8f0b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/schmittjoh/JMSSerializerBundle/zipball/9dec7ab62248aa97f33cce70c301af15154f8f0b",
+ "reference": "9dec7ab62248aa97f33cce70c301af15154f8f0b",
+ "shasum": ""
+ },
+ "require": {
+ "jms/serializer": "^1.10",
+ "php": "^5.4|^7.0",
+ "phpoption/phpoption": "^1.1.0",
+ "symfony/framework-bundle": "~2.3|~3.0|~4.0"
+ },
+ "require-dev": {
+ "doctrine/orm": "*",
+ "phpunit/phpunit": "^4.8.35|^5.4.3|^6.0",
+ "symfony/expression-language": "~2.6|~3.0|~4.0",
+ "symfony/finder": "^2.3|^3.0|^4.0",
+ "symfony/form": "*",
+ "symfony/stopwatch": "*",
+ "symfony/twig-bundle": "*",
+ "symfony/validator": "*",
+ "symfony/yaml": "*"
+ },
+ "suggest": {
+ "jms/di-extra-bundle": "Required to get lazy loading (de)serialization visitors, ~1.3",
+ "symfony/finder": "Required for cache warmup, supported versions ^2.3|^3.0|^4.0"
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "JMS\\SerializerBundle\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Apache-2.0"
+ ],
+ "authors": [
+ {
+ "name": "Asmir Mustafic",
+ "email": "goetas@gmail.com"
+ },
+ {
+ "name": "Johannes M. Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "Allows you to easily serialize, and deserialize data of any complexity",
+ "homepage": "http://jmsyst.com/bundles/JMSSerializerBundle",
+ "keywords": [
+ "deserialization",
+ "jaxb",
+ "json",
+ "serialization",
+ "xml"
+ ],
+ "time": "2017-12-08T19:49:08+00:00"
+ },
+ {
+ "name": "phpcollection/phpcollection",
+ "version": "0.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/schmittjoh/php-collection.git",
+ "reference": "f2bcff45c0da7c27991bbc1f90f47c4b7fb434a6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/schmittjoh/php-collection/zipball/f2bcff45c0da7c27991bbc1f90f47c4b7fb434a6",
+ "reference": "f2bcff45c0da7c27991bbc1f90f47c4b7fb434a6",
+ "shasum": ""
+ },
+ "require": {
+ "phpoption/phpoption": "1.*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "0.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "PhpCollection": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Apache2"
+ ],
+ "authors": [
+ {
+ "name": "Johannes M. Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "General-Purpose Collection Library for PHP",
+ "keywords": [
+ "collection",
+ "list",
+ "map",
+ "sequence",
+ "set"
+ ],
+ "time": "2015-05-17T12:39:23+00:00"
+ },
+ {
+ "name": "phpoption/phpoption",
+ "version": "1.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/schmittjoh/php-option.git",
+ "reference": "94e644f7d2051a5f0fcf77d81605f152eecff0ed"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/94e644f7d2051a5f0fcf77d81605f152eecff0ed",
+ "reference": "94e644f7d2051a5f0fcf77d81605f152eecff0ed",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "4.7.*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "PhpOption\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Apache2"
+ ],
+ "authors": [
+ {
+ "name": "Johannes M. Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "Option Type for PHP",
+ "keywords": [
+ "language",
+ "option",
+ "php",
+ "type"
+ ],
+ "time": "2015-07-25T16:39:46+00:00"
+ },
+ {
+ "name": "symfony/dotenv",
+ "version": "v3.4.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/dotenv.git",
+ "reference": "66265f80c0f585cd6aec3fbdfc4ffdf7a0d75992"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/dotenv/zipball/66265f80c0f585cd6aec3fbdfc4ffdf7a0d75992",
+ "reference": "66265f80c0f585cd6aec3fbdfc4ffdf7a0d75992",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8"
+ },
+ "require-dev": {
+ "symfony/process": "~3.2|~4.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Dotenv\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Registers environment variables from a .env file",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "dotenv",
+ "env",
+ "environment"
+ ],
+ "time": "2018-01-03T17:14:19+00:00"
+ },
+ {
+ "name": "symfony/process",
+ "version": "v3.4.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/process.git",
+ "reference": "cc4aea21f619116aaf1c58016a944e4821c8e8af"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/process/zipball/cc4aea21f619116aaf1c58016a944e4821c8e8af",
+ "reference": "cc4aea21f619116aaf1c58016a944e4821c8e8af",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Process\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Process Component",
+ "homepage": "https://symfony.com",
+ "time": "2018-02-12T17:55:00+00:00"
+ },
+ {
+ "name": "symfony/profiler-pack",
+ "version": "v1.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/profiler-pack.git",
+ "reference": "fa2e2dad522a3bef322196abad28ffce6d0fdbc5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/profiler-pack/zipball/fa2e2dad522a3bef322196abad28ffce6d0fdbc5",
+ "reference": "fa2e2dad522a3bef322196abad28ffce6d0fdbc5",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0",
+ "symfony/stopwatch": "^3.3|^4.0",
+ "symfony/twig-bundle": "^3.3|^4.0",
+ "symfony/web-profiler-bundle": "^3.3|^4.0"
+ },
+ "type": "symfony-pack",
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "A pack for the Symfony web profiler",
+ "time": "2017-12-12T01:48:24+00:00"
+ },
+ {
+ "name": "symfony/stopwatch",
+ "version": "v3.4.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/stopwatch.git",
+ "reference": "eb17cfa072cab26537ac37e9c4ece6c0361369af"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/stopwatch/zipball/eb17cfa072cab26537ac37e9c4ece6c0361369af",
+ "reference": "eb17cfa072cab26537ac37e9c4ece6c0361369af",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Stopwatch\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Stopwatch Component",
+ "homepage": "https://symfony.com",
+ "time": "2018-02-17T14:55:25+00:00"
+ },
+ {
+ "name": "symfony/var-dumper",
+ "version": "v3.4.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/var-dumper.git",
+ "reference": "80964679d81da3d5618519e0e4be488c3d7ecd7d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/var-dumper/zipball/80964679d81da3d5618519e0e4be488c3d7ecd7d",
+ "reference": "80964679d81da3d5618519e0e4be488c3d7ecd7d",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8",
+ "symfony/polyfill-mbstring": "~1.0"
+ },
+ "conflict": {
+ "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0"
+ },
+ "require-dev": {
+ "ext-iconv": "*",
+ "twig/twig": "~1.34|~2.4"
+ },
+ "suggest": {
+ "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).",
+ "ext-intl": "To show region name in time zone dump",
+ "ext-symfony_debug": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.4-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "Resources/functions/dump.php"
+ ],
+ "psr-4": {
+ "Symfony\\Component\\VarDumper\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony mechanism for exploring and dumping PHP variables",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "debug",
+ "dump"
+ ],
+ "time": "2018-02-22T17:29:24+00:00"
+ },
+ {
+ "name": "symfony/web-profiler-bundle",
+ "version": "v3.4.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/web-profiler-bundle.git",
+ "reference": "355591d4749c9bbc03036e264886a9b8bdd1f45f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/355591d4749c9bbc03036e264886a9b8bdd1f45f",
+ "reference": "355591d4749c9bbc03036e264886a9b8bdd1f45f",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8",
+ "symfony/http-kernel": "~3.3|~4.0",
+ "symfony/polyfill-php70": "~1.0",
+ "symfony/routing": "~2.8|~3.0|~4.0",
+ "symfony/twig-bridge": "~2.8|~3.0|~4.0",
+ "symfony/var-dumper": "~3.3|~4.0",
+ "twig/twig": "~1.34|~2.4"
+ },
+ "conflict": {
+ "symfony/config": "<3.4",
+ "symfony/dependency-injection": "<3.4",
+ "symfony/event-dispatcher": "<3.3.1",
+ "symfony/var-dumper": "<3.3"
+ },
+ "require-dev": {
+ "symfony/config": "~3.4|~4.0",
+ "symfony/console": "~2.8|~3.0|~4.0",
+ "symfony/dependency-injection": "~3.4|~4.0",
+ "symfony/stopwatch": "~2.8|~3.0|~4.0"
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Bundle\\WebProfilerBundle\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony WebProfilerBundle",
+ "homepage": "https://symfony.com",
+ "time": "2018-03-02T08:27:00+00:00"
+ },
+ {
+ "name": "symfony/web-server-bundle",
+ "version": "v3.4.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/web-server-bundle.git",
+ "reference": "44a6b2deb1c58b2dfd3592139db9091d7cfce8ed"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/web-server-bundle/zipball/44a6b2deb1c58b2dfd3592139db9091d7cfce8ed",
+ "reference": "44a6b2deb1c58b2dfd3592139db9091d7cfce8ed",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8",
+ "symfony/config": "~3.4|~4.0",
+ "symfony/console": "~3.4|~4.0",
+ "symfony/dependency-injection": "~3.4|~4.0",
+ "symfony/http-kernel": "~3.3|~4.0",
+ "symfony/process": "~3.3.14|^3.4.2|^4.0.2"
+ },
+ "suggest": {
+ "symfony/expression-language": "For using the filter option of the log server.",
+ "symfony/monolog-bridge": "For using the log server."
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Bundle\\WebServerBundle\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony WebServerBundle",
+ "homepage": "https://symfony.com",
+ "time": "2018-01-03T17:14:19+00:00"
+ }
+ ],
+ "aliases": [],
+ "minimum-stability": "stable",
+ "stability-flags": [],
+ "prefer-stable": false,
+ "prefer-lowest": false,
+ "platform": {
+ "php": "^7.0.8",
+ "ext-iconv": "*"
+ },
+ "platform-dev": []
+}
diff --git a/config/bundles.php b/config/bundles.php
new file mode 100644
index 0000000..e07fb5d
--- /dev/null
+++ b/config/bundles.php
@@ -0,0 +1,12 @@
+ ['all' => true],
+ Symfony\Bundle\WebServerBundle\WebServerBundle::class => ['dev' => true],
+ Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle::class => ['all' => true],
+ Symfony\Bundle\TwigBundle\TwigBundle::class => ['all' => true],
+ Symfony\Bundle\WebProfilerBundle\WebProfilerBundle::class => ['dev' => true, 'test' => true],
+ JMS\SerializerBundle\JMSSerializerBundle::class => ['all' => true],
+ Endroid\QrCodeBundle\EndroidQrCodeBundle::class => ['all' => true],
+ Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true],
+];
diff --git a/config/deploy/exclude-files.txt b/config/deploy/exclude-files.txt
new file mode 100644
index 0000000..ba33ad3
--- /dev/null
+++ b/config/deploy/exclude-files.txt
@@ -0,0 +1,5 @@
+.idea
+.git
+assets
+node_modules
+var
diff --git a/config/nginx/sites-available/www b/config/nginx/sites-available/www
new file mode 100644
index 0000000..5fcdac1
--- /dev/null
+++ b/config/nginx/sites-available/www
@@ -0,0 +1,34 @@
+server {
+ listen 443;
+
+ root /data/www/current/public;
+
+ server_name www.navexplorer.com;
+
+ location / {
+ # try to serve file directly, fallback to app.php
+ try_files $uri /index.php$is_args$args;
+ }
+
+ location ~ ^/index\.php(/|$) {
+ fastcgi_pass unix:/run/php/php7.1-fpm.sock;
+ fastcgi_split_path_info ^(.+\.php)(/.*)$;
+ include fastcgi_params;
+ fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
+ fastcgi_param DOCUMENT_ROOT $realpath_root;
+
+ internal;
+ }
+
+ # return 404 for all other php files not matching the front controller
+ # this prevents access to other php files you don't want to be accessible.
+ location ~ \.php$ {
+ return 404;
+ }
+
+ error_log /var/log/nginx/www_navexplorer_error.log;
+ access_log /var/log/nginx/www_navexplorer_access.log;
+
+ ssl_certificate /etc/letsencrypt/live/navexplorer.com/fullchain.pem; # managed by Certbot
+ ssl_certificate_key /etc/letsencrypt/live/navexplorer.com/privkey.pem; # managed by Certbot
+}
diff --git a/config/packages/dev/jms_serializer.yaml b/config/packages/dev/jms_serializer.yaml
new file mode 100644
index 0000000..353e460
--- /dev/null
+++ b/config/packages/dev/jms_serializer.yaml
@@ -0,0 +1,7 @@
+jms_serializer:
+ visitors:
+ json:
+ options:
+ - JSON_PRETTY_PRINT
+ - JSON_UNESCAPED_SLASHES
+ - JSON_PRESERVE_ZERO_FRACTION
diff --git a/config/packages/dev/monolog.yaml b/config/packages/dev/monolog.yaml
new file mode 100644
index 0000000..b7dbb31
--- /dev/null
+++ b/config/packages/dev/monolog.yaml
@@ -0,0 +1,11 @@
+monolog:
+ handlers:
+ main:
+ type: stream
+ path: "%kernel.logs_dir%/%kernel.environment%.log"
+ level: debug
+ channels: ["!event"]
+ console:
+ type: console
+ process_psr_3_messages: false
+ channels: ["!event", "!doctrine", "!console"]
diff --git a/config/packages/dev/routing.yaml b/config/packages/dev/routing.yaml
new file mode 100644
index 0000000..4116679
--- /dev/null
+++ b/config/packages/dev/routing.yaml
@@ -0,0 +1,3 @@
+framework:
+ router:
+ strict_requirements: true
diff --git a/config/packages/endroid_qr_code.yaml b/config/packages/endroid_qr_code.yaml
new file mode 100644
index 0000000..fd7bd58
--- /dev/null
+++ b/config/packages/endroid_qr_code.yaml
@@ -0,0 +1,8 @@
+endroid_qr_code:
+ writer: 'png'
+ size: 300
+ margin: 0
+ error_correction_level: 'low'
+ validate_result: true
+ logo_path: '%kernel.root_dir%/../public/images/logo-mark.png'
+ logo_width: 150
diff --git a/config/packages/framework.yaml b/config/packages/framework.yaml
new file mode 100644
index 0000000..8b24418
--- /dev/null
+++ b/config/packages/framework.yaml
@@ -0,0 +1,30 @@
+framework:
+ secret: '%env(APP_SECRET)%'
+ #default_locale: en
+ #csrf_protection: true
+ #http_method_override: true
+
+ # Enables session support. Note that the session will ONLY be started if you read or write from it.
+ # Remove or comment this section to explicitly disable session support.
+ session:
+ handler_id: ~
+
+ #esi: true
+ #fragments: true
+ php_errors:
+ log: true
+
+ cache:
+ # Put the unique name of your app here: the prefix seed
+ # is used to compute stable namespaces for cache keys.
+ #prefix_seed: your_vendor_name/app_name
+
+ # The app cache caches to the filesystem by default.
+ # Other options include:
+
+ # Redis
+ #app: cache.adapter.redis
+ #default_redis_provider: redis://localhost
+
+ # APCu (not recommended with heavy random-write workloads as memory fragmentation can cause perf issues)
+ #app: cache.adapter.apcu
diff --git a/config/packages/jms_serializer.yaml b/config/packages/jms_serializer.yaml
new file mode 100644
index 0000000..bab42da
--- /dev/null
+++ b/config/packages/jms_serializer.yaml
@@ -0,0 +1,13 @@
+jms_serializer:
+ visitors:
+ xml:
+ format_output: '%kernel.debug%'
+# metadata:
+# auto_detection: false
+# directories:
+# any-name:
+# namespace_prefix: "My\\FooBundle"
+# path: "@MyFooBundle/Resources/config/serializer"
+# another-name:
+# namespace_prefix: "My\\BarBundle"
+# path: "@MyBarBundle/Resources/config/serializer"
diff --git a/config/packages/prod/jms_serializer.yaml b/config/packages/prod/jms_serializer.yaml
new file mode 100644
index 0000000..bc97faf
--- /dev/null
+++ b/config/packages/prod/jms_serializer.yaml
@@ -0,0 +1,6 @@
+jms_serializer:
+ visitors:
+ json:
+ options:
+ - JSON_UNESCAPED_SLASHES
+ - JSON_PRESERVE_ZERO_FRACTION
diff --git a/config/packages/prod/monolog.yaml b/config/packages/prod/monolog.yaml
new file mode 100644
index 0000000..b7dbb31
--- /dev/null
+++ b/config/packages/prod/monolog.yaml
@@ -0,0 +1,11 @@
+monolog:
+ handlers:
+ main:
+ type: stream
+ path: "%kernel.logs_dir%/%kernel.environment%.log"
+ level: debug
+ channels: ["!event"]
+ console:
+ type: console
+ process_psr_3_messages: false
+ channels: ["!event", "!doctrine", "!console"]
diff --git a/config/packages/routing.yaml b/config/packages/routing.yaml
new file mode 100644
index 0000000..368bc7f
--- /dev/null
+++ b/config/packages/routing.yaml
@@ -0,0 +1,3 @@
+framework:
+ router:
+ strict_requirements: ~
diff --git a/config/packages/test/framework.yaml b/config/packages/test/framework.yaml
new file mode 100644
index 0000000..d051c84
--- /dev/null
+++ b/config/packages/test/framework.yaml
@@ -0,0 +1,4 @@
+framework:
+ test: true
+ session:
+ storage_id: session.storage.mock_file
diff --git a/config/packages/test/monolog.yaml b/config/packages/test/monolog.yaml
new file mode 100644
index 0000000..2762653
--- /dev/null
+++ b/config/packages/test/monolog.yaml
@@ -0,0 +1,7 @@
+monolog:
+ handlers:
+ main:
+ type: stream
+ path: "%kernel.logs_dir%/%kernel.environment%.log"
+ level: debug
+ channels: ["!event"]
diff --git a/config/packages/test/web_profiler.yaml b/config/packages/test/web_profiler.yaml
new file mode 100644
index 0000000..03752de
--- /dev/null
+++ b/config/packages/test/web_profiler.yaml
@@ -0,0 +1,6 @@
+web_profiler:
+ toolbar: false
+ intercept_redirects: false
+
+framework:
+ profiler: { collect: false }
diff --git a/config/packages/twig.yaml b/config/packages/twig.yaml
new file mode 100644
index 0000000..3b315dc
--- /dev/null
+++ b/config/packages/twig.yaml
@@ -0,0 +1,4 @@
+twig:
+ paths: ['%kernel.project_dir%/templates']
+ debug: '%kernel.debug%'
+ strict_variables: '%kernel.debug%'
diff --git a/config/packages/twig_extensions.yaml b/config/packages/twig_extensions.yaml
new file mode 100644
index 0000000..417b7bc
--- /dev/null
+++ b/config/packages/twig_extensions.yaml
@@ -0,0 +1,10 @@
+services:
+ _defaults:
+ public: false
+ autowire: true
+ autoconfigure: true
+
+ #Twig\Extensions\ArrayExtension: ~
+ #Twig\Extensions\DateExtension: ~
+ #Twig\Extensions\IntlExtension: ~
+ #Twig\Extensions\TextExtension: ~
diff --git a/config/routes.yaml b/config/routes.yaml
new file mode 100644
index 0000000..3fab0c6
--- /dev/null
+++ b/config/routes.yaml
@@ -0,0 +1,3 @@
+#index:
+# path: /
+# defaults: { _controller: 'App\Controller\DefaultController::index' }
diff --git a/config/routes/annotations.yaml b/config/routes/annotations.yaml
new file mode 100644
index 0000000..d49a502
--- /dev/null
+++ b/config/routes/annotations.yaml
@@ -0,0 +1,3 @@
+controllers:
+ resource: ../../src/Controller/
+ type: annotation
diff --git a/config/routes/dev/twig.yaml b/config/routes/dev/twig.yaml
new file mode 100644
index 0000000..f4ee839
--- /dev/null
+++ b/config/routes/dev/twig.yaml
@@ -0,0 +1,3 @@
+_errors:
+ resource: '@TwigBundle/Resources/config/routing/errors.xml'
+ prefix: /_error
diff --git a/config/routes/dev/web_profiler.yaml b/config/routes/dev/web_profiler.yaml
new file mode 100644
index 0000000..c82beff
--- /dev/null
+++ b/config/routes/dev/web_profiler.yaml
@@ -0,0 +1,7 @@
+web_profiler_wdt:
+ resource: '@WebProfilerBundle/Resources/config/routing/wdt.xml'
+ prefix: /_wdt
+
+web_profiler_profiler:
+ resource: '@WebProfilerBundle/Resources/config/routing/profiler.xml'
+ prefix: /_profiler
diff --git a/config/routes/endroid_qr_code.yaml b/config/routes/endroid_qr_code.yaml
new file mode 100644
index 0000000..ceab54e
--- /dev/null
+++ b/config/routes/endroid_qr_code.yaml
@@ -0,0 +1,3 @@
+endroid_qr_code:
+ resource: "@EndroidQrCodeBundle/Resources/config/routes.yaml"
+ prefix: /qr-code
diff --git a/config/services.yaml b/config/services.yaml
new file mode 100644
index 0000000..e65312d
--- /dev/null
+++ b/config/services.yaml
@@ -0,0 +1,86 @@
+# Put parameters here that don't need to change on each machine where the app is deployed
+# https://symfony.com/doc/current/best_practices/configuration.html#application-related-configuration
+parameters:
+ navcoin.main_net.base_uri: '%env(BACKEND_MAINNET)%'
+ navcoin.test_net.base_uri: '%env(BACKEND_TESTNET)%'
+
+services:
+ # default configuration for services in *this* file
+ _defaults:
+ autowire: true # Automatically injects dependencies in your services.
+ autoconfigure: true # Automatically registers your services as commands, event subscribers, etc.
+ public: false # Allows optimizing the container by removing unused services; this also means
+ # fetching services directly from the container via $container->get() won't work.
+ # The best practice is to be explicit about your dependencies anyway.
+
+ # makes classes in src/ available to be used as services
+ # this creates a service per class whose id is the fully-qualified class name
+ App\:
+ resource: '../src/*'
+ exclude: '../src/{Entity,Migrations,Tests,Kernel.php}'
+
+ # controllers are imported separately to make sure services can be injected
+ # as action arguments even if you don't extend any base controller class
+ App\Controller\:
+ resource: '../src/Controller'
+ tags: ['controller.service_arguments']
+
+ # add more service definitions when explicit configuration is needed
+ # please note that last definitions always *replace* previous ones
+
+ # Navcoin Clients
+ App\Navcoin\Client\MainNetClient:
+ arguments: ['%navcoin.main_net.base_uri%']
+
+ App\Navcoin\Client\TestNetClient:
+ arguments: ['%navcoin.test_net.base_uri%']
+
+ # Navcoin APIs
+ App\Navcoin\Address\Api\AddressApi:
+ arguments:
+ - '@App\Navcoin\Client\ClientManager'
+ - '@App\Navcoin\Address\Mapper\AddressMapper'
+
+ App\Navcoin\Address\Api\StakingApi:
+ arguments:
+ - '@App\Navcoin\Client\ClientManager'
+
+ App\Navcoin\Address\Api\TransactionApi:
+ arguments:
+ - '@App\Navcoin\Client\ClientManager'
+ - '@App\Navcoin\Address\Mapper\TransactionMapper'
+ calls:
+ - method: setFilter
+ arguments: ['@App\Navcoin\Address\Type\Filter\AddressTransactionTypeFilter']
+
+ App\Navcoin\Block\Api\BlockApi:
+ arguments:
+ - '@App\Navcoin\Client\ClientManager'
+ - '@App\Navcoin\Block\Mapper\BlockMapper'
+
+ App\Navcoin\Block\Api\BlockGroupApi:
+ arguments:
+ - '@App\Navcoin\Client\ClientManager'
+ - '@App\Navcoin\Block\Mapper\BlockGroupMapper'
+
+ App\Navcoin\Block\Api\TransactionApi:
+ arguments:
+ - '@App\Navcoin\Client\ClientManager'
+ - '@App\Navcoin\Block\Mapper\TransactionMapper'
+
+ App\Navcoin\Distribution\Api\DistributionApi:
+ arguments:
+ - '@App\Navcoin\Client\ClientManager'
+ - '@App\Navcoin\Distribution\Mapper\DistributionMapper'
+
+ App\Navcoin\Search\Api\SearchApi:
+ arguments:
+ - '@App\Navcoin\Client\ClientManager'
+
+ App\Navcoin\SoftFork\Api\SoftForkApi:
+ arguments:
+ - '@App\Navcoin\Client\ClientManager'
+ - '@App\Navcoin\SoftFork\Mapper\SoftForkMapper'
+
+ # Filters
+ App\Navcoin\Address\Type\Filter\AddressTransactionTypeFilter:
diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 0000000..c065c17
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,17 @@
+version: '2'
+
+services:
+ php:
+ build: docker/php7-fpm
+ volumes:
+ - ./:/var/www
+ extra_hosts:
+ - backend:172.16.222.111 #sudo ifconfig lo0 alias 172.16.222.111
+ nginx:
+ build: docker/nginx
+ ports:
+ - 80:80
+ volumes_from:
+ - php
+ volumes:
+ - ./docker/logs/nginx/:/var/log/nginx
\ No newline at end of file
diff --git a/docker/nginx/Dockerfile b/docker/nginx/Dockerfile
new file mode 100644
index 0000000..f9d187d
--- /dev/null
+++ b/docker/nginx/Dockerfile
@@ -0,0 +1,21 @@
+FROM debian:jessie
+
+MAINTAINER Maxence POUTORD
+
+RUN apt-get update && apt-get install -y \
+ nginx
+
+ADD nginx.conf /etc/nginx/
+ADD app.conf /etc/nginx/sites-available/
+
+RUN ln -s /etc/nginx/sites-available/app.conf /etc/nginx/sites-enabled/app
+RUN rm /etc/nginx/sites-enabled/default
+
+RUN echo "upstream php-upstream { server php:9000; }" > /etc/nginx/conf.d/upstream.conf
+
+RUN usermod -u 1000 www-data
+
+CMD ["nginx"]
+
+EXPOSE 80
+EXPOSE 443
\ No newline at end of file
diff --git a/docker/nginx/app.conf b/docker/nginx/app.conf
new file mode 100644
index 0000000..5ca5b99
--- /dev/null
+++ b/docker/nginx/app.conf
@@ -0,0 +1,23 @@
+server {
+ server_name www.navexplorer.dev;
+ root /var/www/public;
+
+ location / {
+ try_files $uri @rewriteapp;
+ }
+
+ location @rewriteapp {
+ rewrite ^(.*)$ /index.php/$1 last;
+ }
+
+ location ~ ^/index\.php(/|$) {
+ fastcgi_pass php-upstream;
+ fastcgi_split_path_info ^(.+\.php)(/.*)$;
+ include fastcgi_params;
+ fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
+ fastcgi_param HTTPS off;
+ }
+
+ error_log /var/log/nginx/navexplorer_error.log;
+ access_log /var/log/nginx/navexplorer_access.log;
+}
\ No newline at end of file
diff --git a/docker/nginx/nginx.conf b/docker/nginx/nginx.conf
new file mode 100644
index 0000000..3ea65a8
--- /dev/null
+++ b/docker/nginx/nginx.conf
@@ -0,0 +1,29 @@
+user www-data;
+worker_processes 4;
+pid /run/nginx.pid;
+
+events {
+ worker_connections 2048;
+ multi_accept on;
+ use epoll;
+}
+
+http {
+ server_tokens off;
+ sendfile on;
+ tcp_nopush on;
+ tcp_nodelay on;
+ keepalive_timeout 15;
+ types_hash_max_size 2048;
+ include /etc/nginx/mime.types;
+ default_type application/octet-stream;
+ access_log off;
+ error_log off;
+ gzip on;
+ gzip_disable "msie6";
+ include /etc/nginx/conf.d/*.conf;
+ include /etc/nginx/sites-enabled/*;
+ open_file_cache max=100;
+}
+
+daemon off;
\ No newline at end of file
diff --git a/docker/php7-fpm/Dockerfile b/docker/php7-fpm/Dockerfile
new file mode 100644
index 0000000..563324a
--- /dev/null
+++ b/docker/php7-fpm/Dockerfile
@@ -0,0 +1,51 @@
+FROM php:7.1-fpm
+
+MAINTAINER Maxence POUTORD
+
+RUN apt-get update && apt-get install -y \
+ git \
+ libpng-dev \
+ libicu-dev \
+ wget \
+ gnupg
+
+RUN curl -sL https://deb.nodesource.com/setup_8.x | bash -
+RUN apt-get install -y nodejs
+
+# Install Composer
+RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
+RUN composer --version
+
+RUN apt-get update \
+ && apt-get install -y wget git zlib1g-dev libicu-dev \
+ && rm -r /var/lib/apt/lists/* \
+ && docker-php-ext-configure zip \
+ && docker-php-ext-install zip \
+ && docker-php-ext-configure intl \
+ && docker-php-ext-install intl \
+ && docker-php-ext-configure pcntl \
+ && docker-php-ext-install pcntl \
+ && docker-php-ext-configure opcache \
+ && docker-php-ext-install opcache \
+ && docker-php-ext-configure pdo_mysql \
+ && docker-php-ext-install pdo_mysql
+
+# install xdebug
+RUN pecl install xdebug
+RUN docker-php-ext-enable xdebug
+RUN echo "error_reporting = E_ALL" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
+RUN echo "display_startup_errors = On" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
+RUN echo "display_errors = On" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
+RUN echo "xdebug.remote_enable=1" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
+RUN echo "xdebug.remote_connect_back=1" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
+RUN echo "xdebug.idekey=\"PHPSTORM\"" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
+RUN echo "xdebug.remote_port=9001" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
+
+# Install NodeJS, Yarn, and Ruby
+RUN curl -sL https://deb.nodesource.com/setup_8.x | bash -
+RUN apt-get install -y nodejs ruby
+RUN rm -r /var/lib/apt/lists/*
+RUN npm install -g bower
+RUN gem install yarn
+
+WORKDIR /var/www
\ No newline at end of file
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..23c3ed8
--- /dev/null
+++ b/package.json
@@ -0,0 +1,13 @@
+{
+ "devDependencies": {
+ "@symfony/webpack-encore": "^0.19.0",
+ "node-sass": "^4.8.1",
+ "sass-loader": "^6.0.7"
+ },
+ "dependencies": {
+ "axios": "^0.18.0",
+ "d3": "^5.1.0",
+ "jquery": "^3.3.1",
+ "moment": "^2.22.0"
+ }
+}
diff --git a/public/fonts/open-iconic.eot b/public/fonts/open-iconic.eot
new file mode 100755
index 0000000..f98177d
Binary files /dev/null and b/public/fonts/open-iconic.eot differ
diff --git a/public/fonts/open-iconic.otf b/public/fonts/open-iconic.otf
new file mode 100755
index 0000000..f6bd684
Binary files /dev/null and b/public/fonts/open-iconic.otf differ
diff --git a/public/fonts/open-iconic.svg b/public/fonts/open-iconic.svg
new file mode 100755
index 0000000..32b2c4e
--- /dev/null
+++ b/public/fonts/open-iconic.svg
@@ -0,0 +1,543 @@
+
+
+
+
+
+Created by FontForge 20120731 at Tue Jul 1 20:39:22 2014
+ By P.J. Onori
+Created by P.J. Onori with FontForge 2.0 (http://fontforge.sf.net)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/public/fonts/open-iconic.ttf b/public/fonts/open-iconic.ttf
new file mode 100755
index 0000000..fab6048
Binary files /dev/null and b/public/fonts/open-iconic.ttf differ
diff --git a/public/fonts/open-iconic.woff b/public/fonts/open-iconic.woff
new file mode 100755
index 0000000..f930998
Binary files /dev/null and b/public/fonts/open-iconic.woff differ
diff --git a/public/images/arrow-thick-right.svg b/public/images/arrow-thick-right.svg
new file mode 100755
index 0000000..33a8502
--- /dev/null
+++ b/public/images/arrow-thick-right.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/public/images/favicon-1.png b/public/images/favicon-1.png
new file mode 100644
index 0000000..564d87e
Binary files /dev/null and b/public/images/favicon-1.png differ
diff --git a/public/images/logo-extended.png b/public/images/logo-extended.png
new file mode 100644
index 0000000..f588f48
Binary files /dev/null and b/public/images/logo-extended.png differ
diff --git a/public/images/logo-mark.png b/public/images/logo-mark.png
new file mode 100644
index 0000000..e913c62
Binary files /dev/null and b/public/images/logo-mark.png differ
diff --git a/public/images/nav-cartoons-bloodbath.png b/public/images/nav-cartoons-bloodbath.png
new file mode 100644
index 0000000..889a4d2
Binary files /dev/null and b/public/images/nav-cartoons-bloodbath.png differ
diff --git a/public/images/nav-square.jpg b/public/images/nav-square.jpg
new file mode 100644
index 0000000..dd49f6b
Binary files /dev/null and b/public/images/nav-square.jpg differ
diff --git a/public/index.php b/public/index.php
new file mode 100644
index 0000000..ab41c26
--- /dev/null
+++ b/public/index.php
@@ -0,0 +1,39 @@
+load(__DIR__.'/../.env');
+}
+
+$env = $_SERVER['APP_ENV'] ?? 'dev';
+$debug = $_SERVER['APP_DEBUG'] ?? ('prod' !== $env);
+
+if ($debug) {
+ umask(0000);
+
+ Debug::enable();
+}
+
+if ($trustedProxies = $_SERVER['TRUSTED_PROXIES'] ?? false) {
+ Request::setTrustedProxies(explode(',', $trustedProxies), Request::HEADER_X_FORWARDED_ALL ^ Request::HEADER_X_FORWARDED_HOST);
+}
+
+if ($trustedHosts = $_SERVER['TRUSTED_HOSTS'] ?? false) {
+ Request::setTrustedHosts(explode(',', $trustedHosts));
+}
+
+$kernel = new Kernel($env, $debug);
+$request = Request::createFromGlobals();
+$response = $kernel->handle($request);
+$response->send();
+$kernel->terminate($request, $response);
diff --git a/src/Controller/AddressController.php b/src/Controller/AddressController.php
new file mode 100644
index 0000000..1136ac4
--- /dev/null
+++ b/src/Controller/AddressController.php
@@ -0,0 +1,98 @@
+addressApi = $addressApi;
+ $this->transactionApi = $transactionApi;
+ }
+
+ /**
+ * @Route("/address/{hash}")
+ *
+ * @param Request $request
+ * @param string $hash
+ * @param AddressTransactionTypeFilter $filter
+ *
+ * @return Response
+ */
+ public function index(Request $request, String $hash, AddressTransactionTypeFilter $filter): Response
+ {
+ try {
+ $address = $this->addressApi->getAddress($hash);
+ } catch (AddressInvalidException $e) {
+ return $this->render('address/not_found.html.twig', [
+ 'hash' => $hash,
+ ]);
+ }
+
+ return $this->render('address/index.html.twig', [
+ 'address' => $address,
+ 'hash' => $hash,
+ 'filter' => $filter,
+ 'filters' => $request->get('filters') ? explode(',', $request->get('filters')) : [],
+ ]);
+ }
+
+ /**
+ * @Route("/address/{hash}/tx.json")
+ *
+ * @param Request $request
+ * @param string $hash
+ * @param SerializerInterface $serializer
+ *
+ * @return Response
+ */
+ public function transactions(Request $request, String $hash, SerializerInterface $serializer): Response
+ {
+ $addressTransactions = $this->transactionApi->getTransactionsForAddress(
+ $hash,
+ $request->get('size', $this->pageSize),
+ $request->get('filters', []),
+ $request->get('from', null),
+ $request->get('to', null)
+ );
+
+ return new Response($serializer->serialize($addressTransactions, 'json'));
+ }
+}
diff --git a/src/Controller/Api/SoftForkController.php b/src/Controller/Api/SoftForkController.php
new file mode 100644
index 0000000..72b3bac
--- /dev/null
+++ b/src/Controller/Api/SoftForkController.php
@@ -0,0 +1,38 @@
+headers->get('network')) {
+ case 'testnet':
+ $softForkApi->useNetwork(Network::TEST_NET);
+ break;
+ default:
+ $softForkApi->useNetwork(Network::MAIN_NET);
+ }
+
+ $response = new Response($serializer->serialize($softForkApi->getAll()->getElements(), 'json'), 200);
+ $response->headers->set('Content-Type', 'application/json');
+
+ return $response;
+ }
+}
diff --git a/src/Controller/Api/StakeReportController.php b/src/Controller/Api/StakeReportController.php
new file mode 100644
index 0000000..50d0262
--- /dev/null
+++ b/src/Controller/Api/StakeReportController.php
@@ -0,0 +1,84 @@
+stakingApi = $stakingApi;
+ }
+
+ /**
+ * @Route("/api/staking/report")
+ * @Template()
+ *
+ * @param Request $request
+ *
+ * @return Response
+ */
+ public function getStakingReportAction(Request $request)
+ {
+ $dateFormat = 'Y-m-d H:i:s';
+ if ($request->get('navaddress') == "") {
+ return new JsonResponse(['error' => 'navaddress request parameter must be provided required'], 400);
+ }
+
+ if ($request->get('startdate') == "") {
+ return new JsonResponse(['error' => 'startdate request parameter must be provided required'], 400);
+ }
+
+ if ($request->get('enddate') == "") {
+ return new JsonResponse(['error' => 'enddate request parameter must be provided required'], 400);
+ }
+
+ $startDate = \DateTime::createFromFormat('Y-m-d H:i:s', $request->get('startdate'));
+ if ($startDate === false) {
+ return new JsonResponse(['error' => 'startdate is invalid. Accepted format is '.$dateFormat], 400);
+ }
+ $endDate = \DateTime::createFromFormat($dateFormat, $request->get('enddate'));
+ if ($endDate === false) {
+ return new JsonResponse(['error' => 'enddate is invalid. Accepted format is '.$dateFormat], 400);
+ }
+
+ switch ($request->headers->get('network')) {
+ case 'testnet':
+ $stakingApi = $this->stakingApi->useNetwork(Network::TEST_NET);
+ break;
+ default:
+ $stakingApi = $this->stakingApi->useNetwork(Network::MAIN_NET);
+
+ }
+
+ $stakeReport = $stakingApi->getStakingReport(
+ $request->get('navaddress'),
+ \DateTime::createFromFormat('Y-m-d H:i:s', $request->get('startdate')),
+ \DateTime::createFromFormat('Y-m-d H:i:s', $request->get('enddate'))
+ );
+
+ return new JsonResponse(['stake' => $stakeReport['stake'] / 100000000]);
+ }
+}
diff --git a/src/Controller/BlockController.php b/src/Controller/BlockController.php
new file mode 100644
index 0000000..70fa3b3
--- /dev/null
+++ b/src/Controller/BlockController.php
@@ -0,0 +1,117 @@
+blockApi = $blockApi;
+ $this->transactionApi = $transactionApi;
+ }
+
+ /**
+ * @Route("/blocks")
+ * @Template()
+ *
+ * @return array
+ */
+ public function index(): array
+ {
+ return [];
+ }
+
+ /**
+ * @Route("/blocks.json")
+ *
+ *
+ * @param Request $request
+ * @param SerializerInterface $serializer
+ *
+ * @return Response
+ */
+ public function blocks(Request $request, SerializerInterface $serializer): Response
+ {
+ $blocks = $this->blockApi->getBlocks(
+ $request->get('size', $this->pageSize),
+ $request->get('from', null),
+ $request->get('to', null)
+ );
+
+ return new Response($serializer->serialize($blocks, 'json'));
+ }
+
+ /**
+ * @Route("/block/{height}")
+ *
+ * @param Request $request
+ *
+ * @return Response
+ */
+ public function view(Request $request): Response
+ {
+ try {
+ $block = $this->blockApi->getBlock($request->get('height'));
+ } catch (BlockNotFoundException $e) {
+ return $this->render('block/not_found.html.twig', [
+ 'height' => $request->get('height'),
+ ]);
+ }
+
+ return $this->render('block/view.html.twig', [
+ 'block' => $block,
+ ]);
+ }
+
+ /**
+ * @Route("/block/{height}/tx.json")
+ *
+ *
+ * @param Request $request
+ * @param SerializerInterface $serializer
+ *
+ * @return Response
+ */
+ public function transactions(Request $request, SerializerInterface $serializer): Response
+ {
+ $transactions = $this->transactionApi->getTransactionsForBlock($request->get('height'));
+
+ return new Response($serializer->serialize($transactions, 'json'));
+ }
+}
diff --git a/src/Controller/BlockGroupController.php b/src/Controller/BlockGroupController.php
new file mode 100644
index 0000000..44e0613
--- /dev/null
+++ b/src/Controller/BlockGroupController.php
@@ -0,0 +1,51 @@
+blockGroupApi = $blockGroupApi;
+ }
+
+
+ /**
+ * @Route("/block/group/{category}.json")
+ *
+ * @param Request $request
+ * @param SerializerInterface $serializer
+ *
+ * @return Response
+ */
+ public function blocks(Request $request, SerializerInterface $serializer): Response
+ {
+ $blockGroups = $this->blockGroupApi->getGroupByCategory(
+ $request->get('category'),
+ $request->get('count', 10)
+ );
+
+ return new Response($serializer->serialize($blockGroups, 'json'));
+ }
+}
diff --git a/src/Controller/DistributionController.php b/src/Controller/DistributionController.php
new file mode 100644
index 0000000..6ab56a0
--- /dev/null
+++ b/src/Controller/DistributionController.php
@@ -0,0 +1,49 @@
+distributionApi = $distributionApi;
+ }
+
+
+ /**
+ * @Route("/distribution/balance.json")
+ *
+ * @param SerializerInterface $serializer
+ *
+ * @return Response
+ */
+ public function balance(SerializerInterface $serializer)
+ {
+ return new Response(
+ $serializer->serialize(
+ $this->distributionApi->getBalanceDistribution("10,100,1000"),
+ 'json'
+ )
+ );
+ }
+}
diff --git a/src/Controller/HomeController.php b/src/Controller/HomeController.php
new file mode 100644
index 0000000..001161b
--- /dev/null
+++ b/src/Controller/HomeController.php
@@ -0,0 +1,78 @@
+blockGroupApi = $blockGroupApi;
+ }
+
+ /**
+ * @Route("/")
+ * @Template()
+ *
+ * @param Request $request
+ *
+ * @return array
+ */
+ public function index(Request $request): array
+ {
+ $period = $request->get('period', 'hourly');
+
+ return [
+ 'blocks' => $this->blockGroupApi->getGroupByCategory($period, 10),
+ 'period' => $period,
+ ];
+ }
+
+ /**
+ * @Route("/network/{network}")
+ * @Template()
+ *
+ * @param Request $request
+ * @param Session $session
+ *
+ * @return RedirectResponse
+ */
+ public function network(Request $request, Session $session): RedirectResponse
+ {
+ $network = $request->get('network');
+ switch ($network) {
+ case 'testnet':
+ $network = Network::TEST_NET;
+ break;
+ default:
+ $network = Network::MAIN_NET;
+ }
+
+ $session->set('network', $network);
+
+ return $this->redirectToRoute('app_home_index');
+ }
+}
diff --git a/src/Controller/RichListController.php b/src/Controller/RichListController.php
new file mode 100644
index 0000000..abba4ab
--- /dev/null
+++ b/src/Controller/RichListController.php
@@ -0,0 +1,44 @@
+addressApi = $addressApi;
+ }
+
+
+ /**
+ * @Route("/rich-list")
+ * @Template()
+ *
+ * @return array
+ */
+ public function index()
+ {
+ return [
+ 'richList' => $this->addressApi->getTop100Addresses()
+ ];
+ }
+}
diff --git a/src/Controller/SearchController.php b/src/Controller/SearchController.php
new file mode 100644
index 0000000..700a231
--- /dev/null
+++ b/src/Controller/SearchController.php
@@ -0,0 +1,80 @@
+searchApi = $searchApi;
+ }
+
+ /**
+ * @Route("/search")
+ * @Template()
+ *
+ * @return array
+ */
+ public function searchAction()
+ {
+ return [
+
+ ];
+ }
+
+ /**
+ * @Route("/search/results")
+ * @Template()
+ *
+ * @param Request $request
+ *
+ * @return array|RedirectResponse
+ */
+ public function resultsAction(Request $request)
+ {
+ $hash = $request->get('hash', 'a');
+
+ try {
+ if ($hash !== '') {
+ $result = $this->searchApi->search($request->get('hash', ''));
+ switch ($result->getType()) {
+ case 'block':
+ return $this->redirectToRoute('app_block_view', ['height' => $result->getValue()]);
+ case 'transaction':
+ return $this->redirectToRoute('app_transaction_view', ['hash' => $result->getValue()]);
+ case 'address':
+ return $this->redirectToRoute('app_address_index', ['hash' => $result->getValue()]);
+ }
+ }
+ } catch (SearchResultMissException $e) {
+ //
+ }
+
+ return [
+ 'hash' => $hash,
+ ];
+ }
+}
diff --git a/src/Controller/SoftForkController.php b/src/Controller/SoftForkController.php
new file mode 100644
index 0000000..add79c1
--- /dev/null
+++ b/src/Controller/SoftForkController.php
@@ -0,0 +1,53 @@
+softForkApi = $softForkApi;
+ $this->blockApi = $blockApi;
+ }
+
+
+ /**
+ * @Route("/soft-forks")
+ * @Template()
+ *
+ * @return array
+ */
+ public function index()
+ {
+ return [
+ 'block' => $this->blockApi->getBestBlock(),
+ 'softForks' => $this->softForkApi->getAll(),
+ ];
+ }
+}
diff --git a/src/Controller/TransactionController.php b/src/Controller/TransactionController.php
new file mode 100644
index 0000000..8109c7b
--- /dev/null
+++ b/src/Controller/TransactionController.php
@@ -0,0 +1,96 @@
+blockApi = $blockApi;
+ $this->transactionApi = $transactionApi;
+ }
+
+ /**
+ * @Route("/tx")
+ * @Template()
+ *
+ * @return array
+ */
+ public function index(): array
+ {
+ return [];
+ }
+
+
+ /**
+ * @Route("/tx.json")
+ *
+ * @param Request $request
+ * @param SerializerInterface $serializer
+ *
+ * @return Response
+ */
+ public function transactions(Request $request, SerializerInterface $serializer): Response
+ {
+ $transactions = $this->transactionApi->getTransactions(
+ $request->get('size', $this->pageSize),
+ $request->get('from', null),
+ $request->get('to', null)
+ );
+
+ return new Response($serializer->serialize($transactions, 'json'));
+ }
+
+ /**
+ * @Route("/tx/{hash}")
+ * @Template()
+ *
+ * @param Request $request
+ *
+ * @return array
+ */
+ public function view(Request $request): array
+ {
+ $transaction = $this->transactionApi->getTransaction($request->get('hash'));
+ $block = $this->blockApi->getBlock($transaction->getHeight());
+
+ return [
+ 'transaction' => $transaction,
+ 'block' => $block,
+ ];
+ }
+}
diff --git a/src/Exception/AddressIndexIncompleteException.php b/src/Exception/AddressIndexIncompleteException.php
new file mode 100644
index 0000000..01726d1
--- /dev/null
+++ b/src/Exception/AddressIndexIncompleteException.php
@@ -0,0 +1,13 @@
+getProjectDir().'/var/cache/'.$this->environment;
+ }
+
+ public function getLogDir()
+ {
+ return $this->getProjectDir().'/var/log';
+ }
+
+ public function registerBundles()
+ {
+ $contents = require $this->getProjectDir().'/config/bundles.php';
+ foreach ($contents as $class => $envs) {
+ if (isset($envs['all']) || isset($envs[$this->environment])) {
+ yield new $class();
+ }
+ }
+ }
+
+ protected function configureContainer(ContainerBuilder $container, LoaderInterface $loader)
+ {
+ // Feel free to remove the "container.autowiring.strict_mode" parameter
+ // if you are using symfony/dependency-injection 4.0+ as it's the default behavior
+ $container->setParameter('container.autowiring.strict_mode', true);
+ $container->setParameter('container.dumper.inline_class_loader', true);
+ $confDir = $this->getProjectDir().'/config';
+
+ $loader->load($confDir.'/{packages}/*'.self::CONFIG_EXTS, 'glob');
+ $loader->load($confDir.'/{packages}/'.$this->environment.'/**/*'.self::CONFIG_EXTS, 'glob');
+ $loader->load($confDir.'/{services}'.self::CONFIG_EXTS, 'glob');
+ $loader->load($confDir.'/{services}_'.$this->environment.self::CONFIG_EXTS, 'glob');
+ }
+
+ protected function configureRoutes(RouteCollectionBuilder $routes)
+ {
+ $confDir = $this->getProjectDir().'/config';
+
+ $routes->import($confDir.'/{routes}/*'.self::CONFIG_EXTS, '/', 'glob');
+ $routes->import($confDir.'/{routes}/'.$this->environment.'/**/*'.self::CONFIG_EXTS, '/', 'glob');
+ $routes->import($confDir.'/{routes}'.self::CONFIG_EXTS, '/', 'glob');
+ }
+}
diff --git a/src/Navcoin/Address/Api/AddressApi.php b/src/Navcoin/Address/Api/AddressApi.php
new file mode 100644
index 0000000..c4069b6
--- /dev/null
+++ b/src/Navcoin/Address/Api/AddressApi.php
@@ -0,0 +1,58 @@
+getClient()->get('/api/address/'.$hash);
+ } catch (ClientException $e) {
+ switch ($e->getResponse()->getStatusCode()) {
+ case Response::HTTP_NOT_FOUND:
+ throw new AddressInvalidException(sprintf("The `%s` address does not exist.", $hash), 0, $e);
+ default:
+ throw $e;
+ }
+ }
+
+ return $this->getMapper()->mapEntity($data);
+ }
+
+ /**
+ * Get top 100 addresses
+ *
+ * @return Address[]
+ */
+ public function getTop100Addresses(): array
+ {
+ try {
+ $data = $this->getClient()->get('/api/address/top/100');
+ } catch (ServerRequestException $e) {
+ throw new AddressIndexIncompleteException(sprintf("Could not return top 100 addresses"), 0, $e);
+ }
+
+ return $this->getMapper()->mapIterator($data);
+ }
+}
diff --git a/src/Navcoin/Address/Api/StakingApi.php b/src/Navcoin/Address/Api/StakingApi.php
new file mode 100644
index 0000000..475a403
--- /dev/null
+++ b/src/Navcoin/Address/Api/StakingApi.php
@@ -0,0 +1,27 @@
+getClient()->get(sprintf('/api/staking/report/%s?from=%s&to=%s',
+ $hash, $from->format('Y-m-d H:i:s'), $to->format('Y-m-d H:i:s')
+ ));
+ } catch (ServerRequestException $e) {
+ throw $e;
+ }
+
+ return $data;
+ }
+}
diff --git a/src/Navcoin/Address/Api/TransactionApi.php b/src/Navcoin/Address/Api/TransactionApi.php
new file mode 100644
index 0000000..94da6de
--- /dev/null
+++ b/src/Navcoin/Address/Api/TransactionApi.php
@@ -0,0 +1,68 @@
+addressTransactionTypeFilter = $addressTransactionTypeFilter;
+ }
+
+ /**
+ * Get transactions for address
+ *
+ * @param String $hash
+ * @param int $size
+ * @param array $filters
+ * @param String|null $from
+ * @param String|null $to
+ *
+ * @return IteratorEntityInterface
+ */
+ public function getTransactionsForAddress(
+ String $hash,
+ int $size = 50,
+ array $filters = null,
+ String $from = null,
+ String $to = null
+ ): IteratorEntityInterface
+ {
+ $url = sprintf('/api/address/%s/tx?page=%d&size=%d', $hash,0, $size);
+ if (!empty($filters)) {
+ $filterQuery = $this->addressTransactionTypeFilter->createfilterQuery($filters);
+ $url .= ($filterQuery !== '') ? '&' . $filterQuery : '';
+ }
+ $url .= ($from !== null) ? sprintf('&from=%s', $from) : '';
+ $url .= ($to !== null) ? sprintf('&to=%s', $to) : '';
+
+ try {
+ $data = $this->getClient()->get($url);
+ } catch (ServerRequestException $e) {
+ return new Transactions();
+ }
+
+ return $this->getMapper()->mapIterator($data, Transactions::class);
+ }
+}
diff --git a/src/Navcoin/Address/Entity/Address.php b/src/Navcoin/Address/Entity/Address.php
new file mode 100644
index 0000000..2dc5569
--- /dev/null
+++ b/src/Navcoin/Address/Entity/Address.php
@@ -0,0 +1,227 @@
+hash = $hash;
+ $this->received = $received;
+ $this->receivedCount = $receivedCount;
+ $this->sent = $sent;
+ $this->sentCount = $sentCount;
+ $this->staked = $staked;
+ $this->stakedCount = $stakedCount;
+ $this->stakedSent = $stakeSent;
+ $this->balance = $balance;
+ $this->blockIndex = $blockIndex;
+ $this->richListPosition = $richListPosition;
+ }
+
+ /**
+ * Get Hash
+ *
+ * @return string
+ */
+ public function getHash(): string
+ {
+ return $this->hash;
+ }
+
+ /**
+ * Get Received
+ *
+ * @return float
+ */
+ public function getReceived(): float
+ {
+ return $this->received;
+ }
+
+ /**
+ * Get ReceivedCount
+ *
+ * @return int
+ */
+ public function getReceivedCount(): int
+ {
+ return $this->receivedCount;
+ }
+
+ /**
+ * Get Sent
+ *
+ * @return float
+ */
+ public function getSent(): float
+ {
+ return $this->sent;
+ }
+
+ /**
+ * Get SentCount
+ *
+ * @return int
+ */
+ public function getSentCount(): int
+ {
+ return $this->sentCount;
+ }
+
+ /**
+ * Get Staked
+ *
+ * @return float
+ */
+ public function getStaked(): float
+ {
+ return $this->staked;
+ }
+
+ /**
+ * Get StakedCount
+ *
+ * @return int
+ */
+ public function getStakedCount(): int
+ {
+ return $this->stakedCount;
+ }
+
+ /**
+ * Get StakedSent
+ *
+ * @return float
+ */
+ public function getStakedSent(): float
+ {
+ return $this->stakedSent;
+ }
+
+ /**
+ * Get Balance
+ *
+ * @return float
+ */
+ public function getBalance(): float
+ {
+ return $this->balance;
+ }
+
+ /**
+ * Get BlockIndex
+ *
+ * @return int
+ */
+ public function getBlockIndex(): int
+ {
+ return $this->blockIndex;
+ }
+
+ /**
+ * Get RichListPosition
+ *
+ * @return int
+ */
+ public function getRichListPosition(): int
+ {
+ return $this->richListPosition;
+ }
+
+ /**
+ * Get Transactions
+ *
+ * @return int
+ */
+ public function getTransactions(): int
+ {
+ return $this->sentCount + $this->receivedCount + $this->stakedCount;
+ }
+}
diff --git a/src/Navcoin/Address/Entity/Transaction.php b/src/Navcoin/Address/Entity/Transaction.php
new file mode 100644
index 0000000..4f7d731
--- /dev/null
+++ b/src/Navcoin/Address/Entity/Transaction.php
@@ -0,0 +1,194 @@
+id = $id;
+ $this->transaction = $transaction;
+ $date = new \DateTime();
+ $this->time = $date->setTimestamp($time);
+ $this->height = $height;
+ $this->balance = $balance;
+ $this->sent = $sent;
+ $this->received = $received;
+ $this->amount = $amount;
+ $this->type = $type;
+ }
+
+ /**
+ * Get Id
+ *
+ * @return string
+ */
+ public function getId(): String
+ {
+ return $this->id;
+ }
+
+ /**
+ * Get Transaction
+ *
+ * @return string
+ */
+ public function getTransaction(): string
+ {
+ return $this->transaction;
+ }
+
+ /**
+ * Get Time
+ *
+ * @return \DateTime
+ */
+ public function getTime(): \DateTime
+ {
+ return $this->time;
+ }
+
+ /**
+ * Get Height
+ *
+ * @return int
+ */
+ public function getHeight(): int
+ {
+ return $this->height;
+ }
+
+ /**
+ * Get Balance
+ *
+ * @return float
+ */
+ public function getBalance(): float
+ {
+ return $this->balance;
+ }
+
+ /**
+ * Get Amount
+ *
+ * @return float
+ */
+ public function getAmount(): float
+ {
+ return $this->amount;
+ }
+
+ /**
+ * Get Sent
+ *
+ * @return float
+ */
+ public function getSent(): float
+ {
+ return $this->sent;
+ }
+
+ /**
+ * Get Received
+ *
+ * @return float
+ */
+ public function getReceived(): float
+ {
+ return $this->received;
+ }
+
+ /**
+ * Get Staking
+ *
+ * @return bool
+ */
+ public function isStaking(): bool
+ {
+ return $this->type == AddressTransactionType::STAKING;
+ }
+
+ /**
+ * Get Type
+ *
+ * @return String
+ */
+ public function getType(): String
+ {
+ return $this->getType();
+ }
+}
diff --git a/src/Navcoin/Address/Entity/Transactions.php b/src/Navcoin/Address/Entity/Transactions.php
new file mode 100644
index 0000000..2856de2
--- /dev/null
+++ b/src/Navcoin/Address/Entity/Transactions.php
@@ -0,0 +1,19 @@
+supportedTypes = [Transaction::class];
+ }
+}
diff --git a/src/Navcoin/Address/Mapper/AddressMapper.php b/src/Navcoin/Address/Mapper/AddressMapper.php
new file mode 100644
index 0000000..5a6f0a9
--- /dev/null
+++ b/src/Navcoin/Address/Mapper/AddressMapper.php
@@ -0,0 +1,56 @@
+mapEntity($address);
+ }
+
+ return $addresses;
+ }
+
+ /**
+ * Map Address
+ *
+ * @param array $data
+ *
+ * @return Address
+ */
+ public function mapEntity(array $data): Address
+ {
+ return new Address(
+ $data['hash'],
+ $data['received'] / 100000000,
+ $data['receivedCount'],
+ $data['sent'] / 100000000,
+ $data['sentCount'],
+ $data['staked'] / 100000000,
+ $data['stakedCount'],
+ $data['stakedSent'] / 100000000,
+ $data['balance'] / 100000000,
+ $data['blockIndex'],
+ $data['richListPosition']
+ );
+ }
+}
diff --git a/src/Navcoin/Address/Mapper/TransactionMapper.php b/src/Navcoin/Address/Mapper/TransactionMapper.php
new file mode 100644
index 0000000..421bd75
--- /dev/null
+++ b/src/Navcoin/Address/Mapper/TransactionMapper.php
@@ -0,0 +1,37 @@
+class = AddressTransactionType::class;
+ }
+}
diff --git a/src/Navcoin/Block/Api/BlockApi.php b/src/Navcoin/Block/Api/BlockApi.php
new file mode 100644
index 0000000..eb130e1
--- /dev/null
+++ b/src/Navcoin/Block/Api/BlockApi.php
@@ -0,0 +1,83 @@
+getClient()->get('/api/block/'.$height);
+ } catch (ClientException $e) {
+ switch ($e->getResponse()->getStatusCode()) {
+ case Response::HTTP_NOT_FOUND:
+ throw new BlockNotFoundException(sprintf("The `%s` block does not exist.", $height), 0, $e);
+ default:
+ throw $e;
+ }
+ }
+
+ return $this->getMapper()->mapEntity($data);
+ }
+
+ /**
+ * Get best block
+ *
+ * @return Block
+ */
+ public function getBestBlock(): Block
+ {
+ try {
+ $data = $this->getClient()->get('/api/block/best');
+ } catch (ServerRequestException $e) {
+ throw new BlockNotFoundException("Could not find the best block");
+ }
+
+ return $this->getMapper()->mapEntity($data);
+ }
+
+ /**
+ * Get all block transactions
+ *
+ * @param int $size
+ * @param String|null $from
+ * @param String|null $to
+ *
+ * @return IteratorEntityInterface
+ */
+ public function getBlocks(int $size = 50, String $from = null, String $to = null): IteratorEntityInterface
+ {
+ $url = sprintf('/api/block/?page=%d&size=%d',0, $size);
+ $url .= ($from !== null) ? sprintf('&from=%s', $from) : '';
+ $url .= ($to !== null) ? sprintf('&to=%s', $to) : '';
+
+ try {
+ $data = $this->getClient()->get($url);
+ } catch (ServerRequestException $e) {
+ return new Blocks();
+ }
+
+ return $this->getMapper()->mapIterator($data, Blocks::class);
+ }
+}
diff --git a/src/Navcoin/Block/Api/BlockGroupApi.php b/src/Navcoin/Block/Api/BlockGroupApi.php
new file mode 100644
index 0000000..3724450
--- /dev/null
+++ b/src/Navcoin/Block/Api/BlockGroupApi.php
@@ -0,0 +1,35 @@
+getClient()->get(sprintf('/api/group/block/%s/%d', $category, $count));
+ } catch (ServerRequestException $e) {
+ return new BlockGroups();
+ }
+
+ return $this->getMapper()->mapIterator($data, BlockGroups::class);
+ }
+}
diff --git a/src/Navcoin/Block/Api/TransactionApi.php b/src/Navcoin/Block/Api/TransactionApi.php
new file mode 100644
index 0000000..7baa453
--- /dev/null
+++ b/src/Navcoin/Block/Api/TransactionApi.php
@@ -0,0 +1,81 @@
+getClient()->get('/api/tx/'.$hash);
+ } catch (ServerRequestException $e) {
+ throw new TransactionNotFoundException(sprintf("The transaction %s does not exist.", $hash), 0, $e);
+ }
+
+ return $this->getMapper()->mapEntity($data);
+ }
+
+ /**
+ * Get all block transactions
+ *
+ * @param int $size
+ * @param String|null $from
+ * @param String|null $to
+ *
+ * @return IteratorEntityInterface
+ */
+ public function getTransactions(int $size = 50, String $from = null, String $to = null): IteratorEntityInterface
+ {
+ $url = sprintf('/api/tx/?page=%d&size=%d',0, $size);
+ $url .= ($from !== null) ? sprintf('&from=%s', $from) : '';
+ $url .= ($to !== null) ? sprintf('&to=%s', $to) : '';
+
+ try {
+ $data = $this->getClient()->get($url);
+ } catch (ServerRequestException $e) {
+ return new Transactions();
+ }
+
+ return $this->getMapper()->mapIterator($data, Transactions::class);
+ }
+
+ /**
+ * Get transactions for block
+ *
+ * @param String $height
+ *
+ * @return IteratorEntityInterface
+ */
+ public function getTransactionsForBlock(String $height): IteratorEntityInterface
+ {
+ try {
+ $data = $this->getClient()->get('/api/block/'.$height.'/tx');
+ } catch (ServerRequestException $e) {
+ throw new BlockNotFoundException(sprintf("The block at height %s does not exist.", $height), 0, $e);
+ }
+
+ return $this->getMapper()->mapIterator($data, Transactions::class);
+ }
+}
diff --git a/src/Navcoin/Block/Entity/Block.php b/src/Navcoin/Block/Entity/Block.php
new file mode 100644
index 0000000..6b1ae55
--- /dev/null
+++ b/src/Navcoin/Block/Entity/Block.php
@@ -0,0 +1,370 @@
+id = $id;
+ $this->hash = $hash;
+ $this->merkleRoot = $merkleRoot;
+ $this->bits = $bits;
+ $this->size = $size;
+ $this->version = $version;
+ $this->nonce = $nonce;
+ $this->height = $height;
+ $this->difficulty = $difficulty;
+ $this->confirmations = $confirmations;
+ $this->created = $created;
+ $this->stake = $stake;
+ $this->fees = $fees;
+ $this->spend = $spend;
+ $this->stakedBy = $stakedBy;
+ $this->transactions = $transactions;
+ $this->best = $best;
+ $this->signals = $signals;
+ $this->blockCycle = $blockCycle;
+ }
+
+ /**
+ * Get Id
+ *
+ * @return string
+ */
+ public function getId(): string
+ {
+ return $this->id;
+ }
+
+ /**
+ * Get Hash
+ *
+ * @return string
+ */
+ public function getHash(): string
+ {
+ return $this->hash;
+ }
+
+ /**
+ * Get MerkleRoot
+ *
+ * @return string
+ */
+ public function getMerkleRoot(): string
+ {
+ return $this->merkleRoot;
+ }
+
+ /**
+ * Get Bits
+ *
+ * @return string
+ */
+ public function getBits(): string
+ {
+ return $this->bits;
+ }
+
+ /**
+ * Get Size
+ *
+ * @return int
+ */
+ public function getSize(): int
+ {
+ return $this->size;
+ }
+
+ /**
+ * Get Version
+ *
+ * @return int
+ */
+ public function getVersion(): int
+ {
+ return $this->version;
+ }
+
+ /**
+ * Get Nonce
+ *
+ * @return int
+ */
+ public function getNonce(): int
+ {
+ return $this->nonce;
+ }
+
+ /**
+ * Get Height
+ *
+ * @return int
+ */
+ public function getHeight(): int
+ {
+ return $this->height;
+ }
+
+ /**
+ * Get Difficulty
+ *
+ * @return float
+ */
+ public function getDifficulty(): float
+ {
+ return $this->difficulty;
+ }
+
+ /**
+ * Get Confirmations
+ *
+ * @return int
+ */
+ public function getConfirmations(): int
+ {
+ return $this->confirmations;
+ }
+
+ /**
+ * Get Created
+ *
+ * @return \DateTime
+ */
+ public function getCreated(): \DateTime
+ {
+ return $this->created;
+ }
+
+ /**
+ * Get Age
+ *
+ * @return string
+ */
+ public function getAge(): string
+ {
+ return $this->created->diff(new \DateTime())->format("%d days, %h hours and %i minuts");
+ }
+
+ /**
+ * Get Stake
+ *
+ * @return float
+ */
+ public function getStake(): float
+ {
+ return $this->stake;
+ }
+
+ /**
+ * Get Fees
+ *
+ * @return float
+ */
+ public function getFees()
+ {
+ return $this->fees;
+ }
+
+ /**
+ * Get Spend
+ *
+ * @return float
+ */
+ public function getSpend()
+ {
+ return $this->spend;
+ }
+
+ /**
+ * Get StakedBy
+ *
+ * @return string
+ */
+ public function getStakedBy(): string
+ {
+ return $this->stakedBy;
+ }
+
+ /**
+ * Get Transactions
+ *
+ * @return int
+ */
+ public function getTransactions(): int
+ {
+ return $this->transactions;
+ }
+
+ /**
+ * Get Best
+ *
+ * @return bool
+ */
+ public function isBest(): bool
+ {
+ return $this->best;
+ }
+
+ /**
+ * Get Signals
+ *
+ * @return BlockSignals
+ */
+ public function getSignals()
+ {
+ return $this->signals;
+ }
+
+ /**
+ * Get BlockCycle
+ *
+ * @return int
+ */
+ public function getBlockCycle()
+ {
+ return $this->blockCycle;
+ }
+}
diff --git a/src/Navcoin/Block/Entity/BlockGroup.php b/src/Navcoin/Block/Entity/BlockGroup.php
new file mode 100644
index 0000000..302ad15
--- /dev/null
+++ b/src/Navcoin/Block/Entity/BlockGroup.php
@@ -0,0 +1,206 @@
+type = $type;
+ $this->start = $start;
+ $this->end = $end;
+ $this->secondsInPeriod = $secondsInPeriod;
+ $this->blocks = $blocks;
+ $this->transactions = $transactions;
+ $this->stake = $stake;
+ $this->fees = $fees;
+ $this->spend = $spend;
+ $this->height = $height;
+ }
+
+ /**
+ * Get Type
+ *
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+
+ /**
+ * Get Start
+ *
+ * @return \DateTime
+ */
+ public function getStart(): \DateTime
+ {
+ return $this->start;
+ }
+
+ /**
+ * Get End
+ *
+ * @return \DateTime
+ */
+ public function getEnd(): \DateTime
+ {
+ return $this->end;
+ }
+
+ /**
+ * Get SecondsInPeriod
+ *
+ * @return int
+ */
+ public function getSecondsInPeriod(): int
+ {
+ return $this->secondsInPeriod;
+ }
+
+ /**
+ * Get Blocks
+ *
+ * @return int
+ */
+ public function getBlocks(): int
+ {
+ return $this->blocks;
+ }
+
+ /**
+ * Get Transactions
+ *
+ * @return int
+ */
+ public function getTransactions(): int
+ {
+ return $this->transactions;
+ }
+
+ /**
+ * Get Stake
+ *
+ * @return float
+ */
+ public function getStake(): float
+ {
+ return $this->stake;
+ }
+
+ /**
+ * Get Fees
+ *
+ * @return float
+ */
+ public function getFees(): float
+ {
+ return $this->fees;
+ }
+
+ /**
+ * Get Spend
+ *
+ * @return float
+ */
+ public function getSpend(): float
+ {
+ return $this->spend;
+ }
+
+ /**
+ * Get Height
+ *
+ * @return int
+ */
+ public function getHeight(): int
+ {
+ return $this->height;
+ }
+
+ /**
+ * @return int
+ */
+ public function getInterval(): int
+ {
+ return $this->getSecondsInPeriod() / $this->getTransactions();
+ }
+}
diff --git a/src/Navcoin/Block/Entity/BlockGroups.php b/src/Navcoin/Block/Entity/BlockGroups.php
new file mode 100644
index 0000000..5074c08
--- /dev/null
+++ b/src/Navcoin/Block/Entity/BlockGroups.php
@@ -0,0 +1,19 @@
+supportedTypes = [BlockGroup::class];
+ }
+}
diff --git a/src/Navcoin/Block/Entity/BlockSignal.php b/src/Navcoin/Block/Entity/BlockSignal.php
new file mode 100644
index 0000000..8e50164
--- /dev/null
+++ b/src/Navcoin/Block/Entity/BlockSignal.php
@@ -0,0 +1,68 @@
+name = $name;
+ $this->signalling = $signalling;
+ }
+
+ /**
+ * Get Name
+ *
+ * @return String
+ */
+ public function getName(): String
+ {
+ return $this->name;
+ }
+
+ /**
+ * Get Description
+ *
+ * @return String
+ */
+ public function getDescription(): String
+ {
+ return $this->description;
+ }
+
+ /**
+ * Get Signalling
+ *
+ * @return bool
+ */
+ public function isSignalling(): bool
+ {
+ return $this->signalling;
+ }
+}
diff --git a/src/Navcoin/Block/Entity/BlockSignals.php b/src/Navcoin/Block/Entity/BlockSignals.php
new file mode 100644
index 0000000..5152b56
--- /dev/null
+++ b/src/Navcoin/Block/Entity/BlockSignals.php
@@ -0,0 +1,19 @@
+supportedTypes = [BlockSignal::class];
+ }
+}
diff --git a/src/Navcoin/Block/Entity/Blocks.php b/src/Navcoin/Block/Entity/Blocks.php
new file mode 100644
index 0000000..0a0c297
--- /dev/null
+++ b/src/Navcoin/Block/Entity/Blocks.php
@@ -0,0 +1,19 @@
+supportedTypes = [Block::class];
+ }
+}
diff --git a/src/Navcoin/Block/Entity/Input.php b/src/Navcoin/Block/Entity/Input.php
new file mode 100644
index 0000000..73c0c4a
--- /dev/null
+++ b/src/Navcoin/Block/Entity/Input.php
@@ -0,0 +1,103 @@
+address = $address;
+ $this->amount = $amount;
+ $this->index = $index;
+ $this->previousOutput = $previousOutput;
+ $this->previousOutputBlock = $previousOutputBlock;
+ }
+
+ /**
+ * Get Address
+ *
+ * @return string
+ */
+ public function getAddress(): string
+ {
+ return $this->address ?: '';
+ }
+
+ /**
+ * Get Amount
+ *
+ * @return float
+ */
+ public function getAmount(): float
+ {
+ return $this->amount;
+ }
+
+ /**
+ * Get Index
+ *
+ * @return int
+ */
+ public function getIndex(): ?int
+ {
+ return $this->index;
+ }
+
+ /**
+ * Get PreviousOutput
+ *
+ * @return string
+ */
+ public function getPreviousOutput(): ?string
+ {
+ return $this->previousOutput;
+ }
+
+ /**
+ * Get PreviousOutputBlock
+ *
+ * @return int
+ */
+ public function getPreviousOutputBlock()
+ {
+ return $this->previousOutputBlock;
+ }
+}
diff --git a/src/Navcoin/Block/Entity/Inputs.php b/src/Navcoin/Block/Entity/Inputs.php
new file mode 100644
index 0000000..e3ac96e
--- /dev/null
+++ b/src/Navcoin/Block/Entity/Inputs.php
@@ -0,0 +1,45 @@
+supportedTypes = [Input::class];
+ }
+
+ /**
+ * Get Value
+ *
+ * @return float
+ */
+ public function getValue() {
+ return array_reduce($this->getElements(), function($value, $input) {
+ /** @var Input $input */
+ return $value += $input->getAmount();
+ }, 0);
+ }
+
+ /**
+ * Get Balance For Address
+ *
+ * @param string $address
+ *
+ * @return float
+ */
+ public function getBalanceForAddress($address) {
+ return array_reduce($this->getElements(), function($value, $input) use ($address) {
+ /** @var Input $input */
+ return $value -= ($input->getAddress() === $address) ? $input->getAmount() : 0;
+ }, 0);
+ }
+}
diff --git a/src/Navcoin/Block/Entity/Output.php b/src/Navcoin/Block/Entity/Output.php
new file mode 100644
index 0000000..820412b
--- /dev/null
+++ b/src/Navcoin/Block/Entity/Output.php
@@ -0,0 +1,104 @@
+index = $index;
+ $this->amount = $amount;
+ $this->address = $address;
+ $this->redeemedInTransaction = $redeemedInTransaction;
+ $this->redeemedInBlock = $redeemedInBlock;
+ }
+
+ /**
+ * Get Index
+ *
+ * @return int
+ */
+ public function getIndex()
+ {
+ return $this->index;
+ }
+
+ /**
+ * Get Amount
+ *
+ * @return float
+ */
+ public function getAmount()
+ {
+ return $this->amount;
+ }
+
+ /**
+ * Get Address
+ *
+ * @return string
+ */
+ public function getAddress()
+ {
+ return $this->address;
+ }
+
+ /**
+ * Get RedeemedInTransaction
+ *
+ * @return string
+ */
+ public function getRedeemedInTransaction()
+ {
+ return $this->redeemedInTransaction;
+ }
+
+ /**
+ * Get RedeemedInBlock
+ *
+ * @return int
+ */
+ public function getRedeemedInBlock()
+ {
+ return $this->redeemedInBlock;
+ }
+}
diff --git a/src/Navcoin/Block/Entity/Outputs.php b/src/Navcoin/Block/Entity/Outputs.php
new file mode 100644
index 0000000..845dfcf
--- /dev/null
+++ b/src/Navcoin/Block/Entity/Outputs.php
@@ -0,0 +1,45 @@
+supportedTypes = [Output::class];
+ }
+
+ /**
+ * Get Value
+ *
+ * @return float
+ */
+ public function getValue() {
+ return array_reduce($this->getElements(), function($value, $output) {
+ /** @var Output $output */
+ return $value += $output->getAmount();
+ }, 0);
+ }
+
+ /**
+ * Get Balance For Address
+ *
+ * @param string $address
+ *
+ * @return float
+ */
+ public function getBalanceForAddress($address) {
+ return array_reduce($this->getElements(), function($value, $output) use ($address) {
+ /** @var Output $output */
+ return $value += ($output->getAddress() === $address) ? $output->getAmount() : 0;
+ }, 0);
+ }
+}
diff --git a/src/Navcoin/Block/Entity/Transaction.php b/src/Navcoin/Block/Entity/Transaction.php
new file mode 100644
index 0000000..9510cb9
--- /dev/null
+++ b/src/Navcoin/Block/Entity/Transaction.php
@@ -0,0 +1,238 @@
+id = $id;
+ $this->hash = $hash;
+ $this->height = $height;
+ $this->time = $time;
+ $this->stake = $stake;
+ $this->fees = $fees;
+ $this->inputs = $inputs;
+ $this->outputs = $outputs;
+ }
+
+ /**
+ * Get Id
+ *
+ * @return string
+ */
+ public function getId(): string
+ {
+ return $this->id;
+ }
+
+ /**
+ * Get Hash
+ *
+ * @return string
+ */
+ public function getHash(): string
+ {
+ return $this->hash;
+ }
+
+ /**
+ * Get Height
+ *
+ * @return int
+ */
+ public function getHeight(): int
+ {
+ return $this->height;
+ }
+
+ /**
+ * Get Time
+ *
+ * @return \DateTime
+ */
+ public function getTime(): \DateTime
+ {
+ return $this->time;
+ }
+
+ /**
+ * Get Stake
+ *
+ * @return float
+ */
+ public function getStake(): float
+ {
+ return $this->stake;
+ }
+
+ /**
+ * Is Staking?
+ *
+ * @return bool
+ */
+ public function isStaking(): bool
+ {
+ return $this->stake ? true : false;
+ }
+
+ /**
+ * Get Fees
+ *
+ * @return float
+ */
+ public function getFees(): float
+ {
+ return $this->fees;
+ }
+
+ /**
+ * Has Fees?
+ *
+ * @return bool
+ */
+ public function hasFees(): bool
+ {
+ return $this->fees ? true : false;
+ }
+
+ /**
+ * Get Inputs
+ *
+ * @return Inputs
+ */
+ public function getInputs(): Inputs
+ {
+ return $this->inputs;
+ }
+
+ /**
+ * Get Inputs
+ *
+ * @return Input[]
+ */
+ public function getInputElements(): array
+ {
+ return $this->inputs->getElements();
+ }
+
+ /**
+ * Get Outputs
+ *
+ * @return Outputs
+ */
+ public function getOutputs(): Outputs
+ {
+ return $this->outputs;
+ }
+
+ /**
+ * Get Type
+ *
+ * @return string
+ */
+ public function getType(): string
+ {
+ return $this->type;
+ }
+
+ /**
+ * Get Outputs
+ *
+ * @return Output[]
+ */
+ public function getOutputElements(): array
+ {
+ return $this->outputs->getElements();
+ }
+
+ /**
+ * Get Spend for address
+ *
+ * @param String $address
+ *
+ * @return float
+ */
+ public function getSpendForAddress(String $address): float
+ {
+ return (float) $this->outputs->getBalanceForAddress($address) + $this->inputs->getBalanceForAddress($address);
+ }
+}
diff --git a/src/Navcoin/Block/Entity/Transactions.php b/src/Navcoin/Block/Entity/Transactions.php
new file mode 100644
index 0000000..412df14
--- /dev/null
+++ b/src/Navcoin/Block/Entity/Transactions.php
@@ -0,0 +1,19 @@
+supportedTypes = [Transaction::class];
+ }
+}
diff --git a/src/Navcoin/Block/Mapper/BlockGroupMapper.php b/src/Navcoin/Block/Mapper/BlockGroupMapper.php
new file mode 100644
index 0000000..5febe13
--- /dev/null
+++ b/src/Navcoin/Block/Mapper/BlockGroupMapper.php
@@ -0,0 +1,35 @@
+setTimestamp($data['group']['start']/1000),
+ (new \DateTime())->setTimestamp($data['group']['end']/1000),
+ $data['group']['secondsInPeriod'],
+ $data['blocks'],
+ $data['transactions'],
+ $data['stake'] / 100000000,
+ $data['fees'] / 100000000,
+ $data['spend'] / 100000000,
+ $data['height']
+ );
+ }
+}
diff --git a/src/Navcoin/Block/Mapper/BlockMapper.php b/src/Navcoin/Block/Mapper/BlockMapper.php
new file mode 100644
index 0000000..48b1d2a
--- /dev/null
+++ b/src/Navcoin/Block/Mapper/BlockMapper.php
@@ -0,0 +1,71 @@
+setTimestamp($data['created']/1000),
+ $data['stake'] / 100000000,
+ $data['fees'] / 100000000,
+ $data['spend'] / 100000000,
+ $data['stakedBy'] ?: '',
+ $data['transactions'],
+ $data['best'],
+ $this->mapSignals(array_key_exists('signals', $data) ? $data['signals'] : []),
+ $data['blockCycle']
+ );
+ }
+
+ /**
+ * Map Inputs
+ *
+ * @param array $data
+ *
+ * @return BlockSignals
+ */
+ private function mapSignals(array $data): BlockSignals
+ {
+ $signals = new BlockSignals();
+
+ foreach ($data as $signalData) {
+ $signals->add(
+ new BlockSignal(
+ $signalData['name'],
+ $signalData['signalling']
+ )
+ );
+ }
+
+ return $signals;
+ }
+}
diff --git a/src/Navcoin/Block/Mapper/TransactionMapper.php b/src/Navcoin/Block/Mapper/TransactionMapper.php
new file mode 100644
index 0000000..5368363
--- /dev/null
+++ b/src/Navcoin/Block/Mapper/TransactionMapper.php
@@ -0,0 +1,92 @@
+setTimestamp($data['time']/1000),
+ $data['stake'] / 100000000,
+ $data['fees'] / 100000000,
+ $this->mapInputs($data['inputs']),
+ $this->mapOutputs($data['outputs']),
+ $data['type']
+ );
+ }
+
+ /**
+ * Map Inputs
+ *
+ * @param array $data
+ *
+ * @return Inputs
+ */
+ private function mapInputs(array $data): Inputs
+ {
+ $inputs = new Inputs();
+
+ foreach ($data as $inputData) {
+ $inputs->add(
+ new Input(
+ $inputData['address'],
+ $inputData['amount'] / 100000000,
+ $inputData['index'],
+ $inputData['previousOutput'],
+ $inputData['previousOutputBlock']
+ )
+ );
+ }
+
+ return $inputs;
+ }
+
+ /**
+ * Map Outputs
+ *
+ * @param array $data
+ *
+ * @return Outputs
+ */
+ private function mapOutputs(array $data): Outputs
+ {
+ $outputs = new Outputs();
+
+ foreach ($data as $outputData) {
+ $outputs->add(
+ new Output(
+ $outputData['index'],
+ $outputData['amount'] / 100000000,
+ array_key_exists('address', $outputData) ? $outputData['address'] : '',
+ $outputData['redeemedIn']['hash'],
+ $outputData['redeemedIn']['height']
+ )
+ );
+ }
+
+ return $outputs;
+ }
+}
diff --git a/src/Navcoin/Block/Serializer/TransactionNormalizer.php b/src/Navcoin/Block/Serializer/TransactionNormalizer.php
new file mode 100644
index 0000000..ca0c982
--- /dev/null
+++ b/src/Navcoin/Block/Serializer/TransactionNormalizer.php
@@ -0,0 +1,35 @@
+mainNet = $mainNet;
+ $this->testNet = $testNet;
+ $this->session = $session;
+
+ $this->activeClient = $mainNet;
+ }
+
+ /**
+ * Get client
+ *
+ * @return MainNetClient|NavcoinClient
+ */
+ public function getClient()
+ {
+ switch ($this->session->get('network')) {
+ case Network::MAIN_NET:
+ return $this->mainNet;
+ case Network::TEST_NET;
+ return $this->testNet;
+ default:
+ return $this->activeClient;
+ }
+ }
+
+ /**
+ * Use network
+ *
+ * @param String $network
+ *
+ * @return $this
+ */
+ public function useNetwork(String $network)
+ {
+ $this->activeClient = ($network === Network::TEST_NET) ? $this->testNet : $this->mainNet;
+
+ return $this;
+ }
+}
diff --git a/src/Navcoin/Client/MainNetClient.php b/src/Navcoin/Client/MainNetClient.php
new file mode 100644
index 0000000..69a61ba
--- /dev/null
+++ b/src/Navcoin/Client/MainNetClient.php
@@ -0,0 +1,13 @@
+client = $client ?: new Client([
+ 'base_uri' => $baseUri,
+ ]);
+ }
+
+ /**
+ * Get
+ *
+ * @param string $uri
+ *
+ * @return array
+ */
+ public function get(string $uri): array
+ {
+ $response = $this->client->request('GET', $uri, [
+ 'headers' => [
+ 'Accept' => 'application/json',
+ 'Content-Type' => 'application/json',
+ ]
+ ]);
+
+ return \GuzzleHttp\json_decode($response->getBody()->getContents(), true);
+ }
+}
diff --git a/src/Navcoin/Client/TestNetClient.php b/src/Navcoin/Client/TestNetClient.php
new file mode 100644
index 0000000..bd28c65
--- /dev/null
+++ b/src/Navcoin/Client/TestNetClient.php
@@ -0,0 +1,13 @@
+setClass();
+ $this->getFilters();
+ }
+
+ /**
+ * Sets the class used for filtering
+ */
+ public abstract function setClass();
+
+ /**
+ * Get Filters
+ *
+ * @return array
+ */
+ public function getFilters(): array
+ {
+ if (is_null($this->filters)) {
+ $class = new \ReflectionClass($this->class);
+ $this->filters = array_values($class->getConstants());
+ }
+
+ return $this->filters;
+ }
+
+ /**
+ * Create filter query
+ *
+ * @param array $filters
+ *
+ * @return string
+ */
+ public function createFilterQuery(array $filters): string
+ {
+ if (empty($filters) || $filters === $this->getFilters()) {
+ return '';
+ }
+
+ return 'filters=' . implode(',', array_intersect($filters, $this->getFilters()));
+ }
+}
diff --git a/src/Navcoin/Common/Entity/IteratorEntity.php b/src/Navcoin/Common/Entity/IteratorEntity.php
new file mode 100644
index 0000000..834b084
--- /dev/null
+++ b/src/Navcoin/Common/Entity/IteratorEntity.php
@@ -0,0 +1,63 @@
+setSupportedTypes();
+ }
+
+ abstract function setSupportedTypes();
+
+ /**
+ * Add
+ *
+ * @param mixed $element
+ *
+ * @return self
+ */
+ public function add($element): self
+ {
+ if (!in_array(get_class($element), $this->supportedTypes)) {
+ throw new \InvalidArgumentException(
+ sprintf('Cannot add a %s to %s', get_class($element), __CLASS__)
+ );
+ }
+
+ array_push($this->elements, $element);
+
+ return $this;
+ }
+
+ public function getElements(): array
+ {
+ return $this->elements;
+ }
+
+ public function setElements(array $elements): self
+ {
+ $this->elements = $elements;
+
+ return $this;
+ }
+
+ public function getIterator(): \ArrayIterator
+ {
+ return new \ArrayIterator($this->elements);
+ }
+}
diff --git a/src/Navcoin/Common/Entity/IteratorEntityInterface.php b/src/Navcoin/Common/Entity/IteratorEntityInterface.php
new file mode 100644
index 0000000..c49edd9
--- /dev/null
+++ b/src/Navcoin/Common/Entity/IteratorEntityInterface.php
@@ -0,0 +1,13 @@
+elements->add($element);
+
+ return $this;
+ }
+
+ /**
+ * Get Iterator
+ *
+ * @return \ArrayIterator
+ */
+ public function getIterator(): \ArrayIterator
+ {
+ return $this->elements->getIterator();
+ }
+
+ /**
+ * Get Last
+ *
+ * @return bool
+ */
+ public function isLast(): bool
+ {
+ return $this->last;
+ }
+
+ /**
+ * Set Last
+ *
+ * @param bool $last
+ *
+ * @return $this
+ */
+ public function setLast(bool $last): self
+ {
+ $this->last = $last;
+
+ return $this;
+ }
+
+ /**
+ * Get TotalPages
+ *
+ * @return int
+ */
+ public function getTotalPages(): int
+ {
+ return $this->totalPages;
+ }
+
+ /**
+ * Set TotalPages
+ *
+ * @param int $totalPages
+ *
+ * @return $this
+ */
+ public function setTotalPages(int $totalPages): self
+ {
+ $this->totalPages = $totalPages;
+
+ return $this;
+ }
+
+ /**
+ * Get TotalElements
+ *
+ * @return int
+ */
+ public function getTotalElements(): int
+ {
+ return $this->totalElements;
+ }
+
+ /**
+ * Set TotalElements
+ *
+ * @param int $totalElements
+ *
+ * @return $this
+ */
+ public function setTotalElements(int $totalElements): self
+ {
+ $this->totalElements = $totalElements;
+
+ return $this;
+ }
+
+ /**
+ * Get First
+ *
+ * @return bool
+ */
+ public function isFirst(): bool
+ {
+ return $this->first;
+ }
+
+ /**
+ * Set First
+ *
+ * @param bool $first
+ *
+ * @return $this
+ */
+ public function setFirst(bool $first): self
+ {
+ $this->first = $first;
+
+ return $this;
+ }
+
+ /**
+ * Get NumberOfElements
+ *
+ * @return int
+ */
+ public function getNumberOfElements(): int
+ {
+ return $this->numberOfElements;
+ }
+
+ /**
+ * Set NumberOfElements
+ *
+ * @param int $numberOfElements
+ *
+ * @return $this
+ */
+ public function setNumberOfElements(int $numberOfElements): self
+ {
+ $this->numberOfElements = $numberOfElements;
+
+ return $this;
+ }
+
+ /**
+ * Get Size
+ *
+ * @return int
+ */
+ public function getSize(): int
+ {
+ return $this->size;
+ }
+
+ /**
+ * Set Size
+ *
+ * @param int $size
+ *
+ * @return $this
+ */
+ public function setSize(int $size): self
+ {
+ $this->size = $size;
+
+ return $this;
+ }
+
+ /**
+ * Get Number
+ *
+ * @return int
+ */
+ public function getNumber(): int
+ {
+ return $this->number;
+ }
+
+ /**
+ * Set Number
+ *
+ * @param int $number
+ *
+ * @return $this
+ */
+ public function setNumber(int $number): self
+ {
+ $this->number = $number;
+
+ return $this;
+ }
+
+ /**
+ * Get Elements
+ *
+ * @return IteratorEntity
+ */
+ public function getElements()
+ {
+ return $this->elements->getElements();
+ }
+
+ /**
+ * Set Elements
+ *
+ * @param IteratorEntity $elements
+ *
+ * @return $this
+ */
+ public function setElements(IteratorEntity $elements): self
+ {
+ $this->elements = $elements;
+
+ return $this;
+ }
+}
diff --git a/src/Navcoin/Common/Mapper/BaseMapper.php b/src/Navcoin/Common/Mapper/BaseMapper.php
new file mode 100644
index 0000000..c899eda
--- /dev/null
+++ b/src/Navcoin/Common/Mapper/BaseMapper.php
@@ -0,0 +1,89 @@
+isPaginated($data) ? $this->createPaginator($data, $class) : new $class;
+
+ foreach ($this->getElements($data) as $entity) {
+ $container->add($this->mapEntity($entity));
+ }
+
+ return $container;
+ }
+
+ /**
+ * Create Paginator
+ *
+ * @param array $data
+ * @param string $class
+ *
+ * @return Paginator
+ */
+ protected function createPaginator(array $data, string $class): Paginator
+ {
+ return (new Paginator())
+ ->setLast($data['last'])
+ ->setTotalPages($data['totalPages'])
+ ->setTotalElements($data['totalElements'])
+ ->setFirst($data['first'])
+ ->setNumberOfElements($data['numberOfElements'])
+ ->setSize($data['size'])
+ ->setNumber($data['number'])
+ ->setElements(new $class);
+ }
+
+ /**
+ * Get Elements
+ *
+ * @param array $data
+ *
+ * @return array
+ */
+ protected function getElements(array $data): array
+ {
+ if ($this->isPaginated($data)) {
+ return $data['content'];
+ }
+
+ return $data;
+ }
+
+ /**
+ * Is Paginated
+ *
+ * @param array $data
+ *
+ * @return bool
+ */
+ protected function isPaginated(array $data): bool
+ {
+ return array_key_exists('content', $data);
+ }
+}
diff --git a/src/Navcoin/Common/Mapper/MapperInterface.php b/src/Navcoin/Common/Mapper/MapperInterface.php
new file mode 100644
index 0000000..53001ad
--- /dev/null
+++ b/src/Navcoin/Common/Mapper/MapperInterface.php
@@ -0,0 +1,14 @@
+clientManager = $clientManager;
+
+ if ($mapper !== null) {
+ $this->mapper = $mapper;
+ }
+ }
+
+ /**
+ * Get Client
+ *
+ * @return NavcoinClient
+ */
+ public function getClient()
+ {
+ return $this->clientManager->getClient();
+ }
+
+ /**
+ * Get Mapper
+ *
+ * @return MapperInterface
+ */
+ public function getMapper()
+ {
+ return $this->mapper;
+ }
+
+
+ /**
+ * Set Network
+ *
+ * @param String $network
+ *
+ * @return $this
+ */
+ public function useNetwork(String $network)
+ {
+ switch ($network) {
+ case Network::TEST_NET:
+ $this->client = $this->clientManager->useNetwork($network);
+ break;
+ default:
+ $this->client = $this->clientManager->useNetwork(Network::MAIN_NET);
+ }
+
+ return $this;
+ }
+}
diff --git a/src/Navcoin/Common/Network.php b/src/Navcoin/Common/Network.php
new file mode 100644
index 0000000..a8c84f4
--- /dev/null
+++ b/src/Navcoin/Common/Network.php
@@ -0,0 +1,14 @@
+getClient()->get('/api/distribution/balance?groups='.$groups);
+ } catch (ServerRequestException $e) {
+ throw new DistributionException(sprintf("The distribution cannot be created."), 500, $e);
+ }
+
+ return $this->getMapper()->mapIterator($data);
+ }
+}
diff --git a/src/Navcoin/Distribution/Entity/Distribution.php b/src/Navcoin/Distribution/Entity/Distribution.php
new file mode 100644
index 0000000..927986e
--- /dev/null
+++ b/src/Navcoin/Distribution/Entity/Distribution.php
@@ -0,0 +1,40 @@
+segments, $segment);
+
+ return $this;
+ }
+
+ /**
+ * Get Iterator
+ *
+ * @return \ArrayIterator
+ */
+ public function getIterator(): \ArrayIterator
+ {
+ return new \ArrayIterator($this->segments);
+ }
+}
diff --git a/src/Navcoin/Distribution/Entity/DistributionSegment.php b/src/Navcoin/Distribution/Entity/DistributionSegment.php
new file mode 100644
index 0000000..be0db0c
--- /dev/null
+++ b/src/Navcoin/Distribution/Entity/DistributionSegment.php
@@ -0,0 +1,87 @@
+position = $position;
+ $this->total = $total;
+ $this->value = $value;
+ $this->percentage = $percentage;
+ }
+
+ /**
+ * Get Position
+ *
+ * @return int
+ */
+ public function getPosition(): int
+ {
+ return $this->position;
+ }
+
+ /**
+ * Get Total
+ *
+ * @return float
+ */
+ public function getTotal(): float
+ {
+ return $this->total;
+ }
+
+ /**
+ * Get Value
+ *
+ * @return float
+ */
+ public function getValue(): float
+ {
+ return $this->value;
+ }
+
+ /**
+ * Get Percentage
+ *
+ * @return int
+ */
+ public function getPercentage(): int
+ {
+ return $this->percentage;
+ }
+}
diff --git a/src/Navcoin/Distribution/Mapper/DistributionMapper.php b/src/Navcoin/Distribution/Mapper/DistributionMapper.php
new file mode 100644
index 0000000..2d04247
--- /dev/null
+++ b/src/Navcoin/Distribution/Mapper/DistributionMapper.php
@@ -0,0 +1,51 @@
+add($this->mapEntity($segment));
+ }
+
+ return $distribution;
+ }
+
+ /**
+ * Map Segment
+ *
+ * @param array $data
+ *
+ * @return DistributionSegment
+ */
+ public function mapEntity(array $data): DistributionSegment
+ {
+ return new DistributionSegment(
+ $data['position'],
+ $data['total'] / 100000000,
+ $data['value'] / 100000000,
+ round($data['percentage'], 2)
+ );
+ }
+}
diff --git a/src/Navcoin/Search/Api/SearchApi.php b/src/Navcoin/Search/Api/SearchApi.php
new file mode 100644
index 0000000..d298dbe
--- /dev/null
+++ b/src/Navcoin/Search/Api/SearchApi.php
@@ -0,0 +1,32 @@
+getClient()->get('/api/search/'.$hash);
+ } catch (\Exception $e) {
+ throw new SearchResultMissException("No results for hash: ".$hash);
+ }
+
+ return new SearchResult($data['type'], $data['value']);
+ }
+}
diff --git a/src/Navcoin/Search/Entity/SearchResult.php b/src/Navcoin/Search/Entity/SearchResult.php
new file mode 100644
index 0000000..af19175
--- /dev/null
+++ b/src/Navcoin/Search/Entity/SearchResult.php
@@ -0,0 +1,53 @@
+type = $type;
+ $this->value = $value;
+ }
+
+ /**
+ * Get Type
+ *
+ * @return String
+ */
+ public function getType(): String
+ {
+ return $this->type;
+ }
+
+ /**
+ * Get Value
+ *
+ * @return String
+ */
+ public function getValue(): String
+ {
+ return $this->value;
+ }
+}
diff --git a/src/Navcoin/Search/Exception/SearchResultMissException.php b/src/Navcoin/Search/Exception/SearchResultMissException.php
new file mode 100644
index 0000000..71c215c
--- /dev/null
+++ b/src/Navcoin/Search/Exception/SearchResultMissException.php
@@ -0,0 +1,13 @@
+getClient()->get('/api/soft-fork');
+ } catch (ServerRequestException $e) {
+ return new SoftForks();
+ }
+
+ return $this->getMapper()->mapIterator($data, SoftForks::class);
+ }
+}
\ No newline at end of file
diff --git a/src/Navcoin/SoftFork/Entity/SoftFork.php b/src/Navcoin/SoftFork/Entity/SoftFork.php
new file mode 100644
index 0000000..0886430
--- /dev/null
+++ b/src/Navcoin/SoftFork/Entity/SoftFork.php
@@ -0,0 +1,115 @@
+name = $name;
+ $this->state = $state;
+ $this->blocksInCycle = $blocksInCycle;
+ $this->blockRequired = $blockRequired;
+ $this->blocksSignalling = $blocksSignalling;
+ $this->blocksRemaining = $blocksRemaining;
+ $this->lockedInHeight = $lockedInHeight;
+ $this->activationHeight = $activationHeight;
+ }
+
+ public function getName(): string
+ {
+ return $this->name;
+ }
+
+ public function getState(): string
+ {
+ return $this->state;
+ }
+
+ public function getBlocksInCycle(): int
+ {
+ return $this->blocksInCycle;
+ }
+
+ public function getBlockRequired()
+ {
+ return $this->blockRequired;
+ }
+
+ public function getBlocksSignalling(): int
+ {
+ return $this->blocksSignalling;
+ }
+
+ public function getBlocksRemaining(): int
+ {
+ return $this->blocksRemaining;
+ }
+
+ public function getLockedInHeight(): int
+ {
+ return $this->lockedInHeight;
+ }
+
+ public function getActivationHeight(): int
+ {
+ return $this->activationHeight;
+ }
+
+ public function getPercentComplete(): int
+ {
+ if ($this->blocksSignalling == 0) {
+ return 0;
+ }
+
+ return ($this->blocksSignalling / $this->blocksInCycle) * 100;
+ }
+}
diff --git a/src/Navcoin/SoftFork/Entity/SoftForks.php b/src/Navcoin/SoftFork/Entity/SoftForks.php
new file mode 100644
index 0000000..0c3407e
--- /dev/null
+++ b/src/Navcoin/SoftFork/Entity/SoftForks.php
@@ -0,0 +1,20 @@
+supportedTypes = [SoftFork::class];
+ }
+}
+
diff --git a/src/Navcoin/SoftFork/Mapper/SoftForkMapper.php b/src/Navcoin/SoftFork/Mapper/SoftForkMapper.php
new file mode 100644
index 0000000..8fcc6fe
--- /dev/null
+++ b/src/Navcoin/SoftFork/Mapper/SoftForkMapper.php
@@ -0,0 +1,42 @@
+add($this->mapEntity($softFork));
+ }
+ $elements = $softForks->getElements();
+ usort($elements, [$this, 'sortBySignals']);
+
+ return $softForks->setElements($elements);
+ }
+
+ public function mapEntity(array $data): SoftFork
+ {
+ return new SoftFork(
+ $data['name'],
+ $data['state'],
+ $data['blocksInCycle'],
+ $data['blocksInCycle'] * 0.75,
+ $data['blocksSignalling'],
+ $data['blocksRemaining'],
+ $data['lockedInHeight'],
+ $data['activationHeight']
+ );
+ }
+
+ function sortBySignals(SoftFork $a, SoftFork $b)
+ {
+ return $a->getBlocksSignalling() < $b->getBlocksSignalling();
+ }
+}
diff --git a/src/Twig/DateExtension.php b/src/Twig/DateExtension.php
new file mode 100644
index 0000000..2b12ac4
--- /dev/null
+++ b/src/Twig/DateExtension.php
@@ -0,0 +1,99 @@
+ ['html']]),
+ );
+ }
+
+ public function getFunctions(): array
+ {
+ return [
+ new TwigFunction('period', [$this, 'period'], ['is_safe' => ['html']]),
+ ];
+ }
+
+ /**
+ * Date Localised
+ *
+ * @param \DateTime $date
+ * @param string $format
+ *
+ * @return string
+ */
+ public function dateLocalised(\DateTime $date, string $format): string
+ {
+ return sprintf(
+ '%s ',
+ $date->getTimestamp() * 1000,
+ $date->format($format)
+ );
+ }
+
+ public function period(String $period, int $index, BlockGroup $block) {
+ switch ($period) {
+ case 'hourly':
+ return $this->hourly($index, $block);
+ case 'daily':
+ return $this->daily($index, $block);
+ case 'monthly':
+ return $this->monthly($index, $block);
+ }
+ }
+
+ public function hourly(int $index, BlockGroup $block)
+ {
+ switch ($index) {
+ case 0:
+ return sprintf("%s - %s", $block->getStart()->format('g:i a'), $block->getEnd()->format('g:i a'));
+ default:
+ $start = clone $block->getEnd();
+ $start->add(new \DateInterval('PT1H'));
+
+ return sprintf("%s - %s", $start->format('g:i a'), $block->getEnd()->format('g:i a'));
+ }
+ }
+
+ public function daily(int $index, BlockGroup $block)
+ {
+ switch ($index) {
+ case 0:
+ return 'Today';
+ case 1:
+ return 'Yesterday';
+ default:
+ return $block->getEnd()->format('D jS M');
+ }
+ }
+
+ public function monthly(int $index, BlockGroup $block)
+ {
+ switch ($index) {
+ case 0:
+ return 'This month';
+ default:
+ return $block->getEnd()->format('F');
+ }
+ }
+}
diff --git a/src/Twig/OrdinalExtension.php b/src/Twig/OrdinalExtension.php
new file mode 100644
index 0000000..578daa3
--- /dev/null
+++ b/src/Twig/OrdinalExtension.php
@@ -0,0 +1,44 @@
+ ['html']]),
+ );
+ }
+
+ /**
+ * Stake filter
+ *
+ * @param float $number
+ *
+ * @return string
+ */
+ public function ordinal(float $number): string
+ {
+ $ends = ['th','st','nd','rd','th','th','th','th','th','th'];
+
+ if ((($number % 100) >= 11) && (($number % 100) <= 13)) {
+ return number_format($number, 0).'th';
+ }
+
+ return number_format($number, 0).$ends[$number % 10];
+ }
+}
diff --git a/src/Twig/StakeExtension.php b/src/Twig/StakeExtension.php
new file mode 100644
index 0000000..7eb816f
--- /dev/null
+++ b/src/Twig/StakeExtension.php
@@ -0,0 +1,49 @@
+ ['html']]),
+ ];
+ }
+
+ /**
+ * Stake filter
+ *
+ * @param float $number
+ * @param bool $sign
+ * @param int $decimalPlaces
+ *
+ * @return string
+ */
+ public function stakeFormat(float $number, bool $sign = false, int $decimalPlaces = 8): string
+ {
+ $stake = rtrim(rtrim(number_format($number, $decimalPlaces,'.', ','), '0'), '.');
+
+ if ($number < 0) {
+ $stake = preg_replace('/(\-)/', '- ', $stake);
+ } else if ($sign === true) {
+ $stake = '+ '.$stake;
+ }
+
+ return preg_replace('/\.([0-9]*)$/', '.$1 ', $stake) . ' NAV';
+ }
+
+}
diff --git a/symfony.lock b/symfony.lock
new file mode 100644
index 0000000..8ab7007
--- /dev/null
+++ b/symfony.lock
@@ -0,0 +1,284 @@
+{
+ "bacon/bacon-qr-code": {
+ "version": "1.0.3"
+ },
+ "doctrine/annotations": {
+ "version": "1.0",
+ "recipe": {
+ "repo": "github.com/symfony/recipes",
+ "branch": "master",
+ "version": "1.0",
+ "ref": "cb4152ebcadbe620ea2261da1a1c5a9b8cea7672"
+ }
+ },
+ "doctrine/cache": {
+ "version": "v1.7.1"
+ },
+ "doctrine/collections": {
+ "version": "v1.5.0"
+ },
+ "doctrine/common": {
+ "version": "v2.8.1"
+ },
+ "doctrine/inflector": {
+ "version": "v1.3.0"
+ },
+ "doctrine/instantiator": {
+ "version": "1.1.0"
+ },
+ "doctrine/lexer": {
+ "version": "v1.0.1"
+ },
+ "endroid/qr-code": {
+ "version": "3.2.8"
+ },
+ "endroid/qr-code-bundle": {
+ "version": "3.0",
+ "recipe": {
+ "repo": "github.com/symfony/recipes-contrib",
+ "branch": "master",
+ "version": "3.0",
+ "ref": "b9fcbe18b537c63bf61d3c3be8116a00a85c8e2e"
+ }
+ },
+ "guzzlehttp/guzzle": {
+ "version": "6.3.0"
+ },
+ "guzzlehttp/promises": {
+ "version": "v1.3.1"
+ },
+ "guzzlehttp/psr7": {
+ "version": "1.4.2"
+ },
+ "jms/metadata": {
+ "version": "1.6.0"
+ },
+ "jms/parser-lib": {
+ "version": "1.0.0"
+ },
+ "jms/serializer": {
+ "version": "1.11.0"
+ },
+ "jms/serializer-bundle": {
+ "version": "2.0",
+ "recipe": {
+ "repo": "github.com/symfony/recipes-contrib",
+ "branch": "master",
+ "version": "2.0",
+ "ref": "fe60ce509ef04a3f40da96e3979bc8d9b13b2372"
+ }
+ },
+ "khanamiryan/qrcode-detector-decoder": {
+ "version": "1"
+ },
+ "monolog/monolog": {
+ "version": "1.23.0"
+ },
+ "myclabs/php-enum": {
+ "version": "1.5.2"
+ },
+ "phpcollection/phpcollection": {
+ "version": "0.5.0"
+ },
+ "phpoption/phpoption": {
+ "version": "1.5.0"
+ },
+ "psr/cache": {
+ "version": "1.0.1"
+ },
+ "psr/container": {
+ "version": "1.0.0"
+ },
+ "psr/http-message": {
+ "version": "1.0.1"
+ },
+ "psr/log": {
+ "version": "1.0.2"
+ },
+ "psr/simple-cache": {
+ "version": "1.0.1"
+ },
+ "sensio/framework-extra-bundle": {
+ "version": "4.0",
+ "recipe": {
+ "repo": "github.com/symfony/recipes",
+ "branch": "master",
+ "version": "4.0",
+ "ref": "aaddfdf43cdecd4cf91f992052d76c2cadc04543"
+ }
+ },
+ "symfony/asset": {
+ "version": "v3.4.6"
+ },
+ "symfony/cache": {
+ "version": "v3.4.6"
+ },
+ "symfony/class-loader": {
+ "version": "v3.4.6"
+ },
+ "symfony/config": {
+ "version": "v3.4.6"
+ },
+ "symfony/console": {
+ "version": "3.3",
+ "recipe": {
+ "repo": "github.com/symfony/recipes",
+ "branch": "master",
+ "version": "3.3",
+ "ref": "c646e4b71af082e94b5014daca36ef6812bad076"
+ }
+ },
+ "symfony/debug": {
+ "version": "v3.4.6"
+ },
+ "symfony/dependency-injection": {
+ "version": "v3.4.6"
+ },
+ "symfony/dotenv": {
+ "version": "v3.4.6"
+ },
+ "symfony/event-dispatcher": {
+ "version": "v3.4.6"
+ },
+ "symfony/expression-language": {
+ "version": "v3.4.6"
+ },
+ "symfony/filesystem": {
+ "version": "v3.4.6"
+ },
+ "symfony/finder": {
+ "version": "v3.4.6"
+ },
+ "symfony/flex": {
+ "version": "1.0",
+ "recipe": {
+ "repo": "github.com/symfony/recipes",
+ "branch": "master",
+ "version": "1.0",
+ "ref": "cc1afd81841db36fbef982fe56b48ade6716fac4"
+ }
+ },
+ "symfony/framework-bundle": {
+ "version": "3.3",
+ "recipe": {
+ "repo": "github.com/symfony/recipes",
+ "branch": "master",
+ "version": "3.3",
+ "ref": "b9f462a47f7fd28d56c61f59c027fd7ad8e1aac8"
+ }
+ },
+ "symfony/http-foundation": {
+ "version": "v3.4.6"
+ },
+ "symfony/http-kernel": {
+ "version": "v3.4.6"
+ },
+ "symfony/inflector": {
+ "version": "v3.4.6"
+ },
+ "symfony/lts": {
+ "version": "v3"
+ },
+ "symfony/monolog-bridge": {
+ "version": "v3.4.11"
+ },
+ "symfony/monolog-bundle": {
+ "version": "3.1",
+ "recipe": {
+ "repo": "github.com/symfony/recipes",
+ "branch": "master",
+ "version": "3.1",
+ "ref": "371d1a2b69984710646b09a1182ef1d4308c904f"
+ }
+ },
+ "symfony/options-resolver": {
+ "version": "v3.4.7"
+ },
+ "symfony/polyfill-apcu": {
+ "version": "v1.7.0"
+ },
+ "symfony/polyfill-mbstring": {
+ "version": "v1.7.0"
+ },
+ "symfony/process": {
+ "version": "v3.4.6"
+ },
+ "symfony/profiler-pack": {
+ "version": "v1.0.3"
+ },
+ "symfony/property-access": {
+ "version": "v3.4.6"
+ },
+ "symfony/routing": {
+ "version": "3.3",
+ "recipe": {
+ "repo": "github.com/symfony/recipes",
+ "branch": "master",
+ "version": "3.3",
+ "ref": "a249484db698d1a847a30291c8f732414ac47e25"
+ }
+ },
+ "symfony/serializer": {
+ "version": "v3.4.6"
+ },
+ "symfony/stopwatch": {
+ "version": "v3.4.6"
+ },
+ "symfony/twig-bridge": {
+ "version": "v3.4.6"
+ },
+ "symfony/twig-bundle": {
+ "version": "3.3",
+ "recipe": {
+ "repo": "github.com/symfony/recipes",
+ "branch": "master",
+ "version": "3.3",
+ "ref": "f75ac166398e107796ca94cc57fa1edaa06ec47f"
+ }
+ },
+ "symfony/var-dumper": {
+ "version": "v3.4.6"
+ },
+ "symfony/web-profiler-bundle": {
+ "version": "3.3",
+ "recipe": {
+ "repo": "github.com/symfony/recipes",
+ "branch": "master",
+ "version": "3.3",
+ "ref": "6bdfa1a95f6b2e677ab985cd1af2eae35d62e0f6"
+ }
+ },
+ "symfony/web-server-bundle": {
+ "version": "3.3",
+ "recipe": {
+ "repo": "github.com/symfony/recipes",
+ "branch": "master",
+ "version": "3.3",
+ "ref": "c72d107d077f1654428edaed69415d0228c1aefe"
+ }
+ },
+ "symfony/webpack-encore-pack": {
+ "version": "1.0",
+ "recipe": {
+ "repo": "github.com/symfony/recipes",
+ "branch": "master",
+ "version": "1.0",
+ "ref": "a2f276eff6e95ca94be135d2d3e5c1247c6f8807"
+ }
+ },
+ "symfony/yaml": {
+ "version": "v3.4.6"
+ },
+ "twig/extensions": {
+ "version": "1.0",
+ "recipe": {
+ "repo": "github.com/symfony/recipes",
+ "branch": "master",
+ "version": "1.0",
+ "ref": "4851df0afc426b8f07204379d21fca25b6df5d68"
+ }
+ },
+ "twig/twig": {
+ "version": "v2.4.6"
+ }
+}
diff --git a/templates/address/components/summary.html.twig b/templates/address/components/summary.html.twig
new file mode 100644
index 0000000..6c4f097
--- /dev/null
+++ b/templates/address/components/summary.html.twig
@@ -0,0 +1,57 @@
+
+
+
+
+
+ Hash
+
+ {{ address.hash }}
+
+
+
+ Balance
+
+ {{ address.balance|stake_format }}
+
+
+
+ Sent
+
+ {{ address.sentCount }} txs
+ {{ address.sent|stake_format }}
+
+
+
+ Received
+
+ {{ address.receivedCount }} txs
+ {{ address.received|stake_format }}
+
+
+ {% if address.staked %}
+
+ Staking
+
+ {{ address.stakedCount }} txs
+ {{ (address.staked)|stake_format }}
+
+
+ {% endif %}
+
+ Transactions
+
+ {{ address.transactions|number_format }}
+
+
+
+ Rich list
+ {{ address.richListPosition|ordinal }}
+
+
+
+
+
+
diff --git a/templates/address/components/transactions.html.twig b/templates/address/components/transactions.html.twig
new file mode 100644
index 0000000..5986acf
--- /dev/null
+++ b/templates/address/components/transactions.html.twig
@@ -0,0 +1,31 @@
+
+
Transactions
+
+
+
+
+
+
+
+
+
+ Block
+ Date/Time
+ Hash
+ Amount
+ Balance
+
+
+
+ Loading transactions...
+
+
+
\ No newline at end of file
diff --git a/templates/address/index.html.twig b/templates/address/index.html.twig
new file mode 100644
index 0000000..c33fbbf
--- /dev/null
+++ b/templates/address/index.html.twig
@@ -0,0 +1,24 @@
+{% extends "base.html.twig" %}
+
+{% block title %}Address {{ address.hash }} - {{ address.balance }}{% endblock %}
+
+{% block page %}page-address-index{% endblock %}
+
+{% block body %}
+
+
+
+
+ {% include "address/components/summary.html.twig" %}
+ {% include "address/components/transactions.html.twig" %}
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/templates/address/not_found.html.twig b/templates/address/not_found.html.twig
new file mode 100644
index 0000000..5a3b6b7
--- /dev/null
+++ b/templates/address/not_found.html.twig
@@ -0,0 +1,21 @@
+{% extends "not_found.html.twig" %}
+
+{% block title %}Address not found - {{ hash }}{% endblock %}
+
+{% block page %}page-address-not-found{% endblock %}
+
+{% block content %}
+
+
Address Not Valid
+
+
`{{ hash|slice(0, 20) }}` is not a valid NavCoin address.
+
+
Things to do:
+
+ Confirm you entered it accurately. Addresses are case-sensitive.
+ Mainnet addresses are not valid for Testnet. Are you exploring the correct network?
+
+
+
Speak to @prodpeak on discord if you need further assistance.
+
+{% endblock %}
\ No newline at end of file
diff --git a/templates/base.html.twig b/templates/base.html.twig
new file mode 100644
index 0000000..13448ee
--- /dev/null
+++ b/templates/base.html.twig
@@ -0,0 +1,46 @@
+
+
+
+
+ Nav Explorer - {% block title %}{% endblock %} - NavCoin
+
+
+
+
+ {% block stylesheets %}
+
+
+ {% endblock %}
+
+
+
+
+
+
+
+ {% block header %}
+ {% include "components/header.html.twig" %}
+ {% endblock %}
+
+
+ {% block body %}{% endblock %}
+
+
+ {% block footer %}
+ {% include "components/footer.html.twig" %}
+ {% endblock %}
+
+ {% block javascripts %}
+
+
+
+
+ {% endblock %}
+
+
diff --git a/templates/block/components/index_blocks.html.twig b/templates/block/components/index_blocks.html.twig
new file mode 100644
index 0000000..f6144ed
--- /dev/null
+++ b/templates/block/components/index_blocks.html.twig
@@ -0,0 +1,21 @@
+
+
Latest Blocks
+
+
+
+
+
+
+
+ Height
+ Date/Time
+ Transactions
+ Staked By
+ Stake
+
+
+
+ Loading blocks...
+
+
+
\ No newline at end of file
diff --git a/templates/block/components/view_softforks.html.twig b/templates/block/components/view_softforks.html.twig
new file mode 100644
index 0000000..ed503b8
--- /dev/null
+++ b/templates/block/components/view_softforks.html.twig
@@ -0,0 +1,21 @@
+{% if block.signals|length %}
+ Soft fork signalling
+
+
+
+
+ Name
+ Signalling
+ Activated
+
+
+
+ {% for signal in block.signals %}
+
+ {{ signal.name }}
+ {{ signal.signalling ? "Yes" : "No" }}
+
+ {% endfor %}
+
+
+{% endif %}
\ No newline at end of file
diff --git a/templates/block/components/view_summary.html.twig b/templates/block/components/view_summary.html.twig
new file mode 100644
index 0000000..9929ba9
--- /dev/null
+++ b/templates/block/components/view_summary.html.twig
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+ Hash
+ {{ block.hash }}
+
+
+ Height
+ {{ block.height }}
+
+
+ Confirmations
+ {{ block.confirmations }}
+
+
+ Created At
+
+ {{ block.created|date_localised('M jS Y, g:i:s a') }}
+
+
+
+ Staked By
+
+ {% if block.stakedBy %}
+ {{ block.stakedBy }}
+ {% else %}
+ N/A
+ {% endif %}
+
+
+
+ Stake Reward
+ {{ block.stake|stake_format }}
+
+
+ Fees
+ {{ block.fees|stake_format }}
+
+
+ Spent
+ {{ block.spend|stake_format }}
+
+
+
+
+
+
+
+
+
+ Difficulty
+ {{ block.difficulty }}
+
+
+ Bits
+ {{ block.bits }}
+
+
+ Size
+ {{ block.size }}
+
+
+ Version
+ {{ block.version }}
+
+
+ Nonce
+ {{ block.nonce }}
+
+
+ Merkle Root
+
+ {{ block.merkleRoot|slice(0,10) }}...
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/templates/block/components/view_transactions.html.twig b/templates/block/components/view_transactions.html.twig
new file mode 100644
index 0000000..b62791f
--- /dev/null
+++ b/templates/block/components/view_transactions.html.twig
@@ -0,0 +1,3 @@
+Transactions ({{ block.transactions|number_format }})
+
+
\ No newline at end of file
diff --git a/templates/block/index.html.twig b/templates/block/index.html.twig
new file mode 100644
index 0000000..fab4fc2
--- /dev/null
+++ b/templates/block/index.html.twig
@@ -0,0 +1,17 @@
+{% extends "base.html.twig" %}
+
+{% block title %}Blocks{% endblock %}
+
+{% block page %}page-block-index{% endblock %}
+
+{% block body %}
+
+
+
+
+ {% include 'block/components/index_blocks.html.twig' %}
+
+
+
+
+{% endblock %}
diff --git a/templates/block/not_found.html.twig b/templates/block/not_found.html.twig
new file mode 100644
index 0000000..9f9c3a0
--- /dev/null
+++ b/templates/block/not_found.html.twig
@@ -0,0 +1,22 @@
+{% extends "not_found.html.twig" %}
+
+{% block title %}Block not found - {{ height }}{% endblock %}
+
+{% block page %}page-block-not-found{% endblock %}
+
+{% block content %}
+
+
Block Not Found
+
+
We cannot find a block associated with `{{ height|slice(0, 20) }}`.
+
+
Things to do:
+
+ Confirm you entered the hash or height correctly. Hashes are case-sensitive.
+ Are you exploring the correct network? Blocks on Mainnet will not exist on Testnet.
+ Has the Nav blockchain reached the height you expected?
+
+
+
Speak to @prodpeak on discord if you need further assistance.
+
+{% endblock %}
\ No newline at end of file
diff --git a/templates/block/view.html.twig b/templates/block/view.html.twig
new file mode 100644
index 0000000..b027f39
--- /dev/null
+++ b/templates/block/view.html.twig
@@ -0,0 +1,33 @@
+{% extends "base.html.twig" %}
+
+{% block title %}Block {{ block.height }} - {{ block.hash }}{% endblock %}
+
+{% block page %}page-block-view{% endblock %}
+
+{% block body %}
+
+
+
+
+
+
Block {{ block.height }}
+
+
+
+
+ {% include "block/components/view_summary.html.twig" %}
+
+
+
+ {% include "block/components/view_transactions.html.twig" %}
+
+
+
+ {#
#}
+ {#
#}
+ {#{% include "block/components/view_softforks.html.twig" %}#}
+ {#
#}
+ {#
#}
+
+
+{% endblock %}
diff --git a/templates/bundles/TwigBundle/Exception/error.html.twig b/templates/bundles/TwigBundle/Exception/error.html.twig
new file mode 100644
index 0000000..c91b0e9
--- /dev/null
+++ b/templates/bundles/TwigBundle/Exception/error.html.twig
@@ -0,0 +1,18 @@
+{% extends "not_found.html.twig" %}
+
+{% block title %}Page not found{% endblock %}
+
+{% block page %}page-page-not-found{% endblock %}
+
+{% block content %}
+
+
Server Error
+
+
+ We are unable to complete your request.
+ Please try again in a few moments.
+
+
+
Speak to @prodpeak on discord if you need further assistance.
+
+{% endblock %}
\ No newline at end of file
diff --git a/templates/bundles/TwigBundle/Exception/error404.html.twig b/templates/bundles/TwigBundle/Exception/error404.html.twig
new file mode 100644
index 0000000..5b6e4e1
--- /dev/null
+++ b/templates/bundles/TwigBundle/Exception/error404.html.twig
@@ -0,0 +1,18 @@
+{% extends "not_found.html.twig" %}
+
+{% block title %}Page not found{% endblock %}
+
+{% block page %}page-page-not-found{% endblock %}
+
+{% block content %}
+
+
Page not found
+
+
+ The requested page couldn't be located.
+ Checkout for any URL misspelling or return to the homepage .
+
+
+
Speak to @prodpeak on discord if you need further assistance.
+
+{% endblock %}
\ No newline at end of file
diff --git a/templates/components/alpha-warning.html.twig b/templates/components/alpha-warning.html.twig
new file mode 100644
index 0000000..fa51240
--- /dev/null
+++ b/templates/components/alpha-warning.html.twig
@@ -0,0 +1 @@
+This is an alpha release and therefore contains known issues. Data should not yet be trusted
diff --git a/templates/components/footer.html.twig b/templates/components/footer.html.twig
new file mode 100644
index 0000000..35761d0
--- /dev/null
+++ b/templates/components/footer.html.twig
@@ -0,0 +1,16 @@
+
+
+
+
+
+ {% set network = app.session.get('network', 'MAIN_NET') %}
+
+
+
* All times displayed in UTC
+
+
+
+
\ No newline at end of file
diff --git a/templates/components/header.html.twig b/templates/components/header.html.twig
new file mode 100644
index 0000000..50bf6e6
--- /dev/null
+++ b/templates/components/header.html.twig
@@ -0,0 +1,9 @@
+{% include "components/testnet-warning.html.twig" %}
+
+
+
+
+ {% include "components/nav.html.twig" %}
+
diff --git a/templates/components/nav.html.twig b/templates/components/nav.html.twig
new file mode 100644
index 0000000..6a67b8b
--- /dev/null
+++ b/templates/components/nav.html.twig
@@ -0,0 +1,38 @@
+
\ No newline at end of file
diff --git a/templates/components/testnet-warning.html.twig b/templates/components/testnet-warning.html.twig
new file mode 100644
index 0000000..728694f
--- /dev/null
+++ b/templates/components/testnet-warning.html.twig
@@ -0,0 +1,5 @@
+{% set network = app.session.get('network', 'mainnet') %}
+
+{% if network == 'TEST_NET' %}
+ You are currently exploring blocks on the test net
+{% endif %}
\ No newline at end of file
diff --git a/templates/error/address_unavailable.html.twig b/templates/error/address_unavailable.html.twig
new file mode 100644
index 0000000..99a2ca5
--- /dev/null
+++ b/templates/error/address_unavailable.html.twig
@@ -0,0 +1,20 @@
+{% extends "base.html.twig" %}
+
+{% block title %}Error - Backend Unavailable{% endblock %}
+
+{% block page %}page-error-backend-unavailable{% endblock %}
+
+{% block body %}
+
+
+
+
+
Address Invalid
+
You have tried to view an address that is not a valid NavCoin address.
+
Addresses for testnet are not valid for mainnet, and vise versa.
+
If you think this is the case, switch to the other network and try again.
+
+
+
+
+{% endblock %}
diff --git a/templates/error/backend_unavailable.html.twig b/templates/error/backend_unavailable.html.twig
new file mode 100644
index 0000000..1c1291c
--- /dev/null
+++ b/templates/error/backend_unavailable.html.twig
@@ -0,0 +1,23 @@
+{% extends "base.html.twig" %}
+
+{% block title %}Error - Backend Unavailable{% endblock %}
+
+{% block page %}page-error-backend-unavailable{% endblock %}
+
+{% block body %}
+
+
+
+
+
Nav Explorer is temporarily unavailable.
+
+ Sorry, we are unable to complete your request at this time.
+ We have been alerted to this problem and are working to resolve the issue.
+ Please try again later.
+
+
+
+
+
+
+{% endblock %}
diff --git a/templates/home/components/overview.html.twig b/templates/home/components/overview.html.twig
new file mode 100644
index 0000000..a6a7ae9
--- /dev/null
+++ b/templates/home/components/overview.html.twig
@@ -0,0 +1,38 @@
+Overview
+
+
+
+
+
+
+ {{ period|capitalize }} Period
+ Height
+ Blocks
+ Transactions
+ Stake Rewards
+ Nav Spent
+ Fees
+
+
+
+ {% for index, block in blocks %}
+
+ {{ period(period, index, block) }}
+ {{ block.height }}
+ {{ block.blocks }}
+ {{ block.transactions }}
+ {{ block.stake|stake_format }}
+ {{ block.spend|stake_format }}
+ {{ block.fees|stake_format }}
+
+ {% endfor %}
+
+
\ No newline at end of file
diff --git a/templates/home/hud.html.twig b/templates/home/hud.html.twig
new file mode 100644
index 0000000..96abf13
--- /dev/null
+++ b/templates/home/hud.html.twig
@@ -0,0 +1,43 @@
+
+ {#
#}
+ {#
#}
+ {##}
+ {#
{{ ticker.priceBtc*1000 }} mBTC
#}
+ {#
#}
+ {#
#}
+
+ {#
#}
+ {#
#}
+ {##}
+ {#
$ {{ ticker.priceUsd }}
#}
+ {#
#}
+ {#
#}
+
+ {#
#}
+ {#
#}
+ {##}
+ {#
$ {{ ticker.marketCapUsd|number_format }}
#}
+ {#
#}
+ {#
#}
+
+ {#
#}
+
+ {#
#}
+ {#
#}
+ {##}
+ {#
$ {{ ticker.volume|number_format }}
#}
+ {#
#}
+ {#
#}
+
+ {#
#}
+ {#
#}
+ {##}
+ {#
{{ ticker.totalSupply|stake_format }}
#}
+ {#
#}
+ {#
#}
+
diff --git a/templates/home/index.html.twig b/templates/home/index.html.twig
new file mode 100644
index 0000000..761c3f9
--- /dev/null
+++ b/templates/home/index.html.twig
@@ -0,0 +1,21 @@
+{% extends "base.html.twig" %}
+
+{% block title %}Homepage{% endblock %}
+
+{% block page %}page-home-index{% endblock %}
+
+{% block body %}
+
+
+
+
+ {% include 'search/components/form.html.twig' %}
+
+
+
+ {% include 'home/components/overview.html.twig' %}
+
+
+
+
+{% endblock %}
diff --git a/templates/network/components/index_marketcap.html.twig b/templates/network/components/index_marketcap.html.twig
new file mode 100644
index 0000000..e69de29
diff --git a/templates/network/components/index_summary.html.twig b/templates/network/components/index_summary.html.twig
new file mode 100644
index 0000000..685980b
--- /dev/null
+++ b/templates/network/components/index_summary.html.twig
@@ -0,0 +1,7 @@
+
\ No newline at end of file
diff --git a/templates/network/index.html.twig b/templates/network/index.html.twig
new file mode 100644
index 0000000..5161c25
--- /dev/null
+++ b/templates/network/index.html.twig
@@ -0,0 +1,22 @@
+{% extends "base.html.twig" %}
+
+{% block title %}Network{% endblock %}
+
+{% block page %}page-network{% endblock %}
+
+{% block body %}
+
+
+
+
+
Network Statistics
+
+
+ {#
#}
+ {#
#}
+ {#{% include 'network/components/index_summary.html.twig' %}#}
+ {#
#}
+ {#
#}
+
+
+{% endblock %}
diff --git a/templates/not_found.html.twig b/templates/not_found.html.twig
new file mode 100644
index 0000000..d9fbfde
--- /dev/null
+++ b/templates/not_found.html.twig
@@ -0,0 +1,15 @@
+{% extends "base.html.twig" %}
+
+{% block body %}
+
+
+
+ {% block content %} {% endblock %}
+
+
+
+
+
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/templates/rich_list/components/top_addresses.html.twig b/templates/rich_list/components/top_addresses.html.twig
new file mode 100644
index 0000000..43efb37
--- /dev/null
+++ b/templates/rich_list/components/top_addresses.html.twig
@@ -0,0 +1,38 @@
+Top 100 Addresses
+
+
+
+
+
+ #
+ Address
+ Stake Rewards
+ Last Block
+ Balance
+
+
+
+ {% for rank, address in richList %}
+
+ {{ rank+1 }}
+
+
+ {{ address.hash }}
+
+
+ {{ address.staked|stake_format(false, 2) }}
+ {{ address.blockIndex }}
+
+ {{ address.balance|stake_format(false, 2) }}
+ {% set balance = ((address.balance/62903579)*100)|round(2, 'floor') %}
+ {% if balance == 0 %}
+ < 0.01%
+ {% else %}
+ {{ balance|number_format(2) }}%
+ {% endif %}
+
+
+ {% endfor %}
+
+
+
diff --git a/templates/rich_list/components/wealth_distribution.html.twig b/templates/rich_list/components/wealth_distribution.html.twig
new file mode 100644
index 0000000..25d5cd6
--- /dev/null
+++ b/templates/rich_list/components/wealth_distribution.html.twig
@@ -0,0 +1,20 @@
+
+
Wealth Distribution
+
+
+
+
+
+
+
+
+ Top
+ Balance
+ % holding
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/templates/rich_list/index.html.twig b/templates/rich_list/index.html.twig
new file mode 100644
index 0000000..4ee5670
--- /dev/null
+++ b/templates/rich_list/index.html.twig
@@ -0,0 +1,24 @@
+{% extends "base.html.twig" %}
+
+{% block title %}Rich List{% endblock %}
+
+{% block page %}page-richList-index{% endblock %}
+
+{% block body %}
+
+
+
+
+ {% include 'rich_list/components/top_addresses.html.twig' %}
+
+
+ {% include 'rich_list/components/wealth_distribution.html.twig' %}
+
+
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/templates/search/components/form.html.twig b/templates/search/components/form.html.twig
new file mode 100644
index 0000000..444fbc3
--- /dev/null
+++ b/templates/search/components/form.html.twig
@@ -0,0 +1,13 @@
+
\ No newline at end of file
diff --git a/templates/search/results.html.twig b/templates/search/results.html.twig
new file mode 100644
index 0000000..6640ae7
--- /dev/null
+++ b/templates/search/results.html.twig
@@ -0,0 +1,23 @@
+{% extends "base.html.twig" %}
+
+{% block title %}Search {{ hash }}{% endblock %}
+
+{% block page %}page-search-results{% endblock %}
+
+{% block body %}
+
+
+
+
+
+
Bad news!
+ There are no blocks, transactions or addresses that match `{{ hash }}`.
+ We'll soon be matching against partial addresses, but for now you'll have to search again.
+
+
+ {% include 'search/components/form.html.twig' %}
+
+
+
+
+{% endblock %}
diff --git a/templates/search/search.html.twig b/templates/search/search.html.twig
new file mode 100644
index 0000000..414c294
--- /dev/null
+++ b/templates/search/search.html.twig
@@ -0,0 +1,17 @@
+{% extends "base.html.twig" %}
+
+{% block title %}Search{% endblock %}
+
+{% block page %}page-search{% endblock %}
+
+{% block body %}
+
+
+
+
+ {% include 'search/components/form.html.twig' %}
+
+
+
+
+{% endblock %}
diff --git a/templates/soft_fork/index.html.twig b/templates/soft_fork/index.html.twig
new file mode 100644
index 0000000..215d381
--- /dev/null
+++ b/templates/soft_fork/index.html.twig
@@ -0,0 +1,111 @@
+{% extends "base.html.twig" %}
+
+{% block title %}Soft Forks{% endblock %}
+
+{% block page %}page-soft-forks-index{% endblock %}
+
+{% set blocksInCycle = (softForks|first).blocksInCycle %}
+{% set firstBlock = (blocksInCycle * block.blockCycle) - blocksInCycle %}
+{% set currentBlock = (block.height - firstBlock) %}
+{% set remainingBlocks = blocksInCycle - currentBlock %}
+
+{% block body %}
+
+
+
+
+
+
+ Signaling for block {{ currentBlock|number_format }} of {{ (softForks|first).blocksInCycle|number_format }} in the {{ block.blockCycle|ordinal }} block cycle.
+ There are {{ remainingBlocks|number_format }} blocks remaining.
+
+
+
Signalling Soft Forks
+
+
+
+ Name
+ Blocks Signalling
+ Blocks Required
+ Blocks Remaining
+ Vote %
+ Status
+
+
+
+ {% for fork in softForks if fork.state not in ['ACTIVE', 'LOCKED_IN'] and fork.blocksSignalling != 0 %}
+
+ {{ fork.name }}
+ {{ fork.blocksSignalling|number_format }}
+ {{ (fork.blocksInCycle*0.75)|number_format }}
+ {{ fork.blocksRemaining|number_format }}
+ {{ ((fork.blocksSignalling / currentBlock) * 100)|round }}%
+
+ {% if (fork.blocksInCycle*0.75) - fork.blocksSignalling > fork.blocksRemaining %}
+ Missed
+ {% elseif (fork.blocksSignalling >= (fork.blocksInCycle*0.75)) %}
+ Complete
+ {% else %}
+ {{ fork.state|capitalize }}
+ {% endif %}
+
+
+ {% endfor %}
+
+
+
+
Active/LockedIn Soft Forks
+
+
+
+ Name
+ Locked In Height
+ Activation Height
+ Vote %
+ Status
+
+
+
+ {% for fork in softForks if fork.state in ['ACTIVE', 'LOCKED_IN'] %}
+
+ {{ fork.name }}
+ {{ fork.lockedInHeight }}
+
+ {% if fork.state == 'ACTIVE' %}
+ {{ fork.activationHeight }}
+ {% else %}
+ {{ fork.activationHeight }}
+ {% endif %}
+
+ {{ ((fork.blocksSignalling / (fork.blocksInCycle*0.75)) * 100)|round }}%
+
+ {% if fork.state == 'ACTIVE' %}
+ {{ fork.state|capitalize }}
+ {% else %}
+ {{ fork.state|capitalize }}
+ {% endif %}
+
+
+ {% endfor %}
+
+
+
+
+
+
+
+
What are soft forks?
+
Soft forks are changes to the protocols that govern the NavCoin blockchain.
+
At the end of each {{ ((softForks|first).blocksInCycle)|number_format }} block cycle the number of blocks that signalled support for a soft fork are counted.
+
If the number of signalling blocks is greater than 75% the soft fork is locked in and will be activated at the end of the next block cycle.
+
If the block cycle fails to reach the required 75% a new attempt to lock in the soft fork is started in the next block cycle.
+
+
+
+
+
+{% endblock %}
diff --git a/templates/transaction/components/index_transactions.html.twig b/templates/transaction/components/index_transactions.html.twig
new file mode 100644
index 0000000..5c986b6
--- /dev/null
+++ b/templates/transaction/components/index_transactions.html.twig
@@ -0,0 +1,20 @@
+
+
Latest Transactions
+
+
+
+
+
+
+
+ Hash
+ Height
+ Date/Time
+ Amount
+
+
+
+ Loading transactions...
+
+
+
\ No newline at end of file
diff --git a/templates/transaction/components/view_inputs.html.twig b/templates/transaction/components/view_inputs.html.twig
new file mode 100644
index 0000000..816d2ce
--- /dev/null
+++ b/templates/transaction/components/view_inputs.html.twig
@@ -0,0 +1,38 @@
+Inputs
+
+
+
+ Index
+ Previous Output
+ Address
+ Amount
+
+
+
+ {% for key, input in transaction.inputs %}
+
+ {{ key }}
+
+ {% if input.previousOutput %}
+ {{ input.previousOutput|slice(0, 20) }} ...:{{ input.index }}
+ {% if input.previousOutputBlock %}
+ in {{ input.previousOutputBlock }}
+ {% endif %}
+ {% else %}
+ N/A
+ {% endif %}
+
+
+ {% if input.address %}
+ {{ input.address }}
+ {% else %}
+ N/A
+ {% endif %}
+
+
+ {{ input.amount|stake_format }}
+
+
+ {% endfor %}
+
+
\ No newline at end of file
diff --git a/templates/transaction/components/view_outputs.html.twig b/templates/transaction/components/view_outputs.html.twig
new file mode 100644
index 0000000..10ea122
--- /dev/null
+++ b/templates/transaction/components/view_outputs.html.twig
@@ -0,0 +1,40 @@
+Outputs
+
+
+
+ Index
+ Redeemed In
+ Address
+ Amount
+
+
+
+ {% for key, output in transaction.outputs %}
+
+ {{ output.index }}
+
+ {% if output.redeemedInTransaction %}
+ {{ output.redeemedInTransaction|slice(0, 20) }} ...
+ in {{ output.redeemedInBlock }}
+ {% else %}
+ {% if output.address == '' %}
+ N/A
+ {% else %}
+ Unspent
+ {% endif %}
+ {% endif %}
+
+
+ {% if output.address %}
+ {{ output.address }}
+ {% else %}
+ N/A
+ {% endif %}
+
+
+ {{ output.amount|stake_format }}
+
+
+ {% endfor %}
+
+
\ No newline at end of file
diff --git a/templates/transaction/components/view_summary.html.twig b/templates/transaction/components/view_summary.html.twig
new file mode 100644
index 0000000..cf48002
--- /dev/null
+++ b/templates/transaction/components/view_summary.html.twig
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Hash
+
+ {{ transaction.hash }}
+
+
+
+ Total Output
+
+ {{ transaction.outputs.value|stake_format }}
+
+
+
+ Fees
+
+ {{ transaction.fees|stake_format }}
+
+
+ {% if transaction.staking %}
+
+ Stake Reward
+
+ {{ transaction.stake|stake_format }}
+
+
+ {% endif %}
+
+
+
+
+
+
+
+
+ Height
+
+
+ {{ transaction.height }}
+
+
+
+
+ Confirmations
+ {{ block.confirmations }}
+
+
+ Time
+
+ {{ transaction.time|date_localised('M jS Y, g:i:s a') }}
+
+
+
+
+
+
diff --git a/templates/transaction/index.html.twig b/templates/transaction/index.html.twig
new file mode 100644
index 0000000..7aff23d
--- /dev/null
+++ b/templates/transaction/index.html.twig
@@ -0,0 +1,17 @@
+{% extends "base.html.twig" %}
+
+{% block title %}Transactions{% endblock %}
+
+{% block page %}page-transaction-index{% endblock %}
+
+{% block body %}
+
+
+
+
+ {% include 'transaction/components/index_transactions.html.twig' %}
+
+
+
+
+{% endblock %}
diff --git a/templates/transaction/view.html.twig b/templates/transaction/view.html.twig
new file mode 100644
index 0000000..fab5869
--- /dev/null
+++ b/templates/transaction/view.html.twig
@@ -0,0 +1,23 @@
+{% extends "base.html.twig" %}
+
+{% block title %}Transaction {{ transaction.hash }} - {{ transaction.height }}{% endblock %}
+
+{% block page %}page-transaction-view{% endblock %}
+
+{% block body %}
+
+
+
+
+ {% include "transaction/components/view_summary.html.twig" %}
+ {% include "transaction/components/view_inputs.html.twig" %}
+ {% include "transaction/components/view_outputs.html.twig" %}
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/webpack.config.js b/webpack.config.js
new file mode 100644
index 0000000..df52f20
--- /dev/null
+++ b/webpack.config.js
@@ -0,0 +1,24 @@
+var Encore = require('@symfony/webpack-encore');
+
+Encore
+ // the project directory where compiled assets will be stored
+ .setOutputPath('public/build/')
+ // the public path used by the web server to access the previous directory
+ .setPublicPath('/build')
+ .cleanupOutputBeforeBuild()
+ .enableSourceMaps(!Encore.isProduction())
+ // uncomment to create hashed filenames (e.g. app.abc123.css)
+ // .enableVersioning(Encore.isProduction())
+
+ // uncomment to define the assets of the project
+ .addEntry('js/app', './assets/js/app.js')
+ .addStyleEntry('css/app', './assets/css/app.scss')
+
+ // uncomment if you use Sass/SCSS files
+ .enableSassLoader()
+
+ // uncomment for legacy applications that require $/jQuery as a global variable
+ .autoProvidejQuery()
+;
+
+module.exports = Encore.getWebpackConfig();
diff --git a/yarn.lock b/yarn.lock
new file mode 100644
index 0000000..0c689d7
--- /dev/null
+++ b/yarn.lock
@@ -0,0 +1,5740 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@symfony/webpack-encore@^0.19.0":
+ version "0.19.0"
+ resolved "https://registry.yarnpkg.com/@symfony/webpack-encore/-/webpack-encore-0.19.0.tgz#f0725dbbede5ff9d9fdbd7a07f84accafc83ca14"
+ dependencies:
+ babel-core "^6.24.0"
+ babel-loader "^7.1.0"
+ babel-preset-env "^1.2.2"
+ chalk "^1.1.3"
+ clean-webpack-plugin "^0.1.16"
+ css-loader "^0.26.2"
+ extract-text-webpack-plugin "^3.0.0"
+ fast-levenshtein "^2.0.6"
+ file-loader "^0.10.1"
+ friendly-errors-webpack-plugin "^1.6.1"
+ fs-extra "^2.0.0"
+ loader-utils "^1.1.0"
+ lodash ">=3.5 <5"
+ pkg-up "^1.0.0"
+ pretty-error "^2.1.1"
+ resolve-url-loader "^2.0.2"
+ style-loader "^0.13.2"
+ webpack ">=2.2.0 <4"
+ webpack-chunk-hash "^0.5.0"
+ webpack-dev-server "^2.4.5"
+ yargs "^8.0.1"
+
+"@types/node@*":
+ version "9.4.7"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-9.4.7.tgz#57d81cd98719df2c9de118f2d5f3b1120dcd7275"
+
+"@types/tapable@^0":
+ version "0.2.5"
+ resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-0.2.5.tgz#2443fc12da514c81346b1a665675559cee21fa75"
+
+"@types/uglify-js@*":
+ version "2.6.30"
+ resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-2.6.30.tgz#257d2b6dd86673d60da476680fba90f2e30c6eef"
+ dependencies:
+ source-map "^0.6.1"
+
+"@types/webpack@^3.0.5":
+ version "3.8.10"
+ resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-3.8.10.tgz#2086c1d3969afea84ffc4159e646d3919248ee7b"
+ dependencies:
+ "@types/node" "*"
+ "@types/tapable" "^0"
+ "@types/uglify-js" "*"
+ source-map "^0.6.0"
+
+abbrev@1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
+
+accepts@~1.3.4:
+ version "1.3.5"
+ resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2"
+ dependencies:
+ mime-types "~2.1.18"
+ negotiator "0.6.1"
+
+acorn-dynamic-import@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4"
+ dependencies:
+ acorn "^4.0.3"
+
+acorn@^4.0.3:
+ version "4.0.13"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787"
+
+acorn@^5.0.0:
+ version "5.5.3"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.5.3.tgz#f473dd47e0277a08e28e9bec5aeeb04751f0b8c9"
+
+adjust-sourcemap-loader@^1.1.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-1.2.0.tgz#e33fde95e50db9f2a802e3647e311d2fc5000c69"
+ dependencies:
+ assert "^1.3.0"
+ camelcase "^1.2.1"
+ loader-utils "^1.1.0"
+ lodash.assign "^4.0.1"
+ lodash.defaults "^3.1.2"
+ object-path "^0.9.2"
+ regex-parser "^2.2.9"
+
+ajv-keywords@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.1.0.tgz#ac2b27939c543e95d2c06e7f7f5c27be4aa543be"
+
+ajv@^4.9.1:
+ version "4.11.8"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536"
+ dependencies:
+ co "^4.6.0"
+ json-stable-stringify "^1.0.1"
+
+ajv@^5.0.0:
+ version "5.5.2"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965"
+ dependencies:
+ 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:
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.2.1.tgz#28a6abc493a2abe0fb4c8507acaedb43fa550671"
+ dependencies:
+ fast-deep-equal "^1.0.0"
+ fast-json-stable-stringify "^2.0.0"
+ json-schema-traverse "^0.3.0"
+
+align-text@^0.1.1, align-text@^0.1.3:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117"
+ dependencies:
+ kind-of "^3.0.2"
+ longest "^1.0.1"
+ repeat-string "^1.5.2"
+
+alphanum-sort@^1.0.1, alphanum-sort@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3"
+
+amdefine@>=0.0.4:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
+
+ansi-html@0.0.7:
+ version "0.0.7"
+ resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e"
+
+ansi-regex@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
+
+ansi-regex@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
+
+ansi-styles@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
+
+ansi-styles@^3.2.1:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
+ dependencies:
+ color-convert "^1.9.0"
+
+anymatch@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
+ dependencies:
+ micromatch "^3.1.4"
+ normalize-path "^2.1.1"
+
+aproba@^1.0.3:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
+
+are-we-there-yet@~1.1.2:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d"
+ dependencies:
+ delegates "^1.0.0"
+ readable-stream "^2.0.6"
+
+argparse@^1.0.7:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
+ dependencies:
+ sprintf-js "~1.0.2"
+
+arr-diff@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf"
+ dependencies:
+ arr-flatten "^1.0.1"
+
+arr-diff@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
+
+arr-flatten@^1.0.1, arr-flatten@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
+
+arr-union@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
+
+array-find-index@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1"
+
+array-flatten@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
+
+array-flatten@^2.1.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.1.tgz#426bb9da84090c1838d812c8150af20a8331e296"
+
+array-includes@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d"
+ dependencies:
+ define-properties "^1.1.2"
+ es-abstract "^1.7.0"
+
+array-union@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
+ dependencies:
+ array-uniq "^1.0.1"
+
+array-uniq@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6"
+
+array-unique@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
+
+array-unique@^0.3.2:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
+
+asn1.js@^4.0.0:
+ version "4.10.1"
+ resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0"
+ dependencies:
+ bn.js "^4.0.0"
+ inherits "^2.0.1"
+ minimalistic-assert "^1.0.0"
+
+asn1@~0.2.3:
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86"
+
+assert-plus@1.0.0, assert-plus@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
+
+assert-plus@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234"
+
+assert@^1.1.1, assert@^1.3.0:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91"
+ dependencies:
+ util "0.10.3"
+
+assign-symbols@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
+
+async-each@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d"
+
+async-foreach@^0.1.3:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542"
+
+async@^1.5.2:
+ version "1.5.2"
+ resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
+
+async@^2.1.2, async@^2.4.1:
+ version "2.6.0"
+ resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4"
+ dependencies:
+ lodash "^4.14.0"
+
+asynckit@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
+
+atob@^2.0.0:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/atob/-/atob-2.0.3.tgz#19c7a760473774468f20b2d2d03372ad7d4cbf5d"
+
+atob@~1.1.0:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/atob/-/atob-1.1.3.tgz#95f13629b12c3a51a5d215abdce2aa9f32f80773"
+
+autoprefixer@^6.3.1:
+ version "6.7.7"
+ resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.7.tgz#1dbd1c835658e35ce3f9984099db00585c782014"
+ dependencies:
+ browserslist "^1.7.6"
+ caniuse-db "^1.0.30000634"
+ normalize-range "^0.1.2"
+ num2fraction "^1.2.2"
+ postcss "^5.2.16"
+ postcss-value-parser "^3.2.3"
+
+aws-sign2@~0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f"
+
+aws4@^1.2.1:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e"
+
+axios@^0.18.0:
+ version "0.18.0"
+ resolved "https://registry.yarnpkg.com/axios/-/axios-0.18.0.tgz#32d53e4851efdc0a11993b6cd000789d70c05102"
+ dependencies:
+ follow-redirects "^1.3.0"
+ is-buffer "^1.1.5"
+
+babel-code-frame@^6.11.0, babel-code-frame@^6.26.0:
+ version "6.26.0"
+ resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b"
+ dependencies:
+ chalk "^1.1.3"
+ esutils "^2.0.2"
+ js-tokens "^3.0.2"
+
+babel-core@^6.24.0, babel-core@^6.26.0:
+ version "6.26.0"
+ resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.0.tgz#af32f78b31a6fcef119c87b0fd8d9753f03a0bb8"
+ 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.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"
+
+babel-generator@^6.26.0:
+ version "6.26.1"
+ resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90"
+ 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"
+
+babel-helper-builder-binary-assignment-operator-visitor@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664"
+ dependencies:
+ babel-helper-explode-assignable-expression "^6.24.1"
+ babel-runtime "^6.22.0"
+ babel-types "^6.24.1"
+
+babel-helper-call-delegate@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d"
+ dependencies:
+ babel-helper-hoist-variables "^6.24.1"
+ babel-runtime "^6.22.0"
+ babel-traverse "^6.24.1"
+ babel-types "^6.24.1"
+
+babel-helper-define-map@^6.24.1:
+ version "6.26.0"
+ resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f"
+ dependencies:
+ babel-helper-function-name "^6.24.1"
+ babel-runtime "^6.26.0"
+ babel-types "^6.26.0"
+ lodash "^4.17.4"
+
+babel-helper-explode-assignable-expression@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa"
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-traverse "^6.24.1"
+ babel-types "^6.24.1"
+
+babel-helper-function-name@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9"
+ 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"
+
+babel-helper-get-function-arity@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d"
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-types "^6.24.1"
+
+babel-helper-hoist-variables@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76"
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-types "^6.24.1"
+
+babel-helper-optimise-call-expression@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257"
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-types "^6.24.1"
+
+babel-helper-regex@^6.24.1:
+ version "6.26.0"
+ resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72"
+ dependencies:
+ babel-runtime "^6.26.0"
+ babel-types "^6.26.0"
+ lodash "^4.17.4"
+
+babel-helper-remap-async-to-generator@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b"
+ 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"
+
+babel-helper-replace-supers@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a"
+ dependencies:
+ babel-helper-optimise-call-expression "^6.24.1"
+ babel-messages "^6.23.0"
+ babel-runtime "^6.22.0"
+ babel-template "^6.24.1"
+ babel-traverse "^6.24.1"
+ babel-types "^6.24.1"
+
+babel-helpers@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2"
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-template "^6.24.1"
+
+babel-loader@^7.1.0:
+ version "7.1.4"
+ resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.1.4.tgz#e3463938bd4e6d55d1c174c5485d406a188ed015"
+ dependencies:
+ find-cache-dir "^1.0.0"
+ loader-utils "^1.0.2"
+ mkdirp "^0.5.1"
+
+babel-messages@^6.23.0:
+ version "6.23.0"
+ resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e"
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-check-es2015-constants@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a"
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-syntax-async-functions@^6.8.0:
+ version "6.13.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95"
+
+babel-plugin-syntax-exponentiation-operator@^6.8.0:
+ version "6.13.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de"
+
+babel-plugin-syntax-trailing-function-commas@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3"
+
+babel-plugin-transform-async-to-generator@^6.22.0:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761"
+ dependencies:
+ babel-helper-remap-async-to-generator "^6.24.1"
+ babel-plugin-syntax-async-functions "^6.8.0"
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-arrow-functions@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221"
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-block-scoped-functions@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141"
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-block-scoping@^6.23.0:
+ version "6.26.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f"
+ dependencies:
+ babel-runtime "^6.26.0"
+ babel-template "^6.26.0"
+ babel-traverse "^6.26.0"
+ babel-types "^6.26.0"
+ lodash "^4.17.4"
+
+babel-plugin-transform-es2015-classes@^6.23.0:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db"
+ dependencies:
+ babel-helper-define-map "^6.24.1"
+ babel-helper-function-name "^6.24.1"
+ babel-helper-optimise-call-expression "^6.24.1"
+ babel-helper-replace-supers "^6.24.1"
+ babel-messages "^6.23.0"
+ babel-runtime "^6.22.0"
+ babel-template "^6.24.1"
+ babel-traverse "^6.24.1"
+ babel-types "^6.24.1"
+
+babel-plugin-transform-es2015-computed-properties@^6.22.0:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3"
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-template "^6.24.1"
+
+babel-plugin-transform-es2015-destructuring@^6.23.0:
+ version "6.23.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d"
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-duplicate-keys@^6.22.0:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e"
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-types "^6.24.1"
+
+babel-plugin-transform-es2015-for-of@^6.23.0:
+ version "6.23.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691"
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-function-name@^6.22.0:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b"
+ dependencies:
+ babel-helper-function-name "^6.24.1"
+ babel-runtime "^6.22.0"
+ babel-types "^6.24.1"
+
+babel-plugin-transform-es2015-literals@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e"
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154"
+ dependencies:
+ babel-plugin-transform-es2015-modules-commonjs "^6.24.1"
+ babel-runtime "^6.22.0"
+ babel-template "^6.24.1"
+
+babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1:
+ version "6.26.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz#0d8394029b7dc6abe1a97ef181e00758dd2e5d8a"
+ dependencies:
+ babel-plugin-transform-strict-mode "^6.24.1"
+ babel-runtime "^6.26.0"
+ babel-template "^6.26.0"
+ babel-types "^6.26.0"
+
+babel-plugin-transform-es2015-modules-systemjs@^6.23.0:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23"
+ dependencies:
+ babel-helper-hoist-variables "^6.24.1"
+ babel-runtime "^6.22.0"
+ babel-template "^6.24.1"
+
+babel-plugin-transform-es2015-modules-umd@^6.23.0:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468"
+ dependencies:
+ babel-plugin-transform-es2015-modules-amd "^6.24.1"
+ babel-runtime "^6.22.0"
+ babel-template "^6.24.1"
+
+babel-plugin-transform-es2015-object-super@^6.22.0:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d"
+ dependencies:
+ babel-helper-replace-supers "^6.24.1"
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-parameters@^6.23.0:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b"
+ dependencies:
+ babel-helper-call-delegate "^6.24.1"
+ 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-plugin-transform-es2015-shorthand-properties@^6.22.0:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0"
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-types "^6.24.1"
+
+babel-plugin-transform-es2015-spread@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1"
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-sticky-regex@^6.22.0:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc"
+ dependencies:
+ babel-helper-regex "^6.24.1"
+ babel-runtime "^6.22.0"
+ babel-types "^6.24.1"
+
+babel-plugin-transform-es2015-template-literals@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d"
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-typeof-symbol@^6.23.0:
+ version "6.23.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372"
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-unicode-regex@^6.22.0:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9"
+ dependencies:
+ babel-helper-regex "^6.24.1"
+ babel-runtime "^6.22.0"
+ regexpu-core "^2.0.0"
+
+babel-plugin-transform-exponentiation-operator@^6.22.0:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e"
+ dependencies:
+ babel-helper-builder-binary-assignment-operator-visitor "^6.24.1"
+ babel-plugin-syntax-exponentiation-operator "^6.8.0"
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-regenerator@^6.22.0:
+ version "6.26.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f"
+ dependencies:
+ regenerator-transform "^0.10.0"
+
+babel-plugin-transform-strict-mode@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758"
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-types "^6.24.1"
+
+babel-preset-env@^1.2.2:
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.6.1.tgz#a18b564cc9b9afdf4aae57ae3c1b0d99188e6f48"
+ dependencies:
+ babel-plugin-check-es2015-constants "^6.22.0"
+ babel-plugin-syntax-trailing-function-commas "^6.22.0"
+ babel-plugin-transform-async-to-generator "^6.22.0"
+ babel-plugin-transform-es2015-arrow-functions "^6.22.0"
+ babel-plugin-transform-es2015-block-scoped-functions "^6.22.0"
+ babel-plugin-transform-es2015-block-scoping "^6.23.0"
+ babel-plugin-transform-es2015-classes "^6.23.0"
+ babel-plugin-transform-es2015-computed-properties "^6.22.0"
+ babel-plugin-transform-es2015-destructuring "^6.23.0"
+ babel-plugin-transform-es2015-duplicate-keys "^6.22.0"
+ babel-plugin-transform-es2015-for-of "^6.23.0"
+ babel-plugin-transform-es2015-function-name "^6.22.0"
+ babel-plugin-transform-es2015-literals "^6.22.0"
+ babel-plugin-transform-es2015-modules-amd "^6.22.0"
+ babel-plugin-transform-es2015-modules-commonjs "^6.23.0"
+ babel-plugin-transform-es2015-modules-systemjs "^6.23.0"
+ babel-plugin-transform-es2015-modules-umd "^6.23.0"
+ babel-plugin-transform-es2015-object-super "^6.22.0"
+ babel-plugin-transform-es2015-parameters "^6.23.0"
+ babel-plugin-transform-es2015-shorthand-properties "^6.22.0"
+ babel-plugin-transform-es2015-spread "^6.22.0"
+ babel-plugin-transform-es2015-sticky-regex "^6.22.0"
+ babel-plugin-transform-es2015-template-literals "^6.22.0"
+ babel-plugin-transform-es2015-typeof-symbol "^6.23.0"
+ babel-plugin-transform-es2015-unicode-regex "^6.22.0"
+ babel-plugin-transform-exponentiation-operator "^6.22.0"
+ babel-plugin-transform-regenerator "^6.22.0"
+ browserslist "^2.1.2"
+ invariant "^2.2.2"
+ semver "^5.3.0"
+
+babel-register@^6.26.0:
+ version "6.26.0"
+ resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071"
+ 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"
+
+babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0:
+ version "6.26.0"
+ resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe"
+ dependencies:
+ core-js "^2.4.0"
+ regenerator-runtime "^0.11.0"
+
+babel-template@^6.24.1, babel-template@^6.26.0:
+ version "6.26.0"
+ resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02"
+ dependencies:
+ 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@^6.24.1, babel-traverse@^6.26.0:
+ version "6.26.0"
+ resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee"
+ 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"
+
+babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0:
+ version "6.26.0"
+ resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497"
+ dependencies:
+ babel-runtime "^6.26.0"
+ esutils "^2.0.2"
+ lodash "^4.17.4"
+ to-fast-properties "^1.0.3"
+
+babylon@^6.18.0:
+ version "6.18.0"
+ resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3"
+
+balanced-match@^0.4.2:
+ version "0.4.2"
+ resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838"
+
+balanced-match@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
+
+base64-js@^1.0.2:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.3.tgz#fb13668233d9614cf5fb4bce95a9ba4096cdf801"
+
+base@^0.11.1:
+ version "0.11.2"
+ resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
+ 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"
+
+batch@0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16"
+
+bcrypt-pbkdf@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d"
+ dependencies:
+ tweetnacl "^0.14.3"
+
+big.js@^3.1.3:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e"
+
+binary-extensions@^1.0.0:
+ version "1.11.0"
+ resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205"
+
+block-stream@*:
+ version "0.0.9"
+ resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a"
+ dependencies:
+ inherits "~2.0.0"
+
+bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
+ version "4.11.8"
+ resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f"
+
+body-parser@1.18.2:
+ version "1.18.2"
+ resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.2.tgz#87678a19d84b47d859b83199bd59bce222b10454"
+ dependencies:
+ bytes "3.0.0"
+ content-type "~1.0.4"
+ debug "2.6.9"
+ depd "~1.1.1"
+ 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.15"
+
+bonjour@^3.5.0:
+ version "3.5.0"
+ resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5"
+ dependencies:
+ array-flatten "^2.1.0"
+ deep-equal "^1.0.1"
+ dns-equal "^1.0.0"
+ dns-txt "^2.0.2"
+ multicast-dns "^6.0.1"
+ multicast-dns-service-types "^1.1.0"
+
+boolbase@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
+
+boom@2.x.x:
+ version "2.10.1"
+ resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f"
+ dependencies:
+ hoek "2.x.x"
+
+brace-expansion@^1.1.7:
+ version "1.1.11"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
+ dependencies:
+ balanced-match "^1.0.0"
+ concat-map "0.0.1"
+
+braces@^1.8.2:
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7"
+ dependencies:
+ expand-range "^1.8.1"
+ preserve "^0.2.0"
+ repeat-element "^1.1.2"
+
+braces@^2.3.0, braces@^2.3.1:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.1.tgz#7086c913b4e5a08dbe37ac0ee6a2500c4ba691bb"
+ dependencies:
+ 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.0.1"
+ split-string "^3.0.2"
+ to-regex "^3.0.1"
+
+brorand@^1.0.1:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
+
+browserify-aes@^1.0.0, browserify-aes@^1.0.4:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.1.1.tgz#38b7ab55edb806ff2dcda1a7f1620773a477c49f"
+ 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"
+
+browserify-cipher@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a"
+ dependencies:
+ browserify-aes "^1.0.4"
+ browserify-des "^1.0.0"
+ evp_bytestokey "^1.0.0"
+
+browserify-des@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd"
+ dependencies:
+ cipher-base "^1.0.1"
+ des.js "^1.0.0"
+ inherits "^2.0.1"
+
+browserify-rsa@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524"
+ dependencies:
+ bn.js "^4.1.0"
+ randombytes "^2.0.1"
+
+browserify-sign@^4.0.0:
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298"
+ dependencies:
+ 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@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f"
+ dependencies:
+ pako "~1.0.5"
+
+browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6:
+ version "1.7.7"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9"
+ dependencies:
+ caniuse-db "^1.0.30000639"
+ electron-to-chromium "^1.2.7"
+
+browserslist@^2.1.2:
+ version "2.11.3"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.11.3.tgz#fe36167aed1bbcde4827ebfe71347a2cc70b99b2"
+ dependencies:
+ caniuse-lite "^1.0.30000792"
+ electron-to-chromium "^1.3.30"
+
+buffer-indexof@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c"
+
+buffer-xor@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
+
+buffer@^4.3.0:
+ version "4.9.1"
+ resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298"
+ dependencies:
+ base64-js "^1.0.2"
+ ieee754 "^1.1.4"
+ isarray "^1.0.0"
+
+builtin-modules@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
+
+builtin-status-codes@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
+
+bytes@3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
+
+cache-base@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
+ 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"
+
+camelcase-keys@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7"
+ dependencies:
+ camelcase "^2.0.0"
+ map-obj "^1.0.0"
+
+camelcase@^1.0.2, camelcase@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39"
+
+camelcase@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
+
+camelcase@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a"
+
+camelcase@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
+
+caniuse-api@^1.5.2:
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-1.6.1.tgz#b534e7c734c4f81ec5fbe8aca2ad24354b962c6c"
+ dependencies:
+ browserslist "^1.3.6"
+ caniuse-db "^1.0.30000529"
+ lodash.memoize "^4.1.2"
+ lodash.uniq "^4.5.0"
+
+caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639:
+ version "1.0.30000813"
+ resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000813.tgz#e0a1c603f8880ad787b2a35652b2733f32a5e29a"
+
+caniuse-lite@^1.0.30000792:
+ version "1.0.30000813"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000813.tgz#7b25e27fdfb8d133f3c932b01f77452140fcc6c9"
+
+caseless@~0.11.0:
+ version "0.11.0"
+ resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7"
+
+caseless@~0.12.0:
+ version "0.12.0"
+ resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
+
+center-align@^0.1.1:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad"
+ dependencies:
+ align-text "^0.1.3"
+ lazy-cache "^1.0.3"
+
+chalk@^1.1.1, chalk@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
+ 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"
+
+chalk@^2.3.1:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.2.tgz#250dc96b07491bfd601e648d66ddf5f60c7a5c65"
+ dependencies:
+ ansi-styles "^3.2.1"
+ escape-string-regexp "^1.0.5"
+ supports-color "^5.3.0"
+
+chokidar@^2.0.0, chokidar@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.2.tgz#4dc65139eeb2714977735b6a35d06e97b494dfd7"
+ dependencies:
+ anymatch "^2.0.0"
+ async-each "^1.0.0"
+ braces "^2.3.0"
+ 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"
+ optionalDependencies:
+ fsevents "^1.0.0"
+
+cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de"
+ dependencies:
+ inherits "^2.0.1"
+ safe-buffer "^5.0.1"
+
+clap@^1.0.9:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/clap/-/clap-1.2.3.tgz#4f36745b32008492557f46412d66d50cb99bce51"
+ dependencies:
+ chalk "^1.1.3"
+
+class-utils@^0.3.5:
+ version "0.3.6"
+ resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463"
+ dependencies:
+ arr-union "^3.1.0"
+ define-property "^0.2.5"
+ isobject "^3.0.0"
+ static-extend "^0.1.1"
+
+clean-webpack-plugin@^0.1.16:
+ version "0.1.19"
+ resolved "https://registry.yarnpkg.com/clean-webpack-plugin/-/clean-webpack-plugin-0.1.19.tgz#ceda8bb96b00fe168e9b080272960d20fdcadd6d"
+ dependencies:
+ rimraf "^2.6.1"
+
+cliui@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1"
+ dependencies:
+ center-align "^0.1.1"
+ right-align "^0.1.1"
+ wordwrap "0.0.2"
+
+cliui@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d"
+ dependencies:
+ string-width "^1.0.1"
+ strip-ansi "^3.0.1"
+ wrap-ansi "^2.0.0"
+
+clone-deep@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-2.0.2.tgz#00db3a1e173656730d1188c3d6aced6d7ea97713"
+ dependencies:
+ for-own "^1.0.0"
+ is-plain-object "^2.0.4"
+ kind-of "^6.0.0"
+ shallow-clone "^1.0.0"
+
+clone@^1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.3.tgz#298d7e2231660f40c003c2ed3140decf3f53085f"
+
+co@^4.6.0:
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
+
+coa@~1.0.1:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/coa/-/coa-1.0.4.tgz#a9ef153660d6a86a8bdec0289a5c684d217432fd"
+ dependencies:
+ q "^1.1.2"
+
+code-point-at@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
+
+collection-visit@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
+ dependencies:
+ map-visit "^1.0.0"
+ object-visit "^1.0.0"
+
+color-convert@^1.3.0, color-convert@^1.9.0:
+ version "1.9.1"
+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed"
+ dependencies:
+ color-name "^1.1.1"
+
+color-name@^1.0.0, color-name@^1.1.1:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
+
+color-string@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/color-string/-/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991"
+ dependencies:
+ color-name "^1.0.0"
+
+color@^0.11.0:
+ version "0.11.4"
+ resolved "https://registry.yarnpkg.com/color/-/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764"
+ dependencies:
+ clone "^1.0.2"
+ color-convert "^1.3.0"
+ color-string "^0.3.0"
+
+colormin@^1.0.5:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/colormin/-/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133"
+ dependencies:
+ color "^0.11.0"
+ css-color-names "0.0.4"
+ has "^1.0.1"
+
+colors@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63"
+
+combined-stream@^1.0.5, combined-stream@~1.0.5:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818"
+ dependencies:
+ delayed-stream "~1.0.0"
+
+commander@2, commander@^2.9.0:
+ version "2.15.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.0.tgz#ad2a23a1c3b036e392469b8012cec6b33b4c1322"
+
+commondir@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
+
+component-emitter@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6"
+
+compressible@~2.0.13:
+ version "2.0.13"
+ resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.13.tgz#0d1020ab924b2fdb4d6279875c7d6daba6baa7a9"
+ dependencies:
+ mime-db ">= 1.33.0 < 2"
+
+compression@^1.5.2:
+ version "1.7.2"
+ resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.2.tgz#aaffbcd6aaf854b44ebb280353d5ad1651f59a69"
+ dependencies:
+ accepts "~1.3.4"
+ bytes "3.0.0"
+ compressible "~2.0.13"
+ debug "2.6.9"
+ on-headers "~1.0.1"
+ safe-buffer "5.1.1"
+ vary "~1.1.2"
+
+concat-map@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
+
+connect-history-api-fallback@^1.3.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz#b06873934bc5e344fef611a196a6faae0aee015a"
+
+console-browserify@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10"
+ dependencies:
+ date-now "^0.1.4"
+
+console-control-strings@^1.0.0, console-control-strings@~1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
+
+constants-browserify@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
+
+content-disposition@0.5.2:
+ version "0.5.2"
+ resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4"
+
+content-type@~1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
+
+convert-source-map@^0.3.3:
+ version "0.3.5"
+ resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz#f1d802950af7dd2631a1febe0596550c86ab3190"
+
+convert-source-map@^1.5.0, convert-source-map@^1.5.1:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5"
+
+cookie-signature@1.0.6:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
+
+cookie@0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb"
+
+copy-descriptor@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
+
+core-js@^2.4.0, core-js@^2.5.0:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.3.tgz#8acc38345824f16d8365b7c9b4259168e8ed603e"
+
+core-util-is@1.0.2, core-util-is@~1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
+
+create-ecdh@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d"
+ dependencies:
+ bn.js "^4.1.0"
+ elliptic "^6.0.0"
+
+create-hash@^1.1.0, create-hash@^1.1.2:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.3.tgz#606042ac8b9262750f483caddab0f5819172d8fd"
+ dependencies:
+ cipher-base "^1.0.1"
+ inherits "^2.0.1"
+ ripemd160 "^2.0.0"
+ sha.js "^2.4.0"
+
+create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.6.tgz#acb9e221a4e17bdb076e90657c42b93e3726cf06"
+ 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"
+
+cross-spawn@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982"
+ dependencies:
+ lru-cache "^4.0.1"
+ which "^1.2.9"
+
+cross-spawn@^5.0.1:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
+ dependencies:
+ lru-cache "^4.0.1"
+ shebang-command "^1.2.0"
+ which "^1.2.9"
+
+cryptiles@2.x.x:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8"
+ dependencies:
+ boom "2.x.x"
+
+crypto-browserify@^3.11.0:
+ version "3.12.0"
+ resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec"
+ 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"
+
+css-color-names@0.0.4:
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0"
+
+css-loader@^0.26.2:
+ version "0.26.4"
+ resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.26.4.tgz#b61e9e30db94303e6ffc892f10ecd09ad025a1fd"
+ dependencies:
+ babel-code-frame "^6.11.0"
+ css-selector-tokenizer "^0.7.0"
+ cssnano ">=2.6.1 <4"
+ loader-utils "^1.0.2"
+ lodash.camelcase "^4.3.0"
+ object-assign "^4.0.1"
+ postcss "^5.0.6"
+ postcss-modules-extract-imports "^1.0.0"
+ postcss-modules-local-by-default "^1.0.1"
+ postcss-modules-scope "^1.0.0"
+ postcss-modules-values "^1.1.0"
+ source-list-map "^0.1.7"
+
+css-select@^1.1.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858"
+ dependencies:
+ boolbase "~1.0.0"
+ css-what "2.1"
+ domutils "1.5.1"
+ nth-check "~1.0.1"
+
+css-selector-tokenizer@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz#e6988474ae8c953477bf5e7efecfceccd9cf4c86"
+ dependencies:
+ cssesc "^0.1.0"
+ fastparse "^1.1.1"
+ regexpu-core "^1.0.0"
+
+css-what@2.1:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd"
+
+css@^2.0.0:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/css/-/css-2.2.1.tgz#73a4c81de85db664d4ee674f7d47085e3b2d55dc"
+ dependencies:
+ inherits "^2.0.1"
+ source-map "^0.1.38"
+ source-map-resolve "^0.3.0"
+ urix "^0.1.0"
+
+cssesc@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4"
+
+"cssnano@>=2.6.1 <4":
+ version "3.10.0"
+ resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38"
+ dependencies:
+ autoprefixer "^6.3.1"
+ decamelize "^1.1.2"
+ defined "^1.0.0"
+ has "^1.0.1"
+ object-assign "^4.0.1"
+ postcss "^5.0.14"
+ postcss-calc "^5.2.0"
+ postcss-colormin "^2.1.8"
+ postcss-convert-values "^2.3.4"
+ postcss-discard-comments "^2.0.4"
+ postcss-discard-duplicates "^2.0.1"
+ postcss-discard-empty "^2.0.1"
+ postcss-discard-overridden "^0.1.1"
+ postcss-discard-unused "^2.2.1"
+ postcss-filter-plugins "^2.0.0"
+ postcss-merge-idents "^2.1.5"
+ postcss-merge-longhand "^2.0.1"
+ postcss-merge-rules "^2.0.3"
+ postcss-minify-font-values "^1.0.2"
+ postcss-minify-gradients "^1.0.1"
+ postcss-minify-params "^1.0.4"
+ postcss-minify-selectors "^2.0.4"
+ postcss-normalize-charset "^1.1.0"
+ postcss-normalize-url "^3.0.7"
+ postcss-ordered-values "^2.1.0"
+ postcss-reduce-idents "^2.2.2"
+ postcss-reduce-initial "^1.0.0"
+ postcss-reduce-transforms "^1.0.3"
+ postcss-svgo "^2.1.1"
+ postcss-unique-selectors "^2.0.2"
+ postcss-value-parser "^3.2.3"
+ postcss-zindex "^2.0.1"
+
+csso@~2.3.1:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/csso/-/csso-2.3.2.tgz#ddd52c587033f49e94b71fc55569f252e8ff5f85"
+ dependencies:
+ clap "^1.0.9"
+ source-map "^0.5.3"
+
+currently-unhandled@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea"
+ dependencies:
+ array-find-index "^1.0.1"
+
+d3-array@1, d3-array@^1.1.1, d3-array@^1.2.0:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-1.2.1.tgz#d1ca33de2f6ac31efadb8e050a021d7e2396d5dc"
+
+d3-axis@1:
+ version "1.0.8"
+ resolved "https://registry.yarnpkg.com/d3-axis/-/d3-axis-1.0.8.tgz#31a705a0b535e65759de14173a31933137f18efa"
+
+d3-brush@1:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/d3-brush/-/d3-brush-1.0.4.tgz#00c2f238019f24f6c0a194a26d41a1530ffe7bc4"
+ dependencies:
+ d3-dispatch "1"
+ d3-drag "1"
+ d3-interpolate "1"
+ d3-selection "1"
+ d3-transition "1"
+
+d3-chord@1:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/d3-chord/-/d3-chord-1.0.4.tgz#7dec4f0ba886f713fe111c45f763414f6f74ca2c"
+ dependencies:
+ d3-array "1"
+ d3-path "1"
+
+d3-collection@1:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/d3-collection/-/d3-collection-1.0.4.tgz#342dfd12837c90974f33f1cc0a785aea570dcdc2"
+
+d3-color@1:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-1.1.0.tgz#73957299b63ca935bf19c6c9d835e90066028329"
+
+d3-contour@1:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/d3-contour/-/d3-contour-1.2.0.tgz#de3ea7991bbb652155ee2a803aeafd084be03b63"
+ dependencies:
+ d3-array "^1.1.1"
+
+d3-dispatch@1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/d3-dispatch/-/d3-dispatch-1.0.3.tgz#46e1491eaa9b58c358fce5be4e8bed626e7871f8"
+
+d3-drag@1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/d3-drag/-/d3-drag-1.2.1.tgz#df8dd4c502fb490fc7462046a8ad98a5c479282d"
+ dependencies:
+ d3-dispatch "1"
+ d3-selection "1"
+
+d3-dsv@1:
+ version "1.0.8"
+ resolved "https://registry.yarnpkg.com/d3-dsv/-/d3-dsv-1.0.8.tgz#907e240d57b386618dc56468bacfe76bf19764ae"
+ dependencies:
+ commander "2"
+ iconv-lite "0.4"
+ rw "1"
+
+d3-ease@1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/d3-ease/-/d3-ease-1.0.3.tgz#68bfbc349338a380c44d8acc4fbc3304aa2d8c0e"
+
+d3-fetch@1:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/d3-fetch/-/d3-fetch-1.1.0.tgz#31cbcd506b21d6519ac6a120a079de8d0a57c00f"
+ dependencies:
+ d3-dsv "1"
+
+d3-force@1:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/d3-force/-/d3-force-1.1.0.tgz#cebf3c694f1078fcc3d4daf8e567b2fbd70d4ea3"
+ dependencies:
+ d3-collection "1"
+ d3-dispatch "1"
+ d3-quadtree "1"
+ d3-timer "1"
+
+d3-format@1:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-1.2.2.tgz#1a39c479c8a57fe5051b2e67a3bee27061a74e7a"
+
+d3-geo@1:
+ version "1.10.0"
+ resolved "https://registry.yarnpkg.com/d3-geo/-/d3-geo-1.10.0.tgz#2972d18014f1e38fc1f8bb6d545377bdfb00c9ab"
+ dependencies:
+ d3-array "1"
+
+d3-hierarchy@1:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-1.1.6.tgz#842c1372090f870b7ea013ebae5c0c8d9f56229c"
+
+d3-interpolate@1:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-1.1.6.tgz#2cf395ae2381804df08aa1bf766b7f97b5f68fb6"
+ dependencies:
+ d3-color "1"
+
+d3-path@1:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-1.0.5.tgz#241eb1849bd9e9e8021c0d0a799f8a0e8e441764"
+
+d3-polygon@1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/d3-polygon/-/d3-polygon-1.0.3.tgz#16888e9026460933f2b179652ad378224d382c62"
+
+d3-quadtree@1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/d3-quadtree/-/d3-quadtree-1.0.3.tgz#ac7987e3e23fe805a990f28e1b50d38fcb822438"
+
+d3-random@1:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/d3-random/-/d3-random-1.1.0.tgz#6642e506c6fa3a648595d2b2469788a8d12529d3"
+
+d3-scale-chromatic@1:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/d3-scale-chromatic/-/d3-scale-chromatic-1.2.0.tgz#25820d059c0eccc33e85f77561f37382a817ab58"
+ dependencies:
+ d3-color "1"
+ d3-interpolate "1"
+
+d3-scale@2:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-2.0.0.tgz#fd8ac78381bc2ed741d8c71770437a5e0549a5a5"
+ dependencies:
+ d3-array "^1.2.0"
+ d3-collection "1"
+ d3-format "1"
+ d3-interpolate "1"
+ d3-time "1"
+ d3-time-format "2"
+
+d3-selection@1, d3-selection@^1.1.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/d3-selection/-/d3-selection-1.3.0.tgz#d53772382d3dc4f7507bfb28bcd2d6aed2a0ad6d"
+
+d3-shape@1:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-1.2.0.tgz#45d01538f064bafd05ea3d6d2cb748fd8c41f777"
+ dependencies:
+ d3-path "1"
+
+d3-time-format@2:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-2.1.1.tgz#85b7cdfbc9ffca187f14d3c456ffda268081bb31"
+ dependencies:
+ d3-time "1"
+
+d3-time@1:
+ version "1.0.8"
+ resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-1.0.8.tgz#dbd2d6007bf416fe67a76d17947b784bffea1e84"
+
+d3-timer@1:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-1.0.7.tgz#df9650ca587f6c96607ff4e60cc38229e8dd8531"
+
+d3-transition@1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/d3-transition/-/d3-transition-1.1.1.tgz#d8ef89c3b848735b060e54a39b32aaebaa421039"
+ dependencies:
+ d3-color "1"
+ d3-dispatch "1"
+ d3-ease "1"
+ d3-interpolate "1"
+ d3-selection "^1.1.0"
+ d3-timer "1"
+
+d3-voronoi@1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/d3-voronoi/-/d3-voronoi-1.1.2.tgz#1687667e8f13a2d158c80c1480c5a29cb0d8973c"
+
+d3-zoom@1:
+ version "1.7.1"
+ resolved "https://registry.yarnpkg.com/d3-zoom/-/d3-zoom-1.7.1.tgz#02f43b3c3e2db54f364582d7e4a236ccc5506b63"
+ dependencies:
+ d3-dispatch "1"
+ d3-drag "1"
+ d3-interpolate "1"
+ d3-selection "1"
+ d3-transition "1"
+
+d3@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/d3/-/d3-5.1.0.tgz#2506c4f070fe8a5a1e9a16308caacf96ae51f522"
+ dependencies:
+ d3-array "1"
+ d3-axis "1"
+ d3-brush "1"
+ d3-chord "1"
+ d3-collection "1"
+ d3-color "1"
+ d3-contour "1"
+ d3-dispatch "1"
+ d3-drag "1"
+ d3-dsv "1"
+ d3-ease "1"
+ d3-fetch "1"
+ d3-force "1"
+ d3-format "1"
+ d3-geo "1"
+ d3-hierarchy "1"
+ d3-interpolate "1"
+ d3-path "1"
+ d3-polygon "1"
+ d3-quadtree "1"
+ d3-random "1"
+ d3-scale "2"
+ d3-scale-chromatic "1"
+ d3-selection "1"
+ d3-shape "1"
+ d3-time "1"
+ d3-time-format "2"
+ d3-timer "1"
+ d3-transition "1"
+ d3-voronoi "1"
+ d3-zoom "1"
+
+d@1:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f"
+ dependencies:
+ es5-ext "^0.10.9"
+
+dashdash@^1.12.0:
+ version "1.14.1"
+ resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
+ dependencies:
+ assert-plus "^1.0.0"
+
+date-now@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
+
+debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.6, debug@^2.6.8:
+ version "2.6.9"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
+ dependencies:
+ ms "2.0.0"
+
+debug@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
+ dependencies:
+ ms "2.0.0"
+
+decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
+
+decode-uri-component@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
+
+deep-equal@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5"
+
+deep-extend@~0.4.0:
+ version "0.4.2"
+ resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f"
+
+define-properties@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94"
+ dependencies:
+ foreach "^2.0.5"
+ object-keys "^1.0.8"
+
+define-property@^0.2.5:
+ version "0.2.5"
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
+ dependencies:
+ is-descriptor "^0.1.0"
+
+define-property@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6"
+ dependencies:
+ is-descriptor "^1.0.0"
+
+define-property@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d"
+ dependencies:
+ is-descriptor "^1.0.2"
+ isobject "^3.0.1"
+
+defined@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693"
+
+del@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5"
+ dependencies:
+ globby "^6.1.0"
+ is-path-cwd "^1.0.0"
+ is-path-in-cwd "^1.0.0"
+ p-map "^1.1.1"
+ pify "^3.0.0"
+ rimraf "^2.2.8"
+
+delayed-stream@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
+
+delegates@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
+
+depd@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359"
+
+depd@~1.1.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
+
+des.js@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc"
+ dependencies:
+ inherits "^2.0.1"
+ minimalistic-assert "^1.0.0"
+
+destroy@~1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
+
+detect-indent@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208"
+ dependencies:
+ repeating "^2.0.0"
+
+detect-libc@^1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
+
+detect-node@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.3.tgz#a2033c09cc8e158d37748fbde7507832bd6ce127"
+
+diffie-hellman@^5.0.0:
+ version "5.0.2"
+ resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e"
+ dependencies:
+ bn.js "^4.1.0"
+ miller-rabin "^4.0.0"
+ randombytes "^2.0.0"
+
+dns-equal@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d"
+
+dns-packet@^1.3.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a"
+ dependencies:
+ ip "^1.1.0"
+ safe-buffer "^5.0.1"
+
+dns-txt@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6"
+ dependencies:
+ buffer-indexof "^1.0.0"
+
+dom-converter@~0.1:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.1.4.tgz#a45ef5727b890c9bffe6d7c876e7b19cb0e17f3b"
+ dependencies:
+ utila "~0.3"
+
+dom-serializer@0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82"
+ dependencies:
+ domelementtype "~1.1.1"
+ entities "~1.1.1"
+
+domain-browser@^1.1.1:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda"
+
+domelementtype@1:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2"
+
+domelementtype@~1.1.1:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b"
+
+domhandler@2.1:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.1.0.tgz#d2646f5e57f6c3bab11cf6cb05d3c0acf7412594"
+ dependencies:
+ domelementtype "1"
+
+domutils@1.1:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.1.6.tgz#bddc3de099b9a2efacc51c623f28f416ecc57485"
+ dependencies:
+ domelementtype "1"
+
+domutils@1.5.1:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf"
+ dependencies:
+ dom-serializer "0"
+ domelementtype "1"
+
+ecc-jsbn@~0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505"
+ dependencies:
+ jsbn "~0.1.0"
+
+ee-first@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
+
+electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.30:
+ version "1.3.37"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.37.tgz#4a92734e0044c8cf0b1553be57eae21a4c6e5fab"
+
+elliptic@^6.0.0:
+ version "6.4.0"
+ resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df"
+ 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"
+
+emojis-list@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
+
+encodeurl@~1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
+
+enhanced-resolve@^3.4.0:
+ version "3.4.1"
+ resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz#0421e339fd71419b3da13d129b3979040230476e"
+ dependencies:
+ graceful-fs "^4.1.2"
+ memory-fs "^0.4.0"
+ object-assign "^4.0.1"
+ tapable "^0.2.7"
+
+entities@~1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0"
+
+errno@^0.1.3:
+ version "0.1.7"
+ resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618"
+ dependencies:
+ prr "~1.0.1"
+
+error-ex@^1.2.0:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc"
+ dependencies:
+ is-arrayish "^0.2.1"
+
+error-stack-parser@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.1.tgz#a3202b8fb03114aa9b40a0e3669e48b2b65a010a"
+ dependencies:
+ stackframe "^1.0.3"
+
+es-abstract@^1.7.0:
+ version "1.10.0"
+ resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.10.0.tgz#1ecb36c197842a00d8ee4c2dfd8646bb97d60864"
+ dependencies:
+ es-to-primitive "^1.1.1"
+ function-bind "^1.1.1"
+ has "^1.0.1"
+ is-callable "^1.1.3"
+ is-regex "^1.0.4"
+
+es-to-primitive@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d"
+ dependencies:
+ is-callable "^1.1.1"
+ is-date-object "^1.0.1"
+ is-symbol "^1.0.1"
+
+es5-ext@^0.10.14, es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14:
+ version "0.10.40"
+ resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.40.tgz#ab3d2179b943008c5e9ef241beb25ef41424c774"
+ dependencies:
+ es6-iterator "~2.0.3"
+ es6-symbol "~3.1.1"
+
+es6-iterator@^2.0.1, es6-iterator@~2.0.1, es6-iterator@~2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7"
+ dependencies:
+ d "1"
+ es5-ext "^0.10.35"
+ es6-symbol "^3.1.1"
+
+es6-map@^0.1.3:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0"
+ 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"
+
+es6-set@~0.1.5:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1"
+ dependencies:
+ d "1"
+ es5-ext "~0.10.14"
+ es6-iterator "~2.0.1"
+ es6-symbol "3.1.1"
+ event-emitter "~0.3.5"
+
+es6-symbol@3.1.1, es6-symbol@^3.1.1, es6-symbol@~3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77"
+ dependencies:
+ d "1"
+ es5-ext "~0.10.14"
+
+es6-weak-map@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f"
+ dependencies:
+ d "1"
+ es5-ext "^0.10.14"
+ es6-iterator "^2.0.1"
+ es6-symbol "^3.1.1"
+
+escape-html@~1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
+
+escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
+
+escope@^3.6.0:
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3"
+ dependencies:
+ es6-map "^0.1.3"
+ es6-weak-map "^2.0.1"
+ esrecurse "^4.1.0"
+ estraverse "^4.1.1"
+
+esprima@^2.6.0:
+ version "2.7.3"
+ resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581"
+
+esrecurse@^4.1.0:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf"
+ dependencies:
+ estraverse "^4.1.0"
+
+estraverse@^4.1.0, estraverse@^4.1.1:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13"
+
+esutils@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
+
+etag@~1.8.1:
+ version "1.8.1"
+ resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
+
+event-emitter@~0.3.5:
+ version "0.3.5"
+ resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39"
+ dependencies:
+ d "1"
+ es5-ext "~0.10.14"
+
+eventemitter3@1.x.x:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508"
+
+events@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924"
+
+eventsource@0.1.6:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232"
+ dependencies:
+ original ">=0.0.5"
+
+evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02"
+ dependencies:
+ md5.js "^1.3.4"
+ safe-buffer "^5.1.1"
+
+execa@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777"
+ 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"
+
+expand-brackets@^0.1.4:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b"
+ dependencies:
+ is-posix-bracket "^0.1.0"
+
+expand-brackets@^2.1.4:
+ version "2.1.4"
+ resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622"
+ 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"
+
+expand-range@^1.8.1:
+ version "1.8.2"
+ resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337"
+ dependencies:
+ fill-range "^2.1.0"
+
+express@^4.16.2:
+ version "4.16.2"
+ resolved "https://registry.yarnpkg.com/express/-/express-4.16.2.tgz#e35c6dfe2d64b7dca0a5cd4f21781be3299e076c"
+ dependencies:
+ 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"
+
+extend-shallow@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
+ dependencies:
+ is-extendable "^0.1.0"
+
+extend-shallow@^3.0.0, extend-shallow@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
+ dependencies:
+ assign-symbols "^1.0.0"
+ is-extendable "^1.0.1"
+
+extend@~3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444"
+
+extglob@^0.3.1:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1"
+ dependencies:
+ is-extglob "^1.0.0"
+
+extglob@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543"
+ 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"
+
+extract-text-webpack-plugin@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.2.tgz#5f043eaa02f9750a9258b78c0a6e0dc1408fb2f7"
+ dependencies:
+ async "^2.4.1"
+ loader-utils "^1.1.0"
+ schema-utils "^0.3.0"
+ webpack-sources "^1.0.1"
+
+extsprintf@1.3.0, extsprintf@^1.2.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
+
+fast-deep-equal@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614"
+
+fast-json-stable-stringify@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
+
+fast-levenshtein@^2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
+
+fastparse@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8"
+
+faye-websocket@^0.10.0:
+ version "0.10.0"
+ resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4"
+ dependencies:
+ websocket-driver ">=0.5.1"
+
+faye-websocket@~0.11.0:
+ version "0.11.1"
+ resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38"
+ dependencies:
+ websocket-driver ">=0.5.1"
+
+file-loader@^0.10.1:
+ version "0.10.1"
+ resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-0.10.1.tgz#815034119891fc6441fb5a64c11bc93c22ddd842"
+ dependencies:
+ loader-utils "^1.0.2"
+
+filename-regex@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26"
+
+fill-range@^2.1.0:
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723"
+ dependencies:
+ is-number "^2.1.0"
+ isobject "^2.0.0"
+ randomatic "^1.1.3"
+ repeat-element "^1.1.2"
+ repeat-string "^1.5.2"
+
+fill-range@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
+ dependencies:
+ extend-shallow "^2.0.1"
+ is-number "^3.0.0"
+ repeat-string "^1.6.1"
+ to-regex-range "^2.1.0"
+
+finalhandler@1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz#ce0b6855b45853e791b2fcc680046d88253dd7f5"
+ dependencies:
+ 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@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f"
+ dependencies:
+ commondir "^1.0.1"
+ make-dir "^1.0.0"
+ pkg-dir "^2.0.0"
+
+find-up@^1.0.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"
+ dependencies:
+ path-exists "^2.0.0"
+ pinkie-promise "^2.0.0"
+
+find-up@^2.0.0, find-up@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7"
+ dependencies:
+ locate-path "^2.0.0"
+
+flatten@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782"
+
+follow-redirects@^1.3.0:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.4.1.tgz#d8120f4518190f55aac65bb6fc7b85fcd666d6aa"
+ dependencies:
+ debug "^3.1.0"
+
+for-in@^0.1.3:
+ version "0.1.8"
+ resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1"
+
+for-in@^1.0.1, for-in@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
+
+for-own@^0.1.4:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce"
+ dependencies:
+ for-in "^1.0.1"
+
+for-own@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b"
+ dependencies:
+ for-in "^1.0.1"
+
+foreach@^2.0.5:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99"
+
+forever-agent@~0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
+
+form-data@~2.1.1:
+ version "2.1.4"
+ resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1"
+ dependencies:
+ asynckit "^0.4.0"
+ combined-stream "^1.0.5"
+ mime-types "^2.1.12"
+
+forwarded@~0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84"
+
+fragment-cache@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19"
+ dependencies:
+ map-cache "^0.2.2"
+
+fresh@0.5.2:
+ version "0.5.2"
+ resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
+
+friendly-errors-webpack-plugin@^1.6.1:
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.6.1.tgz#e32781c4722f546a06a9b5d7a7cfa28520375d70"
+ dependencies:
+ chalk "^1.1.3"
+ error-stack-parser "^2.0.0"
+ string-length "^1.0.1"
+
+fs-extra@^2.0.0:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-2.1.2.tgz#046c70163cef9aad46b0e4a7fa467fb22d71de35"
+ dependencies:
+ graceful-fs "^4.1.2"
+ jsonfile "^2.1.0"
+
+fs.realpath@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
+
+fsevents@^1.0.0:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.3.tgz#11f82318f5fe7bb2cd22965a108e9306208216d8"
+ dependencies:
+ nan "^2.3.0"
+ node-pre-gyp "^0.6.39"
+
+fstream-ignore@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105"
+ dependencies:
+ fstream "^1.0.0"
+ inherits "2"
+ minimatch "^3.0.0"
+
+fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2:
+ version "1.0.11"
+ resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171"
+ dependencies:
+ graceful-fs "^4.1.2"
+ inherits "~2.0.0"
+ mkdirp ">=0.5 0"
+ rimraf "2"
+
+function-bind@^1.0.2, function-bind@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
+
+gauge@~2.7.3:
+ version "2.7.4"
+ resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
+ dependencies:
+ 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"
+
+gaze@^1.0.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.2.tgz#847224677adb8870d679257ed3388fdb61e40105"
+ dependencies:
+ globule "^1.0.0"
+
+generate-function@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74"
+
+generate-object-property@^1.1.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0"
+ dependencies:
+ is-property "^1.0.0"
+
+get-caller-file@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5"
+
+get-stdin@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe"
+
+get-stream@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
+
+get-value@^2.0.3, get-value@^2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
+
+getpass@^0.1.1:
+ version "0.1.7"
+ resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
+ dependencies:
+ assert-plus "^1.0.0"
+
+glob-base@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4"
+ dependencies:
+ glob-parent "^2.0.0"
+ is-glob "^2.0.0"
+
+glob-parent@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28"
+ dependencies:
+ is-glob "^2.0.0"
+
+glob-parent@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
+ dependencies:
+ is-glob "^3.1.0"
+ path-dirname "^1.0.0"
+
+glob@^6.0.4:
+ version "6.0.4"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22"
+ dependencies:
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "2 || 3"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@~7.1.1:
+ version "7.1.2"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
+ 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"
+
+globals@^9.18.0:
+ version "9.18.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a"
+
+globby@^6.1.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c"
+ dependencies:
+ array-union "^1.0.1"
+ glob "^7.0.3"
+ object-assign "^4.0.1"
+ pify "^2.0.0"
+ pinkie-promise "^2.0.0"
+
+globule@^1.0.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/globule/-/globule-1.2.0.tgz#1dc49c6822dd9e8a2fa00ba2a295006e8664bd09"
+ dependencies:
+ glob "~7.1.1"
+ lodash "~4.17.4"
+ minimatch "~3.0.2"
+
+graceful-fs@^4.1.2, graceful-fs@^4.1.6:
+ version "4.1.11"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
+
+handle-thing@^1.2.5:
+ version "1.2.5"
+ resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4"
+
+har-schema@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e"
+
+har-validator@~2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d"
+ dependencies:
+ chalk "^1.1.1"
+ commander "^2.9.0"
+ is-my-json-valid "^2.12.4"
+ pinkie-promise "^2.0.0"
+
+har-validator@~4.2.1:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a"
+ dependencies:
+ ajv "^4.9.1"
+ har-schema "^1.0.5"
+
+has-ansi@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
+ dependencies:
+ ansi-regex "^2.0.0"
+
+has-flag@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa"
+
+has-flag@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51"
+
+has-flag@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
+
+has-unicode@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
+
+has-value@^0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
+ dependencies:
+ get-value "^2.0.3"
+ has-values "^0.1.4"
+ isobject "^2.0.0"
+
+has-value@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177"
+ dependencies:
+ get-value "^2.0.6"
+ has-values "^1.0.0"
+ isobject "^3.0.0"
+
+has-values@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771"
+
+has-values@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f"
+ dependencies:
+ is-number "^3.0.0"
+ kind-of "^4.0.0"
+
+has@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28"
+ dependencies:
+ function-bind "^1.0.2"
+
+hash-base@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-2.0.2.tgz#66ea1d856db4e8a5470cadf6fce23ae5244ef2e1"
+ dependencies:
+ inherits "^2.0.1"
+
+hash-base@^3.0.0:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918"
+ dependencies:
+ inherits "^2.0.1"
+ safe-buffer "^5.0.1"
+
+hash.js@^1.0.0, hash.js@^1.0.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846"
+ dependencies:
+ inherits "^2.0.3"
+ minimalistic-assert "^1.0.0"
+
+hawk@3.1.3, hawk@~3.1.3:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4"
+ dependencies:
+ boom "2.x.x"
+ cryptiles "2.x.x"
+ hoek "2.x.x"
+ sntp "1.x.x"
+
+hmac-drbg@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
+ dependencies:
+ hash.js "^1.0.3"
+ minimalistic-assert "^1.0.0"
+ minimalistic-crypto-utils "^1.0.1"
+
+hoek@2.x.x:
+ version "2.16.3"
+ resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed"
+
+home-or-tmp@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8"
+ dependencies:
+ os-homedir "^1.0.0"
+ os-tmpdir "^1.0.1"
+
+hosted-git-info@^2.1.4:
+ version "2.6.0"
+ resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.6.0.tgz#23235b29ab230c576aab0d4f13fc046b0b038222"
+
+hpack.js@^2.1.6:
+ version "2.1.6"
+ resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2"
+ dependencies:
+ inherits "^2.0.1"
+ obuf "^1.0.0"
+ readable-stream "^2.0.1"
+ wbuf "^1.1.0"
+
+html-comment-regex@^1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e"
+
+html-entities@^1.2.0:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f"
+
+htmlparser2@~3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.3.0.tgz#cc70d05a59f6542e43f0e685c982e14c924a9efe"
+ dependencies:
+ domelementtype "1"
+ domhandler "2.1"
+ domutils "1.1"
+ readable-stream "1.0"
+
+http-deceiver@^1.2.7:
+ version "1.2.7"
+ resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87"
+
+http-errors@1.6.2, http-errors@~1.6.2:
+ version "1.6.2"
+ resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736"
+ dependencies:
+ depd "1.1.1"
+ inherits "2.0.3"
+ setprototypeof "1.0.3"
+ statuses ">= 1.3.1 < 2"
+
+http-parser-js@>=0.4.0:
+ version "0.4.11"
+ resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.11.tgz#5b720849c650903c27e521633d94696ee95f3529"
+
+http-proxy-middleware@~0.17.4:
+ version "0.17.4"
+ resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz#642e8848851d66f09d4f124912846dbaeb41b833"
+ dependencies:
+ http-proxy "^1.16.2"
+ is-glob "^3.1.0"
+ lodash "^4.17.2"
+ micromatch "^2.3.11"
+
+http-proxy@^1.16.2:
+ version "1.16.2"
+ resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.16.2.tgz#06dff292952bf64dbe8471fa9df73066d4f37742"
+ dependencies:
+ eventemitter3 "1.x.x"
+ requires-port "1.x.x"
+
+http-signature@~1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf"
+ dependencies:
+ assert-plus "^0.2.0"
+ jsprim "^1.2.2"
+ sshpk "^1.7.0"
+
+https-browserify@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73"
+
+iconv-lite@0.4, iconv-lite@0.4.19:
+ version "0.4.19"
+ resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b"
+
+icss-replace-symbols@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded"
+
+ieee754@^1.1.4:
+ version "1.1.8"
+ resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4"
+
+import-local@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/import-local/-/import-local-1.0.0.tgz#5e4ffdc03f4fe6c009c6729beb29631c2f8227bc"
+ dependencies:
+ pkg-dir "^2.0.0"
+ resolve-cwd "^2.0.0"
+
+in-publish@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.0.tgz#e20ff5e3a2afc2690320b6dc552682a9c7fadf51"
+
+indent-string@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80"
+ dependencies:
+ repeating "^2.0.0"
+
+indexes-of@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607"
+
+indexof@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d"
+
+inflight@^1.0.4:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
+ dependencies:
+ once "^1.3.0"
+ wrappy "1"
+
+inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
+
+inherits@2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1"
+
+ini@~1.3.0:
+ version "1.3.5"
+ resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
+
+internal-ip@1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-1.2.0.tgz#ae9fbf93b984878785d50a8de1b356956058cf5c"
+ dependencies:
+ meow "^3.3.0"
+
+interpret@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614"
+
+invariant@^2.2.2:
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.3.tgz#1a827dfde7dcbd7c323f0ca826be8fa7c5e9d688"
+ dependencies:
+ loose-envify "^1.0.0"
+
+invert-kv@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"
+
+ip@^1.1.0, ip@^1.1.5:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a"
+
+ipaddr.js@1.6.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.6.0.tgz#e3fa357b773da619f26e95f049d055c72796f86b"
+
+is-absolute-url@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6"
+
+is-accessor-descriptor@^0.1.6:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
+ dependencies:
+ kind-of "^3.0.2"
+
+is-accessor-descriptor@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656"
+ dependencies:
+ kind-of "^6.0.0"
+
+is-arrayish@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
+
+is-binary-path@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
+ dependencies:
+ binary-extensions "^1.0.0"
+
+is-buffer@^1.1.5:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
+
+is-builtin-module@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe"
+ dependencies:
+ builtin-modules "^1.0.0"
+
+is-callable@^1.1.1, is-callable@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2"
+
+is-data-descriptor@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
+ dependencies:
+ kind-of "^3.0.2"
+
+is-data-descriptor@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7"
+ dependencies:
+ kind-of "^6.0.0"
+
+is-date-object@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16"
+
+is-descriptor@^0.1.0:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
+ dependencies:
+ is-accessor-descriptor "^0.1.6"
+ is-data-descriptor "^0.1.4"
+ kind-of "^5.0.0"
+
+is-descriptor@^1.0.0, is-descriptor@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec"
+ dependencies:
+ is-accessor-descriptor "^1.0.0"
+ is-data-descriptor "^1.0.0"
+ kind-of "^6.0.2"
+
+is-dotfile@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1"
+
+is-equal-shallow@^0.1.3:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534"
+ dependencies:
+ is-primitive "^2.0.0"
+
+is-extendable@^0.1.0, is-extendable@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
+
+is-extendable@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
+ dependencies:
+ is-plain-object "^2.0.4"
+
+is-extglob@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0"
+
+is-extglob@^2.1.0, is-extglob@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
+
+is-finite@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa"
+ dependencies:
+ number-is-nan "^1.0.0"
+
+is-fullwidth-code-point@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
+ dependencies:
+ number-is-nan "^1.0.0"
+
+is-fullwidth-code-point@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
+
+is-glob@^2.0.0, is-glob@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863"
+ dependencies:
+ is-extglob "^1.0.0"
+
+is-glob@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a"
+ dependencies:
+ is-extglob "^2.1.0"
+
+is-glob@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0"
+ dependencies:
+ is-extglob "^2.1.1"
+
+is-my-ip-valid@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz#7b351b8e8edd4d3995d4d066680e664d94696824"
+
+is-my-json-valid@^2.12.4:
+ version "2.17.2"
+ resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.17.2.tgz#6b2103a288e94ef3de5cf15d29dd85fc4b78d65c"
+ 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"
+
+is-number@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
+ dependencies:
+ kind-of "^3.0.2"
+
+is-number@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
+ dependencies:
+ kind-of "^3.0.2"
+
+is-number@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff"
+
+is-odd@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-2.0.0.tgz#7646624671fd7ea558ccd9a2795182f2958f1b24"
+ dependencies:
+ is-number "^4.0.0"
+
+is-path-cwd@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d"
+
+is-path-in-cwd@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc"
+ dependencies:
+ is-path-inside "^1.0.0"
+
+is-path-inside@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036"
+ dependencies:
+ path-is-inside "^1.0.1"
+
+is-plain-obj@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
+
+is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
+ dependencies:
+ isobject "^3.0.1"
+
+is-posix-bracket@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4"
+
+is-primitive@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575"
+
+is-property@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84"
+
+is-regex@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491"
+ dependencies:
+ has "^1.0.1"
+
+is-stream@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
+
+is-svg@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9"
+ dependencies:
+ html-comment-regex "^1.1.0"
+
+is-symbol@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572"
+
+is-typedarray@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
+
+is-utf8@^0.2.0:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
+
+is-windows@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
+
+is-wsl@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d"
+
+isarray@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
+
+isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
+
+isexe@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
+
+isobject@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
+ dependencies:
+ isarray "1.0.0"
+
+isobject@^3.0.0, isobject@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
+
+isstream@~0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
+
+jquery@^3.3.1:
+ version "3.3.1"
+ resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.3.1.tgz#958ce29e81c9790f31be7792df5d4d95fc57fbca"
+
+js-base64@^2.1.8, js-base64@^2.1.9:
+ version "2.4.3"
+ resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.3.tgz#2e545ec2b0f2957f41356510205214e98fad6582"
+
+js-tokens@^3.0.0, js-tokens@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
+
+js-yaml@~3.7.0:
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80"
+ dependencies:
+ argparse "^1.0.7"
+ esprima "^2.6.0"
+
+jsbn@~0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
+
+jsesc@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b"
+
+jsesc@~0.5.0:
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
+
+json-loader@^0.5.4:
+ version "0.5.7"
+ resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d"
+
+json-schema-traverse@^0.3.0:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340"
+
+json-schema@0.2.3:
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
+
+json-stable-stringify@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af"
+ dependencies:
+ jsonify "~0.0.0"
+
+json-stringify-safe@~5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
+
+json3@^3.3.2:
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1"
+
+json5@^0.5.0, json5@^0.5.1:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
+
+jsonfile@^2.1.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8"
+ optionalDependencies:
+ graceful-fs "^4.1.6"
+
+jsonify@~0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
+
+jsonpointer@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9"
+
+jsprim@^1.2.2:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
+ dependencies:
+ assert-plus "1.0.0"
+ extsprintf "1.3.0"
+ json-schema "0.2.3"
+ verror "1.10.0"
+
+killable@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.0.tgz#da8b84bd47de5395878f95d64d02f2449fe05e6b"
+
+kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
+ version "3.2.2"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
+ dependencies:
+ is-buffer "^1.1.5"
+
+kind-of@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57"
+ dependencies:
+ is-buffer "^1.1.5"
+
+kind-of@^5.0.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d"
+
+kind-of@^6.0.0, kind-of@^6.0.2:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051"
+
+lazy-cache@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e"
+
+lcid@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835"
+ dependencies:
+ invert-kv "^1.0.0"
+
+load-json-file@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
+ 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"
+
+load-json-file@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8"
+ dependencies:
+ graceful-fs "^4.1.2"
+ parse-json "^2.2.0"
+ pify "^2.0.0"
+ strip-bom "^3.0.0"
+
+loader-runner@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2"
+
+loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd"
+ dependencies:
+ big.js "^3.1.3"
+ emojis-list "^2.0.0"
+ json5 "^0.5.0"
+
+locate-path@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e"
+ dependencies:
+ p-locate "^2.0.0"
+ path-exists "^3.0.0"
+
+lodash._baseassign@^3.0.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e"
+ dependencies:
+ lodash._basecopy "^3.0.0"
+ lodash.keys "^3.0.0"
+
+lodash._basecopy@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36"
+
+lodash._bindcallback@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz#e531c27644cf8b57a99e17ed95b35c748789392e"
+
+lodash._createassigner@^3.0.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz#838a5bae2fdaca63ac22dee8e19fa4e6d6970b11"
+ dependencies:
+ lodash._bindcallback "^3.0.0"
+ lodash._isiterateecall "^3.0.0"
+ lodash.restparam "^3.0.0"
+
+lodash._getnative@^3.0.0:
+ version "3.9.1"
+ resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5"
+
+lodash._isiterateecall@^3.0.0:
+ version "3.0.9"
+ resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c"
+
+lodash.assign@^3.0.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-3.2.0.tgz#3ce9f0234b4b2223e296b8fa0ac1fee8ebca64fa"
+ dependencies:
+ lodash._baseassign "^3.0.0"
+ lodash._createassigner "^3.0.0"
+ lodash.keys "^3.0.0"
+
+lodash.assign@^4.0.1, lodash.assign@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7"
+
+lodash.camelcase@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6"
+
+lodash.clonedeep@^4.3.2:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
+
+lodash.defaults@^3.1.2:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-3.1.2.tgz#c7308b18dbf8bc9372d701a73493c61192bd2e2c"
+ dependencies:
+ lodash.assign "^3.0.0"
+ lodash.restparam "^3.0.0"
+
+lodash.defaults@^4.0.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c"
+
+lodash.isarguments@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a"
+
+lodash.isarray@^3.0.0:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55"
+
+lodash.keys@^3.0.0:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a"
+ dependencies:
+ lodash._getnative "^3.0.0"
+ lodash.isarguments "^3.0.0"
+ lodash.isarray "^3.0.0"
+
+lodash.memoize@^4.1.2:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
+
+lodash.mergewith@^4.6.0:
+ version "4.6.1"
+ resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz#639057e726c3afbdb3e7d42741caa8d6e4335927"
+
+lodash.restparam@^3.0.0:
+ version "3.6.1"
+ resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805"
+
+lodash.tail@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/lodash.tail/-/lodash.tail-4.1.1.tgz#d2333a36d9e7717c8ad2f7cacafec7c32b444664"
+
+lodash.uniq@^4.5.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
+
+"lodash@>=3.5 <5", lodash@^4.0.0, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.4, lodash@~4.17.4:
+ version "4.17.5"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511"
+
+loglevel@^1.4.1:
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa"
+
+longest@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097"
+
+loose-envify@^1.0.0:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848"
+ dependencies:
+ js-tokens "^3.0.0"
+
+loud-rejection@^1.0.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f"
+ dependencies:
+ currently-unhandled "^0.4.1"
+ signal-exit "^3.0.0"
+
+lru-cache@^4.0.1:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.2.tgz#45234b2e6e2f2b33da125624c4664929a0224c3f"
+ dependencies:
+ pseudomap "^1.0.2"
+ yallist "^2.1.2"
+
+macaddress@^0.2.8:
+ version "0.2.8"
+ resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12"
+
+make-dir@^1.0.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.2.0.tgz#6d6a49eead4aae296c53bbf3a1a008bd6c89469b"
+ dependencies:
+ pify "^3.0.0"
+
+map-cache@^0.2.2:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
+
+map-obj@^1.0.0, map-obj@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
+
+map-visit@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
+ dependencies:
+ object-visit "^1.0.0"
+
+math-expression-evaluator@^1.2.14:
+ version "1.2.17"
+ resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac"
+
+md5.js@^1.3.4:
+ version "1.3.4"
+ resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.4.tgz#e9bdbde94a20a5ac18b04340fc5764d5b09d901d"
+ dependencies:
+ hash-base "^3.0.0"
+ inherits "^2.0.1"
+
+media-typer@0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
+
+mem@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76"
+ dependencies:
+ mimic-fn "^1.0.0"
+
+memory-fs@^0.4.0, memory-fs@~0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552"
+ dependencies:
+ errno "^0.1.3"
+ readable-stream "^2.0.1"
+
+meow@^3.3.0, meow@^3.7.0:
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb"
+ dependencies:
+ 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"
+
+merge-descriptors@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
+
+methods@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
+
+micromatch@^2.3.11:
+ version "2.3.11"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565"
+ dependencies:
+ 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"
+
+micromatch@^3.1.4:
+ version "3.1.9"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.9.tgz#15dc93175ae39e52e93087847096effc73efcf89"
+ 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.1"
+
+miller-rabin@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d"
+ dependencies:
+ bn.js "^4.0.0"
+ brorand "^1.0.1"
+
+"mime-db@>= 1.33.0 < 2", mime-db@~1.33.0:
+ version "1.33.0"
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db"
+
+mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.18, mime-types@~2.1.7:
+ version "2.1.18"
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8"
+ dependencies:
+ mime-db "~1.33.0"
+
+mime@1.4.1:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6"
+
+mime@^1.5.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
+
+mimic-fn@^1.0.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022"
+
+minimalistic-assert@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3"
+
+minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
+
+"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4, minimatch@~3.0.2:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
+ dependencies:
+ brace-expansion "^1.1.7"
+
+minimist@0.0.8:
+ version "0.0.8"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
+
+minimist@^1.1.3, minimist@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
+
+mixin-deep@^1.2.0:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe"
+ dependencies:
+ for-in "^1.0.2"
+ is-extendable "^1.0.1"
+
+mixin-object@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e"
+ dependencies:
+ for-in "^0.1.3"
+ is-extendable "^0.1.1"
+
+mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
+ dependencies:
+ minimist "0.0.8"
+
+moment@^2.22.0:
+ version "2.22.0"
+ resolved "https://registry.yarnpkg.com/moment/-/moment-2.22.0.tgz#7921ade01017dd45186e7fee5f424f0b8663a730"
+
+ms@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
+
+multicast-dns-service-types@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901"
+
+multicast-dns@^6.0.1:
+ version "6.2.3"
+ resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229"
+ dependencies:
+ dns-packet "^1.3.1"
+ thunky "^1.0.2"
+
+nan@^2.3.0, nan@^2.9.2:
+ version "2.9.2"
+ resolved "https://registry.yarnpkg.com/nan/-/nan-2.9.2.tgz#f564d75f5f8f36a6d9456cca7a6c4fe488ab7866"
+
+nanomatch@^1.2.9:
+ version "1.2.9"
+ resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.9.tgz#879f7150cb2dab7a471259066c104eee6e0fa7c2"
+ 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-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"
+
+negotiator@0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9"
+
+neo-async@^2.5.0:
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.5.0.tgz#76b1c823130cca26acfbaccc8fbaf0a2fa33b18f"
+
+node-forge@0.7.1:
+ version "0.7.1"
+ resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.1.tgz#9da611ea08982f4b94206b3beb4cc9665f20c300"
+
+node-gyp@^3.3.1:
+ version "3.6.2"
+ resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.6.2.tgz#9bfbe54562286284838e750eac05295853fa1c60"
+ dependencies:
+ fstream "^1.0.0"
+ glob "^7.0.3"
+ graceful-fs "^4.1.2"
+ minimatch "^3.0.2"
+ mkdirp "^0.5.0"
+ nopt "2 || 3"
+ npmlog "0 || 1 || 2 || 3 || 4"
+ osenv "0"
+ request "2"
+ rimraf "2"
+ semver "~5.3.0"
+ tar "^2.0.0"
+ which "1"
+
+node-libs-browser@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.1.0.tgz#5f94263d404f6e44767d726901fff05478d600df"
+ 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 "^1.0.0"
+ https-browserify "^1.0.0"
+ os-browserify "^0.3.0"
+ path-browserify "0.0.0"
+ 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"
+ vm-browserify "0.0.4"
+
+node-pre-gyp@^0.6.39:
+ version "0.6.39"
+ resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz#c00e96860b23c0e1420ac7befc5044e1d78d8649"
+ dependencies:
+ detect-libc "^1.0.2"
+ hawk "3.1.3"
+ mkdirp "^0.5.1"
+ nopt "^4.0.1"
+ npmlog "^4.0.2"
+ rc "^1.1.7"
+ request "2.81.0"
+ rimraf "^2.6.1"
+ semver "^5.3.0"
+ tar "^2.2.1"
+ tar-pack "^3.4.0"
+
+node-sass@^4.8.1:
+ version "4.8.1"
+ resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.8.1.tgz#8ad4de07456cc4ba2fa0c808729bec09fa1b5065"
+ dependencies:
+ async-foreach "^0.1.3"
+ chalk "^1.1.1"
+ cross-spawn "^3.0.0"
+ gaze "^1.0.0"
+ get-stdin "^4.0.1"
+ glob "^7.0.3"
+ in-publish "^2.0.0"
+ lodash.assign "^4.2.0"
+ lodash.clonedeep "^4.3.2"
+ lodash.mergewith "^4.6.0"
+ meow "^3.7.0"
+ mkdirp "^0.5.1"
+ nan "^2.9.2"
+ node-gyp "^3.3.1"
+ npmlog "^4.0.0"
+ request "~2.79.0"
+ sass-graph "^2.2.4"
+ stdout-stream "^1.4.0"
+ "true-case-path" "^1.0.2"
+
+"nopt@2 || 3":
+ version "3.0.6"
+ resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9"
+ dependencies:
+ abbrev "1"
+
+nopt@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d"
+ dependencies:
+ abbrev "1"
+ osenv "^0.1.4"
+
+normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f"
+ dependencies:
+ 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@^2.0.1, normalize-path@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
+ dependencies:
+ remove-trailing-separator "^1.0.1"
+
+normalize-range@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
+
+normalize-url@^1.4.0:
+ version "1.9.1"
+ resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c"
+ dependencies:
+ object-assign "^4.0.1"
+ prepend-http "^1.0.0"
+ query-string "^4.1.0"
+ sort-keys "^1.0.0"
+
+npm-run-path@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
+ dependencies:
+ path-key "^2.0.0"
+
+"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@^4.0.2:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
+ dependencies:
+ are-we-there-yet "~1.1.2"
+ console-control-strings "~1.1.0"
+ gauge "~2.7.3"
+ set-blocking "~2.0.0"
+
+nth-check@~1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4"
+ dependencies:
+ boolbase "~1.0.0"
+
+num2fraction@^1.2.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede"
+
+number-is-nan@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
+
+oauth-sign@~0.8.1:
+ version "0.8.2"
+ resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43"
+
+object-assign@^4.0.1, object-assign@^4.1.0:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
+
+object-copy@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c"
+ dependencies:
+ copy-descriptor "^0.1.0"
+ define-property "^0.2.5"
+ kind-of "^3.0.3"
+
+object-keys@^1.0.8:
+ version "1.0.11"
+ resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d"
+
+object-path@^0.9.2:
+ version "0.9.2"
+ resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.9.2.tgz#0fd9a74fc5fad1ae3968b586bda5c632bd6c05a5"
+
+object-visit@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
+ dependencies:
+ isobject "^3.0.0"
+
+object.omit@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa"
+ dependencies:
+ for-own "^0.1.4"
+ is-extendable "^0.1.1"
+
+object.pick@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
+ dependencies:
+ isobject "^3.0.1"
+
+obuf@^1.0.0, obuf@^1.1.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e"
+
+on-finished@~2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
+ dependencies:
+ ee-first "1.1.1"
+
+on-headers@~1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7"
+
+once@^1.3.0, once@^1.3.3:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
+ dependencies:
+ wrappy "1"
+
+opn@^5.1.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/opn/-/opn-5.2.0.tgz#71fdf934d6827d676cecbea1531f95d354641225"
+ dependencies:
+ is-wsl "^1.1.0"
+
+original@>=0.0.5:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/original/-/original-1.0.0.tgz#9147f93fa1696d04be61e01bd50baeaca656bd3b"
+ dependencies:
+ url-parse "1.0.x"
+
+os-browserify@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27"
+
+os-homedir@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
+
+os-locale@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9"
+ dependencies:
+ lcid "^1.0.0"
+
+os-locale@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2"
+ dependencies:
+ execa "^0.7.0"
+ lcid "^1.0.0"
+ mem "^1.1.0"
+
+os-tmpdir@^1.0.0, os-tmpdir@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
+
+osenv@0, osenv@^0.1.4:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410"
+ dependencies:
+ os-homedir "^1.0.0"
+ os-tmpdir "^1.0.0"
+
+p-finally@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
+
+p-limit@^1.1.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.2.0.tgz#0e92b6bedcb59f022c13d0f1949dc82d15909f1c"
+ dependencies:
+ p-try "^1.0.0"
+
+p-locate@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43"
+ dependencies:
+ p-limit "^1.1.0"
+
+p-map@^1.1.1:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b"
+
+p-try@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3"
+
+pako@~1.0.5:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz#0101211baa70c4bca4a0f63f2206e97b7dfaf258"
+
+parse-asn1@^5.0.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.0.tgz#37c4f9b7ed3ab65c74817b5f2480937fbf97c712"
+ 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"
+
+parse-glob@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c"
+ dependencies:
+ glob-base "^0.3.0"
+ is-dotfile "^1.0.0"
+ is-extglob "^1.0.0"
+ is-glob "^2.0.0"
+
+parse-json@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
+ dependencies:
+ error-ex "^1.2.0"
+
+parseurl@~1.3.2:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3"
+
+pascalcase@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
+
+path-browserify@0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a"
+
+path-dirname@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0"
+
+path-exists@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b"
+ dependencies:
+ pinkie-promise "^2.0.0"
+
+path-exists@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
+
+path-is-absolute@^1.0.0, path-is-absolute@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
+
+path-is-inside@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
+
+path-key@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
+
+path-to-regexp@0.1.7:
+ version "0.1.7"
+ resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
+
+path-type@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
+ dependencies:
+ graceful-fs "^4.1.2"
+ pify "^2.0.0"
+ pinkie-promise "^2.0.0"
+
+path-type@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73"
+ dependencies:
+ pify "^2.0.0"
+
+pbkdf2@^3.0.3:
+ version "3.0.14"
+ resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.14.tgz#a35e13c64799b06ce15320f459c230e68e73bade"
+ 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"
+
+performance-now@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5"
+
+pify@^2.0.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
+
+pify@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
+
+pinkie-promise@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
+ dependencies:
+ pinkie "^2.0.0"
+
+pinkie@^2.0.0:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
+
+pkg-dir@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b"
+ dependencies:
+ find-up "^2.1.0"
+
+pkg-up@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-1.0.0.tgz#3e08fb461525c4421624a33b9f7e6d0af5b05a26"
+ dependencies:
+ find-up "^1.0.0"
+
+portfinder@^1.0.9:
+ version "1.0.13"
+ resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.13.tgz#bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9"
+ dependencies:
+ async "^1.5.2"
+ debug "^2.2.0"
+ mkdirp "0.5.x"
+
+posix-character-classes@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
+
+postcss-calc@^5.2.0:
+ version "5.3.1"
+ resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e"
+ dependencies:
+ postcss "^5.0.2"
+ postcss-message-helpers "^2.0.0"
+ reduce-css-calc "^1.2.6"
+
+postcss-colormin@^2.1.8:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-2.2.2.tgz#6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b"
+ dependencies:
+ colormin "^1.0.5"
+ postcss "^5.0.13"
+ postcss-value-parser "^3.2.3"
+
+postcss-convert-values@^2.3.4:
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d"
+ dependencies:
+ postcss "^5.0.11"
+ postcss-value-parser "^3.1.2"
+
+postcss-discard-comments@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d"
+ dependencies:
+ postcss "^5.0.14"
+
+postcss-discard-duplicates@^2.0.1:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz#b9abf27b88ac188158a5eb12abcae20263b91932"
+ dependencies:
+ postcss "^5.0.4"
+
+postcss-discard-empty@^2.0.1:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz#d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5"
+ dependencies:
+ postcss "^5.0.14"
+
+postcss-discard-overridden@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz#8b1eaf554f686fb288cd874c55667b0aa3668d58"
+ dependencies:
+ postcss "^5.0.16"
+
+postcss-discard-unused@^2.2.1:
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz#bce30b2cc591ffc634322b5fb3464b6d934f4433"
+ dependencies:
+ postcss "^5.0.14"
+ uniqs "^2.0.0"
+
+postcss-filter-plugins@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz#6d85862534d735ac420e4a85806e1f5d4286d84c"
+ dependencies:
+ postcss "^5.0.4"
+ uniqid "^4.0.0"
+
+postcss-merge-idents@^2.1.5:
+ version "2.1.7"
+ resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270"
+ dependencies:
+ has "^1.0.1"
+ postcss "^5.0.10"
+ postcss-value-parser "^3.1.1"
+
+postcss-merge-longhand@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz#23d90cd127b0a77994915332739034a1a4f3d658"
+ dependencies:
+ postcss "^5.0.4"
+
+postcss-merge-rules@^2.0.3:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz#d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721"
+ dependencies:
+ browserslist "^1.5.2"
+ caniuse-api "^1.5.2"
+ postcss "^5.0.4"
+ postcss-selector-parser "^2.2.2"
+ vendors "^1.0.0"
+
+postcss-message-helpers@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e"
+
+postcss-minify-font-values@^1.0.2:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz#4b58edb56641eba7c8474ab3526cafd7bbdecb69"
+ dependencies:
+ object-assign "^4.0.1"
+ postcss "^5.0.4"
+ postcss-value-parser "^3.0.2"
+
+postcss-minify-gradients@^1.0.1:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz#5dbda11373703f83cfb4a3ea3881d8d75ff5e6e1"
+ dependencies:
+ postcss "^5.0.12"
+ postcss-value-parser "^3.3.0"
+
+postcss-minify-params@^1.0.4:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz#ad2ce071373b943b3d930a3fa59a358c28d6f1f3"
+ dependencies:
+ alphanum-sort "^1.0.1"
+ postcss "^5.0.2"
+ postcss-value-parser "^3.0.2"
+ uniqs "^2.0.0"
+
+postcss-minify-selectors@^2.0.4:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz#b2c6a98c0072cf91b932d1a496508114311735bf"
+ dependencies:
+ alphanum-sort "^1.0.2"
+ has "^1.0.1"
+ postcss "^5.0.14"
+ postcss-selector-parser "^2.0.0"
+
+postcss-modules-extract-imports@^1.0.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.0.tgz#66140ecece38ef06bf0d3e355d69bf59d141ea85"
+ dependencies:
+ postcss "^6.0.1"
+
+postcss-modules-local-by-default@^1.0.1:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069"
+ dependencies:
+ css-selector-tokenizer "^0.7.0"
+ postcss "^6.0.1"
+
+postcss-modules-scope@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90"
+ dependencies:
+ css-selector-tokenizer "^0.7.0"
+ postcss "^6.0.1"
+
+postcss-modules-values@^1.1.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20"
+ dependencies:
+ icss-replace-symbols "^1.1.0"
+ postcss "^6.0.1"
+
+postcss-normalize-charset@^1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz#ef9ee71212d7fe759c78ed162f61ed62b5cb93f1"
+ dependencies:
+ postcss "^5.0.5"
+
+postcss-normalize-url@^3.0.7:
+ version "3.0.8"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz#108f74b3f2fcdaf891a2ffa3ea4592279fc78222"
+ dependencies:
+ is-absolute-url "^2.0.0"
+ normalize-url "^1.4.0"
+ postcss "^5.0.14"
+ postcss-value-parser "^3.2.3"
+
+postcss-ordered-values@^2.1.0:
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz#eec6c2a67b6c412a8db2042e77fe8da43f95c11d"
+ dependencies:
+ postcss "^5.0.4"
+ postcss-value-parser "^3.0.1"
+
+postcss-reduce-idents@^2.2.2:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz#c2c6d20cc958284f6abfbe63f7609bf409059ad3"
+ dependencies:
+ postcss "^5.0.4"
+ postcss-value-parser "^3.0.2"
+
+postcss-reduce-initial@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz#68f80695f045d08263a879ad240df8dd64f644ea"
+ dependencies:
+ postcss "^5.0.4"
+
+postcss-reduce-transforms@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz#ff76f4d8212437b31c298a42d2e1444025771ae1"
+ dependencies:
+ has "^1.0.1"
+ postcss "^5.0.8"
+ postcss-value-parser "^3.0.1"
+
+postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2:
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90"
+ dependencies:
+ flatten "^1.0.2"
+ indexes-of "^1.0.1"
+ uniq "^1.0.1"
+
+postcss-svgo@^2.1.1:
+ version "2.1.6"
+ resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d"
+ dependencies:
+ is-svg "^2.0.0"
+ postcss "^5.0.14"
+ postcss-value-parser "^3.2.3"
+ svgo "^0.7.0"
+
+postcss-unique-selectors@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz#981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d"
+ dependencies:
+ alphanum-sort "^1.0.1"
+ postcss "^5.0.4"
+ uniqs "^2.0.0"
+
+postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15"
+
+postcss-zindex@^2.0.1:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22"
+ dependencies:
+ has "^1.0.1"
+ postcss "^5.0.4"
+ uniqs "^2.0.0"
+
+postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.16:
+ version "5.2.18"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5"
+ dependencies:
+ chalk "^1.1.3"
+ js-base64 "^2.1.9"
+ source-map "^0.5.6"
+ supports-color "^3.2.3"
+
+postcss@^6.0.1:
+ version "6.0.19"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.19.tgz#76a78386f670b9d9494a655bf23ac012effd1555"
+ dependencies:
+ chalk "^2.3.1"
+ source-map "^0.6.1"
+ supports-color "^5.2.0"
+
+prepend-http@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc"
+
+preserve@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
+
+pretty-error@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3"
+ dependencies:
+ renderkid "^2.0.1"
+ utila "~0.4"
+
+private@^0.1.6, private@^0.1.7:
+ version "0.1.8"
+ resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff"
+
+process-nextick-args@~2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
+
+process@^0.11.10:
+ version "0.11.10"
+ resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
+
+proxy-addr@~2.0.2:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.3.tgz#355f262505a621646b3130a728eb647e22055341"
+ dependencies:
+ forwarded "~0.1.2"
+ ipaddr.js "1.6.0"
+
+prr@~1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
+
+pseudomap@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
+
+public-encrypt@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6"
+ 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"
+
+punycode@1.3.2:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
+
+punycode@^1.2.4, punycode@^1.4.1:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
+
+q@^1.1.2:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
+
+qs@6.5.1:
+ version "6.5.1"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8"
+
+qs@~6.3.0:
+ version "6.3.2"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.2.tgz#e75bd5f6e268122a2a0e0bda630b2550c166502c"
+
+qs@~6.4.0:
+ version "6.4.0"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233"
+
+query-string@^4.1.0:
+ version "4.3.4"
+ resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb"
+ dependencies:
+ object-assign "^4.1.0"
+ strict-uri-encode "^1.0.0"
+
+querystring-es3@^0.2.0:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
+
+querystring@0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
+
+querystringify@0.0.x:
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-0.0.4.tgz#0cf7f84f9463ff0ae51c4c4b142d95be37724d9c"
+
+querystringify@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-1.0.0.tgz#6286242112c5b712fa654e526652bf6a13ff05cb"
+
+randomatic@^1.1.3:
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c"
+ dependencies:
+ is-number "^3.0.0"
+ kind-of "^4.0.0"
+
+randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.6.tgz#d302c522948588848a8d300c932b44c24231da80"
+ dependencies:
+ safe-buffer "^5.1.0"
+
+randomfill@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458"
+ dependencies:
+ randombytes "^2.0.5"
+ safe-buffer "^5.1.0"
+
+range-parser@^1.0.3, range-parser@~1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e"
+
+raw-body@2.3.2:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.2.tgz#bcd60c77d3eb93cde0050295c3f379389bc88f89"
+ dependencies:
+ bytes "3.0.0"
+ http-errors "1.6.2"
+ iconv-lite "0.4.19"
+ unpipe "1.0.0"
+
+rc@^1.1.7:
+ version "1.2.5"
+ resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.5.tgz#275cd687f6e3b36cc756baa26dfee80a790301fd"
+ dependencies:
+ deep-extend "~0.4.0"
+ ini "~1.3.0"
+ minimist "^1.2.0"
+ strip-json-comments "~2.0.1"
+
+read-pkg-up@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
+ dependencies:
+ find-up "^1.0.0"
+ read-pkg "^1.0.0"
+
+read-pkg-up@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be"
+ dependencies:
+ find-up "^2.0.0"
+ read-pkg "^2.0.0"
+
+read-pkg@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28"
+ dependencies:
+ load-json-file "^1.0.0"
+ normalize-package-data "^2.3.2"
+ path-type "^1.0.0"
+
+read-pkg@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8"
+ dependencies:
+ load-json-file "^2.0.0"
+ normalize-package-data "^2.3.2"
+ path-type "^2.0.0"
+
+readable-stream@1.0:
+ version "1.0.34"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c"
+ dependencies:
+ core-util-is "~1.0.0"
+ inherits "~2.0.1"
+ isarray "0.0.1"
+ string_decoder "~0.10.x"
+
+readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.2.9, readable-stream@^2.3.3:
+ version "2.3.5"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.5.tgz#b4f85003a938cbb6ecbce2a124fb1012bd1a838d"
+ 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.0.3"
+ util-deprecate "~1.0.1"
+
+readdirp@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78"
+ dependencies:
+ graceful-fs "^4.1.2"
+ minimatch "^3.0.2"
+ readable-stream "^2.0.2"
+ set-immediate-shim "^1.0.1"
+
+redent@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde"
+ dependencies:
+ indent-string "^2.1.0"
+ strip-indent "^1.0.1"
+
+reduce-css-calc@^1.2.6:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716"
+ dependencies:
+ balanced-match "^0.4.2"
+ math-expression-evaluator "^1.2.14"
+ reduce-function-call "^1.0.1"
+
+reduce-function-call@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/reduce-function-call/-/reduce-function-call-1.0.2.tgz#5a200bf92e0e37751752fe45b0ab330fd4b6be99"
+ dependencies:
+ balanced-match "^0.4.2"
+
+regenerate@^1.2.1:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.3.tgz#0c336d3980553d755c39b586ae3b20aa49c82b7f"
+
+regenerator-runtime@^0.11.0:
+ version "0.11.1"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9"
+
+regenerator-transform@^0.10.0:
+ version "0.10.1"
+ resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd"
+ dependencies:
+ babel-runtime "^6.18.0"
+ babel-types "^6.19.0"
+ private "^0.1.6"
+
+regex-cache@^0.4.2:
+ version "0.4.4"
+ resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd"
+ dependencies:
+ is-equal-shallow "^0.1.3"
+
+regex-not@^1.0.0, regex-not@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
+ dependencies:
+ extend-shallow "^3.0.2"
+ safe-regex "^1.1.0"
+
+regex-parser@^2.2.9:
+ version "2.2.9"
+ resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.9.tgz#a372f45a248b62976a568037c1b6e60a60599192"
+
+regexpu-core@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b"
+ dependencies:
+ regenerate "^1.2.1"
+ regjsgen "^0.2.0"
+ regjsparser "^0.1.4"
+
+regexpu-core@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240"
+ dependencies:
+ regenerate "^1.2.1"
+ regjsgen "^0.2.0"
+ regjsparser "^0.1.4"
+
+regjsgen@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7"
+
+regjsparser@^0.1.4:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c"
+ dependencies:
+ jsesc "~0.5.0"
+
+remove-trailing-separator@^1.0.1:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
+
+renderkid@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.1.tgz#898cabfc8bede4b7b91135a3ffd323e58c0db319"
+ dependencies:
+ css-select "^1.1.0"
+ dom-converter "~0.1"
+ htmlparser2 "~3.3.0"
+ strip-ansi "^3.0.0"
+ utila "~0.3"
+
+repeat-element@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a"
+
+repeat-string@^1.5.2, repeat-string@^1.6.1:
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
+
+repeating@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda"
+ dependencies:
+ is-finite "^1.0.0"
+
+request@2, request@~2.79.0:
+ version "2.79.0"
+ resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de"
+ dependencies:
+ aws-sign2 "~0.6.0"
+ aws4 "^1.2.1"
+ caseless "~0.11.0"
+ combined-stream "~1.0.5"
+ extend "~3.0.0"
+ forever-agent "~0.6.1"
+ form-data "~2.1.1"
+ har-validator "~2.0.6"
+ hawk "~3.1.3"
+ http-signature "~1.1.0"
+ is-typedarray "~1.0.0"
+ isstream "~0.1.2"
+ json-stringify-safe "~5.0.1"
+ mime-types "~2.1.7"
+ oauth-sign "~0.8.1"
+ qs "~6.3.0"
+ stringstream "~0.0.4"
+ tough-cookie "~2.3.0"
+ tunnel-agent "~0.4.1"
+ uuid "^3.0.0"
+
+request@2.81.0:
+ version "2.81.0"
+ resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0"
+ dependencies:
+ aws-sign2 "~0.6.0"
+ aws4 "^1.2.1"
+ caseless "~0.12.0"
+ combined-stream "~1.0.5"
+ extend "~3.0.0"
+ forever-agent "~0.6.1"
+ form-data "~2.1.1"
+ har-validator "~4.2.1"
+ hawk "~3.1.3"
+ http-signature "~1.1.0"
+ is-typedarray "~1.0.0"
+ isstream "~0.1.2"
+ json-stringify-safe "~5.0.1"
+ mime-types "~2.1.7"
+ oauth-sign "~0.8.1"
+ performance-now "^0.2.0"
+ qs "~6.4.0"
+ safe-buffer "^5.0.1"
+ stringstream "~0.0.4"
+ tough-cookie "~2.3.0"
+ tunnel-agent "^0.6.0"
+ uuid "^3.0.0"
+
+require-directory@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
+
+require-main-filename@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1"
+
+requires-port@1.0.x, requires-port@1.x.x, requires-port@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
+
+resolve-cwd@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a"
+ dependencies:
+ resolve-from "^3.0.0"
+
+resolve-from@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748"
+
+resolve-url-loader@^2.0.2:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-2.3.0.tgz#e1b37034d48f22f8cfb9f04c026faaa070fdaf26"
+ dependencies:
+ adjust-sourcemap-loader "^1.1.0"
+ camelcase "^4.1.0"
+ convert-source-map "^1.5.1"
+ loader-utils "^1.1.0"
+ lodash.defaults "^4.0.0"
+ rework "^1.0.1"
+ rework-visit "^1.0.0"
+ source-map "^0.5.7"
+ urix "^0.1.0"
+
+resolve-url@^0.2.1, resolve-url@~0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
+
+ret@~0.1.10:
+ version "0.1.15"
+ resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
+
+rework-visit@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/rework-visit/-/rework-visit-1.0.0.tgz#9945b2803f219e2f7aca00adb8bc9f640f842c9a"
+
+rework@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/rework/-/rework-1.0.1.tgz#30806a841342b54510aa4110850cd48534144aa7"
+ dependencies:
+ convert-source-map "^0.3.3"
+ css "^2.0.0"
+
+right-align@^0.1.1:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef"
+ dependencies:
+ align-text "^0.1.1"
+
+rimraf@2, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.6.1:
+ version "2.6.2"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36"
+ dependencies:
+ glob "^7.0.5"
+
+ripemd160@^2.0.0, ripemd160@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz#0f4584295c53a3628af7e6d79aca21ce57d1c6e7"
+ dependencies:
+ hash-base "^2.0.0"
+ inherits "^2.0.1"
+
+rw@1:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4"
+
+safe-buffer@5.1.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
+
+safe-regex@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
+ dependencies:
+ ret "~0.1.10"
+
+sass-graph@^2.2.4:
+ version "2.2.4"
+ resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.4.tgz#13fbd63cd1caf0908b9fd93476ad43a51d1e0b49"
+ dependencies:
+ glob "^7.0.0"
+ lodash "^4.0.0"
+ scss-tokenizer "^0.2.3"
+ yargs "^7.0.0"
+
+sass-loader@^6.0.7:
+ version "6.0.7"
+ resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-6.0.7.tgz#dd2fdb3e7eeff4a53f35ba6ac408715488353d00"
+ dependencies:
+ clone-deep "^2.0.1"
+ loader-utils "^1.0.1"
+ lodash.tail "^4.1.1"
+ neo-async "^2.5.0"
+ pify "^3.0.0"
+
+sax@~1.2.1:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
+
+schema-utils@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.3.0.tgz#f5877222ce3e931edae039f17eb3716e7137f8cf"
+ dependencies:
+ ajv "^5.0.0"
+
+scss-tokenizer@^0.2.3:
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1"
+ dependencies:
+ js-base64 "^2.1.8"
+ source-map "^0.4.2"
+
+select-hose@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca"
+
+selfsigned@^1.9.1:
+ version "1.10.2"
+ resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.2.tgz#b4449580d99929b65b10a48389301a6592088758"
+ dependencies:
+ node-forge "0.7.1"
+
+"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@~5.3.0:
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
+
+send@0.16.1:
+ version "0.16.1"
+ resolved "https://registry.yarnpkg.com/send/-/send-0.16.1.tgz#a70e1ca21d1382c11d0d9f6231deb281080d7ab3"
+ dependencies:
+ debug "2.6.9"
+ 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"
+ mime "1.4.1"
+ ms "2.0.0"
+ on-finished "~2.3.0"
+ range-parser "~1.2.0"
+ statuses "~1.3.1"
+
+serve-index@^1.7.2:
+ version "1.9.1"
+ resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239"
+ 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"
+
+serve-static@1.13.1:
+ version "1.13.1"
+ resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.1.tgz#4c57d53404a761d8f2e7c1e8a18a47dbf278a719"
+ dependencies:
+ encodeurl "~1.0.1"
+ escape-html "~1.0.3"
+ parseurl "~1.3.2"
+ send "0.16.1"
+
+set-blocking@^2.0.0, set-blocking@~2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
+
+set-immediate-shim@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61"
+
+set-value@^0.4.3:
+ version "0.4.3"
+ resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1"
+ dependencies:
+ 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.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274"
+ dependencies:
+ extend-shallow "^2.0.1"
+ is-extendable "^0.1.1"
+ is-plain-object "^2.0.3"
+ split-string "^3.0.1"
+
+setimmediate@^1.0.4:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
+
+setprototypeof@1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04"
+
+setprototypeof@1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
+
+sha.js@^2.4.0, sha.js@^2.4.8:
+ version "2.4.10"
+ resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.10.tgz#b1fde5cd7d11a5626638a07c604ab909cfa31f9b"
+ dependencies:
+ inherits "^2.0.1"
+ safe-buffer "^5.0.1"
+
+shallow-clone@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-1.0.0.tgz#4480cd06e882ef68b2ad88a3ea54832e2c48b571"
+ dependencies:
+ is-extendable "^0.1.1"
+ kind-of "^5.0.0"
+ mixin-object "^2.0.1"
+
+shebang-command@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
+ dependencies:
+ shebang-regex "^1.0.0"
+
+shebang-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
+
+signal-exit@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
+
+slash@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
+
+snapdragon-node@^2.0.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
+ dependencies:
+ define-property "^1.0.0"
+ isobject "^3.0.0"
+ snapdragon-util "^3.0.1"
+
+snapdragon-util@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2"
+ dependencies:
+ kind-of "^3.2.0"
+
+snapdragon@^0.8.1:
+ version "0.8.2"
+ resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d"
+ 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"
+
+sntp@1.x.x:
+ version "1.0.9"
+ resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198"
+ dependencies:
+ hoek "2.x.x"
+
+sockjs-client@1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.4.tgz#5babe386b775e4cf14e7520911452654016c8b12"
+ dependencies:
+ debug "^2.6.6"
+ eventsource "0.1.6"
+ faye-websocket "~0.11.0"
+ inherits "^2.0.1"
+ json3 "^3.3.2"
+ url-parse "^1.1.8"
+
+sockjs@0.3.19:
+ version "0.3.19"
+ resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.19.tgz#d976bbe800af7bd20ae08598d582393508993c0d"
+ dependencies:
+ faye-websocket "^0.10.0"
+ uuid "^3.0.1"
+
+sort-keys@^1.0.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad"
+ dependencies:
+ is-plain-obj "^1.0.0"
+
+source-list-map@^0.1.7:
+ version "0.1.8"
+ resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106"
+
+source-list-map@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz#aaa47403f7b245a92fbc97ea08f250d6087ed085"
+
+source-map-resolve@^0.3.0:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.3.1.tgz#610f6122a445b8dd51535a2a71b783dfc1248761"
+ dependencies:
+ atob "~1.1.0"
+ resolve-url "~0.2.1"
+ source-map-url "~0.3.0"
+ urix "~0.1.0"
+
+source-map-resolve@^0.5.0:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.1.tgz#7ad0f593f2281598e854df80f19aae4b92d7a11a"
+ dependencies:
+ atob "^2.0.0"
+ decode-uri-component "^0.2.0"
+ resolve-url "^0.2.1"
+ source-map-url "^0.4.0"
+ urix "^0.1.0"
+
+source-map-support@^0.4.15:
+ version "0.4.18"
+ resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f"
+ dependencies:
+ source-map "^0.5.6"
+
+source-map-url@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
+
+source-map-url@~0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.3.0.tgz#7ecaf13b57bcd09da8a40c5d269db33799d4aaf9"
+
+source-map@^0.1.38:
+ version "0.1.43"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346"
+ dependencies:
+ amdefine ">=0.0.4"
+
+source-map@^0.4.2:
+ version "0.4.4"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b"
+ dependencies:
+ amdefine ">=0.0.4"
+
+source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.1:
+ version "0.5.7"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
+
+source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
+
+spdx-correct@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.0.tgz#05a5b4d7153a195bc92c3c425b69f3b2a9524c82"
+ dependencies:
+ spdx-expression-parse "^3.0.0"
+ spdx-license-ids "^3.0.0"
+
+spdx-exceptions@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz#2c7ae61056c714a5b9b9b2b2af7d311ef5c78fe9"
+
+spdx-expression-parse@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0"
+ dependencies:
+ spdx-exceptions "^2.1.0"
+ spdx-license-ids "^3.0.0"
+
+spdx-license-ids@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz#7a7cd28470cc6d3a1cfe6d66886f6bc430d3ac87"
+
+spdy-transport@^2.0.18:
+ version "2.0.20"
+ resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-2.0.20.tgz#735e72054c486b2354fe89e702256004a39ace4d"
+ dependencies:
+ debug "^2.6.8"
+ detect-node "^2.0.3"
+ hpack.js "^2.1.6"
+ obuf "^1.1.1"
+ readable-stream "^2.2.9"
+ safe-buffer "^5.0.1"
+ wbuf "^1.7.2"
+
+spdy@^3.4.1:
+ version "3.4.7"
+ resolved "https://registry.yarnpkg.com/spdy/-/spdy-3.4.7.tgz#42ff41ece5cc0f99a3a6c28aabb73f5c3b03acbc"
+ dependencies:
+ debug "^2.6.8"
+ handle-thing "^1.2.5"
+ http-deceiver "^1.2.7"
+ safe-buffer "^5.0.1"
+ select-hose "^2.0.0"
+ spdy-transport "^2.0.18"
+
+split-string@^3.0.1, split-string@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
+ dependencies:
+ extend-shallow "^3.0.0"
+
+sprintf-js@~1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
+
+sshpk@^1.7.0:
+ version "1.13.1"
+ resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3"
+ dependencies:
+ asn1 "~0.2.3"
+ assert-plus "^1.0.0"
+ dashdash "^1.12.0"
+ getpass "^0.1.1"
+ optionalDependencies:
+ bcrypt-pbkdf "^1.0.0"
+ ecc-jsbn "~0.1.1"
+ jsbn "~0.1.0"
+ tweetnacl "~0.14.0"
+
+stackframe@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.0.4.tgz#357b24a992f9427cba6b545d96a14ed2cbca187b"
+
+static-extend@^0.1.1:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
+ dependencies:
+ define-property "^0.2.5"
+ object-copy "^0.1.0"
+
+"statuses@>= 1.3.1 < 2", statuses@~1.3.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e"
+
+stdout-stream@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.0.tgz#a2c7c8587e54d9427ea9edb3ac3f2cd522df378b"
+ dependencies:
+ readable-stream "^2.0.1"
+
+stream-browserify@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db"
+ dependencies:
+ inherits "~2.0.1"
+ readable-stream "^2.0.2"
+
+stream-http@^2.7.2:
+ version "2.8.0"
+ resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.0.tgz#fd86546dac9b1c91aff8fc5d287b98fafb41bc10"
+ dependencies:
+ builtin-status-codes "^3.0.0"
+ inherits "^2.0.1"
+ readable-stream "^2.3.3"
+ to-arraybuffer "^1.0.0"
+ xtend "^4.0.0"
+
+strict-uri-encode@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713"
+
+string-length@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/string-length/-/string-length-1.0.1.tgz#56970fb1c38558e9e70b728bf3de269ac45adfac"
+ dependencies:
+ strip-ansi "^3.0.0"
+
+string-width@^1.0.1, string-width@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
+ dependencies:
+ code-point-at "^1.0.0"
+ is-fullwidth-code-point "^1.0.0"
+ strip-ansi "^3.0.0"
+
+string-width@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
+ dependencies:
+ is-fullwidth-code-point "^2.0.0"
+ strip-ansi "^4.0.0"
+
+string_decoder@^1.0.0, string_decoder@~1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab"
+ dependencies:
+ safe-buffer "~5.1.0"
+
+string_decoder@~0.10.x:
+ version "0.10.31"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
+
+stringstream@~0.0.4:
+ version "0.0.5"
+ resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878"
+
+strip-ansi@^3.0.0, strip-ansi@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
+ dependencies:
+ ansi-regex "^2.0.0"
+
+strip-ansi@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
+ dependencies:
+ ansi-regex "^3.0.0"
+
+strip-bom@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e"
+ dependencies:
+ is-utf8 "^0.2.0"
+
+strip-bom@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
+
+strip-eof@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
+
+strip-indent@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2"
+ dependencies:
+ get-stdin "^4.0.1"
+
+strip-json-comments@~2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
+
+style-loader@^0.13.2:
+ version "0.13.2"
+ resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.13.2.tgz#74533384cf698c7104c7951150b49717adc2f3bb"
+ dependencies:
+ loader-utils "^1.0.2"
+
+supports-color@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
+
+supports-color@^3.2.3:
+ version "3.2.3"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6"
+ dependencies:
+ has-flag "^1.0.0"
+
+supports-color@^4.2.1:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b"
+ dependencies:
+ has-flag "^2.0.0"
+
+supports-color@^5.1.0, supports-color@^5.2.0, supports-color@^5.3.0:
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.3.0.tgz#5b24ac15db80fa927cf5227a4a33fd3c4c7676c0"
+ dependencies:
+ has-flag "^3.0.0"
+
+svgo@^0.7.0:
+ version "0.7.2"
+ resolved "https://registry.yarnpkg.com/svgo/-/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5"
+ dependencies:
+ coa "~1.0.1"
+ colors "~1.1.2"
+ csso "~2.3.1"
+ js-yaml "~3.7.0"
+ mkdirp "~0.5.1"
+ sax "~1.2.1"
+ whet.extend "~0.9.9"
+
+tapable@^0.2.7:
+ version "0.2.8"
+ resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.8.tgz#99372a5c999bf2df160afc0d74bed4f47948cd22"
+
+tar-pack@^3.4.0:
+ version "3.4.1"
+ resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.1.tgz#e1dbc03a9b9d3ba07e896ad027317eb679a10a1f"
+ dependencies:
+ debug "^2.2.0"
+ fstream "^1.0.10"
+ fstream-ignore "^1.0.5"
+ once "^1.3.3"
+ readable-stream "^2.1.4"
+ rimraf "^2.5.1"
+ tar "^2.2.1"
+ uid-number "^0.0.6"
+
+tar@^2.0.0, tar@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1"
+ dependencies:
+ block-stream "*"
+ fstream "^1.0.2"
+ inherits "2"
+
+thunky@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.0.2.tgz#a862e018e3fb1ea2ec3fce5d55605cf57f247371"
+
+time-stamp@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-2.0.0.tgz#95c6a44530e15ba8d6f4a3ecb8c3a3fac46da357"
+
+timers-browserify@^2.0.4:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.6.tgz#241e76927d9ca05f4d959819022f5b3664b64bae"
+ dependencies:
+ setimmediate "^1.0.4"
+
+to-arraybuffer@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
+
+to-fast-properties@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47"
+
+to-object-path@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af"
+ dependencies:
+ kind-of "^3.0.2"
+
+to-regex-range@^2.1.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38"
+ dependencies:
+ is-number "^3.0.0"
+ repeat-string "^1.6.1"
+
+to-regex@^3.0.1:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
+ dependencies:
+ define-property "^2.0.2"
+ extend-shallow "^3.0.2"
+ regex-not "^1.0.2"
+ safe-regex "^1.1.0"
+
+tough-cookie@~2.3.0:
+ version "2.3.4"
+ resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655"
+ dependencies:
+ punycode "^1.4.1"
+
+trim-newlines@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613"
+
+trim-right@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
+
+"true-case-path@^1.0.2":
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-1.0.2.tgz#7ec91130924766c7f573be3020c34f8fdfd00d62"
+ dependencies:
+ glob "^6.0.4"
+
+tty-browserify@0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
+
+tunnel-agent@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
+ dependencies:
+ safe-buffer "^5.0.1"
+
+tunnel-agent@~0.4.1:
+ version "0.4.3"
+ resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb"
+
+tweetnacl@^0.14.3, tweetnacl@~0.14.0:
+ version "0.14.5"
+ resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
+
+type-is@~1.6.15:
+ version "1.6.16"
+ resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194"
+ dependencies:
+ media-typer "0.3.0"
+ mime-types "~2.1.18"
+
+uglify-js@^2.8.29:
+ version "2.8.29"
+ resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd"
+ dependencies:
+ source-map "~0.5.1"
+ yargs "~3.10.0"
+ optionalDependencies:
+ uglify-to-browserify "~1.0.0"
+
+uglify-to-browserify@~1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7"
+
+uglifyjs-webpack-plugin@^0.4.6:
+ version "0.4.6"
+ resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz#b951f4abb6bd617e66f63eb891498e391763e309"
+ dependencies:
+ source-map "^0.5.6"
+ uglify-js "^2.8.29"
+ webpack-sources "^1.0.1"
+
+uid-number@^0.0.6:
+ version "0.0.6"
+ resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81"
+
+union-value@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4"
+ dependencies:
+ arr-union "^3.1.0"
+ get-value "^2.0.6"
+ is-extendable "^0.1.1"
+ set-value "^0.4.3"
+
+uniq@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff"
+
+uniqid@^4.0.0:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/uniqid/-/uniqid-4.1.1.tgz#89220ddf6b751ae52b5f72484863528596bb84c1"
+ dependencies:
+ macaddress "^0.2.8"
+
+uniqs@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02"
+
+unpipe@1.0.0, unpipe@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
+
+unset-value@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
+ dependencies:
+ has-value "^0.3.1"
+ isobject "^3.0.0"
+
+upath@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/upath/-/upath-1.0.4.tgz#ee2321ba0a786c50973db043a50b7bcba822361d"
+
+urix@^0.1.0, urix@~0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
+
+url-parse@1.0.x:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.0.5.tgz#0854860422afdcfefeb6c965c662d4800169927b"
+ dependencies:
+ querystringify "0.0.x"
+ requires-port "1.0.x"
+
+url-parse@^1.1.8:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.2.0.tgz#3a19e8aaa6d023ddd27dcc44cb4fc8f7fec23986"
+ dependencies:
+ querystringify "~1.0.0"
+ requires-port "~1.0.0"
+
+url@^0.11.0:
+ version "0.11.0"
+ resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
+ dependencies:
+ punycode "1.3.2"
+ querystring "0.2.0"
+
+use@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/use/-/use-3.1.0.tgz#14716bf03fdfefd03040aef58d8b4b85f3a7c544"
+ dependencies:
+ kind-of "^6.0.2"
+
+util-deprecate@~1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
+
+util@0.10.3, util@^0.10.3:
+ version "0.10.3"
+ resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9"
+ dependencies:
+ inherits "2.0.1"
+
+utila@~0.3:
+ version "0.3.3"
+ resolved "https://registry.yarnpkg.com/utila/-/utila-0.3.3.tgz#d7e8e7d7e309107092b05f8d9688824d633a4226"
+
+utila@~0.4:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c"
+
+utils-merge@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
+
+uuid@^3.0.0, uuid@^3.0.1:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14"
+
+validate-npm-package-license@^3.0.1:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz#81643bcbef1bdfecd4623793dc4648948ba98338"
+ dependencies:
+ spdx-correct "^3.0.0"
+ spdx-expression-parse "^3.0.0"
+
+vary@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
+
+vendors@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.1.tgz#37ad73c8ee417fb3d580e785312307d274847f22"
+
+verror@1.10.0:
+ version "1.10.0"
+ resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
+ dependencies:
+ assert-plus "^1.0.0"
+ core-util-is "1.0.2"
+ extsprintf "^1.2.0"
+
+vm-browserify@0.0.4:
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73"
+ dependencies:
+ indexof "0.0.1"
+
+watchpack@^1.4.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.5.0.tgz#231e783af830a22f8966f65c4c4bacc814072eed"
+ dependencies:
+ chokidar "^2.0.2"
+ graceful-fs "^4.1.2"
+ neo-async "^2.5.0"
+
+wbuf@^1.1.0, wbuf@^1.7.2:
+ version "1.7.3"
+ resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df"
+ dependencies:
+ minimalistic-assert "^1.0.0"
+
+webpack-chunk-hash@^0.5.0:
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/webpack-chunk-hash/-/webpack-chunk-hash-0.5.0.tgz#1dba38203d73c1e6ab069b6810a5a37402399dec"
+ dependencies:
+ "@types/webpack" "^3.0.5"
+
+webpack-dev-middleware@1.12.2:
+ version "1.12.2"
+ resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz#f8fc1120ce3b4fc5680ceecb43d777966b21105e"
+ dependencies:
+ memory-fs "~0.4.1"
+ mime "^1.5.0"
+ path-is-absolute "^1.0.0"
+ range-parser "^1.0.3"
+ time-stamp "^2.0.0"
+
+webpack-dev-server@^2.4.5:
+ version "2.11.2"
+ resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-2.11.2.tgz#1f4f4c78bf1895378f376815910812daf79a216f"
+ dependencies:
+ ansi-html "0.0.7"
+ array-includes "^3.0.3"
+ bonjour "^3.5.0"
+ chokidar "^2.0.0"
+ compression "^1.5.2"
+ connect-history-api-fallback "^1.3.0"
+ debug "^3.1.0"
+ del "^3.0.0"
+ express "^4.16.2"
+ html-entities "^1.2.0"
+ http-proxy-middleware "~0.17.4"
+ import-local "^1.0.0"
+ internal-ip "1.2.0"
+ ip "^1.1.5"
+ killable "^1.0.0"
+ loglevel "^1.4.1"
+ opn "^5.1.0"
+ portfinder "^1.0.9"
+ selfsigned "^1.9.1"
+ serve-index "^1.7.2"
+ sockjs "0.3.19"
+ sockjs-client "1.1.4"
+ spdy "^3.4.1"
+ strip-ansi "^3.0.0"
+ supports-color "^5.1.0"
+ webpack-dev-middleware "1.12.2"
+ yargs "6.6.0"
+
+webpack-sources@^1.0.1:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.1.0.tgz#a101ebae59d6507354d71d8013950a3a8b7a5a54"
+ dependencies:
+ source-list-map "^2.0.0"
+ source-map "~0.6.1"
+
+"webpack@>=2.2.0 <4":
+ version "3.11.0"
+ resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.11.0.tgz#77da451b1d7b4b117adaf41a1a93b5742f24d894"
+ dependencies:
+ acorn "^5.0.0"
+ acorn-dynamic-import "^2.0.0"
+ ajv "^6.1.0"
+ ajv-keywords "^3.1.0"
+ async "^2.1.2"
+ enhanced-resolve "^3.4.0"
+ escope "^3.6.0"
+ interpret "^1.0.0"
+ json-loader "^0.5.4"
+ json5 "^0.5.1"
+ loader-runner "^2.3.0"
+ loader-utils "^1.1.0"
+ memory-fs "~0.4.1"
+ mkdirp "~0.5.0"
+ node-libs-browser "^2.0.0"
+ source-map "^0.5.3"
+ supports-color "^4.2.1"
+ tapable "^0.2.7"
+ uglifyjs-webpack-plugin "^0.4.6"
+ watchpack "^1.4.0"
+ webpack-sources "^1.0.1"
+ yargs "^8.0.2"
+
+websocket-driver@>=0.5.1:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.0.tgz#0caf9d2d755d93aee049d4bdd0d3fe2cca2a24eb"
+ dependencies:
+ http-parser-js ">=0.4.0"
+ websocket-extensions ">=0.1.1"
+
+websocket-extensions@>=0.1.1:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29"
+
+whet.extend@~0.9.9:
+ version "0.9.9"
+ resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1"
+
+which-module@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f"
+
+which-module@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
+
+which@1, which@^1.2.9:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a"
+ dependencies:
+ isexe "^2.0.0"
+
+wide-align@^1.1.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710"
+ dependencies:
+ string-width "^1.0.2"
+
+window-size@0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d"
+
+wordwrap@0.0.2:
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f"
+
+wrap-ansi@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"
+ dependencies:
+ string-width "^1.0.1"
+ strip-ansi "^3.0.1"
+
+wrappy@1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
+
+xtend@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
+
+y18n@^3.2.1:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41"
+
+yallist@^2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
+
+yargs-parser@^4.2.0:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c"
+ dependencies:
+ camelcase "^3.0.0"
+
+yargs-parser@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a"
+ dependencies:
+ camelcase "^3.0.0"
+
+yargs-parser@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9"
+ dependencies:
+ camelcase "^4.1.0"
+
+yargs@6.6.0:
+ version "6.6.0"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208"
+ 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"
+
+yargs@^7.0.0:
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8"
+ 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 "^5.0.0"
+
+yargs@^8.0.1, yargs@^8.0.2:
+ version "8.0.2"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360"
+ dependencies:
+ camelcase "^4.1.0"
+ cliui "^3.2.0"
+ decamelize "^1.1.1"
+ get-caller-file "^1.0.1"
+ os-locale "^2.0.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.0.0"
+ which-module "^2.0.0"
+ y18n "^3.2.1"
+ yargs-parser "^7.0.0"
+
+yargs@~3.10.0:
+ version "3.10.0"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1"
+ dependencies:
+ camelcase "^1.0.2"
+ cliui "^2.1.0"
+ decamelize "^1.0.0"
+ window-size "0.1.0"