├── .gitignore ├── .jshintrc ├── README.md ├── index.js ├── lib ├── block.js ├── coin.js ├── history.js └── wallet.js ├── package-lock.json ├── package.json ├── signflow.txt ├── talk.txt └── test ├── basic.js ├── story.js └── story.txt /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | .DS_Store -------------------------------------------------------------------------------- /.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "browser": true, 3 | "node": true, 4 | "asi" : true, 5 | "esversion": 6 6 | } 7 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Crypto Currency for the Gift Economy 2 | 3 | This is an experimental project with more unknown unknowns than you can shake a stick at. Do not use it to run your business, unless your business is experimental JavaScript crypto "currency" games. 4 | 5 | Document Coin implements a signature-based data provenance tracking system. Restrictions on how viral a given coin can be are configured per-coin by the person who mints the coin. 6 | 7 | To run the test suite: 8 | 9 | ``` 10 | npm install 11 | npm start 12 | ``` 13 | 14 | ### Help wanted. 15 | 16 | If you want to get involved, opening issues is a great way to start. You can also reach out to me on twitter @jchris 17 | 18 | ### Next steps 19 | 20 | * Create a pubic API that works well for all kinds of data. 21 | * Connect to PouchDB 22 | * Make a demo game 23 | 24 | ## License 25 | 26 | Apache 2.0 27 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | exports.Wallet = require("./lib/wallet"); 2 | -------------------------------------------------------------------------------- /lib/block.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | const jose = require("node-jose"); 3 | 4 | class Block { 5 | constructor(content, pubkey) { 6 | this.content = content; 7 | this.pubkey = pubkey; 8 | } 9 | signingContent() { 10 | return this.content + this.pubkey; 11 | } 12 | } 13 | 14 | module.exports = Block; 15 | -------------------------------------------------------------------------------- /lib/coin.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | const jose = require("node-jose"); 3 | const URLSafeBase64 = require('urlsafe-base64'); 4 | 5 | class Coin { 6 | // create a coin with: 7 | // content 8 | // content hash 9 | // create root block 10 | // sign content hash 11 | 12 | constructor() { 13 | // to load a coin that I didn't mint, maybe we load 14 | // from the database and pass in the document here? 15 | } 16 | validate() { 17 | // decrypt content and verify root(s) 18 | 19 | } 20 | mint(content, mintWallet) { 21 | this.content = content; 22 | // todo encrypt content 23 | this.mintKey = mintWallet.signingKey; 24 | 25 | return jose.JWA.digest("SHA-256", this.content).then((contentDigest)=>{ 26 | return this.mintRootBlock(contentDigest, mintWallet).then(()=>{ 27 | return this.rootDigest().then((signatureDigest)=>{ 28 | // The id validates that the coin can only be minted by 29 | // someone who controls the minter keys. 30 | // If the minter mints the same content multiple times the 31 | // history can be merged at the level of the first give. 32 | this.coinID = URLSafeBase64.encode(signatureDigest); 33 | return this; 34 | }) 35 | }) 36 | }) 37 | } 38 | rootDigest() { 39 | const rootBlock = this.givetree[0]; 40 | // console.log("rootBlock",rootBlock,this.givetree); 41 | const blockBuffer = new Buffer(rootBlock, "utf8"); 42 | return jose.JWA.digest("SHA-256", blockBuffer) 43 | } 44 | validateRoot() { 45 | return this.rootDigest().then((signatureDigest) => { 46 | const basedDigest = URLSafeBase64.encode(signatureDigest); 47 | if (this.coinID !== basedDigest) { 48 | throw new Error("invalid coinID " + this.coinID + ", " + basedDigest) 49 | } 50 | }) 51 | } 52 | mintRootBlock(contentDigest, mintWallet) { 53 | const blockData = [URLSafeBase64.encode(contentDigest), mintWallet.signingKey.toJSON()]; 54 | return jose.JWS.createSign({ format: 'compact' }, mintWallet.signingKey). 55 | update(JSON.stringify(blockData), "utf8"). 56 | final(). 57 | then((signedBlock) => { 58 | // The coinID is derived from the root block, and validated, 59 | // so any change in the root block would be a differnt coin. 60 | // There can only be one root 61 | // console.log("signedBlock", signedBlock) 62 | this.givetree = [signedBlock,[]]; 63 | }); 64 | } 65 | mintGiveBlock(parentBlockDigest, receiverKeyJSON, giveWallet) { 66 | const blockData = [URLSafeBase64.encode(parentBlockDigest), receiverKeyJSON]; 67 | return jose.JWS.createSign({ format: 'compact' }, giveWallet.signingKey). 68 | update(JSON.stringify(blockData), "utf8"). 69 | final() 70 | } 71 | give(holder, receiverKeyJSON) { 72 | return this.findHeldBlockNode(holder).then((heldBlockNode) => { 73 | // console.log("heldBlockNode", heldBlockNode) 74 | const rawBlock = heldBlockNode[0]; 75 | const children = heldBlockNode[1]; 76 | console.log(" found give", rawBlock, children) 77 | // TODO validate children.length and coin policy 78 | const blockBuffer = new Buffer(rawBlock, "utf8"); 79 | return jose.JWA.digest("SHA-256", blockBuffer).then((rawBlockDigest)=>{ 80 | return this.mintGiveBlock(rawBlockDigest, receiverKeyJSON, holder).then((block) => { 81 | children.push([block,[]]) 82 | }) 83 | }) 84 | // heldBlockNode[0] 85 | // heldBlockNode[1] append block signed by holder wallet, gives to reciver wallet 86 | }).catch((e)=>{ 87 | console.log("held block not found", e) 88 | }) 89 | } 90 | decodeBlock(block, key) { 91 | return jose.JWS.createVerify(key). 92 | verify(block). 93 | then(function(decoded) { 94 | // console.log(" decodeBlock", decoded) 95 | return decoded; 96 | }) 97 | } 98 | findHeldBlockNode (holder) { 99 | // fold over blocks to find those signed to holder's key\ 100 | console.log("findHeldBlock need to implement fold", holder.signingKey) 101 | return Promise.resolve() 102 | .then( () => { 103 | var myblocks = []; 104 | return this.foldBlockNodes((decodedBlock, rawBlock, children) => { 105 | console.log("decodedBlock", decodedBlock[1].kid, holder.signingKey.kid) 106 | if (decodedBlock[1].kid == holder.signingKey.kid) { 107 | console.log("held Block") 108 | myblocks.push(Promise.resolve([rawBlock, children])) 109 | } 110 | }).then(()=>{ 111 | console.log("myblocks", myblocks) 112 | if (myblocks[0]) { 113 | return myblocks[0]; 114 | } else { 115 | throw new Error("no held block") 116 | } 117 | }) 118 | }) 119 | } 120 | foldBlockNodes(callback) { 121 | return this.foldRootNode().then((results) => { 122 | // const {rootPayload, block, children} = results; 123 | return this.foldBlockNode(callback, results.rootPayload, results.block, results.children) 124 | 125 | }) 126 | } 127 | foldBlockNode(callback, parentPayload, rawParentBlock, children) { 128 | // console.log("foldBlockNode", parentPayload, children, rawParentBlock) 129 | callback(parentPayload, rawParentBlock, children) 130 | // now for each child, decode the child and call foldBlockNode on it 131 | if (children.length > 0) { 132 | return jose.JWK.asKey(parentPayload[1]).then((holderKey) => { 133 | var decoders = children.map((childNode)=>{ 134 | const rawChildBlock = childNode[0]; 135 | const childChildren = childNode[1]; 136 | return this.decodeBlock(rawChildBlock, holderKey).then((decoded) => { 137 | var childPayload = JSON.parse(decoded.payload.toString()) 138 | return this.foldBlockNode(callback, childPayload, rawChildBlock, childChildren) 139 | }) 140 | }) 141 | // console.log("decoders", decoders) 142 | return Promise.all(decoders); 143 | }); 144 | } else { 145 | return true; 146 | } 147 | } 148 | foldRootNode() { 149 | var holderKey = this.mintKey; 150 | var node = this.givetree; 151 | var block = node[0]; 152 | var children = node[1]; 153 | return this.decodeBlock(block, holderKey).then((decoded) => { 154 | var rootPayload = JSON.parse(decoded.payload.toString()) 155 | console.log("folded BLOCK", rootPayload) 156 | return {rootPayload:rootPayload, block:block, children:children}; 157 | }) 158 | // this needs to decode blocks into the decoded tree so we can use the signing 159 | // key to verify child blocks 160 | } 161 | // TODO validate givetree 162 | validate() { 163 | return this.validateRoot().then(()=>{ 164 | return this.foldBlockNodes((decodedBlock, rawBlock, children) => { 165 | console.log("folded BlockNodes", decodedBlock[1].kid, children.length, decodedBlock[0]) 166 | }) 167 | }).then(()=>{ 168 | return true; 169 | }).catch((e)=>{ 170 | console.log("error", e); 171 | return false; 172 | }) 173 | } 174 | } 175 | 176 | module.exports = Coin; 177 | 178 | 179 | // validate/decode the entire tree? decode until we find our wallet 180 | 181 | // root block 182 | 183 | // find blocks wallet X can sign 184 | -------------------------------------------------------------------------------- /lib/history.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | holder.give(doc, recipient) 4 | - acquires keys 5 | - calls subroutines to perform transformations 6 | 7 | content.reencrypt(holder, doc.content, recipient) 8 | - decryption 9 | - encryption 10 | 11 | 12 | 13 | history.give(holder, doc.history, recipient) 14 | - holder signs assertion giving to recipient 15 | - places in tree structure 16 | 17 | history.verify(doc.history) 18 | -------------------------------------------------------------------------------- /lib/wallet.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | const jose = require("node-jose"); 3 | const Coin = require("./coin"); 4 | 5 | class Wallet { 6 | constructor(name) { 7 | this.name = name; 8 | } 9 | setupKeys() { 10 | this.keystore = jose.JWK.createKeyStore(); 11 | return this.keystore.generate("EC", "P-256").then((key) => { 12 | this.signingKey = key; 13 | }) 14 | } 15 | mint(content) { 16 | const mintedCoin = new Coin (); 17 | return mintedCoin.mint(content, this); 18 | } 19 | getName() { 20 | return this.name; 21 | } 22 | } 23 | 24 | module.exports = Wallet; 25 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "document-coin", 3 | "version": "0.0.1", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "Base64": { 8 | "version": "0.2.1", 9 | "resolved": "https://registry.npmjs.org/Base64/-/Base64-0.2.1.tgz", 10 | "integrity": "sha1-ujpCMHCOGGcFBl5mur3Uw1z2ACg=" 11 | }, 12 | "JSONStream": { 13 | "version": "0.8.4", 14 | "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-0.8.4.tgz", 15 | "integrity": "sha1-kWV9/m/4V0gwZhMrRhi2Lo9Ih70=", 16 | "requires": { 17 | "jsonparse": "0.0.5", 18 | "through": "2.3.8" 19 | } 20 | }, 21 | "acorn": { 22 | "version": "4.0.13", 23 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", 24 | "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=" 25 | }, 26 | "acorn-node": { 27 | "version": "1.3.0", 28 | "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.3.0.tgz", 29 | "integrity": "sha512-efP54n3d1aLfjL2UMdaXa6DsswwzJeI5rqhbFvXMrKiJ6eJFpf+7R0zN7t8IC+XKn2YOAFAv6xbBNgHUkoHWLw==", 30 | "requires": { 31 | "acorn": "5.5.3", 32 | "xtend": "4.0.1" 33 | }, 34 | "dependencies": { 35 | "acorn": { 36 | "version": "5.5.3", 37 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz", 38 | "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==" 39 | } 40 | } 41 | }, 42 | "ajv": { 43 | "version": "5.5.2", 44 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", 45 | "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", 46 | "requires": { 47 | "co": "4.6.0", 48 | "fast-deep-equal": "1.1.0", 49 | "fast-json-stable-stringify": "2.0.0", 50 | "json-schema-traverse": "0.3.1" 51 | } 52 | }, 53 | "amdefine": { 54 | "version": "1.0.1", 55 | "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", 56 | "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" 57 | }, 58 | "ansi-codes": { 59 | "version": "0.0.1-security", 60 | "resolved": "https://registry.npmjs.org/ansi-codes/-/ansi-codes-0.0.1-security.tgz", 61 | "integrity": "sha1-bdSlefToB8aR+LoS7mi5RD4tWdo=" 62 | }, 63 | "ansi-regex": { 64 | "version": "2.1.1", 65 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 66 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" 67 | }, 68 | "ansi-styles": { 69 | "version": "2.2.1", 70 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 71 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" 72 | }, 73 | "asn1": { 74 | "version": "0.2.3", 75 | "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", 76 | "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" 77 | }, 78 | "asn1.js": { 79 | "version": "4.10.1", 80 | "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", 81 | "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", 82 | "requires": { 83 | "bn.js": "4.11.8", 84 | "inherits": "2.0.3", 85 | "minimalistic-assert": "1.0.1" 86 | } 87 | }, 88 | "assert": { 89 | "version": "1.1.2", 90 | "resolved": "https://registry.npmjs.org/assert/-/assert-1.1.2.tgz", 91 | "integrity": "sha1-raoExGu1jG3R8pTaPrJuYijrbkQ=", 92 | "requires": { 93 | "util": "0.10.3" 94 | } 95 | }, 96 | "assert-plus": { 97 | "version": "1.0.0", 98 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", 99 | "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" 100 | }, 101 | "astw": { 102 | "version": "2.2.0", 103 | "resolved": "https://registry.npmjs.org/astw/-/astw-2.2.0.tgz", 104 | "integrity": "sha1-e9QXhNMkk5h66yOba04cV6hzuRc=", 105 | "requires": { 106 | "acorn": "4.0.13" 107 | } 108 | }, 109 | "async": { 110 | "version": "0.2.10", 111 | "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", 112 | "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=" 113 | }, 114 | "async-each": { 115 | "version": "0.1.6", 116 | "resolved": "https://registry.npmjs.org/async-each/-/async-each-0.1.6.tgz", 117 | "integrity": "sha1-tn6Z7c3fllQeRK9WKQzX1cbnBDk=" 118 | }, 119 | "asynckit": { 120 | "version": "0.4.0", 121 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 122 | "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" 123 | }, 124 | "aws-sign2": { 125 | "version": "0.7.0", 126 | "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", 127 | "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" 128 | }, 129 | "aws4": { 130 | "version": "1.7.0", 131 | "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz", 132 | "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==" 133 | }, 134 | "babel-code-frame": { 135 | "version": "6.26.0", 136 | "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", 137 | "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", 138 | "requires": { 139 | "chalk": "1.1.3", 140 | "esutils": "2.0.2", 141 | "js-tokens": "3.0.2" 142 | } 143 | }, 144 | "babel-core": { 145 | "version": "6.26.0", 146 | "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", 147 | "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", 148 | "requires": { 149 | "babel-code-frame": "6.26.0", 150 | "babel-generator": "6.26.1", 151 | "babel-helpers": "6.24.1", 152 | "babel-messages": "6.23.0", 153 | "babel-register": "6.26.0", 154 | "babel-runtime": "6.26.0", 155 | "babel-template": "6.26.0", 156 | "babel-traverse": "6.26.0", 157 | "babel-types": "6.26.0", 158 | "babylon": "6.18.0", 159 | "convert-source-map": "1.5.1", 160 | "debug": "2.6.9", 161 | "json5": "0.5.1", 162 | "lodash": "4.17.5", 163 | "minimatch": "3.0.4", 164 | "path-is-absolute": "1.0.1", 165 | "private": "0.1.8", 166 | "slash": "1.0.0", 167 | "source-map": "0.5.7" 168 | } 169 | }, 170 | "babel-generator": { 171 | "version": "6.26.1", 172 | "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", 173 | "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", 174 | "requires": { 175 | "babel-messages": "6.23.0", 176 | "babel-runtime": "6.26.0", 177 | "babel-types": "6.26.0", 178 | "detect-indent": "4.0.0", 179 | "jsesc": "1.3.0", 180 | "lodash": "4.17.5", 181 | "source-map": "0.5.7", 182 | "trim-right": "1.0.1" 183 | } 184 | }, 185 | "babel-helpers": { 186 | "version": "6.24.1", 187 | "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", 188 | "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", 189 | "requires": { 190 | "babel-runtime": "6.26.0", 191 | "babel-template": "6.26.0" 192 | } 193 | }, 194 | "babel-messages": { 195 | "version": "6.23.0", 196 | "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", 197 | "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", 198 | "requires": { 199 | "babel-runtime": "6.26.0" 200 | } 201 | }, 202 | "babel-register": { 203 | "version": "6.26.0", 204 | "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", 205 | "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", 206 | "requires": { 207 | "babel-core": "6.26.0", 208 | "babel-runtime": "6.26.0", 209 | "core-js": "2.5.5", 210 | "home-or-tmp": "2.0.0", 211 | "lodash": "4.17.5", 212 | "mkdirp": "0.5.1", 213 | "source-map-support": "0.4.18" 214 | } 215 | }, 216 | "babel-runtime": { 217 | "version": "6.26.0", 218 | "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", 219 | "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", 220 | "requires": { 221 | "core-js": "2.5.5", 222 | "regenerator-runtime": "0.11.1" 223 | } 224 | }, 225 | "babel-template": { 226 | "version": "6.26.0", 227 | "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", 228 | "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", 229 | "requires": { 230 | "babel-runtime": "6.26.0", 231 | "babel-traverse": "6.26.0", 232 | "babel-types": "6.26.0", 233 | "babylon": "6.18.0", 234 | "lodash": "4.17.5" 235 | } 236 | }, 237 | "babel-traverse": { 238 | "version": "6.26.0", 239 | "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", 240 | "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", 241 | "requires": { 242 | "babel-code-frame": "6.26.0", 243 | "babel-messages": "6.23.0", 244 | "babel-runtime": "6.26.0", 245 | "babel-types": "6.26.0", 246 | "babylon": "6.18.0", 247 | "debug": "2.6.9", 248 | "globals": "9.18.0", 249 | "invariant": "2.2.4", 250 | "lodash": "4.17.5" 251 | } 252 | }, 253 | "babel-types": { 254 | "version": "6.26.0", 255 | "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", 256 | "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", 257 | "requires": { 258 | "babel-runtime": "6.26.0", 259 | "esutils": "2.0.2", 260 | "lodash": "4.17.5", 261 | "to-fast-properties": "1.0.3" 262 | } 263 | }, 264 | "babylon": { 265 | "version": "6.18.0", 266 | "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", 267 | "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" 268 | }, 269 | "balanced-match": { 270 | "version": "1.0.0", 271 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 272 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" 273 | }, 274 | "base64-js": { 275 | "version": "0.0.7", 276 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.7.tgz", 277 | "integrity": "sha1-VEANyR1pbOwyqKR5AvlxUi/uj0g=" 278 | }, 279 | "base64url": { 280 | "version": "2.0.0", 281 | "resolved": "https://registry.npmjs.org/base64url/-/base64url-2.0.0.tgz", 282 | "integrity": "sha1-6sFuA+oUOO/5Qj1puqNiYu0fcLs=" 283 | }, 284 | "bcrypt-pbkdf": { 285 | "version": "1.0.1", 286 | "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", 287 | "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", 288 | "optional": true, 289 | "requires": { 290 | "tweetnacl": "0.14.5" 291 | } 292 | }, 293 | "bn.js": { 294 | "version": "4.11.8", 295 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", 296 | "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" 297 | }, 298 | "boom": { 299 | "version": "4.3.1", 300 | "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", 301 | "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", 302 | "requires": { 303 | "hoek": "4.2.1" 304 | } 305 | }, 306 | "brace-expansion": { 307 | "version": "1.1.11", 308 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 309 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 310 | "requires": { 311 | "balanced-match": "1.0.0", 312 | "concat-map": "0.0.1" 313 | } 314 | }, 315 | "brorand": { 316 | "version": "1.1.0", 317 | "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", 318 | "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" 319 | }, 320 | "browser-launcher": { 321 | "version": "1.0.0", 322 | "resolved": "https://registry.npmjs.org/browser-launcher/-/browser-launcher-1.0.0.tgz", 323 | "integrity": "sha1-DPD/Hs3LdRbI+XO/gutvO/kpzpc=", 324 | "requires": { 325 | "headless": "0.1.3", 326 | "merge": "1.0.0", 327 | "minimist": "0.0.5", 328 | "mkdirp": "0.3.5", 329 | "plist": "0.2.1", 330 | "xtend": "4.0.1" 331 | }, 332 | "dependencies": { 333 | "headless": { 334 | "version": "0.1.3", 335 | "bundled": true 336 | }, 337 | "minimist": { 338 | "version": "0.0.5", 339 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.5.tgz", 340 | "integrity": "sha1-16oye87PUY+RBqxrjwA/o7zqhWY=" 341 | }, 342 | "mkdirp": { 343 | "version": "0.3.5", 344 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", 345 | "integrity": "sha1-3j5fiWHIjHh+4TaN+EmsRBPsqNc=" 346 | } 347 | } 348 | }, 349 | "browser-pack": { 350 | "version": "3.2.0", 351 | "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-3.2.0.tgz", 352 | "integrity": "sha1-+qHLxBSHsazEdH43PhFIrf/Q4tk=", 353 | "requires": { 354 | "JSONStream": "0.8.4", 355 | "combine-source-map": "0.3.0", 356 | "concat-stream": "1.4.11", 357 | "defined": "0.0.0", 358 | "through2": "0.5.1", 359 | "umd": "2.1.0" 360 | }, 361 | "dependencies": { 362 | "concat-stream": { 363 | "version": "1.4.11", 364 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.4.11.tgz", 365 | "integrity": "sha512-X3JMh8+4je3U1cQpG87+f9lXHDrqcb2MVLg9L7o8b1UZ0DzhRrUpdn65ttzu10PpJPPI3MQNkis+oha6TSA9Mw==", 366 | "requires": { 367 | "inherits": "2.0.3", 368 | "readable-stream": "1.1.14", 369 | "typedarray": "0.0.6" 370 | } 371 | }, 372 | "through2": { 373 | "version": "0.5.1", 374 | "resolved": "https://registry.npmjs.org/through2/-/through2-0.5.1.tgz", 375 | "integrity": "sha1-390BLrnHAOIyP9M084rGIqs3Lac=", 376 | "requires": { 377 | "readable-stream": "1.0.34", 378 | "xtend": "3.0.0" 379 | }, 380 | "dependencies": { 381 | "readable-stream": { 382 | "version": "1.0.34", 383 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", 384 | "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", 385 | "requires": { 386 | "core-util-is": "1.0.2", 387 | "inherits": "2.0.3", 388 | "isarray": "0.0.1", 389 | "string_decoder": "0.10.31" 390 | } 391 | } 392 | } 393 | }, 394 | "xtend": { 395 | "version": "3.0.0", 396 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-3.0.0.tgz", 397 | "integrity": "sha1-XM50B7r2Qsunvs2laBEcST9ZZlo=" 398 | } 399 | } 400 | }, 401 | "browser-resolve": { 402 | "version": "1.11.2", 403 | "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz", 404 | "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=", 405 | "requires": { 406 | "resolve": "1.1.7" 407 | }, 408 | "dependencies": { 409 | "resolve": { 410 | "version": "1.1.7", 411 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", 412 | "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=" 413 | } 414 | } 415 | }, 416 | "browserify": { 417 | "version": "6.3.4", 418 | "resolved": "https://registry.npmjs.org/browserify/-/browserify-6.3.4.tgz", 419 | "integrity": "sha1-V7XRlcxWgTnpcTAuXNnVjdr7VNg=", 420 | "requires": { 421 | "JSONStream": "0.8.4", 422 | "assert": "1.1.2", 423 | "browser-pack": "3.2.0", 424 | "browser-resolve": "1.11.2", 425 | "browserify-zlib": "0.1.4", 426 | "buffer": "2.8.2", 427 | "builtins": "0.0.7", 428 | "commondir": "0.0.1", 429 | "concat-stream": "1.4.11", 430 | "console-browserify": "1.1.0", 431 | "constants-browserify": "0.0.1", 432 | "crypto-browserify": "3.12.0", 433 | "deep-equal": "0.2.2", 434 | "defined": "0.0.0", 435 | "deps-sort": "1.3.9", 436 | "domain-browser": "1.1.7", 437 | "duplexer2": "0.0.2", 438 | "events": "1.0.2", 439 | "glob": "4.5.3", 440 | "http-browserify": "1.7.0", 441 | "https-browserify": "0.0.1", 442 | "inherits": "2.0.3", 443 | "insert-module-globals": "6.6.3", 444 | "isarray": "0.0.1", 445 | "labeled-stream-splicer": "1.0.2", 446 | "module-deps": "3.9.1", 447 | "os-browserify": "0.1.2", 448 | "parents": "0.0.3", 449 | "path-browserify": "0.0.0", 450 | "process": "0.8.0", 451 | "punycode": "1.2.4", 452 | "querystring-es3": "0.2.1", 453 | "readable-stream": "1.1.14", 454 | "resolve": "0.7.4", 455 | "shallow-copy": "0.0.1", 456 | "shasum": "1.0.2", 457 | "shell-quote": "0.0.1", 458 | "stream-browserify": "1.0.0", 459 | "string_decoder": "0.10.31", 460 | "subarg": "1.0.0", 461 | "syntax-error": "1.4.0", 462 | "through2": "1.1.1", 463 | "timers-browserify": "1.4.2", 464 | "tty-browserify": "0.0.1", 465 | "umd": "2.1.0", 466 | "url": "0.10.3", 467 | "util": "0.10.3", 468 | "vm-browserify": "0.0.4", 469 | "xtend": "3.0.0" 470 | }, 471 | "dependencies": { 472 | "concat-stream": { 473 | "version": "1.4.11", 474 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.4.11.tgz", 475 | "integrity": "sha512-X3JMh8+4je3U1cQpG87+f9lXHDrqcb2MVLg9L7o8b1UZ0DzhRrUpdn65ttzu10PpJPPI3MQNkis+oha6TSA9Mw==", 476 | "requires": { 477 | "inherits": "2.0.3", 478 | "readable-stream": "1.1.14", 479 | "typedarray": "0.0.6" 480 | } 481 | }, 482 | "xtend": { 483 | "version": "3.0.0", 484 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-3.0.0.tgz", 485 | "integrity": "sha1-XM50B7r2Qsunvs2laBEcST9ZZlo=" 486 | } 487 | } 488 | }, 489 | "browserify-aes": { 490 | "version": "1.2.0", 491 | "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", 492 | "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", 493 | "requires": { 494 | "buffer-xor": "1.0.3", 495 | "cipher-base": "1.0.4", 496 | "create-hash": "1.2.0", 497 | "evp_bytestokey": "1.0.3", 498 | "inherits": "2.0.3", 499 | "safe-buffer": "5.1.1" 500 | } 501 | }, 502 | "browserify-cipher": { 503 | "version": "1.0.1", 504 | "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", 505 | "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", 506 | "requires": { 507 | "browserify-aes": "1.2.0", 508 | "browserify-des": "1.0.1", 509 | "evp_bytestokey": "1.0.3" 510 | } 511 | }, 512 | "browserify-des": { 513 | "version": "1.0.1", 514 | "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.1.tgz", 515 | "integrity": "sha512-zy0Cobe3hhgpiOM32Tj7KQ3Vl91m0njwsjzZQK1L+JDf11dzP9qIvjreVinsvXrgfjhStXwUWAEpB9D7Gwmayw==", 516 | "requires": { 517 | "cipher-base": "1.0.4", 518 | "des.js": "1.0.0", 519 | "inherits": "2.0.3" 520 | } 521 | }, 522 | "browserify-rsa": { 523 | "version": "4.0.1", 524 | "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", 525 | "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", 526 | "requires": { 527 | "bn.js": "4.11.8", 528 | "randombytes": "2.0.6" 529 | } 530 | }, 531 | "browserify-sign": { 532 | "version": "4.0.4", 533 | "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", 534 | "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", 535 | "requires": { 536 | "bn.js": "4.11.8", 537 | "browserify-rsa": "4.0.1", 538 | "create-hash": "1.2.0", 539 | "create-hmac": "1.1.7", 540 | "elliptic": "6.4.0", 541 | "inherits": "2.0.3", 542 | "parse-asn1": "5.1.1" 543 | } 544 | }, 545 | "browserify-zlib": { 546 | "version": "0.1.4", 547 | "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", 548 | "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", 549 | "requires": { 550 | "pako": "0.2.9" 551 | } 552 | }, 553 | "buffer": { 554 | "version": "2.8.2", 555 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-2.8.2.tgz", 556 | "integrity": "sha1-1zwhTAM0OE3CmwTuD/X1Unx5dOc=", 557 | "requires": { 558 | "base64-js": "0.0.7", 559 | "ieee754": "1.1.11", 560 | "is-array": "1.0.1" 561 | } 562 | }, 563 | "buffer-from": { 564 | "version": "1.0.0", 565 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz", 566 | "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==" 567 | }, 568 | "buffer-xor": { 569 | "version": "1.0.3", 570 | "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", 571 | "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" 572 | }, 573 | "builtins": { 574 | "version": "0.0.7", 575 | "resolved": "https://registry.npmjs.org/builtins/-/builtins-0.0.7.tgz", 576 | "integrity": "sha1-NVIZzWzxjb58Acx/0tznZc/cVJo=" 577 | }, 578 | "callsite": { 579 | "version": "1.0.0", 580 | "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", 581 | "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=" 582 | }, 583 | "camelcase": { 584 | "version": "1.2.1", 585 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", 586 | "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" 587 | }, 588 | "caseless": { 589 | "version": "0.12.0", 590 | "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", 591 | "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" 592 | }, 593 | "chalk": { 594 | "version": "1.1.3", 595 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 596 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 597 | "requires": { 598 | "ansi-styles": "2.2.1", 599 | "escape-string-regexp": "1.0.5", 600 | "has-ansi": "2.0.0", 601 | "strip-ansi": "3.0.1", 602 | "supports-color": "2.0.0" 603 | } 604 | }, 605 | "chokidar": { 606 | "version": "0.12.6", 607 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-0.12.6.tgz", 608 | "integrity": "sha1-viBPW5Y04AkxElbl1ujg5QgoTS8=", 609 | "requires": { 610 | "async-each": "0.1.6", 611 | "fsevents": "0.3.8", 612 | "readdirp": "1.3.0" 613 | } 614 | }, 615 | "cipher-base": { 616 | "version": "1.0.4", 617 | "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", 618 | "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", 619 | "requires": { 620 | "inherits": "2.0.3", 621 | "safe-buffer": "5.1.1" 622 | } 623 | }, 624 | "co": { 625 | "version": "4.6.0", 626 | "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", 627 | "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" 628 | }, 629 | "combine-source-map": { 630 | "version": "0.3.0", 631 | "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.3.0.tgz", 632 | "integrity": "sha1-2edPWT2c1DgHMSy12EbUUe+qnrc=", 633 | "requires": { 634 | "convert-source-map": "0.3.5", 635 | "inline-source-map": "0.3.1", 636 | "source-map": "0.1.43" 637 | }, 638 | "dependencies": { 639 | "convert-source-map": { 640 | "version": "0.3.5", 641 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-0.3.5.tgz", 642 | "integrity": "sha1-8dgClQr33SYxof6+BZZVDIarMZA=" 643 | }, 644 | "source-map": { 645 | "version": "0.1.43", 646 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", 647 | "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", 648 | "requires": { 649 | "amdefine": "1.0.1" 650 | } 651 | } 652 | } 653 | }, 654 | "combined-stream": { 655 | "version": "1.0.6", 656 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", 657 | "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", 658 | "requires": { 659 | "delayed-stream": "1.0.0" 660 | } 661 | }, 662 | "commondir": { 663 | "version": "0.0.1", 664 | "resolved": "https://registry.npmjs.org/commondir/-/commondir-0.0.1.tgz", 665 | "integrity": "sha1-ifAP3NUbUZxXhzP+xWPmptp/W+I=" 666 | }, 667 | "component-closest": { 668 | "version": "1.0.1", 669 | "resolved": "https://registry.npmjs.org/component-closest/-/component-closest-1.0.1.tgz", 670 | "integrity": "sha1-HtBGQTL8iKNRCi2r7AeWlXifsbU=", 671 | "requires": { 672 | "component-matches-selector": "0.1.6" 673 | } 674 | }, 675 | "component-delegate": { 676 | "version": "0.2.4", 677 | "resolved": "https://registry.npmjs.org/component-delegate/-/component-delegate-0.2.4.tgz", 678 | "integrity": "sha1-3FAodZ6mgb6oSj1rvWUCB8O+sTg=", 679 | "requires": { 680 | "component-closest": "1.0.1", 681 | "component-event": "0.2.0" 682 | } 683 | }, 684 | "component-event": { 685 | "version": "0.2.0", 686 | "resolved": "https://registry.npmjs.org/component-event/-/component-event-0.2.0.tgz", 687 | "integrity": "sha1-homnwlp90K/n4uhAgJHVueEs4ZY=" 688 | }, 689 | "component-matches-selector": { 690 | "version": "0.1.6", 691 | "resolved": "https://registry.npmjs.org/component-matches-selector/-/component-matches-selector-0.1.6.tgz", 692 | "integrity": "sha1-e2MOBOfgw7ABnzF0n9cK9e2Lly4=", 693 | "requires": { 694 | "component-query": "0.0.3" 695 | } 696 | }, 697 | "component-query": { 698 | "version": "0.0.3", 699 | "resolved": "https://registry.npmjs.org/component-query/-/component-query-0.0.3.tgz", 700 | "integrity": "sha1-B/Sdq3Bx+pYGcl31PmB/RorNqs8=" 701 | }, 702 | "concat-map": { 703 | "version": "0.0.1", 704 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 705 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" 706 | }, 707 | "concat-stream": { 708 | "version": "1.6.2", 709 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", 710 | "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", 711 | "requires": { 712 | "buffer-from": "1.0.0", 713 | "inherits": "2.0.3", 714 | "readable-stream": "2.3.6", 715 | "typedarray": "0.0.6" 716 | }, 717 | "dependencies": { 718 | "isarray": { 719 | "version": "1.0.0", 720 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 721 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" 722 | }, 723 | "readable-stream": { 724 | "version": "2.3.6", 725 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", 726 | "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", 727 | "requires": { 728 | "core-util-is": "1.0.2", 729 | "inherits": "2.0.3", 730 | "isarray": "1.0.0", 731 | "process-nextick-args": "2.0.0", 732 | "safe-buffer": "5.1.1", 733 | "string_decoder": "1.1.1", 734 | "util-deprecate": "1.0.2" 735 | } 736 | }, 737 | "string_decoder": { 738 | "version": "1.1.1", 739 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 740 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 741 | "requires": { 742 | "safe-buffer": "5.1.1" 743 | } 744 | } 745 | } 746 | }, 747 | "console-browserify": { 748 | "version": "1.1.0", 749 | "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", 750 | "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", 751 | "requires": { 752 | "date-now": "0.1.4" 753 | } 754 | }, 755 | "constants-browserify": { 756 | "version": "0.0.1", 757 | "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-0.0.1.tgz", 758 | "integrity": "sha1-kld9tSe6bEzwpFaNhLwDH0QeIfI=" 759 | }, 760 | "convert-source-map": { 761 | "version": "1.5.1", 762 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", 763 | "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=" 764 | }, 765 | "core-js": { 766 | "version": "2.5.5", 767 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.5.tgz", 768 | "integrity": "sha1-sU3ek2xkDAV5prUMq8wTLdYSfjs=" 769 | }, 770 | "core-util-is": { 771 | "version": "1.0.2", 772 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 773 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" 774 | }, 775 | "create-ecdh": { 776 | "version": "4.0.1", 777 | "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.1.tgz", 778 | "integrity": "sha512-iZvCCg8XqHQZ1ioNBTzXS/cQSkqkqcPs8xSX4upNB+DAk9Ht3uzQf2J32uAHNCne8LDmKr29AgZrEs4oIrwLuQ==", 779 | "requires": { 780 | "bn.js": "4.11.8", 781 | "elliptic": "6.4.0" 782 | } 783 | }, 784 | "create-hash": { 785 | "version": "1.2.0", 786 | "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", 787 | "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", 788 | "requires": { 789 | "cipher-base": "1.0.4", 790 | "inherits": "2.0.3", 791 | "md5.js": "1.3.4", 792 | "ripemd160": "2.0.1", 793 | "sha.js": "2.4.11" 794 | } 795 | }, 796 | "create-hmac": { 797 | "version": "1.1.7", 798 | "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", 799 | "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", 800 | "requires": { 801 | "cipher-base": "1.0.4", 802 | "create-hash": "1.2.0", 803 | "inherits": "2.0.3", 804 | "ripemd160": "2.0.1", 805 | "safe-buffer": "5.1.1", 806 | "sha.js": "2.4.11" 807 | } 808 | }, 809 | "cryptiles": { 810 | "version": "3.1.2", 811 | "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", 812 | "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", 813 | "requires": { 814 | "boom": "5.2.0" 815 | }, 816 | "dependencies": { 817 | "boom": { 818 | "version": "5.2.0", 819 | "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", 820 | "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", 821 | "requires": { 822 | "hoek": "4.2.1" 823 | } 824 | } 825 | } 826 | }, 827 | "crypto-browserify": { 828 | "version": "3.12.0", 829 | "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", 830 | "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", 831 | "requires": { 832 | "browserify-cipher": "1.0.1", 833 | "browserify-sign": "4.0.4", 834 | "create-ecdh": "4.0.1", 835 | "create-hash": "1.2.0", 836 | "create-hmac": "1.1.7", 837 | "diffie-hellman": "5.0.3", 838 | "inherits": "2.0.3", 839 | "pbkdf2": "3.0.14", 840 | "public-encrypt": "4.0.2", 841 | "randombytes": "2.0.6", 842 | "randomfill": "1.0.4" 843 | } 844 | }, 845 | "dashdash": { 846 | "version": "1.14.1", 847 | "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", 848 | "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", 849 | "requires": { 850 | "assert-plus": "1.0.0" 851 | } 852 | }, 853 | "date-now": { 854 | "version": "0.1.4", 855 | "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", 856 | "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=" 857 | }, 858 | "debug": { 859 | "version": "2.6.9", 860 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 861 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 862 | "requires": { 863 | "ms": "2.0.0" 864 | } 865 | }, 866 | "decamelize": { 867 | "version": "1.2.0", 868 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", 869 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" 870 | }, 871 | "deep-equal": { 872 | "version": "0.2.2", 873 | "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-0.2.2.tgz", 874 | "integrity": "sha1-hLdFiW80xoTpjyzg5Cq69Du6AX0=" 875 | }, 876 | "default-debug": { 877 | "version": "0.0.0", 878 | "resolved": "https://registry.npmjs.org/default-debug/-/default-debug-0.0.0.tgz", 879 | "integrity": "sha1-Cs4KssN3/v9qLLBOfDZXb8spTXg=" 880 | }, 881 | "define-properties": { 882 | "version": "1.1.2", 883 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", 884 | "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", 885 | "requires": { 886 | "foreach": "2.0.5", 887 | "object-keys": "1.0.11" 888 | } 889 | }, 890 | "defined": { 891 | "version": "0.0.0", 892 | "resolved": "https://registry.npmjs.org/defined/-/defined-0.0.0.tgz", 893 | "integrity": "sha1-817qfXBekzuvE7LwOz+D2SFAOz4=" 894 | }, 895 | "delayed-stream": { 896 | "version": "1.0.0", 897 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 898 | "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" 899 | }, 900 | "deps-sort": { 901 | "version": "1.3.9", 902 | "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-1.3.9.tgz", 903 | "integrity": "sha1-Kd//U+F7Nq7K51MK27v2IsLtGnE=", 904 | "requires": { 905 | "JSONStream": "1.3.2", 906 | "shasum": "1.0.2", 907 | "subarg": "1.0.0", 908 | "through2": "1.1.1" 909 | }, 910 | "dependencies": { 911 | "JSONStream": { 912 | "version": "1.3.2", 913 | "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.2.tgz", 914 | "integrity": "sha1-wQI3G27Dp887hHygDCC7D85Mbeo=", 915 | "requires": { 916 | "jsonparse": "1.3.1", 917 | "through": "2.3.8" 918 | } 919 | }, 920 | "jsonparse": { 921 | "version": "1.3.1", 922 | "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", 923 | "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=" 924 | } 925 | } 926 | }, 927 | "des.js": { 928 | "version": "1.0.0", 929 | "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", 930 | "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", 931 | "requires": { 932 | "inherits": "2.0.3", 933 | "minimalistic-assert": "1.0.1" 934 | } 935 | }, 936 | "detect-indent": { 937 | "version": "4.0.0", 938 | "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", 939 | "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", 940 | "requires": { 941 | "repeating": "2.0.1" 942 | } 943 | }, 944 | "detective": { 945 | "version": "4.7.1", 946 | "resolved": "https://registry.npmjs.org/detective/-/detective-4.7.1.tgz", 947 | "integrity": "sha512-H6PmeeUcZloWtdt4DAkFyzFL94arpHr3NOwwmVILFiy+9Qd4JTxxXrzfyGk/lmct2qVGBwTSwSXagqu2BxmWig==", 948 | "requires": { 949 | "acorn": "5.5.3", 950 | "defined": "1.0.0" 951 | }, 952 | "dependencies": { 953 | "acorn": { 954 | "version": "5.5.3", 955 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz", 956 | "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==" 957 | }, 958 | "defined": { 959 | "version": "1.0.0", 960 | "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", 961 | "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" 962 | } 963 | } 964 | }, 965 | "diffie-hellman": { 966 | "version": "5.0.3", 967 | "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", 968 | "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", 969 | "requires": { 970 | "bn.js": "4.11.8", 971 | "miller-rabin": "4.0.1", 972 | "randombytes": "2.0.6" 973 | } 974 | }, 975 | "dom-classes": { 976 | "version": "0.0.1", 977 | "resolved": "https://registry.npmjs.org/dom-classes/-/dom-classes-0.0.1.tgz", 978 | "integrity": "sha1-1IAhee2AVO52t1Kta59failSkZw=", 979 | "requires": { 980 | "indexof": "0.0.1" 981 | } 982 | }, 983 | "dom-event": { 984 | "version": "0.0.1", 985 | "resolved": "https://registry.npmjs.org/dom-event/-/dom-event-0.0.1.tgz", 986 | "integrity": "sha1-X3zPJ+4SbzzY1R6+g5DEBj8acjQ=" 987 | }, 988 | "dom-select": { 989 | "version": "0.0.0", 990 | "resolved": "https://registry.npmjs.org/dom-select/-/dom-select-0.0.0.tgz", 991 | "integrity": "sha1-hI8WydhH0TUlEeHLeP/gmY1q1ME=", 992 | "requires": { 993 | "qwery": "3.4.2" 994 | } 995 | }, 996 | "dom-style": { 997 | "version": "0.0.3", 998 | "resolved": "https://registry.npmjs.org/dom-style/-/dom-style-0.0.3.tgz", 999 | "integrity": "sha1-eMbYy0D9xoMUypE4TNfld3erQag=", 1000 | "requires": { 1001 | "to-camel-case": "1.0.0" 1002 | } 1003 | }, 1004 | "dom-tree": { 1005 | "version": "0.0.1", 1006 | "resolved": "https://registry.npmjs.org/dom-tree/-/dom-tree-0.0.1.tgz", 1007 | "integrity": "sha1-iKKWNAsQBUFVRt2Gk/2L2ybso4k=", 1008 | "requires": { 1009 | "dom-select": "0.0.0", 1010 | "new-element": "0.0.2" 1011 | } 1012 | }, 1013 | "domain-browser": { 1014 | "version": "1.1.7", 1015 | "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz", 1016 | "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=" 1017 | }, 1018 | "domify": { 1019 | "version": "1.0.0", 1020 | "resolved": "https://registry.npmjs.org/domify/-/domify-1.0.0.tgz", 1021 | "integrity": "sha1-m9BAEZo6VtvhL0BqAaO9G2n+pcM=" 1022 | }, 1023 | "duplexer2": { 1024 | "version": "0.0.2", 1025 | "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", 1026 | "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", 1027 | "requires": { 1028 | "readable-stream": "1.1.14" 1029 | } 1030 | }, 1031 | "ecc-jsbn": { 1032 | "version": "0.1.1", 1033 | "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", 1034 | "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", 1035 | "optional": true, 1036 | "requires": { 1037 | "jsbn": "0.1.1" 1038 | } 1039 | }, 1040 | "elliptic": { 1041 | "version": "6.4.0", 1042 | "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", 1043 | "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", 1044 | "requires": { 1045 | "bn.js": "4.11.8", 1046 | "brorand": "1.1.0", 1047 | "hash.js": "1.1.3", 1048 | "hmac-drbg": "1.0.1", 1049 | "inherits": "2.0.3", 1050 | "minimalistic-assert": "1.0.1", 1051 | "minimalistic-crypto-utils": "1.0.1" 1052 | } 1053 | }, 1054 | "es-abstract": { 1055 | "version": "1.11.0", 1056 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.11.0.tgz", 1057 | "integrity": "sha512-ZnQrE/lXTTQ39ulXZ+J1DTFazV9qBy61x2bY071B+qGco8Z8q1QddsLdt/EF8Ai9hcWH72dWS0kFqXLxOxqslA==", 1058 | "requires": { 1059 | "es-to-primitive": "1.1.1", 1060 | "function-bind": "1.1.1", 1061 | "has": "1.0.1", 1062 | "is-callable": "1.1.3", 1063 | "is-regex": "1.0.4" 1064 | } 1065 | }, 1066 | "es-to-primitive": { 1067 | "version": "1.1.1", 1068 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", 1069 | "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", 1070 | "requires": { 1071 | "is-callable": "1.1.3", 1072 | "is-date-object": "1.0.1", 1073 | "is-symbol": "1.0.1" 1074 | } 1075 | }, 1076 | "es6-promise": { 1077 | "version": "4.2.4", 1078 | "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz", 1079 | "integrity": "sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ==" 1080 | }, 1081 | "escape-html": { 1082 | "version": "1.0.3", 1083 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 1084 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" 1085 | }, 1086 | "escape-string-regexp": { 1087 | "version": "1.0.5", 1088 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 1089 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" 1090 | }, 1091 | "esutils": { 1092 | "version": "2.0.2", 1093 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", 1094 | "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" 1095 | }, 1096 | "events": { 1097 | "version": "1.0.2", 1098 | "resolved": "https://registry.npmjs.org/events/-/events-1.0.2.tgz", 1099 | "integrity": "sha1-dYSdz+k9EPsFfDAFWv29UdBqjiQ=" 1100 | }, 1101 | "evp_bytestokey": { 1102 | "version": "1.0.3", 1103 | "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", 1104 | "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", 1105 | "requires": { 1106 | "md5.js": "1.3.4", 1107 | "safe-buffer": "5.1.1" 1108 | } 1109 | }, 1110 | "extend": { 1111 | "version": "3.0.1", 1112 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", 1113 | "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" 1114 | }, 1115 | "extsprintf": { 1116 | "version": "1.3.0", 1117 | "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", 1118 | "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" 1119 | }, 1120 | "failing-code": { 1121 | "version": "0.1.0", 1122 | "resolved": "https://registry.npmjs.org/failing-code/-/failing-code-0.1.0.tgz", 1123 | "integrity": "sha1-plqIawkQgYQy4wMIcCFIZ3pukBE=", 1124 | "requires": { 1125 | "failing-line": "0.1.0", 1126 | "is-node": "0.0.0" 1127 | } 1128 | }, 1129 | "failing-line": { 1130 | "version": "0.1.0", 1131 | "resolved": "https://registry.npmjs.org/failing-line/-/failing-line-0.1.0.tgz", 1132 | "integrity": "sha1-/BT9jwgBpkHxFE5OiTAQq2/qJJY=" 1133 | }, 1134 | "fast-deep-equal": { 1135 | "version": "1.1.0", 1136 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", 1137 | "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=" 1138 | }, 1139 | "fast-json-stable-stringify": { 1140 | "version": "2.0.0", 1141 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", 1142 | "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" 1143 | }, 1144 | "faye-websocket": { 1145 | "version": "0.7.3", 1146 | "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.7.3.tgz", 1147 | "integrity": "sha1-zEB0x/Sk39A69U3WXDVLE1EyzhE=", 1148 | "requires": { 1149 | "websocket-driver": "0.7.0" 1150 | } 1151 | }, 1152 | "filter-stack": { 1153 | "version": "0.0.0", 1154 | "resolved": "https://registry.npmjs.org/filter-stack/-/filter-stack-0.0.0.tgz", 1155 | "integrity": "sha1-gpLpFtMdpQS0OzemuM5vvAbdWxA=" 1156 | }, 1157 | "flat-glob": { 1158 | "version": "0.0.1", 1159 | "resolved": "https://registry.npmjs.org/flat-glob/-/flat-glob-0.0.1.tgz", 1160 | "integrity": "sha1-GXcFt8wt8f8aroJGeoFZFLxGSGE=", 1161 | "requires": { 1162 | "flatten-array": "0.0.3", 1163 | "glob": "3.2.11", 1164 | "iter": "0.0.5", 1165 | "uniques": "0.0.1" 1166 | }, 1167 | "dependencies": { 1168 | "glob": { 1169 | "version": "3.2.11", 1170 | "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", 1171 | "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", 1172 | "requires": { 1173 | "inherits": "2.0.3", 1174 | "minimatch": "0.3.0" 1175 | } 1176 | }, 1177 | "minimatch": { 1178 | "version": "0.3.0", 1179 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", 1180 | "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=", 1181 | "requires": { 1182 | "lru-cache": "2.7.3", 1183 | "sigmund": "1.0.1" 1184 | } 1185 | } 1186 | } 1187 | }, 1188 | "flatten-array": { 1189 | "version": "0.0.3", 1190 | "resolved": "https://registry.npmjs.org/flatten-array/-/flatten-array-0.0.3.tgz", 1191 | "integrity": "sha1-7LuhM06VwSoCJHhASq+tN3/oNbM=" 1192 | }, 1193 | "for-each": { 1194 | "version": "0.3.2", 1195 | "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.2.tgz", 1196 | "integrity": "sha1-LEBFC5NI6X8oEyJZO6lnBLmr1NQ=", 1197 | "requires": { 1198 | "is-function": "1.0.1" 1199 | } 1200 | }, 1201 | "foreach": { 1202 | "version": "2.0.5", 1203 | "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", 1204 | "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" 1205 | }, 1206 | "forever-agent": { 1207 | "version": "0.6.1", 1208 | "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", 1209 | "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" 1210 | }, 1211 | "form-data": { 1212 | "version": "2.3.2", 1213 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", 1214 | "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", 1215 | "requires": { 1216 | "asynckit": "0.4.0", 1217 | "combined-stream": "1.0.6", 1218 | "mime-types": "2.1.18" 1219 | } 1220 | }, 1221 | "format-text": { 1222 | "version": "0.0.3", 1223 | "resolved": "https://registry.npmjs.org/format-text/-/format-text-0.0.3.tgz", 1224 | "integrity": "sha1-tG1YV+C0qvM3l68zEwCdgmcJlxg=" 1225 | }, 1226 | "fs.realpath": { 1227 | "version": "1.0.0", 1228 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1229 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" 1230 | }, 1231 | "fsevents": { 1232 | "version": "0.3.8", 1233 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-0.3.8.tgz", 1234 | "integrity": "sha1-mZLxAyySXIKVVNDVmAHcoDE6U1Y=", 1235 | "optional": true, 1236 | "requires": { 1237 | "nan": "2.10.0" 1238 | } 1239 | }, 1240 | "function-bind": { 1241 | "version": "1.1.1", 1242 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1243 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 1244 | }, 1245 | "getpass": { 1246 | "version": "0.1.7", 1247 | "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", 1248 | "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", 1249 | "requires": { 1250 | "assert-plus": "1.0.0" 1251 | } 1252 | }, 1253 | "glob": { 1254 | "version": "4.5.3", 1255 | "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", 1256 | "integrity": "sha1-xstz0yJsHv7wTePFbQEvAzd+4V8=", 1257 | "requires": { 1258 | "inflight": "1.0.6", 1259 | "inherits": "2.0.3", 1260 | "minimatch": "2.0.10", 1261 | "once": "1.4.0" 1262 | }, 1263 | "dependencies": { 1264 | "minimatch": { 1265 | "version": "2.0.10", 1266 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", 1267 | "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", 1268 | "requires": { 1269 | "brace-expansion": "1.1.11" 1270 | } 1271 | } 1272 | } 1273 | }, 1274 | "globals": { 1275 | "version": "9.18.0", 1276 | "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", 1277 | "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==" 1278 | }, 1279 | "graceful-fs": { 1280 | "version": "2.0.3", 1281 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz", 1282 | "integrity": "sha1-fNLNsiiko/Nule+mzBQt59GhNtA=" 1283 | }, 1284 | "har-schema": { 1285 | "version": "2.0.0", 1286 | "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", 1287 | "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" 1288 | }, 1289 | "har-validator": { 1290 | "version": "5.0.3", 1291 | "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", 1292 | "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", 1293 | "requires": { 1294 | "ajv": "5.5.2", 1295 | "har-schema": "2.0.0" 1296 | } 1297 | }, 1298 | "has": { 1299 | "version": "1.0.1", 1300 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", 1301 | "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", 1302 | "requires": { 1303 | "function-bind": "1.1.1" 1304 | } 1305 | }, 1306 | "has-ansi": { 1307 | "version": "2.0.0", 1308 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", 1309 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", 1310 | "requires": { 1311 | "ansi-regex": "2.1.1" 1312 | } 1313 | }, 1314 | "hash-base": { 1315 | "version": "3.0.4", 1316 | "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", 1317 | "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", 1318 | "requires": { 1319 | "inherits": "2.0.3", 1320 | "safe-buffer": "5.1.1" 1321 | } 1322 | }, 1323 | "hash.js": { 1324 | "version": "1.1.3", 1325 | "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", 1326 | "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", 1327 | "requires": { 1328 | "inherits": "2.0.3", 1329 | "minimalistic-assert": "1.0.1" 1330 | } 1331 | }, 1332 | "hawk": { 1333 | "version": "6.0.2", 1334 | "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", 1335 | "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", 1336 | "requires": { 1337 | "boom": "4.3.1", 1338 | "cryptiles": "3.1.2", 1339 | "hoek": "4.2.1", 1340 | "sntp": "2.1.0" 1341 | } 1342 | }, 1343 | "hmac-drbg": { 1344 | "version": "1.0.1", 1345 | "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", 1346 | "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", 1347 | "requires": { 1348 | "hash.js": "1.1.3", 1349 | "minimalistic-assert": "1.0.1", 1350 | "minimalistic-crypto-utils": "1.0.1" 1351 | } 1352 | }, 1353 | "hoek": { 1354 | "version": "4.2.1", 1355 | "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", 1356 | "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==" 1357 | }, 1358 | "home-or-tmp": { 1359 | "version": "2.0.0", 1360 | "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", 1361 | "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", 1362 | "requires": { 1363 | "os-homedir": "1.0.2", 1364 | "os-tmpdir": "1.0.2" 1365 | } 1366 | }, 1367 | "http-browserify": { 1368 | "version": "1.7.0", 1369 | "resolved": "https://registry.npmjs.org/http-browserify/-/http-browserify-1.7.0.tgz", 1370 | "integrity": "sha1-M3la3nLfiKz7/TZ3PO/tp2RzWyA=", 1371 | "requires": { 1372 | "Base64": "0.2.1", 1373 | "inherits": "2.0.3" 1374 | } 1375 | }, 1376 | "http-parser-js": { 1377 | "version": "0.4.11", 1378 | "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.11.tgz", 1379 | "integrity": "sha512-QCR5O2AjjMW8Mo4HyI1ctFcv+O99j/0g367V3YoVnrNw5hkDvAWZD0lWGcc+F4yN3V55USPCVix4efb75HxFfA==" 1380 | }, 1381 | "http-signature": { 1382 | "version": "1.2.0", 1383 | "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", 1384 | "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", 1385 | "requires": { 1386 | "assert-plus": "1.0.0", 1387 | "jsprim": "1.4.1", 1388 | "sshpk": "1.14.1" 1389 | } 1390 | }, 1391 | "https-browserify": { 1392 | "version": "0.0.1", 1393 | "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz", 1394 | "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=" 1395 | }, 1396 | "ieee754": { 1397 | "version": "1.1.11", 1398 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.11.tgz", 1399 | "integrity": "sha512-VhDzCKN7K8ufStx/CLj5/PDTMgph+qwN5Pkd5i0sGnVwk56zJ0lkT8Qzi1xqWLS0Wp29DgDtNeS7v8/wMoZeHg==" 1400 | }, 1401 | "indexof": { 1402 | "version": "0.0.1", 1403 | "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", 1404 | "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" 1405 | }, 1406 | "inflight": { 1407 | "version": "1.0.6", 1408 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1409 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 1410 | "requires": { 1411 | "once": "1.4.0", 1412 | "wrappy": "1.0.2" 1413 | } 1414 | }, 1415 | "inherits": { 1416 | "version": "2.0.3", 1417 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 1418 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" 1419 | }, 1420 | "inline-source-map": { 1421 | "version": "0.3.1", 1422 | "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.3.1.tgz", 1423 | "integrity": "sha1-pSi1FOaJ/OkNswiehw2S9Sestes=", 1424 | "requires": { 1425 | "source-map": "0.3.0" 1426 | }, 1427 | "dependencies": { 1428 | "source-map": { 1429 | "version": "0.3.0", 1430 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.3.0.tgz", 1431 | "integrity": "sha1-hYb7mloAXltQHiHNGLbyG0V60fk=", 1432 | "requires": { 1433 | "amdefine": "1.0.1" 1434 | } 1435 | } 1436 | } 1437 | }, 1438 | "insert-module-globals": { 1439 | "version": "6.6.3", 1440 | "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-6.6.3.tgz", 1441 | "integrity": "sha1-IGOOKaMPntHKLjqCX7wsulJG3fw=", 1442 | "requires": { 1443 | "JSONStream": "1.3.2", 1444 | "combine-source-map": "0.6.1", 1445 | "concat-stream": "1.4.11", 1446 | "is-buffer": "1.1.6", 1447 | "lexical-scope": "1.2.0", 1448 | "process": "0.11.10", 1449 | "through2": "1.1.1", 1450 | "xtend": "4.0.1" 1451 | }, 1452 | "dependencies": { 1453 | "JSONStream": { 1454 | "version": "1.3.2", 1455 | "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.2.tgz", 1456 | "integrity": "sha1-wQI3G27Dp887hHygDCC7D85Mbeo=", 1457 | "requires": { 1458 | "jsonparse": "1.3.1", 1459 | "through": "2.3.8" 1460 | } 1461 | }, 1462 | "combine-source-map": { 1463 | "version": "0.6.1", 1464 | "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.6.1.tgz", 1465 | "integrity": "sha1-m0oJwxYDPXaODxHgKfonMOB5rZY=", 1466 | "requires": { 1467 | "convert-source-map": "1.1.3", 1468 | "inline-source-map": "0.5.0", 1469 | "lodash.memoize": "3.0.4", 1470 | "source-map": "0.4.4" 1471 | } 1472 | }, 1473 | "concat-stream": { 1474 | "version": "1.4.11", 1475 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.4.11.tgz", 1476 | "integrity": "sha512-X3JMh8+4je3U1cQpG87+f9lXHDrqcb2MVLg9L7o8b1UZ0DzhRrUpdn65ttzu10PpJPPI3MQNkis+oha6TSA9Mw==", 1477 | "requires": { 1478 | "inherits": "2.0.3", 1479 | "readable-stream": "1.1.14", 1480 | "typedarray": "0.0.6" 1481 | } 1482 | }, 1483 | "convert-source-map": { 1484 | "version": "1.1.3", 1485 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz", 1486 | "integrity": "sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=" 1487 | }, 1488 | "inline-source-map": { 1489 | "version": "0.5.0", 1490 | "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.5.0.tgz", 1491 | "integrity": "sha1-Skxd2OT7Xps82mDIIt+tyu5m4K8=", 1492 | "requires": { 1493 | "source-map": "0.4.4" 1494 | } 1495 | }, 1496 | "jsonparse": { 1497 | "version": "1.3.1", 1498 | "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", 1499 | "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=" 1500 | }, 1501 | "process": { 1502 | "version": "0.11.10", 1503 | "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", 1504 | "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" 1505 | }, 1506 | "source-map": { 1507 | "version": "0.4.4", 1508 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", 1509 | "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", 1510 | "requires": { 1511 | "amdefine": "1.0.1" 1512 | } 1513 | } 1514 | } 1515 | }, 1516 | "invariant": { 1517 | "version": "2.2.4", 1518 | "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", 1519 | "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", 1520 | "requires": { 1521 | "loose-envify": "1.3.1" 1522 | } 1523 | }, 1524 | "is-array": { 1525 | "version": "1.0.1", 1526 | "resolved": "https://registry.npmjs.org/is-array/-/is-array-1.0.1.tgz", 1527 | "integrity": "sha1-6YUMwsyGDDvAl36EzPDdRkWEJ5o=" 1528 | }, 1529 | "is-buffer": { 1530 | "version": "1.1.6", 1531 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", 1532 | "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" 1533 | }, 1534 | "is-callable": { 1535 | "version": "1.1.3", 1536 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", 1537 | "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=" 1538 | }, 1539 | "is-date-object": { 1540 | "version": "1.0.1", 1541 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", 1542 | "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" 1543 | }, 1544 | "is-finite": { 1545 | "version": "1.0.2", 1546 | "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", 1547 | "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", 1548 | "requires": { 1549 | "number-is-nan": "1.0.1" 1550 | } 1551 | }, 1552 | "is-function": { 1553 | "version": "1.0.1", 1554 | "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.1.tgz", 1555 | "integrity": "sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU=" 1556 | }, 1557 | "is-node": { 1558 | "version": "0.0.0", 1559 | "resolved": "https://registry.npmjs.org/is-node/-/is-node-0.0.0.tgz", 1560 | "integrity": "sha1-h91lC4f7ajnFDKr+4On2g17BXkE=" 1561 | }, 1562 | "is-regex": { 1563 | "version": "1.0.4", 1564 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", 1565 | "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", 1566 | "requires": { 1567 | "has": "1.0.1" 1568 | } 1569 | }, 1570 | "is-symbol": { 1571 | "version": "1.0.1", 1572 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", 1573 | "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=" 1574 | }, 1575 | "is-typedarray": { 1576 | "version": "1.0.0", 1577 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", 1578 | "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" 1579 | }, 1580 | "isarray": { 1581 | "version": "0.0.1", 1582 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", 1583 | "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" 1584 | }, 1585 | "isstream": { 1586 | "version": "0.1.2", 1587 | "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", 1588 | "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" 1589 | }, 1590 | "iter": { 1591 | "version": "0.0.5", 1592 | "resolved": "https://registry.npmjs.org/iter/-/iter-0.0.5.tgz", 1593 | "integrity": "sha1-BSoARI9vWjgFuGJkh3g18JYzcyQ=", 1594 | "requires": { 1595 | "just-next-tick": "0.0.0" 1596 | } 1597 | }, 1598 | "js-tokens": { 1599 | "version": "3.0.2", 1600 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", 1601 | "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" 1602 | }, 1603 | "jsbn": { 1604 | "version": "0.1.1", 1605 | "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", 1606 | "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", 1607 | "optional": true 1608 | }, 1609 | "jsesc": { 1610 | "version": "1.3.0", 1611 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", 1612 | "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=" 1613 | }, 1614 | "json-schema": { 1615 | "version": "0.2.3", 1616 | "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", 1617 | "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" 1618 | }, 1619 | "json-schema-traverse": { 1620 | "version": "0.3.1", 1621 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", 1622 | "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" 1623 | }, 1624 | "json-stable-stringify": { 1625 | "version": "0.0.1", 1626 | "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz", 1627 | "integrity": "sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U=", 1628 | "requires": { 1629 | "jsonify": "0.0.0" 1630 | } 1631 | }, 1632 | "json-stringify-safe": { 1633 | "version": "5.0.1", 1634 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", 1635 | "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" 1636 | }, 1637 | "json5": { 1638 | "version": "0.5.1", 1639 | "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", 1640 | "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=" 1641 | }, 1642 | "jsonify": { 1643 | "version": "0.0.0", 1644 | "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", 1645 | "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" 1646 | }, 1647 | "jsonparse": { 1648 | "version": "0.0.5", 1649 | "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-0.0.5.tgz", 1650 | "integrity": "sha1-MwVCrT8KZUZlt3jz6y2an6UHrGQ=" 1651 | }, 1652 | "jsprim": { 1653 | "version": "1.4.1", 1654 | "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", 1655 | "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", 1656 | "requires": { 1657 | "assert-plus": "1.0.0", 1658 | "extsprintf": "1.3.0", 1659 | "json-schema": "0.2.3", 1660 | "verror": "1.10.0" 1661 | } 1662 | }, 1663 | "just-next-tick": { 1664 | "version": "0.0.0", 1665 | "resolved": "https://registry.npmjs.org/just-next-tick/-/just-next-tick-0.0.0.tgz", 1666 | "integrity": "sha1-Mn4wuqeb3vb7Xb7KYgSOiusKlHg=" 1667 | }, 1668 | "key-event": { 1669 | "version": "0.0.0", 1670 | "resolved": "https://registry.npmjs.org/key-event/-/key-event-0.0.0.tgz", 1671 | "integrity": "sha1-TuC3mkjjHiUnsOvvhibizOMuN0I=", 1672 | "requires": { 1673 | "dom-event": "0.0.0", 1674 | "keyname-of": "0.0.0" 1675 | }, 1676 | "dependencies": { 1677 | "dom-event": { 1678 | "version": "0.0.0", 1679 | "resolved": "https://registry.npmjs.org/dom-event/-/dom-event-0.0.0.tgz", 1680 | "integrity": "sha1-/uJJjX4RPrmvGWCsgS3UCFwMvVs=" 1681 | } 1682 | } 1683 | }, 1684 | "keyname-of": { 1685 | "version": "0.0.0", 1686 | "resolved": "https://registry.npmjs.org/keyname-of/-/keyname-of-0.0.0.tgz", 1687 | "integrity": "sha1-iSXc8/KLf9iYp4ErD7AvHZwuuno=", 1688 | "requires": { 1689 | "keynames": "1.0.0" 1690 | } 1691 | }, 1692 | "keynames": { 1693 | "version": "1.0.0", 1694 | "resolved": "https://registry.npmjs.org/keynames/-/keynames-1.0.0.tgz", 1695 | "integrity": "sha1-d8gqMXna0Ia+a7GXTJNVXz/VuGI=" 1696 | }, 1697 | "labeled-stream-splicer": { 1698 | "version": "1.0.2", 1699 | "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-1.0.2.tgz", 1700 | "integrity": "sha1-RhUzFTd4SYHo/SZOHzpDTE4N3WU=", 1701 | "requires": { 1702 | "inherits": "2.0.3", 1703 | "isarray": "0.0.1", 1704 | "stream-splicer": "1.3.2" 1705 | } 1706 | }, 1707 | "left-pad": { 1708 | "version": "0.0.3", 1709 | "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-0.0.3.tgz", 1710 | "integrity": "sha1-BNmbSh6vnl95wF5ddF1T7dGqiqE=" 1711 | }, 1712 | "lexical-scope": { 1713 | "version": "1.2.0", 1714 | "resolved": "https://registry.npmjs.org/lexical-scope/-/lexical-scope-1.2.0.tgz", 1715 | "integrity": "sha1-/Ope3HBKSzqHls3KQZw6CvryLfQ=", 1716 | "requires": { 1717 | "astw": "2.2.0" 1718 | } 1719 | }, 1720 | "local-debug": { 1721 | "version": "0.0.0", 1722 | "resolved": "https://registry.npmjs.org/local-debug/-/local-debug-0.0.0.tgz", 1723 | "integrity": "sha1-ygIDcaFnndIh9JtMKLQlVPe/3qA=", 1724 | "requires": { 1725 | "debug": "2.6.9" 1726 | } 1727 | }, 1728 | "lodash": { 1729 | "version": "4.17.5", 1730 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", 1731 | "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==" 1732 | }, 1733 | "lodash.assign": { 1734 | "version": "4.2.0", 1735 | "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", 1736 | "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=" 1737 | }, 1738 | "lodash.clone": { 1739 | "version": "4.5.0", 1740 | "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz", 1741 | "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=" 1742 | }, 1743 | "lodash.fill": { 1744 | "version": "3.4.0", 1745 | "resolved": "https://registry.npmjs.org/lodash.fill/-/lodash.fill-3.4.0.tgz", 1746 | "integrity": "sha1-o8dK5kDQU63w3CB5+HIHiOi/74U=" 1747 | }, 1748 | "lodash.flatten": { 1749 | "version": "4.4.0", 1750 | "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", 1751 | "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=" 1752 | }, 1753 | "lodash.intersection": { 1754 | "version": "4.4.0", 1755 | "resolved": "https://registry.npmjs.org/lodash.intersection/-/lodash.intersection-4.4.0.tgz", 1756 | "integrity": "sha1-ChG6Yx0OlcI8fy9Mu5ppLtF45wU=" 1757 | }, 1758 | "lodash.memoize": { 1759 | "version": "3.0.4", 1760 | "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz", 1761 | "integrity": "sha1-LcvSwofLwKVcxCMovQxzYVDVPj8=" 1762 | }, 1763 | "lodash.merge": { 1764 | "version": "4.6.1", 1765 | "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz", 1766 | "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==" 1767 | }, 1768 | "lodash.omit": { 1769 | "version": "4.5.0", 1770 | "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz", 1771 | "integrity": "sha1-brGa5aHuHdnfC5aeZs4Lf6MLXmA=" 1772 | }, 1773 | "lodash.partialright": { 1774 | "version": "4.2.1", 1775 | "resolved": "https://registry.npmjs.org/lodash.partialright/-/lodash.partialright-4.2.1.tgz", 1776 | "integrity": "sha1-ATDYDoM2MmTUAHTzKbij56ihzEs=" 1777 | }, 1778 | "lodash.pick": { 1779 | "version": "4.4.0", 1780 | "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", 1781 | "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=" 1782 | }, 1783 | "lodash.uniq": { 1784 | "version": "4.5.0", 1785 | "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", 1786 | "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" 1787 | }, 1788 | "long": { 1789 | "version": "3.2.0", 1790 | "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", 1791 | "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s=" 1792 | }, 1793 | "loose-envify": { 1794 | "version": "1.3.1", 1795 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", 1796 | "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", 1797 | "requires": { 1798 | "js-tokens": "3.0.2" 1799 | } 1800 | }, 1801 | "lru-cache": { 1802 | "version": "2.7.3", 1803 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", 1804 | "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=" 1805 | }, 1806 | "md5.js": { 1807 | "version": "1.3.4", 1808 | "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", 1809 | "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", 1810 | "requires": { 1811 | "hash-base": "3.0.4", 1812 | "inherits": "2.0.3" 1813 | } 1814 | }, 1815 | "merge": { 1816 | "version": "1.0.0", 1817 | "resolved": "https://registry.npmjs.org/merge/-/merge-1.0.0.tgz", 1818 | "integrity": "sha1-tEOrRtg3xJHmIiBWqw95M+yzVo8=" 1819 | }, 1820 | "miller-rabin": { 1821 | "version": "4.0.1", 1822 | "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", 1823 | "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", 1824 | "requires": { 1825 | "bn.js": "4.11.8", 1826 | "brorand": "1.1.0" 1827 | } 1828 | }, 1829 | "mime": { 1830 | "version": "1.6.0", 1831 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 1832 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" 1833 | }, 1834 | "mime-db": { 1835 | "version": "1.33.0", 1836 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", 1837 | "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" 1838 | }, 1839 | "mime-types": { 1840 | "version": "2.1.18", 1841 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", 1842 | "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", 1843 | "requires": { 1844 | "mime-db": "1.33.0" 1845 | } 1846 | }, 1847 | "minimalistic-assert": { 1848 | "version": "1.0.1", 1849 | "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", 1850 | "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" 1851 | }, 1852 | "minimalistic-crypto-utils": { 1853 | "version": "1.0.1", 1854 | "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", 1855 | "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" 1856 | }, 1857 | "minimatch": { 1858 | "version": "3.0.4", 1859 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1860 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 1861 | "requires": { 1862 | "brace-expansion": "1.1.11" 1863 | } 1864 | }, 1865 | "minimist": { 1866 | "version": "0.0.8", 1867 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 1868 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" 1869 | }, 1870 | "mkdirp": { 1871 | "version": "0.5.1", 1872 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 1873 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 1874 | "requires": { 1875 | "minimist": "0.0.8" 1876 | } 1877 | }, 1878 | "module-deps": { 1879 | "version": "3.9.1", 1880 | "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-3.9.1.tgz", 1881 | "integrity": "sha1-6nXK+RmQkNJbDVUStaysuW5/h/M=", 1882 | "requires": { 1883 | "JSONStream": "1.3.2", 1884 | "browser-resolve": "1.11.2", 1885 | "concat-stream": "1.4.11", 1886 | "defined": "1.0.0", 1887 | "detective": "4.7.1", 1888 | "duplexer2": "0.0.2", 1889 | "inherits": "2.0.3", 1890 | "parents": "1.0.1", 1891 | "readable-stream": "1.1.14", 1892 | "resolve": "1.7.1", 1893 | "stream-combiner2": "1.0.2", 1894 | "subarg": "1.0.0", 1895 | "through2": "1.1.1", 1896 | "xtend": "4.0.1" 1897 | }, 1898 | "dependencies": { 1899 | "JSONStream": { 1900 | "version": "1.3.2", 1901 | "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.2.tgz", 1902 | "integrity": "sha1-wQI3G27Dp887hHygDCC7D85Mbeo=", 1903 | "requires": { 1904 | "jsonparse": "1.3.1", 1905 | "through": "2.3.8" 1906 | } 1907 | }, 1908 | "concat-stream": { 1909 | "version": "1.4.11", 1910 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.4.11.tgz", 1911 | "integrity": "sha512-X3JMh8+4je3U1cQpG87+f9lXHDrqcb2MVLg9L7o8b1UZ0DzhRrUpdn65ttzu10PpJPPI3MQNkis+oha6TSA9Mw==", 1912 | "requires": { 1913 | "inherits": "2.0.3", 1914 | "readable-stream": "1.1.14", 1915 | "typedarray": "0.0.6" 1916 | } 1917 | }, 1918 | "defined": { 1919 | "version": "1.0.0", 1920 | "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", 1921 | "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" 1922 | }, 1923 | "jsonparse": { 1924 | "version": "1.3.1", 1925 | "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", 1926 | "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=" 1927 | }, 1928 | "parents": { 1929 | "version": "1.0.1", 1930 | "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz", 1931 | "integrity": "sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E=", 1932 | "requires": { 1933 | "path-platform": "0.11.15" 1934 | } 1935 | }, 1936 | "resolve": { 1937 | "version": "1.7.1", 1938 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", 1939 | "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", 1940 | "requires": { 1941 | "path-parse": "1.0.5" 1942 | } 1943 | } 1944 | } 1945 | }, 1946 | "ms": { 1947 | "version": "2.0.0", 1948 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1949 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 1950 | }, 1951 | "nan": { 1952 | "version": "2.10.0", 1953 | "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", 1954 | "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", 1955 | "optional": true 1956 | }, 1957 | "new-command": { 1958 | "version": "1.1.4", 1959 | "resolved": "https://registry.npmjs.org/new-command/-/new-command-1.1.4.tgz", 1960 | "integrity": "sha1-TRxDZ4x+OKGAJBKeqQCPevD8nQw=", 1961 | "requires": { 1962 | "minimist": "0.0.8", 1963 | "show-help": "2.0.1", 1964 | "show-version": "1.0.1" 1965 | } 1966 | }, 1967 | "new-element": { 1968 | "version": "0.0.2", 1969 | "resolved": "https://registry.npmjs.org/new-element/-/new-element-0.0.2.tgz", 1970 | "integrity": "sha1-7/hQ/yPv0R4ZPeLJpc2ITr1OT1s=", 1971 | "requires": { 1972 | "domify": "1.0.0", 1973 | "format-text": "0.0.3" 1974 | } 1975 | }, 1976 | "new-format": { 1977 | "version": "0.0.1", 1978 | "resolved": "https://registry.npmjs.org/new-format/-/new-format-0.0.1.tgz", 1979 | "integrity": "sha1-q31GG/+XFdpjrK01D7I1IcZ6qoI=" 1980 | }, 1981 | "node-forge": { 1982 | "version": "0.7.5", 1983 | "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz", 1984 | "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==" 1985 | }, 1986 | "node-jose": { 1987 | "version": "0.11.0", 1988 | "resolved": "https://registry.npmjs.org/node-jose/-/node-jose-0.11.0.tgz", 1989 | "integrity": "sha512-bWnCsBzFgfsxzNZ77Rdc+4pGxRV8NRre5yyGzjiTgZOFpi6n1tthXrMATMwzmUo0Nn45aUuQqYlN6URx8MFmFw==", 1990 | "requires": { 1991 | "base64url": "2.0.0", 1992 | "es6-promise": "4.2.4", 1993 | "lodash.assign": "4.2.0", 1994 | "lodash.clone": "4.5.0", 1995 | "lodash.fill": "3.4.0", 1996 | "lodash.flatten": "4.4.0", 1997 | "lodash.intersection": "4.4.0", 1998 | "lodash.merge": "4.6.1", 1999 | "lodash.omit": "4.5.0", 2000 | "lodash.partialright": "4.2.1", 2001 | "lodash.pick": "4.4.0", 2002 | "lodash.uniq": "4.5.0", 2003 | "long": "3.2.0", 2004 | "node-forge": "0.7.5", 2005 | "uuid": "3.2.1" 2006 | } 2007 | }, 2008 | "number-is-nan": { 2009 | "version": "1.0.1", 2010 | "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", 2011 | "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" 2012 | }, 2013 | "oauth-sign": { 2014 | "version": "0.8.2", 2015 | "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", 2016 | "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" 2017 | }, 2018 | "object-inspect": { 2019 | "version": "1.5.0", 2020 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.5.0.tgz", 2021 | "integrity": "sha512-UmOFbHbwvv+XHj7BerrhVq+knjceBdkvU5AriwLMvhv2qi+e7DJzxfBeFpILEjVzCp+xA+W/pIf06RGPWlZNfw==" 2022 | }, 2023 | "object-keys": { 2024 | "version": "1.0.11", 2025 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", 2026 | "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=" 2027 | }, 2028 | "once": { 2029 | "version": "1.4.0", 2030 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 2031 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 2032 | "requires": { 2033 | "wrappy": "1.0.2" 2034 | } 2035 | }, 2036 | "optimist": { 2037 | "version": "0.3.7", 2038 | "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz", 2039 | "integrity": "sha1-yQlBrVnkJzMokjB00s8ufLxuwNk=", 2040 | "requires": { 2041 | "wordwrap": "0.0.3" 2042 | } 2043 | }, 2044 | "os-browserify": { 2045 | "version": "0.1.2", 2046 | "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.1.2.tgz", 2047 | "integrity": "sha1-ScoCk+CxlZCl9d4Qx/JlphfY/lQ=" 2048 | }, 2049 | "os-homedir": { 2050 | "version": "1.0.2", 2051 | "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", 2052 | "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" 2053 | }, 2054 | "os-tmpdir": { 2055 | "version": "1.0.2", 2056 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 2057 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" 2058 | }, 2059 | "package-path": { 2060 | "version": "0.0.1", 2061 | "resolved": "https://registry.npmjs.org/package-path/-/package-path-0.0.1.tgz", 2062 | "integrity": "sha1-9Bp82J7UXGQZbre0Miiuo3o6rao=" 2063 | }, 2064 | "pako": { 2065 | "version": "0.2.9", 2066 | "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", 2067 | "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=" 2068 | }, 2069 | "parallel-loop": { 2070 | "version": "0.0.0", 2071 | "resolved": "https://registry.npmjs.org/parallel-loop/-/parallel-loop-0.0.0.tgz", 2072 | "integrity": "sha1-hu4Ns3/MNfgGGd+XzHbR6hfuvQ8=" 2073 | }, 2074 | "parents": { 2075 | "version": "0.0.3", 2076 | "resolved": "https://registry.npmjs.org/parents/-/parents-0.0.3.tgz", 2077 | "integrity": "sha1-+iEvAk2fpjGNu2tM5nbIvkk7nEM=", 2078 | "requires": { 2079 | "path-platform": "0.0.1" 2080 | }, 2081 | "dependencies": { 2082 | "path-platform": { 2083 | "version": "0.0.1", 2084 | "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.0.1.tgz", 2085 | "integrity": "sha1-tVhdfDxGPYmqAGDYZhHPGv1hfio=" 2086 | } 2087 | } 2088 | }, 2089 | "parse-asn1": { 2090 | "version": "5.1.1", 2091 | "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", 2092 | "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==", 2093 | "requires": { 2094 | "asn1.js": "4.10.1", 2095 | "browserify-aes": "1.2.0", 2096 | "create-hash": "1.2.0", 2097 | "evp_bytestokey": "1.0.3", 2098 | "pbkdf2": "3.0.14" 2099 | } 2100 | }, 2101 | "path-browserify": { 2102 | "version": "0.0.0", 2103 | "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", 2104 | "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=" 2105 | }, 2106 | "path-is-absolute": { 2107 | "version": "1.0.1", 2108 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 2109 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" 2110 | }, 2111 | "path-parse": { 2112 | "version": "1.0.5", 2113 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", 2114 | "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=" 2115 | }, 2116 | "path-platform": { 2117 | "version": "0.11.15", 2118 | "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz", 2119 | "integrity": "sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I=" 2120 | }, 2121 | "path-to-regexp": { 2122 | "version": "0.0.2", 2123 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.0.2.tgz", 2124 | "integrity": "sha1-SJ/rBgsxREOlSUqx2i7+0gQKskw=" 2125 | }, 2126 | "pause-function": { 2127 | "version": "0.0.1", 2128 | "resolved": "https://registry.npmjs.org/pause-function/-/pause-function-0.0.1.tgz", 2129 | "integrity": "sha1-4Au5lxW9BpTpue1s2+nZmspn7ss=" 2130 | }, 2131 | "pbkdf2": { 2132 | "version": "3.0.14", 2133 | "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz", 2134 | "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==", 2135 | "requires": { 2136 | "create-hash": "1.2.0", 2137 | "create-hmac": "1.1.7", 2138 | "ripemd160": "2.0.1", 2139 | "safe-buffer": "5.1.1", 2140 | "sha.js": "2.4.11" 2141 | } 2142 | }, 2143 | "performance-now": { 2144 | "version": "2.1.0", 2145 | "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", 2146 | "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" 2147 | }, 2148 | "plist": { 2149 | "version": "0.2.1", 2150 | "resolved": "https://registry.npmjs.org/plist/-/plist-0.2.1.tgz", 2151 | "integrity": "sha1-86PeB4hddz5m2KlngvG+wozystA=", 2152 | "requires": { 2153 | "sax": "0.1.5" 2154 | } 2155 | }, 2156 | "prettify-error": { 2157 | "version": "0.1.1", 2158 | "resolved": "https://registry.npmjs.org/prettify-error/-/prettify-error-0.1.1.tgz", 2159 | "integrity": "sha1-OM8hBpLGOuXRdSftODmC8Qkhwl0=", 2160 | "requires": { 2161 | "failing-code": "0.1.0", 2162 | "format-text": "0.0.3", 2163 | "left-pad": "0.0.0", 2164 | "style-format": "0.0.0" 2165 | }, 2166 | "dependencies": { 2167 | "left-pad": { 2168 | "version": "0.0.0", 2169 | "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-0.0.0.tgz", 2170 | "integrity": "sha1-8YTGEcOznIkrsfOMV4YV8ejf/+Q=" 2171 | } 2172 | } 2173 | }, 2174 | "private": { 2175 | "version": "0.1.8", 2176 | "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", 2177 | "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" 2178 | }, 2179 | "process": { 2180 | "version": "0.8.0", 2181 | "resolved": "https://registry.npmjs.org/process/-/process-0.8.0.tgz", 2182 | "integrity": "sha1-e7r3GH/m3tP9W+DLYQP7qcrLl5g=" 2183 | }, 2184 | "process-nextick-args": { 2185 | "version": "2.0.0", 2186 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", 2187 | "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" 2188 | }, 2189 | "prova": { 2190 | "version": "3.0.0", 2191 | "resolved": "https://registry.npmjs.org/prova/-/prova-3.0.0.tgz", 2192 | "integrity": "sha1-hLsFXDng0Eul6SO3FJyuFTuXM5I=", 2193 | "requires": { 2194 | "browser-launcher": "1.0.0", 2195 | "browserify": "6.3.4", 2196 | "component-delegate": "0.2.4", 2197 | "concat-stream": "1.6.2", 2198 | "default-debug": "0.0.0", 2199 | "dom-classes": "0.0.1", 2200 | "dom-event": "0.0.1", 2201 | "dom-select": "0.0.0", 2202 | "dom-style": "0.0.3", 2203 | "dom-tree": "0.0.1", 2204 | "escape-html": "1.0.3", 2205 | "failing-code": "0.1.0", 2206 | "faye-websocket": "0.7.3", 2207 | "filter-stack": "0.0.0", 2208 | "flat-glob": "0.0.1", 2209 | "format-text": "0.0.3", 2210 | "glob": "4.5.3", 2211 | "is-node": "0.0.0", 2212 | "key-event": "0.0.0", 2213 | "left-pad": "0.0.3", 2214 | "local-debug": "0.0.0", 2215 | "mime": "1.6.0", 2216 | "new-command": "1.1.4", 2217 | "prettify-error": "0.1.1", 2218 | "pubsub": "1.0.2", 2219 | "request": "2.85.0", 2220 | "resumer": "0.0.0", 2221 | "route-map": "0.1.0", 2222 | "run-serially": "0.0.0", 2223 | "set-content-type": "0.0.3", 2224 | "single-line-log": "0.4.1", 2225 | "stream-format": "0.0.3", 2226 | "style-format": "0.0.0", 2227 | "tape": "3.6.1", 2228 | "through": "2.3.8", 2229 | "user-agent-parser": "0.6.0", 2230 | "watchify": "2.6.2" 2231 | }, 2232 | "dependencies": { 2233 | "minimatch": { 2234 | "version": "0.3.0", 2235 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", 2236 | "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=", 2237 | "requires": { 2238 | "lru-cache": "2.7.3", 2239 | "sigmund": "1.0.1" 2240 | } 2241 | }, 2242 | "object-inspect": { 2243 | "version": "0.4.0", 2244 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-0.4.0.tgz", 2245 | "integrity": "sha1-9RV8EWwUVbJDsG7pdwM5LFrYn+w=" 2246 | }, 2247 | "tape": { 2248 | "version": "3.6.1", 2249 | "resolved": "https://registry.npmjs.org/tape/-/tape-3.6.1.tgz", 2250 | "integrity": "sha1-SJPdU+KApfWMDOswwsDrs7zVHh8=", 2251 | "requires": { 2252 | "deep-equal": "0.2.2", 2253 | "defined": "0.0.0", 2254 | "glob": "3.2.11", 2255 | "inherits": "2.0.3", 2256 | "object-inspect": "0.4.0", 2257 | "resumer": "0.0.0", 2258 | "through": "2.3.8" 2259 | }, 2260 | "dependencies": { 2261 | "glob": { 2262 | "version": "3.2.11", 2263 | "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", 2264 | "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", 2265 | "requires": { 2266 | "inherits": "2.0.3", 2267 | "minimatch": "0.3.0" 2268 | } 2269 | } 2270 | } 2271 | } 2272 | } 2273 | }, 2274 | "public-encrypt": { 2275 | "version": "4.0.2", 2276 | "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz", 2277 | "integrity": "sha512-4kJ5Esocg8X3h8YgJsKAuoesBgB7mqH3eowiDzMUPKiRDDE7E/BqqZD1hnTByIaAFiwAw246YEltSq7tdrOH0Q==", 2278 | "requires": { 2279 | "bn.js": "4.11.8", 2280 | "browserify-rsa": "4.0.1", 2281 | "create-hash": "1.2.0", 2282 | "parse-asn1": "5.1.1", 2283 | "randombytes": "2.0.6" 2284 | } 2285 | }, 2286 | "pubsub": { 2287 | "version": "1.0.2", 2288 | "resolved": "https://registry.npmjs.org/pubsub/-/pubsub-1.0.2.tgz", 2289 | "integrity": "sha1-olq+dLeNQgWvWND1SpazvCRr1jg=" 2290 | }, 2291 | "punycode": { 2292 | "version": "1.2.4", 2293 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.2.4.tgz", 2294 | "integrity": "sha1-VACKyXKux0F13vnLpt9/qdORh0A=" 2295 | }, 2296 | "qs": { 2297 | "version": "6.5.1", 2298 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", 2299 | "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" 2300 | }, 2301 | "querystring": { 2302 | "version": "0.2.0", 2303 | "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", 2304 | "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" 2305 | }, 2306 | "querystring-es3": { 2307 | "version": "0.2.1", 2308 | "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", 2309 | "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" 2310 | }, 2311 | "qwery": { 2312 | "version": "3.4.2", 2313 | "resolved": "https://registry.npmjs.org/qwery/-/qwery-3.4.2.tgz", 2314 | "integrity": "sha1-fQrz689Ir1mfLtSY2M45Ajl4pj4=" 2315 | }, 2316 | "randombytes": { 2317 | "version": "2.0.6", 2318 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", 2319 | "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", 2320 | "requires": { 2321 | "safe-buffer": "5.1.1" 2322 | } 2323 | }, 2324 | "randomfill": { 2325 | "version": "1.0.4", 2326 | "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", 2327 | "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", 2328 | "requires": { 2329 | "randombytes": "2.0.6", 2330 | "safe-buffer": "5.1.1" 2331 | } 2332 | }, 2333 | "read-only-stream": { 2334 | "version": "1.1.1", 2335 | "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-1.1.1.tgz", 2336 | "integrity": "sha1-Xad8eZ7ROI0++IoYRxu1kk+KC6E=", 2337 | "requires": { 2338 | "readable-stream": "1.1.14", 2339 | "readable-wrap": "1.0.0" 2340 | } 2341 | }, 2342 | "readable-stream": { 2343 | "version": "1.1.14", 2344 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", 2345 | "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", 2346 | "requires": { 2347 | "core-util-is": "1.0.2", 2348 | "inherits": "2.0.3", 2349 | "isarray": "0.0.1", 2350 | "string_decoder": "0.10.31" 2351 | } 2352 | }, 2353 | "readable-wrap": { 2354 | "version": "1.0.0", 2355 | "resolved": "https://registry.npmjs.org/readable-wrap/-/readable-wrap-1.0.0.tgz", 2356 | "integrity": "sha1-O1ohHGMeEjA6VJkcgGwX564ga/8=", 2357 | "requires": { 2358 | "readable-stream": "1.1.14" 2359 | } 2360 | }, 2361 | "readdirp": { 2362 | "version": "1.3.0", 2363 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-1.3.0.tgz", 2364 | "integrity": "sha1-6vGptGO+moGQ/JrhY6oayTSqNAs=", 2365 | "requires": { 2366 | "graceful-fs": "2.0.3", 2367 | "minimatch": "0.2.14", 2368 | "readable-stream": "1.0.34" 2369 | }, 2370 | "dependencies": { 2371 | "minimatch": { 2372 | "version": "0.2.14", 2373 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", 2374 | "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", 2375 | "requires": { 2376 | "lru-cache": "2.7.3", 2377 | "sigmund": "1.0.1" 2378 | } 2379 | }, 2380 | "readable-stream": { 2381 | "version": "1.0.34", 2382 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", 2383 | "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", 2384 | "requires": { 2385 | "core-util-is": "1.0.2", 2386 | "inherits": "2.0.3", 2387 | "isarray": "0.0.1", 2388 | "string_decoder": "0.10.31" 2389 | } 2390 | } 2391 | } 2392 | }, 2393 | "regenerator-runtime": { 2394 | "version": "0.11.1", 2395 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", 2396 | "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" 2397 | }, 2398 | "repeating": { 2399 | "version": "2.0.1", 2400 | "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", 2401 | "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", 2402 | "requires": { 2403 | "is-finite": "1.0.2" 2404 | } 2405 | }, 2406 | "request": { 2407 | "version": "2.85.0", 2408 | "resolved": "https://registry.npmjs.org/request/-/request-2.85.0.tgz", 2409 | "integrity": "sha512-8H7Ehijd4js+s6wuVPLjwORxD4zeuyjYugprdOXlPSqaApmL/QOy+EB/beICHVCHkGMKNh5rvihb5ov+IDw4mg==", 2410 | "requires": { 2411 | "aws-sign2": "0.7.0", 2412 | "aws4": "1.7.0", 2413 | "caseless": "0.12.0", 2414 | "combined-stream": "1.0.6", 2415 | "extend": "3.0.1", 2416 | "forever-agent": "0.6.1", 2417 | "form-data": "2.3.2", 2418 | "har-validator": "5.0.3", 2419 | "hawk": "6.0.2", 2420 | "http-signature": "1.2.0", 2421 | "is-typedarray": "1.0.0", 2422 | "isstream": "0.1.2", 2423 | "json-stringify-safe": "5.0.1", 2424 | "mime-types": "2.1.18", 2425 | "oauth-sign": "0.8.2", 2426 | "performance-now": "2.1.0", 2427 | "qs": "6.5.1", 2428 | "safe-buffer": "5.1.1", 2429 | "stringstream": "0.0.5", 2430 | "tough-cookie": "2.3.4", 2431 | "tunnel-agent": "0.6.0", 2432 | "uuid": "3.2.1" 2433 | } 2434 | }, 2435 | "resolve": { 2436 | "version": "0.7.4", 2437 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-0.7.4.tgz", 2438 | "integrity": "sha1-OVqe+ehz+/4SvRRAi9kbuTYAPWk=" 2439 | }, 2440 | "resumer": { 2441 | "version": "0.0.0", 2442 | "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", 2443 | "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=", 2444 | "requires": { 2445 | "through": "2.3.8" 2446 | } 2447 | }, 2448 | "rfile": { 2449 | "version": "1.0.0", 2450 | "resolved": "https://registry.npmjs.org/rfile/-/rfile-1.0.0.tgz", 2451 | "integrity": "sha1-WXCM+Qyh50xUw8/Fw2/bmBBDUmE=", 2452 | "requires": { 2453 | "callsite": "1.0.0", 2454 | "resolve": "0.3.1" 2455 | }, 2456 | "dependencies": { 2457 | "resolve": { 2458 | "version": "0.3.1", 2459 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-0.3.1.tgz", 2460 | "integrity": "sha1-NMY0R8ZkxwWY0cmxJvxDsqJDEKQ=" 2461 | } 2462 | } 2463 | }, 2464 | "ripemd160": { 2465 | "version": "2.0.1", 2466 | "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", 2467 | "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", 2468 | "requires": { 2469 | "hash-base": "2.0.2", 2470 | "inherits": "2.0.3" 2471 | }, 2472 | "dependencies": { 2473 | "hash-base": { 2474 | "version": "2.0.2", 2475 | "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", 2476 | "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", 2477 | "requires": { 2478 | "inherits": "2.0.3" 2479 | } 2480 | } 2481 | } 2482 | }, 2483 | "route-map": { 2484 | "version": "0.1.0", 2485 | "resolved": "https://registry.npmjs.org/route-map/-/route-map-0.1.0.tgz", 2486 | "integrity": "sha1-Fr9z60/+y27Vm58n19il+sOR2K4=", 2487 | "requires": { 2488 | "path-to-regexp": "0.0.2" 2489 | } 2490 | }, 2491 | "ruglify": { 2492 | "version": "1.0.0", 2493 | "resolved": "https://registry.npmjs.org/ruglify/-/ruglify-1.0.0.tgz", 2494 | "integrity": "sha1-3Ikw4qlUSidDAcyZcldMDQmGtnU=", 2495 | "requires": { 2496 | "rfile": "1.0.0", 2497 | "uglify-js": "2.2.5" 2498 | }, 2499 | "dependencies": { 2500 | "source-map": { 2501 | "version": "0.1.43", 2502 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", 2503 | "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", 2504 | "requires": { 2505 | "amdefine": "1.0.1" 2506 | } 2507 | }, 2508 | "uglify-js": { 2509 | "version": "2.2.5", 2510 | "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.2.5.tgz", 2511 | "integrity": "sha1-puAqcNg5eSuXgEiLe4sYTAlcmcc=", 2512 | "requires": { 2513 | "optimist": "0.3.7", 2514 | "source-map": "0.1.43" 2515 | } 2516 | } 2517 | } 2518 | }, 2519 | "run-serially": { 2520 | "version": "0.0.0", 2521 | "resolved": "https://registry.npmjs.org/run-serially/-/run-serially-0.0.0.tgz", 2522 | "integrity": "sha1-kjhqb+BVE3cq2k3yUzFUo/DpBcs=", 2523 | "requires": { 2524 | "iter": "0.0.8" 2525 | }, 2526 | "dependencies": { 2527 | "iter": { 2528 | "version": "0.0.8", 2529 | "resolved": "https://registry.npmjs.org/iter/-/iter-0.0.8.tgz", 2530 | "integrity": "sha1-Ty9wauWQCicebfVR19Oy09e+IVk=", 2531 | "requires": { 2532 | "just-next-tick": "0.0.0" 2533 | } 2534 | } 2535 | } 2536 | }, 2537 | "safe-buffer": { 2538 | "version": "5.1.1", 2539 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", 2540 | "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" 2541 | }, 2542 | "sax": { 2543 | "version": "0.1.5", 2544 | "resolved": "https://registry.npmjs.org/sax/-/sax-0.1.5.tgz", 2545 | "integrity": "sha1-0YKaYSD6AWZetNv/bEPyn9bWFHE=" 2546 | }, 2547 | "set-content-type": { 2548 | "version": "0.0.3", 2549 | "resolved": "https://registry.npmjs.org/set-content-type/-/set-content-type-0.0.3.tgz", 2550 | "integrity": "sha1-+cB5WLmYc+7RvioGaV/LTrBm7uA=", 2551 | "requires": { 2552 | "mime": "1.6.0" 2553 | } 2554 | }, 2555 | "sha.js": { 2556 | "version": "2.4.11", 2557 | "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", 2558 | "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", 2559 | "requires": { 2560 | "inherits": "2.0.3", 2561 | "safe-buffer": "5.1.1" 2562 | } 2563 | }, 2564 | "shallow-copy": { 2565 | "version": "0.0.1", 2566 | "resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz", 2567 | "integrity": "sha1-QV9CcC1z2BAzApLMXuhurhoRoXA=" 2568 | }, 2569 | "shasum": { 2570 | "version": "1.0.2", 2571 | "resolved": "https://registry.npmjs.org/shasum/-/shasum-1.0.2.tgz", 2572 | "integrity": "sha1-5wEjENj0F/TetXEhUOVni4euVl8=", 2573 | "requires": { 2574 | "json-stable-stringify": "0.0.1", 2575 | "sha.js": "2.4.11" 2576 | } 2577 | }, 2578 | "shell-quote": { 2579 | "version": "0.0.1", 2580 | "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-0.0.1.tgz", 2581 | "integrity": "sha1-GkEZbzwDM8SCMjWT1ohuzxU92YY=" 2582 | }, 2583 | "show-help": { 2584 | "version": "2.0.1", 2585 | "resolved": "https://registry.npmjs.org/show-help/-/show-help-2.0.1.tgz", 2586 | "integrity": "sha1-g8ZWvHHd+9uvG+XoqKTA39zM87I=", 2587 | "requires": { 2588 | "package-path": "0.0.1" 2589 | } 2590 | }, 2591 | "show-version": { 2592 | "version": "1.0.1", 2593 | "resolved": "https://registry.npmjs.org/show-version/-/show-version-1.0.1.tgz", 2594 | "integrity": "sha1-iRFxCEkX/4vHxFiNFqT53Zp8C8M=" 2595 | }, 2596 | "sigmund": { 2597 | "version": "1.0.1", 2598 | "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", 2599 | "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=" 2600 | }, 2601 | "single-line-log": { 2602 | "version": "0.4.1", 2603 | "resolved": "https://registry.npmjs.org/single-line-log/-/single-line-log-0.4.1.tgz", 2604 | "integrity": "sha1-h6VWSfdJ14PsDc2AToFA2Yc8fO4=" 2605 | }, 2606 | "slash": { 2607 | "version": "1.0.0", 2608 | "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", 2609 | "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" 2610 | }, 2611 | "sntp": { 2612 | "version": "2.1.0", 2613 | "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", 2614 | "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", 2615 | "requires": { 2616 | "hoek": "4.2.1" 2617 | } 2618 | }, 2619 | "source-map": { 2620 | "version": "0.5.7", 2621 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 2622 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" 2623 | }, 2624 | "source-map-support": { 2625 | "version": "0.4.18", 2626 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", 2627 | "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", 2628 | "requires": { 2629 | "source-map": "0.5.7" 2630 | } 2631 | }, 2632 | "sshpk": { 2633 | "version": "1.14.1", 2634 | "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz", 2635 | "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=", 2636 | "requires": { 2637 | "asn1": "0.2.3", 2638 | "assert-plus": "1.0.0", 2639 | "bcrypt-pbkdf": "1.0.1", 2640 | "dashdash": "1.14.1", 2641 | "ecc-jsbn": "0.1.1", 2642 | "getpass": "0.1.7", 2643 | "jsbn": "0.1.1", 2644 | "tweetnacl": "0.14.5" 2645 | } 2646 | }, 2647 | "stream-browserify": { 2648 | "version": "1.0.0", 2649 | "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-1.0.0.tgz", 2650 | "integrity": "sha1-v5tKv7QrJ011FHnkTg/yZWtvEZM=", 2651 | "requires": { 2652 | "inherits": "2.0.3", 2653 | "readable-stream": "1.1.14" 2654 | } 2655 | }, 2656 | "stream-combiner2": { 2657 | "version": "1.0.2", 2658 | "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.0.2.tgz", 2659 | "integrity": "sha1-unKmtQy/q/qVD8i8h2BL0B62BnE=", 2660 | "requires": { 2661 | "duplexer2": "0.0.2", 2662 | "through2": "0.5.1" 2663 | }, 2664 | "dependencies": { 2665 | "readable-stream": { 2666 | "version": "1.0.34", 2667 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", 2668 | "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", 2669 | "requires": { 2670 | "core-util-is": "1.0.2", 2671 | "inherits": "2.0.3", 2672 | "isarray": "0.0.1", 2673 | "string_decoder": "0.10.31" 2674 | } 2675 | }, 2676 | "through2": { 2677 | "version": "0.5.1", 2678 | "resolved": "https://registry.npmjs.org/through2/-/through2-0.5.1.tgz", 2679 | "integrity": "sha1-390BLrnHAOIyP9M084rGIqs3Lac=", 2680 | "requires": { 2681 | "readable-stream": "1.0.34", 2682 | "xtend": "3.0.0" 2683 | } 2684 | }, 2685 | "xtend": { 2686 | "version": "3.0.0", 2687 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-3.0.0.tgz", 2688 | "integrity": "sha1-XM50B7r2Qsunvs2laBEcST9ZZlo=" 2689 | } 2690 | } 2691 | }, 2692 | "stream-format": { 2693 | "version": "0.0.3", 2694 | "resolved": "https://registry.npmjs.org/stream-format/-/stream-format-0.0.3.tgz", 2695 | "integrity": "sha1-o+IiZ19Ko+6LOJrGmEGcVdKujDw=", 2696 | "requires": { 2697 | "concat-stream": "1.6.2", 2698 | "new-format": "0.0.1", 2699 | "parallel-loop": "0.0.0", 2700 | "pause-function": "0.0.1", 2701 | "through": "2.3.8" 2702 | } 2703 | }, 2704 | "stream-splicer": { 2705 | "version": "1.3.2", 2706 | "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-1.3.2.tgz", 2707 | "integrity": "sha1-PARBvhW5v04iYnXm3IOWR0VUZmE=", 2708 | "requires": { 2709 | "indexof": "0.0.1", 2710 | "inherits": "2.0.3", 2711 | "isarray": "0.0.1", 2712 | "readable-stream": "1.1.14", 2713 | "readable-wrap": "1.0.0", 2714 | "through2": "1.1.1" 2715 | } 2716 | }, 2717 | "string.prototype.trim": { 2718 | "version": "1.1.2", 2719 | "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz", 2720 | "integrity": "sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo=", 2721 | "requires": { 2722 | "define-properties": "1.1.2", 2723 | "es-abstract": "1.11.0", 2724 | "function-bind": "1.1.1" 2725 | } 2726 | }, 2727 | "string_decoder": { 2728 | "version": "0.10.31", 2729 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", 2730 | "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" 2731 | }, 2732 | "stringstream": { 2733 | "version": "0.0.5", 2734 | "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", 2735 | "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=" 2736 | }, 2737 | "strip-ansi": { 2738 | "version": "3.0.1", 2739 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 2740 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 2741 | "requires": { 2742 | "ansi-regex": "2.1.1" 2743 | } 2744 | }, 2745 | "style-format": { 2746 | "version": "0.0.0", 2747 | "resolved": "https://registry.npmjs.org/style-format/-/style-format-0.0.0.tgz", 2748 | "integrity": "sha1-Bd8oaW2HHM5ApWzCgMT3GcYFyeU=", 2749 | "requires": { 2750 | "ansi-codes": "0.0.1-security", 2751 | "format-text": "0.0.3" 2752 | } 2753 | }, 2754 | "subarg": { 2755 | "version": "1.0.0", 2756 | "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz", 2757 | "integrity": "sha1-9izxdYHplrSPyWVpn1TAauJouNI=", 2758 | "requires": { 2759 | "minimist": "1.2.0" 2760 | }, 2761 | "dependencies": { 2762 | "minimist": { 2763 | "version": "1.2.0", 2764 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", 2765 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" 2766 | } 2767 | } 2768 | }, 2769 | "supports-color": { 2770 | "version": "2.0.0", 2771 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 2772 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" 2773 | }, 2774 | "syntax-error": { 2775 | "version": "1.4.0", 2776 | "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz", 2777 | "integrity": "sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==", 2778 | "requires": { 2779 | "acorn-node": "1.3.0" 2780 | } 2781 | }, 2782 | "tape": { 2783 | "version": "4.9.0", 2784 | "resolved": "https://registry.npmjs.org/tape/-/tape-4.9.0.tgz", 2785 | "integrity": "sha512-j0jO9BiScfqtPBb9QmPLL0qvxXMz98xjkMb7x8lKipFlJZwNJkqkWPou+NU4V6T9RnVh1kuSthLE8gLrN8bBfw==", 2786 | "requires": { 2787 | "deep-equal": "1.0.1", 2788 | "defined": "1.0.0", 2789 | "for-each": "0.3.2", 2790 | "function-bind": "1.1.1", 2791 | "glob": "7.1.2", 2792 | "has": "1.0.1", 2793 | "inherits": "2.0.3", 2794 | "minimist": "1.2.0", 2795 | "object-inspect": "1.5.0", 2796 | "resolve": "1.5.0", 2797 | "resumer": "0.0.0", 2798 | "string.prototype.trim": "1.1.2", 2799 | "through": "2.3.8" 2800 | }, 2801 | "dependencies": { 2802 | "deep-equal": { 2803 | "version": "1.0.1", 2804 | "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", 2805 | "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=" 2806 | }, 2807 | "defined": { 2808 | "version": "1.0.0", 2809 | "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", 2810 | "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" 2811 | }, 2812 | "glob": { 2813 | "version": "7.1.2", 2814 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", 2815 | "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", 2816 | "requires": { 2817 | "fs.realpath": "1.0.0", 2818 | "inflight": "1.0.6", 2819 | "inherits": "2.0.3", 2820 | "minimatch": "3.0.4", 2821 | "once": "1.4.0", 2822 | "path-is-absolute": "1.0.1" 2823 | } 2824 | }, 2825 | "minimist": { 2826 | "version": "1.2.0", 2827 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", 2828 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" 2829 | }, 2830 | "resolve": { 2831 | "version": "1.5.0", 2832 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", 2833 | "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", 2834 | "requires": { 2835 | "path-parse": "1.0.5" 2836 | } 2837 | } 2838 | } 2839 | }, 2840 | "through": { 2841 | "version": "2.3.8", 2842 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 2843 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" 2844 | }, 2845 | "through2": { 2846 | "version": "1.1.1", 2847 | "resolved": "https://registry.npmjs.org/through2/-/through2-1.1.1.tgz", 2848 | "integrity": "sha1-CEfLxESfNAVXTb3M2buEG4OsNUU=", 2849 | "requires": { 2850 | "readable-stream": "1.1.14", 2851 | "xtend": "4.0.1" 2852 | } 2853 | }, 2854 | "timers-browserify": { 2855 | "version": "1.4.2", 2856 | "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz", 2857 | "integrity": "sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=", 2858 | "requires": { 2859 | "process": "0.11.10" 2860 | }, 2861 | "dependencies": { 2862 | "process": { 2863 | "version": "0.11.10", 2864 | "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", 2865 | "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" 2866 | } 2867 | } 2868 | }, 2869 | "to-camel-case": { 2870 | "version": "1.0.0", 2871 | "resolved": "https://registry.npmjs.org/to-camel-case/-/to-camel-case-1.0.0.tgz", 2872 | "integrity": "sha1-GlYFSy+daWKYzmamCJcyK29CPkY=", 2873 | "requires": { 2874 | "to-space-case": "1.0.0" 2875 | } 2876 | }, 2877 | "to-fast-properties": { 2878 | "version": "1.0.3", 2879 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", 2880 | "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" 2881 | }, 2882 | "to-no-case": { 2883 | "version": "1.0.2", 2884 | "resolved": "https://registry.npmjs.org/to-no-case/-/to-no-case-1.0.2.tgz", 2885 | "integrity": "sha1-xyKQcWTvaxeBMsjmmTAhLRtKoWo=" 2886 | }, 2887 | "to-space-case": { 2888 | "version": "1.0.0", 2889 | "resolved": "https://registry.npmjs.org/to-space-case/-/to-space-case-1.0.0.tgz", 2890 | "integrity": "sha1-sFLar7Gysp3HcM6gFj5ewOvJ/Bc=", 2891 | "requires": { 2892 | "to-no-case": "1.0.2" 2893 | } 2894 | }, 2895 | "tough-cookie": { 2896 | "version": "2.3.4", 2897 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", 2898 | "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", 2899 | "requires": { 2900 | "punycode": "1.4.1" 2901 | }, 2902 | "dependencies": { 2903 | "punycode": { 2904 | "version": "1.4.1", 2905 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", 2906 | "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" 2907 | } 2908 | } 2909 | }, 2910 | "trim-right": { 2911 | "version": "1.0.1", 2912 | "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", 2913 | "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=" 2914 | }, 2915 | "tty-browserify": { 2916 | "version": "0.0.1", 2917 | "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", 2918 | "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==" 2919 | }, 2920 | "tunnel-agent": { 2921 | "version": "0.6.0", 2922 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", 2923 | "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", 2924 | "requires": { 2925 | "safe-buffer": "5.1.1" 2926 | } 2927 | }, 2928 | "tweetnacl": { 2929 | "version": "0.14.5", 2930 | "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", 2931 | "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", 2932 | "optional": true 2933 | }, 2934 | "typedarray": { 2935 | "version": "0.0.6", 2936 | "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", 2937 | "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" 2938 | }, 2939 | "uglify-js": { 2940 | "version": "2.4.24", 2941 | "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", 2942 | "integrity": "sha1-+tV1XB4Vd2WLsG/5q25UjJW+vW4=", 2943 | "requires": { 2944 | "async": "0.2.10", 2945 | "source-map": "0.1.34", 2946 | "uglify-to-browserify": "1.0.2", 2947 | "yargs": "3.5.4" 2948 | }, 2949 | "dependencies": { 2950 | "source-map": { 2951 | "version": "0.1.34", 2952 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", 2953 | "integrity": "sha1-p8/omux7FoLDsZjQrPtH19CQVms=", 2954 | "requires": { 2955 | "amdefine": "1.0.1" 2956 | } 2957 | } 2958 | } 2959 | }, 2960 | "uglify-to-browserify": { 2961 | "version": "1.0.2", 2962 | "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", 2963 | "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=" 2964 | }, 2965 | "umd": { 2966 | "version": "2.1.0", 2967 | "resolved": "https://registry.npmjs.org/umd/-/umd-2.1.0.tgz", 2968 | "integrity": "sha1-SmMHt2LxfwLSAbX6FU5nM5bCY88=", 2969 | "requires": { 2970 | "rfile": "1.0.0", 2971 | "ruglify": "1.0.0", 2972 | "through": "2.3.8", 2973 | "uglify-js": "2.4.24" 2974 | } 2975 | }, 2976 | "uniques": { 2977 | "version": "0.0.1", 2978 | "resolved": "https://registry.npmjs.org/uniques/-/uniques-0.0.1.tgz", 2979 | "integrity": "sha1-BtveSNrAZGK1Bj36pKuOxyRHw/k=" 2980 | }, 2981 | "url": { 2982 | "version": "0.10.3", 2983 | "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", 2984 | "integrity": "sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ=", 2985 | "requires": { 2986 | "punycode": "1.3.2", 2987 | "querystring": "0.2.0" 2988 | }, 2989 | "dependencies": { 2990 | "punycode": { 2991 | "version": "1.3.2", 2992 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", 2993 | "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" 2994 | } 2995 | } 2996 | }, 2997 | "urlsafe-base64": { 2998 | "version": "1.0.0", 2999 | "resolved": "https://registry.npmjs.org/urlsafe-base64/-/urlsafe-base64-1.0.0.tgz", 3000 | "integrity": "sha1-I/iQaabGL0bPOh07ABac77kL4MY=" 3001 | }, 3002 | "user-agent-parser": { 3003 | "version": "0.6.0", 3004 | "resolved": "https://registry.npmjs.org/user-agent-parser/-/user-agent-parser-0.6.0.tgz", 3005 | "integrity": "sha1-AN2BkUPKEiQPI+kfzcizHztukqI=" 3006 | }, 3007 | "util": { 3008 | "version": "0.10.3", 3009 | "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", 3010 | "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", 3011 | "requires": { 3012 | "inherits": "2.0.1" 3013 | }, 3014 | "dependencies": { 3015 | "inherits": { 3016 | "version": "2.0.1", 3017 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", 3018 | "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" 3019 | } 3020 | } 3021 | }, 3022 | "util-deprecate": { 3023 | "version": "1.0.2", 3024 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 3025 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 3026 | }, 3027 | "uuid": { 3028 | "version": "3.2.1", 3029 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", 3030 | "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==" 3031 | }, 3032 | "verror": { 3033 | "version": "1.10.0", 3034 | "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", 3035 | "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", 3036 | "requires": { 3037 | "assert-plus": "1.0.0", 3038 | "core-util-is": "1.0.2", 3039 | "extsprintf": "1.3.0" 3040 | } 3041 | }, 3042 | "vm-browserify": { 3043 | "version": "0.0.4", 3044 | "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", 3045 | "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", 3046 | "requires": { 3047 | "indexof": "0.0.1" 3048 | } 3049 | }, 3050 | "watchify": { 3051 | "version": "2.6.2", 3052 | "resolved": "https://registry.npmjs.org/watchify/-/watchify-2.6.2.tgz", 3053 | "integrity": "sha1-AaGI2OoajAs5leFbQlsRXvzk2Kk=", 3054 | "requires": { 3055 | "browserify": "9.0.8", 3056 | "chokidar": "0.12.6", 3057 | "through2": "0.5.1", 3058 | "xtend": "4.0.1" 3059 | }, 3060 | "dependencies": { 3061 | "JSONStream": { 3062 | "version": "0.10.0", 3063 | "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-0.10.0.tgz", 3064 | "integrity": "sha1-dDSdDYlSK3HzDwoD/5vSDKbxKsA=", 3065 | "requires": { 3066 | "jsonparse": "0.0.5", 3067 | "through": "2.3.8" 3068 | }, 3069 | "dependencies": { 3070 | "jsonparse": { 3071 | "version": "0.0.5", 3072 | "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-0.0.5.tgz", 3073 | "integrity": "sha1-MwVCrT8KZUZlt3jz6y2an6UHrGQ=" 3074 | } 3075 | } 3076 | }, 3077 | "assert": { 3078 | "version": "1.3.0", 3079 | "resolved": "https://registry.npmjs.org/assert/-/assert-1.3.0.tgz", 3080 | "integrity": "sha1-A5OaYiWCqBLMICMgoLmlbJuBWEk=", 3081 | "requires": { 3082 | "util": "0.10.3" 3083 | } 3084 | }, 3085 | "base64-js": { 3086 | "version": "0.0.8", 3087 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz", 3088 | "integrity": "sha1-EQHpVE9KdrG8OybUUsqW16NeeXg=" 3089 | }, 3090 | "browser-pack": { 3091 | "version": "4.0.4", 3092 | "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-4.0.4.tgz", 3093 | "integrity": "sha1-ja6VogykOz/qIB+qbPqoT/Sg1IQ=", 3094 | "requires": { 3095 | "JSONStream": "1.3.2", 3096 | "combine-source-map": "0.3.0", 3097 | "concat-stream": "1.4.11", 3098 | "defined": "1.0.0", 3099 | "through2": "0.5.1", 3100 | "umd": "3.0.3" 3101 | }, 3102 | "dependencies": { 3103 | "JSONStream": { 3104 | "version": "1.3.2", 3105 | "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.2.tgz", 3106 | "integrity": "sha1-wQI3G27Dp887hHygDCC7D85Mbeo=", 3107 | "requires": { 3108 | "jsonparse": "1.3.1", 3109 | "through": "2.3.8" 3110 | } 3111 | }, 3112 | "defined": { 3113 | "version": "1.0.0", 3114 | "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", 3115 | "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" 3116 | } 3117 | } 3118 | }, 3119 | "browserify": { 3120 | "version": "9.0.8", 3121 | "resolved": "https://registry.npmjs.org/browserify/-/browserify-9.0.8.tgz", 3122 | "integrity": "sha1-kYWen2A4RFnq1VTfic/wPHNPFZs=", 3123 | "requires": { 3124 | "JSONStream": "0.10.0", 3125 | "assert": "1.3.0", 3126 | "browser-pack": "4.0.4", 3127 | "browser-resolve": "1.11.2", 3128 | "browserify-zlib": "0.1.4", 3129 | "buffer": "3.6.0", 3130 | "builtins": "0.0.7", 3131 | "commondir": "0.0.1", 3132 | "concat-stream": "1.4.11", 3133 | "console-browserify": "1.1.0", 3134 | "constants-browserify": "0.0.1", 3135 | "crypto-browserify": "3.12.0", 3136 | "deep-equal": "1.0.1", 3137 | "defined": "0.0.0", 3138 | "deps-sort": "1.3.9", 3139 | "domain-browser": "1.1.7", 3140 | "duplexer2": "0.0.2", 3141 | "events": "1.0.2", 3142 | "glob": "4.5.3", 3143 | "has": "1.0.1", 3144 | "http-browserify": "1.7.0", 3145 | "https-browserify": "0.0.1", 3146 | "inherits": "2.0.3", 3147 | "insert-module-globals": "6.6.3", 3148 | "isarray": "0.0.1", 3149 | "labeled-stream-splicer": "1.0.2", 3150 | "module-deps": "3.9.1", 3151 | "os-browserify": "0.1.2", 3152 | "parents": "1.0.1", 3153 | "path-browserify": "0.0.0", 3154 | "process": "0.10.1", 3155 | "punycode": "1.2.4", 3156 | "querystring-es3": "0.2.1", 3157 | "read-only-stream": "1.1.1", 3158 | "readable-stream": "1.1.14", 3159 | "resolve": "1.7.1", 3160 | "shallow-copy": "0.0.1", 3161 | "shasum": "1.0.2", 3162 | "shell-quote": "0.0.1", 3163 | "stream-browserify": "1.0.0", 3164 | "string_decoder": "0.10.31", 3165 | "subarg": "1.0.0", 3166 | "syntax-error": "1.4.0", 3167 | "through2": "1.1.1", 3168 | "timers-browserify": "1.4.2", 3169 | "tty-browserify": "0.0.1", 3170 | "url": "0.10.3", 3171 | "util": "0.10.3", 3172 | "vm-browserify": "0.0.4", 3173 | "xtend": "3.0.0" 3174 | }, 3175 | "dependencies": { 3176 | "through2": { 3177 | "version": "1.1.1", 3178 | "resolved": "https://registry.npmjs.org/through2/-/through2-1.1.1.tgz", 3179 | "integrity": "sha1-CEfLxESfNAVXTb3M2buEG4OsNUU=", 3180 | "requires": { 3181 | "readable-stream": "1.1.14", 3182 | "xtend": "4.0.1" 3183 | }, 3184 | "dependencies": { 3185 | "xtend": { 3186 | "version": "4.0.1", 3187 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", 3188 | "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" 3189 | } 3190 | } 3191 | }, 3192 | "xtend": { 3193 | "version": "3.0.0", 3194 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-3.0.0.tgz", 3195 | "integrity": "sha1-XM50B7r2Qsunvs2laBEcST9ZZlo=" 3196 | } 3197 | } 3198 | }, 3199 | "buffer": { 3200 | "version": "3.6.0", 3201 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-3.6.0.tgz", 3202 | "integrity": "sha1-pyyTb3e5a/UvX357RnGAYoVR3vs=", 3203 | "requires": { 3204 | "base64-js": "0.0.8", 3205 | "ieee754": "1.1.11", 3206 | "isarray": "1.0.0" 3207 | }, 3208 | "dependencies": { 3209 | "isarray": { 3210 | "version": "1.0.0", 3211 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 3212 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" 3213 | } 3214 | } 3215 | }, 3216 | "concat-stream": { 3217 | "version": "1.4.11", 3218 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.4.11.tgz", 3219 | "integrity": "sha512-X3JMh8+4je3U1cQpG87+f9lXHDrqcb2MVLg9L7o8b1UZ0DzhRrUpdn65ttzu10PpJPPI3MQNkis+oha6TSA9Mw==", 3220 | "requires": { 3221 | "inherits": "2.0.3", 3222 | "readable-stream": "1.1.14", 3223 | "typedarray": "0.0.6" 3224 | } 3225 | }, 3226 | "deep-equal": { 3227 | "version": "1.0.1", 3228 | "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", 3229 | "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=" 3230 | }, 3231 | "jsonparse": { 3232 | "version": "1.3.1", 3233 | "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", 3234 | "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=" 3235 | }, 3236 | "parents": { 3237 | "version": "1.0.1", 3238 | "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz", 3239 | "integrity": "sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E=", 3240 | "requires": { 3241 | "path-platform": "0.11.15" 3242 | } 3243 | }, 3244 | "process": { 3245 | "version": "0.10.1", 3246 | "resolved": "https://registry.npmjs.org/process/-/process-0.10.1.tgz", 3247 | "integrity": "sha1-hCRXzFHP7XLcd1r+6vuMYDQ3JyU=" 3248 | }, 3249 | "resolve": { 3250 | "version": "1.7.1", 3251 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", 3252 | "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", 3253 | "requires": { 3254 | "path-parse": "1.0.5" 3255 | } 3256 | }, 3257 | "through2": { 3258 | "version": "0.5.1", 3259 | "resolved": "https://registry.npmjs.org/through2/-/through2-0.5.1.tgz", 3260 | "integrity": "sha1-390BLrnHAOIyP9M084rGIqs3Lac=", 3261 | "requires": { 3262 | "readable-stream": "1.0.34", 3263 | "xtend": "3.0.0" 3264 | }, 3265 | "dependencies": { 3266 | "readable-stream": { 3267 | "version": "1.0.34", 3268 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", 3269 | "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", 3270 | "requires": { 3271 | "core-util-is": "1.0.2", 3272 | "inherits": "2.0.3", 3273 | "isarray": "0.0.1", 3274 | "string_decoder": "0.10.31" 3275 | } 3276 | }, 3277 | "xtend": { 3278 | "version": "3.0.0", 3279 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-3.0.0.tgz", 3280 | "integrity": "sha1-XM50B7r2Qsunvs2laBEcST9ZZlo=" 3281 | } 3282 | } 3283 | }, 3284 | "umd": { 3285 | "version": "3.0.3", 3286 | "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.3.tgz", 3287 | "integrity": "sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==" 3288 | } 3289 | } 3290 | }, 3291 | "websocket-driver": { 3292 | "version": "0.7.0", 3293 | "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", 3294 | "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", 3295 | "requires": { 3296 | "http-parser-js": "0.4.11", 3297 | "websocket-extensions": "0.1.3" 3298 | } 3299 | }, 3300 | "websocket-extensions": { 3301 | "version": "0.1.3", 3302 | "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", 3303 | "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==" 3304 | }, 3305 | "window-size": { 3306 | "version": "0.1.0", 3307 | "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", 3308 | "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=" 3309 | }, 3310 | "wordwrap": { 3311 | "version": "0.0.3", 3312 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", 3313 | "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" 3314 | }, 3315 | "wrappy": { 3316 | "version": "1.0.2", 3317 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 3318 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 3319 | }, 3320 | "xtend": { 3321 | "version": "4.0.1", 3322 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", 3323 | "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" 3324 | }, 3325 | "yargs": { 3326 | "version": "3.5.4", 3327 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", 3328 | "integrity": "sha1-2K/49mXpTDS9JZvevRv68N3TU2E=", 3329 | "requires": { 3330 | "camelcase": "1.2.1", 3331 | "decamelize": "1.2.0", 3332 | "window-size": "0.1.0", 3333 | "wordwrap": "0.0.2" 3334 | }, 3335 | "dependencies": { 3336 | "wordwrap": { 3337 | "version": "0.0.2", 3338 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", 3339 | "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" 3340 | } 3341 | } 3342 | } 3343 | } 3344 | } 3345 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "document-coin", 3 | "version": "0.0.1", 4 | "description": "Tiny blockchains for a big idea.", 5 | "main": "index.js", 6 | "dependencies": { 7 | "ansi-codes": "0.0.1-security", 8 | "babel-register": "^6.5.2", 9 | "node-jose": "^0.11.0", 10 | "prova": "^3.0.0", 11 | "tape": "^4.9.0", 12 | "urlsafe-base64": "^1.0.0" 13 | }, 14 | "devDependencies": {}, 15 | "scripts": { 16 | "test": "node test/story.js -b" 17 | }, 18 | "author": "Chris Anderson", 19 | "license": "Apache-2.0" 20 | } 21 | -------------------------------------------------------------------------------- /signflow.txt: -------------------------------------------------------------------------------- 1 | Chris creates a payload, signs it, and encrypts it for Amy, writes out a history with Amy as the holder. 2 | 3 | encrypted payload 4 | - minter signature (immutable) 5 | public payload (immutable) 6 | - minter signature (immutable) 7 | 8 | minter 9 | - signing pubkey 10 | - encrypting pubkey 11 | - signature 12 | history 13 | [holder1, minter signature] 14 | 15 | 16 | replies with reply_to message id / signature? part of public content not history 17 | 18 | Amy decrypts the paylod to display it. 19 | 20 | Amy gives the coin to Irma by encrypting payload for Irma and, adding her to the holder list (tree?). 21 | 22 | combined history 23 | [holder2, holder1 signature] 24 | [holder1, minter signature] 25 | 26 | 27 | history-holders 28 | 29 | collection of jwt, run map to decode and view them by pubkey. 30 | 31 | 32 | JWT signed by giver : 33 | 34 | chrispubkey signed version of the givetree with amypubkey as holder. 35 | amypubkey signed version of the givetree with irmapubkey as holder. 36 | irma signs the givetree to sam. 37 | amy signs the givetree to isaac. 38 | 39 | Amy may or may not have learned about irma's give when she signs Isaacs, so we need to preserve that logical key structure when we sign, which means a copy of the tree per signature. And the client merges them all to view a coin's history. 40 | 41 | giver-depth is useful? 42 | to verify we verify all JWTs 43 | 44 | nested json web signature 45 | 46 | if we 47 | 48 | physical structure: 49 | 50 | JWT.content { 51 | holder : "Chris", 52 | giver : { // minter. the root is self signed 53 | signing-key : giver-signing-pubkey, 54 | encryption-key : giver-encryption-pubkey 55 | } 56 | recevier : "Amy pubkey" 57 | } .Chris signature 58 | 59 | 60 | appen, mutate or add? 61 | 62 | JWT.content { 63 | holder : "Chris", 64 | gives : [ 65 | { 66 | holder : "Amy", 67 | giver : { // minter. the root is self signed 68 | signing-key : giver-signing-pubkey, 69 | encryption-key : giver-encryption-pubkey 70 | } 71 | } 72 | ] 73 | }.Chris signature 74 | 75 | 76 | 77 | { 78 | holder : "Chris", 79 | minter-sig : "Chris Sig", 80 | gives : [ 81 | { 82 | holder : "Amy", giver-sig : "Chris Sig", 83 | gives : [{holder : "Irma", 84 | giver-sig : "Amy Sig", 85 | gives : []}] 86 | } 87 | ] 88 | } 89 | 90 | 91 | { 92 | signed : "give:ChrisKey;bh:documenthash|Chris Sig", 93 | gives : [ 94 | { 95 | signed : "give:AmyKey;bh:parenthash|Chris Sig", 96 | gives : [ 97 | {signed : "IsaacKey;bh:parenthash|Amy Sig", 98 | gives : [ 99 | {signed : "JohnKey;bh:parenthash|Isaac Sig"} 100 | ]}, 101 | {signed : "IrmaKey;bh:parenthash|Amy Sig", 102 | gives : []} 103 | ] 104 | } 105 | ] 106 | } 107 | 108 | 109 | ["give:ChrisKey;bh:documenthash|Chris Sig",[]] 110 | 111 | ["give:ChrisKey;bh:documenthash|Chris Sig",[ 112 | ["give:AmyKey;bh:parenthash;prev-id-givetree-blockhash|Chris Sig",[ 113 | ["give:IsaacKey;bh:parenthash|Amy Sig",[]], 114 | ["give:IrmaKey;bh:parenthash|Amy Sig",[]] 115 | ]] 116 | ]] 117 | 118 | 119 | 120 | ethereum program along the coin history to control who can give multiple copies? update validate. 121 | 122 | 123 | history-signatures 124 | - [minter sig, holder1 sig] 125 | 126 | 127 | Irma decrypts the paylod to display it. 128 | 129 | Irma gives the coin to Isaac by encrypting payload for Isaac and, adding him to the holder list (tree?). 130 | 131 | history 132 | [holder3, holder2 signature] 133 | [holder2, holder1 signature] 134 | [holder1, minter signature] 135 | 136 | history-signatures 137 | - [minter sig, holder1 sig] 138 | -------------------------------------------------------------------------------- /talk.txt: -------------------------------------------------------------------------------- 1 | moved to Notes 2 | -------------------------------------------------------------------------------- /test/basic.js: -------------------------------------------------------------------------------- 1 | var test = require('tape') 2 | // var jwt = require('webcrypto-jwt'); 3 | var jose = require("node-jose"); 4 | 5 | test("create a signing keypair and sign/verify an input", function (t) { 6 | t.plan(4) 7 | var keystore = jose.JWK.createKeyStore(); 8 | 9 | var props = { 10 | kid: 'gBdaS-G8RLax2qgObTD94w', 11 | alg: 'A256GCM', 12 | use: 'enc' 13 | }; 14 | keystore.generate("oct", 256). 15 | then(function(key) { 16 | t.equals(key.keystore, keystore, "the keystore") 17 | var input = "Hello Alice"; 18 | jose.JWS.createSign(key). 19 | update(input, "utf8"). 20 | final(). 21 | then(function(result) { 22 | console.log("result", result) 23 | t.equals(result.payload, "SGVsbG8gQWxpY2U") 24 | 25 | jose.JWS.createVerify(key). 26 | verify(result). 27 | then(function(decoded) { 28 | t.equals(decoded.payload.toString(), "Hello Alice") 29 | t.equals(decoded.key, key) 30 | // {result} is a Object with: 31 | // * header: the combined 'protected' and 'unprotected' header members 32 | // * payload: Buffer of the signed content 33 | // * signature: Buffer of the verified signature 34 | // * key: The key used to verify the signature 35 | }); 36 | 37 | }).catch(function (error) { 38 | t.error(error) 39 | }); 40 | }); 41 | }) 42 | -------------------------------------------------------------------------------- /test/story.js: -------------------------------------------------------------------------------- 1 | var test = require('tape') 2 | const jose = require("node-jose"); 3 | 4 | require("babel-register"); 5 | // var jwt = require('webcrypto-jwt'); 6 | // var jose = require("node-jose"); 7 | var dc = require(".."); 8 | 9 | test("create a wallet", function (t) { 10 | t.plan(2) 11 | var wallet = new dc.Wallet("test"); 12 | t.equals(wallet.name, "test") 13 | 14 | // ensure the wallet has keys 15 | wallet.setupKeys().then(function(){ 16 | t.assert(wallet.signingKey) 17 | }) 18 | }) 19 | 20 | test("mint a coin", function (t) { 21 | t.plan(6) 22 | var wallet = new dc.Wallet("test"); 23 | wallet.setupKeys().then(function(){ 24 | var content = new Buffer("The word is the coin.", "utf8") 25 | wallet.mint(content).then(function (coin) { 26 | t.equals(coin.content, content) 27 | t.equals(coin.coinID.length, "_u2e46oaAUyKVTVGHVaPC_Y4EKL3la7CTvXPLoU3QrY".length) 28 | t.assert(coin.givetree[0], "jose signature") 29 | 30 | jose.JWS.createVerify(coin.mintKey). 31 | verify(coin.givetree[0]). 32 | then(function(decoded) { 33 | t.equals(JSON.parse(decoded.payload)[0], "izwuMySz5A-xSRguhHo42LPqN_39f4osW6ITxUsVxa4") 34 | t.equals(decoded.key, coin.mintKey) 35 | coin.validate().then((valid)=>{ 36 | t.equals(true, valid) 37 | }) 38 | }) 39 | }) 40 | }) 41 | }) 42 | 43 | test("give a coin", function (t) { 44 | t.plan(6) 45 | var wallet = new dc.Wallet("Alice"); 46 | wallet.setupKeys().then(function(){ 47 | var wallet2 = new dc.Wallet("Bob"); 48 | wallet2.setupKeys().then(function() { 49 | var content = new Buffer("The coin is the word.", "utf8") 50 | wallet.mint(content).then(function (coin) { 51 | // console.log("mant", coin) 52 | t.assert(coin.givetree[0], "jose signature") 53 | t.assert(coin.givetree[1], "children") 54 | coin.give(wallet, wallet2.signingKey.toJSON()).then(()=>{ 55 | // console.log("gave", coin.givetree) 56 | t.assert(coin.givetree[1][0], "first child") 57 | t.equals(coin.givetree[1][0][0].length, 480, "first child jose signature") 58 | t.equals(coin.givetree[1][0][1].length, 0, "first child children") 59 | coin.validate().then((valid)=>{ 60 | t.equals(true, valid) 61 | }) 62 | }).catch((e)=>{ 63 | console.log("catch", e) 64 | }) 65 | }) 66 | }) 67 | }) 68 | }) 69 | 70 | 71 | test("give a coin multiple times", function (t) { 72 | t.plan(6) 73 | var wallet = new dc.Wallet("Alice"); 74 | wallet.setupKeys().then(function(){ 75 | var wallet2 = new dc.Wallet("Bob"); 76 | wallet2.setupKeys().then(function() { 77 | var content = new Buffer("The coin is the word.", "utf8") 78 | wallet.mint(content).then(function (coin) { 79 | coin.give(wallet, wallet2.signingKey.toJSON()).then(()=>{ 80 | t.equals(coin.givetree[1][0][1].length, 0, "first child children empty") 81 | var wallet3 = new dc.Wallet("Ace"); 82 | wallet3.setupKeys().then(function() { 83 | coin.give(wallet2, wallet3.signingKey.toJSON()).then(()=>{ 84 | t.equals(coin.givetree[1][0][1].length, 1, "first child children one") 85 | coin.give(wallet2, wallet.signingKey.toJSON()).then(()=>{ 86 | t.equals(coin.givetree[1][0][1].length, 2, "first child children after double give") 87 | t.equals(coin.givetree[1][0][1][0][1].length, 0, "second child children before give") 88 | coin.give(wallet3, wallet.signingKey.toJSON()).then(()=>{ 89 | t.equals(coin.givetree[1][0][1][0][1].length, 1, "second child children after give") 90 | coin.validate().then((valid)=>{ 91 | t.equals(true, valid) 92 | }) 93 | }) 94 | }) 95 | }) 96 | }) 97 | }).catch((e)=>{ 98 | console.log("catch", e) 99 | }) 100 | }) 101 | }) 102 | }) 103 | }) 104 | 105 | test("invalid coin", function (t) { 106 | t.plan(6) 107 | 108 | var wallet = new dc.Wallet("Alice"); 109 | wallet.setupKeys().then(function(){ 110 | var wallet2 = new dc.Wallet("Bob"); 111 | wallet2.setupKeys().then(function() { 112 | var content = new Buffer("The coin is the word.", "utf8") 113 | wallet.mint(content).then(function (coin) { 114 | coin.give(wallet, wallet2.signingKey.toJSON()).then(()=>{ 115 | t.equals(coin.givetree[1][0][1].length, 0, "first child children empty") 116 | var wallet3 = new dc.Wallet("Ace"); 117 | wallet3.setupKeys().then(function() { 118 | coin.give(wallet2, wallet3.signingKey.toJSON()).then(()=>{ 119 | t.equals(coin.givetree[1][0][1].length, 1, "first child children one") 120 | coin.give(wallet2, wallet.signingKey.toJSON()).then(()=>{ 121 | t.equals(coin.givetree[1][0][1].length, 2, "first child children after double give") 122 | t.equals(coin.givetree[1][0][1][0][1].length, 0, "second child children before give") 123 | coin.give(wallet3, wallet.signingKey.toJSON()).then(()=>{ 124 | t.equals(coin.givetree[1][0][1][0][1].length, 1, "second child children after give") 125 | // here we will mess with the give tree by putting one of the signatures in an earlier position 126 | var stolenBlock = coin.givetree[1][0][1].pop(); 127 | coin.givetree[1].push(stolenBlock); 128 | 129 | coin.validate().then((valid)=>{ 130 | t.equals(false, valid) 131 | }) 132 | 133 | }) 134 | }) 135 | }) 136 | }) 137 | }) 138 | }) 139 | }) 140 | }) 141 | }) 142 | -------------------------------------------------------------------------------- /test/story.txt: -------------------------------------------------------------------------------- 1 | Generate key for Chris and save it locally. 2 | 3 | Chris mints a new coin, including encrypted content. 4 | 5 | 6 | 7 | 8 | 9 | Chris creates a payload, signs it, and encrypts it for Amy, writes out a history with Amy as the holder. 10 | --------------------------------------------------------------------------------