summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ofborg/ofborg-viewer/.eslintrc.js290
-rw-r--r--ofborg/ofborg-viewer/.gitignore5
-rw-r--r--ofborg/ofborg-viewer/.ignore7
-rw-r--r--ofborg/ofborg-viewer/LICENSE21
-rw-r--r--ofborg/ofborg-viewer/README.md29
-rwxr-xr-xofborg/ofborg-viewer/bin/bump-version38
-rwxr-xr-xofborg/ofborg-viewer/bin/eslint9
-rwxr-xr-xofborg/ofborg-viewer/bin/webpack9
-rwxr-xr-xofborg/ofborg-viewer/bin/webpack-dev-server9
-rwxr-xr-xofborg/ofborg-viewer/bin/yarn2nix-update.sh24
-rw-r--r--ofborg/ofborg-viewer/build.js72
-rw-r--r--ofborg/ofborg-viewer/default.nix14
-rw-r--r--ofborg/ofborg-viewer/package-lock.json924
-rw-r--r--ofborg/ofborg-viewer/package.json19
-rw-r--r--ofborg/ofborg-viewer/release.nix34
-rw-r--r--ofborg/ofborg-viewer/src/app.html22
-rw-r--r--ofborg/ofborg-viewer/src/app.js201
-rw-r--r--ofborg/ofborg-viewer/src/backlog.js8
-rw-r--r--ofborg/ofborg-viewer/src/config.js9
-rw-r--r--ofborg/ofborg-viewer/src/gui/index.js158
-rw-r--r--ofborg/ofborg-viewer/src/gui/log.js162
-rw-r--r--ofborg/ofborg-viewer/src/index.js40
-rw-r--r--ofborg/ofborg-viewer/src/lib/bsod.js16
-rw-r--r--ofborg/ofborg-viewer/src/lib/html.js11
-rw-r--r--ofborg/ofborg-viewer/src/lib/ready.js12
-rw-r--r--ofborg/ofborg-viewer/src/listener.js90
-rw-r--r--ofborg/ofborg-viewer/src/mixins/eventable.js48
-rw-r--r--ofborg/ofborg-viewer/src/state.js59
-rw-r--r--ofborg/ofborg-viewer/src/styles/index.less233
-rw-r--r--ofborg/ofborg-viewer/webpack.config.js43
-rw-r--r--ofborg/ofborg-viewer/webpack/revision.js39
-rw-r--r--ofborg/ofborg-viewer/yarn.nix6782
-rw-r--r--ofborg/ofborg-viewer/yarn2nix.json7
33 files changed, 9444 insertions, 0 deletions
diff --git a/ofborg/ofborg-viewer/.eslintrc.js b/ofborg/ofborg-viewer/.eslintrc.js
new file mode 100644
index 0000000000..f9a1078cb7
--- /dev/null
+++ b/ofborg/ofborg-viewer/.eslintrc.js
@@ -0,0 +1,290 @@
+module.exports = {
+ "env": {
+ "browser": true,
+ "es6": true
+ },
+ "extends": "eslint:recommended",
+ "parserOptions": {
+ "sourceType": "module"
+ },
+ "rules": {
+ "accessor-pairs": "error",
+ "array-bracket-newline": "error",
+ "array-bracket-spacing": "error",
+ "array-callback-return": "error",
+ "array-element-newline": "error",
+ "arrow-body-style": "error",
+ "arrow-parens": [
+ "error",
+ "always"
+ ],
+ "arrow-spacing": [
+ "error",
+ {
+ "after": true,
+ "before": true
+ }
+ ],
+ "block-scoped-var": "error",
+ "block-spacing": "error",
+ "brace-style": "off",
+ "callback-return": "error",
+ "camelcase": "off",
+ "capitalized-comments": "off",
+ "class-methods-use-this": "error",
+ "comma-dangle": "off",
+ "comma-spacing": [
+ "error",
+ {
+ "after": true,
+ "before": false
+ }
+ ],
+ "comma-style": [
+ "error",
+ "last"
+ ],
+ "complexity": "error",
+ "computed-property-spacing": [
+ "error",
+ "never"
+ ],
+ "consistent-return": "off",
+ "consistent-this": "error",
+ "curly": "error",
+ "default-case": "error",
+ "dot-location": "off",
+ "dot-notation": "off",
+ "eol-last": "error",
+ "eqeqeq": "error",
+ "for-direction": "error",
+ "func-call-spacing": "error",
+ "func-name-matching": "error",
+ "func-style": "off",
+ "function-paren-newline": "off",
+ "generator-star-spacing": "error",
+ "getter-return": "error",
+ "global-require": "error",
+ "guard-for-in": "error",
+ "handle-callback-err": "error",
+ "id-blacklist": "error",
+ "id-length": "off",
+ "id-match": "error",
+ "implicit-arrow-linebreak": [
+ "error",
+ "beside"
+ ],
+ "indent": ["error", "tab"],
+ "indent-legacy": "off",
+ "init-declarations": "error",
+ "jsx-quotes": "error",
+ "key-spacing": "error",
+ "keyword-spacing": "off",
+ "line-comment-position": "error",
+ "linebreak-style": [
+ "error",
+ "unix"
+ ],
+ "lines-around-comment": "error",
+ "lines-around-directive": "error",
+ "lines-between-class-members": [
+ "error",
+ "always"
+ ],
+ "max-depth": "error",
+ "max-len": "off",
+ "max-lines": "error",
+ "max-nested-callbacks": "error",
+ "max-params": "error",
+ "max-statements": "off",
+ "max-statements-per-line": "error",
+ "multiline-comment-style": [
+ "error",
+ "separate-lines"
+ ],
+ "new-cap": "error",
+ "new-parens": "error",
+ "newline-after-var": "off",
+ "newline-before-return": "off",
+ "newline-per-chained-call": "error",
+ "no-alert": "error",
+ "no-array-constructor": "error",
+ "no-await-in-loop": "error",
+ "no-bitwise": "error",
+ "no-buffer-constructor": "error",
+ "no-caller": "error",
+ "no-catch-shadow": "error",
+ "no-confusing-arrow": "error",
+ "no-continue": "error",
+ "no-div-regex": "error",
+ "no-duplicate-imports": "error",
+ "no-else-return": "error",
+ "no-empty-function": "error",
+ "no-eq-null": "error",
+ "no-eval": "error",
+ "no-extend-native": "error",
+ "no-extra-bind": "error",
+ "no-extra-label": "error",
+ "no-extra-parens": "error",
+ "no-floating-decimal": "error",
+ "no-implicit-globals": "error",
+ "no-implied-eval": "error",
+ "no-inline-comments": "error",
+ "no-inner-declarations": [
+ "error",
+ "functions"
+ ],
+ "no-invalid-this": "error",
+ "no-iterator": "error",
+ "no-label-var": "error",
+ "no-labels": "error",
+ "no-lone-blocks": "error",
+ "no-lonely-if": "error",
+ "no-loop-func": "error",
+ "no-magic-numbers": "off",
+ "no-mixed-operators": "error",
+ "no-mixed-requires": "error",
+ "no-multi-assign": "error",
+ "no-multi-spaces": "error",
+ "no-multi-str": "error",
+ "no-multiple-empty-lines": "error",
+ "no-native-reassign": "error",
+ "no-negated-condition": "error",
+ "no-negated-in-lhs": "error",
+ "no-nested-ternary": "error",
+ "no-new": "error",
+ "no-new-func": "error",
+ "no-new-object": "error",
+ "no-new-require": "error",
+ "no-new-wrappers": "error",
+ "no-octal-escape": "error",
+ "no-param-reassign": "error",
+ "no-path-concat": "error",
+ "no-plusplus": [
+ "error",
+ {
+ "allowForLoopAfterthoughts": true
+ }
+ ],
+ "no-process-env": "error",
+ "no-process-exit": "error",
+ "no-proto": "error",
+ "no-prototype-builtins": "error",
+ "no-restricted-globals": "error",
+ "no-restricted-imports": "error",
+ "no-restricted-modules": "error",
+ "no-restricted-properties": "error",
+ "no-restricted-syntax": "error",
+ "no-return-assign": "error",
+ "no-return-await": "error",
+ "no-script-url": "error",
+ "no-self-compare": "error",
+ "no-sequences": "error",
+ "no-shadow": "error",
+ "no-shadow-restricted-names": "error",
+ "no-spaced-func": "error",
+ "no-sync": "error",
+ "no-tabs": "off",
+ "no-template-curly-in-string": "error",
+ "no-ternary": "off",
+ "no-throw-literal": "error",
+ "no-undef-init": "error",
+ "no-undefined": "error",
+ "no-underscore-dangle": "error",
+ "no-unmodified-loop-condition": "error",
+ "no-unneeded-ternary": "error",
+ "no-unused-expressions": "error",
+ "no-use-before-define": "error",
+ "no-useless-call": "error",
+ "no-useless-computed-key": "error",
+ "no-useless-concat": "error",
+ "no-useless-constructor": "error",
+ "no-useless-rename": "error",
+ "no-useless-return": "error",
+ "no-var": "off",
+ "no-void": "error",
+ "no-warning-comments": "warn",
+ "no-whitespace-before-property": "error",
+ "no-with": "error",
+ "nonblock-statement-body-position": "error",
+ "object-curly-newline": "error",
+ "object-curly-spacing": [
+ "error",
+ "never"
+ ],
+ "object-property-newline": "error",
+ "object-shorthand": "error",
+ "one-var": "off",
+ "one-var-declaration-per-line": "error",
+ "operator-assignment": [
+ "error",
+ "always"
+ ],
+ "operator-linebreak": "error",
+ "padded-blocks": "off",
+ "padding-line-between-statements": "error",
+ "prefer-arrow-callback": "error",
+ "prefer-const": "error",
+ "prefer-destructuring": "off",
+ "prefer-numeric-literals": "error",
+ "prefer-promise-reject-errors": "error",
+ "prefer-reflect": "error",
+ "prefer-rest-params": "error",
+ "prefer-spread": "error",
+ "prefer-template": "off",
+ "quote-props": "off",
+ "quotes": "off",
+ "radix": "error",
+ "require-await": "error",
+ "require-jsdoc": "off",
+ "rest-spread-spacing": [
+ "error",
+ "never"
+ ],
+ "semi": ["error"],
+ "semi-spacing": [
+ "error",
+ {
+ "after": false,
+ "before": false
+ }
+ ],
+ "semi-style": "off",
+ "sort-imports": "off",
+ "sort-keys": "off",
+ "sort-vars": "error",
+ "space-before-blocks": "off",
+ "space-before-function-paren": "off",
+ "space-in-parens": [
+ "error",
+ "never"
+ ],
+ "space-infix-ops": "off",
+ "space-unary-ops": "error",
+ "spaced-comment": [
+ "error",
+ "always"
+ ],
+ "strict": "error",
+ "switch-colon-spacing": "error",
+ "symbol-description": "error",
+ "template-curly-spacing": [
+ "error",
+ "never"
+ ],
+ "template-tag-spacing": "error",
+ "unicode-bom": [
+ "error",
+ "never"
+ ],
+ "valid-jsdoc": "off",
+ "vars-on-top": "off",
+ "wrap-iife": "error",
+ "wrap-regex": "error",
+ "yield-star-spacing": "error",
+ "yoda": [
+ "error",
+ "never"
+ ]
+ }
+};
diff --git a/ofborg/ofborg-viewer/.gitignore b/ofborg/ofborg-viewer/.gitignore
new file mode 100644
index 0000000000..c623cc8525
--- /dev/null
+++ b/ofborg/ofborg-viewer/.gitignore
@@ -0,0 +1,5 @@
+node_modules
+dist
+build
+result
+website
diff --git a/ofborg/ofborg-viewer/.ignore b/ofborg/ofborg-viewer/.ignore
new file mode 100644
index 0000000000..456c68cab0
--- /dev/null
+++ b/ofborg/ofborg-viewer/.ignore
@@ -0,0 +1,7 @@
+# No need for all those files.
+default.nix
+package.json
+release.nix
+yarn.lock
+yarn.nix
+yarn2nix.json
diff --git a/ofborg/ofborg-viewer/LICENSE b/ofborg/ofborg-viewer/LICENSE
new file mode 100644
index 0000000000..fad649f1ed
--- /dev/null
+++ b/ofborg/ofborg-viewer/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2018 Samuel Dionne-Riel
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/ofborg/ofborg-viewer/README.md b/ofborg/ofborg-viewer/README.md
new file mode 100644
index 0000000000..45eb7b155e
--- /dev/null
+++ b/ofborg/ofborg-viewer/README.md
@@ -0,0 +1,29 @@
+`tickborg-viewer`
+===============
+
+An as-light-as possible viewer for tickborg build logs.
+
+Development use
+---------------
+
+```
+ $ nix-shell
+ $ yarn install
+ $ bin/webpack-dev-server
+```
+
+Building (production)
+---------------------
+
+```
+ $ nix-build ./release.nix
+```
+
+Peculiarities
+-------------
+
+This uses the DOM directly and no fancy virtual dom thing, this anyway
+is an append-mostly type thing.
+
+This uses as few libraries as possible (and sane). Modern JS with ES6
+makes it possible to write lean code when targetting modern browsers.
diff --git a/ofborg/ofborg-viewer/bin/bump-version b/ofborg/ofborg-viewer/bin/bump-version
new file mode 100755
index 0000000000..3ac6cefc04
--- /dev/null
+++ b/ofborg/ofborg-viewer/bin/bump-version
@@ -0,0 +1,38 @@
+#!/usr/bin/env nix-shell
+#!ruby
+#!nix-shell -p gitMinimal -p ruby -i ruby
+
+require "json"
+
+VERSION_MATCHER = /\A\d+\.\d+\.\d+\z/;
+NPM_FORMAT = {
+ indent: " ",
+ space: " ",
+ object_nl: "\n",
+ array_nl: "\n",
+}
+
+$version = ARGV.first
+
+unless $version
+ STDERR.puts "Needs a new version number.\n"
+ exit 1
+end
+
+unless $version.match(VERSION_MATCHER)
+ STDERR.puts "Argument is not a valid version number.\n"
+ exit 1
+end
+
+Dir.chdir(File.expand_path(File.join(__dir__(), ".."))) do
+ data = JSON.parse(File.read("package.json"))
+ data["version"] = $version
+ File.write("package.json", JSON.generate(data, NPM_FORMAT) + "\n")
+ `git add package.json`
+ `git commit -m "Bumps to v#{$version}" package.json`
+ `git tag v#{$version}`
+end
+
+puts "Don't forget to `git push && git push --tags`";
+
+# vim: ft=ruby
diff --git a/ofborg/ofborg-viewer/bin/eslint b/ofborg/ofborg-viewer/bin/eslint
new file mode 100755
index 0000000000..9b00a1274c
--- /dev/null
+++ b/ofborg/ofborg-viewer/bin/eslint
@@ -0,0 +1,9 @@
+#!/usr/bin/env bash
+
+set -e
+set -u
+
+this_dir="$(dirname "${BASH_SOURCE[0]}")"
+this_name="${BASH_SOURCE[0]##*/}"
+
+exec "$this_dir/../node_modules/.bin/$this_name" "$@"
diff --git a/ofborg/ofborg-viewer/bin/webpack b/ofborg/ofborg-viewer/bin/webpack
new file mode 100755
index 0000000000..9b00a1274c
--- /dev/null
+++ b/ofborg/ofborg-viewer/bin/webpack
@@ -0,0 +1,9 @@
+#!/usr/bin/env bash
+
+set -e
+set -u
+
+this_dir="$(dirname "${BASH_SOURCE[0]}")"
+this_name="${BASH_SOURCE[0]##*/}"
+
+exec "$this_dir/../node_modules/.bin/$this_name" "$@"
diff --git a/ofborg/ofborg-viewer/bin/webpack-dev-server b/ofborg/ofborg-viewer/bin/webpack-dev-server
new file mode 100755
index 0000000000..9b00a1274c
--- /dev/null
+++ b/ofborg/ofborg-viewer/bin/webpack-dev-server
@@ -0,0 +1,9 @@
+#!/usr/bin/env bash
+
+set -e
+set -u
+
+this_dir="$(dirname "${BASH_SOURCE[0]}")"
+this_name="${BASH_SOURCE[0]##*/}"
+
+exec "$this_dir/../node_modules/.bin/$this_name" "$@"
diff --git a/ofborg/ofborg-viewer/bin/yarn2nix-update.sh b/ofborg/ofborg-viewer/bin/yarn2nix-update.sh
new file mode 100755
index 0000000000..c085156971
--- /dev/null
+++ b/ofborg/ofborg-viewer/bin/yarn2nix-update.sh
@@ -0,0 +1,24 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -p bash -p git -p nix-prefetch-git -i bash
+
+set -eux
+set -o pipefail
+
+nix-prefetch-git https://github.com/moretea/yarn2nix.git > yarn2nix.json
+
+rm -rf scratch
+mkdir scratch
+
+(
+ cd scratch
+
+ git clone git@github.com:moretea/yarn2nix.git
+
+ (
+ cd yarn2nix
+ nix-build . -A yarn2nix
+ )
+)
+
+./scratch/yarn2nix/result/bin/yarn2nix > yarn.nix
+rm -rf scratch
diff --git a/ofborg/ofborg-viewer/build.js b/ofborg/ofborg-viewer/build.js
new file mode 100644
index 0000000000..bcdcbc889f
--- /dev/null
+++ b/ofborg/ofborg-viewer/build.js
@@ -0,0 +1,72 @@
+#!/usr/bin/env node
+/**
+ * Build script for tickborg-viewer.
+ * Replaces ancient webpack 3 + Node 6 setup with esbuild.
+ */
+const { execSync } = require("child_process");
+const fs = require("fs");
+const path = require("path");
+
+const ROOT = __dirname;
+const DIST = path.join(ROOT, "dist");
+
+// Ensure dist/
+if (!fs.existsSync(DIST)) {
+ fs.mkdirSync(DIST, { recursive: true });
+}
+
+// 1. Get git revision + version
+let GIT_REVISION = "";
+const revFile = path.join(ROOT, ".git-revision");
+if (fs.existsSync(revFile)) {
+ GIT_REVISION = fs.readFileSync(revFile, "utf-8").trim();
+} else {
+ try {
+ GIT_REVISION = execSync("git rev-parse --short HEAD", { cwd: ROOT, encoding: "utf-8" }).trim();
+ } catch (e) {
+ // ignore
+ }
+}
+const VERSION = JSON.parse(fs.readFileSync(path.join(ROOT, "package.json"), "utf-8")).version;
+
+// 2. Compile LESS → CSS
+console.log("Compiling LESS...");
+const lessFile = path.join(ROOT, "src/styles/index.less");
+const cssOutput = execSync(`npx lessc ${lessFile}`, { encoding: "utf-8" });
+
+// 3. Build JS bundle with esbuild
+console.log("Bundling JS...");
+execSync(
+ `npx esbuild src/index.js --bundle --outfile=dist/bundle.js --format=iife --target=es2018 --minify ` +
+ `--define:GIT_REVISION='"${GIT_REVISION}"' --define:VERSION='"${VERSION}"'`,
+ { cwd: ROOT, stdio: "inherit" }
+);
+
+// 4. Generate index.html
+console.log("Generating HTML...");
+const html = `<!DOCTYPE html>
+<html>
+<head>
+ <meta name="theme-color" content="#AFFFFF">
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
+ <meta charset="utf-8">
+ <title>TickBorg Log Viewer</title>
+ <style>
+${cssOutput}
+ </style>
+</head>
+<body>
+ <div id="tickborg-logviewer">
+ <div class="app">
+ <div class="loading">
+ <strong>Loading...</strong>
+ <em>you may need to enable some JavaScript for this to work.</em>
+ </div>
+ </div>
+ </div>
+ <script src="bundle.js"></script>
+</body>
+</html>`;
+
+fs.writeFileSync(path.join(DIST, "index.html"), html);
+console.log(`Build complete → ${DIST}/`);
diff --git a/ofborg/ofborg-viewer/default.nix b/ofborg/ofborg-viewer/default.nix
new file mode 100644
index 0000000000..5d75e9b5fd
--- /dev/null
+++ b/ofborg/ofborg-viewer/default.nix
@@ -0,0 +1,14 @@
+{ pkgs ? import <nixpkgs> {} }:
+with pkgs;
+stdenv.mkDerivation rec {
+ name = "tickborg-logviewer-env";
+ buildInputs = [
+ nodejs-6_x
+ yarn
+ ];
+
+ passthru = {
+ # Allows use of a tarball URL.
+ release = (import ./release.nix {inherit pkgs;});
+ };
+}
diff --git a/ofborg/ofborg-viewer/package-lock.json b/ofborg/ofborg-viewer/package-lock.json
new file mode 100644
index 0000000000..115427cd94
--- /dev/null
+++ b/ofborg/ofborg-viewer/package-lock.json
@@ -0,0 +1,924 @@
+{
+ "name": "tickborg-viewer-web",
+ "version": "1.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "tickborg-viewer-web",
+ "version": "1.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "@stomp/stompjs": "^4.0.0",
+ "lodash": "^4.17.21",
+ "query-string": "^5.1.1",
+ "websocket": "^1.0.35"
+ },
+ "devDependencies": {
+ "esbuild": "^0.20.0",
+ "less": "^4.2.0"
+ }
+ },
+ "node_modules/@esbuild/aix-ppc64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz",
+ "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "aix"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/android-arm": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz",
+ "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/android-arm64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz",
+ "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/android-x64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz",
+ "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/darwin-arm64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz",
+ "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/darwin-x64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz",
+ "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz",
+ "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/freebsd-x64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz",
+ "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-arm": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz",
+ "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-arm64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz",
+ "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-ia32": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz",
+ "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-loong64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz",
+ "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-mips64el": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz",
+ "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==",
+ "cpu": [
+ "mips64el"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-ppc64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz",
+ "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-riscv64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz",
+ "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-s390x": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz",
+ "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-x64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz",
+ "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/netbsd-x64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz",
+ "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/openbsd-x64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz",
+ "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/sunos-x64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz",
+ "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/win32-arm64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz",
+ "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/win32-ia32": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz",
+ "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/win32-x64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz",
+ "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stomp/stompjs": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/@stomp/stompjs/-/stompjs-4.0.8.tgz",
+ "integrity": "sha512-bR8W43sC9/py6qFJtSRwYXhzNW6PuVCXblAZuXeZkXVeenycRqppWmbuUQLuZE2LRONDyDz8G1qHW0EizT/q1g==",
+ "license": "Apache-2.0",
+ "optionalDependencies": {
+ "websocket": "^1.0.24"
+ }
+ },
+ "node_modules/bufferutil": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.1.0.tgz",
+ "integrity": "sha512-ZMANVnAixE6AWWnPzlW2KpUrxhm9woycYvPOo67jWHyFowASTEd9s+QN1EIMsSDtwhIxN4sWE1jotpuDUIgyIw==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "dependencies": {
+ "node-gyp-build": "^4.3.0"
+ },
+ "engines": {
+ "node": ">=6.14.2"
+ }
+ },
+ "node_modules/copy-anything": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-3.0.5.tgz",
+ "integrity": "sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-what": "^4.1.8"
+ },
+ "engines": {
+ "node": ">=12.13"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/mesqueeb"
+ }
+ },
+ "node_modules/d": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz",
+ "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==",
+ "license": "ISC",
+ "dependencies": {
+ "es5-ext": "^0.10.64",
+ "type": "^2.7.2"
+ },
+ "engines": {
+ "node": ">=0.12"
+ }
+ },
+ "node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/decode-uri-component": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
+ "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/errno": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz",
+ "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "prr": "~1.0.1"
+ },
+ "bin": {
+ "errno": "cli.js"
+ }
+ },
+ "node_modules/es5-ext": {
+ "version": "0.10.64",
+ "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz",
+ "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==",
+ "hasInstallScript": true,
+ "license": "ISC",
+ "dependencies": {
+ "es6-iterator": "^2.0.3",
+ "es6-symbol": "^3.1.3",
+ "esniff": "^2.0.1",
+ "next-tick": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/es6-iterator": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
+ "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==",
+ "license": "MIT",
+ "dependencies": {
+ "d": "1",
+ "es5-ext": "^0.10.35",
+ "es6-symbol": "^3.1.1"
+ }
+ },
+ "node_modules/es6-symbol": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz",
+ "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==",
+ "license": "ISC",
+ "dependencies": {
+ "d": "^1.0.2",
+ "ext": "^1.7.0"
+ },
+ "engines": {
+ "node": ">=0.12"
+ }
+ },
+ "node_modules/esbuild": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz",
+ "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "optionalDependencies": {
+ "@esbuild/aix-ppc64": "0.20.2",
+ "@esbuild/android-arm": "0.20.2",
+ "@esbuild/android-arm64": "0.20.2",
+ "@esbuild/android-x64": "0.20.2",
+ "@esbuild/darwin-arm64": "0.20.2",
+ "@esbuild/darwin-x64": "0.20.2",
+ "@esbuild/freebsd-arm64": "0.20.2",
+ "@esbuild/freebsd-x64": "0.20.2",
+ "@esbuild/linux-arm": "0.20.2",
+ "@esbuild/linux-arm64": "0.20.2",
+ "@esbuild/linux-ia32": "0.20.2",
+ "@esbuild/linux-loong64": "0.20.2",
+ "@esbuild/linux-mips64el": "0.20.2",
+ "@esbuild/linux-ppc64": "0.20.2",
+ "@esbuild/linux-riscv64": "0.20.2",
+ "@esbuild/linux-s390x": "0.20.2",
+ "@esbuild/linux-x64": "0.20.2",
+ "@esbuild/netbsd-x64": "0.20.2",
+ "@esbuild/openbsd-x64": "0.20.2",
+ "@esbuild/sunos-x64": "0.20.2",
+ "@esbuild/win32-arm64": "0.20.2",
+ "@esbuild/win32-ia32": "0.20.2",
+ "@esbuild/win32-x64": "0.20.2"
+ }
+ },
+ "node_modules/esniff": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz",
+ "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==",
+ "license": "ISC",
+ "dependencies": {
+ "d": "^1.0.1",
+ "es5-ext": "^0.10.62",
+ "event-emitter": "^0.3.5",
+ "type": "^2.7.2"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/event-emitter": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
+ "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==",
+ "license": "MIT",
+ "dependencies": {
+ "d": "1",
+ "es5-ext": "~0.10.14"
+ }
+ },
+ "node_modules/ext": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz",
+ "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==",
+ "license": "ISC",
+ "dependencies": {
+ "type": "^2.7.2"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "dev": true,
+ "license": "ISC",
+ "optional": true
+ },
+ "node_modules/iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/image-size": {
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz",
+ "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "bin": {
+ "image-size": "bin/image-size.js"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==",
+ "license": "MIT"
+ },
+ "node_modules/is-what": {
+ "version": "4.1.16",
+ "resolved": "https://registry.npmjs.org/is-what/-/is-what-4.1.16.tgz",
+ "integrity": "sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.13"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/mesqueeb"
+ }
+ },
+ "node_modules/less": {
+ "version": "4.6.4",
+ "resolved": "https://registry.npmjs.org/less/-/less-4.6.4.tgz",
+ "integrity": "sha512-OJmO5+HxZLLw0RLzkqaNHzcgEAQG7C0y3aMbwtCzIUFZsLMNNq/1IdAdHEycQ58CwUO3jPTHmoN+tE5I7FQxNg==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "copy-anything": "^3.0.5",
+ "parse-node-version": "^1.0.1"
+ },
+ "bin": {
+ "lessc": "bin/lessc"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "optionalDependencies": {
+ "errno": "^0.1.1",
+ "graceful-fs": "^4.1.2",
+ "image-size": "~0.5.0",
+ "make-dir": "^2.1.0",
+ "mime": "^1.4.1",
+ "needle": "^3.1.0",
+ "source-map": "~0.6.0"
+ }
+ },
+ "node_modules/lodash": {
+ "version": "4.18.1",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz",
+ "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==",
+ "license": "MIT"
+ },
+ "node_modules/make-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
+ "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "pify": "^4.0.1",
+ "semver": "^5.6.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "license": "MIT"
+ },
+ "node_modules/needle": {
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/needle/-/needle-3.5.0.tgz",
+ "integrity": "sha512-jaQyPKKk2YokHrEg+vFDYxXIHTCBgiZwSHOoVx/8V3GIBS8/VN6NdVRmg8q1ERtPkMvmOvebsgga4sAj5hls/w==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "iconv-lite": "^0.6.3",
+ "sax": "^1.2.4"
+ },
+ "bin": {
+ "needle": "bin/needle"
+ },
+ "engines": {
+ "node": ">= 4.4.x"
+ }
+ },
+ "node_modules/next-tick": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz",
+ "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==",
+ "license": "ISC"
+ },
+ "node_modules/node-gyp-build": {
+ "version": "4.8.4",
+ "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz",
+ "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==",
+ "license": "MIT",
+ "bin": {
+ "node-gyp-build": "bin.js",
+ "node-gyp-build-optional": "optional.js",
+ "node-gyp-build-test": "build-test.js"
+ }
+ },
+ "node_modules/object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/parse-node-version": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz",
+ "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/pify": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/prr": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
+ "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true
+ },
+ "node_modules/query-string": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz",
+ "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==",
+ "license": "MIT",
+ "dependencies": {
+ "decode-uri-component": "^0.2.0",
+ "object-assign": "^4.1.0",
+ "strict-uri-encode": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true
+ },
+ "node_modules/sax": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.0.tgz",
+ "integrity": "sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "optional": true,
+ "engines": {
+ "node": ">=11.0.0"
+ }
+ },
+ "node_modules/semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "dev": true,
+ "license": "ISC",
+ "optional": true,
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "optional": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/strict-uri-encode": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz",
+ "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/type": {
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz",
+ "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==",
+ "license": "ISC"
+ },
+ "node_modules/typedarray-to-buffer": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
+ "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
+ "license": "MIT",
+ "dependencies": {
+ "is-typedarray": "^1.0.0"
+ }
+ },
+ "node_modules/utf-8-validate": {
+ "version": "5.0.10",
+ "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz",
+ "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "dependencies": {
+ "node-gyp-build": "^4.3.0"
+ },
+ "engines": {
+ "node": ">=6.14.2"
+ }
+ },
+ "node_modules/websocket": {
+ "version": "1.0.35",
+ "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.35.tgz",
+ "integrity": "sha512-/REy6amwPZl44DDzvRCkaI1q1bIiQB0mEFQLUrhz3z2EK91cp3n72rAjUlrTP0zV22HJIUOVHQGPxhFRjxjt+Q==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "bufferutil": "^4.0.1",
+ "debug": "^2.2.0",
+ "es5-ext": "^0.10.63",
+ "typedarray-to-buffer": "^3.1.5",
+ "utf-8-validate": "^5.0.2",
+ "yaeti": "^0.0.6"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/yaeti": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz",
+ "integrity": "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==",
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.32"
+ }
+ }
+ }
+}
diff --git a/ofborg/ofborg-viewer/package.json b/ofborg/ofborg-viewer/package.json
new file mode 100644
index 0000000000..73d525d27b
--- /dev/null
+++ b/ofborg/ofborg-viewer/package.json
@@ -0,0 +1,19 @@
+{
+ "name": "tickborg-viewer-web",
+ "version": "1.0.0",
+ "license": "MIT",
+ "scripts": {
+ "build": "node build.js",
+ "dev": "npx esbuild src/index.js --bundle --outfile=dist/bundle.js --format=iife --target=es2018 --servedir=dist --define:GIT_REVISION='\"dev\"' --define:VERSION='\"dev\"'"
+ },
+ "devDependencies": {
+ "esbuild": "^0.20.0",
+ "less": "^4.2.0"
+ },
+ "dependencies": {
+ "@stomp/stompjs": "^4.0.0",
+ "lodash": "^4.17.21",
+ "query-string": "^5.1.1",
+ "websocket": "^1.0.35"
+ }
+}
diff --git a/ofborg/ofborg-viewer/release.nix b/ofborg/ofborg-viewer/release.nix
new file mode 100644
index 0000000000..62120f6133
--- /dev/null
+++ b/ofborg/ofborg-viewer/release.nix
@@ -0,0 +1,34 @@
+{ pkgs ? import <nixpkgs> {} }:
+let
+ yarn2nix = import (pkgs.fetchFromGitHub (let
+ revs = builtins.fromJSON (builtins.readFile ./yarn2nix.json);
+ in {
+ owner = "moretea";
+ repo = "yarn2nix";
+
+ inherit (revs) rev sha256;
+ })) { inherit pkgs; };
+in
+yarn2nix.mkYarnPackage rec {
+ version = (builtins.fromJSON (builtins.readFile ./package.json)).version;
+ name = "ofborg-viewer-web-${version}";
+ src = ./.;
+ packageJson = ./package.json;
+ yarnLock = ./yarn.lock;
+ yarnNix = ./yarn.nix;
+
+ # When building from git repo, add the revision to the source.
+ # The build process will use it.
+ preConfigure = ''
+ if [ -d .git ]; then
+ ${pkgs.gitMinimal}/bin/git rev-parse HEAD > .git-revision
+ fi
+ '';
+
+ postInstall = ''
+ export NODE_ENV=production
+ rm -rf website
+ yarn run preinstall
+ mv website/ $out/website
+ '';
+}
diff --git a/ofborg/ofborg-viewer/src/app.html b/ofborg/ofborg-viewer/src/app.html
new file mode 100644
index 0000000000..9b4eaf73eb
--- /dev/null
+++ b/ofborg/ofborg-viewer/src/app.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta name="theme-color" content="#AFFFFF">
+ <meta name="viewport" content="width=devide-width, initial-scale=1" />
+ <meta charset="utf-8">
+ <title>TickBorg Log Viewer</title>
+ <style>
+<%= require("./styles/index.less") %>
+ </style>
+ </head>
+ <body>
+ <div id="tickborg-logviewer">
+ <div class="app">
+ <div class="loading">
+ <strong>Loading...</strong>
+ <em>you may need to enable some JavaScript for this to work.</em>
+ </div>
+ </div>
+ </div>
+ </body>
+</html>
diff --git a/ofborg/ofborg-viewer/src/app.js b/ofborg/ofborg-viewer/src/app.js
new file mode 100644
index 0000000000..cdfc3b4e0d
--- /dev/null
+++ b/ofborg/ofborg-viewer/src/app.js
@@ -0,0 +1,201 @@
+import ready from "./lib/ready";
+import Listener from "./listener";
+import Gui from "./gui";
+import Backlog from "./backlog";
+import State from "./state";
+import {WELL_KNOWN} from "./config";
+
+const MAN = `
+tickborg-viewer(web) tickborg web interface tickborg-viewer(web)
+
+NAME
+ tickborg-viewer — Build logs web interface
+
+DESCRIPTION
+ tickborg-viewer is a web interface that aggregates the currently in-progress
+ build logs made by tickborg.
+
+ New logs for the given build will be added to the discovered logs at the
+ top of the interface. Clicking them or activating them through the keyboard
+ shortcuts of your browser will show them.
+
+ The log will autoscroll when the logger interface is scrolled at the
+ bottom. Scrolling up will stop the autoscroll until scrolled back down.
+
+`;
+
+/**
+ * The logger app.
+ */
+class App {
+ constructor() {
+ // Only "boot" the app when the DOM is ready.
+ ready(() => this.boot());
+
+ // To use as event listener targets.
+ this.handle_select = this.handle_select.bind(this);
+ }
+
+ /**
+ * Hooks and starts the app.
+ *
+ * This means:
+ * * Starts the GUI.
+ * * Reads parameters.
+ * * Starts the Listener.
+ */
+ boot() {
+ window.document.title = "Log viewer starting...";
+ this.gui = new Gui();
+
+ this.gui.addEventListener("select", this.handle_select);
+
+ this.log("$ tickborg-viewer --version", null, {tag: "tickborg"});
+ this.log(`tickborg-viewer, version ${VERSION}${GIT_REVISION && ` (${GIT_REVISION})`}`, null, {tag: "tickborg"});
+ this.log("$ man tickborg-viewer", null, {tag: "tickborg"});
+ this.log(MAN, null, {tag: "man"});
+
+ this.log("→ logger starting", null, {tag: "tickborg"});
+ window.document.title = "Log viewer started...";
+
+ this.state = new State();
+ this.state.on_state_change = (s) => this.handle_state_change(s);
+ this.handle_state_change(this.state.params);
+ }
+
+ handle_select(selected) {
+ this.state.set_state({attempt_id: selected["name"]});
+ }
+
+ handle_state_change(new_state) {
+ const {attempt_id, key} = new_state;
+ const {logs} = this.gui;
+
+ // Loading parameters
+ if (!key) {
+ this.log("!! No key parameter... stopping now.", "tickborg");
+ return;
+ }
+
+ // This will allow some app parts to log more information.
+ if (new_state["debug"]) {
+ window.DEBUG = true;
+ }
+
+ window.document.title = `Log viewer [${key}]`;
+
+ // This is set only once in the lifetime of the app and is expected
+ // never to change.
+ // FIXME : Allow key to change live.
+ if (!this.key) {
+ this.key = key;
+
+ // Pings the logger API for existing logs.
+ // Those logs can be either live or complete.
+ this.load_logs(() => {
+ // Selects the log if loaded async.
+ if (logs[attempt_id]) {
+ logs[attempt_id].select();
+ }
+ });
+ }
+
+ // Attempts to select the log.
+ if (logs[attempt_id]) {
+ logs[attempt_id].select();
+ }
+
+ if (!this.listener) {
+ // Starts the listener.
+ this.listener = new Listener({
+ key: new_state["key"],
+ logger: (msg, tag) => this.log(msg, null, {tag}),
+ fn: (...msg) => this.from_listener(...msg),
+ });
+ }
+ }
+
+ load_logs(callback) {
+ this.log(`→ fetching existing attempts for ${this.key}`, null, {tag: "tickborg"});
+ return fetch(`${WELL_KNOWN}/${this.key}`, {mode: "cors"})
+ .then((response) => response.json())
+ .then(({attempts}) => Object.keys(attempts).forEach((attempt_id) => {
+ this.log(`→ fetching log for ${attempt_id}`, null, {tag: "tickborg"});
+ const attempt = attempts[attempt_id];
+ const log = this.gui.addLog(attempt_id, attempt["metadata"]);
+ const {log_url} = attempt;
+ // Loads backlog only when needed.
+ const handler = () => {
+ log.backlog_loading();
+ fetch(log_url, {mode: "cors"})
+ .then((response) => response.text())
+ .then((txt) => {
+ const lines = txt.split("\n");
+ log.backlog(lines, log_url);
+ this.log(`→ added log for ${attempt_id}`, null, {tag: "tickborg"});
+ })
+ ;
+ // Removes self from events.
+ log.removeEventListener("select", handler);
+ };
+ log.addEventListener("select", handler);
+ }))
+ .then(() => callback())
+ ;
+ }
+
+ from_listener(message, routing_key) {
+ const {output, attempt_id, line_number} = message;
+
+ // Probably a build-start message.
+ if (!output && output !== "") {
+ this.gui.addLog(attempt_id, message);
+ return;
+ }
+
+ // Opening a new log?
+ // It should already have been created, but just in case.
+ if (Object.keys(this.gui.logs).indexOf(attempt_id) === -1) {
+ const log = this.gui.addLog(attempt_id);
+
+ // Assumes if there was no log open for attempt, it needs to fetch backlog.
+ if (line_number > 1) {
+ // FIXME : Loop backlog fetching until all lines are found up to line_number.
+ log.backlog_loading();
+ const log_url = Backlog.get_url(routing_key, attempt_id);
+
+ return fetch(log_url, {mode: "cors"})
+ .then((response) => response.text())
+ .then((txt) => {
+ const lines = txt.split("\n").slice(0, line_number - 1);
+ log.backlog(lines, log_url);
+ })
+ .catch((err) => {
+ log.backlog_error(err);
+ })
+ ;
+ }
+ }
+
+ return this.log(output, attempt_id, {
+ tag: "stdout",
+ title: `#${line_number}`,
+ });
+ }
+
+ /**
+ * Logs to the console.
+ *
+ * This can receive a class for some more styling.
+ */
+ log(msg, log, {tag, title} = {}) {
+ this.gui.log({
+ msg,
+ log,
+ tag,
+ title,
+ });
+ }
+}
+
+export default App;
diff --git a/ofborg/ofborg-viewer/src/backlog.js b/ofborg/ofborg-viewer/src/backlog.js
new file mode 100644
index 0000000000..bb99917196
--- /dev/null
+++ b/ofborg/ofborg-viewer/src/backlog.js
@@ -0,0 +1,8 @@
+import {WELL_KNOWN} from "./config";
+class Backlog {
+ static get_url(routing, id) {
+ return `${WELL_KNOWN}/${routing}/${id}`;
+ }
+}
+
+export default Backlog;
diff --git a/ofborg/ofborg-viewer/src/config.js b/ofborg/ofborg-viewer/src/config.js
new file mode 100644
index 0000000000..827b06c231
--- /dev/null
+++ b/ofborg/ofborg-viewer/src/config.js
@@ -0,0 +1,9 @@
+const infra = "projecttick.net";
+
+const WELL_KNOWN = `https://logs.tickborg.${infra}/logs`;
+const SOCK = `wss://logs.tickborg.${infra}/ws/`;
+const SOCK_VHOST = `/`;
+const AUTH = "tickborg-logviewer";
+const MAX_LINES = 25000;
+
+export {SOCK, SOCK_VHOST, AUTH, MAX_LINES, WELL_KNOWN};
diff --git a/ofborg/ofborg-viewer/src/gui/index.js b/ofborg/ofborg-viewer/src/gui/index.js
new file mode 100644
index 0000000000..d63b17d695
--- /dev/null
+++ b/ofborg/ofborg-viewer/src/gui/index.js
@@ -0,0 +1,158 @@
+import bsod from "../lib/bsod";
+import html from "../lib/html";
+import Log from "./log";
+import eventable from "../mixins/eventable";
+
+/**
+ * Name of the "internal" log, both for system messages
+ * and as a fallback logging mechanism.
+ */
+const INTERNAL_LOG = "-tickborg-";
+
+/**
+ * The "Gui" for the app.
+ *
+ * This handles the tab-like controls to switch the shown log.
+ * This handles keeping track of whether it should follow scroll or not.
+ *
+ * The whole body is scrolled, always.
+ */
+class Gui {
+ constructor() {
+ eventable(this);
+ console.log("Creating log interface...."); // eslint-disable-line
+ this.setFollowing(true);
+
+ // To use as event listener targets.
+ this.handle_select = this.handle_select.bind(this);
+ this.maybe_scroll = this.maybe_scroll.bind(this);
+
+ // Registry of Log instances.
+ // ({`attempt_id`: instance})
+ this.logs = {};
+
+ this.$app = window.document.querySelectorAll("#tickborg-logviewer .app")[0];
+ if (!this.$app) {
+ return bsod("Couldn't hook app.");
+ }
+
+ // Empties app...
+ this.$app.innerHTML = "";
+
+ this.$header = html(`<header></header>`)[0];
+ this.$nav = html(`<ul></ul>`)[0];
+ this.$header.appendChild(this.$nav);
+ this.$app.appendChild(this.$header);
+
+ // Logs DOM instance holder.
+ this.$logs = html(`<div class="logs"></div>`)[0];
+ this.$app.appendChild(this.$logs);
+
+ this.addLog(INTERNAL_LOG);
+
+ // Hooks on scroll
+ window.addEventListener("scroll", () => this.watchScroll());
+ console.log("... log interface created."); // eslint-disable-line
+ }
+
+ addLog(name, metadata) {
+ const log = new Log(name, metadata);
+ this.logs[name] = log;
+ this.$logs.appendChild(log.$node);
+
+ this.$nav.appendChild(log.$tab);
+
+ if (Object.keys(this.logs).length === 1) {
+ log.select();
+ }
+
+ log.addEventListener("select", this.handle_select);
+ log.addEventListener("backlog", this.maybe_scroll)
+
+ return log;
+ }
+
+ handle_select(selected) {
+ this.maybe_scroll();
+ // Uses map as a cheap foreach.
+ Object.values(this.logs).map((l) => {
+ if (selected !== l) {
+ l.unselect();
+ }
+
+ return null;
+ });
+
+ this.sendEvent("select", selected);
+ }
+
+ setFollowing(following) {
+ if (following !== this.following) {
+ this.following = following;
+
+ const body = window.document.body;
+ if (following) {
+ body.classList.add("following");
+ body.classList.remove("not-following");
+ }
+ else {
+ body.classList.add("not-following");
+ body.classList.remove("following");
+ }
+ }
+ }
+
+ /**
+ * Marks the window as auto-scrollable or not when scrolling.
+ */
+ watchScroll() {
+ const body = window.document.documentElement;
+ const scroll_bottom = Math.round(body.scrollTop) + Math.round(window.innerHeight);
+ const total_height = body.scrollHeight;
+
+ // Some fudging around because of higher and fractional DPI issues.
+ // On 1.5 DPI chrome, it is possible to get the scroll to bottom
+ // not matching with the total height *some* times.
+ this.setFollowing(Math.abs(total_height - scroll_bottom) < 5);
+ }
+
+ /**
+ * Logs the message `msg`, tagged with tag `tag` in log instance `log`.
+ */
+ log({msg, tag, log, title}) {
+ // `null` logs to internal log.
+ const used_log = log || INTERNAL_LOG;
+ // Can't find a log?
+ if (!this.logs[used_log]) {
+ // Warn in the console
+ console.warn(`Couldn't find log "${log}"...`); // eslint-disable-line
+
+ // Makes sure we aren't missing the system log...
+ if (used_log === INTERNAL_LOG) {
+ bsod(`Log "${INTERNAL_LOG}" log. This shouldn't have happened.`);
+ }
+
+ // Log instead to the internal log.
+ this.log({
+ msg,
+ tag,
+ log: INTERNAL_LOG,
+ title,
+ });
+
+ return;
+ }
+ this.logs[used_log].log(msg, tag, {title});
+ this.maybe_scroll();
+ }
+
+ // Scroll as needed.
+ maybe_scroll() {
+ const body = window.document.documentElement;
+ if (this.following) {
+ body.scrollTop = body.scrollHeight;
+ }
+ }
+}
+
+export default Gui;
diff --git a/ofborg/ofborg-viewer/src/gui/log.js b/ofborg/ofborg-viewer/src/gui/log.js
new file mode 100644
index 0000000000..b354c66b5f
--- /dev/null
+++ b/ofborg/ofborg-viewer/src/gui/log.js
@@ -0,0 +1,162 @@
+import html from "../lib/html";
+import eventable from "../mixins/eventable";
+import {MAX_LINES} from "../config";
+
+const SEP = " ╱ ";
+
+/**
+ * The line-oriented GUI for the application.
+ *
+ * It presents a (1) node that should be added by the owner to the DOM.
+ */
+class Log {
+ constructor(name, metadata = null, {label = null} = {}) {
+ eventable(this);
+ this.name = name;
+ this.$node = html(`<div class="logger"></div>`)[0];
+ this.$node.classList.add(`name__${name.replace(/[^a-zA-Z0-9]/g, "_")}`);
+
+ let label_text = label;
+
+ // Makes a default label...
+ if (!label_text) {
+ label_text = name;
+
+ // For UUID-like labels
+ // The chances of hitting both conditions on a custom-made string is
+ // quite low.
+ if (label_text.length === 36 && label_text.split("-").length === 5) {
+ label_text = name
+ .split("-")
+ .splice(0, 2)
+ .join("-");
+ }
+ }
+
+ this.$backlog = html(`<div class="backlog logger-log"></div>`)[0];
+ this.$log = html(`<div class="newlog logger-log"></div>`)[0];
+ // Empties app...
+ this.$node.innerHTML = "";
+
+ if (metadata) {
+ this.$identity = html(`<div class="identity"></div>`)[0];
+ this.$node.appendChild(this.$identity);
+ }
+
+ // Appends the "app parts"
+ this.$node.appendChild(this.$backlog);
+ this.$node.appendChild(this.$log);
+
+ // The tab used for navigation.
+ this.$tab = html(`<li><label><input type="radio" name="selected_tab"><span></span></label></li>`)[0];
+ const radio = this.$tab.querySelectorAll("input")[0];
+ const $label = this.$tab.querySelectorAll("label > span")[0];
+ $label.innerText = label_text;
+ radio.value = name;
+ radio.onclick = () => {
+ this.select();
+ };
+
+ if (metadata) {
+ const {attempt_id, identity, system} = metadata;
+ const txt = [];
+ txt.push(`id: ${identity}`);
+ txt.push(`system: ${system}`);
+ this.$identity.innerText = " " + txt.join(SEP) + SEP;
+ this.$identity.title = JSON.stringify(metadata, null, " ");
+ $label.title = txt.concat([`attempt_id: ${attempt_id}`]).join(SEP);
+ }
+
+ radio.onfocus = () => {
+ this.$tab.classList.add("__focus");
+ };
+ radio.onblur = () => {
+ this.$tab.classList.remove("__focus");
+ };
+ }
+
+ /**
+ * Logs to the console.
+ *
+ * This can receive a class for some more styling.
+ */
+ log(text, tag, {title}) {
+ const el = html(`<div></div>`)[0];
+ if (tag) {
+ el.classList.add(tag);
+ }
+ if (title) {
+ el.title = title;
+ }
+ // The replace regex allows more intelligent splitting.
+ // It will prefer splitting words, this way.
+ // .replace(/([,-=/])/g, "\u200B$1\u200B");
+ // It breaks search, until a solution is found we'll manage with crappy
+ // line breaks.
+ el.innerText = text;
+ this.$log.appendChild(el);
+ }
+
+ select() {
+ this.$node.classList.add("selected");
+ this.$tab.classList.add("selected");
+ this.$tab.querySelectorAll("input")[0].checked = true;
+ this.sendEvent("select", this);
+ }
+
+ unselect() {
+ this.$node.classList.remove("selected");
+ this.$tab.classList.remove("selected");
+ this.sendEvent("unselect");
+ }
+
+ backlog(lines, log_url = null) {
+ this.$backlog.classList.remove("loading");
+ // Empties backlog...
+ const start = Math.max(lines.length - MAX_LINES, 0);
+ const length = Math.min(lines.length, MAX_LINES);
+ let line_no = start + 1;
+ const fragment = document.createDocumentFragment(length);
+ this.$backlog.innerText = `(Rendering backlog, ${length} lines long...)**`;
+ lines.slice(start, lines.length)
+ .forEach((text) => {
+ const el = document.createElement("div");
+ el.title = `#${line_no}`;
+ line_no += 1;
+ el.innerText = text;
+ fragment.appendChild(el);
+ });
+ const $link = html(`<a class="truncated">Log has been truncated... (${length} lines shown out of ${lines.length}.)</a>`)[0];
+ if (log_url) {
+ $link.href = log_url;
+ }
+ if (length < lines.length) {
+ this.$backlog.innerText = `(Rendering backlog, ${length} lines out of ${lines.length}...)`;
+ }
+ else {
+ this.$backlog.innerText = `(Rendering backlog, ${length} lines long...)`;
+ }
+
+ // Delays appendChild to allow reflow for previous message.
+ window.setTimeout(() => {
+ this.$backlog.innerText = "";
+ if (length < lines.length) {
+ this.$backlog.appendChild($link);
+ }
+ this.$backlog.appendChild(fragment);
+ this.sendEvent("backlog", this);
+ }, 10);
+ }
+
+ backlog_error(err) {
+ this.$backlog.classList.remove("loading");
+ this.$backlog.innerText = `An error happened fetching the backlog...\n${err}`;
+ }
+
+ backlog_loading() {
+ this.$backlog.classList.add("loading");
+ this.$backlog.innerText = `Fetching the backlog...`;
+ }
+}
+
+export default Log;
diff --git a/ofborg/ofborg-viewer/src/index.js b/ofborg/ofborg-viewer/src/index.js
new file mode 100644
index 0000000000..e2b8683f9e
--- /dev/null
+++ b/ofborg/ofborg-viewer/src/index.js
@@ -0,0 +1,40 @@
+import App from "./app";
+import WELL_KNOWN from "./config";
+
+/**
+ * Entry-point of the application.
+ *
+ * If any polyfilling is needed, do it here.
+ * Then, start the app.
+ */
+
+// Fetch compat.
+{
+ const FETCH_MISSING = "fetch is required for this app to work properly.";
+
+ /**
+ * Acts mostly like a promise.
+ */
+ const pseudo_promise = function() {
+ return {
+ then: () => pseudo_promise(),
+ catch: (fn) => fn(new Error(FETCH_MISSING)),
+ };
+ };
+
+ /**
+ * Replaces fetch when fetch is missing.
+ */
+ const pseudo_fetch = function() { // eslint-disable-line
+ return pseudo_promise();
+ };
+
+ // Ensures calls to `fetch` don't crash the app.
+ if (!window.fetch) {
+ console.warn(FETCH_MISSING); // eslint-disable-line
+ window.fetch = pseudo_fetch; // eslint-disable-line
+ }
+}
+
+// Starts the app.
+window.APP = new App();
diff --git a/ofborg/ofborg-viewer/src/lib/bsod.js b/ofborg/ofborg-viewer/src/lib/bsod.js
new file mode 100644
index 0000000000..6b29d41417
--- /dev/null
+++ b/ofborg/ofborg-viewer/src/lib/bsod.js
@@ -0,0 +1,16 @@
+/**
+ * Borg screen of death.
+ *
+ * Replaces the whole body with an error message.
+ */
+const bsod = function(msg = "Something happened.") {
+ const body = window.document.body;
+ body.innerText =
+`Hmmm, this is embarassing...
+
+-> ${msg}
+`;
+ body.className = "bsod";
+};
+
+export default bsod;
diff --git a/ofborg/ofborg-viewer/src/lib/html.js b/ofborg/ofborg-viewer/src/lib/html.js
new file mode 100644
index 0000000000..dcacecd423
--- /dev/null
+++ b/ofborg/ofborg-viewer/src/lib/html.js
@@ -0,0 +1,11 @@
+/**
+ * Uses the DOM to parse HTML.
+ */
+const html = function(str) {
+ const tmp = document.implementation.createHTMLDocument();
+ tmp.body.innerHTML = str;
+
+ return tmp.body.children;
+};
+
+export default html;
diff --git a/ofborg/ofborg-viewer/src/lib/ready.js b/ofborg/ofborg-viewer/src/lib/ready.js
new file mode 100644
index 0000000000..74f9358a8e
--- /dev/null
+++ b/ofborg/ofborg-viewer/src/lib/ready.js
@@ -0,0 +1,12 @@
+/**
+ * Triggers when the document is ready.
+ */
+const ready = function(fn) {
+ if (document.attachEvent ? document.readyState === "complete" : document.readyState !== "loading"){
+ fn();
+ } else {
+ document.addEventListener('DOMContentLoaded', fn);
+ }
+};
+
+export default ready;
diff --git a/ofborg/ofborg-viewer/src/listener.js b/ofborg/ofborg-viewer/src/listener.js
new file mode 100644
index 0000000000..f2060aa725
--- /dev/null
+++ b/ofborg/ofborg-viewer/src/listener.js
@@ -0,0 +1,90 @@
+import bsod from "./lib/bsod";
+import Stomp from "@stomp/stompjs";
+import {SOCK, AUTH, SOCK_VHOST} from "./config";
+
+/**
+ * Listener interface; subscribes to the queue and uses the given callback.
+ */
+class Listener {
+ constructor({key, logger, fn}) {
+ this.subscription = null;
+ this.key = key;
+ this.fn = fn;
+ this.logger = logger;
+ this.logger("Socket created...", "tickborg");
+ this.client = Stomp.client(SOCK);
+ this.client.debug = (str) => this.debug_callback(str);
+ this.connect();
+ }
+
+ /**
+ * Catches stomp.js debug log.
+ * window.DEBUG can be set (using param debug=true) to help debug issues.
+ */
+ debug_callback(str) {
+ if (window.DEBUG) {
+ /* eslint-disable no-control-regex */
+ const cleaned = str.replace(/[\x00\s]+$/g, "").trim();
+ /* eslint-enable */
+ this.logger(cleaned, "stomp");
+ }
+ }
+
+ connect() {
+ this.client.connect(
+ AUTH, AUTH,
+ () => this.connected(),
+ (err) => this.handle_failure(err),
+ SOCK_VHOST
+ );
+ }
+
+ disconnect() {
+ this.logger("Disconnecting...", "tickborg");
+ this.client.disconnect(
+ () => this.logger("Disconnected.", "tickborg")
+ );
+ }
+
+ connected() {
+ this.succesfully_connected = true;
+ this.logger("Connected...", "tickborg");
+ this.logger(`Subscribing to "${this.key}"...`, "tickborg");
+ this.subscription = this.client.subscribe(
+ `/exchange/logs/${encodeURIComponent(this.key)}`,
+ (m) => this.handle_message(JSON.parse(m.body), m)
+ );
+ }
+
+ handle_failure(err) {
+ console.error("STOMP error...");
+ console.error(err);
+ if (this.succesfully_connected) {
+ this.logger("Uhhh, we lost the websocket connection... refresh to fix this issue.", "stderr")
+ }
+ else {
+ bsod("Couldn't connect to websocket.\n\nMake sure content blockers (noscript, µblock) are not blocking websockets.")
+ }
+ }
+
+ /**
+ * Handler for messages.
+ */
+ handle_message(msg, raw) {
+ // Get the routing key, which will be used to fetch the backlogs.
+ const destination = raw.headers["destination"].split("/");
+ const routing = decodeURIComponent(destination[destination.length - 1]);
+ this.receive(msg, routing);
+ }
+
+ /**
+ * Conditionally calls the callback registered.
+ */
+ receive(...args) {
+ if (this.fn) {
+ return this.fn(...args);
+ }
+ }
+}
+
+export default Listener;
diff --git a/ofborg/ofborg-viewer/src/mixins/eventable.js b/ofborg/ofborg-viewer/src/mixins/eventable.js
new file mode 100644
index 0000000000..a33e8edafd
--- /dev/null
+++ b/ofborg/ofborg-viewer/src/mixins/eventable.js
@@ -0,0 +1,48 @@
+import each from "lodash/each";
+import pull from "lodash/pull";
+
+/**
+ * Adds functions looking like the EventTarget ones on `this`.
+ *
+ * This is NOT compatible, as they are not using Event.
+ * They cannot preventDefault.
+ * They cannot stop propagation.
+ * There is no propagation.
+ */
+const eventable = (self) => {
+ each(
+ // Functions to mix in.
+ {
+ addEventListener(type, listener) {
+ if (!this[`_${type}_listeners`]) {
+ this[`_${type}_listeners`] = [];
+ }
+ const table = this[`_${type}_listeners`];
+
+ table.push(listener);
+ },
+ removeEventListener(type, listener) {
+ if (!this[`_${type}_listeners`]) {
+ this[`_${type}_listeners`] = {};
+ }
+ const table = this[`_${type}_listeners`];
+
+ pull(table, listener);
+ },
+ sendEvent(type, ...params) {
+ if (!this[`_${type}_listeners`]) {
+ this[`_${type}_listeners`] = [];
+ }
+ const table = this[`_${type}_listeners`];
+
+ table.forEach((fn) => fn(...params));
+ }
+ },
+ // Mixing in all those.
+ (fn, name) => {
+ self[name] = fn.bind(self);
+ }
+ );
+};
+
+export default eventable;
diff --git a/ofborg/ofborg-viewer/src/state.js b/ofborg/ofborg-viewer/src/state.js
new file mode 100644
index 0000000000..936d07653a
--- /dev/null
+++ b/ofborg/ofborg-viewer/src/state.js
@@ -0,0 +1,59 @@
+import queryString from "query-string";
+import isEqual from "lodash/isEqual";
+
+/**
+ * Maps the state of the application to the history API.
+ * This is used to make the current view linkable.
+ * In the URL, the hash part is **reserved for line numbers**.
+ * (line number links are not implemented yet.)
+ */
+class State {
+
+ /**
+ * Loads the state from URL.
+ *
+ * Prepares event listeners.
+ */
+ constructor() {
+ const params = queryString.parse(location.search);
+ const {history} = window;
+ // Loads from params in URL, then history in order of importance.
+ this.params = Object.assign({}, params, history.state);
+
+ window.onpopstate = (e) => this.handle_popstate(e);
+ }
+
+ handle_popstate(e) {
+ console.log(e);
+ const {state} = e;
+ if (state) {
+ this.set_state(state, {push: false});
+ if (this.on_state_change) {
+ this.on_state_change(state);
+ }
+ }
+ }
+
+ set_state(new_state, {push} = {push: true}) {
+ const {history} = window;
+ const params = Object.assign({}, this.params, new_state);
+ Object.keys(params).forEach((k) => {
+ if (!params[k]) {
+ Reflect.deleteProperty(params, k);
+ }
+ });
+
+ if (isEqual(params, this.params)) {
+ // set_state won't fire on "identity" change.
+ return;
+ }
+
+ this.params = params;
+
+ if (push) {
+ history.pushState(this.params, "", `?${queryString.stringify(params)}`);
+ }
+ }
+}
+
+export default State;
diff --git a/ofborg/ofborg-viewer/src/styles/index.less b/ofborg/ofborg-viewer/src/styles/index.less
new file mode 100644
index 0000000000..6718eedefb
--- /dev/null
+++ b/ofborg/ofborg-viewer/src/styles/index.less
@@ -0,0 +1,233 @@
+@color_borg: #2D8F34;
+@color_debug: #8F2D87;
+@color_man: #424775;
+@color_man_bg: #EDF3FF;
+@color_header_bg: #eeeeee;
+@color_header_fg: #005FFF;
+@color_tab_bg: #AFFFFF;
+@color_tab_selected: #ffffff;
+@color_tab_focus: #DC00B8;
+
+@line_height: 1.3rem;
+@header_height: @line_height;
+
+#no-select {
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ cursor: default;
+}
+
+body {
+ color: #000000;
+ background-color: #ffffff;
+ margin: 0;
+ padding: 0;
+ line-height: @line_height;
+ font-family:
+ "Go Mono",
+ "DejaVu Sans Mono",
+ "Lucida Console",
+ monospace
+ ;
+}
+
+.bsod {
+ background: @color_borg;
+ color: #ffffff;
+ white-space: pre;
+}
+
+.loading {
+ strong {
+ display: block;
+ }
+ em {
+ color: #666;
+ }
+}
+
+.app {
+ margin: 0;
+}
+
+.app > header {
+ background: @color_header_bg;
+ color: @color_header_fg;
+ height: @header_height;
+ z-index: 10;
+ position: sticky;
+ top: 0;
+ left: 0;
+ right: 0;
+
+ // Temp fix for overflowing tabs.
+ overflow-x: hidden;
+ overflow-y: hidden;
+ white-space: nowrap;
+
+ ul {
+ // The JS app will need to add appropriate text-indent when showing a tab.
+ //text-indent: -100px;
+ // Text-indent shouldn't then apply to the included elements.
+ & > * {
+ text-indent: initial;
+ }
+ }
+
+ // .__active is handled by the JS app.
+ // This unwraps the tabs bar.
+ // The JS app will need to text-indent appropriately to make the tab shown when !&.__active
+ &:hover, &.__active {
+ height: auto;
+ white-space: normal;
+ ul {
+ text-indent: 0;
+ }
+ }
+
+ ul, ul > li {
+ margin: 0;
+ padding: 0;
+ list-style-type: none;
+ }
+
+ ul > li {
+ display: inline-block;
+ background-color: @color_tab_bg;
+ margin-right: 1em;
+ }
+ li > * {
+ position: relative;
+ #no-select();
+ cursor: pointer;
+
+ // Input is hidden, but through opacity and position.
+ // Otherwise, it won't be keyboard-interactable.
+ input {
+ opacity: 0;
+ height: 1px;
+ width: 1px;
+ position: absolute;
+ top: 0;
+ left: 0;
+ }
+ padding-left: 0.5em;
+ padding-right: 0.5em;
+ display: block;
+ color: inherit;
+ text-decoration: inherit;
+ }
+ li {
+ &:focus, &.__focus {
+ color: @color_tab_selected;
+ background-color: @color_tab_focus;
+ }
+ }
+
+ .selected {
+ color: @color_tab_selected;
+ background-color: @color_header_fg;
+ }
+}
+
+.app > .logs {
+ & > :not(.selected) {
+ display: none;
+ }
+}
+
+// A logger pane.
+.logger-log {
+ @left_border: 1em;
+
+ // Makes it mostly behave like pre.
+ // But with more wrapping.
+ white-space: pre-wrap;
+ word-wrap: break-word;
+
+ // All lines.
+ & > * {
+ border-bottom: 0.05em solid #eee;
+ padding-left: @left_border;
+ min-height: @line_height;
+ }
+
+ a {
+ color: @color_header_fg;
+ text-decoration: underline;
+ &:hover, &:focus, &:active {
+ background-color: @color_tab_bg;
+ }
+ &:visited {
+ color: @color_debug;
+ }
+ }
+
+ // Specially tagged messages.
+ .tickborg, .stomp, .man {
+ border-left: @left_border/2 solid transparent;
+ padding-left: @left_border/2;
+ }
+ .tickborg, .stomp {
+ color: #888;
+ }
+
+ // And their (tagged) colors.
+ .tickborg {
+ border-left-color: @color_borg;
+ }
+ .stomp {
+ border-left-color: @color_debug;
+ }
+ .stderr {
+ color: #BA3300;
+ }
+ .man {
+ border-left-color: @color_man;
+ background-color: @color_man_bg;
+ }
+
+ // The previous bits of logs.
+ &.backlog {
+ }
+
+ // The "live" part of the logs.
+ &.newlog {
+ // Adds sensible spacing at the bottom of the screen.
+ padding-bottom: 0.7em;
+ }
+
+ a.truncated {
+ display: block;
+ animation-name: flash;
+ animation-duration: 0.8s;
+ animation-fill-mode: both;
+ animation-timing-function: ease-in-out;
+ }
+}
+
+.logger .identity {
+ z-index: 1;
+ background: #FFFAAF;
+ color: #5270A3;
+ min-height: @line_height;
+ position: sticky;
+ top: @header_height;
+ left: 0;
+ right: 0;
+}
+
+@keyframes flash {
+ @low: 0.1;
+
+ 0% {opacity: @low;}
+ 16.6% {opacity: 1;}
+ 33.3% {opacity: @low;}
+ 50% {opacity: 1;}
+ 66.6% {opacity: @low;}
+ 100% {opacity: 1;}
+}
diff --git a/ofborg/ofborg-viewer/webpack.config.js b/ofborg/ofborg-viewer/webpack.config.js
new file mode 100644
index 0000000000..f7cfd86bbf
--- /dev/null
+++ b/ofborg/ofborg-viewer/webpack.config.js
@@ -0,0 +1,43 @@
+const webpack = require("webpack");
+const HtmlWebpackPlugin = require("html-webpack-plugin");
+const path = require("path");
+const {get_version, get_revision} = require("./webpack/revision");
+
+module.exports = {
+ entry: "./src/index.js",
+ output: {
+ filename: "bundle.js",
+ path: path.resolve(__dirname, "dist")
+ },
+ module: {
+ loaders: [
+ {
+ test: /.js$/,
+ // ES2015 to JS, without some features:
+ // → https://buble.surge.sh/guide/
+ loaders: "buble-loader",
+ include: path.join(__dirname, "src"),
+ query: {
+ objectAssign: "Object.assign"
+ }
+ },
+ {
+ test: /\.less$/,
+ use: [
+ {loader: "raw-loader"},
+ {loader: "less-loader"},
+ ]
+ },
+ ]
+ },
+ plugins: [
+ new HtmlWebpackPlugin({
+ hash: true,
+ template: "src/app.html",
+ }),
+ new webpack.DefinePlugin({
+ "GIT_REVISION": JSON.stringify(get_revision()),
+ "VERSION": JSON.stringify(get_version()),
+ }),
+ ]
+};
diff --git a/ofborg/ofborg-viewer/webpack/revision.js b/ofborg/ofborg-viewer/webpack/revision.js
new file mode 100644
index 0000000000..e5e1256eb9
--- /dev/null
+++ b/ofborg/ofborg-viewer/webpack/revision.js
@@ -0,0 +1,39 @@
+/* globals require, module */
+const path = require("path");
+const fs = require("fs");
+const exec = require("child_process").execSync;
+
+const {NODE_ENV = "development"} = process.env;
+
+// Identifies the git revision.
+// Makes it available in the environement of the app.
+
+const get_revision = () => {
+ // Git revision from deployment.
+ const file = path.resolve("./.git-revision");
+ if (fs.existsSync(file)) {
+ // It is assumed that the build process *can* dirty the repo,
+ // but it manages to do it in a sane way.
+ return fs.readFileSync(file, {encoding: "utf-8"}).trim();
+ }
+
+ // Assumes no need to show revision, *should* be clean.
+ return "";
+};
+
+const get_version = () => {
+ const file = path.resolve("./package.json");
+ const data = fs.readFileSync(file, {encoding: "utf-8"}).trim();
+ const {version} = JSON.parse(data);
+
+ if (NODE_ENV === "development") {
+ return version + "-dev";
+ }
+
+ return version;
+};
+
+module.exports = {
+ get_revision,
+ get_version,
+};
diff --git a/ofborg/ofborg-viewer/yarn.nix b/ofborg/ofborg-viewer/yarn.nix
new file mode 100644
index 0000000000..320481dac3
--- /dev/null
+++ b/ofborg/ofborg-viewer/yarn.nix
@@ -0,0 +1,6782 @@
+{fetchurl, linkFarm}: rec {
+ offline_cache = linkFarm "offline" packages;
+ packages = [
+
+ {
+ name = "stompjs-4.0.1.tgz";
+ path = fetchurl {
+ name = "stompjs-4.0.1.tgz";
+ url = "https://registry.yarnpkg.com/@stomp/stompjs/-/stompjs-4.0.1.tgz";
+ sha1 = "e90ba2bebc9565cd7af56cd62fbbed47e7ae99fa";
+ };
+ }
+
+ {
+ name = "abbrev-1.1.1.tgz";
+ path = fetchurl {
+ name = "abbrev-1.1.1.tgz";
+ url = "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz";
+ sha1 = "f8f2c887ad10bf67f634f005b6987fed3179aac8";
+ };
+ }
+
+ {
+ name = "accepts-1.3.4.tgz";
+ path = fetchurl {
+ name = "accepts-1.3.4.tgz";
+ url = "https://registry.yarnpkg.com/accepts/-/accepts-1.3.4.tgz";
+ sha1 = "86246758c7dd6d21a6474ff084a4740ec05eb21f";
+ };
+ }
+
+ {
+ name = "acorn-dynamic-import-2.0.2.tgz";
+ path = fetchurl {
+ name = "acorn-dynamic-import-2.0.2.tgz";
+ url = "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz";
+ sha1 = "c752bd210bef679501b6c6cb7fc84f8f47158cc4";
+ };
+ }
+
+ {
+ name = "acorn-dynamic-import-3.0.0.tgz";
+ path = fetchurl {
+ name = "acorn-dynamic-import-3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz";
+ sha1 = "901ceee4c7faaef7e07ad2a47e890675da50a278";
+ };
+ }
+
+ {
+ name = "acorn-jsx-3.0.1.tgz";
+ path = fetchurl {
+ name = "acorn-jsx-3.0.1.tgz";
+ url = "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz";
+ sha1 = "afdf9488fb1ecefc8348f6fb22f464e32a58b36b";
+ };
+ }
+
+ {
+ name = "acorn-jsx-4.1.1.tgz";
+ path = fetchurl {
+ name = "acorn-jsx-4.1.1.tgz";
+ url = "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-4.1.1.tgz";
+ sha1 = "e8e41e48ea2fe0c896740610ab6a4ffd8add225e";
+ };
+ }
+
+ {
+ name = "acorn-object-spread-1.0.0.tgz";
+ path = fetchurl {
+ name = "acorn-object-spread-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/acorn-object-spread/-/acorn-object-spread-1.0.0.tgz";
+ sha1 = "48ead0f4a8eb16995a17a0db9ffc6acaada4ba68";
+ };
+ }
+
+ {
+ name = "acorn-3.3.0.tgz";
+ path = fetchurl {
+ name = "acorn-3.3.0.tgz";
+ url = "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz";
+ sha1 = "45e37fb39e8da3f25baee3ff5369e2bb5f22017a";
+ };
+ }
+
+ {
+ name = "acorn-4.0.13.tgz";
+ path = fetchurl {
+ name = "acorn-4.0.13.tgz";
+ url = "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz";
+ sha1 = "105495ae5361d697bd195c825192e1ad7f253787";
+ };
+ }
+
+ {
+ name = "acorn-5.3.0.tgz";
+ path = fetchurl {
+ name = "acorn-5.3.0.tgz";
+ url = "https://registry.yarnpkg.com/acorn/-/acorn-5.3.0.tgz";
+ sha1 = "7446d39459c54fb49a80e6ee6478149b940ec822";
+ };
+ }
+
+ {
+ name = "acorn-5.4.1.tgz";
+ path = fetchurl {
+ name = "acorn-5.4.1.tgz";
+ url = "https://registry.yarnpkg.com/acorn/-/acorn-5.4.1.tgz";
+ sha1 = "fdc58d9d17f4a4e98d102ded826a9b9759125102";
+ };
+ }
+
+ {
+ name = "ajv-keywords-2.1.1.tgz";
+ path = fetchurl {
+ name = "ajv-keywords-2.1.1.tgz";
+ url = "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz";
+ sha1 = "617997fc5f60576894c435f940d819e135b80762";
+ };
+ }
+
+ {
+ name = "ajv-keywords-3.1.0.tgz";
+ path = fetchurl {
+ name = "ajv-keywords-3.1.0.tgz";
+ url = "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.1.0.tgz";
+ sha1 = "ac2b27939c543e95d2c06e7f7f5c27be4aa543be";
+ };
+ }
+
+ {
+ name = "ajv-4.11.8.tgz";
+ path = fetchurl {
+ name = "ajv-4.11.8.tgz";
+ url = "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz";
+ sha1 = "82ffb02b29e662ae53bdc20af15947706739c536";
+ };
+ }
+
+ {
+ name = "ajv-5.5.2.tgz";
+ path = fetchurl {
+ name = "ajv-5.5.2.tgz";
+ url = "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz";
+ sha1 = "73b5eeca3fab653e3d3f9422b341ad42205dc965";
+ };
+ }
+
+ {
+ name = "ajv-6.1.1.tgz";
+ path = fetchurl {
+ name = "ajv-6.1.1.tgz";
+ url = "https://registry.yarnpkg.com/ajv/-/ajv-6.1.1.tgz";
+ sha1 = "978d597fbc2b7d0e5a5c3ddeb149a682f2abfa0e";
+ };
+ }
+
+ {
+ name = "align-text-0.1.4.tgz";
+ path = fetchurl {
+ name = "align-text-0.1.4.tgz";
+ url = "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz";
+ sha1 = "0cd90a561093f35d0a99256c22b7069433fad117";
+ };
+ }
+
+ {
+ name = "ansi-escapes-3.0.0.tgz";
+ path = fetchurl {
+ name = "ansi-escapes-3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.0.0.tgz";
+ sha1 = "ec3e8b4e9f8064fc02c3ac9b65f1c275bda8ef92";
+ };
+ }
+
+ {
+ name = "ansi-html-0.0.7.tgz";
+ path = fetchurl {
+ name = "ansi-html-0.0.7.tgz";
+ url = "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz";
+ sha1 = "813584021962a9e9e6fd039f940d12f56ca7859e";
+ };
+ }
+
+ {
+ name = "ansi-regex-2.1.1.tgz";
+ path = fetchurl {
+ name = "ansi-regex-2.1.1.tgz";
+ url = "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz";
+ sha1 = "c3b33ab5ee360d86e0e628f0468ae7ef27d654df";
+ };
+ }
+
+ {
+ name = "ansi-regex-3.0.0.tgz";
+ path = fetchurl {
+ name = "ansi-regex-3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz";
+ sha1 = "ed0317c322064f79466c02966bddb605ab37d998";
+ };
+ }
+
+ {
+ name = "ansi-styles-2.2.1.tgz";
+ path = fetchurl {
+ name = "ansi-styles-2.2.1.tgz";
+ url = "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz";
+ sha1 = "b432dd3358b634cf75e1e4664368240533c1ddbe";
+ };
+ }
+
+ {
+ name = "ansi-styles-3.2.0.tgz";
+ path = fetchurl {
+ name = "ansi-styles-3.2.0.tgz";
+ url = "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz";
+ sha1 = "c159b8d5be0f9e5a6f346dab94f16ce022161b88";
+ };
+ }
+
+ {
+ name = "anymatch-1.3.2.tgz";
+ path = fetchurl {
+ name = "anymatch-1.3.2.tgz";
+ url = "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz";
+ sha1 = "553dcb8f91e3c889845dfdba34c77721b90b9d7a";
+ };
+ }
+
+ {
+ name = "anymatch-2.0.0.tgz";
+ path = fetchurl {
+ name = "anymatch-2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz";
+ sha1 = "bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb";
+ };
+ }
+
+ {
+ name = "aproba-1.2.0.tgz";
+ path = fetchurl {
+ name = "aproba-1.2.0.tgz";
+ url = "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz";
+ sha1 = "6802e6264efd18c790a1b0d517f0f2627bf2c94a";
+ };
+ }
+
+ {
+ name = "are-we-there-yet-1.1.4.tgz";
+ path = fetchurl {
+ name = "are-we-there-yet-1.1.4.tgz";
+ url = "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz";
+ sha1 = "bb5dca382bb94f05e15194373d16fd3ba1ca110d";
+ };
+ }
+
+ {
+ name = "argparse-1.0.9.tgz";
+ path = fetchurl {
+ name = "argparse-1.0.9.tgz";
+ url = "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz";
+ sha1 = "73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86";
+ };
+ }
+
+ {
+ name = "arr-diff-2.0.0.tgz";
+ path = fetchurl {
+ name = "arr-diff-2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz";
+ sha1 = "8f3b827f955a8bd669697e4a4256ac3ceae356cf";
+ };
+ }
+
+ {
+ name = "arr-diff-4.0.0.tgz";
+ path = fetchurl {
+ name = "arr-diff-4.0.0.tgz";
+ url = "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz";
+ sha1 = "d6461074febfec71e7e15235761a329a5dc7c520";
+ };
+ }
+
+ {
+ name = "arr-flatten-1.1.0.tgz";
+ path = fetchurl {
+ name = "arr-flatten-1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz";
+ sha1 = "36048bbff4e7b47e136644316c99669ea5ae91f1";
+ };
+ }
+
+ {
+ name = "arr-union-3.1.0.tgz";
+ path = fetchurl {
+ name = "arr-union-3.1.0.tgz";
+ url = "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz";
+ sha1 = "e39b09aea9def866a8f206e288af63919bae39c4";
+ };
+ }
+
+ {
+ name = "array-find-index-1.0.2.tgz";
+ path = fetchurl {
+ name = "array-find-index-1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz";
+ sha1 = "df010aa1287e164bbda6f9723b0a96a1ec4187a1";
+ };
+ }
+
+ {
+ name = "array-flatten-1.1.1.tgz";
+ path = fetchurl {
+ name = "array-flatten-1.1.1.tgz";
+ url = "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz";
+ sha1 = "9a5f699051b1e7073328f2a008968b64ea2955d2";
+ };
+ }
+
+ {
+ name = "array-flatten-2.1.1.tgz";
+ path = fetchurl {
+ name = "array-flatten-2.1.1.tgz";
+ url = "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.1.tgz";
+ sha1 = "426bb9da84090c1838d812c8150af20a8331e296";
+ };
+ }
+
+ {
+ name = "array-includes-3.0.3.tgz";
+ path = fetchurl {
+ name = "array-includes-3.0.3.tgz";
+ url = "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz";
+ sha1 = "184b48f62d92d7452bb31b323165c7f8bd02266d";
+ };
+ }
+
+ {
+ name = "array-union-1.0.2.tgz";
+ path = fetchurl {
+ name = "array-union-1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz";
+ sha1 = "9a34410e4f4e3da23dea375be5be70f24778ec39";
+ };
+ }
+
+ {
+ name = "array-uniq-1.0.3.tgz";
+ path = fetchurl {
+ name = "array-uniq-1.0.3.tgz";
+ url = "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz";
+ sha1 = "af6ac877a25cc7f74e058894753858dfdb24fdb6";
+ };
+ }
+
+ {
+ name = "array-unique-0.2.1.tgz";
+ path = fetchurl {
+ name = "array-unique-0.2.1.tgz";
+ url = "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz";
+ sha1 = "a1d97ccafcbc2625cc70fadceb36a50c58b01a53";
+ };
+ }
+
+ {
+ name = "array-unique-0.3.2.tgz";
+ path = fetchurl {
+ name = "array-unique-0.3.2.tgz";
+ url = "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz";
+ sha1 = "a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428";
+ };
+ }
+
+ {
+ name = "arrify-1.0.1.tgz";
+ path = fetchurl {
+ name = "arrify-1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz";
+ sha1 = "898508da2226f380df904728456849c1501a4b0d";
+ };
+ }
+
+ {
+ name = "asap-2.0.6.tgz";
+ path = fetchurl {
+ name = "asap-2.0.6.tgz";
+ url = "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz";
+ sha1 = "e50347611d7e690943208bbdafebcbc2fb866d46";
+ };
+ }
+
+ {
+ name = "asn1.js-4.9.2.tgz";
+ path = fetchurl {
+ name = "asn1.js-4.9.2.tgz";
+ url = "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.9.2.tgz";
+ sha1 = "8117ef4f7ed87cd8f89044b5bff97ac243a16c9a";
+ };
+ }
+
+ {
+ name = "asn1-0.2.3.tgz";
+ path = fetchurl {
+ name = "asn1-0.2.3.tgz";
+ url = "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz";
+ sha1 = "dac8787713c9966849fc8180777ebe9c1ddf3b86";
+ };
+ }
+
+ {
+ name = "assert-plus-1.0.0.tgz";
+ path = fetchurl {
+ name = "assert-plus-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz";
+ sha1 = "f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525";
+ };
+ }
+
+ {
+ name = "assert-plus-0.2.0.tgz";
+ path = fetchurl {
+ name = "assert-plus-0.2.0.tgz";
+ url = "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz";
+ sha1 = "d74e1b87e7affc0db8aadb7021f3fe48101ab234";
+ };
+ }
+
+ {
+ name = "assert-1.4.1.tgz";
+ path = fetchurl {
+ name = "assert-1.4.1.tgz";
+ url = "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz";
+ sha1 = "99912d591836b5a6f5b345c0f07eefc08fc65d91";
+ };
+ }
+
+ {
+ name = "assign-symbols-1.0.0.tgz";
+ path = fetchurl {
+ name = "assign-symbols-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz";
+ sha1 = "59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367";
+ };
+ }
+
+ {
+ name = "async-each-1.0.1.tgz";
+ path = fetchurl {
+ name = "async-each-1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz";
+ sha1 = "19d386a1d9edc6e7c1c85d388aedbcc56d33602d";
+ };
+ }
+
+ {
+ name = "async-1.5.2.tgz";
+ path = fetchurl {
+ name = "async-1.5.2.tgz";
+ url = "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz";
+ sha1 = "ec6a61ae56480c0c3cb241c95618e20892f9672a";
+ };
+ }
+
+ {
+ name = "async-2.6.0.tgz";
+ path = fetchurl {
+ name = "async-2.6.0.tgz";
+ url = "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz";
+ sha1 = "61a29abb6fcc026fea77e56d1c6ec53a795951f4";
+ };
+ }
+
+ {
+ name = "asynckit-0.4.0.tgz";
+ path = fetchurl {
+ name = "asynckit-0.4.0.tgz";
+ url = "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz";
+ sha1 = "c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79";
+ };
+ }
+
+ {
+ name = "atob-2.0.3.tgz";
+ path = fetchurl {
+ name = "atob-2.0.3.tgz";
+ url = "https://registry.yarnpkg.com/atob/-/atob-2.0.3.tgz";
+ sha1 = "19c7a760473774468f20b2d2d03372ad7d4cbf5d";
+ };
+ }
+
+ {
+ name = "aws-sign2-0.6.0.tgz";
+ path = fetchurl {
+ name = "aws-sign2-0.6.0.tgz";
+ url = "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz";
+ sha1 = "14342dd38dbcc94d0e5b87d763cd63612c0e794f";
+ };
+ }
+
+ {
+ name = "aws4-1.6.0.tgz";
+ path = fetchurl {
+ name = "aws4-1.6.0.tgz";
+ url = "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz";
+ sha1 = "83ef5ca860b2b32e4a0deedee8c771b9db57471e";
+ };
+ }
+
+ {
+ name = "babel-code-frame-6.26.0.tgz";
+ path = fetchurl {
+ name = "babel-code-frame-6.26.0.tgz";
+ url = "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz";
+ sha1 = "63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b";
+ };
+ }
+
+ {
+ name = "balanced-match-1.0.0.tgz";
+ path = fetchurl {
+ name = "balanced-match-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz";
+ sha1 = "89b4d199ab2bee49de164ea02b89ce462d71b767";
+ };
+ }
+
+ {
+ name = "base64-js-1.2.1.tgz";
+ path = fetchurl {
+ name = "base64-js-1.2.1.tgz";
+ url = "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.1.tgz";
+ sha1 = "a91947da1f4a516ea38e5b4ec0ec3773675e0886";
+ };
+ }
+
+ {
+ name = "base-0.11.2.tgz";
+ path = fetchurl {
+ name = "base-0.11.2.tgz";
+ url = "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz";
+ sha1 = "7bde5ced145b6d551a90db87f83c558b4eb48a8f";
+ };
+ }
+
+ {
+ name = "batch-0.6.1.tgz";
+ path = fetchurl {
+ name = "batch-0.6.1.tgz";
+ url = "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz";
+ sha1 = "dc34314f4e679318093fc760272525f94bf25c16";
+ };
+ }
+
+ {
+ name = "bcrypt-pbkdf-1.0.1.tgz";
+ path = fetchurl {
+ name = "bcrypt-pbkdf-1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz";
+ sha1 = "63bc5dcb61331b92bc05fd528953c33462a06f8d";
+ };
+ }
+
+ {
+ name = "big.js-3.2.0.tgz";
+ path = fetchurl {
+ name = "big.js-3.2.0.tgz";
+ url = "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz";
+ sha1 = "a5fc298b81b9e0dca2e458824784b65c52ba588e";
+ };
+ }
+
+ {
+ name = "binary-extensions-1.11.0.tgz";
+ path = fetchurl {
+ name = "binary-extensions-1.11.0.tgz";
+ url = "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz";
+ sha1 = "46aa1751fb6a2f93ee5e689bb1087d4b14c6c205";
+ };
+ }
+
+ {
+ name = "block-stream-0.0.9.tgz";
+ path = fetchurl {
+ name = "block-stream-0.0.9.tgz";
+ url = "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz";
+ sha1 = "13ebfe778a03205cfe03751481ebb4b3300c126a";
+ };
+ }
+
+ {
+ name = "bluebird-3.5.1.tgz";
+ path = fetchurl {
+ name = "bluebird-3.5.1.tgz";
+ url = "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz";
+ sha1 = "d9551f9de98f1fcda1e683d17ee91a0602ee2eb9";
+ };
+ }
+
+ {
+ name = "bn.js-4.11.8.tgz";
+ path = fetchurl {
+ name = "bn.js-4.11.8.tgz";
+ url = "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz";
+ sha1 = "2cde09eb5ee341f484746bb0309b3253b1b1442f";
+ };
+ }
+
+ {
+ name = "body-parser-1.18.2.tgz";
+ path = fetchurl {
+ name = "body-parser-1.18.2.tgz";
+ url = "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.2.tgz";
+ sha1 = "87678a19d84b47d859b83199bd59bce222b10454";
+ };
+ }
+
+ {
+ name = "bonjour-3.5.0.tgz";
+ path = fetchurl {
+ name = "bonjour-3.5.0.tgz";
+ url = "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz";
+ sha1 = "8e890a183d8ee9a2393b3844c691a42bcf7bc9f5";
+ };
+ }
+
+ {
+ name = "boolbase-1.0.0.tgz";
+ path = fetchurl {
+ name = "boolbase-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz";
+ sha1 = "68dff5fbe60c51eb37725ea9e3ed310dcc1e776e";
+ };
+ }
+
+ {
+ name = "boom-2.10.1.tgz";
+ path = fetchurl {
+ name = "boom-2.10.1.tgz";
+ url = "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz";
+ sha1 = "39c8918ceff5799f83f9492a848f625add0c766f";
+ };
+ }
+
+ {
+ name = "brace-expansion-1.1.8.tgz";
+ path = fetchurl {
+ name = "brace-expansion-1.1.8.tgz";
+ url = "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz";
+ sha1 = "c07b211c7c952ec1f8efd51a77ef0d1d3990a292";
+ };
+ }
+
+ {
+ name = "braces-1.8.5.tgz";
+ path = fetchurl {
+ name = "braces-1.8.5.tgz";
+ url = "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz";
+ sha1 = "ba77962e12dff969d6b76711e914b737857bf6a7";
+ };
+ }
+
+ {
+ name = "braces-2.3.1.tgz";
+ path = fetchurl {
+ name = "braces-2.3.1.tgz";
+ url = "https://registry.yarnpkg.com/braces/-/braces-2.3.1.tgz";
+ sha1 = "7086c913b4e5a08dbe37ac0ee6a2500c4ba691bb";
+ };
+ }
+
+ {
+ name = "brorand-1.1.0.tgz";
+ path = fetchurl {
+ name = "brorand-1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz";
+ sha1 = "12c25efe40a45e3c323eb8675a0a0ce57b22371f";
+ };
+ }
+
+ {
+ name = "browserify-aes-1.1.1.tgz";
+ path = fetchurl {
+ name = "browserify-aes-1.1.1.tgz";
+ url = "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.1.1.tgz";
+ sha1 = "38b7ab55edb806ff2dcda1a7f1620773a477c49f";
+ };
+ }
+
+ {
+ name = "browserify-cipher-1.0.0.tgz";
+ path = fetchurl {
+ name = "browserify-cipher-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.0.tgz";
+ sha1 = "9988244874bf5ed4e28da95666dcd66ac8fc363a";
+ };
+ }
+
+ {
+ name = "browserify-des-1.0.0.tgz";
+ path = fetchurl {
+ name = "browserify-des-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.0.tgz";
+ sha1 = "daa277717470922ed2fe18594118a175439721dd";
+ };
+ }
+
+ {
+ name = "browserify-rsa-4.0.1.tgz";
+ path = fetchurl {
+ name = "browserify-rsa-4.0.1.tgz";
+ url = "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz";
+ sha1 = "21e0abfaf6f2029cf2fafb133567a701d4135524";
+ };
+ }
+
+ {
+ name = "browserify-sign-4.0.4.tgz";
+ path = fetchurl {
+ name = "browserify-sign-4.0.4.tgz";
+ url = "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz";
+ sha1 = "aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298";
+ };
+ }
+
+ {
+ name = "browserify-zlib-0.2.0.tgz";
+ path = fetchurl {
+ name = "browserify-zlib-0.2.0.tgz";
+ url = "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz";
+ sha1 = "2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f";
+ };
+ }
+
+ {
+ name = "buble-loader-0.4.1.tgz";
+ path = fetchurl {
+ name = "buble-loader-0.4.1.tgz";
+ url = "https://registry.yarnpkg.com/buble-loader/-/buble-loader-0.4.1.tgz";
+ sha1 = "45a4fe43ccc500835e99ae38ef17df4390ca66b9";
+ };
+ }
+
+ {
+ name = "buble-0.15.2.tgz";
+ path = fetchurl {
+ name = "buble-0.15.2.tgz";
+ url = "https://registry.yarnpkg.com/buble/-/buble-0.15.2.tgz";
+ sha1 = "547fc47483f8e5e8176d82aa5ebccb183b02d613";
+ };
+ }
+
+ {
+ name = "buble-0.19.3.tgz";
+ path = fetchurl {
+ name = "buble-0.19.3.tgz";
+ url = "https://registry.yarnpkg.com/buble/-/buble-0.19.3.tgz";
+ sha1 = "01e9412062cff1da6f20342b6ecd72e7bf699d02";
+ };
+ }
+
+ {
+ name = "buffer-indexof-1.1.1.tgz";
+ path = fetchurl {
+ name = "buffer-indexof-1.1.1.tgz";
+ url = "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz";
+ sha1 = "52fabcc6a606d1a00302802648ef68f639da268c";
+ };
+ }
+
+ {
+ name = "buffer-xor-1.0.3.tgz";
+ path = fetchurl {
+ name = "buffer-xor-1.0.3.tgz";
+ url = "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz";
+ sha1 = "26e61ed1422fb70dd42e6e36729ed51d855fe8d9";
+ };
+ }
+
+ {
+ name = "buffer-4.9.1.tgz";
+ path = fetchurl {
+ name = "buffer-4.9.1.tgz";
+ url = "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz";
+ sha1 = "6d1bb601b07a4efced97094132093027c95bc298";
+ };
+ }
+
+ {
+ name = "builtin-modules-1.1.1.tgz";
+ path = fetchurl {
+ name = "builtin-modules-1.1.1.tgz";
+ url = "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz";
+ sha1 = "270f076c5a72c02f5b65a47df94c5fe3a278892f";
+ };
+ }
+
+ {
+ name = "builtin-status-codes-3.0.0.tgz";
+ path = fetchurl {
+ name = "builtin-status-codes-3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz";
+ sha1 = "85982878e21b98e1c66425e03d0174788f569ee8";
+ };
+ }
+
+ {
+ name = "bytes-3.0.0.tgz";
+ path = fetchurl {
+ name = "bytes-3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz";
+ sha1 = "d32815404d689699f85a4ea4fa8755dd13a96048";
+ };
+ }
+
+ {
+ name = "cacache-10.0.2.tgz";
+ path = fetchurl {
+ name = "cacache-10.0.2.tgz";
+ url = "https://registry.yarnpkg.com/cacache/-/cacache-10.0.2.tgz";
+ sha1 = "105a93a162bbedf3a25da42e1939ed99ffb145f8";
+ };
+ }
+
+ {
+ name = "cache-base-1.0.1.tgz";
+ path = fetchurl {
+ name = "cache-base-1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz";
+ sha1 = "0a7f46416831c8b662ee36fe4e7c59d76f666ab2";
+ };
+ }
+
+ {
+ name = "caller-path-0.1.0.tgz";
+ path = fetchurl {
+ name = "caller-path-0.1.0.tgz";
+ url = "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz";
+ sha1 = "94085ef63581ecd3daa92444a8fe94e82577751f";
+ };
+ }
+
+ {
+ name = "callsites-0.2.0.tgz";
+ path = fetchurl {
+ name = "callsites-0.2.0.tgz";
+ url = "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz";
+ sha1 = "afab96262910a7f33c19a5775825c69f34e350ca";
+ };
+ }
+
+ {
+ name = "camel-case-3.0.0.tgz";
+ path = fetchurl {
+ name = "camel-case-3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz";
+ sha1 = "ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73";
+ };
+ }
+
+ {
+ name = "camelcase-keys-2.1.0.tgz";
+ path = fetchurl {
+ name = "camelcase-keys-2.1.0.tgz";
+ url = "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz";
+ sha1 = "308beeaffdf28119051efa1d932213c91b8f92e7";
+ };
+ }
+
+ {
+ name = "camelcase-1.2.1.tgz";
+ path = fetchurl {
+ name = "camelcase-1.2.1.tgz";
+ url = "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz";
+ sha1 = "9bb5304d2e0b56698b2c758b08a3eaa9daa58a39";
+ };
+ }
+
+ {
+ name = "camelcase-2.1.1.tgz";
+ path = fetchurl {
+ name = "camelcase-2.1.1.tgz";
+ url = "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz";
+ sha1 = "7c1d16d679a1bbe59ca02cacecfb011e201f5a1f";
+ };
+ }
+
+ {
+ name = "camelcase-3.0.0.tgz";
+ path = fetchurl {
+ name = "camelcase-3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz";
+ sha1 = "32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a";
+ };
+ }
+
+ {
+ name = "camelcase-4.1.0.tgz";
+ path = fetchurl {
+ name = "camelcase-4.1.0.tgz";
+ url = "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz";
+ sha1 = "d545635be1e33c542649c69173e5de6acfae34dd";
+ };
+ }
+
+ {
+ name = "caseless-0.12.0.tgz";
+ path = fetchurl {
+ name = "caseless-0.12.0.tgz";
+ url = "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz";
+ sha1 = "1b681c21ff84033c826543090689420d187151dc";
+ };
+ }
+
+ {
+ name = "center-align-0.1.3.tgz";
+ path = fetchurl {
+ name = "center-align-0.1.3.tgz";
+ url = "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz";
+ sha1 = "aa0d32629b6ee972200411cbd4461c907bc2b7ad";
+ };
+ }
+
+ {
+ name = "chalk-1.1.3.tgz";
+ path = fetchurl {
+ name = "chalk-1.1.3.tgz";
+ url = "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz";
+ sha1 = "a8115c55e4a702fe4d150abd3872822a7e09fc98";
+ };
+ }
+
+ {
+ name = "chalk-2.3.0.tgz";
+ path = fetchurl {
+ name = "chalk-2.3.0.tgz";
+ url = "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz";
+ sha1 = "b5ea48efc9c1793dccc9b4767c93914d3f2d52ba";
+ };
+ }
+
+ {
+ name = "chalk-2.3.1.tgz";
+ path = fetchurl {
+ name = "chalk-2.3.1.tgz";
+ url = "https://registry.yarnpkg.com/chalk/-/chalk-2.3.1.tgz";
+ sha1 = "523fe2678aec7b04e8041909292fe8b17059b796";
+ };
+ }
+
+ {
+ name = "chardet-0.4.2.tgz";
+ path = fetchurl {
+ name = "chardet-0.4.2.tgz";
+ url = "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz";
+ sha1 = "b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2";
+ };
+ }
+
+ {
+ name = "chokidar-1.7.0.tgz";
+ path = fetchurl {
+ name = "chokidar-1.7.0.tgz";
+ url = "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz";
+ sha1 = "798e689778151c8076b4b360e5edd28cda2bb468";
+ };
+ }
+
+ {
+ name = "chokidar-2.0.2.tgz";
+ path = fetchurl {
+ name = "chokidar-2.0.2.tgz";
+ url = "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.2.tgz";
+ sha1 = "4dc65139eeb2714977735b6a35d06e97b494dfd7";
+ };
+ }
+
+ {
+ name = "chownr-1.0.1.tgz";
+ path = fetchurl {
+ name = "chownr-1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz";
+ sha1 = "e2a75042a9551908bebd25b8523d5f9769d79181";
+ };
+ }
+
+ {
+ name = "cipher-base-1.0.4.tgz";
+ path = fetchurl {
+ name = "cipher-base-1.0.4.tgz";
+ url = "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz";
+ sha1 = "8760e4ecc272f4c363532f926d874aae2c1397de";
+ };
+ }
+
+ {
+ name = "circular-json-0.3.3.tgz";
+ path = fetchurl {
+ name = "circular-json-0.3.3.tgz";
+ url = "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz";
+ sha1 = "815c99ea84f6809529d2f45791bdf82711352d66";
+ };
+ }
+
+ {
+ name = "class-utils-0.3.6.tgz";
+ path = fetchurl {
+ name = "class-utils-0.3.6.tgz";
+ url = "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz";
+ sha1 = "f93369ae8b9a7ce02fd41faad0ca83033190c463";
+ };
+ }
+
+ {
+ name = "clean-css-4.1.9.tgz";
+ path = fetchurl {
+ name = "clean-css-4.1.9.tgz";
+ url = "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.9.tgz";
+ sha1 = "35cee8ae7687a49b98034f70de00c4edd3826301";
+ };
+ }
+
+ {
+ name = "cli-cursor-2.1.0.tgz";
+ path = fetchurl {
+ name = "cli-cursor-2.1.0.tgz";
+ url = "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz";
+ sha1 = "b35dac376479facc3e94747d41d0d0f5238ffcb5";
+ };
+ }
+
+ {
+ name = "cli-width-2.2.0.tgz";
+ path = fetchurl {
+ name = "cli-width-2.2.0.tgz";
+ url = "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz";
+ sha1 = "ff19ede8a9a5e579324147b0c11f0fbcbabed639";
+ };
+ }
+
+ {
+ name = "cliui-2.1.0.tgz";
+ path = fetchurl {
+ name = "cliui-2.1.0.tgz";
+ url = "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz";
+ sha1 = "4b475760ff80264c762c3a1719032e91c7fea0d1";
+ };
+ }
+
+ {
+ name = "cliui-3.2.0.tgz";
+ path = fetchurl {
+ name = "cliui-3.2.0.tgz";
+ url = "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz";
+ sha1 = "120601537a916d29940f934da3b48d585a39213d";
+ };
+ }
+
+ {
+ name = "clone-2.1.1.tgz";
+ path = fetchurl {
+ name = "clone-2.1.1.tgz";
+ url = "https://registry.yarnpkg.com/clone/-/clone-2.1.1.tgz";
+ sha1 = "d217d1e961118e3ac9a4b8bba3285553bf647cdb";
+ };
+ }
+
+ {
+ name = "co-4.6.0.tgz";
+ path = fetchurl {
+ name = "co-4.6.0.tgz";
+ url = "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz";
+ sha1 = "6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184";
+ };
+ }
+
+ {
+ name = "code-point-at-1.1.0.tgz";
+ path = fetchurl {
+ name = "code-point-at-1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz";
+ sha1 = "0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77";
+ };
+ }
+
+ {
+ name = "collection-visit-1.0.0.tgz";
+ path = fetchurl {
+ name = "collection-visit-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz";
+ sha1 = "4bc0373c164bc3291b4d368c829cf1a80a59dca0";
+ };
+ }
+
+ {
+ name = "color-convert-1.9.1.tgz";
+ path = fetchurl {
+ name = "color-convert-1.9.1.tgz";
+ url = "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz";
+ sha1 = "c1261107aeb2f294ebffec9ed9ecad529a6097ed";
+ };
+ }
+
+ {
+ name = "color-name-1.1.3.tgz";
+ path = fetchurl {
+ name = "color-name-1.1.3.tgz";
+ url = "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz";
+ sha1 = "a7d0558bd89c42f795dd42328f740831ca53bc25";
+ };
+ }
+
+ {
+ name = "combined-stream-1.0.5.tgz";
+ path = fetchurl {
+ name = "combined-stream-1.0.5.tgz";
+ url = "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz";
+ sha1 = "938370a57b4a51dea2c77c15d5c5fdf895164009";
+ };
+ }
+
+ {
+ name = "commander-2.12.2.tgz";
+ path = fetchurl {
+ name = "commander-2.12.2.tgz";
+ url = "https://registry.yarnpkg.com/commander/-/commander-2.12.2.tgz";
+ sha1 = "0f5946c427ed9ec0d91a46bb9def53e54650e555";
+ };
+ }
+
+ {
+ name = "commander-2.13.0.tgz";
+ path = fetchurl {
+ name = "commander-2.13.0.tgz";
+ url = "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz";
+ sha1 = "6964bca67685df7c1f1430c584f07d7597885b9c";
+ };
+ }
+
+ {
+ name = "commondir-1.0.1.tgz";
+ path = fetchurl {
+ name = "commondir-1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz";
+ sha1 = "ddd800da0c66127393cca5950ea968a3aaf1253b";
+ };
+ }
+
+ {
+ name = "component-emitter-1.2.1.tgz";
+ path = fetchurl {
+ name = "component-emitter-1.2.1.tgz";
+ url = "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz";
+ sha1 = "137918d6d78283f7df7a6b7c5a63e140e69425e6";
+ };
+ }
+
+ {
+ name = "compressible-2.0.13.tgz";
+ path = fetchurl {
+ name = "compressible-2.0.13.tgz";
+ url = "https://registry.yarnpkg.com/compressible/-/compressible-2.0.13.tgz";
+ sha1 = "0d1020ab924b2fdb4d6279875c7d6daba6baa7a9";
+ };
+ }
+
+ {
+ name = "compression-1.7.2.tgz";
+ path = fetchurl {
+ name = "compression-1.7.2.tgz";
+ url = "https://registry.yarnpkg.com/compression/-/compression-1.7.2.tgz";
+ sha1 = "aaffbcd6aaf854b44ebb280353d5ad1651f59a69";
+ };
+ }
+
+ {
+ name = "concat-map-0.0.1.tgz";
+ path = fetchurl {
+ name = "concat-map-0.0.1.tgz";
+ url = "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz";
+ sha1 = "d8a96bd77fd68df7793a73036a3ba0d5405d477b";
+ };
+ }
+
+ {
+ name = "concat-stream-1.6.0.tgz";
+ path = fetchurl {
+ name = "concat-stream-1.6.0.tgz";
+ url = "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz";
+ sha1 = "0aac662fd52be78964d5532f694784e70110acf7";
+ };
+ }
+
+ {
+ name = "connect-history-api-fallback-1.5.0.tgz";
+ path = fetchurl {
+ name = "connect-history-api-fallback-1.5.0.tgz";
+ url = "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz";
+ sha1 = "b06873934bc5e344fef611a196a6faae0aee015a";
+ };
+ }
+
+ {
+ name = "console-browserify-1.1.0.tgz";
+ path = fetchurl {
+ name = "console-browserify-1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz";
+ sha1 = "f0241c45730a9fc6323b206dbf38edc741d0bb10";
+ };
+ }
+
+ {
+ name = "console-control-strings-1.1.0.tgz";
+ path = fetchurl {
+ name = "console-control-strings-1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz";
+ sha1 = "3d7cf4464db6446ea644bf4b39507f9851008e8e";
+ };
+ }
+
+ {
+ name = "constants-browserify-1.0.0.tgz";
+ path = fetchurl {
+ name = "constants-browserify-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz";
+ sha1 = "c20b96d8c617748aaf1c16021760cd27fcb8cb75";
+ };
+ }
+
+ {
+ name = "content-disposition-0.5.2.tgz";
+ path = fetchurl {
+ name = "content-disposition-0.5.2.tgz";
+ url = "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz";
+ sha1 = "0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4";
+ };
+ }
+
+ {
+ name = "content-type-1.0.4.tgz";
+ path = fetchurl {
+ name = "content-type-1.0.4.tgz";
+ url = "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz";
+ sha1 = "e138cc75e040c727b1966fe5e5f8c9aee256fe3b";
+ };
+ }
+
+ {
+ name = "cookie-signature-1.0.6.tgz";
+ path = fetchurl {
+ name = "cookie-signature-1.0.6.tgz";
+ url = "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz";
+ sha1 = "e303a882b342cc3ee8ca513a79999734dab3ae2c";
+ };
+ }
+
+ {
+ name = "cookie-0.3.1.tgz";
+ path = fetchurl {
+ name = "cookie-0.3.1.tgz";
+ url = "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz";
+ sha1 = "e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb";
+ };
+ }
+
+ {
+ name = "copy-concurrently-1.0.5.tgz";
+ path = fetchurl {
+ name = "copy-concurrently-1.0.5.tgz";
+ url = "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz";
+ sha1 = "92297398cae34937fcafd6ec8139c18051f0b5e0";
+ };
+ }
+
+ {
+ name = "copy-descriptor-0.1.1.tgz";
+ path = fetchurl {
+ name = "copy-descriptor-0.1.1.tgz";
+ url = "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz";
+ sha1 = "676f6eb3c39997c2ee1ac3a924fd6124748f578d";
+ };
+ }
+
+ {
+ name = "core-util-is-1.0.2.tgz";
+ path = fetchurl {
+ name = "core-util-is-1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz";
+ sha1 = "b5fd54220aa2bc5ab57aab7140c940754503c1a7";
+ };
+ }
+
+ {
+ name = "create-ecdh-4.0.0.tgz";
+ path = fetchurl {
+ name = "create-ecdh-4.0.0.tgz";
+ url = "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz";
+ sha1 = "888c723596cdf7612f6498233eebd7a35301737d";
+ };
+ }
+
+ {
+ name = "create-hash-1.1.3.tgz";
+ path = fetchurl {
+ name = "create-hash-1.1.3.tgz";
+ url = "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.3.tgz";
+ sha1 = "606042ac8b9262750f483caddab0f5819172d8fd";
+ };
+ }
+
+ {
+ name = "create-hmac-1.1.6.tgz";
+ path = fetchurl {
+ name = "create-hmac-1.1.6.tgz";
+ url = "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.6.tgz";
+ sha1 = "acb9e221a4e17bdb076e90657c42b93e3726cf06";
+ };
+ }
+
+ {
+ name = "cross-spawn-5.1.0.tgz";
+ path = fetchurl {
+ name = "cross-spawn-5.1.0.tgz";
+ url = "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz";
+ sha1 = "e8bd0efee58fcff6f8f94510a0a554bbfa235449";
+ };
+ }
+
+ {
+ name = "cryptiles-2.0.5.tgz";
+ path = fetchurl {
+ name = "cryptiles-2.0.5.tgz";
+ url = "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz";
+ sha1 = "3bdfecdc608147c1c67202fa291e7dca59eaa3b8";
+ };
+ }
+
+ {
+ name = "crypto-browserify-3.12.0.tgz";
+ path = fetchurl {
+ name = "crypto-browserify-3.12.0.tgz";
+ url = "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz";
+ sha1 = "396cf9f3137f03e4b8e532c58f698254e00f80ec";
+ };
+ }
+
+ {
+ name = "css-select-1.2.0.tgz";
+ path = fetchurl {
+ name = "css-select-1.2.0.tgz";
+ url = "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz";
+ sha1 = "2b3a110539c5355f1cd8d314623e870b121ec858";
+ };
+ }
+
+ {
+ name = "css-what-2.1.0.tgz";
+ path = fetchurl {
+ name = "css-what-2.1.0.tgz";
+ url = "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz";
+ sha1 = "9467d032c38cfaefb9f2d79501253062f87fa1bd";
+ };
+ }
+
+ {
+ name = "currently-unhandled-0.4.1.tgz";
+ path = fetchurl {
+ name = "currently-unhandled-0.4.1.tgz";
+ url = "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz";
+ sha1 = "988df33feab191ef799a61369dd76c17adf957ea";
+ };
+ }
+
+ {
+ name = "cyclist-0.2.2.tgz";
+ path = fetchurl {
+ name = "cyclist-0.2.2.tgz";
+ url = "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz";
+ sha1 = "1b33792e11e914a2fd6d6ed6447464444e5fa640";
+ };
+ }
+
+ {
+ name = "d-1.0.0.tgz";
+ path = fetchurl {
+ name = "d-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz";
+ sha1 = "754bb5bfe55451da69a58b94d45f4c5b0462d58f";
+ };
+ }
+
+ {
+ name = "dashdash-1.14.1.tgz";
+ path = fetchurl {
+ name = "dashdash-1.14.1.tgz";
+ url = "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz";
+ sha1 = "853cfa0f7cbe2fed5de20326b8dd581035f6e2f0";
+ };
+ }
+
+ {
+ name = "date-now-0.1.4.tgz";
+ path = fetchurl {
+ name = "date-now-0.1.4.tgz";
+ url = "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz";
+ sha1 = "eaf439fd4d4848ad74e5cc7dbef200672b9e345b";
+ };
+ }
+
+ {
+ name = "debug-2.6.9.tgz";
+ path = fetchurl {
+ name = "debug-2.6.9.tgz";
+ url = "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz";
+ sha1 = "5d128515df134ff327e90a4c93f4e077a536341f";
+ };
+ }
+
+ {
+ name = "debug-3.1.0.tgz";
+ path = fetchurl {
+ name = "debug-3.1.0.tgz";
+ url = "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz";
+ sha1 = "5bb5a0672628b64149566ba16819e61518c67261";
+ };
+ }
+
+ {
+ name = "decamelize-1.2.0.tgz";
+ path = fetchurl {
+ name = "decamelize-1.2.0.tgz";
+ url = "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz";
+ sha1 = "f6534d15148269b20352e7bee26f501f9a191290";
+ };
+ }
+
+ {
+ name = "decode-uri-component-0.2.0.tgz";
+ path = fetchurl {
+ name = "decode-uri-component-0.2.0.tgz";
+ url = "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz";
+ sha1 = "eb3913333458775cb84cd1a1fae062106bb87545";
+ };
+ }
+
+ {
+ name = "deep-equal-1.0.1.tgz";
+ path = fetchurl {
+ name = "deep-equal-1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz";
+ sha1 = "f5d260292b660e084eff4cdbc9f08ad3247448b5";
+ };
+ }
+
+ {
+ name = "deep-extend-0.4.2.tgz";
+ path = fetchurl {
+ name = "deep-extend-0.4.2.tgz";
+ url = "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz";
+ sha1 = "48b699c27e334bf89f10892be432f6e4c7d34a7f";
+ };
+ }
+
+ {
+ name = "deep-is-0.1.3.tgz";
+ path = fetchurl {
+ name = "deep-is-0.1.3.tgz";
+ url = "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz";
+ sha1 = "b369d6fb5dbc13eecf524f91b070feedc357cf34";
+ };
+ }
+
+ {
+ name = "define-properties-1.1.2.tgz";
+ path = fetchurl {
+ name = "define-properties-1.1.2.tgz";
+ url = "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz";
+ sha1 = "83a73f2fea569898fb737193c8f873caf6d45c94";
+ };
+ }
+
+ {
+ name = "define-property-0.2.5.tgz";
+ path = fetchurl {
+ name = "define-property-0.2.5.tgz";
+ url = "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz";
+ sha1 = "c35b1ef918ec3c990f9a5bc57be04aacec5c8116";
+ };
+ }
+
+ {
+ name = "define-property-1.0.0.tgz";
+ path = fetchurl {
+ name = "define-property-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz";
+ sha1 = "769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6";
+ };
+ }
+
+ {
+ name = "define-property-2.0.2.tgz";
+ path = fetchurl {
+ name = "define-property-2.0.2.tgz";
+ url = "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz";
+ sha1 = "d459689e8d654ba77e02a817f8710d702cb16e9d";
+ };
+ }
+
+ {
+ name = "del-2.2.2.tgz";
+ path = fetchurl {
+ name = "del-2.2.2.tgz";
+ url = "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz";
+ sha1 = "c12c981d067846c84bcaf862cff930d907ffd1a8";
+ };
+ }
+
+ {
+ name = "del-3.0.0.tgz";
+ path = fetchurl {
+ name = "del-3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz";
+ sha1 = "53ecf699ffcbcb39637691ab13baf160819766e5";
+ };
+ }
+
+ {
+ name = "delayed-stream-1.0.0.tgz";
+ path = fetchurl {
+ name = "delayed-stream-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz";
+ sha1 = "df3ae199acadfb7d440aaae0b29e2272b24ec619";
+ };
+ }
+
+ {
+ name = "delegates-1.0.0.tgz";
+ path = fetchurl {
+ name = "delegates-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz";
+ sha1 = "84c6e159b81904fdca59a0ef44cd870d31250f9a";
+ };
+ }
+
+ {
+ name = "depd-1.1.1.tgz";
+ path = fetchurl {
+ name = "depd-1.1.1.tgz";
+ url = "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz";
+ sha1 = "5783b4e1c459f06fa5ca27f991f3d06e7a310359";
+ };
+ }
+
+ {
+ name = "depd-1.1.2.tgz";
+ path = fetchurl {
+ name = "depd-1.1.2.tgz";
+ url = "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz";
+ sha1 = "9bcd52e14c097763e749b274c4346ed2e560b5a9";
+ };
+ }
+
+ {
+ name = "des.js-1.0.0.tgz";
+ path = fetchurl {
+ name = "des.js-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz";
+ sha1 = "c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc";
+ };
+ }
+
+ {
+ name = "destroy-1.0.4.tgz";
+ path = fetchurl {
+ name = "destroy-1.0.4.tgz";
+ url = "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz";
+ sha1 = "978857442c44749e4206613e37946205826abd80";
+ };
+ }
+
+ {
+ name = "detect-libc-1.0.3.tgz";
+ path = fetchurl {
+ name = "detect-libc-1.0.3.tgz";
+ url = "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz";
+ sha1 = "fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b";
+ };
+ }
+
+ {
+ name = "detect-node-2.0.3.tgz";
+ path = fetchurl {
+ name = "detect-node-2.0.3.tgz";
+ url = "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.3.tgz";
+ sha1 = "a2033c09cc8e158d37748fbde7507832bd6ce127";
+ };
+ }
+
+ {
+ name = "diffie-hellman-5.0.2.tgz";
+ path = fetchurl {
+ name = "diffie-hellman-5.0.2.tgz";
+ url = "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz";
+ sha1 = "b5835739270cfe26acf632099fded2a07f209e5e";
+ };
+ }
+
+ {
+ name = "dns-equal-1.0.0.tgz";
+ path = fetchurl {
+ name = "dns-equal-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz";
+ sha1 = "b39e7f1da6eb0a75ba9c17324b34753c47e0654d";
+ };
+ }
+
+ {
+ name = "dns-packet-1.3.1.tgz";
+ path = fetchurl {
+ name = "dns-packet-1.3.1.tgz";
+ url = "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz";
+ sha1 = "12aa426981075be500b910eedcd0b47dd7deda5a";
+ };
+ }
+
+ {
+ name = "dns-txt-2.0.2.tgz";
+ path = fetchurl {
+ name = "dns-txt-2.0.2.tgz";
+ url = "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz";
+ sha1 = "b91d806f5d27188e4ab3e7d107d881a1cc4642b6";
+ };
+ }
+
+ {
+ name = "doctrine-2.1.0.tgz";
+ path = fetchurl {
+ name = "doctrine-2.1.0.tgz";
+ url = "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz";
+ sha1 = "5cd01fc101621b42c4cd7f5d1a66243716d3f39d";
+ };
+ }
+
+ {
+ name = "dom-converter-0.1.4.tgz";
+ path = fetchurl {
+ name = "dom-converter-0.1.4.tgz";
+ url = "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.1.4.tgz";
+ sha1 = "a45ef5727b890c9bffe6d7c876e7b19cb0e17f3b";
+ };
+ }
+
+ {
+ name = "dom-serializer-0.1.0.tgz";
+ path = fetchurl {
+ name = "dom-serializer-0.1.0.tgz";
+ url = "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz";
+ sha1 = "073c697546ce0780ce23be4a28e293e40bc30c82";
+ };
+ }
+
+ {
+ name = "domain-browser-1.1.7.tgz";
+ path = fetchurl {
+ name = "domain-browser-1.1.7.tgz";
+ url = "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz";
+ sha1 = "867aa4b093faa05f1de08c06f4d7b21fdf8698bc";
+ };
+ }
+
+ {
+ name = "domelementtype-1.3.0.tgz";
+ path = fetchurl {
+ name = "domelementtype-1.3.0.tgz";
+ url = "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz";
+ sha1 = "b17aed82e8ab59e52dd9c19b1756e0fc187204c2";
+ };
+ }
+
+ {
+ name = "domelementtype-1.1.3.tgz";
+ path = fetchurl {
+ name = "domelementtype-1.1.3.tgz";
+ url = "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz";
+ sha1 = "bd28773e2642881aec51544924299c5cd822185b";
+ };
+ }
+
+ {
+ name = "domhandler-2.1.0.tgz";
+ path = fetchurl {
+ name = "domhandler-2.1.0.tgz";
+ url = "https://registry.yarnpkg.com/domhandler/-/domhandler-2.1.0.tgz";
+ sha1 = "d2646f5e57f6c3bab11cf6cb05d3c0acf7412594";
+ };
+ }
+
+ {
+ name = "domutils-1.1.6.tgz";
+ path = fetchurl {
+ name = "domutils-1.1.6.tgz";
+ url = "https://registry.yarnpkg.com/domutils/-/domutils-1.1.6.tgz";
+ sha1 = "bddc3de099b9a2efacc51c623f28f416ecc57485";
+ };
+ }
+
+ {
+ name = "domutils-1.5.1.tgz";
+ path = fetchurl {
+ name = "domutils-1.5.1.tgz";
+ url = "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz";
+ sha1 = "dcd8488a26f563d61079e48c9f7b7e32373682cf";
+ };
+ }
+
+ {
+ name = "duplexify-3.5.3.tgz";
+ path = fetchurl {
+ name = "duplexify-3.5.3.tgz";
+ url = "https://registry.yarnpkg.com/duplexify/-/duplexify-3.5.3.tgz";
+ sha1 = "8b5818800df92fd0125b27ab896491912858243e";
+ };
+ }
+
+ {
+ name = "ecc-jsbn-0.1.1.tgz";
+ path = fetchurl {
+ name = "ecc-jsbn-0.1.1.tgz";
+ url = "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz";
+ sha1 = "0fc73a9ed5f0d53c38193398523ef7e543777505";
+ };
+ }
+
+ {
+ name = "ee-first-1.1.1.tgz";
+ path = fetchurl {
+ name = "ee-first-1.1.1.tgz";
+ url = "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz";
+ sha1 = "590c61156b0ae2f4f0255732a158b266bc56b21d";
+ };
+ }
+
+ {
+ name = "elliptic-6.4.0.tgz";
+ path = fetchurl {
+ name = "elliptic-6.4.0.tgz";
+ url = "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz";
+ sha1 = "cac9af8762c85836187003c8dfe193e5e2eae5df";
+ };
+ }
+
+ {
+ name = "emojis-list-2.1.0.tgz";
+ path = fetchurl {
+ name = "emojis-list-2.1.0.tgz";
+ url = "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz";
+ sha1 = "4daa4d9db00f9819880c79fa457ae5b09a1fd389";
+ };
+ }
+
+ {
+ name = "encodeurl-1.0.2.tgz";
+ path = fetchurl {
+ name = "encodeurl-1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz";
+ sha1 = "ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59";
+ };
+ }
+
+ {
+ name = "end-of-stream-1.4.1.tgz";
+ path = fetchurl {
+ name = "end-of-stream-1.4.1.tgz";
+ url = "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz";
+ sha1 = "ed29634d19baba463b6ce6b80a37213eab71ec43";
+ };
+ }
+
+ {
+ name = "enhanced-resolve-3.4.1.tgz";
+ path = fetchurl {
+ name = "enhanced-resolve-3.4.1.tgz";
+ url = "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz";
+ sha1 = "0421e339fd71419b3da13d129b3979040230476e";
+ };
+ }
+
+ {
+ name = "entities-1.1.1.tgz";
+ path = fetchurl {
+ name = "entities-1.1.1.tgz";
+ url = "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz";
+ sha1 = "6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0";
+ };
+ }
+
+ {
+ name = "errno-0.1.6.tgz";
+ path = fetchurl {
+ name = "errno-0.1.6.tgz";
+ url = "https://registry.yarnpkg.com/errno/-/errno-0.1.6.tgz";
+ sha1 = "c386ce8a6283f14fc09563b71560908c9bf53026";
+ };
+ }
+
+ {
+ name = "error-ex-1.3.1.tgz";
+ path = fetchurl {
+ name = "error-ex-1.3.1.tgz";
+ url = "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz";
+ sha1 = "f855a86ce61adc4e8621c3cda21e7a7612c3a8dc";
+ };
+ }
+
+ {
+ name = "es-abstract-1.10.0.tgz";
+ path = fetchurl {
+ name = "es-abstract-1.10.0.tgz";
+ url = "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.10.0.tgz";
+ sha1 = "1ecb36c197842a00d8ee4c2dfd8646bb97d60864";
+ };
+ }
+
+ {
+ name = "es-to-primitive-1.1.1.tgz";
+ path = fetchurl {
+ name = "es-to-primitive-1.1.1.tgz";
+ url = "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz";
+ sha1 = "45355248a88979034b6792e19bb81f2b7975dd0d";
+ };
+ }
+
+ {
+ name = "es5-ext-0.10.38.tgz";
+ path = fetchurl {
+ name = "es5-ext-0.10.38.tgz";
+ url = "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.38.tgz";
+ sha1 = "fa7d40d65bbc9bb8a67e1d3f9cc656a00530eed3";
+ };
+ }
+
+ {
+ name = "es6-iterator-2.0.3.tgz";
+ path = fetchurl {
+ name = "es6-iterator-2.0.3.tgz";
+ url = "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz";
+ sha1 = "a7de889141a05a94b0854403b2d0a0fbfa98f3b7";
+ };
+ }
+
+ {
+ name = "es6-map-0.1.5.tgz";
+ path = fetchurl {
+ name = "es6-map-0.1.5.tgz";
+ url = "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz";
+ sha1 = "9136e0503dcc06a301690f0bb14ff4e364e949f0";
+ };
+ }
+
+ {
+ name = "es6-set-0.1.5.tgz";
+ path = fetchurl {
+ name = "es6-set-0.1.5.tgz";
+ url = "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz";
+ sha1 = "d2b3ec5d4d800ced818db538d28974db0a73ccb1";
+ };
+ }
+
+ {
+ name = "es6-symbol-3.1.1.tgz";
+ path = fetchurl {
+ name = "es6-symbol-3.1.1.tgz";
+ url = "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz";
+ sha1 = "bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77";
+ };
+ }
+
+ {
+ name = "es6-weak-map-2.0.2.tgz";
+ path = fetchurl {
+ name = "es6-weak-map-2.0.2.tgz";
+ url = "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz";
+ sha1 = "5e3ab32251ffd1538a1f8e5ffa1357772f92d96f";
+ };
+ }
+
+ {
+ name = "escape-html-1.0.3.tgz";
+ path = fetchurl {
+ name = "escape-html-1.0.3.tgz";
+ url = "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz";
+ sha1 = "0258eae4d3d0c0974de1c169188ef0051d1d1988";
+ };
+ }
+
+ {
+ name = "escape-string-regexp-1.0.5.tgz";
+ path = fetchurl {
+ name = "escape-string-regexp-1.0.5.tgz";
+ url = "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz";
+ sha1 = "1b61c0562190a8dff6ae3bb2cf0200ca130b86d4";
+ };
+ }
+
+ {
+ name = "escope-3.6.0.tgz";
+ path = fetchurl {
+ name = "escope-3.6.0.tgz";
+ url = "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz";
+ sha1 = "e01975e812781a163a6dadfdd80398dc64c889c3";
+ };
+ }
+
+ {
+ name = "eslint-scope-3.7.1.tgz";
+ path = fetchurl {
+ name = "eslint-scope-3.7.1.tgz";
+ url = "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz";
+ sha1 = "3d63c3edfda02e06e01a452ad88caacc7cdcb6e8";
+ };
+ }
+
+ {
+ name = "eslint-visitor-keys-1.0.0.tgz";
+ path = fetchurl {
+ name = "eslint-visitor-keys-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz";
+ sha1 = "3f3180fb2e291017716acb4c9d6d5b5c34a6a81d";
+ };
+ }
+
+ {
+ name = "eslint-4.18.1.tgz";
+ path = fetchurl {
+ name = "eslint-4.18.1.tgz";
+ url = "https://registry.yarnpkg.com/eslint/-/eslint-4.18.1.tgz";
+ sha1 = "b9138440cb1e98b2f44a0d578c6ecf8eae6150b0";
+ };
+ }
+
+ {
+ name = "espree-3.5.2.tgz";
+ path = fetchurl {
+ name = "espree-3.5.2.tgz";
+ url = "https://registry.yarnpkg.com/espree/-/espree-3.5.2.tgz";
+ sha1 = "756ada8b979e9dcfcdb30aad8d1a9304a905e1ca";
+ };
+ }
+
+ {
+ name = "esprima-4.0.0.tgz";
+ path = fetchurl {
+ name = "esprima-4.0.0.tgz";
+ url = "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz";
+ sha1 = "4499eddcd1110e0b218bacf2fa7f7f59f55ca804";
+ };
+ }
+
+ {
+ name = "esquery-1.0.0.tgz";
+ path = fetchurl {
+ name = "esquery-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/esquery/-/esquery-1.0.0.tgz";
+ sha1 = "cfba8b57d7fba93f17298a8a006a04cda13d80fa";
+ };
+ }
+
+ {
+ name = "esrecurse-4.2.0.tgz";
+ path = fetchurl {
+ name = "esrecurse-4.2.0.tgz";
+ url = "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.0.tgz";
+ sha1 = "fa9568d98d3823f9a41d91e902dcab9ea6e5b163";
+ };
+ }
+
+ {
+ name = "estraverse-4.2.0.tgz";
+ path = fetchurl {
+ name = "estraverse-4.2.0.tgz";
+ url = "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz";
+ sha1 = "0dee3fed31fcd469618ce7342099fc1afa0bdb13";
+ };
+ }
+
+ {
+ name = "esutils-2.0.2.tgz";
+ path = fetchurl {
+ name = "esutils-2.0.2.tgz";
+ url = "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz";
+ sha1 = "0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b";
+ };
+ }
+
+ {
+ name = "etag-1.8.1.tgz";
+ path = fetchurl {
+ name = "etag-1.8.1.tgz";
+ url = "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz";
+ sha1 = "41ae2eeb65efa62268aebfea83ac7d79299b0887";
+ };
+ }
+
+ {
+ name = "event-emitter-0.3.5.tgz";
+ path = fetchurl {
+ name = "event-emitter-0.3.5.tgz";
+ url = "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz";
+ sha1 = "df8c69eef1647923c7157b9ce83840610b02cc39";
+ };
+ }
+
+ {
+ name = "eventemitter3-1.2.0.tgz";
+ path = fetchurl {
+ name = "eventemitter3-1.2.0.tgz";
+ url = "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz";
+ sha1 = "1c86991d816ad1e504750e73874224ecf3bec508";
+ };
+ }
+
+ {
+ name = "events-1.1.1.tgz";
+ path = fetchurl {
+ name = "events-1.1.1.tgz";
+ url = "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz";
+ sha1 = "9ebdb7635ad099c70dcc4c2a1f5004288e8bd924";
+ };
+ }
+
+ {
+ name = "eventsource-0.1.6.tgz";
+ path = fetchurl {
+ name = "eventsource-0.1.6.tgz";
+ url = "https://registry.yarnpkg.com/eventsource/-/eventsource-0.1.6.tgz";
+ sha1 = "0acede849ed7dd1ccc32c811bb11b944d4f29232";
+ };
+ }
+
+ {
+ name = "evp_bytestokey-1.0.3.tgz";
+ path = fetchurl {
+ name = "evp_bytestokey-1.0.3.tgz";
+ url = "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz";
+ sha1 = "7fcbdb198dc71959432efe13842684e0525acb02";
+ };
+ }
+
+ {
+ name = "execa-0.7.0.tgz";
+ path = fetchurl {
+ name = "execa-0.7.0.tgz";
+ url = "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz";
+ sha1 = "944becd34cc41ee32a63a9faf27ad5a65fc59777";
+ };
+ }
+
+ {
+ name = "expand-brackets-0.1.5.tgz";
+ path = fetchurl {
+ name = "expand-brackets-0.1.5.tgz";
+ url = "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz";
+ sha1 = "df07284e342a807cd733ac5af72411e581d1177b";
+ };
+ }
+
+ {
+ name = "expand-brackets-2.1.4.tgz";
+ path = fetchurl {
+ name = "expand-brackets-2.1.4.tgz";
+ url = "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz";
+ sha1 = "b77735e315ce30f6b6eff0f83b04151a22449622";
+ };
+ }
+
+ {
+ name = "expand-range-1.8.2.tgz";
+ path = fetchurl {
+ name = "expand-range-1.8.2.tgz";
+ url = "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz";
+ sha1 = "a299effd335fe2721ebae8e257ec79644fc85337";
+ };
+ }
+
+ {
+ name = "express-4.16.2.tgz";
+ path = fetchurl {
+ name = "express-4.16.2.tgz";
+ url = "https://registry.yarnpkg.com/express/-/express-4.16.2.tgz";
+ sha1 = "e35c6dfe2d64b7dca0a5cd4f21781be3299e076c";
+ };
+ }
+
+ {
+ name = "extend-shallow-2.0.1.tgz";
+ path = fetchurl {
+ name = "extend-shallow-2.0.1.tgz";
+ url = "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz";
+ sha1 = "51af7d614ad9a9f610ea1bafbb989d6b1c56890f";
+ };
+ }
+
+ {
+ name = "extend-shallow-3.0.2.tgz";
+ path = fetchurl {
+ name = "extend-shallow-3.0.2.tgz";
+ url = "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz";
+ sha1 = "26a71aaf073b39fb2127172746131c2704028db8";
+ };
+ }
+
+ {
+ name = "extend-3.0.1.tgz";
+ path = fetchurl {
+ name = "extend-3.0.1.tgz";
+ url = "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz";
+ sha1 = "a755ea7bc1adfcc5a31ce7e762dbaadc5e636444";
+ };
+ }
+
+ {
+ name = "external-editor-2.1.0.tgz";
+ path = fetchurl {
+ name = "external-editor-2.1.0.tgz";
+ url = "https://registry.yarnpkg.com/external-editor/-/external-editor-2.1.0.tgz";
+ sha1 = "3d026a21b7f95b5726387d4200ac160d372c3b48";
+ };
+ }
+
+ {
+ name = "extglob-0.3.2.tgz";
+ path = fetchurl {
+ name = "extglob-0.3.2.tgz";
+ url = "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz";
+ sha1 = "2e18ff3d2f49ab2765cec9023f011daa8d8349a1";
+ };
+ }
+
+ {
+ name = "extglob-2.0.4.tgz";
+ path = fetchurl {
+ name = "extglob-2.0.4.tgz";
+ url = "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz";
+ sha1 = "ad00fe4dc612a9232e8718711dc5cb5ab0285543";
+ };
+ }
+
+ {
+ name = "extsprintf-1.3.0.tgz";
+ path = fetchurl {
+ name = "extsprintf-1.3.0.tgz";
+ url = "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz";
+ sha1 = "96918440e3041a7a414f8c52e3c574eb3c3e1e05";
+ };
+ }
+
+ {
+ name = "extsprintf-1.4.0.tgz";
+ path = fetchurl {
+ name = "extsprintf-1.4.0.tgz";
+ url = "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz";
+ sha1 = "e2689f8f356fad62cca65a3a91c5df5f9551692f";
+ };
+ }
+
+ {
+ name = "fast-deep-equal-1.0.0.tgz";
+ path = fetchurl {
+ name = "fast-deep-equal-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz";
+ sha1 = "96256a3bc975595eb36d82e9929d060d893439ff";
+ };
+ }
+
+ {
+ name = "fast-json-stable-stringify-2.0.0.tgz";
+ path = fetchurl {
+ name = "fast-json-stable-stringify-2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz";
+ sha1 = "d5142c0caee6b1189f87d3a76111064f86c8bbf2";
+ };
+ }
+
+ {
+ name = "fast-levenshtein-2.0.6.tgz";
+ path = fetchurl {
+ name = "fast-levenshtein-2.0.6.tgz";
+ url = "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz";
+ sha1 = "3d8a5c66883a16a30ca8643e851f19baa7797917";
+ };
+ }
+
+ {
+ name = "faye-websocket-0.10.0.tgz";
+ path = fetchurl {
+ name = "faye-websocket-0.10.0.tgz";
+ url = "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz";
+ sha1 = "4e492f8d04dfb6f89003507f6edbf2d501e7c6f4";
+ };
+ }
+
+ {
+ name = "faye-websocket-0.11.1.tgz";
+ path = fetchurl {
+ name = "faye-websocket-0.11.1.tgz";
+ url = "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.1.tgz";
+ sha1 = "f0efe18c4f56e4f40afc7e06c719fd5ee6188f38";
+ };
+ }
+
+ {
+ name = "figures-2.0.0.tgz";
+ path = fetchurl {
+ name = "figures-2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz";
+ sha1 = "3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962";
+ };
+ }
+
+ {
+ name = "file-entry-cache-2.0.0.tgz";
+ path = fetchurl {
+ name = "file-entry-cache-2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz";
+ sha1 = "c392990c3e684783d838b8c84a45d8a048458361";
+ };
+ }
+
+ {
+ name = "filename-regex-2.0.1.tgz";
+ path = fetchurl {
+ name = "filename-regex-2.0.1.tgz";
+ url = "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz";
+ sha1 = "c1c4b9bee3e09725ddb106b75c1e301fe2f18b26";
+ };
+ }
+
+ {
+ name = "fill-range-2.2.3.tgz";
+ path = fetchurl {
+ name = "fill-range-2.2.3.tgz";
+ url = "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz";
+ sha1 = "50b77dfd7e469bc7492470963699fe7a8485a723";
+ };
+ }
+
+ {
+ name = "fill-range-4.0.0.tgz";
+ path = fetchurl {
+ name = "fill-range-4.0.0.tgz";
+ url = "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz";
+ sha1 = "d544811d428f98eb06a63dc402d2403c328c38f7";
+ };
+ }
+
+ {
+ name = "finalhandler-1.1.0.tgz";
+ path = fetchurl {
+ name = "finalhandler-1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz";
+ sha1 = "ce0b6855b45853e791b2fcc680046d88253dd7f5";
+ };
+ }
+
+ {
+ name = "find-cache-dir-1.0.0.tgz";
+ path = fetchurl {
+ name = "find-cache-dir-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz";
+ sha1 = "9288e3e9e3cc3748717d39eade17cf71fc30ee6f";
+ };
+ }
+
+ {
+ name = "find-up-1.1.2.tgz";
+ path = fetchurl {
+ name = "find-up-1.1.2.tgz";
+ url = "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz";
+ sha1 = "6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f";
+ };
+ }
+
+ {
+ name = "find-up-2.1.0.tgz";
+ path = fetchurl {
+ name = "find-up-2.1.0.tgz";
+ url = "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz";
+ sha1 = "45d1b7e506c717ddd482775a2b77920a3c0c57a7";
+ };
+ }
+
+ {
+ name = "flat-cache-1.3.0.tgz";
+ path = fetchurl {
+ name = "flat-cache-1.3.0.tgz";
+ url = "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.0.tgz";
+ sha1 = "d3030b32b38154f4e3b7e9c709f490f7ef97c481";
+ };
+ }
+
+ {
+ name = "flush-write-stream-1.0.2.tgz";
+ path = fetchurl {
+ name = "flush-write-stream-1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.2.tgz";
+ sha1 = "c81b90d8746766f1a609a46809946c45dd8ae417";
+ };
+ }
+
+ {
+ name = "for-in-1.0.2.tgz";
+ path = fetchurl {
+ name = "for-in-1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz";
+ sha1 = "81068d295a8142ec0ac726c6e2200c30fb6d5e80";
+ };
+ }
+
+ {
+ name = "for-own-0.1.5.tgz";
+ path = fetchurl {
+ name = "for-own-0.1.5.tgz";
+ url = "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz";
+ sha1 = "5265c681a4f294dabbf17c9509b6763aa84510ce";
+ };
+ }
+
+ {
+ name = "foreach-2.0.5.tgz";
+ path = fetchurl {
+ name = "foreach-2.0.5.tgz";
+ url = "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz";
+ sha1 = "0bee005018aeb260d0a3af3ae658dd0136ec1b99";
+ };
+ }
+
+ {
+ name = "forever-agent-0.6.1.tgz";
+ path = fetchurl {
+ name = "forever-agent-0.6.1.tgz";
+ url = "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz";
+ sha1 = "fbc71f0c41adeb37f96c577ad1ed42d8fdacca91";
+ };
+ }
+
+ {
+ name = "form-data-2.1.4.tgz";
+ path = fetchurl {
+ name = "form-data-2.1.4.tgz";
+ url = "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz";
+ sha1 = "33c183acf193276ecaa98143a69e94bfee1750d1";
+ };
+ }
+
+ {
+ name = "forwarded-0.1.2.tgz";
+ path = fetchurl {
+ name = "forwarded-0.1.2.tgz";
+ url = "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz";
+ sha1 = "98c23dab1175657b8c0573e8ceccd91b0ff18c84";
+ };
+ }
+
+ {
+ name = "fragment-cache-0.2.1.tgz";
+ path = fetchurl {
+ name = "fragment-cache-0.2.1.tgz";
+ url = "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz";
+ sha1 = "4290fad27f13e89be7f33799c6bc5a0abfff0d19";
+ };
+ }
+
+ {
+ name = "fresh-0.5.2.tgz";
+ path = fetchurl {
+ name = "fresh-0.5.2.tgz";
+ url = "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz";
+ sha1 = "3d8cadd90d976569fa835ab1f8e4b23a105605a7";
+ };
+ }
+
+ {
+ name = "from2-2.3.0.tgz";
+ path = fetchurl {
+ name = "from2-2.3.0.tgz";
+ url = "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz";
+ sha1 = "8bfb5502bde4a4d36cfdeea007fcca21d7e382af";
+ };
+ }
+
+ {
+ name = "fs-write-stream-atomic-1.0.10.tgz";
+ path = fetchurl {
+ name = "fs-write-stream-atomic-1.0.10.tgz";
+ url = "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz";
+ sha1 = "b47df53493ef911df75731e70a9ded0189db40c9";
+ };
+ }
+
+ {
+ name = "fs.realpath-1.0.0.tgz";
+ path = fetchurl {
+ name = "fs.realpath-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz";
+ sha1 = "1504ad2523158caa40db4a2787cb01411994ea4f";
+ };
+ }
+
+ {
+ name = "fsevents-1.1.3.tgz";
+ path = fetchurl {
+ name = "fsevents-1.1.3.tgz";
+ url = "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.3.tgz";
+ sha1 = "11f82318f5fe7bb2cd22965a108e9306208216d8";
+ };
+ }
+
+ {
+ name = "fstream-ignore-1.0.5.tgz";
+ path = fetchurl {
+ name = "fstream-ignore-1.0.5.tgz";
+ url = "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz";
+ sha1 = "9c31dae34767018fe1d249b24dada67d092da105";
+ };
+ }
+
+ {
+ name = "fstream-1.0.11.tgz";
+ path = fetchurl {
+ name = "fstream-1.0.11.tgz";
+ url = "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz";
+ sha1 = "5c1fb1f117477114f0632a0eb4b71b3cb0fd3171";
+ };
+ }
+
+ {
+ name = "function-bind-1.1.1.tgz";
+ path = fetchurl {
+ name = "function-bind-1.1.1.tgz";
+ url = "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz";
+ sha1 = "a56899d3ea3c9bab874bb9773b7c5ede92f4895d";
+ };
+ }
+
+ {
+ name = "functional-red-black-tree-1.0.1.tgz";
+ path = fetchurl {
+ name = "functional-red-black-tree-1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz";
+ sha1 = "1b0ab3bd553b2a0d6399d29c0e3ea0b252078327";
+ };
+ }
+
+ {
+ name = "gauge-2.7.4.tgz";
+ path = fetchurl {
+ name = "gauge-2.7.4.tgz";
+ url = "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz";
+ sha1 = "2c03405c7538c39d7eb37b317022e325fb018bf7";
+ };
+ }
+
+ {
+ name = "get-caller-file-1.0.2.tgz";
+ path = fetchurl {
+ name = "get-caller-file-1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz";
+ sha1 = "f702e63127e7e231c160a80c1554acb70d5047e5";
+ };
+ }
+
+ {
+ name = "get-stdin-4.0.1.tgz";
+ path = fetchurl {
+ name = "get-stdin-4.0.1.tgz";
+ url = "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz";
+ sha1 = "b968c6b0a04384324902e8bf1a5df32579a450fe";
+ };
+ }
+
+ {
+ name = "get-stream-3.0.0.tgz";
+ path = fetchurl {
+ name = "get-stream-3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz";
+ sha1 = "8e943d1358dc37555054ecbe2edb05aa174ede14";
+ };
+ }
+
+ {
+ name = "get-value-2.0.6.tgz";
+ path = fetchurl {
+ name = "get-value-2.0.6.tgz";
+ url = "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz";
+ sha1 = "dc15ca1c672387ca76bd37ac0a395ba2042a2c28";
+ };
+ }
+
+ {
+ name = "getpass-0.1.7.tgz";
+ path = fetchurl {
+ name = "getpass-0.1.7.tgz";
+ url = "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz";
+ sha1 = "5eff8e3e684d569ae4cb2b1282604e8ba62149fa";
+ };
+ }
+
+ {
+ name = "glob-base-0.3.0.tgz";
+ path = fetchurl {
+ name = "glob-base-0.3.0.tgz";
+ url = "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz";
+ sha1 = "dbb164f6221b1c0b1ccf82aea328b497df0ea3c4";
+ };
+ }
+
+ {
+ name = "glob-parent-2.0.0.tgz";
+ path = fetchurl {
+ name = "glob-parent-2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz";
+ sha1 = "81383d72db054fcccf5336daa902f182f6edbb28";
+ };
+ }
+
+ {
+ name = "glob-parent-3.1.0.tgz";
+ path = fetchurl {
+ name = "glob-parent-3.1.0.tgz";
+ url = "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz";
+ sha1 = "9e6af6299d8d3bd2bd40430832bd113df906c5ae";
+ };
+ }
+
+ {
+ name = "glob-7.1.2.tgz";
+ path = fetchurl {
+ name = "glob-7.1.2.tgz";
+ url = "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz";
+ sha1 = "c19c9df9a028702d678612384a6552404c636d15";
+ };
+ }
+
+ {
+ name = "globals-11.1.0.tgz";
+ path = fetchurl {
+ name = "globals-11.1.0.tgz";
+ url = "https://registry.yarnpkg.com/globals/-/globals-11.1.0.tgz";
+ sha1 = "632644457f5f0e3ae711807183700ebf2e4633e4";
+ };
+ }
+
+ {
+ name = "globby-5.0.0.tgz";
+ path = fetchurl {
+ name = "globby-5.0.0.tgz";
+ url = "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz";
+ sha1 = "ebd84667ca0dbb330b99bcfc68eac2bc54370e0d";
+ };
+ }
+
+ {
+ name = "globby-6.1.0.tgz";
+ path = fetchurl {
+ name = "globby-6.1.0.tgz";
+ url = "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz";
+ sha1 = "f5a6d70e8395e21c858fb0489d64df02424d506c";
+ };
+ }
+
+ {
+ name = "graceful-fs-4.1.11.tgz";
+ path = fetchurl {
+ name = "graceful-fs-4.1.11.tgz";
+ url = "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz";
+ sha1 = "0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658";
+ };
+ }
+
+ {
+ name = "handle-thing-1.2.5.tgz";
+ path = fetchurl {
+ name = "handle-thing-1.2.5.tgz";
+ url = "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz";
+ sha1 = "fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4";
+ };
+ }
+
+ {
+ name = "har-schema-1.0.5.tgz";
+ path = fetchurl {
+ name = "har-schema-1.0.5.tgz";
+ url = "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz";
+ sha1 = "d263135f43307c02c602afc8fe95970c0151369e";
+ };
+ }
+
+ {
+ name = "har-validator-4.2.1.tgz";
+ path = fetchurl {
+ name = "har-validator-4.2.1.tgz";
+ url = "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz";
+ sha1 = "33481d0f1bbff600dd203d75812a6a5fba002e2a";
+ };
+ }
+
+ {
+ name = "has-ansi-2.0.0.tgz";
+ path = fetchurl {
+ name = "has-ansi-2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz";
+ sha1 = "34f5049ce1ecdf2b0649af3ef24e45ed35416d91";
+ };
+ }
+
+ {
+ name = "has-flag-2.0.0.tgz";
+ path = fetchurl {
+ name = "has-flag-2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz";
+ sha1 = "e8207af1cc7b30d446cc70b734b5e8be18f88d51";
+ };
+ }
+
+ {
+ name = "has-flag-3.0.0.tgz";
+ path = fetchurl {
+ name = "has-flag-3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz";
+ sha1 = "b5d454dc2199ae225699f3467e5a07f3b955bafd";
+ };
+ }
+
+ {
+ name = "has-unicode-2.0.1.tgz";
+ path = fetchurl {
+ name = "has-unicode-2.0.1.tgz";
+ url = "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz";
+ sha1 = "e0e6fe6a28cf51138855e086d1691e771de2a8b9";
+ };
+ }
+
+ {
+ name = "has-value-0.3.1.tgz";
+ path = fetchurl {
+ name = "has-value-0.3.1.tgz";
+ url = "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz";
+ sha1 = "7b1f58bada62ca827ec0a2078025654845995e1f";
+ };
+ }
+
+ {
+ name = "has-value-1.0.0.tgz";
+ path = fetchurl {
+ name = "has-value-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz";
+ sha1 = "18b281da585b1c5c51def24c930ed29a0be6b177";
+ };
+ }
+
+ {
+ name = "has-values-0.1.4.tgz";
+ path = fetchurl {
+ name = "has-values-0.1.4.tgz";
+ url = "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz";
+ sha1 = "6d61de95d91dfca9b9a02089ad384bff8f62b771";
+ };
+ }
+
+ {
+ name = "has-values-1.0.0.tgz";
+ path = fetchurl {
+ name = "has-values-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz";
+ sha1 = "95b0b63fec2146619a6fe57fe75628d5a39efe4f";
+ };
+ }
+
+ {
+ name = "has-1.0.1.tgz";
+ path = fetchurl {
+ name = "has-1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz";
+ sha1 = "8461733f538b0837c9361e39a9ab9e9704dc2f28";
+ };
+ }
+
+ {
+ name = "hash-base-2.0.2.tgz";
+ path = fetchurl {
+ name = "hash-base-2.0.2.tgz";
+ url = "https://registry.yarnpkg.com/hash-base/-/hash-base-2.0.2.tgz";
+ sha1 = "66ea1d856db4e8a5470cadf6fce23ae5244ef2e1";
+ };
+ }
+
+ {
+ name = "hash-base-3.0.4.tgz";
+ path = fetchurl {
+ name = "hash-base-3.0.4.tgz";
+ url = "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz";
+ sha1 = "5fc8686847ecd73499403319a6b0a3f3f6ae4918";
+ };
+ }
+
+ {
+ name = "hash.js-1.1.3.tgz";
+ path = fetchurl {
+ name = "hash.js-1.1.3.tgz";
+ url = "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz";
+ sha1 = "340dedbe6290187151c1ea1d777a3448935df846";
+ };
+ }
+
+ {
+ name = "hawk-3.1.3.tgz";
+ path = fetchurl {
+ name = "hawk-3.1.3.tgz";
+ url = "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz";
+ sha1 = "078444bd7c1640b0fe540d2c9b73d59678e8e1c4";
+ };
+ }
+
+ {
+ name = "he-1.1.1.tgz";
+ path = fetchurl {
+ name = "he-1.1.1.tgz";
+ url = "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz";
+ sha1 = "93410fd21b009735151f8868c2f271f3427e23fd";
+ };
+ }
+
+ {
+ name = "hmac-drbg-1.0.1.tgz";
+ path = fetchurl {
+ name = "hmac-drbg-1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz";
+ sha1 = "d2745701025a6c775a6c545793ed502fc0c649a1";
+ };
+ }
+
+ {
+ name = "hoek-2.16.3.tgz";
+ path = fetchurl {
+ name = "hoek-2.16.3.tgz";
+ url = "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz";
+ sha1 = "20bb7403d3cea398e91dc4710a8ff1b8274a25ed";
+ };
+ }
+
+ {
+ name = "hosted-git-info-2.5.0.tgz";
+ path = fetchurl {
+ name = "hosted-git-info-2.5.0.tgz";
+ url = "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz";
+ sha1 = "6d60e34b3abbc8313062c3b798ef8d901a07af3c";
+ };
+ }
+
+ {
+ name = "hpack.js-2.1.6.tgz";
+ path = fetchurl {
+ name = "hpack.js-2.1.6.tgz";
+ url = "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz";
+ sha1 = "87774c0949e513f42e84575b3c45681fade2a0b2";
+ };
+ }
+
+ {
+ name = "html-entities-1.2.1.tgz";
+ path = fetchurl {
+ name = "html-entities-1.2.1.tgz";
+ url = "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz";
+ sha1 = "0df29351f0721163515dfb9e5543e5f6eed5162f";
+ };
+ }
+
+ {
+ name = "html-minifier-3.5.8.tgz";
+ path = fetchurl {
+ name = "html-minifier-3.5.8.tgz";
+ url = "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.8.tgz";
+ sha1 = "5ccdb1f73a0d654e6090147511f6e6b2ee312700";
+ };
+ }
+
+ {
+ name = "html-webpack-plugin-2.30.1.tgz";
+ path = fetchurl {
+ name = "html-webpack-plugin-2.30.1.tgz";
+ url = "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-2.30.1.tgz";
+ sha1 = "7f9c421b7ea91ec460f56527d78df484ee7537d5";
+ };
+ }
+
+ {
+ name = "htmlparser2-3.3.0.tgz";
+ path = fetchurl {
+ name = "htmlparser2-3.3.0.tgz";
+ url = "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.3.0.tgz";
+ sha1 = "cc70d05a59f6542e43f0e685c982e14c924a9efe";
+ };
+ }
+
+ {
+ name = "http-deceiver-1.2.7.tgz";
+ path = fetchurl {
+ name = "http-deceiver-1.2.7.tgz";
+ url = "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz";
+ sha1 = "fa7168944ab9a519d337cb0bec7284dc3e723d87";
+ };
+ }
+
+ {
+ name = "http-errors-1.6.2.tgz";
+ path = fetchurl {
+ name = "http-errors-1.6.2.tgz";
+ url = "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz";
+ sha1 = "0a002cc85707192a7e7946ceedc11155f60ec736";
+ };
+ }
+
+ {
+ name = "http-parser-js-0.4.10.tgz";
+ path = fetchurl {
+ name = "http-parser-js-0.4.10.tgz";
+ url = "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.10.tgz";
+ sha1 = "92c9c1374c35085f75db359ec56cc257cbb93fa4";
+ };
+ }
+
+ {
+ name = "http-proxy-middleware-0.17.4.tgz";
+ path = fetchurl {
+ name = "http-proxy-middleware-0.17.4.tgz";
+ url = "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz";
+ sha1 = "642e8848851d66f09d4f124912846dbaeb41b833";
+ };
+ }
+
+ {
+ name = "http-proxy-1.16.2.tgz";
+ path = fetchurl {
+ name = "http-proxy-1.16.2.tgz";
+ url = "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.16.2.tgz";
+ sha1 = "06dff292952bf64dbe8471fa9df73066d4f37742";
+ };
+ }
+
+ {
+ name = "http-signature-1.1.1.tgz";
+ path = fetchurl {
+ name = "http-signature-1.1.1.tgz";
+ url = "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz";
+ sha1 = "df72e267066cd0ac67fb76adf8e134a8fbcf91bf";
+ };
+ }
+
+ {
+ name = "https-browserify-1.0.0.tgz";
+ path = fetchurl {
+ name = "https-browserify-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz";
+ sha1 = "ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73";
+ };
+ }
+
+ {
+ name = "iconv-lite-0.4.19.tgz";
+ path = fetchurl {
+ name = "iconv-lite-0.4.19.tgz";
+ url = "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz";
+ sha1 = "f7468f60135f5e5dad3399c0a81be9a1603a082b";
+ };
+ }
+
+ {
+ name = "ieee754-1.1.8.tgz";
+ path = fetchurl {
+ name = "ieee754-1.1.8.tgz";
+ url = "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz";
+ sha1 = "be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4";
+ };
+ }
+
+ {
+ name = "iferr-0.1.5.tgz";
+ path = fetchurl {
+ name = "iferr-0.1.5.tgz";
+ url = "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz";
+ sha1 = "c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501";
+ };
+ }
+
+ {
+ name = "ignore-3.3.7.tgz";
+ path = fetchurl {
+ name = "ignore-3.3.7.tgz";
+ url = "https://registry.yarnpkg.com/ignore/-/ignore-3.3.7.tgz";
+ sha1 = "612289bfb3c220e186a58118618d5be8c1bab021";
+ };
+ }
+
+ {
+ name = "image-size-0.5.5.tgz";
+ path = fetchurl {
+ name = "image-size-0.5.5.tgz";
+ url = "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz";
+ sha1 = "09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c";
+ };
+ }
+
+ {
+ name = "import-local-1.0.0.tgz";
+ path = fetchurl {
+ name = "import-local-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/import-local/-/import-local-1.0.0.tgz";
+ sha1 = "5e4ffdc03f4fe6c009c6729beb29631c2f8227bc";
+ };
+ }
+
+ {
+ name = "imurmurhash-0.1.4.tgz";
+ path = fetchurl {
+ name = "imurmurhash-0.1.4.tgz";
+ url = "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz";
+ sha1 = "9218b9b2b928a238b13dc4fb6b6d576f231453ea";
+ };
+ }
+
+ {
+ name = "indent-string-2.1.0.tgz";
+ path = fetchurl {
+ name = "indent-string-2.1.0.tgz";
+ url = "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz";
+ sha1 = "8e2d48348742121b4a8218b7a137e9a52049dc80";
+ };
+ }
+
+ {
+ name = "indexof-0.0.1.tgz";
+ path = fetchurl {
+ name = "indexof-0.0.1.tgz";
+ url = "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz";
+ sha1 = "82dc336d232b9062179d05ab3293a66059fd435d";
+ };
+ }
+
+ {
+ name = "inflight-1.0.6.tgz";
+ path = fetchurl {
+ name = "inflight-1.0.6.tgz";
+ url = "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz";
+ sha1 = "49bd6331d7d02d0c09bc910a1075ba8165b56df9";
+ };
+ }
+
+ {
+ name = "inherits-2.0.3.tgz";
+ path = fetchurl {
+ name = "inherits-2.0.3.tgz";
+ url = "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz";
+ sha1 = "633c2c83e3da42a502f52466022480f4208261de";
+ };
+ }
+
+ {
+ name = "inherits-2.0.1.tgz";
+ path = fetchurl {
+ name = "inherits-2.0.1.tgz";
+ url = "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz";
+ sha1 = "b17d08d326b4423e568eff719f91b0b1cbdf69f1";
+ };
+ }
+
+ {
+ name = "ini-1.3.5.tgz";
+ path = fetchurl {
+ name = "ini-1.3.5.tgz";
+ url = "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz";
+ sha1 = "eee25f56db1c9ec6085e0c22778083f596abf927";
+ };
+ }
+
+ {
+ name = "inquirer-3.3.0.tgz";
+ path = fetchurl {
+ name = "inquirer-3.3.0.tgz";
+ url = "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz";
+ sha1 = "9dd2f2ad765dcab1ff0443b491442a20ba227dc9";
+ };
+ }
+
+ {
+ name = "internal-ip-1.2.0.tgz";
+ path = fetchurl {
+ name = "internal-ip-1.2.0.tgz";
+ url = "https://registry.yarnpkg.com/internal-ip/-/internal-ip-1.2.0.tgz";
+ sha1 = "ae9fbf93b984878785d50a8de1b356956058cf5c";
+ };
+ }
+
+ {
+ name = "interpret-1.1.0.tgz";
+ path = fetchurl {
+ name = "interpret-1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz";
+ sha1 = "7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614";
+ };
+ }
+
+ {
+ name = "invert-kv-1.0.0.tgz";
+ path = fetchurl {
+ name = "invert-kv-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz";
+ sha1 = "104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6";
+ };
+ }
+
+ {
+ name = "ip-1.1.5.tgz";
+ path = fetchurl {
+ name = "ip-1.1.5.tgz";
+ url = "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz";
+ sha1 = "bdded70114290828c0a039e72ef25f5aaec4354a";
+ };
+ }
+
+ {
+ name = "ipaddr.js-1.6.0.tgz";
+ path = fetchurl {
+ name = "ipaddr.js-1.6.0.tgz";
+ url = "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.6.0.tgz";
+ sha1 = "e3fa357b773da619f26e95f049d055c72796f86b";
+ };
+ }
+
+ {
+ name = "is-accessor-descriptor-0.1.6.tgz";
+ path = fetchurl {
+ name = "is-accessor-descriptor-0.1.6.tgz";
+ url = "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz";
+ sha1 = "a9e12cb3ae8d876727eeef3843f8a0897b5c98d6";
+ };
+ }
+
+ {
+ name = "is-accessor-descriptor-1.0.0.tgz";
+ path = fetchurl {
+ name = "is-accessor-descriptor-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz";
+ sha1 = "169c2f6d3df1f992618072365c9b0ea1f6878656";
+ };
+ }
+
+ {
+ name = "is-arrayish-0.2.1.tgz";
+ path = fetchurl {
+ name = "is-arrayish-0.2.1.tgz";
+ url = "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz";
+ sha1 = "77c99840527aa8ecb1a8ba697b80645a7a926a9d";
+ };
+ }
+
+ {
+ name = "is-binary-path-1.0.1.tgz";
+ path = fetchurl {
+ name = "is-binary-path-1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz";
+ sha1 = "75f16642b480f187a711c814161fd3a4a7655898";
+ };
+ }
+
+ {
+ name = "is-buffer-1.1.6.tgz";
+ path = fetchurl {
+ name = "is-buffer-1.1.6.tgz";
+ url = "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz";
+ sha1 = "efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be";
+ };
+ }
+
+ {
+ name = "is-builtin-module-1.0.0.tgz";
+ path = fetchurl {
+ name = "is-builtin-module-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz";
+ sha1 = "540572d34f7ac3119f8f76c30cbc1b1e037affbe";
+ };
+ }
+
+ {
+ name = "is-callable-1.1.3.tgz";
+ path = fetchurl {
+ name = "is-callable-1.1.3.tgz";
+ url = "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz";
+ sha1 = "86eb75392805ddc33af71c92a0eedf74ee7604b2";
+ };
+ }
+
+ {
+ name = "is-data-descriptor-0.1.4.tgz";
+ path = fetchurl {
+ name = "is-data-descriptor-0.1.4.tgz";
+ url = "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz";
+ sha1 = "0b5ee648388e2c860282e793f1856fec3f301b56";
+ };
+ }
+
+ {
+ name = "is-data-descriptor-1.0.0.tgz";
+ path = fetchurl {
+ name = "is-data-descriptor-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz";
+ sha1 = "d84876321d0e7add03990406abbbbd36ba9268c7";
+ };
+ }
+
+ {
+ name = "is-date-object-1.0.1.tgz";
+ path = fetchurl {
+ name = "is-date-object-1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz";
+ sha1 = "9aa20eb6aeebbff77fbd33e74ca01b33581d3a16";
+ };
+ }
+
+ {
+ name = "is-descriptor-0.1.6.tgz";
+ path = fetchurl {
+ name = "is-descriptor-0.1.6.tgz";
+ url = "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz";
+ sha1 = "366d8240dde487ca51823b1ab9f07a10a78251ca";
+ };
+ }
+
+ {
+ name = "is-descriptor-1.0.2.tgz";
+ path = fetchurl {
+ name = "is-descriptor-1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz";
+ sha1 = "3b159746a66604b04f8c81524ba365c5f14d86ec";
+ };
+ }
+
+ {
+ name = "is-dotfile-1.0.3.tgz";
+ path = fetchurl {
+ name = "is-dotfile-1.0.3.tgz";
+ url = "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz";
+ sha1 = "a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1";
+ };
+ }
+
+ {
+ name = "is-equal-shallow-0.1.3.tgz";
+ path = fetchurl {
+ name = "is-equal-shallow-0.1.3.tgz";
+ url = "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz";
+ sha1 = "2238098fc221de0bcfa5d9eac4c45d638aa1c534";
+ };
+ }
+
+ {
+ name = "is-extendable-0.1.1.tgz";
+ path = fetchurl {
+ name = "is-extendable-0.1.1.tgz";
+ url = "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz";
+ sha1 = "62b110e289a471418e3ec36a617d472e301dfc89";
+ };
+ }
+
+ {
+ name = "is-extendable-1.0.1.tgz";
+ path = fetchurl {
+ name = "is-extendable-1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz";
+ sha1 = "a7470f9e426733d81bd81e1155264e3a3507cab4";
+ };
+ }
+
+ {
+ name = "is-extglob-1.0.0.tgz";
+ path = fetchurl {
+ name = "is-extglob-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz";
+ sha1 = "ac468177c4943405a092fc8f29760c6ffc6206c0";
+ };
+ }
+
+ {
+ name = "is-extglob-2.1.1.tgz";
+ path = fetchurl {
+ name = "is-extglob-2.1.1.tgz";
+ url = "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz";
+ sha1 = "a88c02535791f02ed37c76a1b9ea9773c833f8c2";
+ };
+ }
+
+ {
+ name = "is-finite-1.0.2.tgz";
+ path = fetchurl {
+ name = "is-finite-1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz";
+ sha1 = "cc6677695602be550ef11e8b4aa6305342b6d0aa";
+ };
+ }
+
+ {
+ name = "is-fullwidth-code-point-1.0.0.tgz";
+ path = fetchurl {
+ name = "is-fullwidth-code-point-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz";
+ sha1 = "ef9e31386f031a7f0d643af82fde50c457ef00cb";
+ };
+ }
+
+ {
+ name = "is-fullwidth-code-point-2.0.0.tgz";
+ path = fetchurl {
+ name = "is-fullwidth-code-point-2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz";
+ sha1 = "a3b30a5c4f199183167aaab93beefae3ddfb654f";
+ };
+ }
+
+ {
+ name = "is-glob-2.0.1.tgz";
+ path = fetchurl {
+ name = "is-glob-2.0.1.tgz";
+ url = "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz";
+ sha1 = "d096f926a3ded5600f3fdfd91198cb0888c2d863";
+ };
+ }
+
+ {
+ name = "is-glob-3.1.0.tgz";
+ path = fetchurl {
+ name = "is-glob-3.1.0.tgz";
+ url = "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz";
+ sha1 = "7ba5ae24217804ac70707b96922567486cc3e84a";
+ };
+ }
+
+ {
+ name = "is-glob-4.0.0.tgz";
+ path = fetchurl {
+ name = "is-glob-4.0.0.tgz";
+ url = "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz";
+ sha1 = "9521c76845cc2610a85203ddf080a958c2ffabc0";
+ };
+ }
+
+ {
+ name = "is-number-2.1.0.tgz";
+ path = fetchurl {
+ name = "is-number-2.1.0.tgz";
+ url = "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz";
+ sha1 = "01fcbbb393463a548f2f466cce16dece49db908f";
+ };
+ }
+
+ {
+ name = "is-number-3.0.0.tgz";
+ path = fetchurl {
+ name = "is-number-3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz";
+ sha1 = "24fd6201a4782cf50561c810276afc7d12d71195";
+ };
+ }
+
+ {
+ name = "is-number-4.0.0.tgz";
+ path = fetchurl {
+ name = "is-number-4.0.0.tgz";
+ url = "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz";
+ sha1 = "0026e37f5454d73e356dfe6564699867c6a7f0ff";
+ };
+ }
+
+ {
+ name = "is-odd-2.0.0.tgz";
+ path = fetchurl {
+ name = "is-odd-2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/is-odd/-/is-odd-2.0.0.tgz";
+ sha1 = "7646624671fd7ea558ccd9a2795182f2958f1b24";
+ };
+ }
+
+ {
+ name = "is-path-cwd-1.0.0.tgz";
+ path = fetchurl {
+ name = "is-path-cwd-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz";
+ sha1 = "d225ec23132e89edd38fda767472e62e65f1106d";
+ };
+ }
+
+ {
+ name = "is-path-in-cwd-1.0.0.tgz";
+ path = fetchurl {
+ name = "is-path-in-cwd-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz";
+ sha1 = "6477582b8214d602346094567003be8a9eac04dc";
+ };
+ }
+
+ {
+ name = "is-path-inside-1.0.1.tgz";
+ path = fetchurl {
+ name = "is-path-inside-1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz";
+ sha1 = "8ef5b7de50437a3fdca6b4e865ef7aa55cb48036";
+ };
+ }
+
+ {
+ name = "is-plain-object-2.0.4.tgz";
+ path = fetchurl {
+ name = "is-plain-object-2.0.4.tgz";
+ url = "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz";
+ sha1 = "2c163b3fafb1b606d9d17928f05c2a1c38e07677";
+ };
+ }
+
+ {
+ name = "is-posix-bracket-0.1.1.tgz";
+ path = fetchurl {
+ name = "is-posix-bracket-0.1.1.tgz";
+ url = "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz";
+ sha1 = "3334dc79774368e92f016e6fbc0a88f5cd6e6bc4";
+ };
+ }
+
+ {
+ name = "is-primitive-2.0.0.tgz";
+ path = fetchurl {
+ name = "is-primitive-2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz";
+ sha1 = "207bab91638499c07b2adf240a41a87210034575";
+ };
+ }
+
+ {
+ name = "is-promise-2.1.0.tgz";
+ path = fetchurl {
+ name = "is-promise-2.1.0.tgz";
+ url = "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz";
+ sha1 = "79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa";
+ };
+ }
+
+ {
+ name = "is-regex-1.0.4.tgz";
+ path = fetchurl {
+ name = "is-regex-1.0.4.tgz";
+ url = "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz";
+ sha1 = "5517489b547091b0930e095654ced25ee97e9491";
+ };
+ }
+
+ {
+ name = "is-resolvable-1.0.1.tgz";
+ path = fetchurl {
+ name = "is-resolvable-1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.1.tgz";
+ sha1 = "acca1cd36dbe44b974b924321555a70ba03b1cf4";
+ };
+ }
+
+ {
+ name = "is-stream-1.1.0.tgz";
+ path = fetchurl {
+ name = "is-stream-1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz";
+ sha1 = "12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44";
+ };
+ }
+
+ {
+ name = "is-symbol-1.0.1.tgz";
+ path = fetchurl {
+ name = "is-symbol-1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz";
+ sha1 = "3cc59f00025194b6ab2e38dbae6689256b660572";
+ };
+ }
+
+ {
+ name = "is-typedarray-1.0.0.tgz";
+ path = fetchurl {
+ name = "is-typedarray-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz";
+ sha1 = "e479c80858df0c1b11ddda6940f96011fcda4a9a";
+ };
+ }
+
+ {
+ name = "is-utf8-0.2.1.tgz";
+ path = fetchurl {
+ name = "is-utf8-0.2.1.tgz";
+ url = "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz";
+ sha1 = "4b0da1442104d1b336340e80797e865cf39f7d72";
+ };
+ }
+
+ {
+ name = "is-windows-1.0.2.tgz";
+ path = fetchurl {
+ name = "is-windows-1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz";
+ sha1 = "d1850eb9791ecd18e6182ce12a30f396634bb19d";
+ };
+ }
+
+ {
+ name = "is-wsl-1.1.0.tgz";
+ path = fetchurl {
+ name = "is-wsl-1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz";
+ sha1 = "1f16e4aa22b04d1336b66188a66af3c600c3a66d";
+ };
+ }
+
+ {
+ name = "isarray-0.0.1.tgz";
+ path = fetchurl {
+ name = "isarray-0.0.1.tgz";
+ url = "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz";
+ sha1 = "8a18acfca9a8f4177e09abfc6038939b05d1eedf";
+ };
+ }
+
+ {
+ name = "isarray-1.0.0.tgz";
+ path = fetchurl {
+ name = "isarray-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz";
+ sha1 = "bb935d48582cba168c06834957a54a3e07124f11";
+ };
+ }
+
+ {
+ name = "isexe-2.0.0.tgz";
+ path = fetchurl {
+ name = "isexe-2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz";
+ sha1 = "e8fbf374dc556ff8947a10dcb0572d633f2cfa10";
+ };
+ }
+
+ {
+ name = "isobject-2.1.0.tgz";
+ path = fetchurl {
+ name = "isobject-2.1.0.tgz";
+ url = "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz";
+ sha1 = "f065561096a3f1da2ef46272f815c840d87e0c89";
+ };
+ }
+
+ {
+ name = "isobject-3.0.1.tgz";
+ path = fetchurl {
+ name = "isobject-3.0.1.tgz";
+ url = "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz";
+ sha1 = "4e431e92b11a9731636aa1f9c8d1ccbcfdab78df";
+ };
+ }
+
+ {
+ name = "isstream-0.1.2.tgz";
+ path = fetchurl {
+ name = "isstream-0.1.2.tgz";
+ url = "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz";
+ sha1 = "47e63f7af55afa6f92e1500e690eb8b8529c099a";
+ };
+ }
+
+ {
+ name = "js-tokens-3.0.2.tgz";
+ path = fetchurl {
+ name = "js-tokens-3.0.2.tgz";
+ url = "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz";
+ sha1 = "9866df395102130e38f7f996bceb65443209c25b";
+ };
+ }
+
+ {
+ name = "js-yaml-3.10.0.tgz";
+ path = fetchurl {
+ name = "js-yaml-3.10.0.tgz";
+ url = "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz";
+ sha1 = "2e78441646bd4682e963f22b6e92823c309c62dc";
+ };
+ }
+
+ {
+ name = "jsbn-0.1.1.tgz";
+ path = fetchurl {
+ name = "jsbn-0.1.1.tgz";
+ url = "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz";
+ sha1 = "a5e654c2e5a2deb5f201d96cefbca80c0ef2f513";
+ };
+ }
+
+ {
+ name = "json-loader-0.5.7.tgz";
+ path = fetchurl {
+ name = "json-loader-0.5.7.tgz";
+ url = "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz";
+ sha1 = "dca14a70235ff82f0ac9a3abeb60d337a365185d";
+ };
+ }
+
+ {
+ name = "json-schema-traverse-0.3.1.tgz";
+ path = fetchurl {
+ name = "json-schema-traverse-0.3.1.tgz";
+ url = "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz";
+ sha1 = "349a6d44c53a51de89b40805c5d5e59b417d3340";
+ };
+ }
+
+ {
+ name = "json-schema-0.2.3.tgz";
+ path = fetchurl {
+ name = "json-schema-0.2.3.tgz";
+ url = "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz";
+ sha1 = "b480c892e59a2f05954ce727bd3f2a4e882f9e13";
+ };
+ }
+
+ {
+ name = "json-stable-stringify-without-jsonify-1.0.1.tgz";
+ path = fetchurl {
+ name = "json-stable-stringify-without-jsonify-1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz";
+ sha1 = "9db7b59496ad3f3cfef30a75142d2d930ad72651";
+ };
+ }
+
+ {
+ name = "json-stable-stringify-1.0.1.tgz";
+ path = fetchurl {
+ name = "json-stable-stringify-1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz";
+ sha1 = "9a759d39c5f2ff503fd5300646ed445f88c4f9af";
+ };
+ }
+
+ {
+ name = "json-stringify-safe-5.0.1.tgz";
+ path = fetchurl {
+ name = "json-stringify-safe-5.0.1.tgz";
+ url = "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz";
+ sha1 = "1296a2d58fd45f19a0f6ce01d65701e2c735b6eb";
+ };
+ }
+
+ {
+ name = "json3-3.3.2.tgz";
+ path = fetchurl {
+ name = "json3-3.3.2.tgz";
+ url = "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz";
+ sha1 = "3c0434743df93e2f5c42aee7b19bcb483575f4e1";
+ };
+ }
+
+ {
+ name = "json5-0.5.1.tgz";
+ path = fetchurl {
+ name = "json5-0.5.1.tgz";
+ url = "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz";
+ sha1 = "1eade7acc012034ad84e2396767ead9fa5495821";
+ };
+ }
+
+ {
+ name = "jsonify-0.0.0.tgz";
+ path = fetchurl {
+ name = "jsonify-0.0.0.tgz";
+ url = "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz";
+ sha1 = "2c74b6ee41d93ca51b7b5aaee8f503631d252a73";
+ };
+ }
+
+ {
+ name = "jsprim-1.4.1.tgz";
+ path = fetchurl {
+ name = "jsprim-1.4.1.tgz";
+ url = "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz";
+ sha1 = "313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2";
+ };
+ }
+
+ {
+ name = "killable-1.0.0.tgz";
+ path = fetchurl {
+ name = "killable-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/killable/-/killable-1.0.0.tgz";
+ sha1 = "da8b84bd47de5395878f95d64d02f2449fe05e6b";
+ };
+ }
+
+ {
+ name = "kind-of-3.2.2.tgz";
+ path = fetchurl {
+ name = "kind-of-3.2.2.tgz";
+ url = "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz";
+ sha1 = "31ea21a734bab9bbb0f32466d893aea51e4a3c64";
+ };
+ }
+
+ {
+ name = "kind-of-4.0.0.tgz";
+ path = fetchurl {
+ name = "kind-of-4.0.0.tgz";
+ url = "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz";
+ sha1 = "20813df3d712928b207378691a45066fae72dd57";
+ };
+ }
+
+ {
+ name = "kind-of-5.1.0.tgz";
+ path = fetchurl {
+ name = "kind-of-5.1.0.tgz";
+ url = "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz";
+ sha1 = "729c91e2d857b7a419a1f9aa65685c4c33f5845d";
+ };
+ }
+
+ {
+ name = "kind-of-6.0.2.tgz";
+ path = fetchurl {
+ name = "kind-of-6.0.2.tgz";
+ url = "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz";
+ sha1 = "01146b36a6218e64e58f3a8d66de5d7fc6f6d051";
+ };
+ }
+
+ {
+ name = "lazy-cache-1.0.4.tgz";
+ path = fetchurl {
+ name = "lazy-cache-1.0.4.tgz";
+ url = "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz";
+ sha1 = "a1d78fc3a50474cb80845d3b3b6e1da49a446e8e";
+ };
+ }
+
+ {
+ name = "lazy-cache-2.0.2.tgz";
+ path = fetchurl {
+ name = "lazy-cache-2.0.2.tgz";
+ url = "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-2.0.2.tgz";
+ sha1 = "b9190a4f913354694840859f8a8f7084d8822264";
+ };
+ }
+
+ {
+ name = "lcid-1.0.0.tgz";
+ path = fetchurl {
+ name = "lcid-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz";
+ sha1 = "308accafa0bc483a3867b4b6f2b9506251d1b835";
+ };
+ }
+
+ {
+ name = "less-loader-4.0.5.tgz";
+ path = fetchurl {
+ name = "less-loader-4.0.5.tgz";
+ url = "https://registry.yarnpkg.com/less-loader/-/less-loader-4.0.5.tgz";
+ sha1 = "ae155a7406cac6acd293d785587fcff0f478c4dd";
+ };
+ }
+
+ {
+ name = "less-3.0.1.tgz";
+ path = fetchurl {
+ name = "less-3.0.1.tgz";
+ url = "https://registry.yarnpkg.com/less/-/less-3.0.1.tgz";
+ sha1 = "ba2fea24a5632ccb8c84230d6043c0bf91855e37";
+ };
+ }
+
+ {
+ name = "levn-0.3.0.tgz";
+ path = fetchurl {
+ name = "levn-0.3.0.tgz";
+ url = "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz";
+ sha1 = "3b09924edf9f083c0490fdd4c0bc4421e04764ee";
+ };
+ }
+
+ {
+ name = "load-json-file-1.1.0.tgz";
+ path = fetchurl {
+ name = "load-json-file-1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz";
+ sha1 = "956905708d58b4bab4c2261b04f59f31c99374c0";
+ };
+ }
+
+ {
+ name = "load-json-file-2.0.0.tgz";
+ path = fetchurl {
+ name = "load-json-file-2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz";
+ sha1 = "7947e42149af80d696cbf797bcaabcfe1fe29ca8";
+ };
+ }
+
+ {
+ name = "loader-runner-2.3.0.tgz";
+ path = fetchurl {
+ name = "loader-runner-2.3.0.tgz";
+ url = "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz";
+ sha1 = "f482aea82d543e07921700d5a46ef26fdac6b8a2";
+ };
+ }
+
+ {
+ name = "loader-utils-0.2.17.tgz";
+ path = fetchurl {
+ name = "loader-utils-0.2.17.tgz";
+ url = "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz";
+ sha1 = "f86e6374d43205a6e6c60e9196f17c0299bfb348";
+ };
+ }
+
+ {
+ name = "loader-utils-1.1.0.tgz";
+ path = fetchurl {
+ name = "loader-utils-1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz";
+ sha1 = "c98aef488bcceda2ffb5e2de646d6a754429f5cd";
+ };
+ }
+
+ {
+ name = "locate-path-2.0.0.tgz";
+ path = fetchurl {
+ name = "locate-path-2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz";
+ sha1 = "2b568b265eec944c6d9c0de9c3dbbbca0354cd8e";
+ };
+ }
+
+ {
+ name = "lodash.endswith-4.2.1.tgz";
+ path = fetchurl {
+ name = "lodash.endswith-4.2.1.tgz";
+ url = "https://registry.yarnpkg.com/lodash.endswith/-/lodash.endswith-4.2.1.tgz";
+ sha1 = "fed59ac1738ed3e236edd7064ec456448b37bc09";
+ };
+ }
+
+ {
+ name = "lodash.isfunction-3.0.9.tgz";
+ path = fetchurl {
+ name = "lodash.isfunction-3.0.9.tgz";
+ url = "https://registry.yarnpkg.com/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz";
+ sha1 = "06de25df4db327ac931981d1bdb067e5af68d051";
+ };
+ }
+
+ {
+ name = "lodash.isstring-4.0.1.tgz";
+ path = fetchurl {
+ name = "lodash.isstring-4.0.1.tgz";
+ url = "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz";
+ sha1 = "d527dfb5456eca7cc9bb95d5daeaf88ba54a5451";
+ };
+ }
+
+ {
+ name = "lodash.startswith-4.2.1.tgz";
+ path = fetchurl {
+ name = "lodash.startswith-4.2.1.tgz";
+ url = "https://registry.yarnpkg.com/lodash.startswith/-/lodash.startswith-4.2.1.tgz";
+ sha1 = "c598c4adce188a27e53145731cdc6c0e7177600c";
+ };
+ }
+
+ {
+ name = "lodash-4.17.4.tgz";
+ path = fetchurl {
+ name = "lodash-4.17.4.tgz";
+ url = "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz";
+ sha1 = "78203a4d1c328ae1d86dca6460e369b57f4055ae";
+ };
+ }
+
+ {
+ name = "lodash-4.17.5.tgz";
+ path = fetchurl {
+ name = "lodash-4.17.5.tgz";
+ url = "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz";
+ sha1 = "99a92d65c0272debe8c96b6057bc8fbfa3bed511";
+ };
+ }
+
+ {
+ name = "loglevel-1.6.1.tgz";
+ path = fetchurl {
+ name = "loglevel-1.6.1.tgz";
+ url = "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz";
+ sha1 = "e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa";
+ };
+ }
+
+ {
+ name = "longest-1.0.1.tgz";
+ path = fetchurl {
+ name = "longest-1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz";
+ sha1 = "30a0b2da38f73770e8294a0d22e6625ed77d0097";
+ };
+ }
+
+ {
+ name = "loud-rejection-1.6.0.tgz";
+ path = fetchurl {
+ name = "loud-rejection-1.6.0.tgz";
+ url = "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz";
+ sha1 = "5b46f80147edee578870f086d04821cf998e551f";
+ };
+ }
+
+ {
+ name = "lower-case-1.1.4.tgz";
+ path = fetchurl {
+ name = "lower-case-1.1.4.tgz";
+ url = "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz";
+ sha1 = "9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac";
+ };
+ }
+
+ {
+ name = "lru-cache-4.1.1.tgz";
+ path = fetchurl {
+ name = "lru-cache-4.1.1.tgz";
+ url = "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz";
+ sha1 = "622e32e82488b49279114a4f9ecf45e7cd6bba55";
+ };
+ }
+
+ {
+ name = "magic-string-0.14.0.tgz";
+ path = fetchurl {
+ name = "magic-string-0.14.0.tgz";
+ url = "https://registry.yarnpkg.com/magic-string/-/magic-string-0.14.0.tgz";
+ sha1 = "57224aef1701caeed273b17a39a956e72b172462";
+ };
+ }
+
+ {
+ name = "magic-string-0.22.4.tgz";
+ path = fetchurl {
+ name = "magic-string-0.22.4.tgz";
+ url = "https://registry.yarnpkg.com/magic-string/-/magic-string-0.22.4.tgz";
+ sha1 = "31039b4e40366395618c1d6cf8193c53917475ff";
+ };
+ }
+
+ {
+ name = "make-dir-1.1.0.tgz";
+ path = fetchurl {
+ name = "make-dir-1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/make-dir/-/make-dir-1.1.0.tgz";
+ sha1 = "19b4369fe48c116f53c2af95ad102c0e39e85d51";
+ };
+ }
+
+ {
+ name = "map-cache-0.2.2.tgz";
+ path = fetchurl {
+ name = "map-cache-0.2.2.tgz";
+ url = "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz";
+ sha1 = "c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf";
+ };
+ }
+
+ {
+ name = "map-obj-1.0.1.tgz";
+ path = fetchurl {
+ name = "map-obj-1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz";
+ sha1 = "d933ceb9205d82bdcf4886f6742bdc2b4dea146d";
+ };
+ }
+
+ {
+ name = "map-visit-1.0.0.tgz";
+ path = fetchurl {
+ name = "map-visit-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz";
+ sha1 = "ecdca8f13144e660f1b5bd41f12f3479d98dfb8f";
+ };
+ }
+
+ {
+ name = "md5.js-1.3.4.tgz";
+ path = fetchurl {
+ name = "md5.js-1.3.4.tgz";
+ url = "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.4.tgz";
+ sha1 = "e9bdbde94a20a5ac18b04340fc5764d5b09d901d";
+ };
+ }
+
+ {
+ name = "media-typer-0.3.0.tgz";
+ path = fetchurl {
+ name = "media-typer-0.3.0.tgz";
+ url = "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz";
+ sha1 = "8710d7af0aa626f8fffa1ce00168545263255748";
+ };
+ }
+
+ {
+ name = "mem-1.1.0.tgz";
+ path = fetchurl {
+ name = "mem-1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz";
+ sha1 = "5edd52b485ca1d900fe64895505399a0dfa45f76";
+ };
+ }
+
+ {
+ name = "memory-fs-0.4.1.tgz";
+ path = fetchurl {
+ name = "memory-fs-0.4.1.tgz";
+ url = "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz";
+ sha1 = "3a9a20b8462523e447cfbc7e8bb80ed667bfc552";
+ };
+ }
+
+ {
+ name = "meow-3.7.0.tgz";
+ path = fetchurl {
+ name = "meow-3.7.0.tgz";
+ url = "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz";
+ sha1 = "72cb668b425228290abbfa856892587308a801fb";
+ };
+ }
+
+ {
+ name = "merge-descriptors-1.0.1.tgz";
+ path = fetchurl {
+ name = "merge-descriptors-1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz";
+ sha1 = "b00aaa556dd8b44568150ec9d1b953f3f90cbb61";
+ };
+ }
+
+ {
+ name = "methods-1.1.2.tgz";
+ path = fetchurl {
+ name = "methods-1.1.2.tgz";
+ url = "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz";
+ sha1 = "5529a4d67654134edcc5266656835b0f851afcee";
+ };
+ }
+
+ {
+ name = "micromatch-2.3.11.tgz";
+ path = fetchurl {
+ name = "micromatch-2.3.11.tgz";
+ url = "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz";
+ sha1 = "86677c97d1720b363431d04d0d15293bd38c1565";
+ };
+ }
+
+ {
+ name = "micromatch-3.1.8.tgz";
+ path = fetchurl {
+ name = "micromatch-3.1.8.tgz";
+ url = "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.8.tgz";
+ sha1 = "5c8caa008de588eebb395e8c0ad12c128f25fff1";
+ };
+ }
+
+ {
+ name = "miller-rabin-4.0.1.tgz";
+ path = fetchurl {
+ name = "miller-rabin-4.0.1.tgz";
+ url = "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz";
+ sha1 = "f080351c865b0dc562a8462966daa53543c78a4d";
+ };
+ }
+
+ {
+ name = "mime-db-1.33.0.tgz";
+ path = fetchurl {
+ name = "mime-db-1.33.0.tgz";
+ url = "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz";
+ sha1 = "a3492050a5cb9b63450541e39d9788d2272783db";
+ };
+ }
+
+ {
+ name = "mime-db-1.30.0.tgz";
+ path = fetchurl {
+ name = "mime-db-1.30.0.tgz";
+ url = "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz";
+ sha1 = "74c643da2dd9d6a45399963465b26d5ca7d71f01";
+ };
+ }
+
+ {
+ name = "mime-types-2.1.17.tgz";
+ path = fetchurl {
+ name = "mime-types-2.1.17.tgz";
+ url = "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz";
+ sha1 = "09d7a393f03e995a79f8af857b70a9e0ab16557a";
+ };
+ }
+
+ {
+ name = "mime-types-2.1.18.tgz";
+ path = fetchurl {
+ name = "mime-types-2.1.18.tgz";
+ url = "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz";
+ sha1 = "6f323f60a83d11146f831ff11fd66e2fe5503bb8";
+ };
+ }
+
+ {
+ name = "mime-1.4.1.tgz";
+ path = fetchurl {
+ name = "mime-1.4.1.tgz";
+ url = "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz";
+ sha1 = "121f9ebc49e3766f311a76e1fa1c8003c4b03aa6";
+ };
+ }
+
+ {
+ name = "mime-1.6.0.tgz";
+ path = fetchurl {
+ name = "mime-1.6.0.tgz";
+ url = "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz";
+ sha1 = "32cd9e5c64553bd58d19a568af452acff04981b1";
+ };
+ }
+
+ {
+ name = "mimic-fn-1.1.0.tgz";
+ path = fetchurl {
+ name = "mimic-fn-1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz";
+ sha1 = "e667783d92e89dbd342818b5230b9d62a672ad18";
+ };
+ }
+
+ {
+ name = "minimalistic-assert-1.0.0.tgz";
+ path = fetchurl {
+ name = "minimalistic-assert-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz";
+ sha1 = "702be2dda6b37f4836bcb3f5db56641b64a1d3d3";
+ };
+ }
+
+ {
+ name = "minimalistic-crypto-utils-1.0.1.tgz";
+ path = fetchurl {
+ name = "minimalistic-crypto-utils-1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz";
+ sha1 = "f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a";
+ };
+ }
+
+ {
+ name = "minimatch-3.0.4.tgz";
+ path = fetchurl {
+ name = "minimatch-3.0.4.tgz";
+ url = "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz";
+ sha1 = "5166e286457f03306064be5497e8dbb0c3d32083";
+ };
+ }
+
+ {
+ name = "minimist-0.0.8.tgz";
+ path = fetchurl {
+ name = "minimist-0.0.8.tgz";
+ url = "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz";
+ sha1 = "857fcabfc3397d2625b8228262e86aa7a011b05d";
+ };
+ }
+
+ {
+ name = "minimist-1.2.0.tgz";
+ path = fetchurl {
+ name = "minimist-1.2.0.tgz";
+ url = "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz";
+ sha1 = "a35008b20f41383eec1fb914f4cd5df79a264284";
+ };
+ }
+
+ {
+ name = "mississippi-1.3.0.tgz";
+ path = fetchurl {
+ name = "mississippi-1.3.0.tgz";
+ url = "https://registry.yarnpkg.com/mississippi/-/mississippi-1.3.0.tgz";
+ sha1 = "d201583eb12327e3c5c1642a404a9cacf94e34f5";
+ };
+ }
+
+ {
+ name = "mixin-deep-1.3.1.tgz";
+ path = fetchurl {
+ name = "mixin-deep-1.3.1.tgz";
+ url = "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz";
+ sha1 = "a49e7268dce1a0d9698e45326c5626df3543d0fe";
+ };
+ }
+
+ {
+ name = "mkdirp-0.5.1.tgz";
+ path = fetchurl {
+ name = "mkdirp-0.5.1.tgz";
+ url = "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz";
+ sha1 = "30057438eac6cf7f8c4767f38648d6697d75c903";
+ };
+ }
+
+ {
+ name = "move-concurrently-1.0.1.tgz";
+ path = fetchurl {
+ name = "move-concurrently-1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz";
+ sha1 = "be2c005fda32e0b29af1f05d7c4b33214c701f92";
+ };
+ }
+
+ {
+ name = "ms-2.0.0.tgz";
+ path = fetchurl {
+ name = "ms-2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz";
+ sha1 = "5608aeadfc00be6c2901df5f9861788de0d597c8";
+ };
+ }
+
+ {
+ name = "multicast-dns-service-types-1.1.0.tgz";
+ path = fetchurl {
+ name = "multicast-dns-service-types-1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz";
+ sha1 = "899f11d9686e5e05cb91b35d5f0e63b773cfc901";
+ };
+ }
+
+ {
+ name = "multicast-dns-6.2.3.tgz";
+ path = fetchurl {
+ name = "multicast-dns-6.2.3.tgz";
+ url = "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz";
+ sha1 = "a0ec7bd9055c4282f790c3c82f4e28db3b31b229";
+ };
+ }
+
+ {
+ name = "mute-stream-0.0.7.tgz";
+ path = fetchurl {
+ name = "mute-stream-0.0.7.tgz";
+ url = "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz";
+ sha1 = "3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab";
+ };
+ }
+
+ {
+ name = "nan-2.8.0.tgz";
+ path = fetchurl {
+ name = "nan-2.8.0.tgz";
+ url = "https://registry.yarnpkg.com/nan/-/nan-2.8.0.tgz";
+ sha1 = "ed715f3fe9de02b57a5e6252d90a96675e1f085a";
+ };
+ }
+
+ {
+ name = "nanomatch-1.2.9.tgz";
+ path = fetchurl {
+ name = "nanomatch-1.2.9.tgz";
+ url = "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.9.tgz";
+ sha1 = "879f7150cb2dab7a471259066c104eee6e0fa7c2";
+ };
+ }
+
+ {
+ name = "natural-compare-1.4.0.tgz";
+ path = fetchurl {
+ name = "natural-compare-1.4.0.tgz";
+ url = "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz";
+ sha1 = "4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7";
+ };
+ }
+
+ {
+ name = "ncname-1.0.0.tgz";
+ path = fetchurl {
+ name = "ncname-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/ncname/-/ncname-1.0.0.tgz";
+ sha1 = "5b57ad18b1ca092864ef62b0b1ed8194f383b71c";
+ };
+ }
+
+ {
+ name = "negotiator-0.6.1.tgz";
+ path = fetchurl {
+ name = "negotiator-0.6.1.tgz";
+ url = "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz";
+ sha1 = "2b327184e8992101177b28563fb5e7102acd0ca9";
+ };
+ }
+
+ {
+ name = "no-case-2.3.2.tgz";
+ path = fetchurl {
+ name = "no-case-2.3.2.tgz";
+ url = "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz";
+ sha1 = "60b813396be39b3f1288a4c1ed5d1e7d28b464ac";
+ };
+ }
+
+ {
+ name = "node-forge-0.7.1.tgz";
+ path = fetchurl {
+ name = "node-forge-0.7.1.tgz";
+ url = "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.1.tgz";
+ sha1 = "9da611ea08982f4b94206b3beb4cc9665f20c300";
+ };
+ }
+
+ {
+ name = "node-libs-browser-2.1.0.tgz";
+ path = fetchurl {
+ name = "node-libs-browser-2.1.0.tgz";
+ url = "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.1.0.tgz";
+ sha1 = "5f94263d404f6e44767d726901fff05478d600df";
+ };
+ }
+
+ {
+ name = "node-pre-gyp-0.6.39.tgz";
+ path = fetchurl {
+ name = "node-pre-gyp-0.6.39.tgz";
+ url = "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz";
+ sha1 = "c00e96860b23c0e1420ac7befc5044e1d78d8649";
+ };
+ }
+
+ {
+ name = "nopt-4.0.1.tgz";
+ path = fetchurl {
+ name = "nopt-4.0.1.tgz";
+ url = "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz";
+ sha1 = "d0d4685afd5415193c8c7505602d0d17cd64474d";
+ };
+ }
+
+ {
+ name = "normalize-package-data-2.4.0.tgz";
+ path = fetchurl {
+ name = "normalize-package-data-2.4.0.tgz";
+ url = "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz";
+ sha1 = "12f95a307d58352075a04907b84ac8be98ac012f";
+ };
+ }
+
+ {
+ name = "normalize-path-2.1.1.tgz";
+ path = fetchurl {
+ name = "normalize-path-2.1.1.tgz";
+ url = "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz";
+ sha1 = "1ab28b556e198363a8c1a6f7e6fa20137fe6aed9";
+ };
+ }
+
+ {
+ name = "npm-run-path-2.0.2.tgz";
+ path = fetchurl {
+ name = "npm-run-path-2.0.2.tgz";
+ url = "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz";
+ sha1 = "35a9232dfa35d7067b4cb2ddf2357b1871536c5f";
+ };
+ }
+
+ {
+ name = "npmlog-4.1.2.tgz";
+ path = fetchurl {
+ name = "npmlog-4.1.2.tgz";
+ url = "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz";
+ sha1 = "08a7f2a8bf734604779a9efa4ad5cc717abb954b";
+ };
+ }
+
+ {
+ name = "nth-check-1.0.1.tgz";
+ path = fetchurl {
+ name = "nth-check-1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.1.tgz";
+ sha1 = "9929acdf628fc2c41098deab82ac580cf149aae4";
+ };
+ }
+
+ {
+ name = "number-is-nan-1.0.1.tgz";
+ path = fetchurl {
+ name = "number-is-nan-1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz";
+ sha1 = "097b602b53422a522c1afb8790318336941a011d";
+ };
+ }
+
+ {
+ name = "oauth-sign-0.8.2.tgz";
+ path = fetchurl {
+ name = "oauth-sign-0.8.2.tgz";
+ url = "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz";
+ sha1 = "46a6ab7f0aead8deae9ec0565780b7d4efeb9d43";
+ };
+ }
+
+ {
+ name = "object-assign-4.1.1.tgz";
+ path = fetchurl {
+ name = "object-assign-4.1.1.tgz";
+ url = "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz";
+ sha1 = "2109adc7965887cfc05cbbd442cac8bfbb360863";
+ };
+ }
+
+ {
+ name = "object-copy-0.1.0.tgz";
+ path = fetchurl {
+ name = "object-copy-0.1.0.tgz";
+ url = "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz";
+ sha1 = "7e7d858b781bd7c991a41ba975ed3812754e998c";
+ };
+ }
+
+ {
+ name = "object-keys-1.0.11.tgz";
+ path = fetchurl {
+ name = "object-keys-1.0.11.tgz";
+ url = "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz";
+ sha1 = "c54601778ad560f1142ce0e01bcca8b56d13426d";
+ };
+ }
+
+ {
+ name = "object-visit-1.0.1.tgz";
+ path = fetchurl {
+ name = "object-visit-1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz";
+ sha1 = "f79c4493af0c5377b59fe39d395e41042dd045bb";
+ };
+ }
+
+ {
+ name = "object.omit-2.0.1.tgz";
+ path = fetchurl {
+ name = "object.omit-2.0.1.tgz";
+ url = "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz";
+ sha1 = "1a9c744829f39dbb858c76ca3579ae2a54ebd1fa";
+ };
+ }
+
+ {
+ name = "object.pick-1.3.0.tgz";
+ path = fetchurl {
+ name = "object.pick-1.3.0.tgz";
+ url = "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz";
+ sha1 = "87a10ac4c1694bd2e1cbf53591a66141fb5dd747";
+ };
+ }
+
+ {
+ name = "obuf-1.1.1.tgz";
+ path = fetchurl {
+ name = "obuf-1.1.1.tgz";
+ url = "https://registry.yarnpkg.com/obuf/-/obuf-1.1.1.tgz";
+ sha1 = "104124b6c602c6796881a042541d36db43a5264e";
+ };
+ }
+
+ {
+ name = "on-finished-2.3.0.tgz";
+ path = fetchurl {
+ name = "on-finished-2.3.0.tgz";
+ url = "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz";
+ sha1 = "20f1336481b083cd75337992a16971aa2d906947";
+ };
+ }
+
+ {
+ name = "on-headers-1.0.1.tgz";
+ path = fetchurl {
+ name = "on-headers-1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz";
+ sha1 = "928f5d0f470d49342651ea6794b0857c100693f7";
+ };
+ }
+
+ {
+ name = "once-1.4.0.tgz";
+ path = fetchurl {
+ name = "once-1.4.0.tgz";
+ url = "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz";
+ sha1 = "583b1aa775961d4b113ac17d9c50baef9dd76bd1";
+ };
+ }
+
+ {
+ name = "onetime-2.0.1.tgz";
+ path = fetchurl {
+ name = "onetime-2.0.1.tgz";
+ url = "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz";
+ sha1 = "067428230fd67443b2794b22bba528b6867962d4";
+ };
+ }
+
+ {
+ name = "opn-5.2.0.tgz";
+ path = fetchurl {
+ name = "opn-5.2.0.tgz";
+ url = "https://registry.yarnpkg.com/opn/-/opn-5.2.0.tgz";
+ sha1 = "71fdf934d6827d676cecbea1531f95d354641225";
+ };
+ }
+
+ {
+ name = "optionator-0.8.2.tgz";
+ path = fetchurl {
+ name = "optionator-0.8.2.tgz";
+ url = "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz";
+ sha1 = "364c5e409d3f4d6301d6c0b4c05bba50180aeb64";
+ };
+ }
+
+ {
+ name = "original-1.0.0.tgz";
+ path = fetchurl {
+ name = "original-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/original/-/original-1.0.0.tgz";
+ sha1 = "9147f93fa1696d04be61e01bd50baeaca656bd3b";
+ };
+ }
+
+ {
+ name = "os-browserify-0.3.0.tgz";
+ path = fetchurl {
+ name = "os-browserify-0.3.0.tgz";
+ url = "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz";
+ sha1 = "854373c7f5c2315914fc9bfc6bd8238fdda1ec27";
+ };
+ }
+
+ {
+ name = "os-homedir-1.0.2.tgz";
+ path = fetchurl {
+ name = "os-homedir-1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz";
+ sha1 = "ffbc4988336e0e833de0c168c7ef152121aa7fb3";
+ };
+ }
+
+ {
+ name = "os-locale-1.4.0.tgz";
+ path = fetchurl {
+ name = "os-locale-1.4.0.tgz";
+ url = "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz";
+ sha1 = "20f9f17ae29ed345e8bde583b13d2009803c14d9";
+ };
+ }
+
+ {
+ name = "os-locale-2.1.0.tgz";
+ path = fetchurl {
+ name = "os-locale-2.1.0.tgz";
+ url = "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz";
+ sha1 = "42bc2900a6b5b8bd17376c8e882b65afccf24bf2";
+ };
+ }
+
+ {
+ name = "os-tmpdir-1.0.2.tgz";
+ path = fetchurl {
+ name = "os-tmpdir-1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz";
+ sha1 = "bbe67406c79aa85c5cfec766fe5734555dfa1274";
+ };
+ }
+
+ {
+ name = "osenv-0.1.4.tgz";
+ path = fetchurl {
+ name = "osenv-0.1.4.tgz";
+ url = "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz";
+ sha1 = "42fe6d5953df06c8064be6f176c3d05aaaa34644";
+ };
+ }
+
+ {
+ name = "p-finally-1.0.0.tgz";
+ path = fetchurl {
+ name = "p-finally-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz";
+ sha1 = "3fbcfb15b899a44123b34b6dcc18b724336a2cae";
+ };
+ }
+
+ {
+ name = "p-limit-1.2.0.tgz";
+ path = fetchurl {
+ name = "p-limit-1.2.0.tgz";
+ url = "https://registry.yarnpkg.com/p-limit/-/p-limit-1.2.0.tgz";
+ sha1 = "0e92b6bedcb59f022c13d0f1949dc82d15909f1c";
+ };
+ }
+
+ {
+ name = "p-locate-2.0.0.tgz";
+ path = fetchurl {
+ name = "p-locate-2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz";
+ sha1 = "20a0103b222a70c8fd39cc2e580680f3dde5ec43";
+ };
+ }
+
+ {
+ name = "p-map-1.2.0.tgz";
+ path = fetchurl {
+ name = "p-map-1.2.0.tgz";
+ url = "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz";
+ sha1 = "e4e94f311eabbc8633a1e79908165fca26241b6b";
+ };
+ }
+
+ {
+ name = "p-try-1.0.0.tgz";
+ path = fetchurl {
+ name = "p-try-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz";
+ sha1 = "cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3";
+ };
+ }
+
+ {
+ name = "pako-1.0.6.tgz";
+ path = fetchurl {
+ name = "pako-1.0.6.tgz";
+ url = "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz";
+ sha1 = "0101211baa70c4bca4a0f63f2206e97b7dfaf258";
+ };
+ }
+
+ {
+ name = "parallel-transform-1.1.0.tgz";
+ path = fetchurl {
+ name = "parallel-transform-1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz";
+ sha1 = "d410f065b05da23081fcd10f28854c29bda33b06";
+ };
+ }
+
+ {
+ name = "param-case-2.1.1.tgz";
+ path = fetchurl {
+ name = "param-case-2.1.1.tgz";
+ url = "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz";
+ sha1 = "df94fd8cf6531ecf75e6bef9a0858fbc72be2247";
+ };
+ }
+
+ {
+ name = "parse-asn1-5.1.0.tgz";
+ path = fetchurl {
+ name = "parse-asn1-5.1.0.tgz";
+ url = "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.0.tgz";
+ sha1 = "37c4f9b7ed3ab65c74817b5f2480937fbf97c712";
+ };
+ }
+
+ {
+ name = "parse-glob-3.0.4.tgz";
+ path = fetchurl {
+ name = "parse-glob-3.0.4.tgz";
+ url = "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz";
+ sha1 = "b2c376cfb11f35513badd173ef0bb6e3a388391c";
+ };
+ }
+
+ {
+ name = "parse-json-2.2.0.tgz";
+ path = fetchurl {
+ name = "parse-json-2.2.0.tgz";
+ url = "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz";
+ sha1 = "f480f40434ef80741f8469099f8dea18f55a4dc9";
+ };
+ }
+
+ {
+ name = "parseurl-1.3.2.tgz";
+ path = fetchurl {
+ name = "parseurl-1.3.2.tgz";
+ url = "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz";
+ sha1 = "fc289d4ed8993119460c156253262cdc8de65bf3";
+ };
+ }
+
+ {
+ name = "pascalcase-0.1.1.tgz";
+ path = fetchurl {
+ name = "pascalcase-0.1.1.tgz";
+ url = "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz";
+ sha1 = "b363e55e8006ca6fe21784d2db22bd15d7917f14";
+ };
+ }
+
+ {
+ name = "path-browserify-0.0.0.tgz";
+ path = fetchurl {
+ name = "path-browserify-0.0.0.tgz";
+ url = "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz";
+ sha1 = "a0b870729aae214005b7d5032ec2cbbb0fb4451a";
+ };
+ }
+
+ {
+ name = "path-dirname-1.0.2.tgz";
+ path = fetchurl {
+ name = "path-dirname-1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz";
+ sha1 = "cc33d24d525e099a5388c0336c6e32b9160609e0";
+ };
+ }
+
+ {
+ name = "path-exists-2.1.0.tgz";
+ path = fetchurl {
+ name = "path-exists-2.1.0.tgz";
+ url = "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz";
+ sha1 = "0feb6c64f0fc518d9a754dd5efb62c7022761f4b";
+ };
+ }
+
+ {
+ name = "path-exists-3.0.0.tgz";
+ path = fetchurl {
+ name = "path-exists-3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz";
+ sha1 = "ce0ebeaa5f78cb18925ea7d810d7b59b010fd515";
+ };
+ }
+
+ {
+ name = "path-is-absolute-1.0.1.tgz";
+ path = fetchurl {
+ name = "path-is-absolute-1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz";
+ sha1 = "174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f";
+ };
+ }
+
+ {
+ name = "path-is-inside-1.0.2.tgz";
+ path = fetchurl {
+ name = "path-is-inside-1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz";
+ sha1 = "365417dede44430d1c11af61027facf074bdfc53";
+ };
+ }
+
+ {
+ name = "path-key-2.0.1.tgz";
+ path = fetchurl {
+ name = "path-key-2.0.1.tgz";
+ url = "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz";
+ sha1 = "411cadb574c5a140d3a4b1910d40d80cc9f40b40";
+ };
+ }
+
+ {
+ name = "path-to-regexp-0.1.7.tgz";
+ path = fetchurl {
+ name = "path-to-regexp-0.1.7.tgz";
+ url = "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz";
+ sha1 = "df604178005f522f15eb4490e7247a1bfaa67f8c";
+ };
+ }
+
+ {
+ name = "path-type-1.1.0.tgz";
+ path = fetchurl {
+ name = "path-type-1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz";
+ sha1 = "59c44f7ee491da704da415da5a4070ba4f8fe441";
+ };
+ }
+
+ {
+ name = "path-type-2.0.0.tgz";
+ path = fetchurl {
+ name = "path-type-2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz";
+ sha1 = "f012ccb8415b7096fc2daa1054c3d72389594c73";
+ };
+ }
+
+ {
+ name = "pbkdf2-3.0.14.tgz";
+ path = fetchurl {
+ name = "pbkdf2-3.0.14.tgz";
+ url = "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.14.tgz";
+ sha1 = "a35e13c64799b06ce15320f459c230e68e73bade";
+ };
+ }
+
+ {
+ name = "performance-now-0.2.0.tgz";
+ path = fetchurl {
+ name = "performance-now-0.2.0.tgz";
+ url = "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz";
+ sha1 = "33ef30c5c77d4ea21c5a53869d91b56d8f2555e5";
+ };
+ }
+
+ {
+ name = "pify-2.3.0.tgz";
+ path = fetchurl {
+ name = "pify-2.3.0.tgz";
+ url = "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz";
+ sha1 = "ed141a6ac043a849ea588498e7dca8b15330e90c";
+ };
+ }
+
+ {
+ name = "pify-3.0.0.tgz";
+ path = fetchurl {
+ name = "pify-3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz";
+ sha1 = "e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176";
+ };
+ }
+
+ {
+ name = "pinkie-promise-2.0.1.tgz";
+ path = fetchurl {
+ name = "pinkie-promise-2.0.1.tgz";
+ url = "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz";
+ sha1 = "2135d6dfa7a358c069ac9b178776288228450ffa";
+ };
+ }
+
+ {
+ name = "pinkie-2.0.4.tgz";
+ path = fetchurl {
+ name = "pinkie-2.0.4.tgz";
+ url = "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz";
+ sha1 = "72556b80cfa0d48a974e80e77248e80ed4f7f870";
+ };
+ }
+
+ {
+ name = "pkg-dir-2.0.0.tgz";
+ path = fetchurl {
+ name = "pkg-dir-2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz";
+ sha1 = "f6d5d1109e19d63edf428e0bd57e12777615334b";
+ };
+ }
+
+ {
+ name = "pluralize-7.0.0.tgz";
+ path = fetchurl {
+ name = "pluralize-7.0.0.tgz";
+ url = "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz";
+ sha1 = "298b89df8b93b0221dbf421ad2b1b1ea23fc6777";
+ };
+ }
+
+ {
+ name = "portfinder-1.0.13.tgz";
+ path = fetchurl {
+ name = "portfinder-1.0.13.tgz";
+ url = "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.13.tgz";
+ sha1 = "bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9";
+ };
+ }
+
+ {
+ name = "posix-character-classes-0.1.1.tgz";
+ path = fetchurl {
+ name = "posix-character-classes-0.1.1.tgz";
+ url = "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz";
+ sha1 = "01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab";
+ };
+ }
+
+ {
+ name = "prelude-ls-1.1.2.tgz";
+ path = fetchurl {
+ name = "prelude-ls-1.1.2.tgz";
+ url = "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz";
+ sha1 = "21932a549f5e52ffd9a827f570e04be62a97da54";
+ };
+ }
+
+ {
+ name = "preserve-0.2.0.tgz";
+ path = fetchurl {
+ name = "preserve-0.2.0.tgz";
+ url = "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz";
+ sha1 = "815ed1f6ebc65926f865b310c0713bcb3315ce4b";
+ };
+ }
+
+ {
+ name = "pretty-error-2.1.1.tgz";
+ path = fetchurl {
+ name = "pretty-error-2.1.1.tgz";
+ url = "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz";
+ sha1 = "5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3";
+ };
+ }
+
+ {
+ name = "process-nextick-args-1.0.7.tgz";
+ path = fetchurl {
+ name = "process-nextick-args-1.0.7.tgz";
+ url = "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz";
+ sha1 = "150e20b756590ad3f91093f25a4f2ad8bff30ba3";
+ };
+ }
+
+ {
+ name = "process-nextick-args-2.0.0.tgz";
+ path = fetchurl {
+ name = "process-nextick-args-2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz";
+ sha1 = "a37d732f4271b4ab1ad070d35508e8290788ffaa";
+ };
+ }
+
+ {
+ name = "process-0.11.10.tgz";
+ path = fetchurl {
+ name = "process-0.11.10.tgz";
+ url = "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz";
+ sha1 = "7332300e840161bda3e69a1d1d91a7d4bc16f182";
+ };
+ }
+
+ {
+ name = "progress-2.0.0.tgz";
+ path = fetchurl {
+ name = "progress-2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz";
+ sha1 = "8a1be366bf8fc23db2bd23f10c6fe920b4389d1f";
+ };
+ }
+
+ {
+ name = "promise-inflight-1.0.1.tgz";
+ path = fetchurl {
+ name = "promise-inflight-1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz";
+ sha1 = "98472870bf228132fcbdd868129bad12c3c029e3";
+ };
+ }
+
+ {
+ name = "promise-7.3.1.tgz";
+ path = fetchurl {
+ name = "promise-7.3.1.tgz";
+ url = "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz";
+ sha1 = "064b72602b18f90f29192b8b1bc418ffd1ebd3bf";
+ };
+ }
+
+ {
+ name = "proxy-addr-2.0.3.tgz";
+ path = fetchurl {
+ name = "proxy-addr-2.0.3.tgz";
+ url = "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.3.tgz";
+ sha1 = "355f262505a621646b3130a728eb647e22055341";
+ };
+ }
+
+ {
+ name = "prr-1.0.1.tgz";
+ path = fetchurl {
+ name = "prr-1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz";
+ sha1 = "d3fc114ba06995a45ec6893f484ceb1d78f5f476";
+ };
+ }
+
+ {
+ name = "pseudomap-1.0.2.tgz";
+ path = fetchurl {
+ name = "pseudomap-1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz";
+ sha1 = "f052a28da70e618917ef0a8ac34c1ae5a68286b3";
+ };
+ }
+
+ {
+ name = "public-encrypt-4.0.0.tgz";
+ path = fetchurl {
+ name = "public-encrypt-4.0.0.tgz";
+ url = "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.0.tgz";
+ sha1 = "39f699f3a46560dd5ebacbca693caf7c65c18cc6";
+ };
+ }
+
+ {
+ name = "pump-1.0.3.tgz";
+ path = fetchurl {
+ name = "pump-1.0.3.tgz";
+ url = "https://registry.yarnpkg.com/pump/-/pump-1.0.3.tgz";
+ sha1 = "5dfe8311c33bbf6fc18261f9f34702c47c08a954";
+ };
+ }
+
+ {
+ name = "pump-2.0.0.tgz";
+ path = fetchurl {
+ name = "pump-2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/pump/-/pump-2.0.0.tgz";
+ sha1 = "7946da1c8d622b098e2ceb2d3476582470829c9d";
+ };
+ }
+
+ {
+ name = "pumpify-1.4.0.tgz";
+ path = fetchurl {
+ name = "pumpify-1.4.0.tgz";
+ url = "https://registry.yarnpkg.com/pumpify/-/pumpify-1.4.0.tgz";
+ sha1 = "80b7c5df7e24153d03f0e7ac8a05a5d068bd07fb";
+ };
+ }
+
+ {
+ name = "punycode-1.3.2.tgz";
+ path = fetchurl {
+ name = "punycode-1.3.2.tgz";
+ url = "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz";
+ sha1 = "9653a036fb7c1ee42342f2325cceefea3926c48d";
+ };
+ }
+
+ {
+ name = "punycode-1.4.1.tgz";
+ path = fetchurl {
+ name = "punycode-1.4.1.tgz";
+ url = "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz";
+ sha1 = "c0d5a63b2718800ad8e1eb0fa5269c84dd41845e";
+ };
+ }
+
+ {
+ name = "qs-6.5.1.tgz";
+ path = fetchurl {
+ name = "qs-6.5.1.tgz";
+ url = "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz";
+ sha1 = "349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8";
+ };
+ }
+
+ {
+ name = "qs-6.4.0.tgz";
+ path = fetchurl {
+ name = "qs-6.4.0.tgz";
+ url = "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz";
+ sha1 = "13e26d28ad6b0ffaa91312cd3bf708ed351e7233";
+ };
+ }
+
+ {
+ name = "query-string-5.1.0.tgz";
+ path = fetchurl {
+ name = "query-string-5.1.0.tgz";
+ url = "https://registry.yarnpkg.com/query-string/-/query-string-5.1.0.tgz";
+ sha1 = "9583b15fd1307f899e973ed418886426a9976469";
+ };
+ }
+
+ {
+ name = "querystring-es3-0.2.1.tgz";
+ path = fetchurl {
+ name = "querystring-es3-0.2.1.tgz";
+ url = "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz";
+ sha1 = "9ec61f79049875707d69414596fd907a4d711e73";
+ };
+ }
+
+ {
+ name = "querystring-0.2.0.tgz";
+ path = fetchurl {
+ name = "querystring-0.2.0.tgz";
+ url = "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz";
+ sha1 = "b209849203bb25df820da756e747005878521620";
+ };
+ }
+
+ {
+ name = "querystringify-0.0.4.tgz";
+ path = fetchurl {
+ name = "querystringify-0.0.4.tgz";
+ url = "https://registry.yarnpkg.com/querystringify/-/querystringify-0.0.4.tgz";
+ sha1 = "0cf7f84f9463ff0ae51c4c4b142d95be37724d9c";
+ };
+ }
+
+ {
+ name = "querystringify-1.0.0.tgz";
+ path = fetchurl {
+ name = "querystringify-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/querystringify/-/querystringify-1.0.0.tgz";
+ sha1 = "6286242112c5b712fa654e526652bf6a13ff05cb";
+ };
+ }
+
+ {
+ name = "randomatic-1.1.7.tgz";
+ path = fetchurl {
+ name = "randomatic-1.1.7.tgz";
+ url = "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz";
+ sha1 = "c7abe9cc8b87c0baa876b19fde83fd464797e38c";
+ };
+ }
+
+ {
+ name = "randombytes-2.0.6.tgz";
+ path = fetchurl {
+ name = "randombytes-2.0.6.tgz";
+ url = "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.6.tgz";
+ sha1 = "d302c522948588848a8d300c932b44c24231da80";
+ };
+ }
+
+ {
+ name = "randomfill-1.0.3.tgz";
+ path = fetchurl {
+ name = "randomfill-1.0.3.tgz";
+ url = "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.3.tgz";
+ sha1 = "b96b7df587f01dd91726c418f30553b1418e3d62";
+ };
+ }
+
+ {
+ name = "range-parser-1.2.0.tgz";
+ path = fetchurl {
+ name = "range-parser-1.2.0.tgz";
+ url = "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz";
+ sha1 = "f49be6b487894ddc40dcc94a322f611092e00d5e";
+ };
+ }
+
+ {
+ name = "raw-body-2.3.2.tgz";
+ path = fetchurl {
+ name = "raw-body-2.3.2.tgz";
+ url = "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.2.tgz";
+ sha1 = "bcd60c77d3eb93cde0050295c3f379389bc88f89";
+ };
+ }
+
+ {
+ name = "raw-loader-0.5.1.tgz";
+ path = fetchurl {
+ name = "raw-loader-0.5.1.tgz";
+ url = "https://registry.yarnpkg.com/raw-loader/-/raw-loader-0.5.1.tgz";
+ sha1 = "0c3d0beaed8a01c966d9787bf778281252a979aa";
+ };
+ }
+
+ {
+ name = "rc-1.2.4.tgz";
+ path = fetchurl {
+ name = "rc-1.2.4.tgz";
+ url = "https://registry.yarnpkg.com/rc/-/rc-1.2.4.tgz";
+ sha1 = "a0f606caae2a3b862bbd0ef85482c0125b315fa3";
+ };
+ }
+
+ {
+ name = "read-pkg-up-1.0.1.tgz";
+ path = fetchurl {
+ name = "read-pkg-up-1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz";
+ sha1 = "9d63c13276c065918d57f002a57f40a1b643fb02";
+ };
+ }
+
+ {
+ name = "read-pkg-up-2.0.0.tgz";
+ path = fetchurl {
+ name = "read-pkg-up-2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz";
+ sha1 = "6b72a8048984e0c41e79510fd5e9fa99b3b549be";
+ };
+ }
+
+ {
+ name = "read-pkg-1.1.0.tgz";
+ path = fetchurl {
+ name = "read-pkg-1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz";
+ sha1 = "f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28";
+ };
+ }
+
+ {
+ name = "read-pkg-2.0.0.tgz";
+ path = fetchurl {
+ name = "read-pkg-2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz";
+ sha1 = "8ef1c0623c6a6db0dc6713c4bfac46332b2368f8";
+ };
+ }
+
+ {
+ name = "readable-stream-2.3.3.tgz";
+ path = fetchurl {
+ name = "readable-stream-2.3.3.tgz";
+ url = "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz";
+ sha1 = "368f2512d79f9d46fdfc71349ae7878bbc1eb95c";
+ };
+ }
+
+ {
+ name = "readable-stream-1.0.34.tgz";
+ path = fetchurl {
+ name = "readable-stream-1.0.34.tgz";
+ url = "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz";
+ sha1 = "125820e34bc842d2f2aaafafe4c2916ee32c157c";
+ };
+ }
+
+ {
+ name = "readable-stream-2.3.4.tgz";
+ path = fetchurl {
+ name = "readable-stream-2.3.4.tgz";
+ url = "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.4.tgz";
+ sha1 = "c946c3f47fa7d8eabc0b6150f4a12f69a4574071";
+ };
+ }
+
+ {
+ name = "readdirp-2.1.0.tgz";
+ path = fetchurl {
+ name = "readdirp-2.1.0.tgz";
+ url = "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz";
+ sha1 = "4ed0ad060df3073300c48440373f72d1cc642d78";
+ };
+ }
+
+ {
+ name = "redent-1.0.0.tgz";
+ path = fetchurl {
+ name = "redent-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz";
+ sha1 = "cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde";
+ };
+ }
+
+ {
+ name = "regex-cache-0.4.4.tgz";
+ path = fetchurl {
+ name = "regex-cache-0.4.4.tgz";
+ url = "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz";
+ sha1 = "75bdc58a2a1496cec48a12835bc54c8d562336dd";
+ };
+ }
+
+ {
+ name = "regex-not-1.0.2.tgz";
+ path = fetchurl {
+ name = "regex-not-1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz";
+ sha1 = "1f4ece27e00b0b65e0247a6810e6a85d83a5752c";
+ };
+ }
+
+ {
+ name = "relateurl-0.2.7.tgz";
+ path = fetchurl {
+ name = "relateurl-0.2.7.tgz";
+ url = "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz";
+ sha1 = "54dbf377e51440aca90a4cd274600d3ff2d888a9";
+ };
+ }
+
+ {
+ name = "remove-trailing-separator-1.1.0.tgz";
+ path = fetchurl {
+ name = "remove-trailing-separator-1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz";
+ sha1 = "c24bce2a283adad5bc3f58e0d48249b92379d8ef";
+ };
+ }
+
+ {
+ name = "renderkid-2.0.1.tgz";
+ path = fetchurl {
+ name = "renderkid-2.0.1.tgz";
+ url = "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.1.tgz";
+ sha1 = "898cabfc8bede4b7b91135a3ffd323e58c0db319";
+ };
+ }
+
+ {
+ name = "repeat-element-1.1.2.tgz";
+ path = fetchurl {
+ name = "repeat-element-1.1.2.tgz";
+ url = "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz";
+ sha1 = "ef089a178d1483baae4d93eb98b4f9e4e11d990a";
+ };
+ }
+
+ {
+ name = "repeat-string-1.6.1.tgz";
+ path = fetchurl {
+ name = "repeat-string-1.6.1.tgz";
+ url = "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz";
+ sha1 = "8dcae470e1c88abc2d600fff4a776286da75e637";
+ };
+ }
+
+ {
+ name = "repeating-2.0.1.tgz";
+ path = fetchurl {
+ name = "repeating-2.0.1.tgz";
+ url = "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz";
+ sha1 = "5214c53a926d3552707527fbab415dbc08d06dda";
+ };
+ }
+
+ {
+ name = "request-2.81.0.tgz";
+ path = fetchurl {
+ name = "request-2.81.0.tgz";
+ url = "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz";
+ sha1 = "c6928946a0e06c5f8d6f8a9333469ffda46298a0";
+ };
+ }
+
+ {
+ name = "require-directory-2.1.1.tgz";
+ path = fetchurl {
+ name = "require-directory-2.1.1.tgz";
+ url = "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz";
+ sha1 = "8c64ad5fd30dab1c976e2344ffe7f792a6a6df42";
+ };
+ }
+
+ {
+ name = "require-main-filename-1.0.1.tgz";
+ path = fetchurl {
+ name = "require-main-filename-1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz";
+ sha1 = "97f717b69d48784f5f526a6c5aa8ffdda055a4d1";
+ };
+ }
+
+ {
+ name = "require-uncached-1.0.3.tgz";
+ path = fetchurl {
+ name = "require-uncached-1.0.3.tgz";
+ url = "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz";
+ sha1 = "4e0d56d6c9662fd31e43011c4b95aa49955421d3";
+ };
+ }
+
+ {
+ name = "requires-port-1.0.0.tgz";
+ path = fetchurl {
+ name = "requires-port-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz";
+ sha1 = "925d2601d39ac485e091cf0da5c6e694dc3dcaff";
+ };
+ }
+
+ {
+ name = "resolve-cwd-2.0.0.tgz";
+ path = fetchurl {
+ name = "resolve-cwd-2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz";
+ sha1 = "00a9f7387556e27038eae232caa372a6a59b665a";
+ };
+ }
+
+ {
+ name = "resolve-from-1.0.1.tgz";
+ path = fetchurl {
+ name = "resolve-from-1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz";
+ sha1 = "26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226";
+ };
+ }
+
+ {
+ name = "resolve-from-3.0.0.tgz";
+ path = fetchurl {
+ name = "resolve-from-3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz";
+ sha1 = "b22c7af7d9d6881bc8b6e653335eebcb0a188748";
+ };
+ }
+
+ {
+ name = "resolve-url-0.2.1.tgz";
+ path = fetchurl {
+ name = "resolve-url-0.2.1.tgz";
+ url = "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz";
+ sha1 = "2c637fe77c893afd2a663fe21aa9080068e2052a";
+ };
+ }
+
+ {
+ name = "restore-cursor-2.0.0.tgz";
+ path = fetchurl {
+ name = "restore-cursor-2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz";
+ sha1 = "9f7ee287f82fd326d4fd162923d62129eee0dfaf";
+ };
+ }
+
+ {
+ name = "ret-0.1.15.tgz";
+ path = fetchurl {
+ name = "ret-0.1.15.tgz";
+ url = "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz";
+ sha1 = "b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc";
+ };
+ }
+
+ {
+ name = "right-align-0.1.3.tgz";
+ path = fetchurl {
+ name = "right-align-0.1.3.tgz";
+ url = "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz";
+ sha1 = "61339b722fe6a3515689210d24e14c96148613ef";
+ };
+ }
+
+ {
+ name = "rimraf-2.6.2.tgz";
+ path = fetchurl {
+ name = "rimraf-2.6.2.tgz";
+ url = "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz";
+ sha1 = "2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36";
+ };
+ }
+
+ {
+ name = "ripemd160-2.0.1.tgz";
+ path = fetchurl {
+ name = "ripemd160-2.0.1.tgz";
+ url = "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz";
+ sha1 = "0f4584295c53a3628af7e6d79aca21ce57d1c6e7";
+ };
+ }
+
+ {
+ name = "run-async-2.3.0.tgz";
+ path = fetchurl {
+ name = "run-async-2.3.0.tgz";
+ url = "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz";
+ sha1 = "0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0";
+ };
+ }
+
+ {
+ name = "run-queue-1.0.3.tgz";
+ path = fetchurl {
+ name = "run-queue-1.0.3.tgz";
+ url = "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz";
+ sha1 = "e848396f057d223f24386924618e25694161ec47";
+ };
+ }
+
+ {
+ name = "rx-lite-aggregates-4.0.8.tgz";
+ path = fetchurl {
+ name = "rx-lite-aggregates-4.0.8.tgz";
+ url = "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz";
+ sha1 = "753b87a89a11c95467c4ac1626c4efc4e05c67be";
+ };
+ }
+
+ {
+ name = "rx-lite-4.0.8.tgz";
+ path = fetchurl {
+ name = "rx-lite-4.0.8.tgz";
+ url = "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz";
+ sha1 = "0b1e11af8bc44836f04a6407e92da42467b79444";
+ };
+ }
+
+ {
+ name = "safe-buffer-5.1.1.tgz";
+ path = fetchurl {
+ name = "safe-buffer-5.1.1.tgz";
+ url = "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz";
+ sha1 = "893312af69b2123def71f57889001671eeb2c853";
+ };
+ }
+
+ {
+ name = "safe-regex-1.1.0.tgz";
+ path = fetchurl {
+ name = "safe-regex-1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz";
+ sha1 = "40a3669f3b077d1e943d44629e157dd48023bf2e";
+ };
+ }
+
+ {
+ name = "schema-utils-0.4.3.tgz";
+ path = fetchurl {
+ name = "schema-utils-0.4.3.tgz";
+ url = "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.3.tgz";
+ sha1 = "e2a594d3395834d5e15da22b48be13517859458e";
+ };
+ }
+
+ {
+ name = "select-hose-2.0.0.tgz";
+ path = fetchurl {
+ name = "select-hose-2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz";
+ sha1 = "625d8658f865af43ec962bfc376a37359a4994ca";
+ };
+ }
+
+ {
+ name = "selfsigned-1.10.2.tgz";
+ path = fetchurl {
+ name = "selfsigned-1.10.2.tgz";
+ url = "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.2.tgz";
+ sha1 = "b4449580d99929b65b10a48389301a6592088758";
+ };
+ }
+
+ {
+ name = "semver-5.5.0.tgz";
+ path = fetchurl {
+ name = "semver-5.5.0.tgz";
+ url = "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz";
+ sha1 = "dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab";
+ };
+ }
+
+ {
+ name = "send-0.16.1.tgz";
+ path = fetchurl {
+ name = "send-0.16.1.tgz";
+ url = "https://registry.yarnpkg.com/send/-/send-0.16.1.tgz";
+ sha1 = "a70e1ca21d1382c11d0d9f6231deb281080d7ab3";
+ };
+ }
+
+ {
+ name = "serialize-javascript-1.4.0.tgz";
+ path = fetchurl {
+ name = "serialize-javascript-1.4.0.tgz";
+ url = "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.4.0.tgz";
+ sha1 = "7c958514db6ac2443a8abc062dc9f7886a7f6005";
+ };
+ }
+
+ {
+ name = "serve-index-1.9.1.tgz";
+ path = fetchurl {
+ name = "serve-index-1.9.1.tgz";
+ url = "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz";
+ sha1 = "d3768d69b1e7d82e5ce050fff5b453bea12a9239";
+ };
+ }
+
+ {
+ name = "serve-static-1.13.1.tgz";
+ path = fetchurl {
+ name = "serve-static-1.13.1.tgz";
+ url = "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.1.tgz";
+ sha1 = "4c57d53404a761d8f2e7c1e8a18a47dbf278a719";
+ };
+ }
+
+ {
+ name = "set-blocking-2.0.0.tgz";
+ path = fetchurl {
+ name = "set-blocking-2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz";
+ sha1 = "045f9782d011ae9a6803ddd382b24392b3d890f7";
+ };
+ }
+
+ {
+ name = "set-getter-0.1.0.tgz";
+ path = fetchurl {
+ name = "set-getter-0.1.0.tgz";
+ url = "https://registry.yarnpkg.com/set-getter/-/set-getter-0.1.0.tgz";
+ sha1 = "d769c182c9d5a51f409145f2fba82e5e86e80376";
+ };
+ }
+
+ {
+ name = "set-immediate-shim-1.0.1.tgz";
+ path = fetchurl {
+ name = "set-immediate-shim-1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz";
+ sha1 = "4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61";
+ };
+ }
+
+ {
+ name = "set-value-0.4.3.tgz";
+ path = fetchurl {
+ name = "set-value-0.4.3.tgz";
+ url = "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz";
+ sha1 = "7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1";
+ };
+ }
+
+ {
+ name = "set-value-2.0.0.tgz";
+ path = fetchurl {
+ name = "set-value-2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz";
+ sha1 = "71ae4a88f0feefbbf52d1ea604f3fb315ebb6274";
+ };
+ }
+
+ {
+ name = "setimmediate-1.0.5.tgz";
+ path = fetchurl {
+ name = "setimmediate-1.0.5.tgz";
+ url = "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz";
+ sha1 = "290cbb232e306942d7d7ea9b83732ab7856f8285";
+ };
+ }
+
+ {
+ name = "setprototypeof-1.0.3.tgz";
+ path = fetchurl {
+ name = "setprototypeof-1.0.3.tgz";
+ url = "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz";
+ sha1 = "66567e37043eeb4f04d91bd658c0cbefb55b8e04";
+ };
+ }
+
+ {
+ name = "setprototypeof-1.1.0.tgz";
+ path = fetchurl {
+ name = "setprototypeof-1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz";
+ sha1 = "d0bd85536887b6fe7c0d818cb962d9d91c54e656";
+ };
+ }
+
+ {
+ name = "sha.js-2.4.9.tgz";
+ path = fetchurl {
+ name = "sha.js-2.4.9.tgz";
+ url = "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.9.tgz";
+ sha1 = "98f64880474b74f4a38b8da9d3c0f2d104633e7d";
+ };
+ }
+
+ {
+ name = "shebang-command-1.2.0.tgz";
+ path = fetchurl {
+ name = "shebang-command-1.2.0.tgz";
+ url = "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz";
+ sha1 = "44aac65b695b03398968c39f363fee5deafdf1ea";
+ };
+ }
+
+ {
+ name = "shebang-regex-1.0.0.tgz";
+ path = fetchurl {
+ name = "shebang-regex-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz";
+ sha1 = "da42f49740c0b42db2ca9728571cb190c98efea3";
+ };
+ }
+
+ {
+ name = "signal-exit-3.0.2.tgz";
+ path = fetchurl {
+ name = "signal-exit-3.0.2.tgz";
+ url = "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz";
+ sha1 = "b5fdc08f1287ea1178628e415e25132b73646c6d";
+ };
+ }
+
+ {
+ name = "slice-ansi-1.0.0.tgz";
+ path = fetchurl {
+ name = "slice-ansi-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz";
+ sha1 = "044f1a49d8842ff307aad6b505ed178bd950134d";
+ };
+ }
+
+ {
+ name = "snapdragon-node-2.1.1.tgz";
+ path = fetchurl {
+ name = "snapdragon-node-2.1.1.tgz";
+ url = "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz";
+ sha1 = "6c175f86ff14bdb0724563e8f3c1b021a286853b";
+ };
+ }
+
+ {
+ name = "snapdragon-util-3.0.1.tgz";
+ path = fetchurl {
+ name = "snapdragon-util-3.0.1.tgz";
+ url = "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz";
+ sha1 = "f956479486f2acd79700693f6f7b805e45ab56e2";
+ };
+ }
+
+ {
+ name = "snapdragon-0.8.1.tgz";
+ path = fetchurl {
+ name = "snapdragon-0.8.1.tgz";
+ url = "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.1.tgz";
+ sha1 = "e12b5487faded3e3dea0ac91e9400bf75b401370";
+ };
+ }
+
+ {
+ name = "sntp-1.0.9.tgz";
+ path = fetchurl {
+ name = "sntp-1.0.9.tgz";
+ url = "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz";
+ sha1 = "6541184cc90aeea6c6e7b35e2659082443c66198";
+ };
+ }
+
+ {
+ name = "sockjs-client-1.1.4.tgz";
+ path = fetchurl {
+ name = "sockjs-client-1.1.4.tgz";
+ url = "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.4.tgz";
+ sha1 = "5babe386b775e4cf14e7520911452654016c8b12";
+ };
+ }
+
+ {
+ name = "sockjs-0.3.19.tgz";
+ path = fetchurl {
+ name = "sockjs-0.3.19.tgz";
+ url = "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.19.tgz";
+ sha1 = "d976bbe800af7bd20ae08598d582393508993c0d";
+ };
+ }
+
+ {
+ name = "source-list-map-2.0.0.tgz";
+ path = fetchurl {
+ name = "source-list-map-2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz";
+ sha1 = "aaa47403f7b245a92fbc97ea08f250d6087ed085";
+ };
+ }
+
+ {
+ name = "source-map-resolve-0.5.1.tgz";
+ path = fetchurl {
+ name = "source-map-resolve-0.5.1.tgz";
+ url = "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.1.tgz";
+ sha1 = "7ad0f593f2281598e854df80f19aae4b92d7a11a";
+ };
+ }
+
+ {
+ name = "source-map-url-0.4.0.tgz";
+ path = fetchurl {
+ name = "source-map-url-0.4.0.tgz";
+ url = "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz";
+ sha1 = "3e935d7ddd73631b97659956d55128e87b5084a3";
+ };
+ }
+
+ {
+ name = "source-map-0.5.7.tgz";
+ path = fetchurl {
+ name = "source-map-0.5.7.tgz";
+ url = "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz";
+ sha1 = "8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc";
+ };
+ }
+
+ {
+ name = "source-map-0.6.1.tgz";
+ path = fetchurl {
+ name = "source-map-0.6.1.tgz";
+ url = "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz";
+ sha1 = "74722af32e9614e9c287a8d0bbde48b5e2f1a263";
+ };
+ }
+
+ {
+ name = "spdx-correct-1.0.2.tgz";
+ path = fetchurl {
+ name = "spdx-correct-1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz";
+ sha1 = "4b3073d933ff51f3912f03ac5519498a4150db40";
+ };
+ }
+
+ {
+ name = "spdx-expression-parse-1.0.4.tgz";
+ path = fetchurl {
+ name = "spdx-expression-parse-1.0.4.tgz";
+ url = "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz";
+ sha1 = "9bdf2f20e1f40ed447fbe273266191fced51626c";
+ };
+ }
+
+ {
+ name = "spdx-license-ids-1.2.2.tgz";
+ path = fetchurl {
+ name = "spdx-license-ids-1.2.2.tgz";
+ url = "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz";
+ sha1 = "c9df7a3424594ade6bd11900d596696dc06bac57";
+ };
+ }
+
+ {
+ name = "spdy-transport-2.0.20.tgz";
+ path = fetchurl {
+ name = "spdy-transport-2.0.20.tgz";
+ url = "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-2.0.20.tgz";
+ sha1 = "735e72054c486b2354fe89e702256004a39ace4d";
+ };
+ }
+
+ {
+ name = "spdy-3.4.7.tgz";
+ path = fetchurl {
+ name = "spdy-3.4.7.tgz";
+ url = "https://registry.yarnpkg.com/spdy/-/spdy-3.4.7.tgz";
+ sha1 = "42ff41ece5cc0f99a3a6c28aabb73f5c3b03acbc";
+ };
+ }
+
+ {
+ name = "split-string-3.1.0.tgz";
+ path = fetchurl {
+ name = "split-string-3.1.0.tgz";
+ url = "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz";
+ sha1 = "7cb09dda3a86585705c64b39a6466038682e8fe2";
+ };
+ }
+
+ {
+ name = "sprintf-js-1.0.3.tgz";
+ path = fetchurl {
+ name = "sprintf-js-1.0.3.tgz";
+ url = "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz";
+ sha1 = "04e6926f662895354f3dd015203633b857297e2c";
+ };
+ }
+
+ {
+ name = "sshpk-1.13.1.tgz";
+ path = fetchurl {
+ name = "sshpk-1.13.1.tgz";
+ url = "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz";
+ sha1 = "512df6da6287144316dc4c18fe1cf1d940739be3";
+ };
+ }
+
+ {
+ name = "ssri-5.1.0.tgz";
+ path = fetchurl {
+ name = "ssri-5.1.0.tgz";
+ url = "https://registry.yarnpkg.com/ssri/-/ssri-5.1.0.tgz";
+ sha1 = "2cbf1df36b74d0fc91fcf89640a4b3e1d10b1899";
+ };
+ }
+
+ {
+ name = "static-extend-0.1.2.tgz";
+ path = fetchurl {
+ name = "static-extend-0.1.2.tgz";
+ url = "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz";
+ sha1 = "60809c39cbff55337226fd5e0b520f341f1fb5c6";
+ };
+ }
+
+ {
+ name = "statuses-1.4.0.tgz";
+ path = fetchurl {
+ name = "statuses-1.4.0.tgz";
+ url = "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz";
+ sha1 = "bb73d446da2796106efcc1b601a253d6c46bd087";
+ };
+ }
+
+ {
+ name = "statuses-1.3.1.tgz";
+ path = fetchurl {
+ name = "statuses-1.3.1.tgz";
+ url = "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz";
+ sha1 = "faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e";
+ };
+ }
+
+ {
+ name = "stream-browserify-2.0.1.tgz";
+ path = fetchurl {
+ name = "stream-browserify-2.0.1.tgz";
+ url = "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz";
+ sha1 = "66266ee5f9bdb9940a4e4514cafb43bb71e5c9db";
+ };
+ }
+
+ {
+ name = "stream-each-1.2.2.tgz";
+ path = fetchurl {
+ name = "stream-each-1.2.2.tgz";
+ url = "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.2.tgz";
+ sha1 = "8e8c463f91da8991778765873fe4d960d8f616bd";
+ };
+ }
+
+ {
+ name = "stream-http-2.8.0.tgz";
+ path = fetchurl {
+ name = "stream-http-2.8.0.tgz";
+ url = "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.0.tgz";
+ sha1 = "fd86546dac9b1c91aff8fc5d287b98fafb41bc10";
+ };
+ }
+
+ {
+ name = "stream-shift-1.0.0.tgz";
+ path = fetchurl {
+ name = "stream-shift-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz";
+ sha1 = "d5c752825e5367e786f78e18e445ea223a155952";
+ };
+ }
+
+ {
+ name = "strict-uri-encode-1.1.0.tgz";
+ path = fetchurl {
+ name = "strict-uri-encode-1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz";
+ sha1 = "279b225df1d582b1f54e65addd4352e18faa0713";
+ };
+ }
+
+ {
+ name = "string-width-1.0.2.tgz";
+ path = fetchurl {
+ name = "string-width-1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz";
+ sha1 = "118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3";
+ };
+ }
+
+ {
+ name = "string-width-2.1.1.tgz";
+ path = fetchurl {
+ name = "string-width-2.1.1.tgz";
+ url = "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz";
+ sha1 = "ab93f27a8dc13d28cac815c462143a6d9012ae9e";
+ };
+ }
+
+ {
+ name = "string_decoder-1.0.3.tgz";
+ path = fetchurl {
+ name = "string_decoder-1.0.3.tgz";
+ url = "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz";
+ sha1 = "0fc67d7c141825de94282dd536bec6b9bce860ab";
+ };
+ }
+
+ {
+ name = "string_decoder-0.10.31.tgz";
+ path = fetchurl {
+ name = "string_decoder-0.10.31.tgz";
+ url = "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz";
+ sha1 = "62e203bc41766c6c28c9fc84301dab1c5310fa94";
+ };
+ }
+
+ {
+ name = "stringstream-0.0.5.tgz";
+ path = fetchurl {
+ name = "stringstream-0.0.5.tgz";
+ url = "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz";
+ sha1 = "4e484cd4de5a0bbbee18e46307710a8a81621878";
+ };
+ }
+
+ {
+ name = "strip-ansi-3.0.1.tgz";
+ path = fetchurl {
+ name = "strip-ansi-3.0.1.tgz";
+ url = "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz";
+ sha1 = "6a385fb8853d952d5ff05d0e8aaf94278dc63dcf";
+ };
+ }
+
+ {
+ name = "strip-ansi-4.0.0.tgz";
+ path = fetchurl {
+ name = "strip-ansi-4.0.0.tgz";
+ url = "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz";
+ sha1 = "a8479022eb1ac368a871389b635262c505ee368f";
+ };
+ }
+
+ {
+ name = "strip-bom-2.0.0.tgz";
+ path = fetchurl {
+ name = "strip-bom-2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz";
+ sha1 = "6219a85616520491f35788bdbf1447a99c7e6b0e";
+ };
+ }
+
+ {
+ name = "strip-bom-3.0.0.tgz";
+ path = fetchurl {
+ name = "strip-bom-3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz";
+ sha1 = "2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3";
+ };
+ }
+
+ {
+ name = "strip-eof-1.0.0.tgz";
+ path = fetchurl {
+ name = "strip-eof-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz";
+ sha1 = "bb43ff5598a6eb05d89b59fcd129c983313606bf";
+ };
+ }
+
+ {
+ name = "strip-indent-1.0.1.tgz";
+ path = fetchurl {
+ name = "strip-indent-1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz";
+ sha1 = "0c7962a6adefa7bbd4ac366460a638552ae1a0a2";
+ };
+ }
+
+ {
+ name = "strip-json-comments-2.0.1.tgz";
+ path = fetchurl {
+ name = "strip-json-comments-2.0.1.tgz";
+ url = "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz";
+ sha1 = "3c531942e908c2697c0ec344858c286c7ca0a60a";
+ };
+ }
+
+ {
+ name = "supports-color-2.0.0.tgz";
+ path = fetchurl {
+ name = "supports-color-2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz";
+ sha1 = "535d045ce6b6363fa40117084629995e9df324c7";
+ };
+ }
+
+ {
+ name = "supports-color-4.5.0.tgz";
+ path = fetchurl {
+ name = "supports-color-4.5.0.tgz";
+ url = "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz";
+ sha1 = "be7a0de484dec5c5cddf8b3d59125044912f635b";
+ };
+ }
+
+ {
+ name = "supports-color-5.2.0.tgz";
+ path = fetchurl {
+ name = "supports-color-5.2.0.tgz";
+ url = "https://registry.yarnpkg.com/supports-color/-/supports-color-5.2.0.tgz";
+ sha1 = "b0d5333b1184dd3666cbe5aa0b45c5ac7ac17a4a";
+ };
+ }
+
+ {
+ name = "table-4.0.2.tgz";
+ path = fetchurl {
+ name = "table-4.0.2.tgz";
+ url = "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz";
+ sha1 = "a33447375391e766ad34d3486e6e2aedc84d2e36";
+ };
+ }
+
+ {
+ name = "tapable-0.2.8.tgz";
+ path = fetchurl {
+ name = "tapable-0.2.8.tgz";
+ url = "https://registry.yarnpkg.com/tapable/-/tapable-0.2.8.tgz";
+ sha1 = "99372a5c999bf2df160afc0d74bed4f47948cd22";
+ };
+ }
+
+ {
+ name = "tar-pack-3.4.1.tgz";
+ path = fetchurl {
+ name = "tar-pack-3.4.1.tgz";
+ url = "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.1.tgz";
+ sha1 = "e1dbc03a9b9d3ba07e896ad027317eb679a10a1f";
+ };
+ }
+
+ {
+ name = "tar-2.2.1.tgz";
+ path = fetchurl {
+ name = "tar-2.2.1.tgz";
+ url = "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz";
+ sha1 = "8e4d2a256c0e2185c6b18ad694aec968b83cb1d1";
+ };
+ }
+
+ {
+ name = "text-table-0.2.0.tgz";
+ path = fetchurl {
+ name = "text-table-0.2.0.tgz";
+ url = "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz";
+ sha1 = "7f5ee823ae805207c00af2df4a84ec3fcfa570b4";
+ };
+ }
+
+ {
+ name = "through2-2.0.3.tgz";
+ path = fetchurl {
+ name = "through2-2.0.3.tgz";
+ url = "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz";
+ sha1 = "0004569b37c7c74ba39c43f3ced78d1ad94140be";
+ };
+ }
+
+ {
+ name = "through-2.3.8.tgz";
+ path = fetchurl {
+ name = "through-2.3.8.tgz";
+ url = "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz";
+ sha1 = "0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5";
+ };
+ }
+
+ {
+ name = "thunky-1.0.2.tgz";
+ path = fetchurl {
+ name = "thunky-1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/thunky/-/thunky-1.0.2.tgz";
+ sha1 = "a862e018e3fb1ea2ec3fce5d55605cf57f247371";
+ };
+ }
+
+ {
+ name = "time-stamp-2.0.0.tgz";
+ path = fetchurl {
+ name = "time-stamp-2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/time-stamp/-/time-stamp-2.0.0.tgz";
+ sha1 = "95c6a44530e15ba8d6f4a3ecb8c3a3fac46da357";
+ };
+ }
+
+ {
+ name = "timers-browserify-2.0.4.tgz";
+ path = fetchurl {
+ name = "timers-browserify-2.0.4.tgz";
+ url = "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.4.tgz";
+ sha1 = "96ca53f4b794a5e7c0e1bd7cc88a372298fa01e6";
+ };
+ }
+
+ {
+ name = "tmp-0.0.33.tgz";
+ path = fetchurl {
+ name = "tmp-0.0.33.tgz";
+ url = "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz";
+ sha1 = "6d34335889768d21b2bcda0aa277ced3b1bfadf9";
+ };
+ }
+
+ {
+ name = "to-arraybuffer-1.0.1.tgz";
+ path = fetchurl {
+ name = "to-arraybuffer-1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz";
+ sha1 = "7d229b1fcc637e466ca081180836a7aabff83f43";
+ };
+ }
+
+ {
+ name = "to-object-path-0.3.0.tgz";
+ path = fetchurl {
+ name = "to-object-path-0.3.0.tgz";
+ url = "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz";
+ sha1 = "297588b7b0e7e0ac08e04e672f85c1f4999e17af";
+ };
+ }
+
+ {
+ name = "to-regex-range-2.1.1.tgz";
+ path = fetchurl {
+ name = "to-regex-range-2.1.1.tgz";
+ url = "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz";
+ sha1 = "7c80c17b9dfebe599e27367e0d4dd5590141db38";
+ };
+ }
+
+ {
+ name = "to-regex-3.0.1.tgz";
+ path = fetchurl {
+ name = "to-regex-3.0.1.tgz";
+ url = "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.1.tgz";
+ sha1 = "15358bee4a2c83bd76377ba1dc049d0f18837aae";
+ };
+ }
+
+ {
+ name = "toposort-1.0.6.tgz";
+ path = fetchurl {
+ name = "toposort-1.0.6.tgz";
+ url = "https://registry.yarnpkg.com/toposort/-/toposort-1.0.6.tgz";
+ sha1 = "c31748e55d210effc00fdcdc7d6e68d7d7bb9cec";
+ };
+ }
+
+ {
+ name = "tough-cookie-2.3.3.tgz";
+ path = fetchurl {
+ name = "tough-cookie-2.3.3.tgz";
+ url = "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz";
+ sha1 = "0b618a5565b6dea90bf3425d04d55edc475a7561";
+ };
+ }
+
+ {
+ name = "trim-newlines-1.0.0.tgz";
+ path = fetchurl {
+ name = "trim-newlines-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz";
+ sha1 = "5887966bb582a4503a41eb524f7d35011815a613";
+ };
+ }
+
+ {
+ name = "tty-browserify-0.0.0.tgz";
+ path = fetchurl {
+ name = "tty-browserify-0.0.0.tgz";
+ url = "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz";
+ sha1 = "a157ba402da24e9bf957f9aa69d524eed42901a6";
+ };
+ }
+
+ {
+ name = "tunnel-agent-0.6.0.tgz";
+ path = fetchurl {
+ name = "tunnel-agent-0.6.0.tgz";
+ url = "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz";
+ sha1 = "27a5dea06b36b04a0a9966774b290868f0fc40fd";
+ };
+ }
+
+ {
+ name = "tweetnacl-0.14.5.tgz";
+ path = fetchurl {
+ name = "tweetnacl-0.14.5.tgz";
+ url = "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz";
+ sha1 = "5ae68177f192d4456269d108afa93ff8743f4f64";
+ };
+ }
+
+ {
+ name = "type-check-0.3.2.tgz";
+ path = fetchurl {
+ name = "type-check-0.3.2.tgz";
+ url = "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz";
+ sha1 = "5884cab512cf1d355e3fb784f30804b2b520db72";
+ };
+ }
+
+ {
+ name = "type-is-1.6.16.tgz";
+ path = fetchurl {
+ name = "type-is-1.6.16.tgz";
+ url = "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz";
+ sha1 = "f89ce341541c672b25ee7ae3c73dee3b2be50194";
+ };
+ }
+
+ {
+ name = "typedarray-to-buffer-3.1.2.tgz";
+ path = fetchurl {
+ name = "typedarray-to-buffer-3.1.2.tgz";
+ url = "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.2.tgz";
+ sha1 = "1017b32d984ff556eba100f501589aba1ace2e04";
+ };
+ }
+
+ {
+ name = "typedarray-0.0.6.tgz";
+ path = fetchurl {
+ name = "typedarray-0.0.6.tgz";
+ url = "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz";
+ sha1 = "867ac74e3864187b1d3d47d996a78ec5c8830777";
+ };
+ }
+
+ {
+ name = "uglify-es-3.3.7.tgz";
+ path = fetchurl {
+ name = "uglify-es-3.3.7.tgz";
+ url = "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.7.tgz";
+ sha1 = "d1249af668666aba7cb1163e277455be9eb393cf";
+ };
+ }
+
+ {
+ name = "uglify-js-3.3.8.tgz";
+ path = fetchurl {
+ name = "uglify-js-3.3.8.tgz";
+ url = "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.3.8.tgz";
+ sha1 = "51e9a5db73afb53ac98603d08224edcd0be45fd8";
+ };
+ }
+
+ {
+ name = "uglify-js-2.8.29.tgz";
+ path = fetchurl {
+ name = "uglify-js-2.8.29.tgz";
+ url = "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz";
+ sha1 = "29c5733148057bb4e1f75df35b7a9cb72e6a59dd";
+ };
+ }
+
+ {
+ name = "uglify-to-browserify-1.0.2.tgz";
+ path = fetchurl {
+ name = "uglify-to-browserify-1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz";
+ sha1 = "6e0924d6bda6b5afe349e39a6d632850a0f882b7";
+ };
+ }
+
+ {
+ name = "uglifyjs-webpack-plugin-0.4.6.tgz";
+ path = fetchurl {
+ name = "uglifyjs-webpack-plugin-0.4.6.tgz";
+ url = "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz";
+ sha1 = "b951f4abb6bd617e66f63eb891498e391763e309";
+ };
+ }
+
+ {
+ name = "uglifyjs-webpack-plugin-1.2.0.tgz";
+ path = fetchurl {
+ name = "uglifyjs-webpack-plugin-1.2.0.tgz";
+ url = "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.0.tgz";
+ sha1 = "f706fa4c655000a086b4a97c7d835ed0f6e9b0ef";
+ };
+ }
+
+ {
+ name = "uid-number-0.0.6.tgz";
+ path = fetchurl {
+ name = "uid-number-0.0.6.tgz";
+ url = "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz";
+ sha1 = "0ea10e8035e8eb5b8e4449f06da1c730663baa81";
+ };
+ }
+
+ {
+ name = "union-value-1.0.0.tgz";
+ path = fetchurl {
+ name = "union-value-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz";
+ sha1 = "5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4";
+ };
+ }
+
+ {
+ name = "unique-filename-1.1.0.tgz";
+ path = fetchurl {
+ name = "unique-filename-1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.0.tgz";
+ sha1 = "d05f2fe4032560871f30e93cbe735eea201514f3";
+ };
+ }
+
+ {
+ name = "unique-slug-2.0.0.tgz";
+ path = fetchurl {
+ name = "unique-slug-2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.0.tgz";
+ sha1 = "db6676e7c7cc0629878ff196097c78855ae9f4ab";
+ };
+ }
+
+ {
+ name = "unpipe-1.0.0.tgz";
+ path = fetchurl {
+ name = "unpipe-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz";
+ sha1 = "b2bf4ee8514aae6165b4817829d21b2ef49904ec";
+ };
+ }
+
+ {
+ name = "unset-value-1.0.0.tgz";
+ path = fetchurl {
+ name = "unset-value-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz";
+ sha1 = "8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559";
+ };
+ }
+
+ {
+ name = "upath-1.0.2.tgz";
+ path = fetchurl {
+ name = "upath-1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/upath/-/upath-1.0.2.tgz";
+ sha1 = "80aaae5395abc5fd402933ae2f58694f0860204c";
+ };
+ }
+
+ {
+ name = "upper-case-1.1.3.tgz";
+ path = fetchurl {
+ name = "upper-case-1.1.3.tgz";
+ url = "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz";
+ sha1 = "f6b4501c2ec4cdd26ba78be7222961de77621598";
+ };
+ }
+
+ {
+ name = "urix-0.1.0.tgz";
+ path = fetchurl {
+ name = "urix-0.1.0.tgz";
+ url = "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz";
+ sha1 = "da937f7a62e21fec1fd18d49b35c2935067a6c72";
+ };
+ }
+
+ {
+ name = "url-parse-1.0.5.tgz";
+ path = fetchurl {
+ name = "url-parse-1.0.5.tgz";
+ url = "https://registry.yarnpkg.com/url-parse/-/url-parse-1.0.5.tgz";
+ sha1 = "0854860422afdcfefeb6c965c662d4800169927b";
+ };
+ }
+
+ {
+ name = "url-parse-1.2.0.tgz";
+ path = fetchurl {
+ name = "url-parse-1.2.0.tgz";
+ url = "https://registry.yarnpkg.com/url-parse/-/url-parse-1.2.0.tgz";
+ sha1 = "3a19e8aaa6d023ddd27dcc44cb4fc8f7fec23986";
+ };
+ }
+
+ {
+ name = "url-0.11.0.tgz";
+ path = fetchurl {
+ name = "url-0.11.0.tgz";
+ url = "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz";
+ sha1 = "3838e97cfc60521eb73c525a8e55bfdd9e2e28f1";
+ };
+ }
+
+ {
+ name = "use-2.0.2.tgz";
+ path = fetchurl {
+ name = "use-2.0.2.tgz";
+ url = "https://registry.yarnpkg.com/use/-/use-2.0.2.tgz";
+ sha1 = "ae28a0d72f93bf22422a18a2e379993112dec8e8";
+ };
+ }
+
+ {
+ name = "util-deprecate-1.0.2.tgz";
+ path = fetchurl {
+ name = "util-deprecate-1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz";
+ sha1 = "450d4dc9fa70de732762fbd2d4a28981419a0ccf";
+ };
+ }
+
+ {
+ name = "util-0.10.3.tgz";
+ path = fetchurl {
+ name = "util-0.10.3.tgz";
+ url = "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz";
+ sha1 = "7afb1afe50805246489e3db7fe0ed379336ac0f9";
+ };
+ }
+
+ {
+ name = "utila-0.3.3.tgz";
+ path = fetchurl {
+ name = "utila-0.3.3.tgz";
+ url = "https://registry.yarnpkg.com/utila/-/utila-0.3.3.tgz";
+ sha1 = "d7e8e7d7e309107092b05f8d9688824d633a4226";
+ };
+ }
+
+ {
+ name = "utila-0.4.0.tgz";
+ path = fetchurl {
+ name = "utila-0.4.0.tgz";
+ url = "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz";
+ sha1 = "8a16a05d445657a3aea5eecc5b12a4fa5379772c";
+ };
+ }
+
+ {
+ name = "utils-merge-1.0.1.tgz";
+ path = fetchurl {
+ name = "utils-merge-1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz";
+ sha1 = "9f95710f50a267947b2ccc124741c1028427e713";
+ };
+ }
+
+ {
+ name = "uuid-3.2.1.tgz";
+ path = fetchurl {
+ name = "uuid-3.2.1.tgz";
+ url = "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz";
+ sha1 = "12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14";
+ };
+ }
+
+ {
+ name = "validate-npm-package-license-3.0.1.tgz";
+ path = fetchurl {
+ name = "validate-npm-package-license-3.0.1.tgz";
+ url = "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz";
+ sha1 = "2804babe712ad3379459acfbe24746ab2c303fbc";
+ };
+ }
+
+ {
+ name = "vary-1.1.2.tgz";
+ path = fetchurl {
+ name = "vary-1.1.2.tgz";
+ url = "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz";
+ sha1 = "2299f02c6ded30d4a5961b0b9f74524a18f634fc";
+ };
+ }
+
+ {
+ name = "verror-1.10.0.tgz";
+ path = fetchurl {
+ name = "verror-1.10.0.tgz";
+ url = "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz";
+ sha1 = "3a105ca17053af55d6e270c1f8288682e18da400";
+ };
+ }
+
+ {
+ name = "vlq-0.2.3.tgz";
+ path = fetchurl {
+ name = "vlq-0.2.3.tgz";
+ url = "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz";
+ sha1 = "8f3e4328cf63b1540c0d67e1b2778386f8975b26";
+ };
+ }
+
+ {
+ name = "vlq-1.0.0.tgz";
+ path = fetchurl {
+ name = "vlq-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/vlq/-/vlq-1.0.0.tgz";
+ sha1 = "8101be90843422954c2b13eb27f2f3122bdcc806";
+ };
+ }
+
+ {
+ name = "vm-browserify-0.0.4.tgz";
+ path = fetchurl {
+ name = "vm-browserify-0.0.4.tgz";
+ url = "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz";
+ sha1 = "5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73";
+ };
+ }
+
+ {
+ name = "watchpack-1.4.0.tgz";
+ path = fetchurl {
+ name = "watchpack-1.4.0.tgz";
+ url = "https://registry.yarnpkg.com/watchpack/-/watchpack-1.4.0.tgz";
+ sha1 = "4a1472bcbb952bd0a9bb4036801f954dfb39faac";
+ };
+ }
+
+ {
+ name = "wbuf-1.7.2.tgz";
+ path = fetchurl {
+ name = "wbuf-1.7.2.tgz";
+ url = "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.2.tgz";
+ sha1 = "d697b99f1f59512df2751be42769c1580b5801fe";
+ };
+ }
+
+ {
+ name = "webpack-dev-middleware-1.12.2.tgz";
+ path = fetchurl {
+ name = "webpack-dev-middleware-1.12.2.tgz";
+ url = "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz";
+ sha1 = "f8fc1120ce3b4fc5680ceecb43d777966b21105e";
+ };
+ }
+
+ {
+ name = "webpack-dev-server-2.11.1.tgz";
+ path = fetchurl {
+ name = "webpack-dev-server-2.11.1.tgz";
+ url = "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-2.11.1.tgz";
+ sha1 = "6f9358a002db8403f016e336816f4485384e5ec0";
+ };
+ }
+
+ {
+ name = "webpack-sources-1.1.0.tgz";
+ path = fetchurl {
+ name = "webpack-sources-1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.1.0.tgz";
+ sha1 = "a101ebae59d6507354d71d8013950a3a8b7a5a54";
+ };
+ }
+
+ {
+ name = "webpack-3.10.0.tgz";
+ path = fetchurl {
+ name = "webpack-3.10.0.tgz";
+ url = "https://registry.yarnpkg.com/webpack/-/webpack-3.10.0.tgz";
+ sha1 = "5291b875078cf2abf42bdd23afe3f8f96c17d725";
+ };
+ }
+
+ {
+ name = "webpack-3.11.0.tgz";
+ path = fetchurl {
+ name = "webpack-3.11.0.tgz";
+ url = "https://registry.yarnpkg.com/webpack/-/webpack-3.11.0.tgz";
+ sha1 = "77da451b1d7b4b117adaf41a1a93b5742f24d894";
+ };
+ }
+
+ {
+ name = "websocket-driver-0.7.0.tgz";
+ path = fetchurl {
+ name = "websocket-driver-0.7.0.tgz";
+ url = "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.0.tgz";
+ sha1 = "0caf9d2d755d93aee049d4bdd0d3fe2cca2a24eb";
+ };
+ }
+
+ {
+ name = "websocket-extensions-0.1.3.tgz";
+ path = fetchurl {
+ name = "websocket-extensions-0.1.3.tgz";
+ url = "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz";
+ sha1 = "5d2ff22977003ec687a4b87073dfbbac146ccf29";
+ };
+ }
+
+ {
+ name = "websocket-1.0.25.tgz";
+ path = fetchurl {
+ name = "websocket-1.0.25.tgz";
+ url = "https://registry.yarnpkg.com/websocket/-/websocket-1.0.25.tgz";
+ sha1 = "998ec790f0a3eacb8b08b50a4350026692a11958";
+ };
+ }
+
+ {
+ name = "which-module-1.0.0.tgz";
+ path = fetchurl {
+ name = "which-module-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz";
+ sha1 = "bba63ca861948994ff307736089e3b96026c2a4f";
+ };
+ }
+
+ {
+ name = "which-module-2.0.0.tgz";
+ path = fetchurl {
+ name = "which-module-2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz";
+ sha1 = "d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a";
+ };
+ }
+
+ {
+ name = "which-1.3.0.tgz";
+ path = fetchurl {
+ name = "which-1.3.0.tgz";
+ url = "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz";
+ sha1 = "ff04bdfc010ee547d780bec38e1ac1c2777d253a";
+ };
+ }
+
+ {
+ name = "wide-align-1.1.2.tgz";
+ path = fetchurl {
+ name = "wide-align-1.1.2.tgz";
+ url = "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz";
+ sha1 = "571e0f1b0604636ebc0dfc21b0339bbe31341710";
+ };
+ }
+
+ {
+ name = "window-size-0.1.0.tgz";
+ path = fetchurl {
+ name = "window-size-0.1.0.tgz";
+ url = "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz";
+ sha1 = "5438cd2ea93b202efa3a19fe8887aee7c94f9c9d";
+ };
+ }
+
+ {
+ name = "wordwrap-0.0.2.tgz";
+ path = fetchurl {
+ name = "wordwrap-0.0.2.tgz";
+ url = "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz";
+ sha1 = "b79669bb42ecb409f83d583cad52ca17eaa1643f";
+ };
+ }
+
+ {
+ name = "wordwrap-1.0.0.tgz";
+ path = fetchurl {
+ name = "wordwrap-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz";
+ sha1 = "27584810891456a4171c8d0226441ade90cbcaeb";
+ };
+ }
+
+ {
+ name = "worker-farm-1.5.2.tgz";
+ path = fetchurl {
+ name = "worker-farm-1.5.2.tgz";
+ url = "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.5.2.tgz";
+ sha1 = "32b312e5dc3d5d45d79ef44acc2587491cd729ae";
+ };
+ }
+
+ {
+ name = "wrap-ansi-2.1.0.tgz";
+ path = fetchurl {
+ name = "wrap-ansi-2.1.0.tgz";
+ url = "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz";
+ sha1 = "d8fc3d284dd05794fe84973caecdd1cf824fdd85";
+ };
+ }
+
+ {
+ name = "wrappy-1.0.2.tgz";
+ path = fetchurl {
+ name = "wrappy-1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz";
+ sha1 = "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f";
+ };
+ }
+
+ {
+ name = "write-0.2.1.tgz";
+ path = fetchurl {
+ name = "write-0.2.1.tgz";
+ url = "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz";
+ sha1 = "5fc03828e264cea3fe91455476f7a3c566cb0757";
+ };
+ }
+
+ {
+ name = "xml-char-classes-1.0.0.tgz";
+ path = fetchurl {
+ name = "xml-char-classes-1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/xml-char-classes/-/xml-char-classes-1.0.0.tgz";
+ sha1 = "64657848a20ffc5df583a42ad8a277b4512bbc4d";
+ };
+ }
+
+ {
+ name = "xtend-4.0.1.tgz";
+ path = fetchurl {
+ name = "xtend-4.0.1.tgz";
+ url = "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz";
+ sha1 = "a5c6d532be656e23db820efb943a1f04998d63af";
+ };
+ }
+
+ {
+ name = "y18n-3.2.1.tgz";
+ path = fetchurl {
+ name = "y18n-3.2.1.tgz";
+ url = "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz";
+ sha1 = "6d15fba884c08679c0d77e88e7759e811e07fa41";
+ };
+ }
+
+ {
+ name = "yaeti-0.0.6.tgz";
+ path = fetchurl {
+ name = "yaeti-0.0.6.tgz";
+ url = "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz";
+ sha1 = "f26f484d72684cf42bedfb76970aa1608fbf9577";
+ };
+ }
+
+ {
+ name = "yallist-2.1.2.tgz";
+ path = fetchurl {
+ name = "yallist-2.1.2.tgz";
+ url = "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz";
+ sha1 = "1c11f9218f076089a47dd512f93c6699a6a81d52";
+ };
+ }
+
+ {
+ name = "yargs-parser-4.2.1.tgz";
+ path = fetchurl {
+ name = "yargs-parser-4.2.1.tgz";
+ url = "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz";
+ sha1 = "29cceac0dc4f03c6c87b4a9f217dd18c9f74871c";
+ };
+ }
+
+ {
+ name = "yargs-parser-7.0.0.tgz";
+ path = fetchurl {
+ name = "yargs-parser-7.0.0.tgz";
+ url = "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz";
+ sha1 = "8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9";
+ };
+ }
+
+ {
+ name = "yargs-6.6.0.tgz";
+ path = fetchurl {
+ name = "yargs-6.6.0.tgz";
+ url = "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz";
+ sha1 = "782ec21ef403345f830a808ca3d513af56065208";
+ };
+ }
+
+ {
+ name = "yargs-8.0.2.tgz";
+ path = fetchurl {
+ name = "yargs-8.0.2.tgz";
+ url = "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz";
+ sha1 = "6299a9055b1cefc969ff7e79c1d918dceb22c360";
+ };
+ }
+
+ {
+ name = "yargs-3.10.0.tgz";
+ path = fetchurl {
+ name = "yargs-3.10.0.tgz";
+ url = "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz";
+ sha1 = "f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1";
+ };
+ }
+ ];
+}
diff --git a/ofborg/ofborg-viewer/yarn2nix.json b/ofborg/ofborg-viewer/yarn2nix.json
new file mode 100644
index 0000000000..9f805f6002
--- /dev/null
+++ b/ofborg/ofborg-viewer/yarn2nix.json
@@ -0,0 +1,7 @@
+{
+ "url": "https://github.com/moretea/yarn2nix.git",
+ "rev": "d6e05a521bd92b2647bb7e853363d234f21b2cfd",
+ "date": "2017-12-28T22:35:38+00:00",
+ "sha256": "1nvpii9p41vrb6zvr8rqcvmycrl6lnzzaif85qj1aavizncgb4wy",
+ "fetchSubmodules": true
+}