├── .gitignore ├── LICENSE.md ├── README.md ├── dist └── tiddlybit.min.js ├── index.html ├── index.js ├── lib ├── op_code.js └── script.js ├── package.json ├── rollup.config.js ├── test ├── op_code.test.js └── script.test.js └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | 3 | # Dependency directories 4 | node_modules/ 5 | 6 | # Logs 7 | npm-debug.log* 8 | yarn-debug.log* 9 | yarn-error.log* 10 | 11 | # Benchmarking - tmp 12 | perf/ -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | Copyright 2020 libitx. 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 4 | 5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # TiddlyBit 2 | 3 | A tiddly JavaScript library for constructing, parsing and serializing Bitcoin scripts. 4 | 5 | --- 6 | 7 | When you need to construct and serialize a Bitcoin script for use in something like Money Button, you could just use [bsv.js](https://github.com/moneybutton/bsv) and add 336kb to your website payload... or you could use **TiddlyBit** which is **96.4% more tiddly!**. 8 | 9 | * TiddlyBit parses and serializes Bitcoin scripts to and from Buffers, Typed Arrays, and hex or ASM encoded strings. 10 | * Weighing in at just 12kb minimised (4kb when gziped), TiddlyBit is a much leaner option for use on the Web. 11 | * TiddlyBit uses Buffers in Node.js, but in the browser uses native Typed Arrays which is much more performant than putting binary data in Objects. 12 | * Super simple, dev-friendly API. 13 | 14 | ## Installation 15 | 16 | When using NPM: 17 | 18 | ```console 19 | npm install tiddlybit 20 | ``` 21 | 22 | ```js 23 | const {Script, OpCode} = require('tiddlybit') 24 | ``` 25 | 26 | Or using in the browser via CDN: 27 | 28 | ```html 29 | 30 | ``` 31 | 32 | ```js 33 | const {Script, OpCode} = TiddlyBit 34 | ``` 35 | 36 | ## Usage 37 | 38 | Constructing a new script: 39 | 40 | ```js 41 | const {Script, OpCode} = require('tiddlybit') 42 | 43 | const script = new Script([ 44 | OpCode.OP_FALSE, 45 | OpCode.OP_RETURN, 46 | 'hello', 47 | 'world' 48 | ]) 49 | 50 | script.toASM() 51 | // => '0 OP_RETURN 68656c6c6f 776f726c64' 52 | 53 | script.toHex() 54 | // => '006a0568656c6c6f05776f726c64' 55 | ``` 56 | 57 | Parsing a script: 58 | 59 | ```js 60 | const {Script} = require('tiddlybit') 61 | 62 | const script = Script.fromHex('76a9146afc0d6bb578282ac0f6ad5c5af2294c1971210888ac') 63 | // => Script { 64 | // chunks: [ 65 | // , 66 | // , 67 | // , 68 | // , 69 | // 70 | // ] 71 | // } 72 | ``` 73 | 74 | The `OpCode` object has properties with cached instances for every valid code. If needed, new `OpCode` instances can be created using the contructor function: 75 | 76 | ```js 77 | const {OpCode} = require('tiddlybit') 78 | 79 | OpCode.OP_RETURN 80 | // => 81 | 82 | // If needed you can find an OpCode by it's byte number 83 | OpCode.byByte(106) 84 | // => 85 | 86 | // Alternatively you can initialise a new OpCode 87 | new OpCode('OP_RETURN') 88 | // => 89 | ``` 90 | 91 | TiddlyBit also exposes a binary helper for cross-platform binary operations. See the [bops documentation](https://github.com/chrisdickinson/bops) for API details: 92 | 93 | ```js 94 | const {binary, Script, OpCode} = require('tiddlybit') 95 | 96 | const buf = binary.create(4) 97 | binary.writeUInt32LE(buf, 0x12345678, 0) 98 | 99 | const script = new Script([ 100 | OpCode.OP_RETURN, 101 | buf 102 | ]) 103 | // => Script { 104 | // chunks: [ 105 | // , 106 | // 107 | // ] 108 | // } 109 | ``` 110 | 111 | ## API 112 | 113 | ### Script class 114 | 115 | #### `new Script(array)` 116 | 117 | Creates a script instance from the given array of data chunks. 118 | 119 | #### `Script.fromASM(str)` 120 | 121 | Parses an ASM string and returns a script instance. 122 | 123 | #### `Script.fromBuffer(buf)` 124 | 125 | Parses a binary transaction and returns a script instance. 126 | 127 | #### `Script.fromHex(str)` 128 | 129 | Parses a hex encoded script and returns a script instance. 130 | 131 | ### Script instance 132 | 133 | #### `Script#push(array)` 134 | 135 | Push a single or array of chunks onto the script. 136 | 137 | #### `Script#toASM()` 138 | 139 | Searializes the script into an ASM encoded string. 140 | 141 | #### `Script#toBuffer()` 142 | 143 | Searializes the script into a buffer. 144 | 145 | #### `Script#toHex()` 146 | 147 | Searializes the script into a hex encoded string. 148 | 149 | ### OpCode class 150 | 151 | #### `new OpCode(string)` 152 | 153 | Creates an OpCode instance from the given string. 154 | 155 | #### `OpCode.byByte(str)` 156 | 157 | Find OpCode instance by byte number. 158 | 159 | ### OpCode instance 160 | 161 | #### `OpCode#toBuffer()` 162 | 163 | Searializes the Op Code into a buffer. 164 | 165 | ## License 166 | 167 | MIT License. 168 | 169 | © Copyright 2020 libitx. 170 | -------------------------------------------------------------------------------- /dist/tiddlybit.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * TiddlyBit - v0.0.6 3 | * A tiddly JavaScript library for constructing, parsing and serializing Bitcoin scripts. 4 | * https://github.com/libitx/tiddlybit#readme 5 | * Copyright © 2020 libitx. MIT License 6 | */ 7 | 8 | !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t=t||self).TiddlyBit={})}(this,(function(t){"use strict";var e=function(t,e){return t(e={exports:{}},e.exports),e.exports}((function(t,e){!function(t){var e="undefined"!=typeof Uint8Array?Uint8Array:Array,n="+".charCodeAt(0),r="/".charCodeAt(0),o="0".charCodeAt(0),f="a".charCodeAt(0),i="A".charCodeAt(0),u="-".charCodeAt(0),a="_".charCodeAt(0);function O(t){var e=t.charCodeAt(0);return e===n||e===u?62:e===r||e===a?63:e0)throw new Error("Invalid string. Length must be a multiple of 4");var a=t.length;i="="===t.charAt(a-2)?2:"="===t.charAt(a-1)?1:0,u=new e(3*t.length/4-i),o=i>0?t.length-4:t.length;var P=0;function c(t){u[P++]=t}for(n=0,r=0;n>16),c((65280&f)>>8),c(255&f);return 2===i?c(255&(f=O(t.charAt(n))<<2|O(t.charAt(n+1))>>4)):1===i&&(c((f=O(t.charAt(n))<<10|O(t.charAt(n+1))<<4|O(t.charAt(n+2))>>2)>>8&255),c(255&f)),u},t.fromByteArray=function(t){var e,n,r,o,f=t.length%3,i="";function u(t){return"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(t)}for(e=0,r=t.length-f;e>18&63)+u(o>>12&63)+u(o>>6&63)+u(63&o);switch(f){case 1:i+=u((n=t[t.length-1])>>2),i+=u(n<<4&63),i+="==";break;case 2:i+=u((n=(t[t.length-2]<<8)+t[t.length-1])>>10),i+=u(n>>4&63),i+=u(n<<2&63),i+="="}return i}}(e)})),n=function(t,e){if(Array.isArray(t))return new Uint8Array(t);return r[e||"utf8"](t)},r={hex:function(t){for(var e=t.length/2,n=new Uint8Array(e),r="",o=0,f=t.length;o0&&o%2==1&&(n[o>>>1]=parseInt(r,16),r="");return n},utf8:function(t){for(var e,n=[],r=0,i=t.length;r>>=1);for(r|=[0,0,192,224,240,248,252][n=0|Math.ceil((i-1)/5)],i=7-(o=[0,0,3,4,5,6,7][n])+6*(n-1);i;)r|=+!!(e&1<>>4).toString(16),n+=(15&e).toString(16);return n},utf8:function(t){return i(t)},base64:function(t){return e.fromByteArray(t)}};var y=function(t,e,n){return t.subarray(e||0,n||t.length)};var g=function(t,e){if(!t.length)return new Uint8Array(0);var n=void 0!==e?e:function(t){for(var e=0,n=0,r=t.length;nt.length&&(o=t.length);e.length-n0&&void 0!==arguments[0]?arguments[0]:"";if(this.op=t.toUpperCase(),this.byte=R[this.op],this.isValid=!!this.op&&Number.isInteger(this.byte),Object.freeze(this),!this.isValid)throw new Error("Invalid OpCode: ".concat(t))};OpCode.prototype.toBuffer=function(){var t=N.create(1);return N.writeUInt8(t,this.byte,0),t},OpCode.prototype.inspect=function(){return"")},Object.keys(R).forEach((function(t){-1!==t.indexOf("OP_")&&(OpCode[t]=new OpCode(t))})),OpCode.byByte=function(t,e){var n=R.inverse[t];if(n)return OpCode[n];if(e)throw new Error("Invalid OpCode: ".concat(t));return null},Object.freeze(OpCode);var B=OpCode,Script=function(){function Script(t){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,Script),this.chunks=[],this.push(t)}var t,e,n;return t=Script,n=[{key:"fromASM",value:function(t){for(var e=t.split(" "),n=[],r=0;r0&&r<76?i=(o=N.subarray(t,n+1,n+r+1)).length+1:76===r?(f=N.readUInt8(t,n+1),i=(o=N.subarray(t,n+2,n+f+2)).length+2):77===r?(f=N.readUInt16LE(t,n+1),i=(o=N.subarray(t,n+3,n+f+3)).length+3):78===r?(f=N.readUInt32LE(t,n+1),i=(o=N.subarray(t,n+5,n+f+5)).length+5):(o=B.byByte(r,!0),i=1),e.push(o),n+=i}return new this(e)}},{key:"fromHex",value:function(t){var e=N.from(t,"hex");return this.fromBuffer(e)}}],(e=[{key:"push",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(!Array.isArray(t))return this.push([t]);for(var e=0;e0&&r<76?(o=N.create(1),N.writeUInt8(o,r,0),n=N.join([o,n])):r<256?(o=N.create(1),N.writeUInt8(o,r,0),n=N.join([B.OP_PUSHDATA1.toBuffer(),o,n])):r<65536?(o=N.create(2),N.writeUInt16LE(o,r,0),n=N.join([B.OP_PUSHDATA2.toBuffer(),o,n])):r<4294967296&&(o=N.create(4),N.writeUInt32LE(o,r,0),n=N.join([B.OP_PUSHDATA4.toBuffer(),o,n])),t=N.join([t,n])}}return t}},{key:"toHex",value:function(){return N.to(this.toBuffer(),"hex")}}])&&C(t.prototype,e),n&&C(t,n),Script}(),D={binary:N,Script:Script,OpCode:B},H=D.binary,m=D.Script,F=D.OpCode;t.OpCode=F,t.Script=m,t.binary=H,t.default=D,Object.defineProperty(t,"__esModule",{value:!0})})); 9 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 32 | 33 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | const binary = require('bops') 2 | const Script = require('./lib/script') 3 | const OpCode = require('./lib/op_code') 4 | 5 | module.exports = { 6 | binary, 7 | Script, 8 | OpCode 9 | } -------------------------------------------------------------------------------- /lib/op_code.js: -------------------------------------------------------------------------------- 1 | const binary = require('bops') 2 | 3 | // List of all op codes 4 | const opCodes = { 5 | // push value 6 | OP_FALSE: 0, 7 | OP_0: 0, 8 | OP_PUSHDATA1: 76, 9 | OP_PUSHDATA2: 77, 10 | OP_PUSHDATA4: 78, 11 | OP_1NEGATE: 79, 12 | OP_RESERVED: 80, 13 | OP_TRUE: 81, 14 | OP_1: 81, 15 | OP_2: 82, 16 | OP_3: 83, 17 | OP_4: 84, 18 | OP_5: 85, 19 | OP_6: 86, 20 | OP_7: 87, 21 | OP_8: 88, 22 | OP_9: 89, 23 | OP_10: 90, 24 | OP_11: 91, 25 | OP_12: 92, 26 | OP_13: 93, 27 | OP_14: 94, 28 | OP_15: 95, 29 | OP_16: 96, 30 | 31 | // control 32 | OP_NOP: 97, 33 | OP_VER: 98, 34 | OP_IF: 99, 35 | OP_NOTIF: 100, 36 | OP_VERIF: 101, 37 | OP_VERNOTIF: 102, 38 | OP_ELSE: 103, 39 | OP_ENDIF: 104, 40 | OP_VERIFY: 105, 41 | OP_RETURN: 106, 42 | 43 | // stack ops 44 | OP_TOALTSTACK: 107, 45 | OP_FROMALTSTACK: 108, 46 | OP_2DROP: 109, 47 | OP_2DUP: 110, 48 | OP_3DUP: 111, 49 | OP_2OVER: 112, 50 | OP_2ROT: 113, 51 | OP_2SWAP: 114, 52 | OP_IFDUP: 115, 53 | OP_DEPTH: 116, 54 | OP_DROP: 117, 55 | OP_DUP: 118, 56 | OP_NIP: 119, 57 | OP_OVER: 120, 58 | OP_PICK: 121, 59 | OP_ROLL: 122, 60 | OP_ROT: 123, 61 | OP_SWAP: 124, 62 | OP_TUCK: 125, 63 | 64 | // splice ops 65 | OP_CAT: 126, 66 | OP_SPLIT: 127, 67 | OP_NUM2BIN: 128, 68 | OP_BIN2NUM: 129, 69 | OP_SIZE: 130, 70 | 71 | // bit logic 72 | OP_INVERT: 131, 73 | OP_AND: 132, 74 | OP_OR: 133, 75 | OP_XOR: 134, 76 | OP_EQUAL: 135, 77 | OP_EQUALVERIFY: 136, 78 | OP_RESERVED1: 137, 79 | OP_RESERVED2: 138, 80 | 81 | // numeric 82 | OP_1ADD: 139, 83 | OP_1SUB: 140, 84 | OP_2MUL: 141, 85 | OP_2DIV: 142, 86 | OP_NEGATE: 143, 87 | OP_ABS: 144, 88 | OP_NOT: 145, 89 | OP_0NOTEQUAL: 146, 90 | 91 | OP_ADD: 147, 92 | OP_SUB: 148, 93 | OP_MUL: 149, 94 | OP_DIV: 150, 95 | OP_MOD: 151, 96 | OP_LSHIFT: 152, 97 | OP_RSHIFT: 153, 98 | 99 | OP_BOOLAND: 154, 100 | OP_BOOLOR: 155, 101 | OP_NUMEQUAL: 156, 102 | OP_NUMEQUALVERIFY: 157, 103 | OP_NUMNOTEQUAL: 158, 104 | OP_LESSTHAN: 159, 105 | OP_GREATERTHAN: 160, 106 | OP_LESSTHANOREQUAL: 161, 107 | OP_GREATERTHANOREQUAL: 162, 108 | OP_MIN: 163, 109 | OP_MAX: 164, 110 | 111 | OP_WITHIN: 165, 112 | 113 | // crypto 114 | OP_RIPEMD160: 166, 115 | OP_SHA1: 167, 116 | OP_SHA256: 168, 117 | OP_HASH160: 169, 118 | OP_HASH256: 170, 119 | OP_CODESEPARATOR: 171, 120 | OP_CHECKSIG: 172, 121 | OP_CHECKSIGVERIFY: 173, 122 | OP_CHECKMULTISIG: 174, 123 | OP_CHECKMULTISIGVERIFY: 175, 124 | 125 | OP_CHECKLOCKTIMEVERIFY: 177, 126 | OP_CHECKSEQUENCEVERIFY: 178, 127 | 128 | // expansion 129 | OP_NOP1: 176, 130 | OP_NOP2: 177, 131 | OP_NOP3: 178, 132 | OP_NOP4: 179, 133 | OP_NOP5: 180, 134 | OP_NOP6: 181, 135 | OP_NOP7: 182, 136 | OP_NOP8: 183, 137 | OP_NOP9: 184, 138 | OP_NOP10: 185, 139 | 140 | // template matching params 141 | OP_PUBKEYHASH: 253, 142 | OP_PUBKEY: 254, 143 | OP_INVALIDOPCODE: 255, 144 | 145 | inverse: {} 146 | } 147 | 148 | 149 | // Create inverse cache 150 | Object.keys(opCodes) 151 | .forEach(op => { 152 | if (op.indexOf('OP_') !== -1) { 153 | const byte = opCodes[op] 154 | opCodes.inverse[byte] = op 155 | } 156 | }) 157 | 158 | 159 | /** 160 | * Creates an OpCode instance. 161 | * @contructor 162 | * @param {String} code OpCode string 163 | */ 164 | const OpCode = function(op = '') { 165 | this.op = op.toUpperCase() 166 | this.byte = opCodes[this.op] 167 | this.isValid = !!this.op && Number.isInteger(this.byte) 168 | Object.freeze(this) 169 | if (!this.isValid) { 170 | throw new Error(`Invalid OpCode: ${ op }`) 171 | } 172 | } 173 | 174 | /** 175 | * Searializes the OpCode into a buffer. 176 | * @return {Buffer} 177 | */ 178 | OpCode.prototype.toBuffer = function() { 179 | const buf = binary.create(1) 180 | binary.writeUInt8(buf, this.byte, 0) 181 | return buf 182 | } 183 | 184 | /** 185 | * Override inspect method 186 | */ 187 | OpCode.prototype.inspect = function() { 188 | return `` 189 | } 190 | 191 | 192 | // Attach a cache of all known OpCodes 193 | Object.keys(opCodes) 194 | .forEach(op => { 195 | if (op.indexOf('OP_') !== -1) { 196 | OpCode[op] = new OpCode(op) 197 | } 198 | }) 199 | 200 | 201 | // 202 | /** 203 | * Find Op Code by byte number. 204 | * @return {OpCode} 205 | */ 206 | OpCode.byByte = function(byte, err) { 207 | const op = opCodes.inverse[byte] 208 | if (op) return OpCode[op]; 209 | if (err) throw new Error(`Invalid OpCode: ${ byte }`); 210 | return null 211 | } 212 | 213 | 214 | // Freeze OpCode 215 | Object.freeze(OpCode) 216 | 217 | 218 | module.exports = OpCode -------------------------------------------------------------------------------- /lib/script.js: -------------------------------------------------------------------------------- 1 | const binary = require('bops') 2 | const OpCode = require('./op_code') 3 | 4 | /** 5 | * Class for working with Bitcoin scripts. 6 | * 7 | * A Bitcoin transaction contains inputs and outputs, each of which contain a 8 | * script to validate spending. A script contains many "chunks" of data. Each 9 | * chunk can either be an OpCode or a binary chunk of data. 10 | * @class {Script} 11 | */ 12 | class Script { 13 | /** 14 | * Creates a script instance. 15 | * @contructor 16 | * @param {Array} chunks An array of chunks of data 17 | */ 18 | constructor(chunks) { 19 | this.chunks = [] 20 | this.push(chunks) 21 | } 22 | 23 | /** 24 | * Parses an ASM string and returns a script instance. 25 | * @static 26 | * @param {String} str ASM script string 27 | @ @return {Script} 28 | */ 29 | static fromASM(str) { 30 | const tokens = str.split(' '), 31 | chunks = []; 32 | 33 | for(let i = 0; i < tokens.length; i++) { 34 | const token = tokens[i] 35 | if (token === '0') { 36 | chunks.push(OpCode.OP_0) 37 | } 38 | else if (token === '-1') { 39 | chunks.push(OpCode.OP_1NEGATE) 40 | } 41 | else { 42 | const chunk = OpCode[token] || binary.from(token, 'hex') 43 | chunks.push(chunk) 44 | } 45 | } 46 | 47 | return new this(chunks) 48 | } 49 | 50 | /** 51 | * Parses a binary transaction and returns a script instance. 52 | * @static 53 | * @param {Buffer} data Binary transaction 54 | @ @return {Script} 55 | */ 56 | static fromBuffer(data) { 57 | if (!binary.is(data)) throw new Error('Data not a valid binary buffer'); 58 | 59 | const chunks = [] 60 | let pos = 0 61 | 62 | while(pos < data.length) { 63 | const byte = binary.readUInt8(data, pos) 64 | let buf, size, len; 65 | 66 | if (byte > 0 && byte < 76) { 67 | buf = binary.subarray(data, pos+1, pos+byte+1) 68 | len = buf.length + 1 69 | } 70 | else if (byte === 76) { 71 | size = binary.readUInt8(data, pos+1) 72 | buf = binary.subarray(data, pos+2, pos+size+2) 73 | len = buf.length + 2 74 | } 75 | else if (byte === 77) { 76 | size = binary.readUInt16LE(data, pos+1) 77 | buf = binary.subarray(data, pos+3, pos+size+3) 78 | len = buf.length + 3 79 | } 80 | else if (byte === 78) { 81 | size = binary.readUInt32LE(data, pos+1) 82 | buf = binary.subarray(data, pos+5, pos+size+5) 83 | len = buf.length + 5 84 | } 85 | else { 86 | buf = OpCode.byByte(byte, true) 87 | len = 1 88 | } 89 | 90 | chunks.push(buf) 91 | pos += len 92 | } 93 | 94 | return new this(chunks) 95 | } 96 | 97 | /** 98 | * Parses a hex encoded script and returns a script instance. 99 | * @static 100 | * @param {String} str Hex script string 101 | @ @return {Script} 102 | */ 103 | static fromHex(str) { 104 | const buf = binary.from(str, 'hex') 105 | return this.fromBuffer(buf) 106 | } 107 | 108 | /** 109 | * Push a single or array of chunks onto the script. 110 | * @param {Array|String|OpCode} chunks Data chunks 111 | * @return 112 | */ 113 | push(chunks = []) { 114 | if (!Array.isArray(chunks)) return this.push([chunks]); 115 | 116 | for(let i = 0; i < chunks.length; i++) { 117 | const chunk = chunks[i], 118 | type = typeof chunk; 119 | let data; 120 | 121 | if (binary.is(chunk) || chunk instanceof OpCode) { 122 | data = chunk 123 | } 124 | else if (Array.isArray(chunk) && chunk.every(i => Number.isInteger(i) && i <= 255)) { 125 | data = binary.from(chunk) 126 | } 127 | else if (type === 'string') { 128 | data = binary.from(chunk) 129 | } 130 | else if (type === 'number') { 131 | data = OpCode.byCode(chunk) 132 | } 133 | 134 | if (!!data) this.chunks.push(data); 135 | } 136 | 137 | return this 138 | } 139 | 140 | /** 141 | * Searializes the script into an ASM encoded string. 142 | * @return {String} 143 | */ 144 | toASM() { 145 | const chunks = []; 146 | for(let i = 0; i < this.chunks.length; i++) { 147 | const data = this.chunks[i]; 148 | 149 | if (data instanceof OpCode) { 150 | if (data.byte === 0 || data.byte === OpCode.OP_1NEGATE.byte) { 151 | chunks.push(data.byte) 152 | } else { 153 | chunks.push(data.op) 154 | } 155 | } else { 156 | const hex = binary.to(data, 'hex') 157 | chunks.push(hex) 158 | } 159 | } 160 | return chunks.join(' ') 161 | } 162 | 163 | /** 164 | * Searializes the script into a buffer. 165 | * @return {Buffer} 166 | */ 167 | toBuffer() { 168 | let buf = binary.from('') 169 | 170 | for(let i = 0; i < this.chunks.length; i++) { 171 | let data = this.chunks[i]; 172 | 173 | if (data instanceof OpCode) { 174 | buf = binary.join([buf, data.toBuffer()]) 175 | continue 176 | } 177 | 178 | const len = data.length 179 | let lbuf 180 | 181 | if (len > 0 && len < 76) { 182 | lbuf = binary.create(1) 183 | binary.writeUInt8(lbuf, len, 0) 184 | data = binary.join([lbuf, data]) 185 | } 186 | else if (len < 0x100) { 187 | lbuf = binary.create(1) 188 | binary.writeUInt8(lbuf, len, 0) 189 | data = binary.join([OpCode.OP_PUSHDATA1.toBuffer(), lbuf, data]) 190 | } 191 | else if (len < 0x10000) { 192 | lbuf = binary.create(2) 193 | binary.writeUInt16LE(lbuf, len, 0) 194 | data = binary.join([OpCode.OP_PUSHDATA2.toBuffer(), lbuf, data]) 195 | } 196 | else if (len < 0x100000000) { 197 | lbuf = binary.create(4) 198 | binary.writeUInt32LE(lbuf, len, 0) 199 | data = binary.join([OpCode.OP_PUSHDATA4.toBuffer(), lbuf, data]) 200 | } 201 | 202 | buf = binary.join([buf, data]) 203 | } 204 | 205 | return buf 206 | } 207 | 208 | /** 209 | * Searializes the script into a hex encoded string. 210 | * @return {String} 211 | */ 212 | toHex() { 213 | return binary.to(this.toBuffer(), 'hex') 214 | } 215 | } 216 | 217 | module.exports = Script -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "tiddlybit", 3 | "version": "0.0.6", 4 | "main": "index.js", 5 | "browser": "dist/tiddlybit.min.js", 6 | "description": "A tiddly JavaScript library for constructing, parsing and serializing Bitcoin scripts.", 7 | "repository": "github.com:libitx/tiddlybit", 8 | "homepage": "https://github.com/libitx/tiddlybit#readme", 9 | "author": "libitx", 10 | "license": "MIT", 11 | "scripts": { 12 | "build": "rollup -c rollup.config.js", 13 | "test": "mocha \"test/**/*.test.js\"" 14 | }, 15 | "dependencies": { 16 | "bops": "^1.0.0" 17 | }, 18 | "devDependencies": { 19 | "@babel/core": "^7.8.3", 20 | "@babel/preset-env": "^7.8.3", 21 | "@rollup/plugin-commonjs": "^11.0.1", 22 | "@rollup/plugin-node-resolve": "^7.0.0", 23 | "chai": "^4.2.0", 24 | "mocha": "^7.0.0", 25 | "rollup": "^1.29.0", 26 | "rollup-plugin-babel": "^4.3.3", 27 | "rollup-plugin-banner": "^0.2.1", 28 | "rollup-plugin-terser": "^5.2.0" 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /rollup.config.js: -------------------------------------------------------------------------------- 1 | import resolve from '@rollup/plugin-node-resolve' 2 | import commonjs from '@rollup/plugin-commonjs' 3 | import babel from 'rollup-plugin-babel' 4 | import { terser } from 'rollup-plugin-terser' 5 | import banner from 'rollup-plugin-banner' 6 | 7 | export default { 8 | input: 'index.js', 9 | output: { 10 | file: 'dist/tiddlybit.min.js', 11 | format: 'umd', 12 | name: 'TiddlyBit', 13 | exports: 'named' 14 | }, 15 | 16 | plugins: [ 17 | resolve({ 18 | browser: true 19 | }), 20 | commonjs(), 21 | babel({ 22 | exclude: 'node_modules/**', 23 | presets: ['@babel/preset-env'], 24 | }), 25 | terser({ 26 | mangle: { reserved: ['TiddlyBit', 'Script', 'OpCode'] } 27 | }), 28 | banner('TiddlyBit - v<%= pkg.version %>\n<%= pkg.description %>\n<%= pkg.homepage %>\nCopyright © <%= new Date().getFullYear() %> <%= pkg.author %>. MIT License') 29 | ] 30 | }; -------------------------------------------------------------------------------- /test/op_code.test.js: -------------------------------------------------------------------------------- 1 | const { assert } = require('chai') 2 | const { OpCode } = require('../index') 3 | 4 | 5 | describe('new OpCode()', () => { 6 | it('must instantiate an OpCode by string', () => { 7 | const opcode = new OpCode('OP_RETURN') 8 | assert.equal(opcode.op, 'OP_RETURN') 9 | assert.equal(opcode.byte, 106) 10 | assert.isTrue(opcode.isValid) 11 | }) 12 | 13 | it('must throw an error with invalid string', () => { 14 | assert.throws(_ => new OpCode('fail'), 'Invalid OpCode') 15 | }) 16 | }) 17 | 18 | 19 | describe('OpCode.byByte()', () => { 20 | it('must find OpCode by number', () => { 21 | const opcode = OpCode.byByte(106) 22 | assert.equal(opcode.op, 'OP_RETURN') 23 | assert.equal(opcode.byte, 106) 24 | assert.isTrue(opcode.isValid) 25 | }) 26 | 27 | it('must return null with invalid number', () => { 28 | assert.isNull(OpCode.byByte(20)) 29 | }) 30 | 31 | it('must throw error with invalid number and err option', () => { 32 | assert.throws(_ => OpCode.byByte(20, true), 'Invalid OpCode') 33 | }) 34 | }) 35 | 36 | 37 | describe('OpCode', () => { 38 | it('must have a cache of all Op Code instances', () => { 39 | assert.instanceOf(OpCode.OP_RETURN, OpCode) 40 | assert.instanceOf(OpCode.OP_SHA256, OpCode) 41 | }) 42 | 43 | it('must be a frozen object', () => { 44 | OpCode.OP_RETURN = null 45 | OpCode.OP_FAKE_IT = 'testing' 46 | assert.instanceOf(OpCode.OP_RETURN, OpCode) 47 | assert.isUndefined(OpCode.OP_FAKE_IT) 48 | }) 49 | }) 50 | 51 | 52 | describe('OpCode#toBuffer()', () => { 53 | it('must return a data buffer', () => { 54 | const buf = new OpCode('OP_RETURN').toBuffer() 55 | assert.instanceOf(buf, Buffer) 56 | assert.lengthOf(buf, 1) 57 | }) 58 | }) 59 | -------------------------------------------------------------------------------- /test/script.test.js: -------------------------------------------------------------------------------- 1 | const { assert } = require('chai') 2 | const { Script, OpCode } = require('../index') 3 | 4 | 5 | let script1, script2; 6 | before(() => { 7 | script1 = new Script([ 8 | OpCode.OP_FALSE, 9 | OpCode.OP_RETURN, 10 | 'hello', 11 | 'world' 12 | ]) 13 | 14 | script2 = new Script([ 15 | OpCode.OP_DUP, 16 | OpCode.OP_HASH160, 17 | [106, 252, 13, 107, 181, 120, 40, 42, 192, 246, 173, 92, 90, 242, 41, 76, 25, 113, 33, 8], 18 | OpCode.OP_EQUALVERIFY, 19 | OpCode.OP_CHECKSIG 20 | ]) 21 | }) 22 | 23 | 24 | describe('new Script()', () => { 25 | it('must instantiate a new script', () => { 26 | const script = new Script() 27 | assert.instanceOf(script, Script) 28 | assert.lengthOf(script.chunks, 0) 29 | }) 30 | 31 | it('must instantiate a new script with chunks', () => { 32 | assert.instanceOf(script1, Script) 33 | assert.lengthOf(script1.chunks, 4) 34 | }) 35 | }) 36 | 37 | 38 | describe('Script#fromHex()', () => { 39 | it('must parse a script from the hex string', () => { 40 | const script = Script.fromHex('76a9146afc0d6bb578282ac0f6ad5c5af2294c1971210888ac') 41 | assert.instanceOf(script, Script) 42 | assert.lengthOf(script.chunks, 5) 43 | assert.equal(script.chunks[1].op, 'OP_HASH160') 44 | assert.equal(script.chunks[4].op, 'OP_CHECKSIG') 45 | }) 46 | }) 47 | 48 | 49 | describe('Script#toBuffer()', () => { 50 | it('must return a data buffer', () => { 51 | const buf = script2.toBuffer() 52 | assert.instanceOf(buf, Buffer) 53 | assert.lengthOf(buf, 25) 54 | }) 55 | }) 56 | 57 | 58 | describe('Script#toHex()', () => { 59 | it('must return a hex string', () => { 60 | const hex = script2.toHex() 61 | assert.equal(hex, '76a9146afc0d6bb578282ac0f6ad5c5af2294c1971210888ac') 62 | }) 63 | }) 64 | 65 | 66 | describe('Script serializing and parsing round trip', () => { 67 | let b512, b66000; 68 | 69 | before(() => { 70 | b512 = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi sodales id mi eget bibendum. Quisque eget dui tellus. Curabitur rutrum molestie massa, faucibus tempor metus vulputate euismod. Nam porttitor lorem vel nulla euismod facilisis. Ut ac ultrices nunc. Suspendisse elementum ut urna vel commodo. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae sem nec purus euismod posuere non ac nisl. Curabitur id finibus quam. Nulla ultrices sollicitudin massa amet.' 71 | b66000 = `Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam orci magna, condimentum ac tellus consequat, malesuada suscipit arcu. Nunc fermentum sem id est mattis, ut maximus eros pellentesque. Etiam in finibus neque. Proin in ornare ante, et consequat lorem. Vestibulum in venenatis orci. Curabitur vitae hendrerit leo, quis rutrum arcu. Fusce ac scelerisque mi. Etiam suscipit nisi et nibh vehicula, at interdum purus gravida. Nam nisi lectus, cursus at nibh vitae, lacinia facilisis lorem. 72 | Nulla mattis rhoncus urna at dignissim. Aliquam sit amet tortor et ipsum gravida dapibus sit amet sit amet nulla. Suspendisse ut tortor ullamcorper, placerat quam vel, laoreet leo. Integer nisi sapien, imperdiet non tristique quis, elementum non turpis. Aliquam suscipit sapien eu pharetra pulvinar. Sed nec massa dapibus, efficitur nulla vitae, tempor risus. Fusce sed mollis massa, eu vulputate lorem. Morbi eget pellentesque nibh. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nunc condimentum nulla justo, a ullamcorper ante sagittis sed. 73 | Vestibulum imperdiet justo non mauris sollicitudin eleifend. Curabitur porta congue dolor, a pharetra odio facilisis a. Nullam eget lectus ac nibh gravida pulvinar id nec tellus. Praesent pretium ex dignissim mattis tempus. Ut sollicitudin ligula posuere, porta quam nec, cursus leo. Curabitur fringilla accumsan tempor. In sed pharetra ipsum. Ut suscipit urna non neque sodales lobortis. Etiam posuere elementum dolor sit amet ullamcorper. Curabitur vitae diam at lacus luctus faucibus. Phasellus porttitor eros ut velit convallis imperdiet non vitae tellus. 74 | Etiam sit amet ex risus. Praesent porta tristique nisl, at convallis mauris commodo et. Aenean sit amet fringilla massa, sit amet congue felis. Praesent neque odio, aliquet at feugiat ut, cursus in eros. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse semper libero non urna blandit faucibus. Aenean congue varius dui, in sagittis orci volutpat quis. Proin efficitur viverra sem at tempor. Nunc varius nec ligula in eleifend. Fusce pulvinar non ipsum ut venenatis. Vivamus posuere dictum leo, laoreet scelerisque diam maximus eu. Vestibulum tristique et velit in rhoncus. Nullam viverra, felis a ornare ultricies, ipsum nunc accumsan tortor, consectetur vehicula dolor urna non neque. Pellentesque pharetra elit nec auctor volutpat. Sed eu felis a turpis ullamcorper cursus. Quisque vitae venenatis nisl. 75 | Ut eget convallis risus. Integer id condimentum urna. Fusce sit amet enim urna. Nullam pellentesque sed mauris at eleifend. Sed rhoncus sem ac dui molestie, ut venenatis neque varius. Morbi et varius enim. Sed est turpis, posuere ut porttitor sit amet, sagittis eu augue. Suspendisse ac dolor vel nunc varius vulputate. Ut fringilla sapien lorem, vitae convallis tortor sagittis vitae. Praesent viverra ac lorem at pulvinar. Nam nisi metus, commodo quis nunc eget, dictum auctor metus. Quisque mattis lacus ac ligula dictum efficitur eget et justo. Quisque luctus faucibus tellus, nec gravida felis interdum vel. Interdum et malesuada fames ac ante ipsum primis in faucibus. Sed tortor nibh, pretium ut quam at, posuere viverra arcu. 76 | In mattis augue ut imperdiet mattis. Integer feugiat sapien non consectetur sodales. Nulla interdum orci et pulvinar mattis. Donec sit amet bibendum turpis, vel faucibus elit. Donec tristique lectus ligula, ac lobortis magna euismod sit amet. Nam ullamcorper auctor nisl. Etiam ipsum tellus, sagittis in mauris sagittis, euismod ultrices nisl. Donec fermentum dui vitae orci vestibulum molestie. Nunc sed molestie libero, eget tempor dolor. Nulla facilisi. Nunc eget metus fringilla, tempor erat vitae, luctus mi. Mauris ornare sapien est, at interdum erat venenatis ut. Morbi varius ut felis ac aliquam. Curabitur ornare tellus quis massa interdum, non dictum augue hendrerit. 77 | Quisque in facilisis libero. In hac habitasse platea dictumst. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin aliquet, leo eget auctor lobortis, augue ipsum varius ex, ut mollis lectus neque eget nunc. Nulla facilisi. Proin sit amet purus feugiat, mollis tortor ut, dictum tortor. Cras a nisi sed nisi condimentum dictum id vel turpis. Fusce mattis, nisl sit amet tincidunt porttitor, diam magna placerat eros, in euismod magna metus quis urna. In sodales vulputate placerat. Quisque lectus libero, mollis in massa eu, tempor faucibus nunc. Proin posuere ipsum quis dignissim lobortis. Mauris tempus neque id posuere scelerisque. Donec quis elit urna. 78 | Sed eu cursus massa, quis maximus libero. Suspendisse sed interdum nisl, ut rhoncus felis. Sed sed viverra velit. Nullam vehicula, eros ac dapibus dictum, mauris turpis vestibulum leo, eu dapibus ante justo et ex. Nulla gravida tellus sed leo congue, id cursus turpis imperdiet. Nullam ullamcorper eu tellus commodo euismod. Sed ullamcorper vehicula nulla quis commodo. Duis nulla ex, euismod vel nunc a, maximus mollis urna. Vestibulum eu gravida arcu. Ut ut efficitur urna. Nulla vel scelerisque odio, vitae aliquet leo. Proin consectetur accumsan leo, id auctor dolor porta in. Cras pulvinar vulputate nisl, vitae luctus justo fringilla sed. Sed rhoncus interdum velit ut tempor. 79 | Donec sollicitudin eget sem a posuere. Aliquam tortor velit, varius in pulvinar in, lacinia eu mauris. Vivamus dapibus, magna non lobortis vehicula, leo ante lacinia est, vitae ultricies ligula metus ac felis. Mauris efficitur malesuada quam, nec ultrices eros sodales elementum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur in dolor velit. Quisque vel mauris malesuada, ultricies leo sed, tempor urna. Vivamus convallis risus eu feugiat pulvinar. Fusce posuere, metus eu rutrum scelerisque, dolor sem tincidunt velit, ut venenatis sapien augue sed purus. Donec vel libero augue. Duis eu neque libero. 80 | Nullam quam orci, venenatis eget erat tempor, accumsan pretium est. Aliquam condimentum, dui eu sagittis dignissim, urna orci lobortis tellus, quis aliquet purus sem eu ex. Curabitur sit amet ipsum eu sapien tempor condimentum eu id lacus. Mauris posuere aliquam tellus, et posuere odio rhoncus sed. Fusce ornare augue vitae nulla malesuada, sed finibus lacus egestas. Nullam sagittis ipsum ante, nec porta dolor porttitor nec. Suspendisse elit velit, sodales non fringilla in, porta bibendum purus. Curabitur eu urna in augue volutpat lobortis. 81 | Etiam semper libero non erat laoreet, a fermentum ligula pretium. In eleifend finibus magna, eget porta lectus fermentum non. Praesent elementum cursus neque, nec aliquet est interdum consectetur. Vivamus enim orci, lacinia sit amet viverra eu, dapibus et nisl. Morbi convallis justo eget viverra vulputate. Cras massa nibh, viverra quis efficitur varius, consequat sed massa. Etiam in purus ut magna blandit elementum vel sit amet magna. Nam fermentum rhoncus bibendum. Fusce finibus vestibulum augue, ac pharetra massa efficitur dignissim. Nunc ligula nibh, gravida in turpis at, volutpat molestie metus. 82 | Donec eget lorem et felis vehicula mattis. Mauris quam ipsum, ultrices eget ipsum quis, luctus suscipit metus. Cras porta arcu quis pretium volutpat. Interdum et malesuada fames ac ante ipsum primis in faucibus. Praesent viverra vestibulum sapien, et posuere tellus ultrices sit amet. Nam bibendum velit nec nulla tempus, nec aliquam justo euismod. In nisl ex, aliquet vitae vulputate a, consequat sodales mauris. Proin in tincidunt tellus. Vivamus eu nunc sed ipsum ornare efficitur. Ut efficitur eros est, ut rutrum nisl pulvinar et. Nunc eu magna finibus, feugiat lacus quis, cursus erat. Morbi non ornare lacus. Duis vel dolor diam. In mollis ac velit quis euismod. 83 | Maecenas risus diam, auctor eu consectetur vitae, pharetra nec ligula. Quisque porttitor ullamcorper felis eget pharetra. Vestibulum ex leo, iaculis et eros id, vestibulum blandit ipsum. Nulla sem leo, pretium vitae nulla ac, posuere ultricies tortor. Quisque dapibus, nulla sagittis viverra hendrerit, orci massa imperdiet felis, vitae dapibus leo diam quis purus. Aliquam et pharetra nisl, eu ornare ante. Pellentesque eget sapien mattis, condimentum orci ut, posuere eros. Mauris efficitur blandit urna vitae sagittis. Proin posuere sollicitudin aliquet. Etiam eget dolor eu lacus interdum condimentum id id dolor. Aenean euismod, justo mattis laoreet eleifend, mi augue facilisis orci, quis pharetra sem enim eu ex. Phasellus sed mattis velit, quis maximus neque. Nunc semper ullamcorper ultrices. 84 | In diam magna, mattis in porttitor hendrerit, tempus vitae velit. Nullam ac sem convallis, placerat neque vitae, commodo magna. Integer fringilla vestibulum turpis. Aenean sit amet feugiat eros. Maecenas interdum tellus eget maximus rutrum. Sed varius, libero sit amet iaculis gravida, mi dui fermentum ligula, vel vulputate ante massa sit amet leo. Phasellus massa tortor, gravida eget cursus vitae, laoreet a arcu. 85 | Mauris et nunc at dui dapibus egestas pretium eu orci. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut fringilla eu turpis vitae aliquam. Vivamus in tristique nunc. Vestibulum venenatis mauris quis quam mollis sollicitudin. Etiam nec tellus molestie, ultricies lacus vitae, dignissim lorem. Aliquam sodales condimentum neque. Suspendisse vitae purus ac turpis feugiat facilisis sed non arcu. Vestibulum tincidunt rutrum pellentesque. 86 | Sed in sem ac eros cursus vulputate. Aliquam erat volutpat. Nulla eu facilisis lorem. Curabitur ipsum tellus, commodo sed nisl in, blandit varius orci. Integer in cursus nisi. In enim augue, fermentum eget eros ac, fermentum molestie felis. Aenean cursus eu felis eget porta. Nulla blandit eros libero, vel volutpat nunc aliquam sit amet. Fusce metus libero, sollicitudin quis accumsan a, egestas in felis. Mauris molestie porta enim, a rutrum quam lobortis nec. 87 | Nulla facilisi. Aenean lobortis fermentum commodo. Donec vel tristique dolor, vel lacinia turpis. Maecenas est nunc, interdum quis metus malesuada, placerat porta dui. Sed maximus laoreet magna quis congue. Pellentesque enim felis, blandit id arcu vel, auctor interdum est. In ornare laoreet rhoncus. 88 | Donec molestie, nulla vitae rhoncus tincidunt, nulla nisl imperdiet justo, eu fringilla risus nulla non tellus. Cras aliquam ligula arcu, tristique aliquam lectus vehicula vitae. Suspendisse congue, nulla efficitur vulputate porta, magna nunc mattis arcu, id consequat tortor justo vitae arcu. Nulla facilisi. Nulla a nunc feugiat, imperdiet felis non, mattis lorem. Cras accumsan in augue nec vehicula. Nullam ac leo rhoncus, tempus lacus blandit, tempus mi. Curabitur vulputate condimentum massa id laoreet. Morbi pharetra, est ac aliquet vestibulum, purus justo porta lorem, eu tristique felis nulla mattis turpis. Nullam nibh quam, malesuada a viverra ut, interdum eget nibh. Cras non sollicitudin velit. Morbi egestas scelerisque dignissim. 89 | In in ligula interdum, bibendum neque at, eleifend augue. Donec nisi turpis, rutrum nec mauris non, lobortis laoreet ipsum. In pulvinar placerat orci et laoreet. Aliquam urna eros, vestibulum vitae ultricies ac, interdum ut tortor. Aliquam erat volutpat. Sed et lacinia ligula. Sed semper aliquet metus, a tempus ante accumsan eget. Integer sit amet dapibus mauris. Vivamus feugiat commodo hendrerit. In pulvinar suscipit felis sed sodales. Fusce pretium lorem orci, vel gravida velit maximus molestie. 90 | Nunc sed congue urna. Vivamus ut nisl non magna condimentum feugiat at vitae sapien. Quisque dapibus mattis libero nec faucibus. Nulla id eleifend nibh, in tempor sapien. Cras lectus eros, efficitur id lacus vel, eleifend tincidunt metus. Vivamus vitae congue magna. Donec vitae metus ac nisl auctor rhoncus. Cras a odio consectetur, malesuada velit sed, efficitur elit. Fusce vel aliquam velit. Praesent sollicitudin dui cursus, ultrices dolor vitae, sollicitudin enim. Suspendisse accumsan rhoncus turpis non varius. Sed luctus sit amet urna nec gravida. Morbi id hendrerit felis. 91 | Integer egestas hendrerit lorem, vitae faucibus lorem accumsan eu. In hac habitasse platea dictumst. In hac habitasse platea dictumst. Nunc sit amet turpis vitae mauris efficitur suscipit. Aliquam nunc orci, venenatis sit amet pulvinar gravida, dictum nec libero. Aliquam varius ornare neque nec hendrerit. Curabitur elementum, erat at mollis consequat, leo nisl pharetra tellus, et hendrerit tellus nibh id metus. Cras dictum quis elit sed convallis. Praesent porta nisi ante, non semper mi ultricies in. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi pellentesque tincidunt odio ut mattis. Ut velit mauris, faucibus ac egestas blandit, pellentesque vel velit. Integer mauris enim, tincidunt tempor placerat et, lobortis vel arcu. 92 | Maecenas quis nisl ultricies, commodo diam a, ullamcorper elit. In a aliquam magna, efficitur congue erat. Phasellus et vestibulum nulla. Cras molestie ante at tristique placerat. Cras rutrum posuere turpis quis blandit. Integer bibendum, mauris eu dignissim porttitor, tortor tortor imperdiet mauris, id cursus sem arcu eget tellus. Phasellus cursus urna libero, nec elementum ipsum porta ac. Donec nec varius nisl. Quisque tempor gravida dolor, et lacinia magna venenatis ut. Donec luctus feugiat arcu vitae faucibus. Ut finibus neque sit amet eros ultrices, sed scelerisque risus pellentesque. Pellentesque consequat, neque vitae efficitur suscipit, enim sapien fringilla libero, sit amet aliquam lectus metus in ante. Phasellus ante tellus, varius a erat eu, sodales sollicitudin tellus. Sed vel facilisis tellus. 93 | Fusce efficitur venenatis risus eu cursus. Fusce a dapibus lacus, id accumsan est. Praesent ac dignissim ex, a ultrices felis. Nunc vitae eleifend nisi. Quisque pellentesque malesuada nisl. Vestibulum eget convallis mi, ac iaculis eros. Praesent sagittis, felis at tristique tincidunt, neque nibh vehicula tellus, eget convallis justo orci at purus. Integer ultrices, nisl id vehicula efficitur, neque tellus aliquam nisl, ac sodales sem lacus a risus. Morbi dapibus sem vitae nunc pulvinar, id hendrerit tellus pharetra. Donec quis purus odio. Morbi consectetur porttitor ante, eget venenatis velit fringilla et. Vivamus elementum quam vel interdum mattis. Fusce sit amet cursus nisl, ac finibus neque. Sed vel turpis in metus mattis faucibus. 94 | Mauris scelerisque tempus quam, sagittis interdum eros tincidunt et. Fusce at condimentum dui, a ultrices risus. In euismod arcu nisi. Mauris lobortis eu leo quis aliquam. Morbi hendrerit semper odio sit amet semper. Integer ultricies ligula quis euismod dapibus. Mauris tempus est quis arcu sodales vulputate. Cras odio lectus, gravida sit amet velit eget, malesuada commodo odio. Vivamus scelerisque scelerisque leo, sed aliquam ipsum mollis nec. Proin commodo, libero eu feugiat faucibus, lectus lacus dapibus magna, at maximus tellus est quis purus. Maecenas imperdiet suscipit rhoncus. Fusce ut sem elit. Etiam ullamcorper ex ut turpis vestibulum, vel tincidunt ipsum malesuada. Vivamus ac ligula at mi hendrerit vestibulum. Etiam nec neque pellentesque, fermentum lorem eu, congue risus. Maecenas efficitur accumsan tortor eget ornare. 95 | Etiam laoreet ac mauris sit amet interdum. Suspendisse potenti. Integer vitae dapibus leo. Duis quis tincidunt lectus, ut scelerisque ligula. Suspendisse potenti. Praesent risus sapien, molestie vel sodales et, sagittis non lectus. Praesent vel congue dolor, eget convallis dolor. Sed a egestas risus. Etiam id turpis feugiat, efficitur lectus et, ornare nisi. Aenean dictum hendrerit semper. Proin tincidunt risus non mauris convallis, eu ultrices libero accumsan. Etiam ligula ex, blandit a lacus sed, euismod commodo enim. 96 | Fusce id iaculis diam. Ut lectus justo, placerat a tellus ac, iaculis suscipit nunc. Cras ac eleifend leo. Maecenas viverra tincidunt vestibulum. Nullam aliquet mollis erat, ac dictum nisi volutpat at. Quisque a rhoncus odio. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. 97 | Duis vel dolor in velit pellentesque efficitur. Maecenas facilisis sodales lorem, nec egestas sapien pulvinar in. Vestibulum accumsan mauris tincidunt, bibendum nisl non, sagittis sapien. Vivamus ut mi neque. Etiam vitae feugiat augue. Nulla viverra dolor nec sem lacinia sagittis sit amet eget odio. In elit metus, sollicitudin et velit et, consectetur commodo enim. Donec vitae feugiat turpis. Cras pellentesque, erat id semper sollicitudin, quam est cursus nisl, ac laoreet ex turpis eget ante. Maecenas eget fermentum metus. 98 | Vestibulum in lectus eu quam scelerisque sollicitudin. Aliquam et velit et odio hendrerit fermentum. Nunc id elit et libero ultricies malesuada. Donec imperdiet quis urna vitae tempus. Vivamus at efficitur diam. Proin consequat dolor purus, et posuere mauris cursus id. Nam suscipit, risus et iaculis condimentum, est risus vestibulum tellus, nec bibendum elit mi non orci. Proin ac elit nisi. Quisque malesuada volutpat elementum. Praesent sem leo, lobortis ac tellus sit amet, lobortis viverra risus. Aenean a ipsum sodales, lobortis nulla eget, tempor justo. Proin pretium lobortis risus. Sed elementum odio vitae fermentum tincidunt. 99 | Vestibulum vel feugiat quam, id dapibus orci. Suspendisse a mi urna. Ut mattis, mauris sit amet vehicula porttitor, erat ante bibendum libero, ut tempor elit elit at libero. Mauris ullamcorper commodo sem vitae tincidunt. Vestibulum egestas felis mi, eu tempor ligula ullamcorper in. Donec hendrerit, erat vitae eleifend mattis, velit velit pulvinar mi, vel gravida risus nulla id urna. Aenean ut dolor vulputate, posuere arcu a, porttitor velit. 100 | Nullam sed euismod magna. Vestibulum urna lectus, aliquet consequat gravida eget, molestie non elit. Etiam ultrices id est a fringilla. Aliquam ac mi nisi. Integer euismod volutpat tempus. Curabitur urna nulla, blandit vitae leo eu, cursus tincidunt lectus. Mauris tempor, nibh ac ultricies dignissim, nisi nibh venenatis neque, eget mollis nisl nulla quis nisi. Vestibulum nec blandit risus, ut mattis nisl. 101 | Fusce at orci et sapien venenatis molestie. Suspendisse tincidunt semper eros quis accumsan. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Aliquam lorem felis, dictum ac aliquet ut, lacinia in sem. Suspendisse suscipit quam non justo pretium pulvinar. Aenean mattis leo libero, quis posuere est ultrices in. In maximus dolor purus, vel viverra arcu aliquam auctor. Sed id imperdiet nibh, fermentum convallis metus. Aenean sodales felis nec justo vestibulum, commodo porttitor felis imperdiet. Nam in mauris lectus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. 102 | Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nullam pulvinar nisi mi. Integer molestie accumsan dapibus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Vestibulum laoreet, massa sed congue bibendum, lacus massa mattis arcu, quis pellentesque erat sapien et lacus. Phasellus vitae est convallis, molestie elit ac, volutpat sem. Morbi vitae nibh risus. Etiam dignissim, mauris quis consequat vehicula, nisi ex varius tellus, sit amet efficitur nisi tortor et lorem. Pellentesque elementum lectus vel magna auctor, at vehicula nulla feugiat. Phasellus a nulla rhoncus, mollis est et, suscipit nunc. Proin pulvinar turpis accumsan, rutrum diam in, vulputate lectus. Integer blandit dignissim orci, a consequat nibh cursus eget. Mauris convallis dignissim lacus in tincidunt. Phasellus blandit nisl et porttitor ornare. Nam quis justo orci. 103 | Integer sodales dolor ut purus rhoncus egestas. Integer at pharetra mi. Mauris nec nibh quis turpis posuere commodo et a ante. Integer aliquet leo ipsum, non tempus lacus varius vitae. Vestibulum volutpat et leo ac posuere. Proin vel tortor nec purus consequat sollicitudin. Vestibulum finibus, justo bibendum bibendum pretium, lectus ligula feugiat massa, a ultricies felis nibh eu libero. Aliquam tincidunt sit amet leo ut efficitur. Fusce libero lectus, semper eu erat sit amet, consectetur pellentesque leo. Mauris vel volutpat augue. Quisque commodo mi sit amet libero cursus vulputate. 104 | Aenean semper ligula sem. Morbi varius dictum sollicitudin. Praesent nec mi sit amet tortor vulputate hendrerit et in felis. Nam ut magna sem. Sed varius mauris vitae diam feugiat rhoncus. In imperdiet laoreet ipsum sit amet rutrum. Integer est metus, aliquam nec mauris luctus, convallis facilisis nunc. Proin pharetra libero nec lacinia ornare. Curabitur sed sodales quam, vitae viverra elit. Cras luctus egestas libero, non fermentum ex dictum vitae. In vitae nisl non neque vehicula pharetra eget id neque. 105 | Sed est mauris, vulputate sed iaculis sit amet, tincidunt vitae ipsum. Nunc non tellus sed sem venenatis vestibulum. Praesent pharetra volutpat consectetur. Donec ut arcu quis leo consectetur ullamcorper. Duis efficitur lectus quam, id condimentum nisi molestie non. Mauris sit amet orci commodo, tempor arcu nec, egestas sapien. Sed tellus nunc, placerat eu lectus eget, malesuada sagittis mi. Sed porta a urna auctor rutrum. Morbi quis facilisis arcu, id sodales turpis. Duis semper suscipit dui. Suspendisse vitae elit non elit iaculis venenatis quis a lacus. Phasellus efficitur porta velit vitae bibendum. 106 | Fusce lacinia interdum metus eget posuere. In volutpat porta malesuada. Vivamus ac imperdiet velit, sit amet cursus felis. Vestibulum condimentum tempus viverra. Vestibulum iaculis rhoncus tortor. Ut molestie massa lacus. Donec auctor felis nibh, ac fermentum sapien venenatis quis. In orci odio, tempor id viverra et, mollis sed lectus. Nunc aliquet turpis vel lorem vulputate, non fringilla lacus vehicula. 107 | Vivamus egestas est a urna vulputate tempus. Donec dui dolor, laoreet sed nulla et, faucibus molestie leo. Aliquam laoreet ligula quam, eget ultrices ex aliquam id. Duis pretium libero lorem, at suscipit felis interdum vel. Ut elementum suscipit arcu. Integer quis lectus at mauris consequat maximus. Cras non magna congue, commodo neque a, tincidunt turpis. Morbi ex massa, eleifend dapibus porta vitae, aliquam id neque. Duis ac finibus justo. 108 | Nunc eu semper neque. Morbi vehicula vulputate augue eu venenatis. Fusce dapibus ornare ex, a pulvinar magna consectetur sit amet. Phasellus consectetur quam non arcu dictum ultricies. Morbi lacus sem, ultricies vel tincidunt vitae, fermentum et mi. Vivamus quis mauris dolor. Vestibulum libero orci, faucibus convallis nulla et, interdum mattis leo. Morbi sapien urna, lobortis sed dignissim in, egestas eget augue. Morbi pellentesque commodo nunc a egestas. Duis molestie, nulla ut molestie maximus, sapien urna auctor lectus, nec eleifend dolor sem non orci. 109 | Integer id luctus nisi. Ut non volutpat urna, id pretium enim. Proin pretium orci eu urna tristique, ac pretium enim auctor. Integer auctor aliquet pellentesque. Morbi sit amet rhoncus enim, vel ornare tortor. Donec bibendum diam at posuere volutpat. Nullam aliquam dolor vel eros rutrum ultrices. Proin vitae fringilla velit. Aliquam erat volutpat. Suspendisse potenti. Vivamus consequat tellus eget massa tempor volutpat. Sed sagittis tellus in fermentum vulputate. Etiam porta nec eros eu consequat. Aliquam erat volutpat. Vestibulum euismod accumsan libero, et auctor odio. Maecenas feugiat odio eget cursus consequat. 110 | Sed pellentesque erat dui. Donec malesuada pharetra tortor eu placerat. Mauris eget vestibulum est. Nulla suscipit varius urna eget efficitur. Suspendisse at eros et eros mattis eleifend. Suspendisse vel libero id ex efficitur gravida. Vestibulum non dictum augue. Aliquam a dui in arcu varius hendrerit. Duis lobortis vehicula massa, ac consequat eros sollicitudin id. Vivamus tristique sem ac dictum finibus. Cras eleifend dignissim purus at facilisis. Sed cursus malesuada ipsum, quis tempus nisi malesuada in. Nunc hendrerit vulputate diam, sit amet sollicitudin est sagittis non. Donec a faucibus neque, eget gravida ipsum. 111 | Aenean viverra dignissim arcu, in suscipit neque vulputate id. Nulla elementum, magna quis tincidunt posuere, lacus metus auctor mauris, et condimentum libero tortor non lectus. Aliquam iaculis sem in libero auctor, nec vulputate lacus gravida. Fusce porta, lacus a fermentum blandit, est lacus iaculis metus, nec hendrerit ipsum sem vitae lectus. Aenean auctor, elit eu gravida convallis, risus tellus sodales augue, in condimentum mauris nibh non elit. In vitae commodo tortor. Maecenas eu blandit eros. Proin lobortis nulla at turpis tristique vestibulum. Curabitur faucibus scelerisque ante eget ultricies. Mauris egestas porttitor facilisis. Vivamus vitae tortor tortor. Sed placerat gravida velit, id rhoncus tellus. Mauris sed cursus eros. Curabitur elementum odio a enim mattis, eget convallis augue eleifend. Vivamus a purus at nulla blandit viverra eget nec velit. 112 | Nam commodo quam non mi feugiat malesuada eget vitae lorem. Nunc fermentum quam ac quam mollis bibendum. Praesent lobortis leo in urna sodales, ut hendrerit leo varius. Praesent vel turpis vitae odio laoreet accumsan. Aenean consectetur sollicitudin eros, vitae iaculis mi sollicitudin sit amet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas sed suscipit ligula. Morbi eu est porta, iaculis turpis ac, molestie enim. Nulla metus metus, vehicula a pretium semper, fermentum et diam. Praesent luctus diam ut cursus faucibus. Proin congue aliquet nisl, sit amet eleifend purus auctor eget. Ut tortor tellus, sollicitudin et odio ut, aliquam volutpat elit. 113 | Vivamus ac odio nec purus dictum sagittis. Quisque ultricies ut ex ut congue. Mauris vitae ipsum ipsum. Mauris vulputate ullamcorper consequat. Aliquam rhoncus eu elit at venenatis. Mauris auctor mauris odio, interdum luctus dui posuere sit amet. Mauris purus odio, porttitor a tempor molestie, accumsan sed tortor. In augue lectus, venenatis a lacinia sit amet, facilisis vel diam. 114 | Donec lacinia sit amet felis in venenatis. Sed et augue et ex commodo consectetur vel ut massa. Maecenas pellentesque blandit fringilla. Cras eu aliquet urna. Aenean consequat nunc eget mi elementum efficitur. Fusce eros est, sollicitudin ut pharetra sit amet, hendrerit non nisl. Aenean mattis magna sed faucibus maximus. Nunc aliquet tellus eget metus ultricies sodales. Donec ac risus quis nisi ultrices suscipit. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In ultrices urna ut erat consectetur, sit amet pretium libero vulputate. 115 | Nulla interdum posuere consectetur. Donec tincidunt risus ac ante fermentum luctus. Nam lobortis velit sit amet enim tristique dapibus. Quisque tincidunt nibh diam, a vulputate tortor varius eu. Nullam et erat justo. Morbi eget molestie eros, vitae imperdiet neque. Praesent eleifend urna nisi, vel mattis ligula consectetur vitae. Sed sit amet congue erat. Sed sit amet odio ut nisl imperdiet finibus ut in augue. Sed pulvinar sem eget arcu mollis, nec mattis mi luctus. Phasellus tempus augue at consequat viverra. Nunc sit amet congue mi. Sed augue tortor, facilisis sit amet ultricies non, tincidunt at nisl. Curabitur suscipit magna eget volutpat venenatis. Curabitur sed dictum eros. Etiam pretium nibh vel fringilla consequat. 116 | Sed suscipit libero ut erat ornare sollicitudin. Nulla rhoncus mollis pretium. Mauris consectetur bibendum viverra. Nullam vulputate ipsum vitae ipsum ornare posuere. Duis aliquam pellentesque erat dignissim posuere. In tempus tincidunt dui sit amet mollis. Curabitur ut aliquet ex. Nam interdum, massa at feugiat fringilla, leo ligula viverra erat, vitae rhoncus mi tellus sit amet massa. Quisque ultricies augue accumsan, sollicitudin sem vitae, scelerisque diam. Cras tincidunt, elit quis rhoncus condimentum, ex massa placerat neque, eu commodo leo dui sit amet lacus. Maecenas ullamcorper et elit nec blandit. Vivamus non tellus dignissim, molestie ligula vel, fringilla nunc. Suspendisse porttitor ullamcorper leo quis dictum. Donec ullamcorper nibh in lacus pellentesque lacinia. Duis ut mattis justo. 117 | Vestibulum sodales ligula lacinia ultrices tempus. Aenean elementum felis ligula, eget consequat tellus facilisis in. Nam fermentum, nunc a vehicula ultrices, erat odio ultricies metus, nec varius lorem mauris et neque. Donec molestie ultricies ornare. In fringilla turpis massa. Nulla vel magna nec nibh vehicula lacinia quis eget enim. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum quis magna ultricies, lacinia eros et, scelerisque leo. Integer scelerisque libero tempus elit lacinia, quis interdum velit lacinia. Vivamus aliquet, tellus sed convallis sollicitudin, orci ex dictum quam, eget gravida metus purus eget eros. Cras venenatis sapien sit amet finibus dictum. Donec aliquam lectus pretium massa fringilla laoreet. Maecenas sed sodales massa, finibus eleifend nisl. 118 | In et mattis ex. Fusce accumsan lacus ac urna sollicitudin posuere. In non libero vitae neque posuere commodo ac sit amet neque. Ut maximus est et odio scelerisque, et congue quam ultrices. Curabitur cursus eget turpis sed bibendum. Praesent vel felis at erat fringilla volutpat vitae sed mi. Pellentesque ac diam nulla. 119 | In sit amet purus quis leo suscipit hendrerit. Aenean diam ante, vestibulum vitae maximus sit amet, imperdiet et ipsum. Duis porta cursus ligula, nec ultricies nibh mattis quis. Aliquam semper malesuada neque. Maecenas at dolor vulputate, venenatis mi vel, consequat neque. Donec nec nisi scelerisque, feugiat ipsum porta, pretium massa. Donec mattis felis vitae nulla imperdiet fermentum in vulputate massa. Aenean ornare gravida fringilla. Vivamus lacinia massa et ligula vulputate, vel interdum sem consequat. Etiam tortor turpis, auctor at augue id, pellentesque tempor risus. 120 | Donec vitae porta odio. Ut ullamcorper elit tempor vestibulum hendrerit. Etiam aliquam, lorem maximus sagittis ultrices, nibh purus gravida enim, eu convallis dui purus quis nisl. Nullam at faucibus velit, non pellentesque eros. Curabitur ut erat ac nulla fringilla eleifend. Maecenas laoreet nibh vel elementum efficitur. Sed at nibh ut dolor vulputate consectetur ut non ligula. Vestibulum dui nunc, pretium et risus nec, finibus porta arcu. Pellentesque sodales urna et commodo faucibus. Morbi ultrices faucibus rutrum. Proin scelerisque tortor ac lacus molestie, quis aliquam lorem efficitur. Proin enim erat, porttitor a purus malesuada, volutpat congue ante. Maecenas congue enim eget nisl vehicula, sed luctus lectus rutrum. Duis accumsan turpis vel nunc rhoncus, id finibus ex porta. Quisque sit amet est non leo consequat laoreet eu non ipsum. Duis metus risus, dictum et est a, convallis tempor neque. 121 | Fusce fermentum mauris eu mauris posuere consectetur. Morbi porttitor nulla bibendum eros pellentesque condimentum. Aenean vitae mattis ante. Duis ultricies pharetra dolor, in lacinia augue vulputate non. Suspendisse elit risus, aliquam et tincidunt sit amet, fringilla sed orci. Morbi in egestas nunc. Vivamus sit amet quam ullamcorper eros commodo facilisis nec sed risus. Phasellus lobortis erat ac metus pharetra, id porta est auctor. Morbi pellentesque sodales arcu pulvinar aliquam. Donec blandit non ligula ac pharetra. Nullam nec est ligula. Cras sed volutpat erat, ac feugiat odio. Curabitur dapibus, ipsum id tempor volutpat, turpis tortor tempor tellus, id dignissim felis felis quis turpis. 122 | Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Fusce ornare eget purus non pretium. Etiam at neque in lectus sodales condimentum at id arcu. Cras non dapibus magna. Pellentesque eu pulvinar urna. Pellentesque nunc est, interdum et ex non, pretium tempor erat. Phasellus vitae quam vel turpis lobortis mollis vitae a ligula. Aenean sed iaculis mauris. 123 | Nullam ut libero eget purus placerat tempus in posuere nunc. Aliquam tempus egestas pretium. Etiam lacinia orci justo, sit amet tincidunt mauris molestie vel. In tincidunt nulla nec odio venenatis scelerisque. Morbi dapibus dui in nulla venenatis gravida eget at mi. Integer laoreet ex eu nisl condimentum, vel molestie ipsum ornare. Mauris vitae aliquam justo. Duis eget tristique dui. Integer nec justo massa. Proin placerat dapibus nisi. Curabitur aliquam vel lacus sit amet viverra. Praesent iaculis pellentesque tempor. Maecenas porta pharetra metus nec hendrerit. 124 | Aenean elementum quis libero non scelerisque. Mauris tristique nunc est, id interdum turpis luctus non. Donec erat enim, semper eget diam pellentesque, viverra ultricies mi. Etiam non eros nec ipsum accumsan facilisis. Integer ultrices libero at consequat scelerisque. Ut bibendum massa nec nunc tempor blandit. Aenean felis dolor, semper ut purus sit amet, iaculis blandit diam. Nunc sed dui sapien. Mauris posuere, ante id sodales placerat, tellus magna porta velit, tincidunt scelerisque erat felis nec felis. In hac habitasse platea dictumst. Pellentesque ipsum ante, ultricies eget porttitor ac, elementum in risus. Suspendisse et elit eu orci fringilla laoreet. Aliquam at sollicitudin magna. 125 | Duis lorem turpis, semper quis ultrices ullamcorper, placerat in sapien. Ut tristique eleifend volutpat. Nullam ut elit tincidunt, tempor lacus sed, molestie metus. Donec sed commodo risus. Cras suscipit ac est eget tempus. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Etiam sapien diam, ornare nec luctus et, venenatis nec turpis. Nam id dui at diam fermentum cursus. Cras nec neque a diam tristique molestie. Maecenas id ipsum quis tellus laoreet egestas nec facilisis lorem. Proin bibendum ullamcorper vestibulum. 126 | Aliquam erat volutpat. Aliquam tempus auctor mauris in ullamcorper. Morbi a nisl non lacus efficitur lacinia. Ut sollicitudin magna tincidunt erat vulputate egestas. Donec tempor gravida enim. Nam libero leo, pretium vitae dolor eu, congue pellentesque mauris. Pellentesque scelerisque nec ex et pellentesque. Sed sed rutrum mauris, id scelerisque nisi. 127 | Maecenas accumsan lorem et lacus congue auctor. Quisque egestas iaculis purus a pulvinar. Mauris interdum vitae odio vel ultricies. Quisque dictum ornare vestibulum. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vestibulum quis commodo nunc, in maximus justo. Pellentesque a ipsum libero. 128 | Pellentesque leo neque, mattis eget aliquet at, posuere ac quam. Fusce vitae felis sed purus tempor placerat. Mauris vel erat eget justo tincidunt tincidunt sed sit amet ipsum. Integer gravida tellus sit amet maximus vestibulum. Quisque et metus aliquet, semper enim pharetra, dapibus erat. Morbi cursus vehicula nisl et mollis. Suspendisse feugiat hendrerit interdum. Morbi erat tortor, interdum dapibus dui eget, dapibus tristique mi. Nulla eu dolor laoreet, congue dui eleifend, vehicula diam. Pellentesque eget est nec lectus ullamcorper accumsan nec at ex. Nam fermentum, metus ut euismod egestas, urna ex ultrices ante, ut posuere risus odio at sem. Mauris ut scelerisque nunc. Suspendisse ac tempus tellus. In tincidunt aliquam ligula, a vestibulum quam feugiat sit amet. Donec cursus velit sit amet dolor ultrices tempor. 129 | Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi sed ex interdum, dictum odio ut, gravida ligula. Nunc in condimentum mauris, a sollicitudin est. Sed imperdiet porta odio, ut lobortis sapien varius ut. Duis euismod tempor finibus. In hac habitasse platea dictumst. Proin aliquet vehicula finibus. Donec lacinia mi ex, a mattis nisl pretium quis. 130 | In viverra elit in tempor convallis. Suspendisse potenti. Nulla nec gravida tortor, quis finibus nibh. Maecenas nec maximus metus. Nunc sagittis consectetur odio, at eleifend mi varius commodo. Vestibulum scelerisque nulla faucibus tortor finibus mollis. Ut metus elit, convallis at venenatis sed, rutrum in ipsum. 131 | Phasellus posuere feugiat nisl, ut sagittis lectus rhoncus ut. Vivamus vitae ipsum nibh. Etiam id consequat quam. Curabitur fringilla, ex aliquet pretium iaculis, arcu velit dapibus arcu, eu euismod mauris lectus sit amet massa. Curabitur nisl purus, rutrum blandit maximus vitae, consectetur ut diam. Quisque auctor tincidunt lacus, ut scelerisque nunc sodales sit amet. Morbi blandit vestibulum tellus a elementum. Integer porttitor nisi at nisi molestie mattis. Duis ultrices eget ante ac suscipit. Maecenas quis purus id eros imperdiet scelerisque. Nunc vestibulum, arcu hendrerit feugiat ornare, felis turpis congue augue, eu vulputate massa neque sed est. Proin sit amet eleifend mauris, sit amet iaculis justo. 132 | Vestibulum ut massa ullamcorper ipsum molestie sagittis. Vestibulum vulputate convallis libero, et tempus sapien facilisis vitae. Sed blandit, justo sed suscipit aliquam, diam lacus tincidunt est, vitae viverra felis turpis consectetur dolor. Quisque eget sem eget justo suscipit aliquam quis non odio. Vivamus tristique eleifend velit, eu fringilla ante fringilla vel. In id porta arcu, eget vehicula lorem. Vestibulum rutrum nulla lectus, molestie laoreet libero ornare id. Nunc pulvinar molestie nunc sit amet euismod. Sed eleifend augue feugiat, convallis ligula non, ullamcorper eros. Vestibulum lobortis congue iaculis. Morbi sit amet rutrum ipsum, a accumsan sem. Sed efficitur fermentum nunc, nec volutpat sem feugiat vel. 133 | Curabitur quis ex augue. Pellentesque pharetra sed arcu in sollicitudin. In nec vulputate felis. Suspendisse consequat sit amet velit sodales cursus. Sed cursus at nulla sit amet tincidunt. In elementum, turpis nec scelerisque varius, nisl ante hendrerit ligula, eu scelerisque lorem erat eu arcu. Proin magna lorem, aliquet eu ligula id, blandit posuere ligula. Ut congue lacinia orci. 134 | Mauris est erat, auctor eu scelerisque quis, rutrum eget sapien. Quisque consectetur volutpat leo in molestie. Maecenas tincidunt ligula vel mi feugiat maximus. Fusce egestas turpis non quam blandit vestibulum. Sed vel convallis ante. Nulla dapibus tincidunt leo nec tincidunt. Aliquam efficitur leo sit amet massa blandit feugiat. Duis venenatis nisi sit amet magna tincidunt, in auctor sem maximus. Curabitur quis metus non velit efficitur condimentum eget id arcu. Aliquam eleifend purus arcu, ac lobortis purus aliquam sit amet. Etiam et condimentum nunc. Praesent quis nisi at libero viverra eleifend vitae at nisl. Nulla euismod libero ac lorem varius varius. 135 | Donec lobortis rutrum felis, id congue eros hendrerit id. Phasellus elementum elit vel tortor ornare, non scelerisque sapien consequat. Pellentesque sem ex, mattis vitae enim ut, placerat dignissim enim. Nulla convallis eget lorem nec varius. In id placerat justo, a eleifend nibh. Curabitur turpis risus, rhoncus mattis turpis vitae, posuere tincidunt enim. Aliquam volutpat erat mi, ac fermentum magna suscipit quis. Cras ac aliquet nibh. 136 | Aliquam rhoncus fermentum commodo. Aliquam orci turpis, auctor vitae malesuada in, pretium quis libero. Nulla commodo condimentum erat, quis euismod augue imperdiet vitae. Donec luctus eros quis quam consectetur posuere. Nunc ullamcorper eu lectus et semper. Donec vehicula tempus dapibus. Duis auctor tempor ornare. Maecenas ut tellus nisl. Etiam condimentum turpis non metus molestie, eget ullamcorper lectus interdum. Donec quis diam in justo egestas rhoncus vel ac neque. Praesent hendrerit ullamcorper purus ut suscipit. Sed non tincidunt tortor. 137 | Proin a quam ut lacus faucibus vulputate. Aliquam odio nunc, convallis et consectetur a, pharetra ut nulla. Pellentesque sed urna sit amet ipsum aliquet mollis. Maecenas a tincidunt ex. Sed sodales dolor a odio sodales, eget congue sem eleifend. Vivamus aliquet eleifend arcu ac finibus. Suspendisse non tortor urna. Nam quis consequat nisl. Nullam quis tincidunt velit, vel aliquet sem. Pellentesque consequat nisl ut orci dignissim, non convallis lectus sodales. Proin vitae vestibulum est. Quisque metus diam, elementum at ultricies eu, dictum in nisi. Nam ullamcorper nec urna eget congue. Aliquam ultrices congue porttitor. Vivamus at felis sit amet dolor volutpat luctus. 138 | Etiam eu mi vel metus porttitor suscipit. Etiam lacinia libero et condimentum imperdiet. Phasellus rutrum congue velit at scelerisque. Proin sed placerat risus. Integer nec justo vitae odio hendrerit tristique quis vitae velit. Quisque sed volutpat nulla, sit amet sagittis leo. Aenean vel interdum nibh. Nullam non pharetra urna. Donec quam orci, tempus et mattis at, pulvinar in libero. Fusce ullamcorper tristique vestibulum. Duis condimentum sed lorem eu convallis. Duis et purus facilisis, laoreet sem ac, malesuada diam. Maecenas ultrices bibendum congue. 139 | Proin nibh elit, pulvinar et eleifend in, ultrices luctus nisl. Vivamus vestibulum placerat urna, in dictum arcu auctor vitae. Mauris massa tortor, imperdiet vitae odio eu, mattis suscipit ex. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Curabitur pellentesque magna eu mollis tempus. Fusce fringilla odio erat, vel porta libero rhoncus non. Praesent et ipsum non lorem tristique rhoncus at non ex. Proin eros purus, lacinia sed vehicula egestas, suscipit sit amet metus. Aenean ac felis hendrerit velit imperdiet porttitor. 140 | Morbi consectetur, elit ac faucibus maximus, enim lacus lobortis augue, quis viverra purus massa laoreet urna. Nulla feugiat hendrerit lorem ac bibendum. Donec a porttitor lectus, sit amet commodo ante. Nunc tristique lectus quis elit laoreet, in molestie est egestas. Duis pretium euismod elementum. Ut ut enim at orci ultricies viverra id quis ligula. Maecenas tempus porttitor fringilla. 141 | Sed eleifend libero viverra, mattis libero fringilla, blandit dolor. Nullam at est rutrum, rhoncus nisl non, aliquet enim. Fusce sed sem augue. Sed vestibulum arcu nibh, quis pellentesque lectus molestie sed. Morbi blandit neque sit amet massa ultricies hendrerit. Cras quis scelerisque libero. Aenean dictum ante non metus lacinia blandit. Nulla commodo ex id purus egestas, a sollicitudin nibh tempor. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum tempus arcu ut nisl eleifend efficitur. Morbi iaculis vel eros eget convallis. Phasellus finibus, neque a iaculis congue, nunc dolor tempor metus, ut laoreet leo libero vitae augue. Nulla ac tempor libero, nec viverra lacus. Cras quis rutrum nisi. Cras risus metus, elementum in orci et, vehicula vulputate neque. 142 | Vivamus ipsum leo, vulputate vel est vitae, feugiat sodales sem. Curabitur malesuada dictum tristique. Fusce elementum sagittis nunc eu lacinia. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nam vitae nisl auctor, iaculis odio non, viverra orci. Fusce iaculis odio non ex tincidunt, ac dictum ipsum cursus. Aenean condimentum pharetra ultrices. Praesent in erat quis leo lobortis tincidunt quis posuere augue. Ut porta mauris lacus, quis porta sem ultricies et. Aenean a semper eros. Etiam ac sapien in orci ultrices molestie vitae ut nunc. Maecenas facilisis felis sit amet neque finibus, in sagittis dolor facilisis. Nunc vehicula porttitor posuere. Pellentesque feugiat ante magna. Aliquam vitae sem est. 143 | Sed et libero nec elit tincidunt pretium. Suspendisse nec volutpat dolor. Phasellus scelerisque nunc neque, sit amet posuere est fringilla quis. Maecenas sed nulla ac tortor rutrum pulvinar. Morbi ut sapien urna. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris tristique neque eget libero bibendum iaculis. Cras finibus urna et tellus sollicitudin, aliquet tincidunt orci vestibulum. In hac habitasse platea dictumst. Vestibulum posuere felis a sollicitudin interdum. Fusce pulvinar, ante ut ullamcorper cursus, libero massa pulvinar sem, at convallis leo sem eget diam. Aliquam vestibulum erat a blandit interdum. Donec a tortor arcu. Duis viverra velit sit amet nunc pharetra interdum. 144 | Pellentesque eget dolor sit amet neque consectetur lobortis. Morbi sed molestie lacus. Sed convallis luctus bibendum. Suspendisse sed ante eget justo maximus iaculis tempus et enim. Nam ut commodo libero. Suspendisse potenti. Vestibulum vulputate porttitor nisl, non lacinia justo. Nam luctus, elit ut interdum iaculis, mi ante feugiat magna, in eleifend augue massa et lectus. Nulla facilisi. Praesent eros sapien, luctus id ultricies et, tincidunt quis massa. Donec dignissim elit vel nisi facilisis, vel aliquam ligula tristique. Vestibulum vestibulum vestibulum urna. Sed posuere dignissim fringilla. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. 145 | In lacinia, nunc ac fringilla tempus, libero velit feugiat eros, ut iaculis mauris ipsum eget turpis. Etiam tristique libero tortor, in hendrerit velit ultricies eget. Sed commodo sapien eu nunc finibus, sagittis tempus justo semper. Praesent facilisis nulla ut nisi interdum, id ultricies est volutpat. Praesent pharetra enim eget turpis elementum pulvinar. Maecenas nibh diam, euismod non gravida nec, aliquam sed tellus. Proin ullamcorper ex faucibus, elementum neque vel, egestas augue. Morbi aliquet sem vitae pretium tempus. Etiam sagittis sagittis erat et ullamcorper. Nulla risus lorem, sodales sit amet aliquam et, ultricies eu ipsum. Proin gravida non risus et mattis. Donec tristique quis ligula sed rhoncus. Fusce vestibulum, magna in luctus luctus, felis nunc porta est, eu iaculis leo ante quis leo. 146 | Aliquam viverra id ipsum in semper. Curabitur nunc neque, ultrices quis vestibulum at, semper eget tellus. Donec quis ultrices orci. Donec pulvinar tortor a dolor dictum, ultricies accumsan neque consequat. Maecenas non pellentesque urna, ac egestas turpis. Sed sodales porta metus. Sed tincidunt pretium velit nec maximus. Vivamus efficitur feugiat est, ac luctus mi interdum suscipit. Nam id nulla et risus pretium fermentum. Duis at commodo est. 147 | Mauris id purus orci. Praesent fringilla fermentum congue. Praesent eget quam in nisl ultrices porta ac in est. Suspendisse ut posuere sapien. Suspendisse aliquet tellus lacinia urna efficitur, sed fringilla nisi rhoncus. Morbi at volutpat massa. Donec venenatis posuere lorem a accumsan. In iaculis ligula vel enim pharetra semper. Quisque a nunc et magna elementum fermentum nec in erat. Nam pharetra magna auctor dapibus volutpat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin in nibh ut mauris tincidunt interdum. Sed dictum pellentesque eleifend. Nullam in consequat lorem, eget luctus ex. 148 | Aenean pellentesque nisl ligula, et fringilla nisl luctus at. Sed hendrerit consequat nunc, vitae sollicitudin ex faucibus ut. Interdum et malesuada fames ac ante ipsum primis in faucibus. Duis ut est sed dui luctus convallis eget quis risus. Quisque sollicitudin nulla vitae tortor accumsan, a ullamcorper neque bibendum. Aenean lobortis, orci ut consequat faucibus, justo lorem vestibulum arcu, sit amet facilisis nisl mi sit amet metus. Aliquam commodo purus orci, at varius tortor facilisis sit amet. Fusce interdum mauris elit, eu viverra felis tempus at. Vivamus sit amet neque id nisl posuere pulvinar. Proin vel velit sit amet neque tristique eleifend. Quisque malesuada, enim nec molestie tristique, urna augue imperdiet eros, ut dignissim tellus nunc non lectus. Nullam porttitor vel tellus eu imperdiet. 149 | Phasellus mattis, magna id hendrerit aliquam, enim nunc egestas eros, at sollicitudin odio nulla sed nisi. Maecenas viverra purus a turpis hendrerit hendrerit. Maecenas quis tristique nulla. Etiam in dui et diam vestibulum iaculis. Phasellus mauris est, tristique eu pulvinar at, pharetra sit amet neque. Pellentesque cursus magna ex, sed ullamcorper velit consequat at. Cras vulputate odio lacinia sapien molestie fringilla. Nunc pharetra pulvinar diam nec pellentesque. Mauris dictum bibendum mauris, sed aliquet sapien egestas nec. Fusce ultricies, ex ultrices convallis rutrum, purus nibh elementum turpis, nec ultricies dui nisl suscipit odio. Pellentesque ligula nisl, convallis consequat faucibus ac, condimentum ut odio. Fusce eu diam efficitur, porttitor arcu vel, auctor tellus. Nunc malesuada sem eu sem iaculis, eu viverra risus consequat. In massa neque, vulputate sit amet nisl consequat, interdum convallis odio. Quisque elementum id lorem sed vehicula. Quisque at ante nisi. 150 | Suspendisse aliquet, felis vitae auctor rutrum, justo lectus elementum odio, non varius massa purus ac nisi. Vestibulum eu erat libero. Pellentesque cursus mauris mauris, sed rutrum enim fermentum nec. Donec id libero felis. Proin facilisis, magna et consequat imperdiet, neque magna lobortis lectus, at feugiat leo enim ut nibh. Curabitur cursus aliquet condimentum. Mauris eros nisi, egestas placerat elit sed, tincidunt faucibus leo. Mauris quis efficitur lectus, ac pharetra neque. 151 | Duis auctor iaculis varius. Fusce efficitur condimentum mauris, vitae pulvinar purus pharetra in. Duis consectetur leo sed luctus varius. Maecenas quis tortor ut mi varius luctus non id diam. Mauris vestibulum velit at rutrum tincidunt. Sed ut facilisis nulla, euismod pretium nunc. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Fusce scelerisque nibh non magna lacinia, sed pulvinar arcu mattis. Morbi semper turpis quis aliquet fringilla. In nec suscipit turpis. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nullam vehicula, leo vel euismod bibendum, risus magna tincidunt lacus, in ornare tellus nisi vitae risus. Praesent viverra dictum ipsum, in faucibus nisl tempor quis. 152 | Phasellus imperdiet nisl dui, sit amet efficitur erat suscipit et. In porta libero ac eros ullamcorper, in viverra lorem maximus. Vivamus ut ullamcorper augue, id interdum justo. Nam ut semper lorem. Praesent vitae tristique odio. Nunc vitae dignissim enim, sed finibus nunc. Mauris a purus efficitur, suscipit nisl eleifend, feugiat massa. Suspendisse ultrices commodo pretium. Aliquam viverra ante nulla, sed rutrum metus vestibulum ac. Maecenas accumsan purus ultrices congue tempus. 153 | Aliquam vitae nisl sed diam ornare faucibus ac vitae ipsum. Pellentesque eget augue vitae mi vehicula vulputate ut ullamcorper sem. Phasellus feugiat volutpat eros quis facilisis. Duis auctor tincidunt felis et feugiat. Nullam et viverra eros, non scelerisque lacus. Sed consectetur vestibulum augue quis dignissim. Fusce ut augue volutpat, bibendum dolor at, iaculis quam. Etiam finibus elit et tellus ultrices, ut fringilla urna mattis. Duis vel massa ut lacus blandit ultrices sit amet ut arcu. Etiam nunc neque, imperdiet nec magna non, mollis tristique massa. Nunc lorem dui, dictum nec sagittis a, mollis eget quam. Ut in orci erat. Sed rhoncus odio at turpis viverra auctor. Aenean feugiat vehicula lectus. Etiam posuere leo non tortor lacinia ornare. 154 | Aenean eu euismod neque, vitae eleifend purus. Aliquam pulvinar eleifend ipsum vitae tempor. Ut ullamcorper nisl sed ligula tempor, eu molestie arcu sollicitudin. Donec sagittis bibendum eros vitae ornare. Aenean consectetur ex ut neque imperdiet viverra vitae sed est. Nullam aliquam sed metus sed tincidunt. Praesent lacinia interdum nulla, vitae eleifend purus tincidunt non. Aenean ac nulla id ex facilisis tincidunt. Nunc nec luctus dolor. Aliquam erat volutpat. Mauris ac ultrices nulla. Ut sed purus quis orci malesuada sagittis. 155 | Integer eget enim a quam efficitur maximus. In fermentum, diam in vulputate ornare, nisi massa dapibus massa, ut tincidunt mauris est vel ligula. In commodo eget libero ac interdum. Curabitur justo nunc, mollis et libero ut, interdum aliquam leo. Maecenas porttitor pulvinar lacinia. Suspendisse vitae sapien eu massa tincidunt faucibus. Ut placerat pellentesque maximus. Nullam venenatis libero id condimentum finibus. Quisque sem nibh, dictum eu sem vitae, vehicula molestie enim. Nullam libero tellus, molestie sit amet nisl ut, blandit tincidunt mauris. Cras lobortis, quam vel sollicitudin bibendum, risus elit porta arcu, et condimentum elit metus quis nisi. 156 | Donec pellentesque tristique rutrum. Morbi lobortis iaculis ligula, vel convallis odio varius eget. Praesent dictum metus finibus odio dignissim, ac eleifend est ullamcorper. Donec in nisi tempus, efficitur risus vel, pulvinar mauris. In hac habitasse platea dictumst. Suspendisse fringilla leo sem, eu feugiat lorem malesuada at. Donec lacinia vulputate metus ac laoreet. Cras tortor nulla, euismod quis congue in, facilisis nec diam. Vivamus dictum lorem vel metus tincidunt vestibulum. 157 | Maecenas iaculis quis erat et lacinia. Cras libero libero, fermentum vitae varius eu, eleifend cursus nisi. Cras finibus lorem lectus, at ullamcorper felis iaculis eu. Donec placerat augue eget libero semper consequat. Nunc sed lacus ullamcorper, sollicitudin odio eget, ultrices sem. Donec congue sodales consectetur. Sed eros tellus, imperdiet non pretium ultricies, pulvinar quis massa. Fusce pulvinar, ante eget dapibus lobortis, libero mi tincidunt risus, sed sagittis lectus nisl eget felis. Maecenas suscipit facilisis sem ut tempor. Vivamus at sapien lacus. 158 | Morbi a blandit dolor. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi venenatis justo eget urna vehicula, suscipit auctor turpis pharetra. Suspendisse a condimentum ex. Cras volutpat faucibus urna non malesuada. Donec commodo, urna sit amet consequat dictum, nunc magna finibus arcu, non semper urna diam vel massa. Maecenas ut est lacus. Pellentesque iaculis dictum est, quis dignissim magna pharetra vitae. 159 | Quisque vitae ex sit amet erat fermentum consectetur ut at ligula. Suspendisse ultricies mollis convallis. Cras et fringilla ex. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aenean et est dictum, eleifend diam ut, aliquam augue. Sed faucibus at odio a pellentesque. Nam ultrices, risus at consectetur pretium, augue mi molestie est, at laoreet mauris justo quis odio. 160 | Vestibulum et nisl varius, volutpat dolor ac, interdum est. Morbi vel magna erat. Suspendisse consectetur sagittis finibus. Sed vulputate arcu a nisi euismod, sit amet tempor erat vulputate. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Integer mi sapien, lacinia ac tincidunt at, malesuada nec massa. Nunc lacinia lacus id nisl gravida, vel dictum nunc molestie. Vivamus viverra, orci ac viverra sagittis, lacus tellus bibendum est, vel consectetur elit mauris quis nulla. Praesent tempus dolor at sem porttitor bibendum. 161 | Sed lacinia porttitor eros, vitae consectetur dui laoreet rhoncus. Suspendisse arcu erat, semper eu maximus in, finibus viverra nisi. Fusce vehicula magna quis est vehicula, quis convallis diam tempus. Curabitur et dapibus neque. Vestibulum blandit libero ut odio mattis mattis. Sed non nisi vestibulum, malesuada libero sit amet, imperdiet quam. Nunc maximus, lacus eu bibendum placerat, mi mauris congue arcu, eget consectetur urna felis quis elit. Vestibulum fermentum dignissim diam, et iaculis ligula interdum vel. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse ac finibus eros, posuere rutrum leo. 162 | Aenean tincidunt nulla et sapien viverra imperdiet feugiat vitae eros. Fusce ultrices elementum nisi, a congue purus pulvinar vel. Maecenas eu sagittis sem. Fusce molestie sollicitudin libero, a vestibulum metus tincidunt sit amet. Aliquam tristique lorem sed tortor feugiat, non dignissim mauris aliquet. Etiam dictum quam efficitur leo sagittis interdum. Ut lacus arcu, congue sed magna vitae, feugiat consectetur dui. Aenean nisi leo, varius sollicitudin imperdiet quis, molestie a odio. 163 | Fusce in libero vitae libero interdum facilisis eget et nulla. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi varius dui ac risus varius convallis. Ut turpis arcu, feugiat et leo vitae, consectetur vulputate nibh. Duis feugiat metus sit amet felis bibendum, et pharetra ligula viverra. Suspendisse condimentum eros risus, ut luctus nulla pulvinar vitae. Vestibulum id fermentum urna. Nulla dolor neque, aliquam eget arcu vitae, venenatis hendrerit tellus. Praesent sit amet accumsan mi. 164 | Phasellus in ex cursus, congue diam eu, laoreet augue. Sed semper tellus quis ex rhoncus, vitae fringilla velit feugiat. Quisque condimentum mi et ligula hendrerit, at congue dui accumsan. Nam faucibus arcu id risus suscipit, eget iaculis dolor cursus. Mauris eget massa eget dui suscipit vulputate quis maximus tellus. Sed blandit odio nisi, a condimentum leo porttitor at. Nam metus enim, condimentum semper auctor id, accumsan non sapien. Maecenas enim lacus, aliquam nec libero id, suscipit dictum mauris. Aliquam erat volutpat. Mauris sodales ante nisl, a aliquet enim facilisis et. Morbi quis felis vitae augue ornare lobortis. 165 | Donec rutrum rutrum tempus. Fusce ac justo et orci tempor dignissim consectetur euismod ligula. Curabitur tempor sapien erat. Mauris nisl lorem, vulputate id volutpat vitae, vulputate a est. Nullam non augue at lectus mattis gravida. Phasellus vestibulum scelerisque erat at scelerisque. Nullam at erat euismod, egestas arcu in, condimentum lorem. Proin nec cursus magna. Sed pretium egestas quam nec ultrices. Nullam nulla lorem, dapibus eget eros sed, interdum posuere lacus. Nulla tincidunt malesuada interdum. Suspendisse a pellentesque sem. Nunc ultrices, dolor quis feugiat vestibulum, nisi velit venenatis nisl, nec convallis nisl eros eu nunc. Sed molestie finibus blandit. Aenean malesuada tincidunt lectus, in maximus dui. 166 | Donec lacinia sem mollis quam tempor scelerisque. Etiam tincidunt facilisis bibendum. Phasellus dignissim vulputate turpis, porta aliquet magna auctor non. Fusce dignissim eget justo at elementum. Cras elit dolor, mattis nec sapien eu, ultrices dapibus metus. Donec in tempor nibh, vitae porttitor quam. Donec vitae risus sed nulla mattis pellentesque. Nulla metus nisi, venenatis sit amet leo vel, lacinia auctor nisi. 167 | Nunc accumsan odio eget lectus varius, eget malesuada tellus iaculis. Nam elementum est dolor, eu ullamcorper nibh hendrerit ac. Phasellus turpis velit, aliquet eu condimentum vitae, vehicula non purus. Nunc et feugiat dui. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus ante ex, pulvinar et sapien at, aliquet euismod diam. Etiam nunc dolor, gravida quis risus eget, accumsan consequat magna. Maecenas viverra imperdiet mauris. Etiam ac massa sapien. Maecenas cursus sodales commodo. Vivamus eget libero id metus volutpat accumsan in vitae tellus. Vivamus venenatis neque eu tellus ultricies, id scelerisque neque lobortis. Aliquam iaculis risus erat, ut maximus tellus luctus at. 168 | Vestibulum laoreet interdum risus, mollis iaculis tortor sagittis sit amet. Integer in lacus feugiat, convallis ligula vitae, porttitor mi. Praesent molestie molestie leo, vitae aliquam nisi consequat ac. Donec venenatis lorem condimentum, tincidunt tortor eget, pellentesque massa. Sed eget consequat ante. Suspendisse eget eleifend eros. Proin ac posuere nulla. In tristique non lectus in feugiat. Sed blandit tincidunt nulla, a mollis quam. Quisque non risus volutpat, sagittis nunc et, consequat lorem. Sed consectetur feugiat hendrerit. Sed consectetur gravida imperdiet. 169 | Aliquam imperdiet massa non dui consequat, et molestie tellus fermentum. Proin a lacus eget nunc hendrerit gravida vel cursus lacus. Sed augue lorem, egestas viverra ornare sed, dictum nec ante. Donec sodales ante ac imperdiet pretium. Nullam congue mauris non eleifend auctor. Cras dapibus finibus dictum. Quisque neque urna, dignissim at sem bibendum, ultricies porttitor odio. Fusce finibus odio sed nisi pretium, maximus pellentesque risus efficitur. Suspendisse volutpat elit at nisi malesuada dapibus. Ut venenatis libero massa, in consequat lectus rhoncus non. Cras posuere in libero eu suscipit. Sed suscipit quis nibh vel dapibus. Nam ut turpis nec libero rhoncus pellentesque. 170 | Pellentesque quis vehicula neque, eget scelerisque tellus. Praesent vulputate tincidunt sapien nec maximus. Donec a felis lorem. Pellentesque augue turpis, facilisis in ullamcorper eu, pulvinar et tortor. Mauris eget rutrum felis. Integer vel neque massa. Mauris dui neque, commodo ut venenatis eu, vehicula at purus. Suspendisse eu sodales dolor. In hac habitasse platea dictumst. Nulla varius sapien eget metus suscipit gravida. Sed feugiat aliquam lectus, quis pretium nisl sodales vitae. Duis at dolor accumsan, iaculis ipsum eget, maximus sapien. Nam auctor, orci non placerat sollicitudin, elit quam imperdiet turpis, eget lacinia velit turpis vitae massa. Phasellus facilisis tincidunt pellentesque. 171 | Proin congue, odio id mattis ultrices, mauris nulla pulvinar sapien, eget malesuada velit magna vel quam. Sed risus quam, luctus in urna id, sollicitudin egestas nibh. Sed eu pulvinar diam. Aliquam in sapien sit amet odio tempus rhoncus. In ac posuere justo. Quisque eleifend velit scelerisque faucibus varius. Pellentesque laoreet eros sed urna luctus fermentum. Nulla mattis turpis nec dictum euismod. Fusce ligula massa, ultrices a dictum id, elementum sed urna. Donec viverra arcu neque, quis sollicitudin odio condimentum vel. Cras laoreet interdum finibus. Sed eleifend ultricies purus, et rhoncus orci dignissim eget. 172 | Sed quis pretium risus. Aenean placerat erat risus, nec sodales erat egestas quis. Suspendisse mi velit, dictum sit amet maximus sed, hendrerit sit amet elit. Aliquam viverra facilisis magna non pretium. Aenean laoreet placerat fermentum. Suspendisse iaculis erat sed vehicula laoreet. In vel ex vel neque tristique volutpat sed cursus mauris. Mauris scelerisque pharetra libero, at malesuada sapien consequat quis. Donec vehicula ultricies risus, a tristique sapien laoreet ut. Curabitur accumsan mi sed nibh laoreet tempor. Aliquam feugiat elit quis lorem eleifend, tristique eleifend felis tincidunt. 173 | Cras sit amet luctus ex, lacinia pharetra odio. Donec non ex lobortis, varius eros eget, pulvinar orci. Mauris egestas ullamcorper massa quis cursus. Phasellus non nulla risus. Suspendisse sit amet metus cursus, aliquam erat id, scelerisque odio. Donec luctus purus ac risus lacinia, nec malesuada orci lacinia. Fusce hendrerit blandit eros et viverra. In at erat luctus, tristique erat in, ultrices elit. Ut euismod, neque quis volutpat congue, neque mauris interdum arcu, at venenatis ipsum sem sit amet felis. Fusce tempus, neque eu aliquet auctor, ipsum risus accumsan lacus, id dignissim metus ex non erat. Donec ornare enim non elementum pulvinar. Ut feugiat aliquam mauris a vestibulum. Integer tempus, mauris nec accumsan congue, velit lectus pretium risus, vel blandit ante quam gravida urna. Aliquam sed feugiat orci. Nunc sollicitudin lorem vitae euismod commodo. 174 | Vestibulum eget lacus quis enim tincidunt venenatis. Nullam elementum eros nec eros elementum eleifend. Integer bibendum ut neque fringilla molestie. Cras vel purus lorem. Donec sed posuere mi. Fusce efficitur urna nec nibh suscipit mattis. Curabitur mattis pulvinar viverra. Donec ut urna arcu. Sed tempus magna ipsum, posuere malesuada libero vulputate vel. 175 | Duis a rhoncus nisi. Nam vehicula maximus auctor. Nulla eu enim sit amet nunc efficitur vestibulum. Nulla eros quam, gravida id auctor et, faucibus non magna. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Ut posuere mi ut justo varius, non pretium justo condimentum. Maecenas nec ipsum quis ante sollicitudin cursus. Ut eget tortor id risus laoreet laoreet eu sed quam. 176 | Aenean non aliquet arcu. Integer et interdum libero, posuere rutrum nulla. Vestibulum malesuada diam mi, eget gravida nulla finibus non. Ut sit amet erat in augue consequat finibus rhoncus ut velit. Mauris justo quam, molestie in sem a, rutrum efficitur odio. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Sed varius pellentesque imperdiet. Nulla tempus imperdiet semper. 177 | Nulla viverra diam et viverra tempus. Etiam eleifend lectus lacus, a sollicitudin lacus porta in. Nam vulputate a augue quis molestie. Vivamus pellentesque purus nec tellus imperdiet, et commodo elit dapibus. Donec dolor nisi, convallis non orci et, porttitor maximus mauris. Pellentesque et leo fringilla, blandit nisi nec, pellentesque ligula. Morbi id finibus felis. Pellentesque nec mi tempus, tempus urna ut, posuere eros. Sed finibus vitae quam sed vestibulum. Proin mauris massa, maximus eu mi vel, ornare imperdiet est. Proin eu pharetra ex, eget placerat purus. In congue urna a elit porta, et placerat magna faucibus. Etiam vitae molestie odio, ut euismod justo. 178 | Etiam maximus massa in egestas accumsan. Curabitur ac rutrum felis. Aenean non laoreet nulla. Interdum et malesuada fames ac ante ipsum primis in faucibus. Maecenas id neque quam. Fusce semper facilisis venenatis. Donec a lacus egestas, malesuada mi id, efficitur nisl. Nullam augue ante, iaculis non faucibus sit amet, lobortis sed lorem. Sed ultricies libero sit amet lectus porta, ut maximus nulla placerat. Nulla ac mattis sem. Pellentesque nec posuere elit, in varius est. Suspendisse dictum est sed massa facilisis, eget scelerisque nibh lacinia. Integer aliquet mauris vel erat mollis vulputate. 179 | Sed non sodales ipsum. Phasellus elit erat, sagittis et eros nec, mattis condimentum felis. Nulla vitae neque nulla. Aliquam ac felis turpis. Suspendisse nec diam quis turpis tincidunt posuere. Mauris eu dapibus magna, sit amet tincidunt odio. Nulla ac enim sit amet lorem pulvinar fringilla ac et sapien. Sed et pharetra enim. Proin quis laoreet nisi. Sed at purus quis quam venenatis tincidunt. Proin condimentum, nunc et tincidunt accumsan, sem erat elementum nisl, id vulputate lorem purus id leo. Mauris suscipit gravida turpis, a lacinia diam consequat ac. Vivamus semper egestas lectus. Sed commodo ante ac elit efficitur euismod. 180 | In a ornare quam, non gravida tortor. Phasellus hendrerit ipsum eu rutrum fermentum. Maecenas vulputate efficitur condimentum. Donec venenatis maximus dictum. Interdum et malesuada fames ac ante ipsum primis in faucibus. Sed porttitor faucibus nisl, sit amet volutpat magna aliquet vitae. Ut ultricies massa vel magna convallis, at condimentum nulla amet.` 181 | }) 182 | 183 | it('must serialize and parse using hex', () => { 184 | const script1 = new Script([ 185 | OpCode.OP_FALSE, 186 | OpCode.OP_RETURN, 187 | b512, 188 | b66000 189 | ]) 190 | 191 | const hex = script1.toHex() 192 | const script2 = Script.fromHex(hex) 193 | 194 | assert.lengthOf(script2.chunks, 4) 195 | assert.equal(script2.chunks[2].toString(), b512) 196 | assert.equal(script2.chunks[3].toString(), b66000) 197 | }) 198 | 199 | it('must serialize and parse using ASM', () => { 200 | const script1 = new Script([ 201 | OpCode.OP_FALSE, 202 | OpCode.OP_RETURN, 203 | b512, 204 | b66000 205 | ]) 206 | 207 | const asm = script1.toASM() 208 | const script2 = Script.fromASM(asm) 209 | 210 | assert.lengthOf(script2.chunks, 4) 211 | assert.equal(script2.chunks[2].toString(), b512) 212 | assert.equal(script2.chunks[3].toString(), b66000) 213 | }) 214 | }) 215 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/code-frame@^7.5.5", "@babel/code-frame@^7.8.3": 6 | version "7.8.3" 7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" 8 | integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== 9 | dependencies: 10 | "@babel/highlight" "^7.8.3" 11 | 12 | "@babel/compat-data@^7.8.0", "@babel/compat-data@^7.8.1": 13 | version "7.8.1" 14 | resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.8.1.tgz#fc0bbbb7991e4fb2b47e168e60f2cc2c41680be9" 15 | integrity sha512-Z+6ZOXvyOWYxJ50BwxzdhRnRsGST8Y3jaZgxYig575lTjVSs3KtJnmESwZegg6e2Dn0td1eDhoWlp1wI4BTCPw== 16 | dependencies: 17 | browserslist "^4.8.2" 18 | invariant "^2.2.4" 19 | semver "^5.5.0" 20 | 21 | "@babel/core@^7.8.3": 22 | version "7.8.3" 23 | resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.8.3.tgz#30b0ebb4dd1585de6923a0b4d179e0b9f5d82941" 24 | integrity sha512-4XFkf8AwyrEG7Ziu3L2L0Cv+WyY47Tcsp70JFmpftbAA1K7YL/sgE9jh9HyNj08Y/U50ItUchpN0w6HxAoX1rA== 25 | dependencies: 26 | "@babel/code-frame" "^7.8.3" 27 | "@babel/generator" "^7.8.3" 28 | "@babel/helpers" "^7.8.3" 29 | "@babel/parser" "^7.8.3" 30 | "@babel/template" "^7.8.3" 31 | "@babel/traverse" "^7.8.3" 32 | "@babel/types" "^7.8.3" 33 | convert-source-map "^1.7.0" 34 | debug "^4.1.0" 35 | gensync "^1.0.0-beta.1" 36 | json5 "^2.1.0" 37 | lodash "^4.17.13" 38 | resolve "^1.3.2" 39 | semver "^5.4.1" 40 | source-map "^0.5.0" 41 | 42 | "@babel/generator@^7.8.3": 43 | version "7.8.3" 44 | resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.8.3.tgz#0e22c005b0a94c1c74eafe19ef78ce53a4d45c03" 45 | integrity sha512-WjoPk8hRpDRqqzRpvaR8/gDUPkrnOOeuT2m8cNICJtZH6mwaCo3v0OKMI7Y6SM1pBtyijnLtAL0HDi41pf41ug== 46 | dependencies: 47 | "@babel/types" "^7.8.3" 48 | jsesc "^2.5.1" 49 | lodash "^4.17.13" 50 | source-map "^0.5.0" 51 | 52 | "@babel/helper-annotate-as-pure@^7.8.3": 53 | version "7.8.3" 54 | resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz#60bc0bc657f63a0924ff9a4b4a0b24a13cf4deee" 55 | integrity sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw== 56 | dependencies: 57 | "@babel/types" "^7.8.3" 58 | 59 | "@babel/helper-builder-binary-assignment-operator-visitor@^7.8.3": 60 | version "7.8.3" 61 | resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz#c84097a427a061ac56a1c30ebf54b7b22d241503" 62 | integrity sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw== 63 | dependencies: 64 | "@babel/helper-explode-assignable-expression" "^7.8.3" 65 | "@babel/types" "^7.8.3" 66 | 67 | "@babel/helper-call-delegate@^7.8.3": 68 | version "7.8.3" 69 | resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.8.3.tgz#de82619898aa605d409c42be6ffb8d7204579692" 70 | integrity sha512-6Q05px0Eb+N4/GTyKPPvnkig7Lylw+QzihMpws9iiZQv7ZImf84ZsZpQH7QoWN4n4tm81SnSzPgHw2qtO0Zf3A== 71 | dependencies: 72 | "@babel/helper-hoist-variables" "^7.8.3" 73 | "@babel/traverse" "^7.8.3" 74 | "@babel/types" "^7.8.3" 75 | 76 | "@babel/helper-compilation-targets@^7.8.3": 77 | version "7.8.3" 78 | resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.3.tgz#2deedc816fd41dca7355ef39fd40c9ea69f0719a" 79 | integrity sha512-JLylPCsFjhLN+6uBSSh3iYdxKdeO9MNmoY96PE/99d8kyBFaXLORtAVhqN6iHa+wtPeqxKLghDOZry0+Aiw9Tw== 80 | dependencies: 81 | "@babel/compat-data" "^7.8.1" 82 | browserslist "^4.8.2" 83 | invariant "^2.2.4" 84 | levenary "^1.1.0" 85 | semver "^5.5.0" 86 | 87 | "@babel/helper-create-regexp-features-plugin@^7.8.3": 88 | version "7.8.3" 89 | resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.3.tgz#c774268c95ec07ee92476a3862b75cc2839beb79" 90 | integrity sha512-Gcsm1OHCUr9o9TcJln57xhWHtdXbA2pgQ58S0Lxlks0WMGNXuki4+GLfX0p+L2ZkINUGZvfkz8rzoqJQSthI+Q== 91 | dependencies: 92 | "@babel/helper-regex" "^7.8.3" 93 | regexpu-core "^4.6.0" 94 | 95 | "@babel/helper-define-map@^7.8.3": 96 | version "7.8.3" 97 | resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz#a0655cad5451c3760b726eba875f1cd8faa02c15" 98 | integrity sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g== 99 | dependencies: 100 | "@babel/helper-function-name" "^7.8.3" 101 | "@babel/types" "^7.8.3" 102 | lodash "^4.17.13" 103 | 104 | "@babel/helper-explode-assignable-expression@^7.8.3": 105 | version "7.8.3" 106 | resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz#a728dc5b4e89e30fc2dfc7d04fa28a930653f982" 107 | integrity sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw== 108 | dependencies: 109 | "@babel/traverse" "^7.8.3" 110 | "@babel/types" "^7.8.3" 111 | 112 | "@babel/helper-function-name@^7.8.3": 113 | version "7.8.3" 114 | resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz#eeeb665a01b1f11068e9fb86ad56a1cb1a824cca" 115 | integrity sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA== 116 | dependencies: 117 | "@babel/helper-get-function-arity" "^7.8.3" 118 | "@babel/template" "^7.8.3" 119 | "@babel/types" "^7.8.3" 120 | 121 | "@babel/helper-get-function-arity@^7.8.3": 122 | version "7.8.3" 123 | resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5" 124 | integrity sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA== 125 | dependencies: 126 | "@babel/types" "^7.8.3" 127 | 128 | "@babel/helper-hoist-variables@^7.8.3": 129 | version "7.8.3" 130 | resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz#1dbe9b6b55d78c9b4183fc8cdc6e30ceb83b7134" 131 | integrity sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg== 132 | dependencies: 133 | "@babel/types" "^7.8.3" 134 | 135 | "@babel/helper-member-expression-to-functions@^7.8.3": 136 | version "7.8.3" 137 | resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz#659b710498ea6c1d9907e0c73f206eee7dadc24c" 138 | integrity sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA== 139 | dependencies: 140 | "@babel/types" "^7.8.3" 141 | 142 | "@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.8.3": 143 | version "7.8.3" 144 | resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz#7fe39589b39c016331b6b8c3f441e8f0b1419498" 145 | integrity sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg== 146 | dependencies: 147 | "@babel/types" "^7.8.3" 148 | 149 | "@babel/helper-module-transforms@^7.8.3": 150 | version "7.8.3" 151 | resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.8.3.tgz#d305e35d02bee720fbc2c3c3623aa0c316c01590" 152 | integrity sha512-C7NG6B7vfBa/pwCOshpMbOYUmrYQDfCpVL/JCRu0ek8B5p8kue1+BCXpg2vOYs7w5ACB9GTOBYQ5U6NwrMg+3Q== 153 | dependencies: 154 | "@babel/helper-module-imports" "^7.8.3" 155 | "@babel/helper-simple-access" "^7.8.3" 156 | "@babel/helper-split-export-declaration" "^7.8.3" 157 | "@babel/template" "^7.8.3" 158 | "@babel/types" "^7.8.3" 159 | lodash "^4.17.13" 160 | 161 | "@babel/helper-optimise-call-expression@^7.8.3": 162 | version "7.8.3" 163 | resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz#7ed071813d09c75298ef4f208956006b6111ecb9" 164 | integrity sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ== 165 | dependencies: 166 | "@babel/types" "^7.8.3" 167 | 168 | "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": 169 | version "7.8.3" 170 | resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" 171 | integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== 172 | 173 | "@babel/helper-regex@^7.8.3": 174 | version "7.8.3" 175 | resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.8.3.tgz#139772607d51b93f23effe72105b319d2a4c6965" 176 | integrity sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ== 177 | dependencies: 178 | lodash "^4.17.13" 179 | 180 | "@babel/helper-remap-async-to-generator@^7.8.3": 181 | version "7.8.3" 182 | resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz#273c600d8b9bf5006142c1e35887d555c12edd86" 183 | integrity sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA== 184 | dependencies: 185 | "@babel/helper-annotate-as-pure" "^7.8.3" 186 | "@babel/helper-wrap-function" "^7.8.3" 187 | "@babel/template" "^7.8.3" 188 | "@babel/traverse" "^7.8.3" 189 | "@babel/types" "^7.8.3" 190 | 191 | "@babel/helper-replace-supers@^7.8.3": 192 | version "7.8.3" 193 | resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.8.3.tgz#91192d25f6abbcd41da8a989d4492574fb1530bc" 194 | integrity sha512-xOUssL6ho41U81etpLoT2RTdvdus4VfHamCuAm4AHxGr+0it5fnwoVdwUJ7GFEqCsQYzJUhcbsN9wB9apcYKFA== 195 | dependencies: 196 | "@babel/helper-member-expression-to-functions" "^7.8.3" 197 | "@babel/helper-optimise-call-expression" "^7.8.3" 198 | "@babel/traverse" "^7.8.3" 199 | "@babel/types" "^7.8.3" 200 | 201 | "@babel/helper-simple-access@^7.8.3": 202 | version "7.8.3" 203 | resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz#7f8109928b4dab4654076986af575231deb639ae" 204 | integrity sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw== 205 | dependencies: 206 | "@babel/template" "^7.8.3" 207 | "@babel/types" "^7.8.3" 208 | 209 | "@babel/helper-split-export-declaration@^7.8.3": 210 | version "7.8.3" 211 | resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" 212 | integrity sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA== 213 | dependencies: 214 | "@babel/types" "^7.8.3" 215 | 216 | "@babel/helper-wrap-function@^7.8.3": 217 | version "7.8.3" 218 | resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz#9dbdb2bb55ef14aaa01fe8c99b629bd5352d8610" 219 | integrity sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ== 220 | dependencies: 221 | "@babel/helper-function-name" "^7.8.3" 222 | "@babel/template" "^7.8.3" 223 | "@babel/traverse" "^7.8.3" 224 | "@babel/types" "^7.8.3" 225 | 226 | "@babel/helpers@^7.8.3": 227 | version "7.8.3" 228 | resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.8.3.tgz#382fbb0382ce7c4ce905945ab9641d688336ce85" 229 | integrity sha512-LmU3q9Pah/XyZU89QvBgGt+BCsTPoQa+73RxAQh8fb8qkDyIfeQnmgs+hvzhTCKTzqOyk7JTkS3MS1S8Mq5yrQ== 230 | dependencies: 231 | "@babel/template" "^7.8.3" 232 | "@babel/traverse" "^7.8.3" 233 | "@babel/types" "^7.8.3" 234 | 235 | "@babel/highlight@^7.8.3": 236 | version "7.8.3" 237 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.8.3.tgz#28f173d04223eaaa59bc1d439a3836e6d1265797" 238 | integrity sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg== 239 | dependencies: 240 | chalk "^2.0.0" 241 | esutils "^2.0.2" 242 | js-tokens "^4.0.0" 243 | 244 | "@babel/parser@^7.8.3": 245 | version "7.8.3" 246 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.8.3.tgz#790874091d2001c9be6ec426c2eed47bc7679081" 247 | integrity sha512-/V72F4Yp/qmHaTALizEm9Gf2eQHV3QyTL3K0cNfijwnMnb1L+LDlAubb/ZnSdGAVzVSWakujHYs1I26x66sMeQ== 248 | 249 | "@babel/plugin-proposal-async-generator-functions@^7.8.3": 250 | version "7.8.3" 251 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz#bad329c670b382589721b27540c7d288601c6e6f" 252 | integrity sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw== 253 | dependencies: 254 | "@babel/helper-plugin-utils" "^7.8.3" 255 | "@babel/helper-remap-async-to-generator" "^7.8.3" 256 | "@babel/plugin-syntax-async-generators" "^7.8.0" 257 | 258 | "@babel/plugin-proposal-dynamic-import@^7.8.3": 259 | version "7.8.3" 260 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz#38c4fe555744826e97e2ae930b0fb4cc07e66054" 261 | integrity sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w== 262 | dependencies: 263 | "@babel/helper-plugin-utils" "^7.8.3" 264 | "@babel/plugin-syntax-dynamic-import" "^7.8.0" 265 | 266 | "@babel/plugin-proposal-json-strings@^7.8.3": 267 | version "7.8.3" 268 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz#da5216b238a98b58a1e05d6852104b10f9a70d6b" 269 | integrity sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q== 270 | dependencies: 271 | "@babel/helper-plugin-utils" "^7.8.3" 272 | "@babel/plugin-syntax-json-strings" "^7.8.0" 273 | 274 | "@babel/plugin-proposal-nullish-coalescing-operator@^7.8.3": 275 | version "7.8.3" 276 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz#e4572253fdeed65cddeecfdab3f928afeb2fd5d2" 277 | integrity sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw== 278 | dependencies: 279 | "@babel/helper-plugin-utils" "^7.8.3" 280 | "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" 281 | 282 | "@babel/plugin-proposal-object-rest-spread@^7.8.3": 283 | version "7.8.3" 284 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.8.3.tgz#eb5ae366118ddca67bed583b53d7554cad9951bb" 285 | integrity sha512-8qvuPwU/xxUCt78HocNlv0mXXo0wdh9VT1R04WU8HGOfaOob26pF+9P5/lYjN/q7DHOX1bvX60hnhOvuQUJdbA== 286 | dependencies: 287 | "@babel/helper-plugin-utils" "^7.8.3" 288 | "@babel/plugin-syntax-object-rest-spread" "^7.8.0" 289 | 290 | "@babel/plugin-proposal-optional-catch-binding@^7.8.3": 291 | version "7.8.3" 292 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz#9dee96ab1650eed88646ae9734ca167ac4a9c5c9" 293 | integrity sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw== 294 | dependencies: 295 | "@babel/helper-plugin-utils" "^7.8.3" 296 | "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" 297 | 298 | "@babel/plugin-proposal-optional-chaining@^7.8.3": 299 | version "7.8.3" 300 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.8.3.tgz#ae10b3214cb25f7adb1f3bc87ba42ca10b7e2543" 301 | integrity sha512-QIoIR9abkVn+seDE3OjA08jWcs3eZ9+wJCKSRgo3WdEU2csFYgdScb+8qHB3+WXsGJD55u+5hWCISI7ejXS+kg== 302 | dependencies: 303 | "@babel/helper-plugin-utils" "^7.8.3" 304 | "@babel/plugin-syntax-optional-chaining" "^7.8.0" 305 | 306 | "@babel/plugin-proposal-unicode-property-regex@^7.8.3": 307 | version "7.8.3" 308 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.3.tgz#b646c3adea5f98800c9ab45105ac34d06cd4a47f" 309 | integrity sha512-1/1/rEZv2XGweRwwSkLpY+s60za9OZ1hJs4YDqFHCw0kYWYwL5IFljVY1MYBL+weT1l9pokDO2uhSTLVxzoHkQ== 310 | dependencies: 311 | "@babel/helper-create-regexp-features-plugin" "^7.8.3" 312 | "@babel/helper-plugin-utils" "^7.8.3" 313 | 314 | "@babel/plugin-syntax-async-generators@^7.8.0": 315 | version "7.8.4" 316 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" 317 | integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== 318 | dependencies: 319 | "@babel/helper-plugin-utils" "^7.8.0" 320 | 321 | "@babel/plugin-syntax-dynamic-import@^7.8.0": 322 | version "7.8.3" 323 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" 324 | integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== 325 | dependencies: 326 | "@babel/helper-plugin-utils" "^7.8.0" 327 | 328 | "@babel/plugin-syntax-json-strings@^7.8.0": 329 | version "7.8.3" 330 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" 331 | integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== 332 | dependencies: 333 | "@babel/helper-plugin-utils" "^7.8.0" 334 | 335 | "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0": 336 | version "7.8.3" 337 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" 338 | integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== 339 | dependencies: 340 | "@babel/helper-plugin-utils" "^7.8.0" 341 | 342 | "@babel/plugin-syntax-object-rest-spread@^7.8.0": 343 | version "7.8.3" 344 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" 345 | integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== 346 | dependencies: 347 | "@babel/helper-plugin-utils" "^7.8.0" 348 | 349 | "@babel/plugin-syntax-optional-catch-binding@^7.8.0": 350 | version "7.8.3" 351 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" 352 | integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== 353 | dependencies: 354 | "@babel/helper-plugin-utils" "^7.8.0" 355 | 356 | "@babel/plugin-syntax-optional-chaining@^7.8.0": 357 | version "7.8.3" 358 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" 359 | integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== 360 | dependencies: 361 | "@babel/helper-plugin-utils" "^7.8.0" 362 | 363 | "@babel/plugin-syntax-top-level-await@^7.8.3": 364 | version "7.8.3" 365 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz#3acdece695e6b13aaf57fc291d1a800950c71391" 366 | integrity sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g== 367 | dependencies: 368 | "@babel/helper-plugin-utils" "^7.8.3" 369 | 370 | "@babel/plugin-transform-arrow-functions@^7.8.3": 371 | version "7.8.3" 372 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz#82776c2ed0cd9e1a49956daeb896024c9473b8b6" 373 | integrity sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg== 374 | dependencies: 375 | "@babel/helper-plugin-utils" "^7.8.3" 376 | 377 | "@babel/plugin-transform-async-to-generator@^7.8.3": 378 | version "7.8.3" 379 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz#4308fad0d9409d71eafb9b1a6ee35f9d64b64086" 380 | integrity sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ== 381 | dependencies: 382 | "@babel/helper-module-imports" "^7.8.3" 383 | "@babel/helper-plugin-utils" "^7.8.3" 384 | "@babel/helper-remap-async-to-generator" "^7.8.3" 385 | 386 | "@babel/plugin-transform-block-scoped-functions@^7.8.3": 387 | version "7.8.3" 388 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz#437eec5b799b5852072084b3ae5ef66e8349e8a3" 389 | integrity sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg== 390 | dependencies: 391 | "@babel/helper-plugin-utils" "^7.8.3" 392 | 393 | "@babel/plugin-transform-block-scoping@^7.8.3": 394 | version "7.8.3" 395 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz#97d35dab66857a437c166358b91d09050c868f3a" 396 | integrity sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w== 397 | dependencies: 398 | "@babel/helper-plugin-utils" "^7.8.3" 399 | lodash "^4.17.13" 400 | 401 | "@babel/plugin-transform-classes@^7.8.3": 402 | version "7.8.3" 403 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.8.3.tgz#46fd7a9d2bb9ea89ce88720477979fe0d71b21b8" 404 | integrity sha512-SjT0cwFJ+7Rbr1vQsvphAHwUHvSUPmMjMU/0P59G8U2HLFqSa082JO7zkbDNWs9kH/IUqpHI6xWNesGf8haF1w== 405 | dependencies: 406 | "@babel/helper-annotate-as-pure" "^7.8.3" 407 | "@babel/helper-define-map" "^7.8.3" 408 | "@babel/helper-function-name" "^7.8.3" 409 | "@babel/helper-optimise-call-expression" "^7.8.3" 410 | "@babel/helper-plugin-utils" "^7.8.3" 411 | "@babel/helper-replace-supers" "^7.8.3" 412 | "@babel/helper-split-export-declaration" "^7.8.3" 413 | globals "^11.1.0" 414 | 415 | "@babel/plugin-transform-computed-properties@^7.8.3": 416 | version "7.8.3" 417 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz#96d0d28b7f7ce4eb5b120bb2e0e943343c86f81b" 418 | integrity sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA== 419 | dependencies: 420 | "@babel/helper-plugin-utils" "^7.8.3" 421 | 422 | "@babel/plugin-transform-destructuring@^7.8.3": 423 | version "7.8.3" 424 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.3.tgz#20ddfbd9e4676906b1056ee60af88590cc7aaa0b" 425 | integrity sha512-H4X646nCkiEcHZUZaRkhE2XVsoz0J/1x3VVujnn96pSoGCtKPA99ZZA+va+gK+92Zycd6OBKCD8tDb/731bhgQ== 426 | dependencies: 427 | "@babel/helper-plugin-utils" "^7.8.3" 428 | 429 | "@babel/plugin-transform-dotall-regex@^7.8.3": 430 | version "7.8.3" 431 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz#c3c6ec5ee6125c6993c5cbca20dc8621a9ea7a6e" 432 | integrity sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw== 433 | dependencies: 434 | "@babel/helper-create-regexp-features-plugin" "^7.8.3" 435 | "@babel/helper-plugin-utils" "^7.8.3" 436 | 437 | "@babel/plugin-transform-duplicate-keys@^7.8.3": 438 | version "7.8.3" 439 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz#8d12df309aa537f272899c565ea1768e286e21f1" 440 | integrity sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ== 441 | dependencies: 442 | "@babel/helper-plugin-utils" "^7.8.3" 443 | 444 | "@babel/plugin-transform-exponentiation-operator@^7.8.3": 445 | version "7.8.3" 446 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz#581a6d7f56970e06bf51560cd64f5e947b70d7b7" 447 | integrity sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ== 448 | dependencies: 449 | "@babel/helper-builder-binary-assignment-operator-visitor" "^7.8.3" 450 | "@babel/helper-plugin-utils" "^7.8.3" 451 | 452 | "@babel/plugin-transform-for-of@^7.8.3": 453 | version "7.8.3" 454 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.8.3.tgz#15f17bce2fc95c7d59a24b299e83e81cedc22e18" 455 | integrity sha512-ZjXznLNTxhpf4Q5q3x1NsngzGA38t9naWH8Gt+0qYZEJAcvPI9waSStSh56u19Ofjr7QmD0wUsQ8hw8s/p1VnA== 456 | dependencies: 457 | "@babel/helper-plugin-utils" "^7.8.3" 458 | 459 | "@babel/plugin-transform-function-name@^7.8.3": 460 | version "7.8.3" 461 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz#279373cb27322aaad67c2683e776dfc47196ed8b" 462 | integrity sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ== 463 | dependencies: 464 | "@babel/helper-function-name" "^7.8.3" 465 | "@babel/helper-plugin-utils" "^7.8.3" 466 | 467 | "@babel/plugin-transform-literals@^7.8.3": 468 | version "7.8.3" 469 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz#aef239823d91994ec7b68e55193525d76dbd5dc1" 470 | integrity sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A== 471 | dependencies: 472 | "@babel/helper-plugin-utils" "^7.8.3" 473 | 474 | "@babel/plugin-transform-member-expression-literals@^7.8.3": 475 | version "7.8.3" 476 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz#963fed4b620ac7cbf6029c755424029fa3a40410" 477 | integrity sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA== 478 | dependencies: 479 | "@babel/helper-plugin-utils" "^7.8.3" 480 | 481 | "@babel/plugin-transform-modules-amd@^7.8.3": 482 | version "7.8.3" 483 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.8.3.tgz#65606d44616b50225e76f5578f33c568a0b876a5" 484 | integrity sha512-MadJiU3rLKclzT5kBH4yxdry96odTUwuqrZM+GllFI/VhxfPz+k9MshJM+MwhfkCdxxclSbSBbUGciBngR+kEQ== 485 | dependencies: 486 | "@babel/helper-module-transforms" "^7.8.3" 487 | "@babel/helper-plugin-utils" "^7.8.3" 488 | babel-plugin-dynamic-import-node "^2.3.0" 489 | 490 | "@babel/plugin-transform-modules-commonjs@^7.8.3": 491 | version "7.8.3" 492 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.8.3.tgz#df251706ec331bd058a34bdd72613915f82928a5" 493 | integrity sha512-JpdMEfA15HZ/1gNuB9XEDlZM1h/gF/YOH7zaZzQu2xCFRfwc01NXBMHHSTT6hRjlXJJs5x/bfODM3LiCk94Sxg== 494 | dependencies: 495 | "@babel/helper-module-transforms" "^7.8.3" 496 | "@babel/helper-plugin-utils" "^7.8.3" 497 | "@babel/helper-simple-access" "^7.8.3" 498 | babel-plugin-dynamic-import-node "^2.3.0" 499 | 500 | "@babel/plugin-transform-modules-systemjs@^7.8.3": 501 | version "7.8.3" 502 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.8.3.tgz#d8bbf222c1dbe3661f440f2f00c16e9bb7d0d420" 503 | integrity sha512-8cESMCJjmArMYqa9AO5YuMEkE4ds28tMpZcGZB/jl3n0ZzlsxOAi3mC+SKypTfT8gjMupCnd3YiXCkMjj2jfOg== 504 | dependencies: 505 | "@babel/helper-hoist-variables" "^7.8.3" 506 | "@babel/helper-module-transforms" "^7.8.3" 507 | "@babel/helper-plugin-utils" "^7.8.3" 508 | babel-plugin-dynamic-import-node "^2.3.0" 509 | 510 | "@babel/plugin-transform-modules-umd@^7.8.3": 511 | version "7.8.3" 512 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.8.3.tgz#592d578ce06c52f5b98b02f913d653ffe972661a" 513 | integrity sha512-evhTyWhbwbI3/U6dZAnx/ePoV7H6OUG+OjiJFHmhr9FPn0VShjwC2kdxqIuQ/+1P50TMrneGzMeyMTFOjKSnAw== 514 | dependencies: 515 | "@babel/helper-module-transforms" "^7.8.3" 516 | "@babel/helper-plugin-utils" "^7.8.3" 517 | 518 | "@babel/plugin-transform-named-capturing-groups-regex@^7.8.3": 519 | version "7.8.3" 520 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz#a2a72bffa202ac0e2d0506afd0939c5ecbc48c6c" 521 | integrity sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw== 522 | dependencies: 523 | "@babel/helper-create-regexp-features-plugin" "^7.8.3" 524 | 525 | "@babel/plugin-transform-new-target@^7.8.3": 526 | version "7.8.3" 527 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz#60cc2ae66d85c95ab540eb34babb6434d4c70c43" 528 | integrity sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw== 529 | dependencies: 530 | "@babel/helper-plugin-utils" "^7.8.3" 531 | 532 | "@babel/plugin-transform-object-super@^7.8.3": 533 | version "7.8.3" 534 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz#ebb6a1e7a86ffa96858bd6ac0102d65944261725" 535 | integrity sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ== 536 | dependencies: 537 | "@babel/helper-plugin-utils" "^7.8.3" 538 | "@babel/helper-replace-supers" "^7.8.3" 539 | 540 | "@babel/plugin-transform-parameters@^7.8.3": 541 | version "7.8.3" 542 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.8.3.tgz#7890576a13b17325d8b7d44cb37f21dc3bbdda59" 543 | integrity sha512-/pqngtGb54JwMBZ6S/D3XYylQDFtGjWrnoCF4gXZOUpFV/ujbxnoNGNvDGu6doFWRPBveE72qTx/RRU44j5I/Q== 544 | dependencies: 545 | "@babel/helper-call-delegate" "^7.8.3" 546 | "@babel/helper-get-function-arity" "^7.8.3" 547 | "@babel/helper-plugin-utils" "^7.8.3" 548 | 549 | "@babel/plugin-transform-property-literals@^7.8.3": 550 | version "7.8.3" 551 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz#33194300d8539c1ed28c62ad5087ba3807b98263" 552 | integrity sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg== 553 | dependencies: 554 | "@babel/helper-plugin-utils" "^7.8.3" 555 | 556 | "@babel/plugin-transform-regenerator@^7.8.3": 557 | version "7.8.3" 558 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.3.tgz#b31031e8059c07495bf23614c97f3d9698bc6ec8" 559 | integrity sha512-qt/kcur/FxrQrzFR432FGZznkVAjiyFtCOANjkAKwCbt465L6ZCiUQh2oMYGU3Wo8LRFJxNDFwWn106S5wVUNA== 560 | dependencies: 561 | regenerator-transform "^0.14.0" 562 | 563 | "@babel/plugin-transform-reserved-words@^7.8.3": 564 | version "7.8.3" 565 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz#9a0635ac4e665d29b162837dd3cc50745dfdf1f5" 566 | integrity sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A== 567 | dependencies: 568 | "@babel/helper-plugin-utils" "^7.8.3" 569 | 570 | "@babel/plugin-transform-shorthand-properties@^7.8.3": 571 | version "7.8.3" 572 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz#28545216e023a832d4d3a1185ed492bcfeac08c8" 573 | integrity sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w== 574 | dependencies: 575 | "@babel/helper-plugin-utils" "^7.8.3" 576 | 577 | "@babel/plugin-transform-spread@^7.8.3": 578 | version "7.8.3" 579 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz#9c8ffe8170fdfb88b114ecb920b82fb6e95fe5e8" 580 | integrity sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g== 581 | dependencies: 582 | "@babel/helper-plugin-utils" "^7.8.3" 583 | 584 | "@babel/plugin-transform-sticky-regex@^7.8.3": 585 | version "7.8.3" 586 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz#be7a1290f81dae767475452199e1f76d6175b100" 587 | integrity sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw== 588 | dependencies: 589 | "@babel/helper-plugin-utils" "^7.8.3" 590 | "@babel/helper-regex" "^7.8.3" 591 | 592 | "@babel/plugin-transform-template-literals@^7.8.3": 593 | version "7.8.3" 594 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz#7bfa4732b455ea6a43130adc0ba767ec0e402a80" 595 | integrity sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ== 596 | dependencies: 597 | "@babel/helper-annotate-as-pure" "^7.8.3" 598 | "@babel/helper-plugin-utils" "^7.8.3" 599 | 600 | "@babel/plugin-transform-typeof-symbol@^7.8.3": 601 | version "7.8.3" 602 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.3.tgz#5cffb216fb25c8c64ba6bf5f76ce49d3ab079f4d" 603 | integrity sha512-3TrkKd4LPqm4jHs6nPtSDI/SV9Cm5PRJkHLUgTcqRQQTMAZ44ZaAdDZJtvWFSaRcvT0a1rTmJ5ZA5tDKjleF3g== 604 | dependencies: 605 | "@babel/helper-plugin-utils" "^7.8.3" 606 | 607 | "@babel/plugin-transform-unicode-regex@^7.8.3": 608 | version "7.8.3" 609 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz#0cef36e3ba73e5c57273effb182f46b91a1ecaad" 610 | integrity sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw== 611 | dependencies: 612 | "@babel/helper-create-regexp-features-plugin" "^7.8.3" 613 | "@babel/helper-plugin-utils" "^7.8.3" 614 | 615 | "@babel/preset-env@^7.8.3": 616 | version "7.8.3" 617 | resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.8.3.tgz#dc0fb2938f52bbddd79b3c861a4b3427dd3a6c54" 618 | integrity sha512-Rs4RPL2KjSLSE2mWAx5/iCH+GC1ikKdxPrhnRS6PfFVaiZeom22VFKN4X8ZthyN61kAaR05tfXTbCvatl9WIQg== 619 | dependencies: 620 | "@babel/compat-data" "^7.8.0" 621 | "@babel/helper-compilation-targets" "^7.8.3" 622 | "@babel/helper-module-imports" "^7.8.3" 623 | "@babel/helper-plugin-utils" "^7.8.3" 624 | "@babel/plugin-proposal-async-generator-functions" "^7.8.3" 625 | "@babel/plugin-proposal-dynamic-import" "^7.8.3" 626 | "@babel/plugin-proposal-json-strings" "^7.8.3" 627 | "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3" 628 | "@babel/plugin-proposal-object-rest-spread" "^7.8.3" 629 | "@babel/plugin-proposal-optional-catch-binding" "^7.8.3" 630 | "@babel/plugin-proposal-optional-chaining" "^7.8.3" 631 | "@babel/plugin-proposal-unicode-property-regex" "^7.8.3" 632 | "@babel/plugin-syntax-async-generators" "^7.8.0" 633 | "@babel/plugin-syntax-dynamic-import" "^7.8.0" 634 | "@babel/plugin-syntax-json-strings" "^7.8.0" 635 | "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" 636 | "@babel/plugin-syntax-object-rest-spread" "^7.8.0" 637 | "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" 638 | "@babel/plugin-syntax-optional-chaining" "^7.8.0" 639 | "@babel/plugin-syntax-top-level-await" "^7.8.3" 640 | "@babel/plugin-transform-arrow-functions" "^7.8.3" 641 | "@babel/plugin-transform-async-to-generator" "^7.8.3" 642 | "@babel/plugin-transform-block-scoped-functions" "^7.8.3" 643 | "@babel/plugin-transform-block-scoping" "^7.8.3" 644 | "@babel/plugin-transform-classes" "^7.8.3" 645 | "@babel/plugin-transform-computed-properties" "^7.8.3" 646 | "@babel/plugin-transform-destructuring" "^7.8.3" 647 | "@babel/plugin-transform-dotall-regex" "^7.8.3" 648 | "@babel/plugin-transform-duplicate-keys" "^7.8.3" 649 | "@babel/plugin-transform-exponentiation-operator" "^7.8.3" 650 | "@babel/plugin-transform-for-of" "^7.8.3" 651 | "@babel/plugin-transform-function-name" "^7.8.3" 652 | "@babel/plugin-transform-literals" "^7.8.3" 653 | "@babel/plugin-transform-member-expression-literals" "^7.8.3" 654 | "@babel/plugin-transform-modules-amd" "^7.8.3" 655 | "@babel/plugin-transform-modules-commonjs" "^7.8.3" 656 | "@babel/plugin-transform-modules-systemjs" "^7.8.3" 657 | "@babel/plugin-transform-modules-umd" "^7.8.3" 658 | "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" 659 | "@babel/plugin-transform-new-target" "^7.8.3" 660 | "@babel/plugin-transform-object-super" "^7.8.3" 661 | "@babel/plugin-transform-parameters" "^7.8.3" 662 | "@babel/plugin-transform-property-literals" "^7.8.3" 663 | "@babel/plugin-transform-regenerator" "^7.8.3" 664 | "@babel/plugin-transform-reserved-words" "^7.8.3" 665 | "@babel/plugin-transform-shorthand-properties" "^7.8.3" 666 | "@babel/plugin-transform-spread" "^7.8.3" 667 | "@babel/plugin-transform-sticky-regex" "^7.8.3" 668 | "@babel/plugin-transform-template-literals" "^7.8.3" 669 | "@babel/plugin-transform-typeof-symbol" "^7.8.3" 670 | "@babel/plugin-transform-unicode-regex" "^7.8.3" 671 | "@babel/types" "^7.8.3" 672 | browserslist "^4.8.2" 673 | core-js-compat "^3.6.2" 674 | invariant "^2.2.2" 675 | levenary "^1.1.0" 676 | semver "^5.5.0" 677 | 678 | "@babel/template@^7.8.3": 679 | version "7.8.3" 680 | resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.3.tgz#e02ad04fe262a657809327f578056ca15fd4d1b8" 681 | integrity sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ== 682 | dependencies: 683 | "@babel/code-frame" "^7.8.3" 684 | "@babel/parser" "^7.8.3" 685 | "@babel/types" "^7.8.3" 686 | 687 | "@babel/traverse@^7.8.3": 688 | version "7.8.3" 689 | resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.8.3.tgz#a826215b011c9b4f73f3a893afbc05151358bf9a" 690 | integrity sha512-we+a2lti+eEImHmEXp7bM9cTxGzxPmBiVJlLVD+FuuQMeeO7RaDbutbgeheDkw+Xe3mCfJHnGOWLswT74m2IPg== 691 | dependencies: 692 | "@babel/code-frame" "^7.8.3" 693 | "@babel/generator" "^7.8.3" 694 | "@babel/helper-function-name" "^7.8.3" 695 | "@babel/helper-split-export-declaration" "^7.8.3" 696 | "@babel/parser" "^7.8.3" 697 | "@babel/types" "^7.8.3" 698 | debug "^4.1.0" 699 | globals "^11.1.0" 700 | lodash "^4.17.13" 701 | 702 | "@babel/types@^7.8.3": 703 | version "7.8.3" 704 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.3.tgz#5a383dffa5416db1b73dedffd311ffd0788fb31c" 705 | integrity sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg== 706 | dependencies: 707 | esutils "^2.0.2" 708 | lodash "^4.17.13" 709 | to-fast-properties "^2.0.0" 710 | 711 | "@rollup/plugin-commonjs@^11.0.1": 712 | version "11.0.1" 713 | resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-11.0.1.tgz#6056a6757286901cc6c1599123e6680a78cad6c2" 714 | integrity sha512-SaVUoaLDg3KnIXC5IBNIspr1APTYDzk05VaYcI6qz+0XX3ZlSCwAkfAhNSOxfd5GAdcm/63Noi4TowOY9MpcDg== 715 | dependencies: 716 | "@rollup/pluginutils" "^3.0.0" 717 | estree-walker "^0.6.1" 718 | is-reference "^1.1.2" 719 | magic-string "^0.25.2" 720 | resolve "^1.11.0" 721 | 722 | "@rollup/plugin-node-resolve@^7.0.0": 723 | version "7.0.0" 724 | resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.0.0.tgz#cce3826df801538b001972fbf9b6b1c22b69fdf8" 725 | integrity sha512-+vOx2+WMBMFotYKM3yYeDGZxIvcQ7yO4g+SuKDFsjKaq8Lw3EPgfB6qNlp8Z/3ceDCEhHvC9/b+PgBGwDQGbzQ== 726 | dependencies: 727 | "@rollup/pluginutils" "^3.0.0" 728 | "@types/resolve" "0.0.8" 729 | builtin-modules "^3.1.0" 730 | is-module "^1.0.0" 731 | resolve "^1.11.1" 732 | 733 | "@rollup/pluginutils@^3.0.0": 734 | version "3.0.4" 735 | resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.0.4.tgz#3a104a41a90f8d1dcf308e18f8fa402d1cc6576e" 736 | integrity sha512-buc0oeq2zqQu2mpMyvZgAaQvitikYjT/4JYhA4EXwxX8/g0ZGHoGiX+0AwmfhrNqH4oJv67gn80sTZFQ/jL1bw== 737 | dependencies: 738 | estree-walker "^0.6.1" 739 | 740 | "@types/estree@*": 741 | version "0.0.42" 742 | resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.42.tgz#8d0c1f480339efedb3e46070e22dd63e0430dd11" 743 | integrity sha512-K1DPVvnBCPxzD+G51/cxVIoc2X8uUVl1zpJeE6iKcgHMj4+tbat5Xu4TjV7v2QSDbIeAfLi2hIk+u2+s0MlpUQ== 744 | 745 | "@types/estree@0.0.39": 746 | version "0.0.39" 747 | resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" 748 | integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== 749 | 750 | "@types/node@*": 751 | version "13.1.7" 752 | resolved "https://registry.yarnpkg.com/@types/node/-/node-13.1.7.tgz#db51d28b8dfacfe4fb2d0da88f5eb0a2eca00675" 753 | integrity sha512-HU0q9GXazqiKwviVxg9SI/+t/nAsGkvLDkIdxz+ObejG2nX6Si00TeLqHMoS+a/1tjH7a8YpKVQwtgHuMQsldg== 754 | 755 | "@types/resolve@0.0.8": 756 | version "0.0.8" 757 | resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" 758 | integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== 759 | dependencies: 760 | "@types/node" "*" 761 | 762 | acorn@^7.1.0: 763 | version "7.1.0" 764 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.0.tgz#949d36f2c292535da602283586c2477c57eb2d6c" 765 | integrity sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ== 766 | 767 | ansi-colors@3.2.3: 768 | version "3.2.3" 769 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.3.tgz#57d35b8686e851e2cc04c403f1c00203976a1813" 770 | integrity sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw== 771 | 772 | ansi-regex@^3.0.0: 773 | version "3.0.0" 774 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" 775 | integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= 776 | 777 | ansi-regex@^4.1.0: 778 | version "4.1.0" 779 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" 780 | integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== 781 | 782 | ansi-styles@^3.2.0, ansi-styles@^3.2.1: 783 | version "3.2.1" 784 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 785 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 786 | dependencies: 787 | color-convert "^1.9.0" 788 | 789 | anymatch@~3.1.1: 790 | version "3.1.1" 791 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" 792 | integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== 793 | dependencies: 794 | normalize-path "^3.0.0" 795 | picomatch "^2.0.4" 796 | 797 | argparse@^1.0.7: 798 | version "1.0.10" 799 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 800 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 801 | dependencies: 802 | sprintf-js "~1.0.2" 803 | 804 | assertion-error@^1.1.0: 805 | version "1.1.0" 806 | resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" 807 | integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== 808 | 809 | babel-plugin-dynamic-import-node@^2.3.0: 810 | version "2.3.0" 811 | resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz#f00f507bdaa3c3e3ff6e7e5e98d90a7acab96f7f" 812 | integrity sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ== 813 | dependencies: 814 | object.assign "^4.1.0" 815 | 816 | balanced-match@^1.0.0: 817 | version "1.0.0" 818 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 819 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 820 | 821 | base64-js@1.0.2: 822 | version "1.0.2" 823 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.0.2.tgz#474211c95e6cf2a547db461e4f6778b51d08fa65" 824 | integrity sha1-R0IRyV5s8qVH20YeT2d4tR0I+mU= 825 | 826 | binary-extensions@^2.0.0: 827 | version "2.0.0" 828 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" 829 | integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== 830 | 831 | bops@^1.0.0: 832 | version "1.0.0" 833 | resolved "https://registry.yarnpkg.com/bops/-/bops-1.0.0.tgz#631a8928f1178417eb6f706cf69acdb5e5a4eaad" 834 | integrity sha1-YxqJKPEXhBfrb3Bs9prNteWk6q0= 835 | dependencies: 836 | base64-js "1.0.2" 837 | to-utf8 "0.0.1" 838 | 839 | brace-expansion@^1.1.7: 840 | version "1.1.11" 841 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 842 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 843 | dependencies: 844 | balanced-match "^1.0.0" 845 | concat-map "0.0.1" 846 | 847 | braces@~3.0.2: 848 | version "3.0.2" 849 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 850 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 851 | dependencies: 852 | fill-range "^7.0.1" 853 | 854 | browser-stdout@1.3.1: 855 | version "1.3.1" 856 | resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" 857 | integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== 858 | 859 | browserslist@^4.8.2, browserslist@^4.8.3: 860 | version "4.8.3" 861 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.8.3.tgz#65802fcd77177c878e015f0e3189f2c4f627ba44" 862 | integrity sha512-iU43cMMknxG1ClEZ2MDKeonKE1CCrFVkQK2AqO2YWFmvIrx4JWrvQ4w4hQez6EpVI8rHTtqh/ruHHDHSOKxvUg== 863 | dependencies: 864 | caniuse-lite "^1.0.30001017" 865 | electron-to-chromium "^1.3.322" 866 | node-releases "^1.1.44" 867 | 868 | buffer-from@^1.0.0: 869 | version "1.1.1" 870 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" 871 | integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== 872 | 873 | builtin-modules@^3.1.0: 874 | version "3.1.0" 875 | resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484" 876 | integrity sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw== 877 | 878 | camelcase@^5.0.0: 879 | version "5.3.1" 880 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" 881 | integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== 882 | 883 | caniuse-lite@^1.0.30001017: 884 | version "1.0.30001021" 885 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001021.tgz#e75ed1ef6dbadd580ac7e7720bb16f07b083f254" 886 | integrity sha512-wuMhT7/hwkgd8gldgp2jcrUjOU9RXJ4XxGumQeOsUr91l3WwmM68Cpa/ymCnWEDqakwFXhuDQbaKNHXBPgeE9g== 887 | 888 | chai@^4.2.0: 889 | version "4.2.0" 890 | resolved "https://registry.yarnpkg.com/chai/-/chai-4.2.0.tgz#760aa72cf20e3795e84b12877ce0e83737aa29e5" 891 | integrity sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw== 892 | dependencies: 893 | assertion-error "^1.1.0" 894 | check-error "^1.0.2" 895 | deep-eql "^3.0.1" 896 | get-func-name "^2.0.0" 897 | pathval "^1.1.0" 898 | type-detect "^4.0.5" 899 | 900 | chalk@^2.0.0, chalk@^2.0.1: 901 | version "2.4.2" 902 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 903 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 904 | dependencies: 905 | ansi-styles "^3.2.1" 906 | escape-string-regexp "^1.0.5" 907 | supports-color "^5.3.0" 908 | 909 | check-error@^1.0.2: 910 | version "1.0.2" 911 | resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" 912 | integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= 913 | 914 | chokidar@3.3.0: 915 | version "3.3.0" 916 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.0.tgz#12c0714668c55800f659e262d4962a97faf554a6" 917 | integrity sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A== 918 | dependencies: 919 | anymatch "~3.1.1" 920 | braces "~3.0.2" 921 | glob-parent "~5.1.0" 922 | is-binary-path "~2.1.0" 923 | is-glob "~4.0.1" 924 | normalize-path "~3.0.0" 925 | readdirp "~3.2.0" 926 | optionalDependencies: 927 | fsevents "~2.1.1" 928 | 929 | cliui@^5.0.0: 930 | version "5.0.0" 931 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" 932 | integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== 933 | dependencies: 934 | string-width "^3.1.0" 935 | strip-ansi "^5.2.0" 936 | wrap-ansi "^5.1.0" 937 | 938 | color-convert@^1.9.0: 939 | version "1.9.3" 940 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 941 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 942 | dependencies: 943 | color-name "1.1.3" 944 | 945 | color-name@1.1.3: 946 | version "1.1.3" 947 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 948 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 949 | 950 | commander@^2.20.0: 951 | version "2.20.3" 952 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" 953 | integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== 954 | 955 | concat-map@0.0.1: 956 | version "0.0.1" 957 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 958 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 959 | 960 | convert-source-map@^1.7.0: 961 | version "1.7.0" 962 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" 963 | integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== 964 | dependencies: 965 | safe-buffer "~5.1.1" 966 | 967 | core-js-compat@^3.6.2: 968 | version "3.6.4" 969 | resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.4.tgz#938476569ebb6cda80d339bcf199fae4f16fff17" 970 | integrity sha512-zAa3IZPvsJ0slViBQ2z+vgyyTuhd3MFn1rBQjZSKVEgB0UMYhUkCj9jJUVPgGTGqWvsBVmfnruXgTcNyTlEiSA== 971 | dependencies: 972 | browserslist "^4.8.3" 973 | semver "7.0.0" 974 | 975 | debug@3.2.6: 976 | version "3.2.6" 977 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" 978 | integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== 979 | dependencies: 980 | ms "^2.1.1" 981 | 982 | debug@^4.1.0: 983 | version "4.1.1" 984 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" 985 | integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== 986 | dependencies: 987 | ms "^2.1.1" 988 | 989 | decamelize@^1.2.0: 990 | version "1.2.0" 991 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" 992 | integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= 993 | 994 | deep-eql@^3.0.1: 995 | version "3.0.1" 996 | resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" 997 | integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw== 998 | dependencies: 999 | type-detect "^4.0.0" 1000 | 1001 | define-properties@^1.1.2, define-properties@^1.1.3: 1002 | version "1.1.3" 1003 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" 1004 | integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== 1005 | dependencies: 1006 | object-keys "^1.0.12" 1007 | 1008 | diff@3.5.0: 1009 | version "3.5.0" 1010 | resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" 1011 | integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== 1012 | 1013 | electron-to-chromium@^1.3.322: 1014 | version "1.3.334" 1015 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.334.tgz#0588359f4ac5c4185ebacdf5fc7e1937e2c99872" 1016 | integrity sha512-RcjJhpsVaX0X6ntu/WSBlW9HE9pnCgXS9B8mTUObl1aDxaiOa0Lu+NMveIS5IDC+VELzhM32rFJDCC+AApVwcA== 1017 | 1018 | emoji-regex@^7.0.1: 1019 | version "7.0.3" 1020 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" 1021 | integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== 1022 | 1023 | es-abstract@^1.17.0-next.1: 1024 | version "1.17.2" 1025 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.2.tgz#965b10af56597b631da15872c17a405e86c1fd46" 1026 | integrity sha512-YoKuru3Lyoy7yVTBSH2j7UxTqe/je3dWAruC0sHvZX1GNd5zX8SSLvQqEgO9b3Ex8IW+goFI9arEEsFIbulhOw== 1027 | dependencies: 1028 | es-to-primitive "^1.2.1" 1029 | function-bind "^1.1.1" 1030 | has "^1.0.3" 1031 | has-symbols "^1.0.1" 1032 | is-callable "^1.1.5" 1033 | is-regex "^1.0.5" 1034 | object-inspect "^1.7.0" 1035 | object-keys "^1.1.1" 1036 | object.assign "^4.1.0" 1037 | string.prototype.trimleft "^2.1.1" 1038 | string.prototype.trimright "^2.1.1" 1039 | 1040 | es-to-primitive@^1.2.1: 1041 | version "1.2.1" 1042 | resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" 1043 | integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== 1044 | dependencies: 1045 | is-callable "^1.1.4" 1046 | is-date-object "^1.0.1" 1047 | is-symbol "^1.0.2" 1048 | 1049 | escape-string-regexp@1.0.5, escape-string-regexp@^1.0.5: 1050 | version "1.0.5" 1051 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 1052 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 1053 | 1054 | esprima@^4.0.0: 1055 | version "4.0.1" 1056 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 1057 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 1058 | 1059 | estree-walker@^0.6.1: 1060 | version "0.6.1" 1061 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" 1062 | integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== 1063 | 1064 | esutils@^2.0.2: 1065 | version "2.0.3" 1066 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 1067 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 1068 | 1069 | fill-range@^7.0.1: 1070 | version "7.0.1" 1071 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 1072 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 1073 | dependencies: 1074 | to-regex-range "^5.0.1" 1075 | 1076 | find-up@3.0.0, find-up@^3.0.0: 1077 | version "3.0.0" 1078 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" 1079 | integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== 1080 | dependencies: 1081 | locate-path "^3.0.0" 1082 | 1083 | flat@^4.1.0: 1084 | version "4.1.0" 1085 | resolved "https://registry.yarnpkg.com/flat/-/flat-4.1.0.tgz#090bec8b05e39cba309747f1d588f04dbaf98db2" 1086 | integrity sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw== 1087 | dependencies: 1088 | is-buffer "~2.0.3" 1089 | 1090 | fs.realpath@^1.0.0: 1091 | version "1.0.0" 1092 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 1093 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 1094 | 1095 | fsevents@~2.1.1: 1096 | version "2.1.2" 1097 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805" 1098 | integrity sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA== 1099 | 1100 | function-bind@^1.1.1: 1101 | version "1.1.1" 1102 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 1103 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 1104 | 1105 | gensync@^1.0.0-beta.1: 1106 | version "1.0.0-beta.1" 1107 | resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" 1108 | integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== 1109 | 1110 | get-caller-file@^2.0.1: 1111 | version "2.0.5" 1112 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 1113 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 1114 | 1115 | get-func-name@^2.0.0: 1116 | version "2.0.0" 1117 | resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" 1118 | integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= 1119 | 1120 | glob-parent@~5.1.0: 1121 | version "5.1.0" 1122 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2" 1123 | integrity sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw== 1124 | dependencies: 1125 | is-glob "^4.0.1" 1126 | 1127 | glob@7.1.3: 1128 | version "7.1.3" 1129 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" 1130 | integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== 1131 | dependencies: 1132 | fs.realpath "^1.0.0" 1133 | inflight "^1.0.4" 1134 | inherits "2" 1135 | minimatch "^3.0.4" 1136 | once "^1.3.0" 1137 | path-is-absolute "^1.0.0" 1138 | 1139 | globals@^11.1.0: 1140 | version "11.12.0" 1141 | resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" 1142 | integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== 1143 | 1144 | growl@1.10.5: 1145 | version "1.10.5" 1146 | resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" 1147 | integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== 1148 | 1149 | has-flag@^3.0.0: 1150 | version "3.0.0" 1151 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 1152 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 1153 | 1154 | has-symbols@^1.0.0, has-symbols@^1.0.1: 1155 | version "1.0.1" 1156 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" 1157 | integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== 1158 | 1159 | has@^1.0.3: 1160 | version "1.0.3" 1161 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 1162 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 1163 | dependencies: 1164 | function-bind "^1.1.1" 1165 | 1166 | he@1.2.0: 1167 | version "1.2.0" 1168 | resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" 1169 | integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== 1170 | 1171 | inflight@^1.0.4: 1172 | version "1.0.6" 1173 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1174 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 1175 | dependencies: 1176 | once "^1.3.0" 1177 | wrappy "1" 1178 | 1179 | inherits@2: 1180 | version "2.0.4" 1181 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 1182 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 1183 | 1184 | invariant@^2.2.2, invariant@^2.2.4: 1185 | version "2.2.4" 1186 | resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" 1187 | integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== 1188 | dependencies: 1189 | loose-envify "^1.0.0" 1190 | 1191 | is-binary-path@~2.1.0: 1192 | version "2.1.0" 1193 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 1194 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 1195 | dependencies: 1196 | binary-extensions "^2.0.0" 1197 | 1198 | is-buffer@~2.0.3: 1199 | version "2.0.4" 1200 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" 1201 | integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== 1202 | 1203 | is-callable@^1.1.4, is-callable@^1.1.5: 1204 | version "1.1.5" 1205 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" 1206 | integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== 1207 | 1208 | is-date-object@^1.0.1: 1209 | version "1.0.2" 1210 | resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" 1211 | integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== 1212 | 1213 | is-extglob@^2.1.1: 1214 | version "2.1.1" 1215 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 1216 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 1217 | 1218 | is-fullwidth-code-point@^2.0.0: 1219 | version "2.0.0" 1220 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 1221 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= 1222 | 1223 | is-glob@^4.0.1, is-glob@~4.0.1: 1224 | version "4.0.1" 1225 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" 1226 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== 1227 | dependencies: 1228 | is-extglob "^2.1.1" 1229 | 1230 | is-module@^1.0.0: 1231 | version "1.0.0" 1232 | resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" 1233 | integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= 1234 | 1235 | is-number@^7.0.0: 1236 | version "7.0.0" 1237 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 1238 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 1239 | 1240 | is-reference@^1.1.2: 1241 | version "1.1.4" 1242 | resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.1.4.tgz#3f95849886ddb70256a3e6d062b1a68c13c51427" 1243 | integrity sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw== 1244 | dependencies: 1245 | "@types/estree" "0.0.39" 1246 | 1247 | is-regex@^1.0.5: 1248 | version "1.0.5" 1249 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" 1250 | integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== 1251 | dependencies: 1252 | has "^1.0.3" 1253 | 1254 | is-symbol@^1.0.2: 1255 | version "1.0.3" 1256 | resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" 1257 | integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== 1258 | dependencies: 1259 | has-symbols "^1.0.1" 1260 | 1261 | isexe@^2.0.0: 1262 | version "2.0.0" 1263 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1264 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 1265 | 1266 | jest-worker@^24.9.0: 1267 | version "24.9.0" 1268 | resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" 1269 | integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== 1270 | dependencies: 1271 | merge-stream "^2.0.0" 1272 | supports-color "^6.1.0" 1273 | 1274 | "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: 1275 | version "4.0.0" 1276 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 1277 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 1278 | 1279 | js-yaml@3.13.1: 1280 | version "3.13.1" 1281 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" 1282 | integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== 1283 | dependencies: 1284 | argparse "^1.0.7" 1285 | esprima "^4.0.0" 1286 | 1287 | jsesc@^2.5.1: 1288 | version "2.5.2" 1289 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" 1290 | integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== 1291 | 1292 | jsesc@~0.5.0: 1293 | version "0.5.0" 1294 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" 1295 | integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= 1296 | 1297 | json5@^2.1.0: 1298 | version "2.1.1" 1299 | resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.1.tgz#81b6cb04e9ba496f1c7005d07b4368a2638f90b6" 1300 | integrity sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ== 1301 | dependencies: 1302 | minimist "^1.2.0" 1303 | 1304 | leven@^3.1.0: 1305 | version "3.1.0" 1306 | resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" 1307 | integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== 1308 | 1309 | levenary@^1.1.0: 1310 | version "1.1.0" 1311 | resolved "https://registry.yarnpkg.com/levenary/-/levenary-1.1.0.tgz#fc146fe75f32dc483a0a2c64aef720f602cd6210" 1312 | integrity sha512-VHcwhO0UTpUW7rLPN2/OiWJdgA1e9BqEDALhrgCe/F+uUJnep6CoUsTzMeP8Rh0NGr9uKquXxqe7lwLZo509nQ== 1313 | dependencies: 1314 | leven "^3.1.0" 1315 | 1316 | locate-path@^3.0.0: 1317 | version "3.0.0" 1318 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" 1319 | integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== 1320 | dependencies: 1321 | p-locate "^3.0.0" 1322 | path-exists "^3.0.0" 1323 | 1324 | lodash._reinterpolate@^3.0.0: 1325 | version "3.0.0" 1326 | resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" 1327 | integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= 1328 | 1329 | lodash.template@^4.4.0: 1330 | version "4.5.0" 1331 | resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" 1332 | integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== 1333 | dependencies: 1334 | lodash._reinterpolate "^3.0.0" 1335 | lodash.templatesettings "^4.0.0" 1336 | 1337 | lodash.templatesettings@^4.0.0: 1338 | version "4.2.0" 1339 | resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" 1340 | integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== 1341 | dependencies: 1342 | lodash._reinterpolate "^3.0.0" 1343 | 1344 | lodash@^4.17.13, lodash@^4.17.15: 1345 | version "4.17.15" 1346 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" 1347 | integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== 1348 | 1349 | log-symbols@2.2.0: 1350 | version "2.2.0" 1351 | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" 1352 | integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== 1353 | dependencies: 1354 | chalk "^2.0.1" 1355 | 1356 | loose-envify@^1.0.0: 1357 | version "1.4.0" 1358 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" 1359 | integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== 1360 | dependencies: 1361 | js-tokens "^3.0.0 || ^4.0.0" 1362 | 1363 | magic-string@^0.25.2: 1364 | version "0.25.6" 1365 | resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.6.tgz#5586387d1242f919c6d223579cc938bf1420795e" 1366 | integrity sha512-3a5LOMSGoCTH5rbqobC2HuDNRtE2glHZ8J7pK+QZYppyWA36yuNpsX994rIY2nCuyP7CZYy7lQq/X2jygiZ89g== 1367 | dependencies: 1368 | sourcemap-codec "^1.4.4" 1369 | 1370 | merge-stream@^2.0.0: 1371 | version "2.0.0" 1372 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" 1373 | integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== 1374 | 1375 | minimatch@3.0.4, minimatch@^3.0.4: 1376 | version "3.0.4" 1377 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 1378 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 1379 | dependencies: 1380 | brace-expansion "^1.1.7" 1381 | 1382 | minimist@0.0.8: 1383 | version "0.0.8" 1384 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 1385 | integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= 1386 | 1387 | minimist@^1.2.0: 1388 | version "1.2.0" 1389 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" 1390 | integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= 1391 | 1392 | mkdirp@0.5.1: 1393 | version "0.5.1" 1394 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 1395 | integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= 1396 | dependencies: 1397 | minimist "0.0.8" 1398 | 1399 | mocha@^7.0.0: 1400 | version "7.0.0" 1401 | resolved "https://registry.yarnpkg.com/mocha/-/mocha-7.0.0.tgz#c60d14bf3de9601f549b3ff5be657eb8381c54bf" 1402 | integrity sha512-CirsOPbO3jU86YKjjMzFLcXIb5YiGLUrjrXFHoJ3e2z9vWiaZVCZQ2+gtRGMPWF+nFhN6AWwLM/juzAQ6KRkbA== 1403 | dependencies: 1404 | ansi-colors "3.2.3" 1405 | browser-stdout "1.3.1" 1406 | chokidar "3.3.0" 1407 | debug "3.2.6" 1408 | diff "3.5.0" 1409 | escape-string-regexp "1.0.5" 1410 | find-up "3.0.0" 1411 | glob "7.1.3" 1412 | growl "1.10.5" 1413 | he "1.2.0" 1414 | js-yaml "3.13.1" 1415 | log-symbols "2.2.0" 1416 | minimatch "3.0.4" 1417 | mkdirp "0.5.1" 1418 | ms "2.1.1" 1419 | node-environment-flags "1.0.6" 1420 | object.assign "4.1.0" 1421 | strip-json-comments "2.0.1" 1422 | supports-color "6.0.0" 1423 | which "1.3.1" 1424 | wide-align "1.1.3" 1425 | yargs "13.3.0" 1426 | yargs-parser "13.1.1" 1427 | yargs-unparser "1.6.0" 1428 | 1429 | ms@2.1.1: 1430 | version "2.1.1" 1431 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" 1432 | integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== 1433 | 1434 | ms@^2.1.1: 1435 | version "2.1.2" 1436 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 1437 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 1438 | 1439 | node-environment-flags@1.0.6: 1440 | version "1.0.6" 1441 | resolved "https://registry.yarnpkg.com/node-environment-flags/-/node-environment-flags-1.0.6.tgz#a30ac13621f6f7d674260a54dede048c3982c088" 1442 | integrity sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw== 1443 | dependencies: 1444 | object.getownpropertydescriptors "^2.0.3" 1445 | semver "^5.7.0" 1446 | 1447 | node-releases@^1.1.44: 1448 | version "1.1.45" 1449 | resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.45.tgz#4cf7e9175d71b1317f15ffd68ce63bce1d53e9f2" 1450 | integrity sha512-cXvGSfhITKI8qsV116u2FTzH5EWZJfgG7d4cpqwF8I8+1tWpD6AsvvGRKq2onR0DNj1jfqsjkXZsm14JMS7Cyg== 1451 | dependencies: 1452 | semver "^6.3.0" 1453 | 1454 | normalize-path@^3.0.0, normalize-path@~3.0.0: 1455 | version "3.0.0" 1456 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 1457 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 1458 | 1459 | object-inspect@^1.7.0: 1460 | version "1.7.0" 1461 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" 1462 | integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== 1463 | 1464 | object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: 1465 | version "1.1.1" 1466 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" 1467 | integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== 1468 | 1469 | object.assign@4.1.0, object.assign@^4.1.0: 1470 | version "4.1.0" 1471 | resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" 1472 | integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== 1473 | dependencies: 1474 | define-properties "^1.1.2" 1475 | function-bind "^1.1.1" 1476 | has-symbols "^1.0.0" 1477 | object-keys "^1.0.11" 1478 | 1479 | object.getownpropertydescriptors@^2.0.3: 1480 | version "2.1.0" 1481 | resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" 1482 | integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== 1483 | dependencies: 1484 | define-properties "^1.1.3" 1485 | es-abstract "^1.17.0-next.1" 1486 | 1487 | once@^1.3.0: 1488 | version "1.4.0" 1489 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1490 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 1491 | dependencies: 1492 | wrappy "1" 1493 | 1494 | p-limit@^2.0.0: 1495 | version "2.2.2" 1496 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.2.tgz#61279b67721f5287aa1c13a9a7fbbc48c9291b1e" 1497 | integrity sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ== 1498 | dependencies: 1499 | p-try "^2.0.0" 1500 | 1501 | p-locate@^3.0.0: 1502 | version "3.0.0" 1503 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" 1504 | integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== 1505 | dependencies: 1506 | p-limit "^2.0.0" 1507 | 1508 | p-try@^2.0.0: 1509 | version "2.2.0" 1510 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" 1511 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== 1512 | 1513 | path-exists@^3.0.0: 1514 | version "3.0.0" 1515 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" 1516 | integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= 1517 | 1518 | path-is-absolute@^1.0.0: 1519 | version "1.0.1" 1520 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1521 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 1522 | 1523 | path-parse@^1.0.6: 1524 | version "1.0.6" 1525 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" 1526 | integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== 1527 | 1528 | pathval@^1.1.0: 1529 | version "1.1.0" 1530 | resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" 1531 | integrity sha1-uULm1L3mUwBe9rcTYd74cn0GReA= 1532 | 1533 | picomatch@^2.0.4: 1534 | version "2.2.1" 1535 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a" 1536 | integrity sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA== 1537 | 1538 | private@^0.1.6: 1539 | version "0.1.8" 1540 | resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" 1541 | integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== 1542 | 1543 | readdirp@~3.2.0: 1544 | version "3.2.0" 1545 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.2.0.tgz#c30c33352b12c96dfb4b895421a49fd5a9593839" 1546 | integrity sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ== 1547 | dependencies: 1548 | picomatch "^2.0.4" 1549 | 1550 | regenerate-unicode-properties@^8.1.0: 1551 | version "8.1.0" 1552 | resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz#ef51e0f0ea4ad424b77bf7cb41f3e015c70a3f0e" 1553 | integrity sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA== 1554 | dependencies: 1555 | regenerate "^1.4.0" 1556 | 1557 | regenerate@^1.4.0: 1558 | version "1.4.0" 1559 | resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" 1560 | integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== 1561 | 1562 | regenerator-transform@^0.14.0: 1563 | version "0.14.1" 1564 | resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.1.tgz#3b2fce4e1ab7732c08f665dfdb314749c7ddd2fb" 1565 | integrity sha512-flVuee02C3FKRISbxhXl9mGzdbWUVHubl1SMaknjxkFB1/iqpJhArQUvRxOOPEc/9tAiX0BaQ28FJH10E4isSQ== 1566 | dependencies: 1567 | private "^0.1.6" 1568 | 1569 | regexpu-core@^4.6.0: 1570 | version "4.6.0" 1571 | resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.6.0.tgz#2037c18b327cfce8a6fea2a4ec441f2432afb8b6" 1572 | integrity sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg== 1573 | dependencies: 1574 | regenerate "^1.4.0" 1575 | regenerate-unicode-properties "^8.1.0" 1576 | regjsgen "^0.5.0" 1577 | regjsparser "^0.6.0" 1578 | unicode-match-property-ecmascript "^1.0.4" 1579 | unicode-match-property-value-ecmascript "^1.1.0" 1580 | 1581 | regjsgen@^0.5.0: 1582 | version "0.5.1" 1583 | resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.1.tgz#48f0bf1a5ea205196929c0d9798b42d1ed98443c" 1584 | integrity sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg== 1585 | 1586 | regjsparser@^0.6.0: 1587 | version "0.6.2" 1588 | resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.2.tgz#fd62c753991467d9d1ffe0a9f67f27a529024b96" 1589 | integrity sha512-E9ghzUtoLwDekPT0DYCp+c4h+bvuUpe6rRHCTYn6eGoqj1LgKXxT6I0Il4WbjhQkOghzi/V+y03bPKvbllL93Q== 1590 | dependencies: 1591 | jsesc "~0.5.0" 1592 | 1593 | require-directory@^2.1.1: 1594 | version "2.1.1" 1595 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 1596 | integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= 1597 | 1598 | require-main-filename@^2.0.0: 1599 | version "2.0.0" 1600 | resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" 1601 | integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== 1602 | 1603 | resolve@^1.11.0, resolve@^1.11.1, resolve@^1.3.2: 1604 | version "1.14.2" 1605 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.14.2.tgz#dbf31d0fa98b1f29aa5169783b9c290cb865fea2" 1606 | integrity sha512-EjlOBLBO1kxsUxsKjLt7TAECyKW6fOh1VRkykQkKGzcBbjjPIxBqGh0jf7GJ3k/f5mxMqW3htMD3WdTUVtW8HQ== 1607 | dependencies: 1608 | path-parse "^1.0.6" 1609 | 1610 | rollup-plugin-babel@^4.3.3: 1611 | version "4.3.3" 1612 | resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-4.3.3.tgz#7eb5ac16d9b5831c3fd5d97e8df77ba25c72a2aa" 1613 | integrity sha512-tKzWOCmIJD/6aKNz0H1GMM+lW1q9KyFubbWzGiOG540zxPPifnEAHTZwjo0g991Y+DyOZcLqBgqOdqazYE5fkw== 1614 | dependencies: 1615 | "@babel/helper-module-imports" "^7.0.0" 1616 | rollup-pluginutils "^2.8.1" 1617 | 1618 | rollup-plugin-banner@^0.2.1: 1619 | version "0.2.1" 1620 | resolved "https://registry.yarnpkg.com/rollup-plugin-banner/-/rollup-plugin-banner-0.2.1.tgz#f62f26c468530ecea16263da83175079625f9c6f" 1621 | integrity sha512-Bs1uIPCsGpKIkNOwmBsCqn+dJ/xaojWk9PNlvd+1MEScddr1yUQlO6McAXi72wJyNWYL+9u9EI2JAZMpLRH92w== 1622 | dependencies: 1623 | lodash.template "^4.4.0" 1624 | 1625 | rollup-plugin-terser@^5.2.0: 1626 | version "5.2.0" 1627 | resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-5.2.0.tgz#ba758adf769347b7f1eaf9ef35978d2e207dccc7" 1628 | integrity sha512-jQI+nYhtDBc9HFRBz8iGttQg7li9klmzR62RG2W2nN6hJ/FI2K2ItYQ7kJ7/zn+vs+BP1AEccmVRjRN989I+Nw== 1629 | dependencies: 1630 | "@babel/code-frame" "^7.5.5" 1631 | jest-worker "^24.9.0" 1632 | rollup-pluginutils "^2.8.2" 1633 | serialize-javascript "^2.1.2" 1634 | terser "^4.6.2" 1635 | 1636 | rollup-pluginutils@^2.8.1, rollup-pluginutils@^2.8.2: 1637 | version "2.8.2" 1638 | resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" 1639 | integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== 1640 | dependencies: 1641 | estree-walker "^0.6.1" 1642 | 1643 | rollup@^1.29.0: 1644 | version "1.29.0" 1645 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.29.0.tgz#6a1a79eea43ca9d3d79a90c15a1ceecedc72097b" 1646 | integrity sha512-V63Iz0dSdI5qPPN5HmCN6OBRzBFhMqNWcvwgq863JtSCTU6Vdvqq6S2fYle/dSCyoPrBkIP3EIr1RVs3HTRqqg== 1647 | dependencies: 1648 | "@types/estree" "*" 1649 | "@types/node" "*" 1650 | acorn "^7.1.0" 1651 | 1652 | safe-buffer@~5.1.1: 1653 | version "5.1.2" 1654 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 1655 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 1656 | 1657 | semver@7.0.0: 1658 | version "7.0.0" 1659 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" 1660 | integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== 1661 | 1662 | semver@^5.4.1, semver@^5.5.0, semver@^5.7.0: 1663 | version "5.7.1" 1664 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 1665 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 1666 | 1667 | semver@^6.3.0: 1668 | version "6.3.0" 1669 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 1670 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 1671 | 1672 | serialize-javascript@^2.1.2: 1673 | version "2.1.2" 1674 | resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" 1675 | integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== 1676 | 1677 | set-blocking@^2.0.0: 1678 | version "2.0.0" 1679 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 1680 | integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= 1681 | 1682 | source-map-support@~0.5.12: 1683 | version "0.5.16" 1684 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042" 1685 | integrity sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ== 1686 | dependencies: 1687 | buffer-from "^1.0.0" 1688 | source-map "^0.6.0" 1689 | 1690 | source-map@^0.5.0: 1691 | version "0.5.7" 1692 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" 1693 | integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= 1694 | 1695 | source-map@^0.6.0, source-map@~0.6.1: 1696 | version "0.6.1" 1697 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 1698 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 1699 | 1700 | sourcemap-codec@^1.4.4: 1701 | version "1.4.7" 1702 | resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.7.tgz#5b2cd184e3fe51fd30ba049f7f62bf499b4f73ae" 1703 | integrity sha512-RuN23NzhAOuUtaivhcrjXx1OPXsFeH9m5sI373/U7+tGLKihjUyboZAzOadytMjnqHp1f45RGk1IzDKCpDpSYA== 1704 | 1705 | sprintf-js@~1.0.2: 1706 | version "1.0.3" 1707 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 1708 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 1709 | 1710 | "string-width@^1.0.2 || 2": 1711 | version "2.1.1" 1712 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" 1713 | integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== 1714 | dependencies: 1715 | is-fullwidth-code-point "^2.0.0" 1716 | strip-ansi "^4.0.0" 1717 | 1718 | string-width@^3.0.0, string-width@^3.1.0: 1719 | version "3.1.0" 1720 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" 1721 | integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== 1722 | dependencies: 1723 | emoji-regex "^7.0.1" 1724 | is-fullwidth-code-point "^2.0.0" 1725 | strip-ansi "^5.1.0" 1726 | 1727 | string.prototype.trimleft@^2.1.1: 1728 | version "2.1.1" 1729 | resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz#9bdb8ac6abd6d602b17a4ed321870d2f8dcefc74" 1730 | integrity sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag== 1731 | dependencies: 1732 | define-properties "^1.1.3" 1733 | function-bind "^1.1.1" 1734 | 1735 | string.prototype.trimright@^2.1.1: 1736 | version "2.1.1" 1737 | resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz#440314b15996c866ce8a0341894d45186200c5d9" 1738 | integrity sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g== 1739 | dependencies: 1740 | define-properties "^1.1.3" 1741 | function-bind "^1.1.1" 1742 | 1743 | strip-ansi@^4.0.0: 1744 | version "4.0.0" 1745 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" 1746 | integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= 1747 | dependencies: 1748 | ansi-regex "^3.0.0" 1749 | 1750 | strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: 1751 | version "5.2.0" 1752 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" 1753 | integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== 1754 | dependencies: 1755 | ansi-regex "^4.1.0" 1756 | 1757 | strip-json-comments@2.0.1: 1758 | version "2.0.1" 1759 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 1760 | integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= 1761 | 1762 | supports-color@6.0.0: 1763 | version "6.0.0" 1764 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.0.0.tgz#76cfe742cf1f41bb9b1c29ad03068c05b4c0e40a" 1765 | integrity sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg== 1766 | dependencies: 1767 | has-flag "^3.0.0" 1768 | 1769 | supports-color@^5.3.0: 1770 | version "5.5.0" 1771 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1772 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1773 | dependencies: 1774 | has-flag "^3.0.0" 1775 | 1776 | supports-color@^6.1.0: 1777 | version "6.1.0" 1778 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" 1779 | integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== 1780 | dependencies: 1781 | has-flag "^3.0.0" 1782 | 1783 | terser@^4.6.2: 1784 | version "4.6.3" 1785 | resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.3.tgz#e33aa42461ced5238d352d2df2a67f21921f8d87" 1786 | integrity sha512-Lw+ieAXmY69d09IIc/yqeBqXpEQIpDGZqT34ui1QWXIUpR2RjbqEkT8X7Lgex19hslSqcWM5iMN2kM11eMsESQ== 1787 | dependencies: 1788 | commander "^2.20.0" 1789 | source-map "~0.6.1" 1790 | source-map-support "~0.5.12" 1791 | 1792 | to-fast-properties@^2.0.0: 1793 | version "2.0.0" 1794 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" 1795 | integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= 1796 | 1797 | to-regex-range@^5.0.1: 1798 | version "5.0.1" 1799 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 1800 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1801 | dependencies: 1802 | is-number "^7.0.0" 1803 | 1804 | to-utf8@0.0.1: 1805 | version "0.0.1" 1806 | resolved "https://registry.yarnpkg.com/to-utf8/-/to-utf8-0.0.1.tgz#d17aea72ff2fba39b9e43601be7b3ff72e089852" 1807 | integrity sha1-0Xrqcv8vujm55DYBvns/9y4ImFI= 1808 | 1809 | type-detect@^4.0.0, type-detect@^4.0.5: 1810 | version "4.0.8" 1811 | resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" 1812 | integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== 1813 | 1814 | unicode-canonical-property-names-ecmascript@^1.0.4: 1815 | version "1.0.4" 1816 | resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" 1817 | integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== 1818 | 1819 | unicode-match-property-ecmascript@^1.0.4: 1820 | version "1.0.4" 1821 | resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" 1822 | integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== 1823 | dependencies: 1824 | unicode-canonical-property-names-ecmascript "^1.0.4" 1825 | unicode-property-aliases-ecmascript "^1.0.4" 1826 | 1827 | unicode-match-property-value-ecmascript@^1.1.0: 1828 | version "1.1.0" 1829 | resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz#5b4b426e08d13a80365e0d657ac7a6c1ec46a277" 1830 | integrity sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g== 1831 | 1832 | unicode-property-aliases-ecmascript@^1.0.4: 1833 | version "1.0.5" 1834 | resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz#a9cc6cc7ce63a0a3023fc99e341b94431d405a57" 1835 | integrity sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw== 1836 | 1837 | which-module@^2.0.0: 1838 | version "2.0.0" 1839 | resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" 1840 | integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= 1841 | 1842 | which@1.3.1: 1843 | version "1.3.1" 1844 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" 1845 | integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== 1846 | dependencies: 1847 | isexe "^2.0.0" 1848 | 1849 | wide-align@1.1.3: 1850 | version "1.1.3" 1851 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" 1852 | integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== 1853 | dependencies: 1854 | string-width "^1.0.2 || 2" 1855 | 1856 | wrap-ansi@^5.1.0: 1857 | version "5.1.0" 1858 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" 1859 | integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== 1860 | dependencies: 1861 | ansi-styles "^3.2.0" 1862 | string-width "^3.0.0" 1863 | strip-ansi "^5.0.0" 1864 | 1865 | wrappy@1: 1866 | version "1.0.2" 1867 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1868 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 1869 | 1870 | y18n@^4.0.0: 1871 | version "4.0.0" 1872 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" 1873 | integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== 1874 | 1875 | yargs-parser@13.1.1, yargs-parser@^13.1.1: 1876 | version "13.1.1" 1877 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" 1878 | integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ== 1879 | dependencies: 1880 | camelcase "^5.0.0" 1881 | decamelize "^1.2.0" 1882 | 1883 | yargs-unparser@1.6.0: 1884 | version "1.6.0" 1885 | resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-1.6.0.tgz#ef25c2c769ff6bd09e4b0f9d7c605fb27846ea9f" 1886 | integrity sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw== 1887 | dependencies: 1888 | flat "^4.1.0" 1889 | lodash "^4.17.15" 1890 | yargs "^13.3.0" 1891 | 1892 | yargs@13.3.0, yargs@^13.3.0: 1893 | version "13.3.0" 1894 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.0.tgz#4c657a55e07e5f2cf947f8a366567c04a0dedc83" 1895 | integrity sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA== 1896 | dependencies: 1897 | cliui "^5.0.0" 1898 | find-up "^3.0.0" 1899 | get-caller-file "^2.0.1" 1900 | require-directory "^2.1.1" 1901 | require-main-filename "^2.0.0" 1902 | set-blocking "^2.0.0" 1903 | string-width "^3.0.0" 1904 | which-module "^2.0.0" 1905 | y18n "^4.0.0" 1906 | yargs-parser "^13.1.1" 1907 | --------------------------------------------------------------------------------