├── .github └── main.workflow ├── .gitignore ├── .prettierrc ├── constants.js ├── index.js ├── logo.png ├── package.json ├── readme.md ├── scripts ├── build.sh └── compress.js ├── tfjs-node ├── index.js ├── package.json └── yarn.lock └── yarn.lock /.github/main.workflow: -------------------------------------------------------------------------------- 1 | workflow "build and publish" { 2 | on = "push" 3 | resolves = ["publish"] 4 | } 5 | 6 | action "tag" { 7 | uses = "actions/bin/filter@master" 8 | args = "tag" 9 | } 10 | 11 | action "build" { 12 | needs = "tag" 13 | uses = "docker://lambci/lambda:build-nodejs8.10" 14 | runs = ["./scripts/build.sh"] 15 | } 16 | 17 | action "publish" { 18 | needs = "build" 19 | uses = "actions/npm@master" 20 | args = "publish --access public" 21 | secrets = ["NPM_AUTH_TOKEN"] 22 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | tfjs-node.br -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "semi": false, 3 | "singleQuote": true 4 | } 5 | -------------------------------------------------------------------------------- /constants.js: -------------------------------------------------------------------------------- 1 | const { resolve: pathResolve } = require('path') 2 | 3 | const TFJS_PATH = '/tmp/tfjs-node' 4 | const TAR_PATH = pathResolve(__dirname, 'tfjs-node.br') 5 | 6 | module.exports = { TFJS_PATH, TAR_PATH } 7 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | const tar = require('tar') 2 | const iltorb = require('iltorb') 3 | const fs = require('fs') 4 | const { TFJS_PATH, TAR_PATH } = require('./constants') 5 | 6 | // this hack is required to avoid webpack/rollup/... bundling the required path 7 | const requireFunc = 8 | typeof __webpack_require__ === 'function' ? __non_webpack_require__ : require 9 | 10 | function isLambda() { 11 | // check for `now dev` environment first 12 | // because `now dev` sets AWS_LAMBDA_FUNCTION_NAME 13 | if (process.env.NOW_REGION === 'dev1') return false 14 | 15 | return Boolean(process.env.AWS_LAMBDA_FUNCTION_NAME) 16 | } 17 | 18 | async function requireTf() { 19 | const tf = requireFunc(TFJS_PATH) 20 | tf.disableDeprecationWarnings() 21 | return tf 22 | } 23 | 24 | async function createTfPromise() { 25 | // if not in lambda environment, just require the actual package 26 | // this is useful as a way to bypass tensorflow-lambda in development 27 | if (!isLambda()) { 28 | return requireFunc('@tensorflow/tfjs-node') 29 | } 30 | 31 | // if tfjs-node already exists, just require it 32 | if (fs.existsSync(TFJS_PATH)) { 33 | return requireTf() 34 | } 35 | 36 | // else, create the folder and deflate tfjs-node 37 | fs.mkdirSync(TFJS_PATH) 38 | 39 | // unzip tfjs-node 40 | await new Promise((resolve, reject) => { 41 | const x = tar.x({ cwd: TFJS_PATH }) 42 | 43 | x.on('finish', resolve) 44 | x.on('error', reject) 45 | 46 | fs.createReadStream(TAR_PATH) 47 | .pipe(iltorb.decompressStream()) 48 | .pipe(x) 49 | }) 50 | 51 | return requireTf() 52 | } 53 | 54 | let tfPromise 55 | 56 | module.exports = function loadTf() { 57 | if (!tfPromise) { 58 | tfPromise = createTfPromise() 59 | } 60 | 61 | return tfPromise 62 | } 63 | -------------------------------------------------------------------------------- /logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lucleray/tensorflow-lambda/6f371e19740997ddedd00df991450963b897952e/logo.png -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "tensorflow-lambda", 3 | "description": "Run tensorflow on lambda", 4 | "version": "1.0.2", 5 | "main": "index.js", 6 | "author": "lucleray", 7 | "homepage": "https://github.com/lucleray/tensorflow-lambda#readme", 8 | "bugs": { 9 | "url": "https://github.com/lucleray/tensorflow-lambda/issues" 10 | }, 11 | "repository": { 12 | "type": "git", 13 | "url": "https://github.com/lucleray/tensorflow-lambda.git" 14 | }, 15 | "license": "MIT", 16 | "keywords": [ 17 | "tensorflow", 18 | "nodejs", 19 | "lambda" 20 | ], 21 | "files": [ 22 | "index.js", 23 | "constants.js", 24 | "tfjs-node.br" 25 | ], 26 | "scripts": { 27 | "build": "node build.js" 28 | }, 29 | "dependencies": { 30 | "iltorb": "^2.4.2", 31 | "tar": "^4.4.8" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # tensorflow-lambda 2 | 3 |
4 | 5 |
6 | 7 | ## Usage 8 | 9 | First, install the package: 10 | 11 | ``` 12 | yarn add tensorflow-lambda 13 | ``` 14 | 15 | You can then use it like this: 16 | 17 | ```js 18 | const loadTf = require('tensorflow-lambda') 19 | 20 | const tf = await loadTf() 21 | 22 | // you get the same `tf` object that would get if you were doing: 23 | // const tf = require('@tensorflow/tfjs') 24 | 25 | tf.tensor([1, 2, 3, 4]).print() 26 | ``` 27 | 28 | Have a look at these examples : 29 | 30 | - [object-detection](https://github.com/lucleray/object-detection) (deployed with Vercel) 31 | 32 | ## Local usage 33 | 34 | When not used in a lambda environment (for example, locally on your computer when you're developing), `tensorflow-lambda` will require `@tensorflow/tfjs-node` instead of deflating a pre-compiled version in `/tmp`. 35 | 36 | Therefore, you need to install `@tensorflow/tfjs-node` to use this package locally: 37 | 38 | ``` 39 | yarn add @tensorflow/tfjs-node --dev 40 | ``` 41 | 42 | You can then use the package the same way you would use it in a lambda environment locally. 43 | 44 | Have a look at [these lines](https://github.com/lucleray/tensorflow-lambda/blob/c056a3959c117d40cc69a1e76572c856b5d23cd6/index.js#L10-L16) to understand how it detects if it runs in a lambda environement. 45 | 46 | ## How it works ? 47 | 48 | The package contains a zipped and compressed version of all the dependencies and binaries needed to run `@tensorflow/tfjs-node` on AWS Lambda (these dependencies are built with Github Actions). 49 | 50 | During cold start, the files are deflated in `/tmp` and required in your node program. 51 | 52 | ## Motivation 53 | 54 | `@tensorflow/tfjs` works with AWS Lambda but the main problem is that it is slow very slow when used in node. On the other hand, `@tensorflow/tfjs-node` is fast when used with node but it is >140mo and it does not fit under AWS Lambda's size limit (50mo) and it needs to be pre-compiled for lambda for it to work in a lambda environment. 55 | 56 | I was looking for an easy way to use tensorflowjs with lambda and I couldn't find any, so I made this package. 57 | -------------------------------------------------------------------------------- /scripts/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # install packages in the root repository 4 | # this is necessary for scripts/compress.js to work 5 | cd $GITHUB_WORKSPACE 6 | npm install 7 | 8 | # copy tfjs-node folder to /tmp and npm install tfjs-node there 9 | # npm install will download/build binaries for tf to run on lambda 10 | cp -R $GITHUB_WORKSPACE/tfjs-node /tmp/tfjs-node 11 | cd /tmp/tfjs-node 12 | npm install 13 | 14 | # inflate all the files built in /tmp/tfjs-node 15 | # and compress it with brotli 16 | cd $GITHUB_WORKSPACE 17 | node scripts/compress.js 18 | -------------------------------------------------------------------------------- /scripts/compress.js: -------------------------------------------------------------------------------- 1 | const tar = require('tar') 2 | const iltorb = require('iltorb') 3 | const fs = require('fs') 4 | const { TFJS_PATH, TAR_PATH } = require('../constants') 5 | 6 | tar 7 | .c({ cwd: TFJS_PATH }, ['index.js', 'node_modules']) 8 | .pipe(iltorb.compressStream()) 9 | .pipe(fs.createWriteStream(TAR_PATH)) 10 | -------------------------------------------------------------------------------- /tfjs-node/index.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@tensorflow/tfjs-node') 2 | -------------------------------------------------------------------------------- /tfjs-node/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "build", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "dependencies": { 7 | "@tensorflow/tfjs-node": "0.3.2" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /tfjs-node/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": 6 | version "1.1.2" 7 | resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" 8 | integrity sha1-m4sMxmPWaafY9vXQiToU00jzD78= 9 | 10 | "@protobufjs/base64@^1.1.2": 11 | version "1.1.2" 12 | resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" 13 | integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== 14 | 15 | "@protobufjs/codegen@^2.0.4": 16 | version "2.0.4" 17 | resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" 18 | integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== 19 | 20 | "@protobufjs/eventemitter@^1.1.0": 21 | version "1.1.0" 22 | resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" 23 | integrity sha1-NVy8mLr61ZePntCV85diHx0Ga3A= 24 | 25 | "@protobufjs/fetch@^1.1.0": 26 | version "1.1.0" 27 | resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" 28 | integrity sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU= 29 | dependencies: 30 | "@protobufjs/aspromise" "^1.1.1" 31 | "@protobufjs/inquire" "^1.1.0" 32 | 33 | "@protobufjs/float@^1.0.2": 34 | version "1.0.2" 35 | resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" 36 | integrity sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E= 37 | 38 | "@protobufjs/inquire@^1.1.0": 39 | version "1.1.0" 40 | resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" 41 | integrity sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik= 42 | 43 | "@protobufjs/path@^1.1.2": 44 | version "1.1.2" 45 | resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" 46 | integrity sha1-bMKyDFya1q0NzP0hynZz2Nf79o0= 47 | 48 | "@protobufjs/pool@^1.1.0": 49 | version "1.1.0" 50 | resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" 51 | integrity sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q= 52 | 53 | "@protobufjs/utf8@^1.1.0": 54 | version "1.1.0" 55 | resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" 56 | integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA= 57 | 58 | "@tensorflow/tfjs-converter@0.8.4": 59 | version "0.8.4" 60 | resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-converter/-/tfjs-converter-0.8.4.tgz#7c1326e9858c6c3a6d23947e31a73e9458450a9b" 61 | integrity sha512-hHTyQiQOeYvFB/zL/jDT51hx+voOoKOVHSAWzPG10G8+H7ljQsRzxj19X/PIk8EUo9TXJT2Aj+/WW0guK+0wJg== 62 | dependencies: 63 | "@types/long" "~3.0.32" 64 | protobufjs "~6.8.6" 65 | 66 | "@tensorflow/tfjs-core@0.15.4": 67 | version "0.15.4" 68 | resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-core/-/tfjs-core-0.15.4.tgz#aaf52acd209476ebde7bd9a37a7c60ec9d067b65" 69 | integrity sha512-CWi6PuWOBfFRRzn4gl4rcCtwHkimYexGaQi5rwF2jPntknT8TIhonkacvuBROEfeq2PEvqKzCWJTU5+AmCj2HQ== 70 | dependencies: 71 | "@types/seedrandom" "2.4.27" 72 | "@types/webgl-ext" "0.0.30" 73 | "@types/webgl2" "0.0.4" 74 | seedrandom "2.4.3" 75 | 76 | "@tensorflow/tfjs-data@0.2.3": 77 | version "0.2.3" 78 | resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-data/-/tfjs-data-0.2.3.tgz#67c0cd505485c9b0b6a83cb1c8a24559c5adfa68" 79 | integrity sha512-U9eDD35i0jFQtbm90XMP+dVEwaE0hCrhbt6OEpDCTYxdCLOMDnKVmx+q2TOoCPvTxToC6jHOMPKXO23bLAJsxw== 80 | dependencies: 81 | "@types/node-fetch" "^2.1.2" 82 | node-fetch "~2.1.2" 83 | seedrandom "~2.4.3" 84 | 85 | "@tensorflow/tfjs-layers@0.10.3": 86 | version "0.10.3" 87 | resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-layers/-/tfjs-layers-0.10.3.tgz#cf4001b5b7566b1526e65e615439e85070a1012c" 88 | integrity sha512-Xhaz4+ZuL2SEm3S0u4x04dMYMrcG4w4dhMOjoQW8GhAJU4p7LkmP9TmwMEHp7CIVJiJzzQy7Hg8E5fESEnJinA== 89 | 90 | "@tensorflow/tfjs-node@0.3.2": 91 | version "0.3.2" 92 | resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-node/-/tfjs-node-0.3.2.tgz#b1108bf2ea908a12acd5731a18de8cb07f38b3e4" 93 | integrity sha512-N1v+DtCM3A0awDKf8lmRkHzq4LrqcWt969Ci77sXMdxC2eWqkO6t+eG4c+nlCy9RoclZo4JFwqq1MPf1dO6t+A== 94 | dependencies: 95 | "@tensorflow/tfjs" "~0.15.3" 96 | adm-zip "^0.4.11" 97 | bindings "~1.3.0" 98 | https-proxy-agent "^2.2.1" 99 | node-fetch "^2.3.0" 100 | progress "^2.0.0" 101 | rimraf "^2.6.2" 102 | tar "^4.4.6" 103 | 104 | "@tensorflow/tfjs@~0.15.3": 105 | version "0.15.3" 106 | resolved "https://registry.yarnpkg.com/@tensorflow/tfjs/-/tfjs-0.15.3.tgz#6608833952858c8984f20962eb86624f99196f06" 107 | integrity sha512-NBAs+iGBNBxprm98mk488EfTDl2kA/lzNguoQGEMeIPWVHTbadSn2QV5xXKAf/fcOat+JwVfqe2vxHBbTjHMOw== 108 | dependencies: 109 | "@tensorflow/tfjs-converter" "0.8.4" 110 | "@tensorflow/tfjs-core" "0.15.4" 111 | "@tensorflow/tfjs-data" "0.2.3" 112 | "@tensorflow/tfjs-layers" "0.10.3" 113 | 114 | "@types/long@^4.0.0": 115 | version "4.0.0" 116 | resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.0.tgz#719551d2352d301ac8b81db732acb6bdc28dbdef" 117 | integrity sha512-1w52Nyx4Gq47uuu0EVcsHBxZFJgurQ+rTKS3qMHxR1GY2T8c2AJYd6vZoZ9q1rupaDjU0yT+Jc2XTyXkjeMA+Q== 118 | 119 | "@types/long@~3.0.32": 120 | version "3.0.32" 121 | resolved "https://registry.yarnpkg.com/@types/long/-/long-3.0.32.tgz#f4e5af31e9e9b196d8e5fca8a5e2e20aa3d60b69" 122 | integrity sha512-ZXyOOm83p7X8p3s0IYM3VeueNmHpkk/yMlP8CLeOnEcu6hIwPH7YjZBvhQkR0ZFS2DqZAxKtJ/M5fcuv3OU5BA== 123 | 124 | "@types/node-fetch@^2.1.2": 125 | version "2.1.6" 126 | resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.1.6.tgz#4326288b49f352a142f03c63526ebce0f4c50877" 127 | integrity sha512-Hv1jgh3pfpUEl2F2mqUd1AfLSk1YbUCeBJFaP36t7esAO617dErqdxWb5cdG2NfJGOofkmBW36fdx0dVewxDRg== 128 | dependencies: 129 | "@types/node" "*" 130 | 131 | "@types/node@*": 132 | version "11.11.2" 133 | resolved "https://registry.yarnpkg.com/@types/node/-/node-11.11.2.tgz#873d2c3f3824212cc16130074699e1bcb38c0231" 134 | integrity sha512-iEaHiDNkHv4Jrm9O5T37OYEUwjJesiyt6ZlhLFK0sbo4CLD0jyCOB4Pc2F9iD3MbW2397SLNxZKdDGntGaBjQQ== 135 | 136 | "@types/node@^10.1.0": 137 | version "10.14.0" 138 | resolved "https://registry.yarnpkg.com/@types/node/-/node-10.14.0.tgz#1c297530428c6f4e0a0a3222f5b44745669aa9f7" 139 | integrity sha512-1UhSMMDix7bVdUeqtZERQQyJr3QuFoN5X5APtpIooGkumE3crPaeq7UgFeJNjGD8yCQ8od8PzRkgptR5+x327Q== 140 | 141 | "@types/seedrandom@2.4.27": 142 | version "2.4.27" 143 | resolved "https://registry.yarnpkg.com/@types/seedrandom/-/seedrandom-2.4.27.tgz#9db563937dd86915f69092bc43259d2f48578e41" 144 | integrity sha1-nbVjk33YaRX2kJK8QyWdL0hXjkE= 145 | 146 | "@types/webgl-ext@0.0.30": 147 | version "0.0.30" 148 | resolved "https://registry.yarnpkg.com/@types/webgl-ext/-/webgl-ext-0.0.30.tgz#0ce498c16a41a23d15289e0b844d945b25f0fb9d" 149 | integrity sha512-LKVgNmBxN0BbljJrVUwkxwRYqzsAEPcZOe6S2T6ZaBDIrFp0qu4FNlpc5sM1tGbXUYFgdVQIoeLk1Y1UoblyEg== 150 | 151 | "@types/webgl2@0.0.4": 152 | version "0.0.4" 153 | resolved "https://registry.yarnpkg.com/@types/webgl2/-/webgl2-0.0.4.tgz#c3b0f9d6b465c66138e84e64cb3bdf8373c2c279" 154 | integrity sha512-PACt1xdErJbMUOUweSrbVM7gSIYm1vTncW2hF6Os/EeWi6TXYAYMPp+8v6rzHmypE5gHrxaxZNXgMkJVIdZpHw== 155 | 156 | adm-zip@^0.4.11: 157 | version "0.4.13" 158 | resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.13.tgz#597e2f8cc3672151e1307d3e95cddbc75672314a" 159 | integrity sha512-fERNJX8sOXfel6qCBCMPvZLzENBEhZTzKqg6vrOW5pvoEaQuJhRU4ndTAh6lHOxn1I6jnz2NHra56ZODM751uw== 160 | 161 | agent-base@^4.1.0: 162 | version "4.2.1" 163 | resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" 164 | integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg== 165 | dependencies: 166 | es6-promisify "^5.0.0" 167 | 168 | balanced-match@^1.0.0: 169 | version "1.0.0" 170 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 171 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 172 | 173 | bindings@~1.3.0: 174 | version "1.3.1" 175 | resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.3.1.tgz#21fc7c6d67c18516ec5aaa2815b145ff77b26ea5" 176 | integrity sha512-i47mqjF9UbjxJhxGf+pZ6kSxrnI3wBLlnGI2ArWJ4r0VrvDS7ZYXkprq/pLaBWYq4GM0r4zdHY+NNRqEMU7uew== 177 | 178 | brace-expansion@^1.1.7: 179 | version "1.1.11" 180 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 181 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 182 | dependencies: 183 | balanced-match "^1.0.0" 184 | concat-map "0.0.1" 185 | 186 | chownr@^1.1.1: 187 | version "1.1.1" 188 | resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" 189 | integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== 190 | 191 | concat-map@0.0.1: 192 | version "0.0.1" 193 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 194 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 195 | 196 | debug@^3.1.0: 197 | version "3.2.6" 198 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" 199 | integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== 200 | dependencies: 201 | ms "^2.1.1" 202 | 203 | es6-promise@^4.0.3: 204 | version "4.2.6" 205 | resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.6.tgz#b685edd8258886365ea62b57d30de28fadcd974f" 206 | integrity sha512-aRVgGdnmW2OiySVPUC9e6m+plolMAJKjZnQlCwNSuK5yQ0JN61DZSO1X1Ufd1foqWRAlig0rhduTCHe7sVtK5Q== 207 | 208 | es6-promisify@^5.0.0: 209 | version "5.0.0" 210 | resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" 211 | integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= 212 | dependencies: 213 | es6-promise "^4.0.3" 214 | 215 | fs-minipass@^1.2.5: 216 | version "1.2.5" 217 | resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" 218 | integrity sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ== 219 | dependencies: 220 | minipass "^2.2.1" 221 | 222 | fs.realpath@^1.0.0: 223 | version "1.0.0" 224 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 225 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 226 | 227 | glob@^7.1.3: 228 | version "7.1.3" 229 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" 230 | integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== 231 | dependencies: 232 | fs.realpath "^1.0.0" 233 | inflight "^1.0.4" 234 | inherits "2" 235 | minimatch "^3.0.4" 236 | once "^1.3.0" 237 | path-is-absolute "^1.0.0" 238 | 239 | https-proxy-agent@^2.2.1: 240 | version "2.2.1" 241 | resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz#51552970fa04d723e04c56d04178c3f92592bbc0" 242 | integrity sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ== 243 | dependencies: 244 | agent-base "^4.1.0" 245 | debug "^3.1.0" 246 | 247 | inflight@^1.0.4: 248 | version "1.0.6" 249 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 250 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 251 | dependencies: 252 | once "^1.3.0" 253 | wrappy "1" 254 | 255 | inherits@2: 256 | version "2.0.3" 257 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 258 | integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= 259 | 260 | long@^4.0.0: 261 | version "4.0.0" 262 | resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" 263 | integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== 264 | 265 | minimatch@^3.0.4: 266 | version "3.0.4" 267 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 268 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 269 | dependencies: 270 | brace-expansion "^1.1.7" 271 | 272 | minimist@0.0.8: 273 | version "0.0.8" 274 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 275 | integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= 276 | 277 | minipass@^2.2.1, minipass@^2.3.4: 278 | version "2.3.5" 279 | resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" 280 | integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA== 281 | dependencies: 282 | safe-buffer "^5.1.2" 283 | yallist "^3.0.0" 284 | 285 | minizlib@^1.1.1: 286 | version "1.2.1" 287 | resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614" 288 | integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA== 289 | dependencies: 290 | minipass "^2.2.1" 291 | 292 | mkdirp@^0.5.0: 293 | version "0.5.1" 294 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 295 | integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= 296 | dependencies: 297 | minimist "0.0.8" 298 | 299 | ms@^2.1.1: 300 | version "2.1.1" 301 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" 302 | integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== 303 | 304 | node-fetch@^2.3.0: 305 | version "2.3.0" 306 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.3.0.tgz#1a1d940bbfb916a1d3e0219f037e89e71f8c5fa5" 307 | integrity sha512-MOd8pV3fxENbryESLgVIeaGKrdl+uaYhCSSVkjeOb/31/njTpcis5aWfdqgNlHIrKOLRbMnfPINPOML2CIFeXA== 308 | 309 | node-fetch@~2.1.2: 310 | version "2.1.2" 311 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.1.2.tgz#ab884e8e7e57e38a944753cec706f788d1768bb5" 312 | integrity sha1-q4hOjn5X44qUR1POxwb3iNF2i7U= 313 | 314 | once@^1.3.0: 315 | version "1.4.0" 316 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 317 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 318 | dependencies: 319 | wrappy "1" 320 | 321 | path-is-absolute@^1.0.0: 322 | version "1.0.1" 323 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 324 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 325 | 326 | progress@^2.0.0: 327 | version "2.0.3" 328 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" 329 | integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== 330 | 331 | protobufjs@~6.8.6: 332 | version "6.8.8" 333 | resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.8.8.tgz#c8b4f1282fd7a90e6f5b109ed11c84af82908e7c" 334 | integrity sha512-AAmHtD5pXgZfi7GMpllpO3q1Xw1OYldr+dMUlAnffGTAhqkg72WdmSY71uKBF/JuyiKs8psYbtKrhi0ASCD8qw== 335 | dependencies: 336 | "@protobufjs/aspromise" "^1.1.2" 337 | "@protobufjs/base64" "^1.1.2" 338 | "@protobufjs/codegen" "^2.0.4" 339 | "@protobufjs/eventemitter" "^1.1.0" 340 | "@protobufjs/fetch" "^1.1.0" 341 | "@protobufjs/float" "^1.0.2" 342 | "@protobufjs/inquire" "^1.1.0" 343 | "@protobufjs/path" "^1.1.2" 344 | "@protobufjs/pool" "^1.1.0" 345 | "@protobufjs/utf8" "^1.1.0" 346 | "@types/long" "^4.0.0" 347 | "@types/node" "^10.1.0" 348 | long "^4.0.0" 349 | 350 | rimraf@^2.6.2: 351 | version "2.6.3" 352 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" 353 | integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== 354 | dependencies: 355 | glob "^7.1.3" 356 | 357 | safe-buffer@^5.1.2: 358 | version "5.1.2" 359 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 360 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 361 | 362 | seedrandom@2.4.3: 363 | version "2.4.3" 364 | resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-2.4.3.tgz#2438504dad33917314bff18ac4d794f16d6aaecc" 365 | integrity sha1-JDhQTa0zkXMUv/GKxNeU8W1qrsw= 366 | 367 | seedrandom@~2.4.3: 368 | version "2.4.4" 369 | resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-2.4.4.tgz#b25ea98632c73e45f58b77cfaa931678df01f9ba" 370 | integrity sha512-9A+PDmgm+2du77B5i0Ip2cxOqqHjgNxnBgglxLcX78A2D6c2rTo61z4jnVABpF4cKeDMDG+cmXXvdnqse2VqMA== 371 | 372 | tar@^4.4.6: 373 | version "4.4.8" 374 | resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d" 375 | integrity sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ== 376 | dependencies: 377 | chownr "^1.1.1" 378 | fs-minipass "^1.2.5" 379 | minipass "^2.3.4" 380 | minizlib "^1.1.1" 381 | mkdirp "^0.5.0" 382 | safe-buffer "^5.1.2" 383 | yallist "^3.0.2" 384 | 385 | wrappy@1: 386 | version "1.0.2" 387 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 388 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 389 | 390 | yallist@^3.0.0, yallist@^3.0.2: 391 | version "3.0.3" 392 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" 393 | integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== 394 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": 6 | version "1.1.2" 7 | resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" 8 | integrity sha1-m4sMxmPWaafY9vXQiToU00jzD78= 9 | 10 | "@protobufjs/base64@^1.1.2": 11 | version "1.1.2" 12 | resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" 13 | integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== 14 | 15 | "@protobufjs/codegen@^2.0.4": 16 | version "2.0.4" 17 | resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" 18 | integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== 19 | 20 | "@protobufjs/eventemitter@^1.1.0": 21 | version "1.1.0" 22 | resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" 23 | integrity sha1-NVy8mLr61ZePntCV85diHx0Ga3A= 24 | 25 | "@protobufjs/fetch@^1.1.0": 26 | version "1.1.0" 27 | resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" 28 | integrity sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU= 29 | dependencies: 30 | "@protobufjs/aspromise" "^1.1.1" 31 | "@protobufjs/inquire" "^1.1.0" 32 | 33 | "@protobufjs/float@^1.0.2": 34 | version "1.0.2" 35 | resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" 36 | integrity sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E= 37 | 38 | "@protobufjs/inquire@^1.1.0": 39 | version "1.1.0" 40 | resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" 41 | integrity sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik= 42 | 43 | "@protobufjs/path@^1.1.2": 44 | version "1.1.2" 45 | resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" 46 | integrity sha1-bMKyDFya1q0NzP0hynZz2Nf79o0= 47 | 48 | "@protobufjs/pool@^1.1.0": 49 | version "1.1.0" 50 | resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" 51 | integrity sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q= 52 | 53 | "@protobufjs/utf8@^1.1.0": 54 | version "1.1.0" 55 | resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" 56 | integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA= 57 | 58 | "@tensorflow/tfjs-converter@0.8.4": 59 | version "0.8.4" 60 | resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-converter/-/tfjs-converter-0.8.4.tgz#7c1326e9858c6c3a6d23947e31a73e9458450a9b" 61 | integrity sha512-hHTyQiQOeYvFB/zL/jDT51hx+voOoKOVHSAWzPG10G8+H7ljQsRzxj19X/PIk8EUo9TXJT2Aj+/WW0guK+0wJg== 62 | dependencies: 63 | "@types/long" "~3.0.32" 64 | protobufjs "~6.8.6" 65 | 66 | "@tensorflow/tfjs-core@0.15.4": 67 | version "0.15.4" 68 | resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-core/-/tfjs-core-0.15.4.tgz#aaf52acd209476ebde7bd9a37a7c60ec9d067b65" 69 | integrity sha512-CWi6PuWOBfFRRzn4gl4rcCtwHkimYexGaQi5rwF2jPntknT8TIhonkacvuBROEfeq2PEvqKzCWJTU5+AmCj2HQ== 70 | dependencies: 71 | "@types/seedrandom" "2.4.27" 72 | "@types/webgl-ext" "0.0.30" 73 | "@types/webgl2" "0.0.4" 74 | seedrandom "2.4.3" 75 | 76 | "@tensorflow/tfjs-data@0.2.3": 77 | version "0.2.3" 78 | resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-data/-/tfjs-data-0.2.3.tgz#67c0cd505485c9b0b6a83cb1c8a24559c5adfa68" 79 | integrity sha512-U9eDD35i0jFQtbm90XMP+dVEwaE0hCrhbt6OEpDCTYxdCLOMDnKVmx+q2TOoCPvTxToC6jHOMPKXO23bLAJsxw== 80 | dependencies: 81 | "@types/node-fetch" "^2.1.2" 82 | node-fetch "~2.1.2" 83 | seedrandom "~2.4.3" 84 | 85 | "@tensorflow/tfjs-layers@0.10.3": 86 | version "0.10.3" 87 | resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-layers/-/tfjs-layers-0.10.3.tgz#cf4001b5b7566b1526e65e615439e85070a1012c" 88 | integrity sha512-Xhaz4+ZuL2SEm3S0u4x04dMYMrcG4w4dhMOjoQW8GhAJU4p7LkmP9TmwMEHp7CIVJiJzzQy7Hg8E5fESEnJinA== 89 | 90 | "@tensorflow/tfjs-node@^0.3.2": 91 | version "0.3.2" 92 | resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-node/-/tfjs-node-0.3.2.tgz#b1108bf2ea908a12acd5731a18de8cb07f38b3e4" 93 | integrity sha512-N1v+DtCM3A0awDKf8lmRkHzq4LrqcWt969Ci77sXMdxC2eWqkO6t+eG4c+nlCy9RoclZo4JFwqq1MPf1dO6t+A== 94 | dependencies: 95 | "@tensorflow/tfjs" "~0.15.3" 96 | adm-zip "^0.4.11" 97 | bindings "~1.3.0" 98 | https-proxy-agent "^2.2.1" 99 | node-fetch "^2.3.0" 100 | progress "^2.0.0" 101 | rimraf "^2.6.2" 102 | tar "^4.4.6" 103 | 104 | "@tensorflow/tfjs@~0.15.3": 105 | version "0.15.3" 106 | resolved "https://registry.yarnpkg.com/@tensorflow/tfjs/-/tfjs-0.15.3.tgz#6608833952858c8984f20962eb86624f99196f06" 107 | integrity sha512-NBAs+iGBNBxprm98mk488EfTDl2kA/lzNguoQGEMeIPWVHTbadSn2QV5xXKAf/fcOat+JwVfqe2vxHBbTjHMOw== 108 | dependencies: 109 | "@tensorflow/tfjs-converter" "0.8.4" 110 | "@tensorflow/tfjs-core" "0.15.4" 111 | "@tensorflow/tfjs-data" "0.2.3" 112 | "@tensorflow/tfjs-layers" "0.10.3" 113 | 114 | "@types/long@^4.0.0": 115 | version "4.0.0" 116 | resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.0.tgz#719551d2352d301ac8b81db732acb6bdc28dbdef" 117 | integrity sha512-1w52Nyx4Gq47uuu0EVcsHBxZFJgurQ+rTKS3qMHxR1GY2T8c2AJYd6vZoZ9q1rupaDjU0yT+Jc2XTyXkjeMA+Q== 118 | 119 | "@types/long@~3.0.32": 120 | version "3.0.32" 121 | resolved "https://registry.yarnpkg.com/@types/long/-/long-3.0.32.tgz#f4e5af31e9e9b196d8e5fca8a5e2e20aa3d60b69" 122 | integrity sha512-ZXyOOm83p7X8p3s0IYM3VeueNmHpkk/yMlP8CLeOnEcu6hIwPH7YjZBvhQkR0ZFS2DqZAxKtJ/M5fcuv3OU5BA== 123 | 124 | "@types/node-fetch@^2.1.2": 125 | version "2.1.6" 126 | resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.1.6.tgz#4326288b49f352a142f03c63526ebce0f4c50877" 127 | integrity sha512-Hv1jgh3pfpUEl2F2mqUd1AfLSk1YbUCeBJFaP36t7esAO617dErqdxWb5cdG2NfJGOofkmBW36fdx0dVewxDRg== 128 | dependencies: 129 | "@types/node" "*" 130 | 131 | "@types/node@*": 132 | version "11.11.2" 133 | resolved "https://registry.yarnpkg.com/@types/node/-/node-11.11.2.tgz#873d2c3f3824212cc16130074699e1bcb38c0231" 134 | integrity sha512-iEaHiDNkHv4Jrm9O5T37OYEUwjJesiyt6ZlhLFK0sbo4CLD0jyCOB4Pc2F9iD3MbW2397SLNxZKdDGntGaBjQQ== 135 | 136 | "@types/node@^10.1.0": 137 | version "10.14.0" 138 | resolved "https://registry.yarnpkg.com/@types/node/-/node-10.14.0.tgz#1c297530428c6f4e0a0a3222f5b44745669aa9f7" 139 | integrity sha512-1UhSMMDix7bVdUeqtZERQQyJr3QuFoN5X5APtpIooGkumE3crPaeq7UgFeJNjGD8yCQ8od8PzRkgptR5+x327Q== 140 | 141 | "@types/seedrandom@2.4.27": 142 | version "2.4.27" 143 | resolved "https://registry.yarnpkg.com/@types/seedrandom/-/seedrandom-2.4.27.tgz#9db563937dd86915f69092bc43259d2f48578e41" 144 | integrity sha1-nbVjk33YaRX2kJK8QyWdL0hXjkE= 145 | 146 | "@types/webgl-ext@0.0.30": 147 | version "0.0.30" 148 | resolved "https://registry.yarnpkg.com/@types/webgl-ext/-/webgl-ext-0.0.30.tgz#0ce498c16a41a23d15289e0b844d945b25f0fb9d" 149 | integrity sha512-LKVgNmBxN0BbljJrVUwkxwRYqzsAEPcZOe6S2T6ZaBDIrFp0qu4FNlpc5sM1tGbXUYFgdVQIoeLk1Y1UoblyEg== 150 | 151 | "@types/webgl2@0.0.4": 152 | version "0.0.4" 153 | resolved "https://registry.yarnpkg.com/@types/webgl2/-/webgl2-0.0.4.tgz#c3b0f9d6b465c66138e84e64cb3bdf8373c2c279" 154 | integrity sha512-PACt1xdErJbMUOUweSrbVM7gSIYm1vTncW2hF6Os/EeWi6TXYAYMPp+8v6rzHmypE5gHrxaxZNXgMkJVIdZpHw== 155 | 156 | adm-zip@^0.4.11: 157 | version "0.4.13" 158 | resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.13.tgz#597e2f8cc3672151e1307d3e95cddbc75672314a" 159 | integrity sha512-fERNJX8sOXfel6qCBCMPvZLzENBEhZTzKqg6vrOW5pvoEaQuJhRU4ndTAh6lHOxn1I6jnz2NHra56ZODM751uw== 160 | 161 | agent-base@^4.1.0: 162 | version "4.2.1" 163 | resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" 164 | integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg== 165 | dependencies: 166 | es6-promisify "^5.0.0" 167 | 168 | ansi-regex@^2.0.0: 169 | version "2.1.1" 170 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 171 | integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= 172 | 173 | ansi-regex@^3.0.0: 174 | version "3.0.0" 175 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" 176 | integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= 177 | 178 | aproba@^1.0.3: 179 | version "1.2.0" 180 | resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" 181 | integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== 182 | 183 | are-we-there-yet@~1.1.2: 184 | version "1.1.5" 185 | resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" 186 | integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== 187 | dependencies: 188 | delegates "^1.0.0" 189 | readable-stream "^2.0.6" 190 | 191 | balanced-match@^1.0.0: 192 | version "1.0.0" 193 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 194 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 195 | 196 | bindings@~1.3.0: 197 | version "1.3.1" 198 | resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.3.1.tgz#21fc7c6d67c18516ec5aaa2815b145ff77b26ea5" 199 | integrity sha512-i47mqjF9UbjxJhxGf+pZ6kSxrnI3wBLlnGI2ArWJ4r0VrvDS7ZYXkprq/pLaBWYq4GM0r4zdHY+NNRqEMU7uew== 200 | 201 | bl@^1.0.0: 202 | version "1.2.2" 203 | resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.2.tgz#a160911717103c07410cef63ef51b397c025af9c" 204 | integrity sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA== 205 | dependencies: 206 | readable-stream "^2.3.5" 207 | safe-buffer "^5.1.1" 208 | 209 | brace-expansion@^1.1.7: 210 | version "1.1.11" 211 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 212 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 213 | dependencies: 214 | balanced-match "^1.0.0" 215 | concat-map "0.0.1" 216 | 217 | buffer-alloc-unsafe@^1.1.0: 218 | version "1.1.0" 219 | resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" 220 | integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== 221 | 222 | buffer-alloc@^1.2.0: 223 | version "1.2.0" 224 | resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" 225 | integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== 226 | dependencies: 227 | buffer-alloc-unsafe "^1.1.0" 228 | buffer-fill "^1.0.0" 229 | 230 | buffer-fill@^1.0.0: 231 | version "1.0.0" 232 | resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" 233 | integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= 234 | 235 | chownr@^1.0.1, chownr@^1.1.1: 236 | version "1.1.1" 237 | resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" 238 | integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== 239 | 240 | code-point-at@^1.0.0: 241 | version "1.1.0" 242 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" 243 | integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= 244 | 245 | concat-map@0.0.1: 246 | version "0.0.1" 247 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 248 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 249 | 250 | console-control-strings@^1.0.0, console-control-strings@~1.1.0: 251 | version "1.1.0" 252 | resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" 253 | integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= 254 | 255 | core-util-is@~1.0.0: 256 | version "1.0.2" 257 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 258 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 259 | 260 | debug@^3.1.0: 261 | version "3.2.6" 262 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" 263 | integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== 264 | dependencies: 265 | ms "^2.1.1" 266 | 267 | decompress-response@^3.3.0: 268 | version "3.3.0" 269 | resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" 270 | integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= 271 | dependencies: 272 | mimic-response "^1.0.0" 273 | 274 | deep-extend@^0.6.0: 275 | version "0.6.0" 276 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" 277 | integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== 278 | 279 | delegates@^1.0.0: 280 | version "1.0.0" 281 | resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" 282 | integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= 283 | 284 | detect-libc@^1.0.3: 285 | version "1.0.3" 286 | resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" 287 | integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= 288 | 289 | end-of-stream@^1.0.0, end-of-stream@^1.1.0: 290 | version "1.4.1" 291 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" 292 | integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q== 293 | dependencies: 294 | once "^1.4.0" 295 | 296 | es6-promise@^4.0.3: 297 | version "4.2.6" 298 | resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.6.tgz#b685edd8258886365ea62b57d30de28fadcd974f" 299 | integrity sha512-aRVgGdnmW2OiySVPUC9e6m+plolMAJKjZnQlCwNSuK5yQ0JN61DZSO1X1Ufd1foqWRAlig0rhduTCHe7sVtK5Q== 300 | 301 | es6-promisify@^5.0.0: 302 | version "5.0.0" 303 | resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" 304 | integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= 305 | dependencies: 306 | es6-promise "^4.0.3" 307 | 308 | expand-template@^2.0.3: 309 | version "2.0.3" 310 | resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" 311 | integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== 312 | 313 | fs-constants@^1.0.0: 314 | version "1.0.0" 315 | resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" 316 | integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== 317 | 318 | fs-minipass@^1.2.5: 319 | version "1.2.5" 320 | resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" 321 | integrity sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ== 322 | dependencies: 323 | minipass "^2.2.1" 324 | 325 | fs.realpath@^1.0.0: 326 | version "1.0.0" 327 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 328 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 329 | 330 | gauge@~2.7.3: 331 | version "2.7.4" 332 | resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" 333 | integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= 334 | dependencies: 335 | aproba "^1.0.3" 336 | console-control-strings "^1.0.0" 337 | has-unicode "^2.0.0" 338 | object-assign "^4.1.0" 339 | signal-exit "^3.0.0" 340 | string-width "^1.0.1" 341 | strip-ansi "^3.0.1" 342 | wide-align "^1.1.0" 343 | 344 | github-from-package@0.0.0: 345 | version "0.0.0" 346 | resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" 347 | integrity sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4= 348 | 349 | glob@^7.1.3: 350 | version "7.1.3" 351 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" 352 | integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== 353 | dependencies: 354 | fs.realpath "^1.0.0" 355 | inflight "^1.0.4" 356 | inherits "2" 357 | minimatch "^3.0.4" 358 | once "^1.3.0" 359 | path-is-absolute "^1.0.0" 360 | 361 | has-unicode@^2.0.0: 362 | version "2.0.1" 363 | resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" 364 | integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= 365 | 366 | https-proxy-agent@^2.2.1: 367 | version "2.2.1" 368 | resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz#51552970fa04d723e04c56d04178c3f92592bbc0" 369 | integrity sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ== 370 | dependencies: 371 | agent-base "^4.1.0" 372 | debug "^3.1.0" 373 | 374 | iltorb@^2.4.2: 375 | version "2.4.2" 376 | resolved "https://registry.yarnpkg.com/iltorb/-/iltorb-2.4.2.tgz#51e341045ad5181bf64832a569ec576e7df0faf2" 377 | integrity sha512-RvsVTHt1Pw1/Zcepfd+3jinu38rO8IBFVONcroT9Dwrb5RSNE/CEX7uy1yZKN/kYCQB7FWx/oQgXhN9qAwZY9Q== 378 | dependencies: 379 | detect-libc "^1.0.3" 380 | nan "^2.12.1" 381 | npmlog "^4.1.2" 382 | prebuild-install "^5.2.4" 383 | which-pm-runs "^1.0.0" 384 | 385 | inflight@^1.0.4: 386 | version "1.0.6" 387 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 388 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 389 | dependencies: 390 | once "^1.3.0" 391 | wrappy "1" 392 | 393 | inherits@2, inherits@~2.0.3: 394 | version "2.0.3" 395 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 396 | integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= 397 | 398 | ini@~1.3.0: 399 | version "1.3.5" 400 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" 401 | integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== 402 | 403 | is-fullwidth-code-point@^1.0.0: 404 | version "1.0.0" 405 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" 406 | integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= 407 | dependencies: 408 | number-is-nan "^1.0.0" 409 | 410 | is-fullwidth-code-point@^2.0.0: 411 | version "2.0.0" 412 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 413 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= 414 | 415 | isarray@~1.0.0: 416 | version "1.0.0" 417 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 418 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 419 | 420 | long@^4.0.0: 421 | version "4.0.0" 422 | resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" 423 | integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== 424 | 425 | mimic-response@^1.0.0: 426 | version "1.0.1" 427 | resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" 428 | integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== 429 | 430 | minimatch@^3.0.4: 431 | version "3.0.4" 432 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 433 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 434 | dependencies: 435 | brace-expansion "^1.1.7" 436 | 437 | minimist@0.0.8: 438 | version "0.0.8" 439 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 440 | integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= 441 | 442 | minimist@^1.2.0: 443 | version "1.2.0" 444 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" 445 | integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= 446 | 447 | minipass@^2.2.1, minipass@^2.3.4: 448 | version "2.3.5" 449 | resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" 450 | integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA== 451 | dependencies: 452 | safe-buffer "^5.1.2" 453 | yallist "^3.0.0" 454 | 455 | minizlib@^1.1.1: 456 | version "1.2.1" 457 | resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614" 458 | integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA== 459 | dependencies: 460 | minipass "^2.2.1" 461 | 462 | mkdirp@^0.5.0, mkdirp@^0.5.1: 463 | version "0.5.1" 464 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 465 | integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= 466 | dependencies: 467 | minimist "0.0.8" 468 | 469 | ms@^2.1.1: 470 | version "2.1.1" 471 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" 472 | integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== 473 | 474 | nan@^2.12.1: 475 | version "2.12.1" 476 | resolved "https://registry.yarnpkg.com/nan/-/nan-2.12.1.tgz#7b1aa193e9aa86057e3c7bbd0ac448e770925552" 477 | integrity sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw== 478 | 479 | napi-build-utils@^1.0.1: 480 | version "1.0.1" 481 | resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.1.tgz#1381a0f92c39d66bf19852e7873432fc2123e508" 482 | integrity sha512-boQj1WFgQH3v4clhu3mTNfP+vOBxorDlE8EKiMjUlLG3C4qAESnn9AxIOkFgTR2c9LtzNjPrjS60cT27ZKBhaA== 483 | 484 | node-abi@^2.7.0: 485 | version "2.7.1" 486 | resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.7.1.tgz#a8997ae91176a5fbaa455b194976e32683cda643" 487 | integrity sha512-OV8Bq1OrPh6z+Y4dqwo05HqrRL9YNF7QVMRfq1/pguwKLG+q9UB/Lk0x5qXjO23JjJg+/jqCHSTaG1P3tfKfuw== 488 | dependencies: 489 | semver "^5.4.1" 490 | 491 | node-fetch@^2.3.0: 492 | version "2.3.0" 493 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.3.0.tgz#1a1d940bbfb916a1d3e0219f037e89e71f8c5fa5" 494 | integrity sha512-MOd8pV3fxENbryESLgVIeaGKrdl+uaYhCSSVkjeOb/31/njTpcis5aWfdqgNlHIrKOLRbMnfPINPOML2CIFeXA== 495 | 496 | node-fetch@~2.1.2: 497 | version "2.1.2" 498 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.1.2.tgz#ab884e8e7e57e38a944753cec706f788d1768bb5" 499 | integrity sha1-q4hOjn5X44qUR1POxwb3iNF2i7U= 500 | 501 | noop-logger@^0.1.1: 502 | version "0.1.1" 503 | resolved "https://registry.yarnpkg.com/noop-logger/-/noop-logger-0.1.1.tgz#94a2b1633c4f1317553007d8966fd0e841b6a4c2" 504 | integrity sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI= 505 | 506 | npmlog@^4.0.1, npmlog@^4.1.2: 507 | version "4.1.2" 508 | resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" 509 | integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== 510 | dependencies: 511 | are-we-there-yet "~1.1.2" 512 | console-control-strings "~1.1.0" 513 | gauge "~2.7.3" 514 | set-blocking "~2.0.0" 515 | 516 | number-is-nan@^1.0.0: 517 | version "1.0.1" 518 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" 519 | integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= 520 | 521 | object-assign@^4.1.0: 522 | version "4.1.1" 523 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 524 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= 525 | 526 | once@^1.3.0, once@^1.3.1, once@^1.4.0: 527 | version "1.4.0" 528 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 529 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 530 | dependencies: 531 | wrappy "1" 532 | 533 | os-homedir@^1.0.1: 534 | version "1.0.2" 535 | resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" 536 | integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= 537 | 538 | path-is-absolute@^1.0.0: 539 | version "1.0.1" 540 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 541 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 542 | 543 | prebuild-install@^5.2.4: 544 | version "5.2.5" 545 | resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-5.2.5.tgz#c7485911fe98950b7f7cd15bb9daee11b875cc44" 546 | integrity sha512-6uZgMVg7yDfqlP5CPurVhtq3hUKBFNufiar4J5hZrlHTo59DDBEtyxw01xCdFss9j0Zb9+qzFVf/s4niayba3w== 547 | dependencies: 548 | detect-libc "^1.0.3" 549 | expand-template "^2.0.3" 550 | github-from-package "0.0.0" 551 | minimist "^1.2.0" 552 | mkdirp "^0.5.1" 553 | napi-build-utils "^1.0.1" 554 | node-abi "^2.7.0" 555 | noop-logger "^0.1.1" 556 | npmlog "^4.0.1" 557 | os-homedir "^1.0.1" 558 | pump "^2.0.1" 559 | rc "^1.2.7" 560 | simple-get "^2.7.0" 561 | tar-fs "^1.13.0" 562 | tunnel-agent "^0.6.0" 563 | which-pm-runs "^1.0.0" 564 | 565 | process-nextick-args@~2.0.0: 566 | version "2.0.0" 567 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" 568 | integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== 569 | 570 | progress@^2.0.0: 571 | version "2.0.3" 572 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" 573 | integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== 574 | 575 | protobufjs@~6.8.6: 576 | version "6.8.8" 577 | resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.8.8.tgz#c8b4f1282fd7a90e6f5b109ed11c84af82908e7c" 578 | integrity sha512-AAmHtD5pXgZfi7GMpllpO3q1Xw1OYldr+dMUlAnffGTAhqkg72WdmSY71uKBF/JuyiKs8psYbtKrhi0ASCD8qw== 579 | dependencies: 580 | "@protobufjs/aspromise" "^1.1.2" 581 | "@protobufjs/base64" "^1.1.2" 582 | "@protobufjs/codegen" "^2.0.4" 583 | "@protobufjs/eventemitter" "^1.1.0" 584 | "@protobufjs/fetch" "^1.1.0" 585 | "@protobufjs/float" "^1.0.2" 586 | "@protobufjs/inquire" "^1.1.0" 587 | "@protobufjs/path" "^1.1.2" 588 | "@protobufjs/pool" "^1.1.0" 589 | "@protobufjs/utf8" "^1.1.0" 590 | "@types/long" "^4.0.0" 591 | "@types/node" "^10.1.0" 592 | long "^4.0.0" 593 | 594 | pump@^1.0.0: 595 | version "1.0.3" 596 | resolved "https://registry.yarnpkg.com/pump/-/pump-1.0.3.tgz#5dfe8311c33bbf6fc18261f9f34702c47c08a954" 597 | integrity sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw== 598 | dependencies: 599 | end-of-stream "^1.1.0" 600 | once "^1.3.1" 601 | 602 | pump@^2.0.1: 603 | version "2.0.1" 604 | resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" 605 | integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== 606 | dependencies: 607 | end-of-stream "^1.1.0" 608 | once "^1.3.1" 609 | 610 | rc@^1.2.7: 611 | version "1.2.8" 612 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" 613 | integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== 614 | dependencies: 615 | deep-extend "^0.6.0" 616 | ini "~1.3.0" 617 | minimist "^1.2.0" 618 | strip-json-comments "~2.0.1" 619 | 620 | readable-stream@^2.0.6, readable-stream@^2.3.0, readable-stream@^2.3.5: 621 | version "2.3.6" 622 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" 623 | integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== 624 | dependencies: 625 | core-util-is "~1.0.0" 626 | inherits "~2.0.3" 627 | isarray "~1.0.0" 628 | process-nextick-args "~2.0.0" 629 | safe-buffer "~5.1.1" 630 | string_decoder "~1.1.1" 631 | util-deprecate "~1.0.1" 632 | 633 | rimraf@^2.6.2: 634 | version "2.6.3" 635 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" 636 | integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== 637 | dependencies: 638 | glob "^7.1.3" 639 | 640 | safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: 641 | version "5.1.2" 642 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 643 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 644 | 645 | seedrandom@2.4.3: 646 | version "2.4.3" 647 | resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-2.4.3.tgz#2438504dad33917314bff18ac4d794f16d6aaecc" 648 | integrity sha1-JDhQTa0zkXMUv/GKxNeU8W1qrsw= 649 | 650 | seedrandom@~2.4.3: 651 | version "2.4.4" 652 | resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-2.4.4.tgz#b25ea98632c73e45f58b77cfaa931678df01f9ba" 653 | integrity sha512-9A+PDmgm+2du77B5i0Ip2cxOqqHjgNxnBgglxLcX78A2D6c2rTo61z4jnVABpF4cKeDMDG+cmXXvdnqse2VqMA== 654 | 655 | semver@^5.4.1: 656 | version "5.6.0" 657 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" 658 | integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== 659 | 660 | set-blocking@~2.0.0: 661 | version "2.0.0" 662 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 663 | integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= 664 | 665 | signal-exit@^3.0.0: 666 | version "3.0.2" 667 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" 668 | integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= 669 | 670 | simple-concat@^1.0.0: 671 | version "1.0.0" 672 | resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.0.tgz#7344cbb8b6e26fb27d66b2fc86f9f6d5997521c6" 673 | integrity sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY= 674 | 675 | simple-get@^2.7.0: 676 | version "2.8.1" 677 | resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-2.8.1.tgz#0e22e91d4575d87620620bc91308d57a77f44b5d" 678 | integrity sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw== 679 | dependencies: 680 | decompress-response "^3.3.0" 681 | once "^1.3.1" 682 | simple-concat "^1.0.0" 683 | 684 | string-width@^1.0.1: 685 | version "1.0.2" 686 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" 687 | integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= 688 | dependencies: 689 | code-point-at "^1.0.0" 690 | is-fullwidth-code-point "^1.0.0" 691 | strip-ansi "^3.0.0" 692 | 693 | "string-width@^1.0.2 || 2": 694 | version "2.1.1" 695 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" 696 | integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== 697 | dependencies: 698 | is-fullwidth-code-point "^2.0.0" 699 | strip-ansi "^4.0.0" 700 | 701 | string_decoder@~1.1.1: 702 | version "1.1.1" 703 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 704 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== 705 | dependencies: 706 | safe-buffer "~5.1.0" 707 | 708 | strip-ansi@^3.0.0, strip-ansi@^3.0.1: 709 | version "3.0.1" 710 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 711 | integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= 712 | dependencies: 713 | ansi-regex "^2.0.0" 714 | 715 | strip-ansi@^4.0.0: 716 | version "4.0.0" 717 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" 718 | integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= 719 | dependencies: 720 | ansi-regex "^3.0.0" 721 | 722 | strip-json-comments@~2.0.1: 723 | version "2.0.1" 724 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 725 | integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= 726 | 727 | tar-fs@^1.13.0: 728 | version "1.16.3" 729 | resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-1.16.3.tgz#966a628841da2c4010406a82167cbd5e0c72d509" 730 | integrity sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw== 731 | dependencies: 732 | chownr "^1.0.1" 733 | mkdirp "^0.5.1" 734 | pump "^1.0.0" 735 | tar-stream "^1.1.2" 736 | 737 | tar-stream@^1.1.2: 738 | version "1.6.2" 739 | resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555" 740 | integrity sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A== 741 | dependencies: 742 | bl "^1.0.0" 743 | buffer-alloc "^1.2.0" 744 | end-of-stream "^1.0.0" 745 | fs-constants "^1.0.0" 746 | readable-stream "^2.3.0" 747 | to-buffer "^1.1.1" 748 | xtend "^4.0.0" 749 | 750 | tar@^4.4.6, tar@^4.4.8: 751 | version "4.4.8" 752 | resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d" 753 | integrity sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ== 754 | dependencies: 755 | chownr "^1.1.1" 756 | fs-minipass "^1.2.5" 757 | minipass "^2.3.4" 758 | minizlib "^1.1.1" 759 | mkdirp "^0.5.0" 760 | safe-buffer "^5.1.2" 761 | yallist "^3.0.2" 762 | 763 | to-buffer@^1.1.1: 764 | version "1.1.1" 765 | resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" 766 | integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg== 767 | 768 | tunnel-agent@^0.6.0: 769 | version "0.6.0" 770 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 771 | integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= 772 | dependencies: 773 | safe-buffer "^5.0.1" 774 | 775 | util-deprecate@~1.0.1: 776 | version "1.0.2" 777 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 778 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 779 | 780 | which-pm-runs@^1.0.0: 781 | version "1.0.0" 782 | resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" 783 | integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs= 784 | 785 | wide-align@^1.1.0: 786 | version "1.1.3" 787 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" 788 | integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== 789 | dependencies: 790 | string-width "^1.0.2 || 2" 791 | 792 | wrappy@1: 793 | version "1.0.2" 794 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 795 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 796 | 797 | xtend@^4.0.0: 798 | version "4.0.1" 799 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" 800 | integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68= 801 | 802 | yallist@^3.0.0, yallist@^3.0.2: 803 | version "3.0.3" 804 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" 805 | integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== 806 | --------------------------------------------------------------------------------