diff --git a/CHANGELOG.md b/CHANGELOG.md index 35be03aa..19929168 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,14 @@ CHANGELOG ========= +ethers/v4.0.40 (2019-11-24 19:58) +--------------------------------- + + - Update elliptic package to protect from Minerva timing attack ([#666](https://github.com/ethers-io/ethers.js/issues/666); [20409c0](https://github.com/ethers-io/ethers.js/commit/20409c083cd428c46cba09488ee609cc14ff1d2b)). + - Do not poll if disabled during the previous event loop. ([7a90f18](https://github.com/ethers-io/ethers.js/commit/7a90f18145931e7ff790cd9e1fd549929fbb9023)). + - Moved node types to devDependencies ([#663](https://github.com/ethers-io/ethers.js/issues/663); [df1ae61](https://github.com/ethers-io/ethers.js/commit/df1ae611bab0955005b0da6604191b60b34f198f)). + - Added provider property to Web3Provider ([#641](https://github.com/ethers-io/ethers.js/issues/641); [6009a26](https://github.com/ethers-io/ethers.js/commit/6009a26c89c359ae44ef4b6e8a664ed57db24f67)). + ethers/v4.0.39 (2019-10-30 19:15) --------------------------------- diff --git a/_version.d.ts b/_version.d.ts index fc6283a2..bd812b5f 100644 --- a/_version.d.ts +++ b/_version.d.ts @@ -1 +1 @@ -export declare const version = "4.0.39"; +export declare const version = "4.0.40"; diff --git a/_version.js b/_version.js index 2e326759..4d2340bf 100644 --- a/_version.js +++ b/_version.js @@ -1,3 +1,3 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.version = "4.0.39"; +exports.version = "4.0.40"; diff --git a/dist/ethers.js b/dist/ethers.js index e379c281..83a291f5 100644 --- a/dist/ethers.js +++ b/dist/ethers.js @@ -1,7 +1,7 @@ (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.ethers = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i 0) { @@ -5298,7 +5298,7 @@ BaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) { assert(p.precomputed); var doubles = p._getDoubles(); - var naf = getNAF(k, 1); + var naf = getNAF(k, 1, this._bitLength); var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1); I /= 3; @@ -5335,7 +5335,7 @@ BaseCurve.prototype._wnafMul = function _wnafMul(p, k) { var wnd = nafPoints.points; // Get NAF form - var naf = getNAF(k, w); + var naf = getNAF(k, w, this._bitLength); // Add `this`*(N+1) for every w-NAF index var acc = this.jpoint(null, null, null); @@ -5391,8 +5391,8 @@ BaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW, var a = i - 1; var b = i; if (wndWidth[a] !== 1 || wndWidth[b] !== 1) { - naf[a] = getNAF(coeffs[a], wndWidth[a]); - naf[b] = getNAF(coeffs[b], wndWidth[b]); + naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength); + naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength); max = Math.max(naf[a].length, max); max = Math.max(naf[b].length, max); continue; @@ -5620,7 +5620,7 @@ BasePoint.prototype.dblp = function dblp(k) { return r; }; -},{"../../elliptic":12,"bn.js":9}],14:[function(require,module,exports){ +},{"../utils":24,"bn.js":9}],14:[function(require,module,exports){ module.exports = {}; },{}],15:[function(require,module,exports){ 'use strict'; @@ -5637,13 +5637,12 @@ arguments[4][14][0].apply(exports,arguments) },{"dup":14}],17:[function(require,module,exports){ 'use strict'; -var curve = require('../curve'); -var elliptic = require('../../elliptic'); +var utils = require('../utils'); var BN = require('bn.js'); var inherits = require('inherits'); -var Base = curve.base; +var Base = require('./base'); -var assert = elliptic.utils.assert; +var assert = utils.assert; function ShortCurve(conf) { Base.call(this, 'short', conf); @@ -6059,8 +6058,9 @@ Point.prototype.getY = function getY() { Point.prototype.mul = function mul(k) { k = new BN(k, 16); - - if (this._hasDoubles(k)) + if (this.isInfinity()) + return this; + else if (this._hasDoubles(k)) return this.curve._fixedNafMul(this, k); else if (this.curve.endo) return this.curve._endoWnafMulAdd([ this ], [ k ]); @@ -6558,7 +6558,6 @@ JPoint.prototype.eqXToP = function eqXToP(x) { if (this.x.cmp(rx) === 0) return true; } - return false; }; JPoint.prototype.inspect = function inspect() { @@ -6574,23 +6573,24 @@ JPoint.prototype.isInfinity = function isInfinity() { return this.z.cmpn(0) === 0; }; -},{"../../elliptic":12,"../curve":15,"bn.js":9,"inherits":39}],18:[function(require,module,exports){ +},{"../utils":24,"./base":13,"bn.js":9,"inherits":39}],18:[function(require,module,exports){ 'use strict'; var curves = exports; var hash = require('hash.js'); -var elliptic = require('../elliptic'); +var curve = require('./curve'); +var utils = require('./utils'); -var assert = elliptic.utils.assert; +var assert = utils.assert; function PresetCurve(options) { if (options.type === 'short') - this.curve = new elliptic.curve.short(options); + this.curve = new curve.short(options); else if (options.type === 'edwards') - this.curve = new elliptic.curve.edwards(options); + this.curve = new curve.edwards(options); else - this.curve = new elliptic.curve.mont(options); + this.curve = new curve.mont(options); this.g = this.curve.g; this.n = this.curve.n; this.hash = options.hash; @@ -6781,12 +6781,14 @@ defineCurve('secp256k1', { ] }); -},{"../elliptic":12,"./precomputed/secp256k1":24,"hash.js":27}],19:[function(require,module,exports){ +},{"./curve":15,"./precomputed/secp256k1":23,"./utils":24,"hash.js":26}],19:[function(require,module,exports){ 'use strict'; var BN = require('bn.js'); -var elliptic = require('../../elliptic'); -var utils = elliptic.utils; +var HmacDRBG = require('hmac-drbg'); +var utils = require('../utils'); +var curves = require('../curves'); +var rand = require('brorand'); var assert = utils.assert; var KeyPair = require('./key'); @@ -6798,13 +6800,13 @@ function EC(options) { // Shortcut `elliptic.ec(curve-name)` if (typeof options === 'string') { - assert(elliptic.curves.hasOwnProperty(options), 'Unknown curve ' + options); + assert(curves.hasOwnProperty(options), 'Unknown curve ' + options); - options = elliptic.curves[options]; + options = curves[options]; } // Shortcut for `elliptic.ec(elliptic.curves.curveName)` - if (options instanceof elliptic.curves.PresetCurve) + if (options instanceof curves.PresetCurve) options = { curve: options }; this.curve = options.curve.curve; @@ -6838,10 +6840,12 @@ EC.prototype.genKeyPair = function genKeyPair(options) { options = {}; // Instantiate Hmac_DRBG - var drbg = new elliptic.hmacDRBG({ + var drbg = new HmacDRBG({ hash: this.hash, pers: options.pers, - entropy: options.entropy || elliptic.rand(this.hash.hmacStrength), + persEnc: options.persEnc || 'utf8', + entropy: options.entropy || rand(this.hash.hmacStrength), + entropyEnc: options.entropy && options.entropyEnc || 'utf8', nonce: this.n.toArray() }); @@ -6886,12 +6890,12 @@ EC.prototype.sign = function sign(msg, key, enc, options) { var nonce = msg.toArray('be', bytes); // Instantiate Hmac_DRBG - var drbg = new elliptic.hmacDRBG({ + var drbg = new HmacDRBG({ hash: this.hash, entropy: bkey, nonce: nonce, pers: options.pers, - persEnc: options.persEnc + persEnc: options.persEnc || 'utf8' }); // Number of bytes to generate @@ -7020,12 +7024,11 @@ EC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) { throw new Error('Unable to find valid recovery factor'); }; -},{"../../elliptic":12,"./key":20,"./signature":21,"bn.js":9}],20:[function(require,module,exports){ +},{"../curves":18,"../utils":24,"./key":20,"./signature":21,"bn.js":9,"brorand":10,"hmac-drbg":38}],20:[function(require,module,exports){ 'use strict'; var BN = require('bn.js'); -var elliptic = require('../../elliptic'); -var utils = elliptic.utils; +var utils = require('../utils'); var assert = utils.assert; function KeyPair(ec, options) { @@ -7141,13 +7144,12 @@ KeyPair.prototype.inspect = function inspect() { ' pub: ' + (this.pub && this.pub.inspect()) + ' >'; }; -},{"../../elliptic":12,"bn.js":9}],21:[function(require,module,exports){ +},{"../utils":24,"bn.js":9}],21:[function(require,module,exports){ 'use strict'; var BN = require('bn.js'); -var elliptic = require('../../elliptic'); -var utils = elliptic.utils; +var utils = require('../utils'); var assert = utils.assert; function Signature(options, enc) { @@ -7278,201 +7280,36 @@ Signature.prototype.toDER = function toDER(enc) { return utils.encode(res, enc); }; -},{"../../elliptic":12,"bn.js":9}],22:[function(require,module,exports){ +},{"../utils":24,"bn.js":9}],22:[function(require,module,exports){ arguments[4][14][0].apply(exports,arguments) },{"dup":14}],23:[function(require,module,exports){ -'use strict'; - -var hash = require('hash.js'); -var elliptic = require('../elliptic'); -var utils = elliptic.utils; -var assert = utils.assert; - -function HmacDRBG(options) { - if (!(this instanceof HmacDRBG)) - return new HmacDRBG(options); - this.hash = options.hash; - this.predResist = !!options.predResist; - - this.outLen = this.hash.outSize; - this.minEntropy = options.minEntropy || this.hash.hmacStrength; - - this.reseed = null; - this.reseedInterval = null; - this.K = null; - this.V = null; - - var entropy = utils.toArray(options.entropy, options.entropyEnc); - var nonce = utils.toArray(options.nonce, options.nonceEnc); - var pers = utils.toArray(options.pers, options.persEnc); - assert(entropy.length >= (this.minEntropy / 8), - 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits'); - this._init(entropy, nonce, pers); -} -module.exports = HmacDRBG; - -HmacDRBG.prototype._init = function init(entropy, nonce, pers) { - var seed = entropy.concat(nonce).concat(pers); - - this.K = new Array(this.outLen / 8); - this.V = new Array(this.outLen / 8); - for (var i = 0; i < this.V.length; i++) { - this.K[i] = 0x00; - this.V[i] = 0x01; - } - - this._update(seed); - this.reseed = 1; - this.reseedInterval = 0x1000000000000; // 2^48 -}; - -HmacDRBG.prototype._hmac = function hmac() { - return new hash.hmac(this.hash, this.K); -}; - -HmacDRBG.prototype._update = function update(seed) { - var kmac = this._hmac() - .update(this.V) - .update([ 0x00 ]); - if (seed) - kmac = kmac.update(seed); - this.K = kmac.digest(); - this.V = this._hmac().update(this.V).digest(); - if (!seed) - return; - - this.K = this._hmac() - .update(this.V) - .update([ 0x01 ]) - .update(seed) - .digest(); - this.V = this._hmac().update(this.V).digest(); -}; - -HmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) { - // Optional entropy enc - if (typeof entropyEnc !== 'string') { - addEnc = add; - add = entropyEnc; - entropyEnc = null; - } - - entropy = utils.toBuffer(entropy, entropyEnc); - add = utils.toBuffer(add, addEnc); - - assert(entropy.length >= (this.minEntropy / 8), - 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits'); - - this._update(entropy.concat(add || [])); - this.reseed = 1; -}; - -HmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) { - if (this.reseed > this.reseedInterval) - throw new Error('Reseed is required'); - - // Optional encoding - if (typeof enc !== 'string') { - addEnc = add; - add = enc; - enc = null; - } - - // Optional additional data - if (add) { - add = utils.toArray(add, addEnc); - this._update(add); - } - - var temp = []; - while (temp.length < len) { - this.V = this._hmac().update(this.V).digest(); - temp = temp.concat(this.V); - } - - var res = temp.slice(0, len); - this._update(add); - this.reseed++; - return utils.encode(res, enc); -}; - -},{"../elliptic":12,"hash.js":27}],24:[function(require,module,exports){ module.exports = undefined; -},{}],25:[function(require,module,exports){ +},{}],24:[function(require,module,exports){ 'use strict'; var utils = exports; var BN = require('bn.js'); +var minAssert = require('minimalistic-assert'); +var minUtils = require('minimalistic-crypto-utils'); -utils.assert = function assert(val, msg) { - if (!val) - throw new Error(msg || 'Assertion failed'); -}; - -function toArray(msg, enc) { - if (Array.isArray(msg)) - return msg.slice(); - if (!msg) - return []; - var res = []; - if (typeof msg !== 'string') { - for (var i = 0; i < msg.length; i++) - res[i] = msg[i] | 0; - return res; - } - if (!enc) { - for (var i = 0; i < msg.length; i++) { - var c = msg.charCodeAt(i); - var hi = c >> 8; - var lo = c & 0xff; - if (hi) - res.push(hi, lo); - else - res.push(lo); - } - } else if (enc === 'hex') { - msg = msg.replace(/[^a-z0-9]+/ig, ''); - if (msg.length % 2 !== 0) - msg = '0' + msg; - for (var i = 0; i < msg.length; i += 2) - res.push(parseInt(msg[i] + msg[i + 1], 16)); - } - return res; -} -utils.toArray = toArray; - -function zero2(word) { - if (word.length === 1) - return '0' + word; - else - return word; -} -utils.zero2 = zero2; - -function toHex(msg) { - var res = ''; - for (var i = 0; i < msg.length; i++) - res += zero2(msg[i].toString(16)); - return res; -} -utils.toHex = toHex; - -utils.encode = function encode(arr, enc) { - if (enc === 'hex') - return toHex(arr); - else - return arr; -}; +utils.assert = minAssert; +utils.toArray = minUtils.toArray; +utils.zero2 = minUtils.zero2; +utils.toHex = minUtils.toHex; +utils.encode = minUtils.encode; // Represent num in a w-NAF form -function getNAF(num, w) { - var naf = []; +function getNAF(num, w, bits) { + var naf = new Array(Math.max(num.bitLength(), bits) + 1); + naf.fill(0); + var ws = 1 << (w + 1); var k = num.clone(); - while (k.cmpn(1) >= 0) { + + for (var i = 0; i < naf.length; i++) { var z; + var mod = k.andln(ws - 1); if (k.isOdd()) { - var mod = k.andln(ws - 1); if (mod > (ws >> 1) - 1) z = (ws >> 1) - mod; else @@ -7481,13 +7318,9 @@ function getNAF(num, w) { } else { z = 0; } - naf.push(z); - // Optimization, shift by word if possible - var shift = (k.cmpn(0) !== 0 && k.andln(ws - 1) === 0) ? (w + 1) : 1; - for (var i = 1; i < shift; i++) - naf.push(0); - k.iushrn(shift); + naf[i] = z; + k.iushrn(1); } return naf; @@ -7572,9 +7405,9 @@ function intFromLE(bytes) { utils.intFromLE = intFromLE; -},{"bn.js":9}],26:[function(require,module,exports){ -module.exports={"version":"6.3.3"} -},{}],27:[function(require,module,exports){ +},{"bn.js":9,"minimalistic-assert":41,"minimalistic-crypto-utils":42}],25:[function(require,module,exports){ +module.exports={"version":"6.5.2"} +},{}],26:[function(require,module,exports){ var hash = exports; hash.utils = require('./hash/utils'); @@ -7591,7 +7424,7 @@ hash.sha384 = hash.sha.sha384; hash.sha512 = hash.sha.sha512; hash.ripemd160 = hash.ripemd.ripemd160; -},{"./hash/common":28,"./hash/hmac":29,"./hash/ripemd":30,"./hash/sha":31,"./hash/utils":38}],28:[function(require,module,exports){ +},{"./hash/common":27,"./hash/hmac":28,"./hash/ripemd":29,"./hash/sha":30,"./hash/utils":37}],27:[function(require,module,exports){ 'use strict'; var utils = require('./utils'); @@ -7685,7 +7518,7 @@ BlockHash.prototype._pad = function pad() { return res; }; -},{"./utils":38,"minimalistic-assert":41}],29:[function(require,module,exports){ +},{"./utils":37,"minimalistic-assert":41}],28:[function(require,module,exports){ 'use strict'; var utils = require('./utils'); @@ -7734,7 +7567,7 @@ Hmac.prototype.digest = function digest(enc) { return this.outer.digest(enc); }; -},{"./utils":38,"minimalistic-assert":41}],30:[function(require,module,exports){ +},{"./utils":37,"minimalistic-assert":41}],29:[function(require,module,exports){ 'use strict'; var utils = require('./utils'); @@ -7882,7 +7715,7 @@ var sh = [ 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 ]; -},{"./common":28,"./utils":38}],31:[function(require,module,exports){ +},{"./common":27,"./utils":37}],30:[function(require,module,exports){ 'use strict'; exports.sha1 = require('./sha/1'); @@ -7891,11 +7724,11 @@ exports.sha256 = require('./sha/256'); exports.sha384 = require('./sha/384'); exports.sha512 = require('./sha/512'); -},{"./sha/1":32,"./sha/224":33,"./sha/256":34,"./sha/384":35,"./sha/512":36}],32:[function(require,module,exports){ +},{"./sha/1":31,"./sha/224":32,"./sha/256":33,"./sha/384":34,"./sha/512":35}],31:[function(require,module,exports){ +arguments[4][14][0].apply(exports,arguments) +},{"dup":14}],32:[function(require,module,exports){ arguments[4][14][0].apply(exports,arguments) },{"dup":14}],33:[function(require,module,exports){ -arguments[4][14][0].apply(exports,arguments) -},{"dup":14}],34:[function(require,module,exports){ 'use strict'; var utils = require('../utils'); @@ -8002,9 +7835,9 @@ SHA256.prototype._digest = function digest(enc) { return utils.split32(this.h, 'big'); }; -},{"../common":28,"../utils":38,"./common":37,"minimalistic-assert":41}],35:[function(require,module,exports){ +},{"../common":27,"../utils":37,"./common":36,"minimalistic-assert":41}],34:[function(require,module,exports){ arguments[4][14][0].apply(exports,arguments) -},{"dup":14}],36:[function(require,module,exports){ +},{"dup":14}],35:[function(require,module,exports){ 'use strict'; var utils = require('../utils'); @@ -8336,7 +8169,7 @@ function g1_512_lo(xh, xl) { return r; } -},{"../common":28,"../utils":38,"minimalistic-assert":41}],37:[function(require,module,exports){ +},{"../common":27,"../utils":37,"minimalistic-assert":41}],36:[function(require,module,exports){ 'use strict'; var utils = require('../utils'); @@ -8387,7 +8220,7 @@ function g1_256(x) { } exports.g1_256 = g1_256; -},{"../utils":38}],38:[function(require,module,exports){ +},{"../utils":37}],37:[function(require,module,exports){ 'use strict'; var assert = require('minimalistic-assert'); @@ -8642,7 +8475,122 @@ function shr64_lo(ah, al, num) { } exports.shr64_lo = shr64_lo; -},{"inherits":39,"minimalistic-assert":41}],39:[function(require,module,exports){ +},{"inherits":39,"minimalistic-assert":41}],38:[function(require,module,exports){ +'use strict'; + +var hash = require('hash.js'); +var utils = require('minimalistic-crypto-utils'); +var assert = require('minimalistic-assert'); + +function HmacDRBG(options) { + if (!(this instanceof HmacDRBG)) + return new HmacDRBG(options); + this.hash = options.hash; + this.predResist = !!options.predResist; + + this.outLen = this.hash.outSize; + this.minEntropy = options.minEntropy || this.hash.hmacStrength; + + this._reseed = null; + this.reseedInterval = null; + this.K = null; + this.V = null; + + var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex'); + var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex'); + var pers = utils.toArray(options.pers, options.persEnc || 'hex'); + assert(entropy.length >= (this.minEntropy / 8), + 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits'); + this._init(entropy, nonce, pers); +} +module.exports = HmacDRBG; + +HmacDRBG.prototype._init = function init(entropy, nonce, pers) { + var seed = entropy.concat(nonce).concat(pers); + + this.K = new Array(this.outLen / 8); + this.V = new Array(this.outLen / 8); + for (var i = 0; i < this.V.length; i++) { + this.K[i] = 0x00; + this.V[i] = 0x01; + } + + this._update(seed); + this._reseed = 1; + this.reseedInterval = 0x1000000000000; // 2^48 +}; + +HmacDRBG.prototype._hmac = function hmac() { + return new hash.hmac(this.hash, this.K); +}; + +HmacDRBG.prototype._update = function update(seed) { + var kmac = this._hmac() + .update(this.V) + .update([ 0x00 ]); + if (seed) + kmac = kmac.update(seed); + this.K = kmac.digest(); + this.V = this._hmac().update(this.V).digest(); + if (!seed) + return; + + this.K = this._hmac() + .update(this.V) + .update([ 0x01 ]) + .update(seed) + .digest(); + this.V = this._hmac().update(this.V).digest(); +}; + +HmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) { + // Optional entropy enc + if (typeof entropyEnc !== 'string') { + addEnc = add; + add = entropyEnc; + entropyEnc = null; + } + + entropy = utils.toArray(entropy, entropyEnc); + add = utils.toArray(add, addEnc); + + assert(entropy.length >= (this.minEntropy / 8), + 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits'); + + this._update(entropy.concat(add || [])); + this._reseed = 1; +}; + +HmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) { + if (this._reseed > this.reseedInterval) + throw new Error('Reseed is required'); + + // Optional encoding + if (typeof enc !== 'string') { + addEnc = add; + add = enc; + enc = null; + } + + // Optional additional data + if (add) { + add = utils.toArray(add, addEnc || 'hex'); + this._update(add); + } + + var temp = []; + while (temp.length < len) { + this.V = this._hmac().update(this.V).digest(); + temp = temp.concat(this.V); + } + + var res = temp.slice(0, len); + this._update(add); + this._reseed++; + return utils.encode(res, enc); +}; + +},{"hash.js":26,"minimalistic-assert":41,"minimalistic-crypto-utils":42}],39:[function(require,module,exports){ if (typeof Object.create === 'function') { // implementation from standard node.js 'util' module module.exports = function inherits(ctor, superCtor) { @@ -9150,7 +9098,7 @@ if (typeof Object.create === 'function') { })(); }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"_process":42}],41:[function(require,module,exports){ +},{"_process":43}],41:[function(require,module,exports){ module.exports = assert; function assert(val, msg) { @@ -9164,8 +9112,68 @@ assert.equal = function assertEqual(l, r, msg) { }; },{}],42:[function(require,module,exports){ -module.exports = { browser: true }; +'use strict'; + +var utils = exports; + +function toArray(msg, enc) { + if (Array.isArray(msg)) + return msg.slice(); + if (!msg) + return []; + var res = []; + if (typeof msg !== 'string') { + for (var i = 0; i < msg.length; i++) + res[i] = msg[i] | 0; + return res; + } + if (enc === 'hex') { + msg = msg.replace(/[^a-z0-9]+/ig, ''); + if (msg.length % 2 !== 0) + msg = '0' + msg; + for (var i = 0; i < msg.length; i += 2) + res.push(parseInt(msg[i] + msg[i + 1], 16)); + } else { + for (var i = 0; i < msg.length; i++) { + var c = msg.charCodeAt(i); + var hi = c >> 8; + var lo = c & 0xff; + if (hi) + res.push(hi, lo); + else + res.push(lo); + } + } + return res; +} +utils.toArray = toArray; + +function zero2(word) { + if (word.length === 1) + return '0' + word; + else + return word; +} +utils.zero2 = zero2; + +function toHex(msg) { + var res = ''; + for (var i = 0; i < msg.length; i++) + res += zero2(msg[i].toString(16)); + return res; +} +utils.toHex = toHex; + +utils.encode = function encode(arr, enc) { + if (enc === 'hex') + return toHex(arr); + else + return arr; +}; + },{}],43:[function(require,module,exports){ +module.exports = { browser: true }; +},{}],44:[function(require,module,exports){ (function (setImmediate){ "use strict"; @@ -9623,7 +9631,7 @@ module.exports = { browser: true }; })(this); }).call(this,require("timers").setImmediate) -},{"timers":45}],44:[function(require,module,exports){ +},{"timers":46}],45:[function(require,module,exports){ (function (process,global,clearImmediate){ (function (global, undefined) { "use strict"; @@ -9802,11 +9810,11 @@ module.exports = { browser: true }; }(typeof self === "undefined" ? typeof global === "undefined" ? this : global : self)); }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("timers").clearImmediate) -},{"_process":42,"timers":45}],45:[function(require,module,exports){ +},{"_process":43,"timers":46}],46:[function(require,module,exports){ (function (global){ module.exports = { setImmediate: global.setImmediate }; }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{}],46:[function(require,module,exports){ +},{}],47:[function(require,module,exports){ (function (global){ var rng; @@ -9841,7 +9849,7 @@ module.exports = rng; }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{}],47:[function(require,module,exports){ +},{}],48:[function(require,module,exports){ // uuid.js // // Copyright (c) 2010-2012 Robert Kieffer @@ -10026,7 +10034,7 @@ uuid.unparse = unparse; module.exports = uuid; -},{"./rng":46}],48:[function(require,module,exports){ +},{"./rng":47}],49:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); try { @@ -10037,7 +10045,7 @@ catch (error) { module.exports.XMLHttpRequest = null; } -},{}],49:[function(require,module,exports){ +},{}],50:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var properties_1 = require("../utils/properties"); @@ -10057,7 +10065,7 @@ var Provider = /** @class */ (function () { exports.Provider = Provider; //defineReadOnly(Signer, 'inherits', inheritable(Abstract)); -},{"../utils/properties":73}],50:[function(require,module,exports){ +},{"../utils/properties":74}],51:[function(require,module,exports){ 'use strict'; var __extends = (this && this.__extends) || (function () { var extendStatics = Object.setPrototypeOf || @@ -10512,6 +10520,9 @@ var BaseProvider = /** @class */ (function (_super) { BaseProvider.prototype._doPoll = function () { var _this = this; this.getBlockNumber().then(function (blockNumber) { + if (!_this.polling) { + return; + } _this._setFastBlockNumber(blockNumber); // If the block hasn't changed, meh. if (blockNumber === _this._lastBlockNumber) { @@ -11297,7 +11308,7 @@ var BaseProvider = /** @class */ (function (_super) { exports.BaseProvider = BaseProvider; properties_1.defineReadOnly(abstract_provider_1.Provider, 'inherits', properties_1.inheritable(abstract_provider_1.Provider)); -},{"../constants":3,"../errors":5,"../utils/address":59,"../utils/bignumber":62,"../utils/bytes":63,"../utils/hash":64,"../utils/networks":71,"../utils/properties":73,"../utils/rlp":75,"../utils/transaction":82,"../utils/utf8":84,"../utils/web":85,"./abstract-provider":49}],51:[function(require,module,exports){ +},{"../constants":3,"../errors":5,"../utils/address":60,"../utils/bignumber":63,"../utils/bytes":64,"../utils/hash":65,"../utils/networks":72,"../utils/properties":74,"../utils/rlp":76,"../utils/transaction":83,"../utils/utf8":85,"../utils/web":86,"./abstract-provider":50}],52:[function(require,module,exports){ "use strict"; var __extends = (this && this.__extends) || (function () { var extendStatics = Object.setPrototypeOf || @@ -11646,7 +11657,7 @@ var EtherscanProvider = /** @class */ (function (_super) { }(base_provider_1.BaseProvider)); exports.EtherscanProvider = EtherscanProvider; -},{"../errors":5,"../utils/bytes":63,"../utils/properties":73,"../utils/web":85,"./base-provider":50}],52:[function(require,module,exports){ +},{"../errors":5,"../utils/bytes":64,"../utils/properties":74,"../utils/web":86,"./base-provider":51}],53:[function(require,module,exports){ 'use strict'; var __extends = (this && this.__extends) || (function () { var extendStatics = Object.setPrototypeOf || @@ -11759,7 +11770,7 @@ var FallbackProvider = /** @class */ (function (_super) { }(base_provider_1.BaseProvider)); exports.FallbackProvider = FallbackProvider; -},{"../errors":5,"./base-provider":50}],53:[function(require,module,exports){ +},{"../errors":5,"./base-provider":51}],54:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var abstract_provider_1 = require("./abstract-provider"); @@ -11780,7 +11791,7 @@ exports.JsonRpcSigner = json_rpc_provider_1.JsonRpcSigner; var web3_provider_1 = require("./web3-provider"); exports.Web3Provider = web3_provider_1.Web3Provider; -},{"./abstract-provider":49,"./base-provider":50,"./etherscan-provider":51,"./fallback-provider":52,"./infura-provider":54,"./ipc-provider":55,"./json-rpc-provider":56,"./web3-provider":57}],54:[function(require,module,exports){ +},{"./abstract-provider":50,"./base-provider":51,"./etherscan-provider":52,"./fallback-provider":53,"./infura-provider":55,"./ipc-provider":56,"./json-rpc-provider":57,"./web3-provider":58}],55:[function(require,module,exports){ 'use strict'; var __extends = (this && this.__extends) || (function () { var extendStatics = Object.setPrototypeOf || @@ -11866,11 +11877,11 @@ var InfuraProvider = /** @class */ (function (_super) { }(json_rpc_provider_1.JsonRpcProvider)); exports.InfuraProvider = InfuraProvider; -},{"../errors":5,"../utils/bytes":63,"../utils/networks":71,"../utils/properties":73,"./json-rpc-provider":56}],55:[function(require,module,exports){ +},{"../errors":5,"../utils/bytes":64,"../utils/networks":72,"../utils/properties":74,"./json-rpc-provider":57}],56:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -},{}],56:[function(require,module,exports){ +},{}],57:[function(require,module,exports){ 'use strict'; var __extends = (this && this.__extends) || (function () { var extendStatics = Object.setPrototypeOf || @@ -12270,7 +12281,7 @@ var JsonRpcProvider = /** @class */ (function (_super) { }(base_provider_1.BaseProvider)); exports.JsonRpcProvider = JsonRpcProvider; -},{"../abstract-signer":2,"../errors":5,"../utils/address":59,"../utils/bytes":63,"../utils/networks":71,"../utils/properties":73,"../utils/utf8":84,"../utils/web":85,"./base-provider":50}],57:[function(require,module,exports){ +},{"../abstract-signer":2,"../errors":5,"../utils/address":60,"../utils/bytes":64,"../utils/networks":72,"../utils/properties":74,"../utils/utf8":85,"../utils/web":86,"./base-provider":51}],58:[function(require,module,exports){ 'use strict'; var __extends = (this && this.__extends) || (function () { var extendStatics = Object.setPrototypeOf || @@ -12320,6 +12331,8 @@ var Web3Provider = /** @class */ (function (_super) { errors.throwError('invalid web3Provider', errors.INVALID_ARGUMENT, { arg: 'web3Provider', value: web3Provider }); } properties_1.defineReadOnly(_this, '_web3Provider', web3Provider); + // @TODO: In v5 remove the above definition; only this one is needed + properties_1.defineReadOnly(_this, 'provider', web3Provider); return _this; } Web3Provider.prototype.send = function (method, params) { @@ -12358,7 +12371,7 @@ var Web3Provider = /** @class */ (function (_super) { }(json_rpc_provider_1.JsonRpcProvider)); exports.Web3Provider = Web3Provider; -},{"../errors":5,"../utils/properties":73,"./json-rpc-provider":56}],58:[function(require,module,exports){ +},{"../errors":5,"../utils/properties":74,"./json-rpc-provider":57}],59:[function(require,module,exports){ 'use strict'; var __extends = (this && this.__extends) || (function () { var extendStatics = Object.setPrototypeOf || @@ -13321,7 +13334,7 @@ var AbiCoder = /** @class */ (function () { exports.AbiCoder = AbiCoder; exports.defaultAbiCoder = new AbiCoder(); -},{"../constants":3,"../errors":5,"./address":59,"./bignumber":62,"./bytes":63,"./properties":73,"./utf8":84}],59:[function(require,module,exports){ +},{"../constants":3,"../errors":5,"./address":60,"./bignumber":63,"./bytes":64,"./properties":74,"./utf8":85}],60:[function(require,module,exports){ 'use strict'; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; @@ -13448,7 +13461,7 @@ function getContractAddress(transaction) { } exports.getContractAddress = getContractAddress; -},{"../errors":5,"./bytes":63,"./keccak256":70,"./rlp":75,"bn.js":9}],60:[function(require,module,exports){ +},{"../errors":5,"./bytes":64,"./keccak256":71,"./rlp":76,"bn.js":9}],61:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var bytes_1 = require("../utils/bytes"); @@ -13471,7 +13484,7 @@ module.exports = { } }; -},{"../utils/bytes":63}],61:[function(require,module,exports){ +},{"../utils/bytes":64}],62:[function(require,module,exports){ "use strict"; /** * var basex = require('base-x'); @@ -13596,7 +13609,7 @@ exports.Base58 = Base58; //console.log(Base58.decode("Qmd2V777o5XvJbYMeMb8k2nU5f8d3ciUQ5YpYuWhzv8iDj")) //console.log(Base58.encode(Base58.decode("Qmd2V777o5XvJbYMeMb8k2nU5f8d3ciUQ5YpYuWhzv8iDj"))) -},{"./bytes":63,"./properties":73}],62:[function(require,module,exports){ +},{"./bytes":64,"./properties":74}],63:[function(require,module,exports){ 'use strict'; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; @@ -13782,7 +13795,7 @@ function bigNumberify(value) { } exports.bigNumberify = bigNumberify; -},{"../errors":5,"./bytes":63,"./properties":73,"bn.js":9}],63:[function(require,module,exports){ +},{"../errors":5,"./bytes":64,"./properties":74,"bn.js":9}],64:[function(require,module,exports){ "use strict"; /** * Conversion Utilities @@ -14059,7 +14072,7 @@ function joinSignature(signature) { } exports.joinSignature = joinSignature; -},{"../errors":5}],64:[function(require,module,exports){ +},{"../errors":5}],65:[function(require,module,exports){ 'use strict'; var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; @@ -14118,7 +14131,7 @@ function hashMessage(message) { } exports.hashMessage = hashMessage; -},{"../errors":5,"./bytes":63,"./keccak256":70,"./utf8":84}],65:[function(require,module,exports){ +},{"../errors":5,"./bytes":64,"./keccak256":71,"./utf8":85}],66:[function(require,module,exports){ "use strict"; var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; @@ -14444,7 +14457,7 @@ function isValidMnemonic(mnemonic, wordlist) { } exports.isValidMnemonic = isValidMnemonic; -},{"../errors":5,"../wordlists/lang-en":89,"./basex":61,"./bignumber":62,"./bytes":63,"./hmac":66,"./pbkdf2":72,"./properties":73,"./secp256k1":76,"./sha2":78,"./utf8":84}],66:[function(require,module,exports){ +},{"../errors":5,"../wordlists/lang-en":90,"./basex":62,"./bignumber":63,"./bytes":64,"./hmac":67,"./pbkdf2":73,"./properties":74,"./secp256k1":77,"./sha2":79,"./utf8":85}],67:[function(require,module,exports){ "use strict"; var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; @@ -14472,7 +14485,7 @@ function computeHmac(algorithm, key, data) { } exports.computeHmac = computeHmac; -},{"../errors":5,"../utils/bytes":63,"hash.js":27}],67:[function(require,module,exports){ +},{"../errors":5,"../utils/bytes":64,"hash.js":26}],68:[function(require,module,exports){ 'use strict'; var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; @@ -14577,7 +14590,7 @@ exports.UnicodeNormalizationForm = utf8_2.UnicodeNormalizationForm; var wordlist_1 = require("./wordlist"); exports.Wordlist = wordlist_1.Wordlist; -},{"./abi-coder":58,"./address":59,"./base64":60,"./bignumber":62,"./bytes":63,"./hash":64,"./hdnode":65,"./hmac":66,"./interface":68,"./json-wallet":69,"./keccak256":70,"./networks":71,"./properties":73,"./random-bytes":74,"./rlp":75,"./secp256k1":76,"./sha2":78,"./signing-key":80,"./solidity":81,"./transaction":82,"./units":83,"./utf8":84,"./web":85,"./wordlist":86}],68:[function(require,module,exports){ +},{"./abi-coder":59,"./address":60,"./base64":61,"./bignumber":63,"./bytes":64,"./hash":65,"./hdnode":66,"./hmac":67,"./interface":69,"./json-wallet":70,"./keccak256":71,"./networks":72,"./properties":74,"./random-bytes":75,"./rlp":76,"./secp256k1":77,"./sha2":79,"./signing-key":81,"./solidity":82,"./transaction":83,"./units":84,"./utf8":85,"./web":86,"./wordlist":87}],69:[function(require,module,exports){ 'use strict'; var __extends = (this && this.__extends) || (function () { var extendStatics = Object.setPrototypeOf || @@ -14967,7 +14980,7 @@ var Interface = /** @class */ (function () { }()); exports.Interface = Interface; -},{"../errors":5,"./abi-coder":58,"./address":59,"./bignumber":62,"./bytes":63,"./hash":64,"./keccak256":70,"./properties":73}],69:[function(require,module,exports){ +},{"../errors":5,"./abi-coder":59,"./address":60,"./bignumber":63,"./bytes":64,"./hash":65,"./keccak256":71,"./properties":74}],70:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var address_1 = require("./address"); @@ -15019,7 +15032,7 @@ function getJsonWalletAddress(json) { } exports.getJsonWalletAddress = getJsonWalletAddress; -},{"./address":59}],70:[function(require,module,exports){ +},{"./address":60}],71:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var sha3 = require("js-sha3"); @@ -15029,7 +15042,7 @@ function keccak256(data) { } exports.keccak256 = keccak256; -},{"./bytes":63,"js-sha3":40}],71:[function(require,module,exports){ +},{"./bytes":64,"js-sha3":40}],72:[function(require,module,exports){ 'use strict'; var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; @@ -15182,7 +15195,7 @@ function getNetwork(network) { } exports.getNetwork = getNetwork; -},{"../errors":5}],72:[function(require,module,exports){ +},{"../errors":5}],73:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var bytes_1 = require("../utils/bytes"); @@ -15229,7 +15242,7 @@ function pbkdf2(password, salt, iterations, keylen, hashAlgorithm) { } exports.pbkdf2 = pbkdf2; -},{"../utils/bytes":63,"./hmac":66}],73:[function(require,module,exports){ +},{"../utils/bytes":64,"./hmac":67}],74:[function(require,module,exports){ 'use strict'; var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; @@ -15369,7 +15382,7 @@ function inheritable(parent) { } exports.inheritable = inheritable; -},{"../errors":5}],74:[function(require,module,exports){ +},{"../errors":5}],75:[function(require,module,exports){ (function (global){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); @@ -15410,7 +15423,7 @@ if (crypto._weakCrypto === true) { } }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"../utils/bytes":63,"../utils/properties":73}],75:[function(require,module,exports){ +},{"../utils/bytes":64,"../utils/properties":74}],76:[function(require,module,exports){ "use strict"; //See: https://github.com/ethereum/wiki/wiki/RLP Object.defineProperty(exports, "__esModule", { value: true }); @@ -15528,7 +15541,7 @@ function decode(data) { } exports.decode = decode; -},{"./bytes":63}],76:[function(require,module,exports){ +},{"./bytes":64}],77:[function(require,module,exports){ 'use strict'; var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; @@ -15630,7 +15643,7 @@ function verifyMessage(message, signature) { } exports.verifyMessage = verifyMessage; -},{"../errors":5,"./address":59,"./bytes":63,"./hash":64,"./keccak256":70,"./properties":73,"elliptic":12}],77:[function(require,module,exports){ +},{"../errors":5,"./address":60,"./bytes":64,"./hash":65,"./keccak256":71,"./properties":74,"elliptic":12}],78:[function(require,module,exports){ 'use strict'; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; @@ -16034,7 +16047,7 @@ function encrypt(privateKey, password, options, progressCallback) { } exports.encrypt = encrypt; -},{"./address":59,"./bytes":63,"./hdnode":65,"./keccak256":70,"./pbkdf2":72,"./random-bytes":74,"./signing-key":80,"./utf8":84,"aes-js":8,"scrypt-js":43,"uuid":47}],78:[function(require,module,exports){ +},{"./address":60,"./bytes":64,"./hdnode":66,"./keccak256":71,"./pbkdf2":73,"./random-bytes":75,"./signing-key":81,"./utf8":85,"aes-js":8,"scrypt-js":44,"uuid":48}],79:[function(require,module,exports){ 'use strict'; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; @@ -16055,13 +16068,13 @@ function sha512(data) { } exports.sha512 = sha512; -},{"./bytes":63,"hash.js":27}],79:[function(require,module,exports){ +},{"./bytes":64,"hash.js":26}],80:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); require('setimmediate'); exports.platform = "browser"; -},{"setimmediate":44}],80:[function(require,module,exports){ +},{"setimmediate":45}],81:[function(require,module,exports){ 'use strict'; var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; @@ -16132,7 +16145,7 @@ var SigningKey = /** @class */ (function () { }()); exports.SigningKey = SigningKey; -},{"../errors":5,"./bytes":63,"./hdnode":65,"./properties":73,"./secp256k1":76}],81:[function(require,module,exports){ +},{"../errors":5,"./bytes":64,"./hdnode":66,"./properties":74,"./secp256k1":77}],82:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var bignumber_1 = require("./bignumber"); @@ -16225,7 +16238,7 @@ function sha256(types, values) { } exports.sha256 = sha256; -},{"./bignumber":62,"./bytes":63,"./keccak256":70,"./sha2":78,"./utf8":84}],82:[function(require,module,exports){ +},{"./bignumber":63,"./bytes":64,"./keccak256":71,"./sha2":79,"./utf8":85}],83:[function(require,module,exports){ "use strict"; var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; @@ -16403,7 +16416,7 @@ function populateTransaction(transaction, provider, from) { } exports.populateTransaction = populateTransaction; -},{"../constants":3,"../errors":5,"../providers/abstract-provider":49,"./address":59,"./bignumber":62,"./bytes":63,"./keccak256":70,"./properties":73,"./rlp":75,"./secp256k1":76}],83:[function(require,module,exports){ +},{"../constants":3,"../errors":5,"../providers/abstract-provider":50,"./address":60,"./bignumber":63,"./bytes":64,"./keccak256":71,"./properties":74,"./rlp":76,"./secp256k1":77}],84:[function(require,module,exports){ 'use strict'; var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; @@ -16578,7 +16591,7 @@ function parseEther(ether) { } exports.parseEther = parseEther; -},{"../constants":3,"../errors":5,"./bignumber":62}],84:[function(require,module,exports){ +},{"../constants":3,"../errors":5,"./bignumber":63}],85:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var constants_1 = require("../constants"); @@ -16767,7 +16780,7 @@ function parseBytes32String(bytes) { } exports.parseBytes32String = parseBytes32String; -},{"../constants":3,"../errors":5,"./bytes":63}],85:[function(require,module,exports){ +},{"../constants":3,"../errors":5,"./bytes":64}],86:[function(require,module,exports){ 'use strict'; var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; @@ -16992,7 +17005,7 @@ function poll(func, options) { } exports.poll = poll; -},{"../errors":5,"./base64":60,"./properties":73,"./utf8":84,"xmlhttprequest":48}],86:[function(require,module,exports){ +},{"../errors":5,"./base64":61,"./properties":74,"./utf8":85,"xmlhttprequest":49}],87:[function(require,module,exports){ (function (global){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); @@ -17049,7 +17062,7 @@ function register(lang, name) { exports.register = register; }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"../utils/hash":64,"../utils/properties":73}],87:[function(require,module,exports){ +},{"../utils/hash":65,"../utils/properties":74}],88:[function(require,module,exports){ 'use strict'; var __extends = (this && this.__extends) || (function () { var extendStatics = Object.setPrototypeOf || @@ -17235,14 +17248,14 @@ var Wallet = /** @class */ (function (_super) { }(abstract_signer_1.Signer)); exports.Wallet = Wallet; -},{"./abstract-signer":2,"./errors":5,"./providers/abstract-provider":49,"./utils/bytes":63,"./utils/hash":64,"./utils/hdnode":65,"./utils/json-wallet":69,"./utils/keccak256":70,"./utils/properties":73,"./utils/random-bytes":74,"./utils/secret-storage":77,"./utils/signing-key":80,"./utils/transaction":82}],88:[function(require,module,exports){ +},{"./abstract-signer":2,"./errors":5,"./providers/abstract-provider":50,"./utils/bytes":64,"./utils/hash":65,"./utils/hdnode":66,"./utils/json-wallet":70,"./utils/keccak256":71,"./utils/properties":74,"./utils/random-bytes":75,"./utils/secret-storage":78,"./utils/signing-key":81,"./utils/transaction":83}],89:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var lang_en_1 = require("../wordlists/lang-en"); var en = lang_en_1.langEn; exports.en = en; -},{"../wordlists/lang-en":89}],89:[function(require,module,exports){ +},{"../wordlists/lang-en":90}],90:[function(require,module,exports){ 'use strict'; var __extends = (this && this.__extends) || (function () { var extendStatics = Object.setPrototypeOf || @@ -17287,5 +17300,5 @@ var langEn = new LangEn(); exports.langEn = langEn; wordlist_1.register(langEn); -},{"../utils/wordlist":86}]},{},[7])(7) +},{"../utils/wordlist":87}]},{},[7])(7) }); diff --git a/dist/ethers.min.js b/dist/ethers.min.js index 6c0272a0..5aaeb373 100644 --- a/dist/ethers.min.js +++ b/dist/ethers.min.js @@ -1,2 +1,2 @@ -!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).ethers=e()}}(function(){return function o(s,a,u){function l(t,e){if(!a[t]){if(!s[t]){var r="function"==typeof require&&require;if(!e&&r)return r(t,!0);if(h)return h(t,!0);var n=new Error("Cannot find module '"+t+"'");throw n.code="MODULE_NOT_FOUND",n}var i=a[t]={exports:{}};s[t][0].call(i.exports,function(e){return l(s[t][1][e]||e)},i,i.exports,o,s,a,u)}return a[t].exports}for(var h="function"==typeof require&&require,e=0;ei[e]||console.log.apply(console,t)}function h(){for(var e=[],t=0;t>4]+i[15&n])}return t.join("")}}),f={16:10,24:12,32:14},c=[1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145],d=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],l=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],h=[3328402341,4168907908,4000806809,4135287693,4294111757,3597364157,3731845041,2445657428,1613770832,33620227,3462883241,1445669757,3892248089,3050821474,1303096294,3967186586,2412431941,528646813,2311702848,4202528135,4026202645,2992200171,2387036105,4226871307,1101901292,3017069671,1604494077,1169141738,597466303,1403299063,3832705686,2613100635,1974974402,3791519004,1033081774,1277568618,1815492186,2118074177,4126668546,2211236943,1748251740,1369810420,3521504564,4193382664,3799085459,2883115123,1647391059,706024767,134480908,2512897874,1176707941,2646852446,806885416,932615841,168101135,798661301,235341577,605164086,461406363,3756188221,3454790438,1311188841,2142417613,3933566367,302582043,495158174,1479289972,874125870,907746093,3698224818,3025820398,1537253627,2756858614,1983593293,3084310113,2108928974,1378429307,3722699582,1580150641,327451799,2790478837,3117535592,0,3253595436,1075847264,3825007647,2041688520,3059440621,3563743934,2378943302,1740553945,1916352843,2487896798,2555137236,2958579944,2244988746,3151024235,3320835882,1336584933,3992714006,2252555205,2588757463,1714631509,293963156,2319795663,3925473552,67240454,4269768577,2689618160,2017213508,631218106,1269344483,2723238387,1571005438,2151694528,93294474,1066570413,563977660,1882732616,4059428100,1673313503,2008463041,2950355573,1109467491,537923632,3858759450,4260623118,3218264685,2177748300,403442708,638784309,3287084079,3193921505,899127202,2286175436,773265209,2479146071,1437050866,4236148354,2050833735,3362022572,3126681063,840505643,3866325909,3227541664,427917720,2655997905,2749160575,1143087718,1412049534,999329963,193497219,2353415882,3354324521,1807268051,672404540,2816401017,3160301282,369822493,2916866934,3688947771,1681011286,1949973070,336202270,2454276571,201721354,1210328172,3093060836,2680341085,3184776046,1135389935,3294782118,965841320,831886756,3554993207,4068047243,3588745010,2345191491,1849112409,3664604599,26054028,2983581028,2622377682,1235855840,3630984372,2891339514,4092916743,3488279077,3395642799,4101667470,1202630377,268961816,1874508501,4034427016,1243948399,1546530418,941366308,1470539505,1941222599,2546386513,3421038627,2715671932,3899946140,1042226977,2521517021,1639824860,227249030,260737669,3765465232,2084453954,1907733956,3429263018,2420656344,100860677,4160157185,470683154,3261161891,1781871967,2924959737,1773779408,394692241,2579611992,974986535,664706745,3655459128,3958962195,731420851,571543859,3530123707,2849626480,126783113,865375399,765172662,1008606754,361203602,3387549984,2278477385,2857719295,1344809080,2782912378,59542671,1503764984,160008576,437062935,1707065306,3622233649,2218934982,3496503480,2185314755,697932208,1512910199,504303377,2075177163,2824099068,1841019862,739644986],p=[2781242211,2230877308,2582542199,2381740923,234877682,3184946027,2984144751,1418839493,1348481072,50462977,2848876391,2102799147,434634494,1656084439,3863849899,2599188086,1167051466,2636087938,1082771913,2281340285,368048890,3954334041,3381544775,201060592,3963727277,1739838676,4250903202,3930435503,3206782108,4149453988,2531553906,1536934080,3262494647,484572669,2923271059,1783375398,1517041206,1098792767,49674231,1334037708,1550332980,4098991525,886171109,150598129,2481090929,1940642008,1398944049,1059722517,201851908,1385547719,1699095331,1587397571,674240536,2704774806,252314885,3039795866,151914247,908333586,2602270848,1038082786,651029483,1766729511,3447698098,2682942837,454166793,2652734339,1951935532,775166490,758520603,3000790638,4004797018,4217086112,4137964114,1299594043,1639438038,3464344499,2068982057,1054729187,1901997871,2534638724,4121318227,1757008337,0,750906861,1614815264,535035132,3363418545,3988151131,3201591914,1183697867,3647454910,1265776953,3734260298,3566750796,3903871064,1250283471,1807470800,717615087,3847203498,384695291,3313910595,3617213773,1432761139,2484176261,3481945413,283769337,100925954,2180939647,4037038160,1148730428,3123027871,3813386408,4087501137,4267549603,3229630528,2315620239,2906624658,3156319645,1215313976,82966005,3747855548,3245848246,1974459098,1665278241,807407632,451280895,251524083,1841287890,1283575245,337120268,891687699,801369324,3787349855,2721421207,3431482436,959321879,1469301956,4065699751,2197585534,1199193405,2898814052,3887750493,724703513,2514908019,2696962144,2551808385,3516813135,2141445340,1715741218,2119445034,2872807568,2198571144,3398190662,700968686,3547052216,1009259540,2041044702,3803995742,487983883,1991105499,1004265696,1449407026,1316239930,504629770,3683797321,168560134,1816667172,3837287516,1570751170,1857934291,4014189740,2797888098,2822345105,2754712981,936633572,2347923833,852879335,1133234376,1500395319,3084545389,2348912013,1689376213,3533459022,3762923945,3034082412,4205598294,133428468,634383082,2949277029,2398386810,3913789102,403703816,3580869306,2297460856,1867130149,1918643758,607656988,4049053350,3346248884,1368901318,600565992,2090982877,2632479860,557719327,3717614411,3697393085,2249034635,2232388234,2430627952,1115438654,3295786421,2865522278,3633334344,84280067,33027830,303828494,2747425121,1600795957,4188952407,3496589753,2434238086,1486471617,658119965,3106381470,953803233,334231800,3005978776,857870609,3151128937,1890179545,2298973838,2805175444,3056442267,574365214,2450884487,550103529,1233637070,4289353045,2018519080,2057691103,2399374476,4166623649,2148108681,387583245,3664101311,836232934,3330556482,3100665960,3280093505,2955516313,2002398509,287182607,3413881008,4238890068,3597515707,975967766],v=[1671808611,2089089148,2006576759,2072901243,4061003762,1807603307,1873927791,3310653893,810573872,16974337,1739181671,729634347,4263110654,3613570519,2883997099,1989864566,3393556426,2191335298,3376449993,2106063485,4195741690,1508618841,1204391495,4027317232,2917941677,3563566036,2734514082,2951366063,2629772188,2767672228,1922491506,3227229120,3082974647,4246528509,2477669779,644500518,911895606,1061256767,4144166391,3427763148,878471220,2784252325,3845444069,4043897329,1905517169,3631459288,827548209,356461077,67897348,3344078279,593839651,3277757891,405286936,2527147926,84871685,2595565466,118033927,305538066,2157648768,3795705826,3945188843,661212711,2999812018,1973414517,152769033,2208177539,745822252,439235610,455947803,1857215598,1525593178,2700827552,1391895634,994932283,3596728278,3016654259,695947817,3812548067,795958831,2224493444,1408607827,3513301457,0,3979133421,543178784,4229948412,2982705585,1542305371,1790891114,3410398667,3201918910,961245753,1256100938,1289001036,1491644504,3477767631,3496721360,4012557807,2867154858,4212583931,1137018435,1305975373,861234739,2241073541,1171229253,4178635257,33948674,2139225727,1357946960,1011120188,2679776671,2833468328,1374921297,2751356323,1086357568,2408187279,2460827538,2646352285,944271416,4110742005,3168756668,3066132406,3665145818,560153121,271589392,4279952895,4077846003,3530407890,3444343245,202643468,322250259,3962553324,1608629855,2543990167,1154254916,389623319,3294073796,2817676711,2122513534,1028094525,1689045092,1575467613,422261273,1939203699,1621147744,2174228865,1339137615,3699352540,577127458,712922154,2427141008,2290289544,1187679302,3995715566,3100863416,339486740,3732514782,1591917662,186455563,3681988059,3762019296,844522546,978220090,169743370,1239126601,101321734,611076132,1558493276,3260915650,3547250131,2901361580,1655096418,2443721105,2510565781,3828863972,2039214713,3878868455,3359869896,928607799,1840765549,2374762893,3580146133,1322425422,2850048425,1823791212,1459268694,4094161908,3928346602,1706019429,2056189050,2934523822,135794696,3134549946,2022240376,628050469,779246638,472135708,2800834470,3032970164,3327236038,3894660072,3715932637,1956440180,522272287,1272813131,3185336765,2340818315,2323976074,1888542832,1044544574,3049550261,1722469478,1222152264,50660867,4127324150,236067854,1638122081,895445557,1475980887,3117443513,2257655686,3243809217,489110045,2662934430,3778599393,4162055160,2561878936,288563729,1773916777,3648039385,2391345038,2493985684,2612407707,505560094,2274497927,3911240169,3460925390,1442818645,678973480,3749357023,2358182796,2717407649,2306869641,219617805,3218761151,3862026214,1120306242,1756942440,1103331905,2578459033,762796589,252780047,2966125488,1425844308,3151392187,372911126],y=[1667474886,2088535288,2004326894,2071694838,4075949567,1802223062,1869591006,3318043793,808472672,16843522,1734846926,724270422,4278065639,3621216949,2880169549,1987484396,3402253711,2189597983,3385409673,2105378810,4210693615,1499065266,1195886990,4042263547,2913856577,3570689971,2728590687,2947541573,2627518243,2762274643,1920112356,3233831835,3082273397,4261223649,2475929149,640051788,909531756,1061110142,4160160501,3435941763,875846760,2779116625,3857003729,4059105529,1903268834,3638064043,825316194,353713962,67374088,3351728789,589522246,3284360861,404236336,2526454071,84217610,2593830191,117901582,303183396,2155911963,3806477791,3958056653,656894286,2998062463,1970642922,151591698,2206440989,741110872,437923380,454765878,1852748508,1515908788,2694904667,1381168804,993742198,3604373943,3014905469,690584402,3823320797,791638366,2223281939,1398011302,3520161977,0,3991743681,538992704,4244381667,2981218425,1532751286,1785380564,3419096717,3200178535,960056178,1246420628,1280103576,1482221744,3486468741,3503319995,4025428677,2863326543,4227536621,1128514950,1296947098,859002214,2240123921,1162203018,4193849577,33687044,2139062782,1347481760,1010582648,2678045221,2829640523,1364325282,2745433693,1077985408,2408548869,2459086143,2644360225,943212656,4126475505,3166494563,3065430391,3671750063,555836226,269496352,4294908645,4092792573,3537006015,3452783745,202118168,320025894,3974901699,1600119230,2543297077,1145359496,387397934,3301201811,2812801621,2122220284,1027426170,1684319432,1566435258,421079858,1936954854,1616945344,2172753945,1330631070,3705438115,572679748,707427924,2425400123,2290647819,1179044492,4008585671,3099120491,336870440,3739122087,1583276732,185277718,3688593069,3772791771,842159716,976899700,168435220,1229577106,101059084,606366792,1549591736,3267517855,3553849021,2897014595,1650632388,2442242105,2509612081,3840161747,2038008818,3890688725,3368567691,926374254,1835907034,2374863873,3587531953,1313788572,2846482505,1819063512,1448540844,4109633523,3941213647,1701162954,2054852340,2930698567,134748176,3132806511,2021165296,623210314,774795868,471606328,2795958615,3031746419,3334885783,3907527627,3722280097,1953799400,522133822,1263263126,3183336545,2341176845,2324333839,1886425312,1044267644,3048588401,1718004428,1212733584,50529542,4143317495,235803164,1633788866,892690282,1465383342,3115962473,2256965911,3250673817,488449850,2661202215,3789633753,4177007595,2560144171,286339874,1768537042,3654906025,2391705863,2492770099,2610673197,505291324,2273808917,3924369609,3469625735,1431699370,673740880,3755965093,2358021891,2711746649,2307489801,218961690,3217021541,3873845719,1111672452,1751693520,1094828930,2576986153,757954394,252645662,2964376443,1414855848,3149649517,370555436],m=[1374988112,2118214995,437757123,975658646,1001089995,530400753,2902087851,1273168787,540080725,2910219766,2295101073,4110568485,1340463100,3307916247,641025152,3043140495,3736164937,632953703,1172967064,1576976609,3274667266,2169303058,2370213795,1809054150,59727847,361929877,3211623147,2505202138,3569255213,1484005843,1239443753,2395588676,1975683434,4102977912,2572697195,666464733,3202437046,4035489047,3374361702,2110667444,1675577880,3843699074,2538681184,1649639237,2976151520,3144396420,4269907996,4178062228,1883793496,2403728665,2497604743,1383856311,2876494627,1917518562,3810496343,1716890410,3001755655,800440835,2261089178,3543599269,807962610,599762354,33778362,3977675356,2328828971,2809771154,4077384432,1315562145,1708848333,101039829,3509871135,3299278474,875451293,2733856160,92987698,2767645557,193195065,1080094634,1584504582,3178106961,1042385657,2531067453,3711829422,1306967366,2438237621,1908694277,67556463,1615861247,429456164,3602770327,2302690252,1742315127,2968011453,126454664,3877198648,2043211483,2709260871,2084704233,4169408201,0,159417987,841739592,504459436,1817866830,4245618683,260388950,1034867998,908933415,168810852,1750902305,2606453969,607530554,202008497,2472011535,3035535058,463180190,2160117071,1641816226,1517767529,470948374,3801332234,3231722213,1008918595,303765277,235474187,4069246893,766945465,337553864,1475418501,2943682380,4003061179,2743034109,4144047775,1551037884,1147550661,1543208500,2336434550,3408119516,3069049960,3102011747,3610369226,1113818384,328671808,2227573024,2236228733,3535486456,2935566865,3341394285,496906059,3702665459,226906860,2009195472,733156972,2842737049,294930682,1206477858,2835123396,2700099354,1451044056,573804783,2269728455,3644379585,2362090238,2564033334,2801107407,2776292904,3669462566,1068351396,742039012,1350078989,1784663195,1417561698,4136440770,2430122216,775550814,2193862645,2673705150,1775276924,1876241833,3475313331,3366754619,270040487,3902563182,3678124923,3441850377,1851332852,3969562369,2203032232,3868552805,2868897406,566021896,4011190502,3135740889,1248802510,3936291284,699432150,832877231,708780849,3332740144,899835584,1951317047,4236429990,3767586992,866637845,4043610186,1106041591,2144161806,395441711,1984812685,1139781709,3433712980,3835036895,2664543715,1282050075,3240894392,1181045119,2640243204,25965917,4203181171,4211818798,3009879386,2463879762,3910161971,1842759443,2597806476,933301370,1509430414,3943906441,3467192302,3076639029,3776767469,2051518780,2631065433,1441952575,404016761,1942435775,1408749034,1610459739,3745345300,2017778566,3400528769,3110650942,941896748,3265478751,371049330,3168937228,675039627,4279080257,967311729,135050206,3635733660,1683407248,2076935265,3576870512,1215061108,3501741890],g=[1347548327,1400783205,3273267108,2520393566,3409685355,4045380933,2880240216,2471224067,1428173050,4138563181,2441661558,636813900,4233094615,3620022987,2149987652,2411029155,1239331162,1730525723,2554718734,3781033664,46346101,310463728,2743944855,3328955385,3875770207,2501218972,3955191162,3667219033,768917123,3545789473,692707433,1150208456,1786102409,2029293177,1805211710,3710368113,3065962831,401639597,1724457132,3028143674,409198410,2196052529,1620529459,1164071807,3769721975,2226875310,486441376,2499348523,1483753576,428819965,2274680428,3075636216,598438867,3799141122,1474502543,711349675,129166120,53458370,2592523643,2782082824,4063242375,2988687269,3120694122,1559041666,730517276,2460449204,4042459122,2706270690,3446004468,3573941694,533804130,2328143614,2637442643,2695033685,839224033,1973745387,957055980,2856345839,106852767,1371368976,4181598602,1033297158,2933734917,1179510461,3046200461,91341917,1862534868,4284502037,605657339,2547432937,3431546947,2003294622,3182487618,2282195339,954669403,3682191598,1201765386,3917234703,3388507166,0,2198438022,1211247597,2887651696,1315723890,4227665663,1443857720,507358933,657861945,1678381017,560487590,3516619604,975451694,2970356327,261314535,3535072918,2652609425,1333838021,2724322336,1767536459,370938394,182621114,3854606378,1128014560,487725847,185469197,2918353863,3106780840,3356761769,2237133081,1286567175,3152976349,4255350624,2683765030,3160175349,3309594171,878443390,1988838185,3704300486,1756818940,1673061617,3403100636,272786309,1075025698,545572369,2105887268,4174560061,296679730,1841768865,1260232239,4091327024,3960309330,3497509347,1814803222,2578018489,4195456072,575138148,3299409036,446754879,3629546796,4011996048,3347532110,3252238545,4270639778,915985419,3483825537,681933534,651868046,2755636671,3828103837,223377554,2607439820,1649704518,3270937875,3901806776,1580087799,4118987695,3198115200,2087309459,2842678573,3016697106,1003007129,2802849917,1860738147,2077965243,164439672,4100872472,32283319,2827177882,1709610350,2125135846,136428751,3874428392,3652904859,3460984630,3572145929,3593056380,2939266226,824852259,818324884,3224740454,930369212,2801566410,2967507152,355706840,1257309336,4148292826,243256656,790073846,2373340630,1296297904,1422699085,3756299780,3818836405,457992840,3099667487,2135319889,77422314,1560382517,1945798516,788204353,1521706781,1385356242,870912086,325965383,2358957921,2050466060,2388260884,2313884476,4006521127,901210569,3990953189,1014646705,1503449823,1062597235,2031621326,3212035895,3931371469,1533017514,350174575,2256028891,2177544179,1052338372,741876788,1606591296,1914052035,213705253,2334669897,1107234197,1899603969,3725069491,2631447780,2422494913,1635502980,1893020342,1950903388,1120974935],b=[2807058932,1699970625,2764249623,1586903591,1808481195,1173430173,1487645946,59984867,4199882800,1844882806,1989249228,1277555970,3623636965,3419915562,1149249077,2744104290,1514790577,459744698,244860394,3235995134,1963115311,4027744588,2544078150,4190530515,1608975247,2627016082,2062270317,1507497298,2200818878,567498868,1764313568,3359936201,2305455554,2037970062,1047239e3,1910319033,1337376481,2904027272,2892417312,984907214,1243112415,830661914,861968209,2135253587,2011214180,2927934315,2686254721,731183368,1750626376,4246310725,1820824798,4172763771,3542330227,48394827,2404901663,2871682645,671593195,3254988725,2073724613,145085239,2280796200,2779915199,1790575107,2187128086,472615631,3029510009,4075877127,3802222185,4107101658,3201631749,1646252340,4270507174,1402811438,1436590835,3778151818,3950355702,3963161475,4020912224,2667994737,273792366,2331590177,104699613,95345982,3175501286,2377486676,1560637892,3564045318,369057872,4213447064,3919042237,1137477952,2658625497,1119727848,2340947849,1530455833,4007360968,172466556,266959938,516552836,0,2256734592,3980931627,1890328081,1917742170,4294704398,945164165,3575528878,958871085,3647212047,2787207260,1423022939,775562294,1739656202,3876557655,2530391278,2443058075,3310321856,547512796,1265195639,437656594,3121275539,719700128,3762502690,387781147,218828297,3350065803,2830708150,2848461854,428169201,122466165,3720081049,1627235199,648017665,4122762354,1002783846,2117360635,695634755,3336358691,4234721005,4049844452,3704280881,2232435299,574624663,287343814,612205898,1039717051,840019705,2708326185,793451934,821288114,1391201670,3822090177,376187827,3113855344,1224348052,1679968233,2361698556,1058709744,752375421,2431590963,1321699145,3519142200,2734591178,188127444,2177869557,3727205754,2384911031,3215212461,2648976442,2450346104,3432737375,1180849278,331544205,3102249176,4150144569,2952102595,2159976285,2474404304,766078933,313773861,2570832044,2108100632,1668212892,3145456443,2013908262,418672217,3070356634,2594734927,1852171925,3867060991,3473416636,3907448597,2614737639,919489135,164948639,2094410160,2997825956,590424639,2486224549,1723872674,3157750862,3399941250,3501252752,3625268135,2555048196,3673637356,1343127501,4130281361,3599595085,2957853679,1297403050,81781910,3051593425,2283490410,532201772,1367295589,3926170974,895287692,1953757831,1093597963,492483431,3528626907,1446242576,1192455638,1636604631,209336225,344873464,1015671571,669961897,3375740769,3857572124,2973530695,3747192018,1933530610,3464042516,935293895,3454686199,2858115069,1863638845,3683022916,4085369519,3292445032,875313188,1080017571,3279033885,621591778,1233856572,2504130317,24197544,3017672716,3835484340,3247465558,2220981195,3060847922,1551124588,1463996600],w=[4104605777,1097159550,396673818,660510266,2875968315,2638606623,4200115116,3808662347,821712160,1986918061,3430322568,38544885,3856137295,718002117,893681702,1654886325,2975484382,3122358053,3926825029,4274053469,796197571,1290801793,1184342925,3556361835,2405426947,2459735317,1836772287,1381620373,3196267988,1948373848,3764988233,3385345166,3263785589,2390325492,1480485785,3111247143,3780097726,2293045232,548169417,3459953789,3746175075,439452389,1362321559,1400849762,1685577905,1806599355,2174754046,137073913,1214797936,1174215055,3731654548,2079897426,1943217067,1258480242,529487843,1437280870,3945269170,3049390895,3313212038,923313619,679998e3,3215307299,57326082,377642221,3474729866,2041877159,133361907,1776460110,3673476453,96392454,878845905,2801699524,777231668,4082475170,2330014213,4142626212,2213296395,1626319424,1906247262,1846563261,562755902,3708173718,1040559837,3871163981,1418573201,3294430577,114585348,1343618912,2566595609,3186202582,1078185097,3651041127,3896688048,2307622919,425408743,3371096953,2081048481,1108339068,2216610296,0,2156299017,736970802,292596766,1517440620,251657213,2235061775,2933202493,758720310,265905162,1554391400,1532285339,908999204,174567692,1474760595,4002861748,2610011675,3234156416,3693126241,2001430874,303699484,2478443234,2687165888,585122620,454499602,151849742,2345119218,3064510765,514443284,4044981591,1963412655,2581445614,2137062819,19308535,1928707164,1715193156,4219352155,1126790795,600235211,3992742070,3841024952,836553431,1669664834,2535604243,3323011204,1243905413,3141400786,4180808110,698445255,2653899549,2989552604,2253581325,3252932727,3004591147,1891211689,2487810577,3915653703,4237083816,4030667424,2100090966,865136418,1229899655,953270745,3399679628,3557504664,4118925222,2061379749,3079546586,2915017791,983426092,2022837584,1607244650,2118541908,2366882550,3635996816,972512814,3283088770,1568718495,3499326569,3576539503,621982671,2895723464,410887952,2623762152,1002142683,645401037,1494807662,2595684844,1335535747,2507040230,4293295786,3167684641,367585007,3885750714,1865862730,2668221674,2960971305,2763173681,1059270954,2777952454,2724642869,1320957812,2194319100,2429595872,2815956275,77089521,3973773121,3444575871,2448830231,1305906550,4021308739,2857194700,2516901860,3518358430,1787304780,740276417,1699839814,1592394909,2352307457,2272556026,188821243,1729977011,3687994002,274084841,3594982253,3613494426,2701949495,4162096729,322734571,2837966542,1640576439,484830689,1202797690,3537852828,4067639125,349075736,3342319475,4157467219,4255800159,1030690015,1155237496,2951971274,1757691577,607398968,2738905026,499347990,3794078908,1011452712,227885567,2818666809,213114376,3034881240,1455525988,3414450555,850817237,1817998408,3092726480],_=[0,235474187,470948374,303765277,941896748,908933415,607530554,708780849,1883793496,2118214995,1817866830,1649639237,1215061108,1181045119,1417561698,1517767529,3767586992,4003061179,4236429990,4069246893,3635733660,3602770327,3299278474,3400528769,2430122216,2664543715,2362090238,2193862645,2835123396,2801107407,3035535058,3135740889,3678124923,3576870512,3341394285,3374361702,3810496343,3977675356,4279080257,4043610186,2876494627,2776292904,3076639029,3110650942,2472011535,2640243204,2403728665,2169303058,1001089995,899835584,666464733,699432150,59727847,226906860,530400753,294930682,1273168787,1172967064,1475418501,1509430414,1942435775,2110667444,1876241833,1641816226,2910219766,2743034109,2976151520,3211623147,2505202138,2606453969,2302690252,2269728455,3711829422,3543599269,3240894392,3475313331,3843699074,3943906441,4178062228,4144047775,1306967366,1139781709,1374988112,1610459739,1975683434,2076935265,1775276924,1742315127,1034867998,866637845,566021896,800440835,92987698,193195065,429456164,395441711,1984812685,2017778566,1784663195,1683407248,1315562145,1080094634,1383856311,1551037884,101039829,135050206,437757123,337553864,1042385657,807962610,573804783,742039012,2531067453,2564033334,2328828971,2227573024,2935566865,2700099354,3001755655,3168937228,3868552805,3902563182,4203181171,4102977912,3736164937,3501741890,3265478751,3433712980,1106041591,1340463100,1576976609,1408749034,2043211483,2009195472,1708848333,1809054150,832877231,1068351396,766945465,599762354,159417987,126454664,361929877,463180190,2709260871,2943682380,3178106961,3009879386,2572697195,2538681184,2236228733,2336434550,3509871135,3745345300,3441850377,3274667266,3910161971,3877198648,4110568485,4211818798,2597806476,2497604743,2261089178,2295101073,2733856160,2902087851,3202437046,2968011453,3936291284,3835036895,4136440770,4169408201,3535486456,3702665459,3467192302,3231722213,2051518780,1951317047,1716890410,1750902305,1113818384,1282050075,1584504582,1350078989,168810852,67556463,371049330,404016761,841739592,1008918595,775550814,540080725,3969562369,3801332234,4035489047,4269907996,3569255213,3669462566,3366754619,3332740144,2631065433,2463879762,2160117071,2395588676,2767645557,2868897406,3102011747,3069049960,202008497,33778362,270040487,504459436,875451293,975658646,675039627,641025152,2084704233,1917518562,1615861247,1851332852,1147550661,1248802510,1484005843,1451044056,933301370,967311729,733156972,632953703,260388950,25965917,328671808,496906059,1206477858,1239443753,1543208500,1441952575,2144161806,1908694277,1675577880,1842759443,3610369226,3644379585,3408119516,3307916247,4011190502,3776767469,4077384432,4245618683,2809771154,2842737049,3144396420,3043140495,2673705150,2438237621,2203032232,2370213795],M=[0,185469197,370938394,487725847,741876788,657861945,975451694,824852259,1483753576,1400783205,1315723890,1164071807,1950903388,2135319889,1649704518,1767536459,2967507152,3152976349,2801566410,2918353863,2631447780,2547432937,2328143614,2177544179,3901806776,3818836405,4270639778,4118987695,3299409036,3483825537,3535072918,3652904859,2077965243,1893020342,1841768865,1724457132,1474502543,1559041666,1107234197,1257309336,598438867,681933534,901210569,1052338372,261314535,77422314,428819965,310463728,3409685355,3224740454,3710368113,3593056380,3875770207,3960309330,4045380933,4195456072,2471224067,2554718734,2237133081,2388260884,3212035895,3028143674,2842678573,2724322336,4138563181,4255350624,3769721975,3955191162,3667219033,3516619604,3431546947,3347532110,2933734917,2782082824,3099667487,3016697106,2196052529,2313884476,2499348523,2683765030,1179510461,1296297904,1347548327,1533017514,1786102409,1635502980,2087309459,2003294622,507358933,355706840,136428751,53458370,839224033,957055980,605657339,790073846,2373340630,2256028891,2607439820,2422494913,2706270690,2856345839,3075636216,3160175349,3573941694,3725069491,3273267108,3356761769,4181598602,4063242375,4011996048,3828103837,1033297158,915985419,730517276,545572369,296679730,446754879,129166120,213705253,1709610350,1860738147,1945798516,2029293177,1239331162,1120974935,1606591296,1422699085,4148292826,4233094615,3781033664,3931371469,3682191598,3497509347,3446004468,3328955385,2939266226,2755636671,3106780840,2988687269,2198438022,2282195339,2501218972,2652609425,1201765386,1286567175,1371368976,1521706781,1805211710,1620529459,2105887268,1988838185,533804130,350174575,164439672,46346101,870912086,954669403,636813900,788204353,2358957921,2274680428,2592523643,2441661558,2695033685,2880240216,3065962831,3182487618,3572145929,3756299780,3270937875,3388507166,4174560061,4091327024,4006521127,3854606378,1014646705,930369212,711349675,560487590,272786309,457992840,106852767,223377554,1678381017,1862534868,1914052035,2031621326,1211247597,1128014560,1580087799,1428173050,32283319,182621114,401639597,486441376,768917123,651868046,1003007129,818324884,1503449823,1385356242,1333838021,1150208456,1973745387,2125135846,1673061617,1756818940,2970356327,3120694122,2802849917,2887651696,2637442643,2520393566,2334669897,2149987652,3917234703,3799141122,4284502037,4100872472,3309594171,3460984630,3545789473,3629546796,2050466060,1899603969,1814803222,1730525723,1443857720,1560382517,1075025698,1260232239,575138148,692707433,878443390,1062597235,243256656,91341917,409198410,325965383,3403100636,3252238545,3704300486,3620022987,3874428392,3990953189,4042459122,4227665663,2460449204,2578018489,2226875310,2411029155,3198115200,3046200461,2827177882,2743944855],A=[0,218828297,437656594,387781147,875313188,958871085,775562294,590424639,1750626376,1699970625,1917742170,2135253587,1551124588,1367295589,1180849278,1265195639,3501252752,3720081049,3399941250,3350065803,3835484340,3919042237,4270507174,4085369519,3102249176,3051593425,2734591178,2952102595,2361698556,2177869557,2530391278,2614737639,3145456443,3060847922,2708326185,2892417312,2404901663,2187128086,2504130317,2555048196,3542330227,3727205754,3375740769,3292445032,3876557655,3926170974,4246310725,4027744588,1808481195,1723872674,1910319033,2094410160,1608975247,1391201670,1173430173,1224348052,59984867,244860394,428169201,344873464,935293895,984907214,766078933,547512796,1844882806,1627235199,2011214180,2062270317,1507497298,1423022939,1137477952,1321699145,95345982,145085239,532201772,313773861,830661914,1015671571,731183368,648017665,3175501286,2957853679,2807058932,2858115069,2305455554,2220981195,2474404304,2658625497,3575528878,3625268135,3473416636,3254988725,3778151818,3963161475,4213447064,4130281361,3599595085,3683022916,3432737375,3247465558,3802222185,4020912224,4172763771,4122762354,3201631749,3017672716,2764249623,2848461854,2331590177,2280796200,2431590963,2648976442,104699613,188127444,472615631,287343814,840019705,1058709744,671593195,621591778,1852171925,1668212892,1953757831,2037970062,1514790577,1463996600,1080017571,1297403050,3673637356,3623636965,3235995134,3454686199,4007360968,3822090177,4107101658,4190530515,2997825956,3215212461,2830708150,2779915199,2256734592,2340947849,2627016082,2443058075,172466556,122466165,273792366,492483431,1047239e3,861968209,612205898,695634755,1646252340,1863638845,2013908262,1963115311,1446242576,1530455833,1277555970,1093597963,1636604631,1820824798,2073724613,1989249228,1436590835,1487645946,1337376481,1119727848,164948639,81781910,331544205,516552836,1039717051,821288114,669961897,719700128,2973530695,3157750862,2871682645,2787207260,2232435299,2283490410,2667994737,2450346104,3647212047,3564045318,3279033885,3464042516,3980931627,3762502690,4150144569,4199882800,3070356634,3121275539,2904027272,2686254721,2200818878,2384911031,2570832044,2486224549,3747192018,3528626907,3310321856,3359936201,3950355702,3867060991,4049844452,4234721005,1739656202,1790575107,2108100632,1890328081,1402811438,1586903591,1233856572,1149249077,266959938,48394827,369057872,418672217,1002783846,919489135,567498868,752375421,209336225,24197544,376187827,459744698,945164165,895287692,574624663,793451934,1679968233,1764313568,2117360635,1933530610,1343127501,1560637892,1243112415,1192455638,3704280881,3519142200,3336358691,3419915562,3907448597,3857572124,4075877127,4294704398,3029510009,3113855344,2927934315,2744104290,2159976285,2377486676,2594734927,2544078150],E=[0,151849742,303699484,454499602,607398968,758720310,908999204,1059270954,1214797936,1097159550,1517440620,1400849762,1817998408,1699839814,2118541908,2001430874,2429595872,2581445614,2194319100,2345119218,3034881240,3186202582,2801699524,2951971274,3635996816,3518358430,3399679628,3283088770,4237083816,4118925222,4002861748,3885750714,1002142683,850817237,698445255,548169417,529487843,377642221,227885567,77089521,1943217067,2061379749,1640576439,1757691577,1474760595,1592394909,1174215055,1290801793,2875968315,2724642869,3111247143,2960971305,2405426947,2253581325,2638606623,2487810577,3808662347,3926825029,4044981591,4162096729,3342319475,3459953789,3576539503,3693126241,1986918061,2137062819,1685577905,1836772287,1381620373,1532285339,1078185097,1229899655,1040559837,923313619,740276417,621982671,439452389,322734571,137073913,19308535,3871163981,4021308739,4104605777,4255800159,3263785589,3414450555,3499326569,3651041127,2933202493,2815956275,3167684641,3049390895,2330014213,2213296395,2566595609,2448830231,1305906550,1155237496,1607244650,1455525988,1776460110,1626319424,2079897426,1928707164,96392454,213114376,396673818,514443284,562755902,679998e3,865136418,983426092,3708173718,3557504664,3474729866,3323011204,4180808110,4030667424,3945269170,3794078908,2507040230,2623762152,2272556026,2390325492,2975484382,3092726480,2738905026,2857194700,3973773121,3856137295,4274053469,4157467219,3371096953,3252932727,3673476453,3556361835,2763173681,2915017791,3064510765,3215307299,2156299017,2307622919,2459735317,2610011675,2081048481,1963412655,1846563261,1729977011,1480485785,1362321559,1243905413,1126790795,878845905,1030690015,645401037,796197571,274084841,425408743,38544885,188821243,3613494426,3731654548,3313212038,3430322568,4082475170,4200115116,3780097726,3896688048,2668221674,2516901860,2366882550,2216610296,3141400786,2989552604,2837966542,2687165888,1202797690,1320957812,1437280870,1554391400,1669664834,1787304780,1906247262,2022837584,265905162,114585348,499347990,349075736,736970802,585122620,972512814,821712160,2595684844,2478443234,2293045232,2174754046,3196267988,3079546586,2895723464,2777952454,3537852828,3687994002,3234156416,3385345166,4142626212,4293295786,3841024952,3992742070,174567692,57326082,410887952,292596766,777231668,660510266,1011452712,893681702,1108339068,1258480242,1343618912,1494807662,1715193156,1865862730,1948373848,2100090966,2701949495,2818666809,3004591147,3122358053,2235061775,2352307457,2535604243,2653899549,3915653703,3764988233,4219352155,4067639125,3444575871,3294430577,3746175075,3594982253,836553431,953270745,600235211,718002117,367585007,484830689,133361907,251657213,2041877159,1891211689,1806599355,1654886325,1568718495,1418573201,1335535747,1184342925];function S(e){for(var t=[],r=0;r>2,this._Ke[r][t%4]=o[t],this._Kd[e-r][t%4]=o[t];for(var s,a=0,u=i;u>16&255]<<24^d[s>>8&255]<<16^d[255&s]<<8^d[s>>24&255]^c[a]<<24,a+=1,8!=i)for(t=1;t>8&255]<<8^d[s>>16&255]<<16^d[s>>24&255]<<24;for(t=i/2+1;t>2,h=u%4,this._Ke[l][h]=o[t],this._Kd[e-l][h]=o[t++],u++}for(var l=1;l>24&255]^M[s>>16&255]^A[s>>8&255]^E[255&s]},k.prototype.encrypt=function(e){if(16!=e.length)throw new Error("invalid plaintext size (must be 16 bytes)");for(var t=this._Ke.length-1,r=[0,0,0,0],n=S(e),i=0;i<4;i++)n[i]^=this._Ke[0][i];for(var o=1;o>24&255]^p[n[(i+1)%4]>>16&255]^v[n[(i+2)%4]>>8&255]^y[255&n[(i+3)%4]]^this._Ke[o][i];n=r.slice()}var s,a=u(16);for(i=0;i<4;i++)s=this._Ke[t][i],a[4*i]=255&(d[n[i]>>24&255]^s>>24),a[4*i+1]=255&(d[n[(i+1)%4]>>16&255]^s>>16),a[4*i+2]=255&(d[n[(i+2)%4]>>8&255]^s>>8),a[4*i+3]=255&(d[255&n[(i+3)%4]]^s);return a},k.prototype.decrypt=function(e){if(16!=e.length)throw new Error("invalid ciphertext size (must be 16 bytes)");for(var t=this._Kd.length-1,r=[0,0,0,0],n=S(e),i=0;i<4;i++)n[i]^=this._Kd[0][i];for(var o=1;o>24&255]^g[n[(i+3)%4]>>16&255]^b[n[(i+2)%4]>>8&255]^w[255&n[(i+1)%4]]^this._Kd[o][i];n=r.slice()}var s,a=u(16);for(i=0;i<4;i++)s=this._Kd[t][i],a[4*i]=255&(l[n[i]>>24&255]^s>>24),a[4*i+1]=255&(l[n[(i+3)%4]>>16&255]^s>>16),a[4*i+2]=255&(l[n[(i+2)%4]>>8&255]^s>>8),a[4*i+3]=255&(l[255&n[(i+1)%4]]^s);return a};var N=function(e){if(!(this instanceof N))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new k(e)};N.prototype.encrypt=function(e){if((e=o(e)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var t=u(e.length),r=u(16),n=0;n>=8},T.prototype.setBytes=function(e){if(16!=(e=o(e,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=e},T.prototype.increment=function(){for(var e=15;0<=e;e--){if(255!==this._counter[e]){this._counter[e]++;break}this._counter[e]=0}};var R=function(e,t){if(!(this instanceof R))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",t instanceof T||(t=new T(t)),this._counter=t,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new k(e)};R.prototype.encrypt=function(e){for(var t=o(e,!0),r=0;r>>26-s&67108863,26<=(s+=24)&&(s-=26,i++);else if("le"===r)for(i=n=0;n>>26-s&67108863,26<=(s+=24)&&(s-=26,i++);return this.strip()},m.prototype._parseHex=function(e,t){this.length=Math.ceil((e.length-t)/6),this.words=new Array(this.length);for(var r=0;r>>26-o&4194303,26<=(o+=24)&&(o-=26,n++);r+6!==t&&(i=s(e,t,r+6),this.words[n]|=i<>>26-o&4194303),this.strip()},m.prototype._parseBase=function(e,t,r){this.words=[0];for(var n=0,i=this.length=1;i<=67108863;i*=t)n++;n--,i=i/t|0;for(var o=e.length-r,s=o%n,a=Math.min(o,o-s)+r,u=0,l=r;l"};var c=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],d=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],p=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function i(e,t,r){r.negative=t.negative^e.negative;var n=e.length+t.length|0;n=(r.length=n)-1|0;var i=0|e.words[0],o=0|t.words[0],s=i*o,a=67108863&s,u=s/67108864|0;r.words[0]=a;for(var l=1;l>>26,f=67108863&u,c=Math.min(l,t.length-1),d=Math.max(0,l-e.length+1);d<=c;d++){var p=l-d|0;h+=(s=(i=0|e.words[p])*(o=0|t.words[d])+f)/67108864|0,f=67108863&s}r.words[l]=0|f,u=0|h}return 0!==u?r.words[l]=0|u:r.length--,r.strip()}m.prototype.toString=function(e,t){var r;if(t=0|t||1,16===(e=e||10)||"hex"===e){r="";for(var n=0,i=0,o=0;o>>24-n&16777215)||o!==this.length-1?c[6-a.length]+a+r:a+r,26<=(n+=2)&&(n-=26,o--)}for(0!==i&&(r=i.toString(16)+r);r.length%t!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(e===(0|e)&&2<=e&&e<=36){var u=d[e],l=p[e];r="";var h=this.clone();for(h.negative=0;!h.isZero();){var f=h.modn(l).toString(e);r=(h=h.idivn(l)).isZero()?f+r:c[u-f.length]+f+r}for(this.isZero()&&(r="0"+r);r.length%t!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}y(!1,"Base should be between 2 and 36")},m.prototype.toNumber=function(){var e=this.words[0];return 2===this.length?e+=67108864*this.words[1]:3===this.length&&1===this.words[2]?e+=4503599627370496+67108864*this.words[1]:2>>=13),64<=t&&(r+=7,t>>>=7),8<=t&&(r+=4,t>>>=4),2<=t&&(r+=2,t>>>=2),r+t},m.prototype._zeroBits=function(e){if(0===e)return 26;var t=e,r=0;return 0==(8191&t)&&(r+=13,t>>>=13),0==(127&t)&&(r+=7,t>>>=7),0==(15&t)&&(r+=4,t>>>=4),0==(3&t)&&(r+=2,t>>>=2),0==(1&t)&&r++,r},m.prototype.bitLength=function(){var e=this.words[this.length-1],t=this._countBits(e);return 26*(this.length-1)+t},m.prototype.zeroBits=function(){if(this.isZero())return 0;for(var e=0,t=0;te.length?this.clone().ior(e):e.clone().ior(this)},m.prototype.uor=function(e){return this.length>e.length?this.clone().iuor(e):e.clone().iuor(this)},m.prototype.iuand=function(e){var t;t=this.length>e.length?e:this;for(var r=0;re.length?this.clone().iand(e):e.clone().iand(this)},m.prototype.uand=function(e){return this.length>e.length?this.clone().iuand(e):e.clone().iuand(this)},m.prototype.iuxor=function(e){var t,r;r=this.length>e.length?(t=this,e):(t=e,this);for(var n=0;ne.length?this.clone().ixor(e):e.clone().ixor(this)},m.prototype.uxor=function(e){return this.length>e.length?this.clone().iuxor(e):e.clone().iuxor(this)},m.prototype.inotn=function(e){y("number"==typeof e&&0<=e);var t=0|Math.ceil(e/26),r=e%26;this._expand(t),0>26-r),this.strip()},m.prototype.notn=function(e){return this.clone().inotn(e)},m.prototype.setn=function(e,t){y("number"==typeof e&&0<=e);var r=e/26|0,n=e%26;return this._expand(1+r),this.words[r]=t?this.words[r]|1<e.length?(r=this,e):(r=e,this);for(var i=0,o=0;o>>26;for(;0!==i&&o>>26;if(this.length=r.length,0!==i)this.words[this.length]=i,this.length++;else if(r!==this)for(;oe.length?this.clone().iadd(e):e.clone().iadd(this)},m.prototype.isub=function(e){if(0!==e.negative){e.negative=0;var t=this.iadd(e);return e.negative=1,t._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(e),this.negative=1,this._normSign();var r,n,i=this.cmp(e);if(0===i)return this.negative=0,this.length=1,this.words[0]=0,this;n=0>26,this.words[s]=67108863&t;for(;0!==o&&s>26,this.words[s]=67108863&t;if(0===o&&s>>13,d=0|s[1],p=8191&d,v=d>>>13,y=0|s[2],m=8191&y,g=y>>>13,b=0|s[3],w=8191&b,_=b>>>13,M=0|s[4],A=8191&M,E=M>>>13,S=0|s[5],k=8191&S,N=S>>>13,P=0|s[6],x=8191&P,I=P>>>13,T=0|s[7],R=8191&T,O=T>>>13,C=0|s[8],B=8191&C,D=C>>>13,L=0|s[9],U=8191&L,F=L>>>13,j=0|a[0],G=8191&j,H=j>>>13,z=0|a[1],V=8191&z,K=z>>>13,q=0|a[2],W=8191&q,Z=q>>>13,J=0|a[3],X=8191&J,$=J>>>13,Q=0|a[4],Y=8191&Q,ee=Q>>>13,te=0|a[5],re=8191&te,ne=te>>>13,ie=0|a[6],oe=8191&ie,se=ie>>>13,ae=0|a[7],ue=8191&ae,le=ae>>>13,he=0|a[8],fe=8191&he,ce=he>>>13,de=0|a[9],pe=8191&de,ve=de>>>13;r.negative=e.negative^t.negative,r.length=19;var ye=(l+(n=Math.imul(f,G))|0)+((8191&(i=(i=Math.imul(f,H))+Math.imul(c,G)|0))<<13)|0;l=((o=Math.imul(c,H))+(i>>>13)|0)+(ye>>>26)|0,ye&=67108863,n=Math.imul(p,G),i=(i=Math.imul(p,H))+Math.imul(v,G)|0,o=Math.imul(v,H);var me=(l+(n=n+Math.imul(f,V)|0)|0)+((8191&(i=(i=i+Math.imul(f,K)|0)+Math.imul(c,V)|0))<<13)|0;l=((o=o+Math.imul(c,K)|0)+(i>>>13)|0)+(me>>>26)|0,me&=67108863,n=Math.imul(m,G),i=(i=Math.imul(m,H))+Math.imul(g,G)|0,o=Math.imul(g,H),n=n+Math.imul(p,V)|0,i=(i=i+Math.imul(p,K)|0)+Math.imul(v,V)|0,o=o+Math.imul(v,K)|0;var ge=(l+(n=n+Math.imul(f,W)|0)|0)+((8191&(i=(i=i+Math.imul(f,Z)|0)+Math.imul(c,W)|0))<<13)|0;l=((o=o+Math.imul(c,Z)|0)+(i>>>13)|0)+(ge>>>26)|0,ge&=67108863,n=Math.imul(w,G),i=(i=Math.imul(w,H))+Math.imul(_,G)|0,o=Math.imul(_,H),n=n+Math.imul(m,V)|0,i=(i=i+Math.imul(m,K)|0)+Math.imul(g,V)|0,o=o+Math.imul(g,K)|0,n=n+Math.imul(p,W)|0,i=(i=i+Math.imul(p,Z)|0)+Math.imul(v,W)|0,o=o+Math.imul(v,Z)|0;var be=(l+(n=n+Math.imul(f,X)|0)|0)+((8191&(i=(i=i+Math.imul(f,$)|0)+Math.imul(c,X)|0))<<13)|0;l=((o=o+Math.imul(c,$)|0)+(i>>>13)|0)+(be>>>26)|0,be&=67108863,n=Math.imul(A,G),i=(i=Math.imul(A,H))+Math.imul(E,G)|0,o=Math.imul(E,H),n=n+Math.imul(w,V)|0,i=(i=i+Math.imul(w,K)|0)+Math.imul(_,V)|0,o=o+Math.imul(_,K)|0,n=n+Math.imul(m,W)|0,i=(i=i+Math.imul(m,Z)|0)+Math.imul(g,W)|0,o=o+Math.imul(g,Z)|0,n=n+Math.imul(p,X)|0,i=(i=i+Math.imul(p,$)|0)+Math.imul(v,X)|0,o=o+Math.imul(v,$)|0;var we=(l+(n=n+Math.imul(f,Y)|0)|0)+((8191&(i=(i=i+Math.imul(f,ee)|0)+Math.imul(c,Y)|0))<<13)|0;l=((o=o+Math.imul(c,ee)|0)+(i>>>13)|0)+(we>>>26)|0,we&=67108863,n=Math.imul(k,G),i=(i=Math.imul(k,H))+Math.imul(N,G)|0,o=Math.imul(N,H),n=n+Math.imul(A,V)|0,i=(i=i+Math.imul(A,K)|0)+Math.imul(E,V)|0,o=o+Math.imul(E,K)|0,n=n+Math.imul(w,W)|0,i=(i=i+Math.imul(w,Z)|0)+Math.imul(_,W)|0,o=o+Math.imul(_,Z)|0,n=n+Math.imul(m,X)|0,i=(i=i+Math.imul(m,$)|0)+Math.imul(g,X)|0,o=o+Math.imul(g,$)|0,n=n+Math.imul(p,Y)|0,i=(i=i+Math.imul(p,ee)|0)+Math.imul(v,Y)|0,o=o+Math.imul(v,ee)|0;var _e=(l+(n=n+Math.imul(f,re)|0)|0)+((8191&(i=(i=i+Math.imul(f,ne)|0)+Math.imul(c,re)|0))<<13)|0;l=((o=o+Math.imul(c,ne)|0)+(i>>>13)|0)+(_e>>>26)|0,_e&=67108863,n=Math.imul(x,G),i=(i=Math.imul(x,H))+Math.imul(I,G)|0,o=Math.imul(I,H),n=n+Math.imul(k,V)|0,i=(i=i+Math.imul(k,K)|0)+Math.imul(N,V)|0,o=o+Math.imul(N,K)|0,n=n+Math.imul(A,W)|0,i=(i=i+Math.imul(A,Z)|0)+Math.imul(E,W)|0,o=o+Math.imul(E,Z)|0,n=n+Math.imul(w,X)|0,i=(i=i+Math.imul(w,$)|0)+Math.imul(_,X)|0,o=o+Math.imul(_,$)|0,n=n+Math.imul(m,Y)|0,i=(i=i+Math.imul(m,ee)|0)+Math.imul(g,Y)|0,o=o+Math.imul(g,ee)|0,n=n+Math.imul(p,re)|0,i=(i=i+Math.imul(p,ne)|0)+Math.imul(v,re)|0,o=o+Math.imul(v,ne)|0;var Me=(l+(n=n+Math.imul(f,oe)|0)|0)+((8191&(i=(i=i+Math.imul(f,se)|0)+Math.imul(c,oe)|0))<<13)|0;l=((o=o+Math.imul(c,se)|0)+(i>>>13)|0)+(Me>>>26)|0,Me&=67108863,n=Math.imul(R,G),i=(i=Math.imul(R,H))+Math.imul(O,G)|0,o=Math.imul(O,H),n=n+Math.imul(x,V)|0,i=(i=i+Math.imul(x,K)|0)+Math.imul(I,V)|0,o=o+Math.imul(I,K)|0,n=n+Math.imul(k,W)|0,i=(i=i+Math.imul(k,Z)|0)+Math.imul(N,W)|0,o=o+Math.imul(N,Z)|0,n=n+Math.imul(A,X)|0,i=(i=i+Math.imul(A,$)|0)+Math.imul(E,X)|0,o=o+Math.imul(E,$)|0,n=n+Math.imul(w,Y)|0,i=(i=i+Math.imul(w,ee)|0)+Math.imul(_,Y)|0,o=o+Math.imul(_,ee)|0,n=n+Math.imul(m,re)|0,i=(i=i+Math.imul(m,ne)|0)+Math.imul(g,re)|0,o=o+Math.imul(g,ne)|0,n=n+Math.imul(p,oe)|0,i=(i=i+Math.imul(p,se)|0)+Math.imul(v,oe)|0,o=o+Math.imul(v,se)|0;var Ae=(l+(n=n+Math.imul(f,ue)|0)|0)+((8191&(i=(i=i+Math.imul(f,le)|0)+Math.imul(c,ue)|0))<<13)|0;l=((o=o+Math.imul(c,le)|0)+(i>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,n=Math.imul(B,G),i=(i=Math.imul(B,H))+Math.imul(D,G)|0,o=Math.imul(D,H),n=n+Math.imul(R,V)|0,i=(i=i+Math.imul(R,K)|0)+Math.imul(O,V)|0,o=o+Math.imul(O,K)|0,n=n+Math.imul(x,W)|0,i=(i=i+Math.imul(x,Z)|0)+Math.imul(I,W)|0,o=o+Math.imul(I,Z)|0,n=n+Math.imul(k,X)|0,i=(i=i+Math.imul(k,$)|0)+Math.imul(N,X)|0,o=o+Math.imul(N,$)|0,n=n+Math.imul(A,Y)|0,i=(i=i+Math.imul(A,ee)|0)+Math.imul(E,Y)|0,o=o+Math.imul(E,ee)|0,n=n+Math.imul(w,re)|0,i=(i=i+Math.imul(w,ne)|0)+Math.imul(_,re)|0,o=o+Math.imul(_,ne)|0,n=n+Math.imul(m,oe)|0,i=(i=i+Math.imul(m,se)|0)+Math.imul(g,oe)|0,o=o+Math.imul(g,se)|0,n=n+Math.imul(p,ue)|0,i=(i=i+Math.imul(p,le)|0)+Math.imul(v,ue)|0,o=o+Math.imul(v,le)|0;var Ee=(l+(n=n+Math.imul(f,fe)|0)|0)+((8191&(i=(i=i+Math.imul(f,ce)|0)+Math.imul(c,fe)|0))<<13)|0;l=((o=o+Math.imul(c,ce)|0)+(i>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,n=Math.imul(U,G),i=(i=Math.imul(U,H))+Math.imul(F,G)|0,o=Math.imul(F,H),n=n+Math.imul(B,V)|0,i=(i=i+Math.imul(B,K)|0)+Math.imul(D,V)|0,o=o+Math.imul(D,K)|0,n=n+Math.imul(R,W)|0,i=(i=i+Math.imul(R,Z)|0)+Math.imul(O,W)|0,o=o+Math.imul(O,Z)|0,n=n+Math.imul(x,X)|0,i=(i=i+Math.imul(x,$)|0)+Math.imul(I,X)|0,o=o+Math.imul(I,$)|0,n=n+Math.imul(k,Y)|0,i=(i=i+Math.imul(k,ee)|0)+Math.imul(N,Y)|0,o=o+Math.imul(N,ee)|0,n=n+Math.imul(A,re)|0,i=(i=i+Math.imul(A,ne)|0)+Math.imul(E,re)|0,o=o+Math.imul(E,ne)|0,n=n+Math.imul(w,oe)|0,i=(i=i+Math.imul(w,se)|0)+Math.imul(_,oe)|0,o=o+Math.imul(_,se)|0,n=n+Math.imul(m,ue)|0,i=(i=i+Math.imul(m,le)|0)+Math.imul(g,ue)|0,o=o+Math.imul(g,le)|0,n=n+Math.imul(p,fe)|0,i=(i=i+Math.imul(p,ce)|0)+Math.imul(v,fe)|0,o=o+Math.imul(v,ce)|0;var Se=(l+(n=n+Math.imul(f,pe)|0)|0)+((8191&(i=(i=i+Math.imul(f,ve)|0)+Math.imul(c,pe)|0))<<13)|0;l=((o=o+Math.imul(c,ve)|0)+(i>>>13)|0)+(Se>>>26)|0,Se&=67108863,n=Math.imul(U,V),i=(i=Math.imul(U,K))+Math.imul(F,V)|0,o=Math.imul(F,K),n=n+Math.imul(B,W)|0,i=(i=i+Math.imul(B,Z)|0)+Math.imul(D,W)|0,o=o+Math.imul(D,Z)|0,n=n+Math.imul(R,X)|0,i=(i=i+Math.imul(R,$)|0)+Math.imul(O,X)|0,o=o+Math.imul(O,$)|0,n=n+Math.imul(x,Y)|0,i=(i=i+Math.imul(x,ee)|0)+Math.imul(I,Y)|0,o=o+Math.imul(I,ee)|0,n=n+Math.imul(k,re)|0,i=(i=i+Math.imul(k,ne)|0)+Math.imul(N,re)|0,o=o+Math.imul(N,ne)|0,n=n+Math.imul(A,oe)|0,i=(i=i+Math.imul(A,se)|0)+Math.imul(E,oe)|0,o=o+Math.imul(E,se)|0,n=n+Math.imul(w,ue)|0,i=(i=i+Math.imul(w,le)|0)+Math.imul(_,ue)|0,o=o+Math.imul(_,le)|0,n=n+Math.imul(m,fe)|0,i=(i=i+Math.imul(m,ce)|0)+Math.imul(g,fe)|0,o=o+Math.imul(g,ce)|0;var ke=(l+(n=n+Math.imul(p,pe)|0)|0)+((8191&(i=(i=i+Math.imul(p,ve)|0)+Math.imul(v,pe)|0))<<13)|0;l=((o=o+Math.imul(v,ve)|0)+(i>>>13)|0)+(ke>>>26)|0,ke&=67108863,n=Math.imul(U,W),i=(i=Math.imul(U,Z))+Math.imul(F,W)|0,o=Math.imul(F,Z),n=n+Math.imul(B,X)|0,i=(i=i+Math.imul(B,$)|0)+Math.imul(D,X)|0,o=o+Math.imul(D,$)|0,n=n+Math.imul(R,Y)|0,i=(i=i+Math.imul(R,ee)|0)+Math.imul(O,Y)|0,o=o+Math.imul(O,ee)|0,n=n+Math.imul(x,re)|0,i=(i=i+Math.imul(x,ne)|0)+Math.imul(I,re)|0,o=o+Math.imul(I,ne)|0,n=n+Math.imul(k,oe)|0,i=(i=i+Math.imul(k,se)|0)+Math.imul(N,oe)|0,o=o+Math.imul(N,se)|0,n=n+Math.imul(A,ue)|0,i=(i=i+Math.imul(A,le)|0)+Math.imul(E,ue)|0,o=o+Math.imul(E,le)|0,n=n+Math.imul(w,fe)|0,i=(i=i+Math.imul(w,ce)|0)+Math.imul(_,fe)|0,o=o+Math.imul(_,ce)|0;var Ne=(l+(n=n+Math.imul(m,pe)|0)|0)+((8191&(i=(i=i+Math.imul(m,ve)|0)+Math.imul(g,pe)|0))<<13)|0;l=((o=o+Math.imul(g,ve)|0)+(i>>>13)|0)+(Ne>>>26)|0,Ne&=67108863,n=Math.imul(U,X),i=(i=Math.imul(U,$))+Math.imul(F,X)|0,o=Math.imul(F,$),n=n+Math.imul(B,Y)|0,i=(i=i+Math.imul(B,ee)|0)+Math.imul(D,Y)|0,o=o+Math.imul(D,ee)|0,n=n+Math.imul(R,re)|0,i=(i=i+Math.imul(R,ne)|0)+Math.imul(O,re)|0,o=o+Math.imul(O,ne)|0,n=n+Math.imul(x,oe)|0,i=(i=i+Math.imul(x,se)|0)+Math.imul(I,oe)|0,o=o+Math.imul(I,se)|0,n=n+Math.imul(k,ue)|0,i=(i=i+Math.imul(k,le)|0)+Math.imul(N,ue)|0,o=o+Math.imul(N,le)|0,n=n+Math.imul(A,fe)|0,i=(i=i+Math.imul(A,ce)|0)+Math.imul(E,fe)|0,o=o+Math.imul(E,ce)|0;var Pe=(l+(n=n+Math.imul(w,pe)|0)|0)+((8191&(i=(i=i+Math.imul(w,ve)|0)+Math.imul(_,pe)|0))<<13)|0;l=((o=o+Math.imul(_,ve)|0)+(i>>>13)|0)+(Pe>>>26)|0,Pe&=67108863,n=Math.imul(U,Y),i=(i=Math.imul(U,ee))+Math.imul(F,Y)|0,o=Math.imul(F,ee),n=n+Math.imul(B,re)|0,i=(i=i+Math.imul(B,ne)|0)+Math.imul(D,re)|0,o=o+Math.imul(D,ne)|0,n=n+Math.imul(R,oe)|0,i=(i=i+Math.imul(R,se)|0)+Math.imul(O,oe)|0,o=o+Math.imul(O,se)|0,n=n+Math.imul(x,ue)|0,i=(i=i+Math.imul(x,le)|0)+Math.imul(I,ue)|0,o=o+Math.imul(I,le)|0,n=n+Math.imul(k,fe)|0,i=(i=i+Math.imul(k,ce)|0)+Math.imul(N,fe)|0,o=o+Math.imul(N,ce)|0;var xe=(l+(n=n+Math.imul(A,pe)|0)|0)+((8191&(i=(i=i+Math.imul(A,ve)|0)+Math.imul(E,pe)|0))<<13)|0;l=((o=o+Math.imul(E,ve)|0)+(i>>>13)|0)+(xe>>>26)|0,xe&=67108863,n=Math.imul(U,re),i=(i=Math.imul(U,ne))+Math.imul(F,re)|0,o=Math.imul(F,ne),n=n+Math.imul(B,oe)|0,i=(i=i+Math.imul(B,se)|0)+Math.imul(D,oe)|0,o=o+Math.imul(D,se)|0,n=n+Math.imul(R,ue)|0,i=(i=i+Math.imul(R,le)|0)+Math.imul(O,ue)|0,o=o+Math.imul(O,le)|0,n=n+Math.imul(x,fe)|0,i=(i=i+Math.imul(x,ce)|0)+Math.imul(I,fe)|0,o=o+Math.imul(I,ce)|0;var Ie=(l+(n=n+Math.imul(k,pe)|0)|0)+((8191&(i=(i=i+Math.imul(k,ve)|0)+Math.imul(N,pe)|0))<<13)|0;l=((o=o+Math.imul(N,ve)|0)+(i>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,n=Math.imul(U,oe),i=(i=Math.imul(U,se))+Math.imul(F,oe)|0,o=Math.imul(F,se),n=n+Math.imul(B,ue)|0,i=(i=i+Math.imul(B,le)|0)+Math.imul(D,ue)|0,o=o+Math.imul(D,le)|0,n=n+Math.imul(R,fe)|0,i=(i=i+Math.imul(R,ce)|0)+Math.imul(O,fe)|0,o=o+Math.imul(O,ce)|0;var Te=(l+(n=n+Math.imul(x,pe)|0)|0)+((8191&(i=(i=i+Math.imul(x,ve)|0)+Math.imul(I,pe)|0))<<13)|0;l=((o=o+Math.imul(I,ve)|0)+(i>>>13)|0)+(Te>>>26)|0,Te&=67108863,n=Math.imul(U,ue),i=(i=Math.imul(U,le))+Math.imul(F,ue)|0,o=Math.imul(F,le),n=n+Math.imul(B,fe)|0,i=(i=i+Math.imul(B,ce)|0)+Math.imul(D,fe)|0,o=o+Math.imul(D,ce)|0;var Re=(l+(n=n+Math.imul(R,pe)|0)|0)+((8191&(i=(i=i+Math.imul(R,ve)|0)+Math.imul(O,pe)|0))<<13)|0;l=((o=o+Math.imul(O,ve)|0)+(i>>>13)|0)+(Re>>>26)|0,Re&=67108863,n=Math.imul(U,fe),i=(i=Math.imul(U,ce))+Math.imul(F,fe)|0,o=Math.imul(F,ce);var Oe=(l+(n=n+Math.imul(B,pe)|0)|0)+((8191&(i=(i=i+Math.imul(B,ve)|0)+Math.imul(D,pe)|0))<<13)|0;l=((o=o+Math.imul(D,ve)|0)+(i>>>13)|0)+(Oe>>>26)|0,Oe&=67108863;var Ce=(l+(n=Math.imul(U,pe))|0)+((8191&(i=(i=Math.imul(U,ve))+Math.imul(F,pe)|0))<<13)|0;return l=((o=Math.imul(F,ve))+(i>>>13)|0)+(Ce>>>26)|0,Ce&=67108863,u[0]=ye,u[1]=me,u[2]=ge,u[3]=be,u[4]=we,u[5]=_e,u[6]=Me,u[7]=Ae,u[8]=Ee,u[9]=Se,u[10]=ke,u[11]=Ne,u[12]=Pe,u[13]=xe,u[14]=Ie,u[15]=Te,u[16]=Re,u[17]=Oe,u[18]=Ce,0!==l&&(u[19]=l,r.length++),r};function a(e,t,r){return(new u).mulp(e,t,r)}function u(e,t){this.x=e,this.y=t}Math.imul||(o=i),m.prototype.mulTo=function(e,t){var r=this.length+e.length;return 10===this.length&&10===e.length?o(this,e,t):r<63?i(this,e,t):r<1024?function(e,t,r){r.negative=t.negative^e.negative,r.length=e.length+t.length;for(var n=0,i=0,o=0;o>>26)|0)>>>26,s&=67108863}r.words[o]=a,n=s,s=i}return 0!==n?r.words[o]=n:r.length--,r.strip()}(this,e,t):a(this,e,t)},u.prototype.makeRBT=function(e){for(var t=new Array(e),r=m.prototype._countBits(e)-1,n=0;n>=1;return n},u.prototype.permute=function(e,t,r,n,i,o){for(var s=0;s>>=1)i++;return 1<>>=13,r[2*o+1]=8191&i,i>>>=13;for(o=2*t;o>=26,t+=n/67108864|0,t+=i>>>26,this.words[r]=67108863&i}return 0!==t&&(this.words[r]=t,this.length++),this},m.prototype.muln=function(e){return this.clone().imuln(e)},m.prototype.sqr=function(){return this.mul(this)},m.prototype.isqr=function(){return this.imul(this.clone())},m.prototype.pow=function(e){var t=function(e){for(var t=new Array(e.bitLength()),r=0;r>>i}return t}(e);if(0===t.length)return new m(1);for(var r=this,n=0;n>>26-r<<26-r;if(0!=r){var o=0;for(t=0;t>>26-r}o&&(this.words[t]=o,this.length++)}if(0!=n){for(t=this.length-1;0<=t;t--)this.words[t+n]=this.words[t];for(t=0;t>>i<o)for(this.length-=o,u=0;u>>i,l=h&s}return a&&0!==l&&(a.words[a.length++]=l),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},m.prototype.ishrn=function(e,t,r){return y(0===this.negative),this.iushrn(e,t,r)},m.prototype.shln=function(e){return this.clone().ishln(e)},m.prototype.ushln=function(e){return this.clone().iushln(e)},m.prototype.shrn=function(e){return this.clone().ishrn(e)},m.prototype.ushrn=function(e){return this.clone().iushrn(e)},m.prototype.testn=function(e){y("number"==typeof e&&0<=e);var t=e%26,r=(e-t)/26,n=1<>>t<>26)-(a/67108864|0),this.words[n+r]=67108863&i}for(;n>26,this.words[n+r]=67108863&i;if(0===s)return this.strip();for(y(-1===s),n=s=0;n>26,this.words[n]=67108863&i;return this.negative=1,this.strip()},m.prototype._wordDiv=function(e,t){var r=(this.length,e.length),n=this.clone(),i=e,o=0|i.words[i.length-1];0!=(r=26-this._countBits(o))&&(i=i.ushln(r),n.iushln(r),o=0|i.words[i.length-1]);var s,a=n.length-i.length;if("mod"!==t){(s=new m(null)).length=1+a,s.words=new Array(s.length);for(var u=0;uthis.length||this.cmp(e)<0?{div:new m(0),mod:this}:1===e.length?"div"===t?{div:this.divn(e.words[0]),mod:null}:"mod"===t?{div:null,mod:new m(this.modn(e.words[0]))}:{div:this.divn(e.words[0]),mod:new m(this.modn(e.words[0]))}:this._wordDiv(e,t);var n,i,o},m.prototype.div=function(e){return this.divmod(e,"div",!1).div},m.prototype.mod=function(e){return this.divmod(e,"mod",!1).mod},m.prototype.umod=function(e){return this.divmod(e,"mod",!0).mod},m.prototype.divRound=function(e){var t=this.divmod(e);if(t.mod.isZero())return t.div;var r=0!==t.div.negative?t.mod.isub(e):t.mod,n=e.ushrn(1),i=e.andln(1),o=r.cmp(n);return o<0||1===i&&0===o?t.div:0!==t.div.negative?t.div.isubn(1):t.div.iaddn(1)},m.prototype.modn=function(e){y(e<=67108863);for(var t=(1<<26)%e,r=0,n=this.length-1;0<=n;n--)r=(t*r+(0|this.words[n]))%e;return r},m.prototype.idivn=function(e){y(e<=67108863);for(var t=0,r=this.length-1;0<=r;r--){var n=(0|this.words[r])+67108864*t;this.words[r]=n/e|0,t=n%e}return this.strip()},m.prototype.divn=function(e){return this.clone().idivn(e)},m.prototype.egcd=function(e){y(0===e.negative),y(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var n=new m(1),i=new m(0),o=new m(0),s=new m(1),a=0;t.isEven()&&r.isEven();)t.iushrn(1),r.iushrn(1),++a;for(var u=r.clone(),l=t.clone();!t.isZero();){for(var h=0,f=1;0==(t.words[0]&f)&&h<26;++h,f<<=1);if(0>>26,s&=67108863,this.words[o]=s}return 0!==i&&(this.words[o]=i,this.length++),this},m.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},m.prototype.cmpn=function(e){var t,r=e<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),1e.length)return 1;if(this.lengththis.n;);var n=t>>22,i=o}i>>>=22,0===(e.words[n-10]=i)&&10>>=26,e.words[r]=i,t=n}return 0!==t&&(e.words[e.length++]=t),e},m._prime=function(e){if(l[e])return l[e];var t;if("k256"===e)t=new v;else if("p224"===e)t=new g;else if("p192"===e)t=new b;else{if("p25519"!==e)throw new Error("Unknown prime "+e);t=new w}return l[e]=t},_.prototype._verify1=function(e){y(0===e.negative,"red works only with positives"),y(e.red,"red works only with red numbers")},_.prototype._verify2=function(e,t){y(0==(e.negative|t.negative),"red works only with positives"),y(e.red&&e.red===t.red,"red works only with red numbers")},_.prototype.imod=function(e){return this.prime?this.prime.ireduce(e)._forceRed(this):e.umod(this.m)._forceRed(this)},_.prototype.neg=function(e){return e.isZero()?e.clone():this.m.sub(e)._forceRed(this)},_.prototype.add=function(e,t){this._verify2(e,t);var r=e.add(t);return 0<=r.cmp(this.m)&&r.isub(this.m),r._forceRed(this)},_.prototype.iadd=function(e,t){this._verify2(e,t);var r=e.iadd(t);return 0<=r.cmp(this.m)&&r.isub(this.m),r},_.prototype.sub=function(e,t){this._verify2(e,t);var r=e.sub(t);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},_.prototype.isub=function(e,t){this._verify2(e,t);var r=e.isub(t);return r.cmpn(0)<0&&r.iadd(this.m),r},_.prototype.shl=function(e,t){return this._verify1(e),this.imod(e.ushln(t))},_.prototype.imul=function(e,t){return this._verify2(e,t),this.imod(e.imul(t))},_.prototype.mul=function(e,t){return this._verify2(e,t),this.imod(e.mul(t))},_.prototype.isqr=function(e){return this.imul(e,e.clone())},_.prototype.sqr=function(e){return this.mul(e,e)},_.prototype.sqrt=function(e){if(e.isZero())return e.clone();var t=this.m.andln(3);if(y(t%2==1),3===t){var r=this.m.add(new m(1)).iushrn(2);return this.pow(e,r)}for(var n=this.m.subn(1),i=0;!n.isZero()&&0===n.andln(1);)i++,n.iushrn(1);y(!n.isZero());var o=new m(1).toRed(this),s=o.redNeg(),a=this.m.subn(1).iushrn(1),u=this.m.bitLength();for(u=new m(2*u*u).toRed(this);0!==this.pow(u,a).cmp(s);)u.redIAdd(s);for(var l=this.pow(u,n),h=this.pow(e,n.addn(1).iushrn(1)),f=this.pow(e,n),c=i;0!==f.cmp(o);){for(var d=f,p=0;0!==d.cmp(o);p++)d=d.redSqr();y(p>l&1;i!==r[0]&&(i=this.sqr(i)),0!=h||0!==o?(o<<=1,o|=h,(4===++s||0===n&&0===l)&&(i=this.mul(i,r[o]),o=s=0)):s=0}a=26}return i},_.prototype.convertTo=function(e){var t=e.umod(this.m);return t===e?t.clone():t},_.prototype.convertFrom=function(e){var t=e.clone();return t.red=null,t},m.mont=function(e){return new M(e)},r(M,_),M.prototype.convertTo=function(e){return this.imod(e.ushln(this.shift))},M.prototype.convertFrom=function(e){var t=this.imod(e.mul(this.rinv));return t.red=null,t},M.prototype.imul=function(e,t){if(e.isZero()||t.isZero())return e.words[0]=0,e.length=1,e;var r=e.imul(t),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),o=i;return 0<=i.cmp(this.m)?o=i.isub(this.m):i.cmpn(0)<0&&(o=i.iadd(this.m)),o._forceRed(this)},M.prototype.mul=function(e,t){if(e.isZero()||t.isZero())return new m(0)._forceRed(this);var r=e.mul(t),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),o=i;return 0<=i.cmp(this.m)?o=i.isub(this.m):i.cmpn(0)<0&&(o=i.iadd(this.m)),o._forceRed(this)},M.prototype.invm=function(e){return this.imod(e._invmp(this.m).mul(this.r2))._forceRed(this)}}(void 0===e||e,this)},{buffer:11}],10:[function(e,t,r){(function(r){t.exports=function(e){var t=new Uint8Array(e);return(r.crypto||r.msCrypto).getRandomValues(t),t}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],11:[function(e,t,r){},{}],12:[function(e,t,r){"use strict";var n=r;n.version=e("../package.json").version,n.utils=e("./elliptic/utils"),n.rand=e("brorand"),n.hmacDRBG=e("./elliptic/hmac-drbg"),n.curve=e("./elliptic/curve"),n.curves=e("./elliptic/curves"),n.ec=e("./elliptic/ec"),n.eddsa=e("./elliptic/eddsa")},{"../package.json":26,"./elliptic/curve":15,"./elliptic/curves":18,"./elliptic/ec":19,"./elliptic/eddsa":22,"./elliptic/hmac-drbg":23,"./elliptic/utils":25,brorand:10}],13:[function(e,t,r){"use strict";var n=e("bn.js"),i=e("../../elliptic").utils,S=i.getNAF,k=i.getJSF,f=i.assert;function o(e,t){this.type=e,this.p=new n(t.p,16),this.red=t.prime?n.red(t.prime):n.mont(this.p),this.zero=new n(0).toRed(this.red),this.one=new n(1).toRed(this.red),this.two=new n(2).toRed(this.red),this.n=t.n&&new n(t.n,16),this.g=t.g&&this.pointFromJSON(t.g,t.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4);var r=this.n&&this.p.div(this.n);!r||0>1]):s.mixedAdd(i[-u-1>>1].neg()):0>1]):s.add(i[-u-1>>1].neg())}return"affine"===e.type?s.toP():s},o.prototype._wnafMulAdd=function(e,t,r,n,i){for(var o=this._wnafT1,s=this._wnafT2,a=this._wnafT3,u=0,l=0;l>1]:E<0&&(A=s[y][-E-1>>1].neg()),b="affine"===A.type?b.mixedAdd(A):b.add(A))}}for(l=0;l=Math.ceil((e.bitLength()+1)/t.step)},s.prototype._getDoubles=function(e,t){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var r=[this],n=this,i=0;i":""},l.prototype.isInfinity=function(){return this.inf},l.prototype.add=function(e){if(this.inf)return e;if(e.inf)return this;if(this.eq(e))return this.dbl();if(this.neg().eq(e))return this.curve.point(null,null);if(0===this.x.cmp(e.x))return this.curve.point(null,null);var t=this.y.redSub(e.y);0!==t.cmpn(0)&&(t=t.redMul(this.x.redSub(e.x).redInvm()));var r=t.redSqr().redISub(this.x).redISub(e.x),n=t.redMul(this.x.redSub(r)).redISub(this.y);return this.curve.point(r,n)},l.prototype.dbl=function(){if(this.inf)return this;var e=this.y.redAdd(this.y);if(0===e.cmpn(0))return this.curve.point(null,null);var t=this.curve.a,r=this.x.redSqr(),n=e.redInvm(),i=r.redAdd(r).redIAdd(r).redIAdd(t).redMul(n),o=i.redSqr().redISub(this.x.redAdd(this.x)),s=i.redMul(this.x.redSub(o)).redISub(this.y);return this.curve.point(o,s)},l.prototype.getX=function(){return this.x.fromRed()},l.prototype.getY=function(){return this.y.fromRed()},l.prototype.mul=function(e){return e=new _(e,16),this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve.endo?this.curve._endoWnafMulAdd([this],[e]):this.curve._wnafMul(this,e)},l.prototype.mulAdd=function(e,t,r){var n=[this,t],i=[e,r];return this.curve.endo?this.curve._endoWnafMulAdd(n,i):this.curve._wnafMulAdd(1,n,i,2)},l.prototype.jmulAdd=function(e,t,r){var n=[this,t],i=[e,r];return this.curve.endo?this.curve._endoWnafMulAdd(n,i,!0):this.curve._wnafMulAdd(1,n,i,2,!0)},l.prototype.eq=function(e){return this===e||this.inf===e.inf&&(this.inf||0===this.x.cmp(e.x)&&0===this.y.cmp(e.y))},l.prototype.neg=function(e){if(this.inf)return this;var t=this.curve.point(this.x,this.y.redNeg());if(e&&this.precomputed){var r=this.precomputed,n=function(e){return e.neg()};t.precomputed={naf:r.naf&&{wnd:r.naf.wnd,points:r.naf.points.map(n)},doubles:r.doubles&&{step:r.doubles.step,points:r.doubles.points.map(n)}}}return t},l.prototype.toJ=function(){return this.inf?this.curve.jpoint(null,null,null):this.curve.jpoint(this.x,this.y,this.curve.one)},o(h,s.BasePoint),u.prototype.jpoint=function(e,t,r){return new h(this,e,t,r)},h.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var e=this.z.redInvm(),t=e.redSqr(),r=this.x.redMul(t),n=this.y.redMul(t).redMul(e);return this.curve.point(r,n)},h.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},h.prototype.add=function(e){if(this.isInfinity())return e;if(e.isInfinity())return this;var t=e.z.redSqr(),r=this.z.redSqr(),n=this.x.redMul(t),i=e.x.redMul(r),o=this.y.redMul(t.redMul(e.z)),s=e.y.redMul(r.redMul(this.z)),a=n.redSub(i),u=o.redSub(s);if(0===a.cmpn(0))return 0!==u.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var l=a.redSqr(),h=l.redMul(a),f=n.redMul(l),c=u.redSqr().redIAdd(h).redISub(f).redISub(f),d=u.redMul(f.redISub(c)).redISub(o.redMul(h)),p=this.z.redMul(e.z).redMul(a);return this.curve.jpoint(c,d,p)},h.prototype.mixedAdd=function(e){if(this.isInfinity())return e.toJ();if(e.isInfinity())return this;var t=this.z.redSqr(),r=this.x,n=e.x.redMul(t),i=this.y,o=e.y.redMul(t).redMul(this.z),s=r.redSub(n),a=i.redSub(o);if(0===s.cmpn(0))return 0!==a.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var u=s.redSqr(),l=u.redMul(s),h=r.redMul(u),f=a.redSqr().redIAdd(l).redISub(h).redISub(h),c=a.redMul(h.redISub(f)).redISub(i.redMul(l)),d=this.z.redMul(s);return this.curve.jpoint(f,c,d)},h.prototype.dblp=function(e){if(0===e)return this;if(this.isInfinity())return this;if(!e)return this.dbl();if(this.curve.zeroA||this.curve.threeA){for(var t=this,r=0;r":""},h.prototype.isInfinity=function(){return 0===this.z.cmpn(0)}},{"../../elliptic":12,"../curve":15,"bn.js":9,inherits:39}],18:[function(e,t,r){"use strict";var n,i=r,o=e("hash.js"),s=e("../elliptic"),a=s.utils.assert;function u(e){"short"===e.type?this.curve=new s.curve.short(e):"edwards"===e.type?this.curve=new s.curve.edwards(e):this.curve=new s.curve.mont(e),this.g=this.curve.g,this.n=this.curve.n,this.hash=e.hash,a(this.g.validate(),"Invalid curve"),a(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}function l(t,r){Object.defineProperty(i,t,{configurable:!0,enumerable:!0,get:function(){var e=new u(r);return Object.defineProperty(i,t,{configurable:!0,enumerable:!0,value:e}),e}})}i.PresetCurve=u,l("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:o.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),l("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:o.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),l("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:o.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),l("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:o.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),l("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:o.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),l("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:o.sha256,gRed:!1,g:["9"]}),l("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:o.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});try{n=e("./precomputed/secp256k1")}catch(e){n=void 0}l("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:o.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",n]})},{"../elliptic":12,"./precomputed/secp256k1":24,"hash.js":27}],19:[function(e,t,r){"use strict";var y=e("bn.js"),m=e("../../elliptic"),d=m.utils.assert,n=e("./key"),g=e("./signature");function i(e){if(!(this instanceof i))return new i(e);"string"==typeof e&&(d(m.curves.hasOwnProperty(e),"Unknown curve "+e),e=m.curves[e]),e instanceof m.curves.PresetCurve&&(e={curve:e}),this.curve=e.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=e.curve.g,this.g.precompute(e.curve.n.bitLength()+1),this.hash=e.hash||e.curve.hash}(t.exports=i).prototype.keyPair=function(e){return new n(this,e)},i.prototype.keyFromPrivate=function(e,t){return n.fromPrivate(this,e,t)},i.prototype.keyFromPublic=function(e,t){return n.fromPublic(this,e,t)},i.prototype.genKeyPair=function(e){e=e||{};for(var t=new m.hmacDRBG({hash:this.hash,pers:e.pers,entropy:e.entropy||m.rand(this.hash.hmacStrength),nonce:this.n.toArray()}),r=this.n.byteLength(),n=this.n.sub(new y(2));;){var i=new y(t.generate(r));if(!(0>1;if(0<=s.cmp(this.curve.p.umod(this.curve.n))&&l)throw new Error("Unable to find sencond key candinate");s=l?this.curve.pointFromX(s.add(this.curve.n),u):this.curve.pointFromX(s,u);var h=t.r.invm(i),f=i.sub(o).mul(h).umod(i),c=a.mul(h).umod(i);return this.g.mulAdd(f,s,c)},i.prototype.getKeyRecoveryParam=function(e,t,r,n){if(null!==(t=new g(t,n)).recoveryParam)return t.recoveryParam;for(var i=0;i<4;i++){var o;try{o=this.recoverPubKey(e,t,i)}catch(e){continue}if(o.eq(r))return i}throw new Error("Unable to find valid recovery factor")}},{"../../elliptic":12,"./key":20,"./signature":21,"bn.js":9}],20:[function(e,t,r){"use strict";var n=e("bn.js"),i=e("../../elliptic").utils.assert;function o(e,t){this.ec=e,this.priv=null,this.pub=null,t.priv&&this._importPrivate(t.priv,t.privEnc),t.pub&&this._importPublic(t.pub,t.pubEnc)}(t.exports=o).fromPublic=function(e,t,r){return t instanceof o?t:new o(e,{pub:t,pubEnc:r})},o.fromPrivate=function(e,t,r){return t instanceof o?t:new o(e,{priv:t,privEnc:r})},o.prototype.validate=function(){var e=this.getPublic();return e.isInfinity()?{result:!1,reason:"Invalid public key"}:e.validate()?e.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}},o.prototype.getPublic=function(e,t){return"string"==typeof e&&(t=e,e=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),t?this.pub.encode(t,e):this.pub},o.prototype.getPrivate=function(e){return"hex"===e?this.priv.toString(16,2):this.priv},o.prototype._importPrivate=function(e,t){this.priv=new n(e,t||16),this.priv=this.priv.umod(this.ec.curve.n)},o.prototype._importPublic=function(e,t){if(e.x||e.y)return"mont"===this.ec.curve.type?i(e.x,"Need x coordinate"):"short"!==this.ec.curve.type&&"edwards"!==this.ec.curve.type||i(e.x&&e.y,"Need both x and y coordinate"),void(this.pub=this.ec.curve.point(e.x,e.y));this.pub=this.ec.curve.decodePoint(e,t)},o.prototype.derive=function(e){return e.mul(this.priv).getX()},o.prototype.sign=function(e,t,r){return this.ec.sign(e,this,t,r)},o.prototype.verify=function(e,t){return this.ec.verify(e,t,this)},o.prototype.inspect=function(){return""}},{"../../elliptic":12,"bn.js":9}],21:[function(e,t,r){"use strict";var a=e("bn.js"),u=e("../../elliptic").utils,n=u.assert;function i(e,t){if(e instanceof i)return e;this._importDER(e,t)||(n(e.r&&e.s,"Signature without r or s"),this.r=new a(e.r,16),this.s=new a(e.s,16),void 0===e.recoveryParam?this.recoveryParam=null:this.recoveryParam=e.recoveryParam)}function l(){this.place=0}function h(e,t){var r=e[t.place++];if(!(128&r))return r;for(var n=15&r,i=0,o=0,s=t.place;o>>3);for(e.push(128|r);--r;)e.push(t>>>(r<<3)&255);e.push(t)}}(t.exports=i).prototype._importDER=function(e,t){e=u.toArray(e,t);var r=new l;if(48!==e[r.place++])return!1;if(h(e,r)+r.place!==e.length)return!1;if(2!==e[r.place++])return!1;var n=h(e,r),i=e.slice(r.place,n+r.place);if(r.place+=n,2!==e[r.place++])return!1;var o=h(e,r);if(e.length!==o+r.place)return!1;var s=e.slice(r.place,o+r.place);return 0===i[0]&&128&i[1]&&(i=i.slice(1)),0===s[0]&&128&s[1]&&(s=s.slice(1)),this.r=new a(i),this.s=new a(s),!(this.recoveryParam=null)},i.prototype.toDER=function(e){var t=this.r.toArray(),r=this.s.toArray();for(128&t[0]&&(t=[0].concat(t)),128&r[0]&&(r=[0].concat(r)),t=s(t),r=s(r);!(r[0]||128&r[1]);)r=r.slice(1);var n=[2];f(n,t.length),(n=n.concat(t)).push(2),f(n,r.length);var i=n.concat(r),o=[48];return f(o,i.length),o=o.concat(i),u.encode(o,e)}},{"../../elliptic":12,"bn.js":9}],22:[function(e,t,r){arguments[4][14][0].apply(r,arguments)},{dup:14}],23:[function(e,t,r){"use strict";var n=e("hash.js"),s=e("../elliptic").utils,i=s.assert;function o(e){if(!(this instanceof o))return new o(e);this.hash=e.hash,this.predResist=!!e.predResist,this.outLen=this.hash.outSize,this.minEntropy=e.minEntropy||this.hash.hmacStrength,this.reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var t=s.toArray(e.entropy,e.entropyEnc),r=s.toArray(e.nonce,e.nonceEnc),n=s.toArray(e.pers,e.persEnc);i(t.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(t,r,n)}(t.exports=o).prototype._init=function(e,t,r){var n=e.concat(t).concat(r);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var i=0;i=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(e.concat(r||[])),this.reseed=1},o.prototype.generate=function(e,t,r,n){if(this.reseed>this.reseedInterval)throw new Error("Reseed is required");"string"!=typeof t&&(n=r,r=t,t=null),r&&(r=s.toArray(r,n),this._update(r));for(var i=[];i.length>8,s=255&i;o?r.push(o,s):r.push(s)}return r},n.zero2=o,n.toHex=s,n.encode=function(e,t){return"hex"===t?s(e):e},n.getNAF=function(e,t){for(var r=[],n=1<>1)-1>1)-s:s,i.isubn(o)}else o=0;r.push(o);for(var a=0!==i.cmpn(0)&&0===i.andln(n-1)?t+1:1,u=1;u=this._delta8){var r=(e=this.pending).length%this._delta8;this.pending=e.slice(e.length-r,e.length),0===this.pending.length&&(this.pending=null),e=i.join32(e,0,e.length-r,this.endian);for(var n=0;n>>24&255,n[i++]=e>>>16&255,n[i++]=e>>>8&255,n[i++]=255&e}else for(n[i++]=255&e,n[i++]=e>>>8&255,n[i++]=e>>>16&255,n[i++]=e>>>24&255,n[i++]=0,n[i++]=0,n[i++]=0,n[i++]=0,o=8;othis.blockSize&&(e=(new this.Hash).update(e).digest()),i(e.length<=this.blockSize);for(var t=e.length;t>>3},r.g1_256=function(e){return n(e,17)^n(e,19)^e>>>10}},{"../utils":38}],38:[function(e,t,r){"use strict";var l=e("minimalistic-assert"),n=e("inherits");function o(e){return(e>>>24|e>>>8&65280|e<<8&16711680|(255&e)<<24)>>>0}function i(e){return 1===e.length?"0"+e:e}function s(e){return 7===e.length?"0"+e:6===e.length?"00"+e:5===e.length?"000"+e:4===e.length?"0000"+e:3===e.length?"00000"+e:2===e.length?"000000"+e:1===e.length?"0000000"+e:e}r.inherits=n,r.toArray=function(e,t){if(Array.isArray(e))return e.slice();if(!e)return[];var r=[];if("string"==typeof e)if(t){if("hex"===t)for((e=e.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(e="0"+e),n=0;n>8,s=255&i;o?r.push(o,s):r.push(s)}else for(n=0;n>>0}return o},r.split32=function(e,t){for(var r=new Array(4*e.length),n=0,i=0;n>>24,r[i+1]=o>>>16&255,r[i+2]=o>>>8&255,r[i+3]=255&o):(r[i+3]=o>>>24,r[i+2]=o>>>16&255,r[i+1]=o>>>8&255,r[i]=255&o)}return r},r.rotr32=function(e,t){return e>>>t|e<<32-t},r.rotl32=function(e,t){return e<>>32-t},r.sum32=function(e,t){return e+t>>>0},r.sum32_3=function(e,t,r){return e+t+r>>>0},r.sum32_4=function(e,t,r,n){return e+t+r+n>>>0},r.sum32_5=function(e,t,r,n,i){return e+t+r+n+i>>>0},r.sum64=function(e,t,r,n){var i=e[t],o=n+e[t+1]>>>0,s=(o>>0,e[t+1]=o},r.sum64_hi=function(e,t,r,n){return(t+n>>>0>>0},r.sum64_lo=function(e,t,r,n){return t+n>>>0},r.sum64_4_hi=function(e,t,r,n,i,o,s,a){var u=0,l=t;return u+=(l=l+n>>>0)>>0)>>0)>>0},r.sum64_4_lo=function(e,t,r,n,i,o,s,a){return t+n+o+a>>>0},r.sum64_5_hi=function(e,t,r,n,i,o,s,a,u,l){var h=0,f=t;return h+=(f=f+n>>>0)>>0)>>0)>>0)>>0},r.sum64_5_lo=function(e,t,r,n,i,o,s,a,u,l){return t+n+o+a+l>>>0},r.rotr64_hi=function(e,t,r){return(t<<32-r|e>>>r)>>>0},r.rotr64_lo=function(e,t,r){return(e<<32-r|t>>>r)>>>0},r.shr64_hi=function(e,t,r){return e>>>r},r.shr64_lo=function(e,t,r){return(e<<32-r|t>>>r)>>>0}},{inherits:39,"minimalistic-assert":41}],39:[function(e,t,r){"function"==typeof Object.create?t.exports=function(e,t){t&&(e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:t.exports=function(e,t){if(t){e.super_=t;function r(){}r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}}},{}],40:[function(e,_,t){(function(b,w){!function(){"use strict";var e="object"==typeof window?window:{};!e.JS_SHA3_NO_NODE_JS&&"object"==typeof b&&b.versions&&b.versions.node&&(e=w);for(var t=!e.JS_SHA3_NO_COMMON_JS&&"object"==typeof _&&_.exports,u="0123456789abcdef".split(""),h=[0,8,16,24],he=[1,0,32898,0,32906,2147483648,2147516416,2147483648,32907,0,2147483649,0,2147516545,2147483648,32777,2147483648,138,0,136,0,2147516425,0,2147483658,0,2147516555,0,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,2147483648,32778,0,2147483658,2147483648,2147516545,2147483648,32896,2147483648,2147483649,0,2147516424,2147483648],r=[224,256,384,512],o=["hex","buffer","arrayBuffer","array"],s=function(t,r,n){return function(e){return new m(t,r,t).update(e)[n]()}},a=function(r,n,i){return function(e,t){return new m(r,n,t).update(e)[i]()}},n=function(e,t){var r=s(e,t,"hex");r.create=function(){return new m(e,t,e)},r.update=function(e){return r.create().update(e)};for(var n=0;n>5,this.byteCount=this.blockCount<<2,this.outputBlocks=r>>5,this.extraBytes=(31&r)>>3;for(var n=0;n<50;++n)this.s[n]=0}m.prototype.update=function(e){var t="string"!=typeof e;t&&e.constructor===ArrayBuffer&&(e=new Uint8Array(e));for(var r,n,i=e.length,o=this.blocks,s=this.byteCount,a=this.blockCount,u=0,l=this.s;u>2]|=e[u]<>2]|=n<>2]|=(192|n>>6)<>2]|=(224|n>>12)<>2]|=(240|n>>18)<>2]|=(128|n>>12&63)<>2]|=(128|n>>6&63)<>2]|=(128|63&n)<>2]|=this.padding[3&t],this.lastByteIndex===this.byteCount)for(e[0]=e[r],t=1;t>4&15]+u[15&e]+u[e>>12&15]+u[e>>8&15]+u[e>>20&15]+u[e>>16&15]+u[e>>28&15]+u[e>>24&15];s%t==0&&(g(r),o=0)}return i&&(e=r[o],0>4&15]+u[15&e]),1>12&15]+u[e>>8&15]),2>20&15]+u[e>>16&15])),a},m.prototype.buffer=m.prototype.arrayBuffer=function(){this.finalize();var e,t=this.blockCount,r=this.s,n=this.outputBlocks,i=this.extraBytes,o=0,s=0,a=this.outputBits>>3;e=i?new ArrayBuffer(n+1<<2):new ArrayBuffer(a);for(var u=new Uint32Array(e);s>8&255,u[e+2]=t>>16&255,u[e+3]=t>>24&255;a%r==0&&g(n)}return o&&(e=a<<2,t=n[s],0>8&255),2>16&255)),u};var g=function(e){var t,r,n,i,o,s,a,u,l,h,f,c,d,p,v,y,m,g,b,w,_,M,A,E,S,k,N,P,x,I,T,R,O,C,B,D,L,U,F,j,G,H,z,V,K,q,W,Z,J,X,$,Q,Y,ee,te,re,ne,ie,oe,se,ae,ue,le;for(n=0;n<48;n+=2)i=e[0]^e[10]^e[20]^e[30]^e[40],o=e[1]^e[11]^e[21]^e[31]^e[41],s=e[2]^e[12]^e[22]^e[32]^e[42],a=e[3]^e[13]^e[23]^e[33]^e[43],u=e[4]^e[14]^e[24]^e[34]^e[44],l=e[5]^e[15]^e[25]^e[35]^e[45],h=e[6]^e[16]^e[26]^e[36]^e[46],f=e[7]^e[17]^e[27]^e[37]^e[47],t=(c=e[8]^e[18]^e[28]^e[38]^e[48])^(s<<1|a>>>31),r=(d=e[9]^e[19]^e[29]^e[39]^e[49])^(a<<1|s>>>31),e[0]^=t,e[1]^=r,e[10]^=t,e[11]^=r,e[20]^=t,e[21]^=r,e[30]^=t,e[31]^=r,e[40]^=t,e[41]^=r,t=i^(u<<1|l>>>31),r=o^(l<<1|u>>>31),e[2]^=t,e[3]^=r,e[12]^=t,e[13]^=r,e[22]^=t,e[23]^=r,e[32]^=t,e[33]^=r,e[42]^=t,e[43]^=r,t=s^(h<<1|f>>>31),r=a^(f<<1|h>>>31),e[4]^=t,e[5]^=r,e[14]^=t,e[15]^=r,e[24]^=t,e[25]^=r,e[34]^=t,e[35]^=r,e[44]^=t,e[45]^=r,t=u^(c<<1|d>>>31),r=l^(d<<1|c>>>31),e[6]^=t,e[7]^=r,e[16]^=t,e[17]^=r,e[26]^=t,e[27]^=r,e[36]^=t,e[37]^=r,e[46]^=t,e[47]^=r,t=h^(i<<1|o>>>31),r=f^(o<<1|i>>>31),e[8]^=t,e[9]^=r,e[18]^=t,e[19]^=r,e[28]^=t,e[29]^=r,e[38]^=t,e[39]^=r,e[48]^=t,e[49]^=r,p=e[0],v=e[1],q=e[11]<<4|e[10]>>>28,W=e[10]<<4|e[11]>>>28,P=e[20]<<3|e[21]>>>29,x=e[21]<<3|e[20]>>>29,se=e[31]<<9|e[30]>>>23,ae=e[30]<<9|e[31]>>>23,H=e[40]<<18|e[41]>>>14,z=e[41]<<18|e[40]>>>14,C=e[2]<<1|e[3]>>>31,B=e[3]<<1|e[2]>>>31,y=e[13]<<12|e[12]>>>20,m=e[12]<<12|e[13]>>>20,Z=e[22]<<10|e[23]>>>22,J=e[23]<<10|e[22]>>>22,I=e[33]<<13|e[32]>>>19,T=e[32]<<13|e[33]>>>19,ue=e[42]<<2|e[43]>>>30,le=e[43]<<2|e[42]>>>30,ee=e[5]<<30|e[4]>>>2,te=e[4]<<30|e[5]>>>2,D=e[14]<<6|e[15]>>>26,L=e[15]<<6|e[14]>>>26,g=e[25]<<11|e[24]>>>21,b=e[24]<<11|e[25]>>>21,X=e[34]<<15|e[35]>>>17,$=e[35]<<15|e[34]>>>17,R=e[45]<<29|e[44]>>>3,O=e[44]<<29|e[45]>>>3,E=e[6]<<28|e[7]>>>4,S=e[7]<<28|e[6]>>>4,re=e[17]<<23|e[16]>>>9,ne=e[16]<<23|e[17]>>>9,U=e[26]<<25|e[27]>>>7,F=e[27]<<25|e[26]>>>7,w=e[36]<<21|e[37]>>>11,_=e[37]<<21|e[36]>>>11,Q=e[47]<<24|e[46]>>>8,Y=e[46]<<24|e[47]>>>8,V=e[8]<<27|e[9]>>>5,K=e[9]<<27|e[8]>>>5,k=e[18]<<20|e[19]>>>12,N=e[19]<<20|e[18]>>>12,ie=e[29]<<7|e[28]>>>25,oe=e[28]<<7|e[29]>>>25,j=e[38]<<8|e[39]>>>24,G=e[39]<<8|e[38]>>>24,M=e[48]<<14|e[49]>>>18,A=e[49]<<14|e[48]>>>18,e[0]=p^~y&g,e[1]=v^~m&b,e[10]=E^~k&P,e[11]=S^~N&x,e[20]=C^~D&U,e[21]=B^~L&F,e[30]=V^~q&Z,e[31]=K^~W&J,e[40]=ee^~re&ie,e[41]=te^~ne&oe,e[2]=y^~g&w,e[3]=m^~b&_,e[12]=k^~P&I,e[13]=N^~x&T,e[22]=D^~U&j,e[23]=L^~F&G,e[32]=q^~Z&X,e[33]=W^~J&$,e[42]=re^~ie&se,e[43]=ne^~oe&ae,e[4]=g^~w&M,e[5]=b^~_&A,e[14]=P^~I&R,e[15]=x^~T&O,e[24]=U^~j&H,e[25]=F^~G&z,e[34]=Z^~X&Q,e[35]=J^~$&Y,e[44]=ie^~se&ue,e[45]=oe^~ae&le,e[6]=w^~M&p,e[7]=_^~A&v,e[16]=I^~R&E,e[17]=T^~O&S,e[26]=j^~H&C,e[27]=G^~z&B,e[36]=X^~Q&V,e[37]=$^~Y&K,e[46]=se^~ue&ee,e[47]=ae^~le&te,e[8]=M^~p&y,e[9]=A^~v&m,e[18]=R^~E&k,e[19]=O^~S&N,e[28]=H^~C&D,e[29]=z^~B&L,e[38]=Q^~V&q,e[39]=Y^~K&W,e[48]=ue^~ee&re,e[49]=le^~te&ne,e[0]^=he[n],e[1]^=he[n+1]};if(t)_.exports=l;else for(c=0;c>>17|n<<15)^(n>>>19|n<<13)^n>>>10,a=((n=S[i-15])>>>7|n<<25)^(n>>>18|n<<14)^n>>>3,S[i]=(s+S[i-7]|0)+(a+S[i-16]|0)|0;for(i=0;i<64;i++)s=(((c>>>6|c<<26)^(c>>>11|c<<21)^(c>>>25|c<<7))+(c&d^~c&p)|0)+(v+(y[i]+S[i]|0)|0)|0,a=((u>>>2|u<<30)^(u>>>13|u<<19)^(u>>>22|u<<10))+(u&l^u&h^l&h)|0,v=p,p=d,d=c,c=f+s|0,f=h,h=l,l=u,u=s+a|0;m=m+u|0,g=g+l|0,b=b+h|0,w=w+f|0,_=_+c|0,M=M+d|0,A=A+p|0,E=E+v|0,t+=64,r-=64}}t(e);var r,n=e.length%64,i=e.length/536870912|0,o=e.length<<3,s=n<56?56:120,a=e.slice(e.length-n,e.length);for(a.push(128),r=1+n;r>>24&255),a.push(i>>>16&255),a.push(i>>>8&255),a.push(i>>>0&255),a.push(o>>>24&255),a.push(o>>>16&255),a.push(o>>>8&255),a.push(o>>>0&255),t(a),[m>>>24&255,m>>>16&255,m>>>8&255,m>>>0&255,g>>>24&255,g>>>16&255,g>>>8&255,g>>>0&255,b>>>24&255,b>>>16&255,b>>>8&255,b>>>0&255,w>>>24&255,w>>>16&255,w>>>8&255,w>>>0&255,_>>>24&255,_>>>16&255,_>>>8&255,_>>>0&255,M>>>24&255,M>>>16&255,M>>>8&255,M>>>0&255,A>>>24&255,A>>>16&255,A>>>8&255,A>>>0&255,E>>>24&255,E>>>16&255,E>>>8&255,E>>>0&255]}function x(e,t,r){var n;e=e.length<=64?e:l(e);var i=64+t.length+4,o=new Array(i),s=new Array(64),a=[];for(n=0;n<64;n++)o[n]=54;for(n=0;n>>32-t}function s(e,t){R(e,0,t,0,16);for(var r=8;0>0&255),f.push(c[e]>>8&255),f.push(c[e]>>16&255),f.push(c[e]>>24&255);var i=x(o,f,l);return h(null,1,i)}N(P)};P()}var t,B;t=this,B=2147483647,void 0!==o?r.exports=e:t&&(t.scrypt&&(t._scrypt=t.scrypt),t.scrypt=e)}).call(this,e("timers").setImmediate)},{timers:45}],44:[function(e,t,r){(function(y,e,t){!function(r,n){"use strict";if(!r.setImmediate){var e,i,t,o,s=1,a={},u=!1,l=r.document,h=Object.getPrototypeOf&&Object.getPrototypeOf(r);h=h&&h.setTimeout?h:r,e="[object process]"==={}.toString.call(r.process)?function(){var e=f(arguments);return y.nextTick(c(d,e)),e}:function(){if(r.postMessage&&!r.importScripts){var e=!0,t=r.onmessage;return r.onmessage=function(){e=!1},r.postMessage("","*"),r.onmessage=t,e}}()?(o="setImmediate$"+Math.random()+"$",r.addEventListener?r.addEventListener("message",v,!1):r.attachEvent("onmessage",v),function(){var e=f(arguments);return r.postMessage(o+e,"*"),e}):r.MessageChannel?((t=new MessageChannel).port1.onmessage=function(e){d(e.data)},function(){var e=f(arguments);return t.port2.postMessage(e),e}):l&&"onreadystatechange"in l.createElement("script")?(i=l.documentElement,function(){var e=f(arguments),t=l.createElement("script");return t.onreadystatechange=function(){d(e),t.onreadystatechange=null,i.removeChild(t),t=null},i.appendChild(t),e}):function(){var e=f(arguments);return setTimeout(c(d,e),0),e},h.setImmediate=e,h.clearImmediate=p}function f(e){return a[s]=c.apply(n,e),s++}function c(e){var t=[].slice.call(arguments,1);return function(){"function"==typeof e?e.apply(n,t):new Function(""+e)()}}function d(e){if(u)setTimeout(c(d,e),0);else{var t=a[e];if(t){u=!0;try{t()}finally{p(e),u=!1}}}}function p(e){delete a[e]}function v(e){e.source===r&&"string"==typeof e.data&&0===e.data.indexOf(o)&&d(+e.data.slice(o.length))}}("undefined"==typeof self?void 0===e?this:e:self)}).call(this,e("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},e("timers").clearImmediate)},{_process:42,timers:45}],45:[function(e,t,r){(function(e){t.exports={setImmediate:e.setImmediate}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],46:[function(e,i,t){(function(e){var t;if(e.crypto&&crypto.getRandomValues){var r=new Uint8Array(16);t=function(){return crypto.getRandomValues(r),r}}if(!t){var n=new Array(16);t=function(){for(var e,t=0;t<16;t++)0==(3&t)&&(e=4294967296*Math.random()),n[t]=e>>>((3&t)<<3)&255;return n}}i.exports=t}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],47:[function(e,t,r){for(var s=e("./rng"),i=[],o={},n=0;n<256;n++)i[n]=(n+256).toString(16).substr(1),o[i[n]]=n;function d(e,t){var r=t||0,n=i;return n[e[r++]]+n[e[r++]]+n[e[r++]]+n[e[r++]]+"-"+n[e[r++]]+n[e[r++]]+"-"+n[e[r++]]+n[e[r++]]+"-"+n[e[r++]]+n[e[r++]]+"-"+n[e[r++]]+n[e[r++]]+n[e[r++]]+n[e[r++]]+n[e[r++]]+n[e[r++]]}var a=s(),p=[1|a[0],a[1],a[2],a[3],a[4],a[5]],v=16383&(a[6]<<8|a[7]),y=0,m=0;function u(e,t,r){var n=t&&r||0;"string"==typeof e&&(t="binary"==e?new Array(16):null,e=null);var i=(e=e||{}).random||(e.rng||s)();if(i[6]=15&i[6]|64,i[8]=63&i[8]|128,t)for(var o=0;o<16;o++)t[n+o]=i[o];return t||d(i)}var l=u;l.v1=function(e,t,r){var n=t&&r||0,i=t||[],o=void 0!==(e=e||{}).clockseq?e.clockseq:v,s=void 0!==e.msecs?e.msecs:(new Date).getTime(),a=void 0!==e.nsecs?e.nsecs:m+1,u=s-y+(a-m)/1e4;if(u<0&&void 0===e.clockseq&&(o=o+1&16383),(u<0||y>>24&255,i[n++]=l>>>16&255,i[n++]=l>>>8&255,i[n++]=255&l;var h=s/4294967296*1e4&268435455;i[n++]=h>>>8&255,i[n++]=255&h,i[n++]=h>>>24&15|16,i[n++]=h>>>16&255,i[n++]=o>>>8|128,i[n++]=255&o;for(var f=e.node||p,c=0;c<6;c++)i[n+c]=f[c];return t||d(i)},l.v4=u,l.parse=function(e,t,r){var n=t&&r||0,i=0;for(t=t||[],e.toLowerCase().replace(/[0-9a-f]{2}/g,function(e){i<16&&(t[n+i++]=o[e])});i<16;)t[n+i++]=0;return t},l.unparse=d,t.exports=l},{"./rng":46}],48:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});try{t.exports.XMLHttpRequest=XMLHttpRequest}catch(e){console.log("Warning: XMLHttpRequest is not defined"),t.exports.XMLHttpRequest=null}},{}],49:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=e("../utils/properties"),i=(o.isProvider=function(e){return n.isType(e,"Provider")},o);function o(){n.setType(this,"Provider")}r.Provider=i},{"../utils/properties":73}],50:[function(e,t,r){"use strict";var n,i=this&&this.__extends||(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])},function(e,t){function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t};Object.defineProperty(r,"__esModule",{value:!0});var s=e("../utils/address"),a=e("../utils/bignumber"),u=e("../utils/bytes"),l=e("../constants"),h=e("../utils/hash"),f=e("../utils/networks"),c=e("../utils/properties"),d=e("../utils/rlp"),p=e("../utils/transaction"),v=e("../utils/utf8"),y=e("../utils/web"),m=o(e("../errors")),g=e("./abstract-provider");function b(e,t){var r={};for(var n in e)try{var i=e[n](t[n]);void 0!==i&&(r[n]=i)}catch(e){throw e.checkKey=n,e.checkValue=t[n],e}return r}function w(t,r){return function(e){return null==e?r:t(e)}}function _(r){return function(e){if(!Array.isArray(e))throw new Error("not an array");var t=[];return e.forEach(function(e){t.push(r(e))}),t}}function M(e,t){return"string"==typeof e&&(t||"0x"===e.substring(0,2)||(e="0x"+e),32===u.hexDataLength(e))?e.toLowerCase():(m.throwError("invalid hash",m.INVALID_ARGUMENT,{arg:"hash",value:e}),null)}function A(e){return a.bigNumberify(e).toNumber()}function E(e){if(!u.isHexString(e))throw new Error("invalid uint256");for(;e.length<66;)e="0x0"+e.substring(2);return e}function S(e){if(null==e)return"latest";if("earliest"===e)return"0x0";if("latest"===e||"pending"===e)return e;if("number"==typeof e)return u.hexStripZeros(u.hexlify(e));if(u.isHexString(e))return u.hexStripZeros(e);throw new Error("invalid blockTag")}var k={hash:M,blockHash:w(M,null),blockNumber:w(A,null),transactionIndex:w(A,null),confirmations:w(A,null),from:s.getAddress,gasPrice:a.bigNumberify,gasLimit:a.bigNumberify,to:w(s.getAddress,null),value:a.bigNumberify,nonce:A,data:u.hexlify,r:w(E),s:w(E),v:w(A),creates:w(s.getAddress,null),raw:w(u.hexlify)};function N(e){if(null!=e.gas&&null==e.gasLimit&&(e.gasLimit=e.gas),e.to&&a.bigNumberify(e.to).isZero()&&(e.to="0x0000000000000000000000000000000000000000"),null!=e.input&&null==e.data&&(e.data=e.input),null==e.to&&null==e.creates&&(e.creates=s.getContractAddress(e)),!e.raw&&e.v&&e.r&&e.s){var t=[u.stripZeros(u.hexlify(e.nonce)),u.stripZeros(u.hexlify(e.gasPrice)),u.stripZeros(u.hexlify(e.gasLimit)),e.to||"0x",u.stripZeros(u.hexlify(e.value||"0x")),u.hexlify(e.data||"0x"),u.stripZeros(u.hexlify(e.v||"0x")),u.stripZeros(u.hexlify(e.r)),u.stripZeros(u.hexlify(e.s))];e.raw=d.encode(t)}var r=b(k,e),n=e.networkId;return null!=e.chainId&&null==n&&null==r.v&&(n=e.chainId),u.isHexString(n)&&(n=a.bigNumberify(n).toNumber()),"number"!=typeof n&&null!=r.v&&((n=(r.v-35)/2)<0&&(n=0),n=parseInt(n)),"number"!=typeof n&&(n=0),r.networkId=n,r.blockHash&&"x"===r.blockHash.replace(/0/g,"")&&(r.blockHash=null),r}var P={hash:M,parentHash:M,number:A,timestamp:A,nonce:w(u.hexlify),difficulty:function(e){var t=a.bigNumberify(e);try{return t.toNumber()}catch(e){}return null},gasLimit:a.bigNumberify,gasUsed:a.bigNumberify,miner:s.getAddress,extraData:u.hexlify,transactions:w(_(M))},x=c.shallowCopy(P);function I(e,t){return null!=e.author&&null==e.miner&&(e.miner=e.author),b(t?x:P,e)}x.transactions=w(_(N));var T={from:w(s.getAddress),nonce:w(A),gasLimit:w(a.bigNumberify),gasPrice:w(a.bigNumberify),to:w(s.getAddress),value:w(a.bigNumberify),data:w(u.hexlify)};function R(e){return b(T,e)}var O={transactionLogIndex:w(A),transactionIndex:A,blockNumber:A,transactionHash:M,address:s.getAddress,topics:_(M),data:u.hexlify,logIndex:A,blockHash:M};var C={to:w(s.getAddress,null),from:w(s.getAddress,null),contractAddress:w(s.getAddress,null),transactionIndex:A,root:w(M),gasUsed:a.bigNumberify,logsBloom:w(u.hexlify),blockHash:M,transactionHash:M,logs:_(function(e){return b(O,e)}),blockNumber:A,confirmations:w(A,null),cumulativeGasUsed:a.bigNumberify,status:w(A)};function B(e){return Array.isArray(e)?e.forEach(function(e){B(e)}):null!=e&&M(e),e}var D={fromBlock:w(S,void 0),toBlock:w(S,void 0),address:w(s.getAddress,void 0),topics:w(B,void 0)},L={blockHash:w(M,void 0),address:w(s.getAddress,void 0),topics:w(B,void 0)};var U,F,j={blockNumber:w(A),blockHash:w(M),transactionIndex:A,removed:w(function(e){if("boolean"==typeof e)return e;if("string"==typeof e){if("true"===e)return!0;if("false"===e)return!1}throw new Error("invaid boolean - "+e)}),address:s.getAddress,data:(U=u.hexlify,F="0x",function(e){return e?U(e):F}),topics:_(M),transactionHash:M,logIndex:A};function G(e){return b(j,e)}function H(e){return e.map(function(e){return"string"==typeof e?e:Array.isArray(e)?(e.forEach(function(e){null!==e&&32!==u.hexDataLength(e)&&m.throwError("invalid topic",m.INVALID_ARGUMENT,{argument:"topic",value:e})}),e.join(",")):null===e?"":m.throwError("invalid topic value",m.INVALID_ARGUMENT,{argument:"topic",value:e})}).join("&")}function z(e){if("string"==typeof e){if(20===u.hexDataLength(e))return"address:"+s.getAddress(e);if(e=e.toLowerCase(),32===u.hexDataLength(e))return"tx:"+e;if(-1===e.indexOf(":"))return e}else{if(Array.isArray(e))return"filter::"+H(e);if(e&&"object"==typeof e)return"filter:"+(e.address||"")+":"+H(e.topics||[])}throw new Error("invalid event - "+e)}function V(){return(new Date).getTime()}var K,q=(K=g.Provider,i(W,K),W.prototype._doPoll=function(){var u=this;this.getBlockNumber().then(function(s){if(u._setFastBlockNumber(s),s!==u._lastBlockNumber){-2===u._emitted.block&&(u._emitted.block=s-1);for(var e=u._emitted.block+1;e<=s;e++)u.emit("block",e);u._emitted.block!==s&&(u._emitted.block=s,Object.keys(u._emitted).forEach(function(e){if("block"!==e){var t=u._emitted[e];"pending"!==t&&122*this._pollingInterval&&(this._fastQueryDate=e,this._fastBlockNumberPromise=this.getBlockNumber().then(function(e){return(null==t._fastBlockNumber||e>t._fastBlockNumber)&&(t._fastBlockNumber=e),t._fastBlockNumber})),this._fastBlockNumberPromise},W.prototype._setFastBlockNumber=function(e){null!=this._fastBlockNumber&&ethis._fastBlockNumber)&&(this._fastBlockNumber=e,this._fastBlockNumberPromise=Promise.resolve(e)))},W.prototype.waitForTransaction=function(n,i){var o=this;return null==i&&(i=1),this.getTransactionReceipt(n).then(function(e){return 0===i||e&&e.confirmations>=i?e:new Promise(function(t){var r=function(e){e.confirmations(e=e.substring(64)).length)return null;var r=v.toUtf8String("0x"+e.substring(0,2*t));return i.resolveName(r).then(function(e){return e!=n?null:r})})},W.checkTransactionResponse=function(e){return N(e)},W.prototype.doPoll=function(){},W.prototype.perform=function(e,t){return m.throwError(e+" not implemented",m.NOT_IMPLEMENTED,{operation:e}),null},W.prototype._startPending=function(){m.warn("WARNING: this provider does not support pending events")},W.prototype._stopPending=function(){},W.prototype._addEventListener=function(e,t,r){this._events.push({tag:z(e),listener:t,once:r}),"pending"===e&&this._startPending(),this.polling=!0},W.prototype.on=function(e,t){return this._addEventListener(e,t,!1),this},W.prototype.once=function(e,t){return this._addEventListener(e,t,!0),this},W.prototype.addEventListener=function(e,t){return this.on(e,t)},W.prototype.emit=function(e){for(var t=this,r=[],n=1;ne.length)throw new Error("invalid null");return{consumed:0,value:this.coerceFunc("null",void 0)}},N);function N(e,t){return S.call(this,e,"null","",t,!1)||this}var P,x=(i(I,P=_),I.prototype.encode=function(t){try{var e=u.bigNumberify(t);if(this.signed){var r=s.MaxUint256.maskn(8*this.size-1);if(e.gt(r))throw new Error("out-of-bounds");if(r=r.add(s.One).mul(s.NegativeOne),e.lt(r))throw new Error("out-of-bounds")}else if(e.lt(s.Zero)||e.gt(s.MaxUint256.maskn(8*this.size)))throw new Error("out-of-bounds");return e=e.toTwos(8*this.size).maskn(8*this.size),this.signed&&(e=e.fromTwos(8*this.size).toTwos(256)),h.padZeros(h.arrayify(e),32)}catch(e){l.throwError("invalid number value",l.INVALID_ARGUMENT,{arg:this.localName,coderType:this.name,value:t})}return null},I.prototype.decode=function(e,t){e.length>1]>>4&&(t[i]=t[i].toUpperCase()),8<=(15&r[i>>1])&&(t[i+1]=t[i+1].toUpperCase());return"0x"+t.join("")}for(var h={},f=0;f<10;f++)h[String(f)]=String(f);for(f=0;f<26;f++)h[String.fromCharCode(65+f)]=String(10+f);var c,d=Math.floor((c=9007199254740991,Math.log10?Math.log10(c):Math.log(c)/Math.LN10));function p(e){e=(e=e.toUpperCase()).substring(4)+e.substring(0,2)+"00";var t="";for(e.split("").forEach(function(e){t+=h[e]});t.length>=d;){var r=t.substring(0,d);t=parseInt(r,10)%97+t.substring(r.length)}for(var n=String(98-parseInt(t,10)%97);n.length<2;)n="0"+n;return n}function v(e){var t=null;if("string"!=typeof e&&u.throwError("invalid address",u.INVALID_ARGUMENT,{arg:"address",value:e}),e.match(/^(0x)?[0-9a-fA-F]{40}$/))"0x"!==e.substring(0,2)&&(e="0x"+e),t=l(e),e.match(/([A-F].*[a-f])|([a-f].*[A-F])/)&&t!==e&&u.throwError("bad address checksum",u.INVALID_ARGUMENT,{arg:"address",value:e});else if(e.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)){for(e.substring(2,4)!==p(e)&&u.throwError("bad icap checksum",u.INVALID_ARGUMENT,{arg:"address",value:e}),t=new i.default.BN(e.substring(4),36).toString(16);t.length<40;)t="0"+t;t=l("0x"+t)}else u.throwError("invalid address",u.INVALID_ARGUMENT,{arg:"address",value:e});return t}r.getAddress=v,r.getIcapAddress=function(e){for(var t=new i.default.BN(v(e).substring(2),16).toString(36).toUpperCase();t.length<30;)t="0"+t;return"XE"+p("XE00"+t)+t},r.getContractAddress=function(e){if(!e.from)throw new Error("missing from address");var t=e.nonce;return v("0x"+s.keccak256(a.encode([v(e.from),o.stripZeros(o.hexlify(t))])).substring(26))}},{"../errors":5,"./bytes":63,"./keccak256":70,"./rlp":75,"bn.js":9}],60:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=e("../utils/bytes");t.exports={decode:function(e){e=atob(e);for(var t=[],r=0;r>=8;for(;0>=8}for(var s=0;e[s]===this._leader&&s>4]+f[15&o])}return"0x"+n.join("")}return s.throwError("invalid hexlify value",null,{arg:"value",value:e}),"never"}function d(e,t){for(o(e)||s.throwError("invalid hex string",s.INVALID_ARGUMENT,{arg:"value",value:e});e.length<2*t+2;)e="0x0"+e.substring(2);return e}function p(e){var t=0,r="0x",n="0x";if(function(e){return e&&null!=e.r&&null!=e.s}(e)){null==e.v&&null==e.recoveryParam&&s.throwError("at least on of recoveryParam or v must be specified",s.INVALID_ARGUMENT,{argument:"signature",value:e}),r=d(e.r,32),n=d(e.s,32),"string"==typeof(t=e.v)&&(t=parseInt(t,16));var i=e.recoveryParam;null==i&&null!=e.v&&(i=1-t%2),t=27+i}else{var o=h(e);if(65!==o.length)throw new Error("invalid signature");r=c(o.slice(0,32)),n=c(o.slice(32,64)),27!==(t=o[64])&&28!==t&&(t=27+t%2)}return{r:r,s:n,recoveryParam:t-27,v:t}}r.hexlify=c,r.hexDataLength=function(e){return o(e)&&e.length%2==0?(e.length-2)/2:null},r.hexDataSlice=function(e,t,r){return o(e)||s.throwError("invalid hex data",s.INVALID_ARGUMENT,{arg:"value",value:e}),e.length%2!=0&&s.throwError("hex data length must be even",s.INVALID_ARGUMENT,{arg:"value",value:e}),t=2+2*t,null!=r?"0x"+e.substring(t,2+2*r):"0x"+e.substring(t)},r.hexStripZeros=function(e){for(o(e)||s.throwError("invalid hex string",s.INVALID_ARGUMENT,{arg:"value",value:e});3>3)]=e>>24-n&255;var i=h.computeHmac(h.SupportedAlgorithms.sha512,this.chainCode,r),o=i.slice(0,32),s=i.slice(32),a=null,u=null;return this.privateKey?a=w(l.bigNumberify(o).add(this.privateKey).mod(m)):u=new v.KeyPair(d.hexlify(o))._addPoint(this.publicKey),new A(_,a,u,this.fingerprint,w(s),e,this.depth+1,this.mnemonic,t)},A.prototype.derivePath=function(e){var t=e.split("/");if(0===t.length||"m"===t[0]&&0!==this.depth)throw new Error("invalid path - "+e);"m"===t[0]&&t.shift();for(var r=this,n=0;n>3]|=1<<7-i%8),i++}var u=32*r.length/3,l=b(r.length/3),h=d.arrayify(y.sha256(n.slice(0,u/8)))[0];if((h&=l)!=(n[n.length-1]&l))throw new Error("invalid checksum");return d.hexlify(n.slice(0,u/8))}function N(e,t){if((e=d.arrayify(e)).length%4!=0||e.length<16||32>8-n,r.push(e[i]&(1<<8-n)-1),n+=3);var o=d.arrayify(y.sha256(e))[0],s=e.length/4;return o&=b(s),r[r.length-1]<<=s,r[r.length-1]|=o>>8-s,(t=t||c.langEn).join(r.map(function(e){return t.getWord(e)}))}r.HDNode=M,r.fromExtendedKey=function(e){var t=a.Base58.decode(e);82===t.length&&u(t.slice(0,78))===e||f.throwError("invalid extended key",f.INVALID_ARGUMENT,{argument:"extendedKey",value:"[REDACTED]"});var r=t[4],n=d.hexlify(t.slice(5,9)),i=parseInt(d.hexlify(t.slice(9,13)).substring(2),16),o=d.hexlify(t.slice(13,45)),s=t.slice(45,78);switch(d.hexlify(t.slice(0,4))){case"0x0488b21e":case"0x043587cf":return new M(_,null,d.hexlify(s),n,o,i,r,null,null);case"0x0488ade4":case"0x04358394":if(0!==s[0])break;return new M(_,d.hexlify(s.slice(1)),null,n,o,i,r,null,null)}return f.throwError("invalid extended key",f.INVALID_ARGUMENT,{argument:"extendedKey",value:"[REDACTED]"})},r.fromMnemonic=function(e,t,r){return E(S(e=N(k(e,t),t),r),e)},r.fromSeed=function(e){return E(e,null)},r.mnemonicToSeed=S,r.mnemonicToEntropy=k,r.entropyToMnemonic=N,r.isValidMnemonic=function(e,t){try{return k(e,t),!0}catch(e){}return!1}},{"../errors":5,"../wordlists/lang-en":89,"./basex":61,"./bignumber":62,"./bytes":63,"./hmac":66,"./pbkdf2":72,"./properties":73,"./secp256k1":76,"./sha2":78,"./utf8":84}],66:[function(e,t,r){"use strict";var n=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t};Object.defineProperty(r,"__esModule",{value:!0});var i,o,s=n(e("hash.js")),a=e("../utils/bytes"),u=n(e("../errors"));(o=i=r.SupportedAlgorithms||(r.SupportedAlgorithms={})).sha256="sha256",o.sha512="sha512",r.computeHmac=function(e,t,r){return i[e]||u.throwError("unsupported algorithm "+e,u.UNSUPPORTED_OPERATION,{operation:"hmac",algorithm:e}),a.arrayify(s.hmac(s[e],a.arrayify(t)).update(a.arrayify(r)).digest())}},{"../errors":5,"../utils/bytes":63,"hash.js":27}],67:[function(e,t,r){"use strict";var n=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t};Object.defineProperty(r,"__esModule",{value:!0});var i=e("./abi-coder");r.AbiCoder=i.AbiCoder,r.defaultAbiCoder=i.defaultAbiCoder,r.formatSignature=i.formatSignature,r.formatParamType=i.formatParamType,r.parseSignature=i.parseSignature,r.parseParamType=i.parseParamType;var o=e("./address");r.getAddress=o.getAddress,r.getContractAddress=o.getContractAddress,r.getIcapAddress=o.getIcapAddress;var s=n(e("./base64"));r.base64=s;var a=e("./bignumber");r.BigNumber=a.BigNumber,r.bigNumberify=a.bigNumberify;var u=e("./bytes");r.arrayify=u.arrayify,r.concat=u.concat,r.hexDataSlice=u.hexDataSlice,r.hexDataLength=u.hexDataLength,r.hexlify=u.hexlify,r.hexStripZeros=u.hexStripZeros,r.hexZeroPad=u.hexZeroPad,r.isHexString=u.isHexString,r.joinSignature=u.joinSignature,r.padZeros=u.padZeros,r.splitSignature=u.splitSignature,r.stripZeros=u.stripZeros;var l=e("./hash");r.hashMessage=l.hashMessage,r.id=l.id,r.namehash=l.namehash;var h=n(e("./hdnode"));r.HDNode=h;var f=e("./interface");r.Interface=f.Interface;var c=e("./json-wallet");r.getJsonWalletAddress=c.getJsonWalletAddress;var d=e("./keccak256");r.keccak256=d.keccak256;var p=e("./sha2");r.sha256=p.sha256;var v=e("./solidity");r.solidityKeccak256=v.keccak256,r.solidityPack=v.pack,r.soliditySha256=v.sha256;var y=e("./random-bytes");r.randomBytes=y.randomBytes;var m=e("./networks");r.getNetwork=m.getNetwork;var g=e("./properties");r.checkProperties=g.checkProperties,r.deepCopy=g.deepCopy,r.defineReadOnly=g.defineReadOnly,r.resolveProperties=g.resolveProperties,r.shallowCopy=g.shallowCopy;var b=n(e("./rlp"));r.RLP=b;var w=e("./secp256k1");r.computeAddress=w.computeAddress,r.computePublicKey=w.computePublicKey,r.recoverAddress=w.recoverAddress,r.recoverPublicKey=w.recoverPublicKey,r.verifyMessage=w.verifyMessage;var _=e("./signing-key");r.SigningKey=_.SigningKey;var M=e("./transaction");r.populateTransaction=M.populateTransaction;var A=e("./transaction");r.parseTransaction=A.parse,r.serializeTransaction=A.serialize;var E=e("./utf8");r.formatBytes32String=E.formatBytes32String,r.parseBytes32String=E.parseBytes32String,r.toUtf8Bytes=E.toUtf8Bytes,r.toUtf8String=E.toUtf8String;var S=e("./units");r.commify=S.commify,r.formatEther=S.formatEther,r.parseEther=S.parseEther,r.formatUnits=S.formatUnits,r.parseUnits=S.parseUnits;var k=e("./web");r.fetchJson=k.fetchJson,r.poll=k.poll;var N=e("./hmac");r.SupportedAlgorithms=N.SupportedAlgorithms;var P=e("./utf8");r.UnicodeNormalizationForm=P.UnicodeNormalizationForm;var x=e("./wordlist");r.Wordlist=x.Wordlist},{"./abi-coder":58,"./address":59,"./base64":60,"./bignumber":62,"./bytes":63,"./hash":64,"./hdnode":65,"./hmac":66,"./interface":68,"./json-wallet":69,"./keccak256":70,"./networks":71,"./properties":73,"./random-bytes":74,"./rlp":75,"./secp256k1":76,"./sha2":78,"./signing-key":80,"./solidity":81,"./transaction":82,"./units":83,"./utf8":84,"./web":85,"./wordlist":86}],68:[function(e,t,r){"use strict";var n,i=this&&this.__extends||(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])},function(e,t){function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t};Object.defineProperty(r,"__esModule",{value:!0});function s(e){for(var t in p.setType(this,"Description"),e)p.defineReadOnly(this,t,p.deepCopy(e[t],!0));Object.freeze(this)}var a,u=e("./address"),f=e("./abi-coder"),l=e("./bignumber"),c=e("./bytes"),h=e("./hash"),d=e("./keccak256"),p=e("./properties"),v=o(e("../errors")),y=function(e){p.setType(this,"Indexed"),p.defineReadOnly(this,"hash",e)},m=(i(g,a=s),g.prototype.encode=function(e,t){c.isHexString(e)||v.throwError("invalid contract bytecode",v.INVALID_ARGUMENT,{arg:"bytecode",value:e}),v.checkArgumentCount(t.length,this.inputs.length," in Interface constructor");try{return e+f.defaultAbiCoder.encode(this.inputs,t).substring(2)}catch(e){v.throwError("invalid constructor argument",v.INVALID_ARGUMENT,{arg:e.arg,reason:e.reason,value:e.value})}return null},g);function g(){return null!==a&&a.apply(this,arguments)||this}var b,w=(i(_,b=s),_.prototype.encode=function(e){v.checkArgumentCount(e.length,this.inputs.length," in interface function "+this.name);try{return this.sighash+f.defaultAbiCoder.encode(this.inputs,e).substring(2)}catch(e){v.throwError("invalid input argument",v.INVALID_ARGUMENT,{arg:e.arg,reason:e.reason,value:e.value})}return null},_.prototype.decode=function(t){try{return f.defaultAbiCoder.decode(this.outputs,c.arrayify(t))}catch(e){v.throwError("invalid data for function output",v.INVALID_ARGUMENT,{arg:"data",errorArg:e.arg,errorValue:e.value,value:t,reason:e.reason})}},_);function _(){return null!==b&&b.apply(this,arguments)||this}var M,A=(i(E,M=s),E);function E(){return null!==M&&M.apply(this,arguments)||this}var S,k=(i(N,S=s),N.prototype.encodeTopics=function(e){var n=this;e.length>this.inputs.length&&v.throwError("too many arguments for "+this.name,v.UNEXPECTED_ARGUMENT,{maxCount:e.length,expectedCount:this.inputs.length});var i=[];for(this.anonymous||i.push(this.topic),e.forEach(function(e,t){var r=n.inputs[t];r.indexed?null==e?i.push(null):"string"===r.type?i.push(h.id(e)):"bytes"===r.type?i.push(d.keccak256(e)):-1!==r.type.indexOf("[")||"tuple"===r.type.substring(0,5)?v.throwError("filtering with tuples or arrays not implemented yet; bug us on GitHub",v.NOT_IMPLEMENTED,{operation:"filter(array|tuple)"}):("address"===r.type&&u.getAddress(e),i.push(c.hexZeroPad(c.hexlify(e),32).toLowerCase())):null!=e&&v.throwError("cannot filter non-indexed parameters; must be null",v.INVALID_ARGUMENT,{argument:r.name||t,value:e})});i.length&&null===i[i.length-1];)i.pop();return i},N.prototype.decode=function(e,r){null==r||this.anonymous||(r=r.slice(1));var n=[],i=[],o=[];if(this.inputs.forEach(function(e,t){e.indexed?"string"===e.type||"bytes"===e.type||0<=e.type.indexOf("[")||"tuple"===e.type.substring(0,5)?(n.push({type:"bytes32",name:e.name||""}),o.push(!0)):(n.push(e),o.push(!1)):(i.push(e),o.push(!1))}),null!=r)var s=f.defaultAbiCoder.decode(n,c.concat(r));var a=f.defaultAbiCoder.decode(i,c.arrayify(e)),u={},l=0,h=0;return this.inputs.forEach(function(e,t){e.indexed?null==r?u[t]=new y(null):o[t]?u[t]=new y(s[h++]):u[t]=s[h++]:u[t]=a[l++],e.name&&(u[e.name]=u[t])}),u.length=this.inputs.length,new A(u)},N);function N(){return null!==S&&S.apply(this,arguments)||this}var P,x=(i(I,P=s),I);function I(){return null!==P&&P.apply(this,arguments)||this}var T,R=(i(O,T=s),O);function O(){return null!==T&&T.apply(this,arguments)||this}function C(e){switch(e.type){case"constructor":var t=new m({inputs:e.inputs,payable:null==e.payable||!!e.payable});this.deployFunction||(this.deployFunction=t);break;case"function":var r=f.formatSignature(e).replace(/tuple/g,""),n=h.id(r).substring(0,10);t=new w({inputs:e.inputs,outputs:e.outputs,gas:e.gas,payable:null==e.payable||!!e.payable,type:e.constant?"call":"transaction",name:e.name,signature:r,sighash:n});e.name&&(null==this.functions[e.name]?p.defineReadOnly(this.functions,e.name,t):v.warn("WARNING: Multiple definitions for "+e.name)),null==this.functions[t.signature]&&p.defineReadOnly(this.functions,t.signature,t);break;case"event":r=f.formatSignature(e).replace(/tuple/g,""),t=new k({name:e.name,signature:r,inputs:e.inputs,topic:h.id(r),anonymous:!!e.anonymous});e.name&&null==this.events[e.name]&&p.defineReadOnly(this.events,e.name,t),null==this.events[t.signature]&&p.defineReadOnly(this.events,t.signature,t);break;case"fallback":break;default:v.warn("WARNING: unsupported ABI type - "+e.type)}}var B=(D.prototype.parseTransaction=function(e){var t=e.data.substring(0,10).toLowerCase();for(var r in this.functions)if(-1!==r.indexOf("(")){var n=this.functions[r];if(n.sighash===t){var i=f.defaultAbiCoder.decode(n.inputs,"0x"+e.data.substring(10));return new x({args:i,decode:n.decode,name:n.name,signature:n.signature,sighash:n.sighash,value:l.bigNumberify(e.value||"0")})}}return null},D.prototype.parseLog=function(e){for(var t in this.events)if(-1!==t.indexOf("(")){var r=this.events[t];if(!r.anonymous&&r.topic===e.topics[0])return new R({decode:r.decode,name:r.name,signature:r.signature,topic:r.topic,values:r.decode(e.data,e.topics)})}return null},D.isInterface=function(e){return p.isType(e,"Interface")},D.isIndexed=function(e){return p.isType(e,"Indexed")},D);function D(t){if(v.checkNew(this,D),"string"==typeof t){try{t=JSON.parse(t)}catch(e){v.throwError("could not parse ABI JSON",v.INVALID_ARGUMENT,{arg:"abi",errorMessage:e.message,value:t})}if(!Array.isArray(t))return v.throwError("invalid abi",v.INVALID_ARGUMENT,{arg:"abi",value:t}),null}p.defineReadOnly(this,"functions",{}),p.defineReadOnly(this,"events",{});var r=[];t.forEach(function(e){"string"==typeof e&&(e=f.parseSignature(e)),r.push(e)}),p.defineReadOnly(this,"abi",p.deepCopy(r,!0)),r.forEach(C,this),this.deployFunction||C.call(this,{type:"constructor",inputs:[]}),p.setType(this,"Interface")}r.Interface=B},{"../errors":5,"./abi-coder":58,"./address":59,"./bignumber":62,"./bytes":63,"./hash":64,"./keccak256":70,"./properties":73}],69:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=e("./address");function i(e){try{var t=JSON.parse(e)}catch(e){return!1}return t.encseed&&t.ethaddr}function o(e){try{var t=JSON.parse(e)}catch(e){return!1}return!(!t.version||parseInt(t.version)!==t.version||3!==parseInt(t.version))}r.isCrowdsaleWallet=i,r.isSecretStorageWallet=o,r.getJsonWalletAddress=function(e){if(i(e))try{return n.getAddress(JSON.parse(e).ethaddr)}catch(e){return null}if(o(e))try{return n.getAddress(JSON.parse(e).address)}catch(e){return null}return null}},{"./address":59}],70:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=e("js-sha3"),i=e("./bytes");r.keccak256=function(e){return"0x"+n.keccak_256(i.arrayify(e))}},{"./bytes":63,"js-sha3":40}],71:[function(e,t,r){"use strict";var n=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t};Object.defineProperty(r,"__esModule",{value:!0});var o=n(e("../errors"));function i(r){return function(e){var t=[];return e.InfuraProvider&&t.push(new e.InfuraProvider(r)),e.EtherscanProvider&&t.push(new e.EtherscanProvider(r)),0===t.length?null:e.FallbackProvider?new e.FallbackProvider(t):t[0]}}function s(t,r){return function(e){return e.JsonRpcProvider?new e.JsonRpcProvider(t,r):null}}var a={chainId:1,ensAddress:"0x314159265dd8dbb310642f98f50c066173c1259b",name:"homestead",_defaultProvider:i("homestead")},u={chainId:3,ensAddress:"0x112234455c3a32fd11230c42e7bccd4a84e02010",name:"ropsten",_defaultProvider:i("ropsten")},l={unspecified:{chainId:0,name:"unspecified"},homestead:a,mainnet:a,morden:{chainId:2,name:"morden"},ropsten:u,testnet:u,rinkeby:{chainId:4,ensAddress:"0xe7410170f87102DF0055eB195163A03B7F2Bff4A",name:"rinkeby",_defaultProvider:i("rinkeby")},goerli:{chainId:5,ensAddress:"0x112234455c3a32fd11230c42e7bccd4a84e02010",name:"goerli",_defaultProvider:i("goerli")},kovan:{chainId:42,name:"kovan",_defaultProvider:i("kovan")},classic:{chainId:61,name:"classic",_defaultProvider:s("https://web3.gastracker.io","classic")},classicTestnet:{chainId:62,name:"classicTestnet",_defaultProvider:s("https://web3.gastracker.io/morden","classicTestnet")}};r.getNetwork=function(e){if(null==e)return null;if("number"==typeof e){for(var t in l){var r=l[t];if(r.chainId===e)return{name:r.name,chainId:r.chainId,ensAddress:r.ensAddress||null,_defaultProvider:r._defaultProvider||null}}return{chainId:e,name:"unknown"}}if("string"==typeof e){var n=l[e];return null==n?null:{name:n.name,chainId:n.chainId,ensAddress:n.ensAddress,_defaultProvider:n._defaultProvider||null}}var i=l[e.name];return i?(0!==e.chainId&&e.chainId!==i.chainId&&o.throwError("network chainId mismatch",o.INVALID_ARGUMENT,{arg:"network",value:e}),{name:e.name,chainId:i.chainId,ensAddress:e.ensAddress||i.ensAddress||null,_defaultProvider:e._defaultProvider||i._defaultProvider||null}):("number"!=typeof e.chainId&&o.throwError("invalid network chainId",o.INVALID_ARGUMENT,{arg:"network",value:e}),e)}},{"../errors":5}],72:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var m=e("../utils/bytes"),g=e("./hmac");r.pbkdf2=function(e,t,r,n,i){var o;e=m.arrayify(e),t=m.arrayify(t);var s,a,u=1,l=new Uint8Array(n),h=new Uint8Array(t.length+4);h.set(t);for(var f=1;f<=u;f++){h[t.length]=f>>24&255,h[t.length+1]=f>>16&255,h[t.length+2]=f>>8&255,h[t.length+3]=255&f;var c=g.computeHmac(i,e,h);o||(o=c.length,a=new Uint8Array(o),s=n-((u=Math.ceil(n/o))-1)*o),a.set(c);for(var d=1;d>=8;return t}function i(e,t,r){for(var n=0,i=0;ie.length)throw new Error("too short");if(t+1+r+(n=i(e,t+1,r))>e.length)throw new Error("to short");return a(e,t,t+1+r,r+n)}if(192<=e[t]){if(t+1+(n=e[t]-192)>e.length)throw new Error("invalid rlp data");return a(e,t,t+1,n)}if(184<=e[t]){var r;if(t+1+(r=e[t]-183)>e.length)throw new Error("invalid rlp data");if(t+1+r+(n=i(e,t+1,r))>e.length)throw new Error("invalid rlp data");return{consumed:1+r+n,result:o.hexlify(e.slice(t+1+r,t+1+r+n))}}if(128<=e[t]){var n;if(t+1+(n=e[t]-128)>e.length)throw new Error("invalid rlp data");return{consumed:1+n,result:o.hexlify(e.slice(t+1,t+1+n))}}return{consumed:1,result:o.hexlify(e[t])}}r.encode=function(e){return o.hexlify(function t(e){if(Array.isArray(e)){var r=[];return e.forEach(function(e){r=r.concat(t(e))}),r.length<=55?(r.unshift(192+r.length),r):((n=s(r.length)).unshift(247+n.length),n.concat(r))}var n,i=Array.prototype.slice.call(o.arrayify(e));return 1===i.length&&i[0]<=127?i:i.length<=55?(i.unshift(128+i.length),i):((n=s(i.length)).unshift(183+n.length),n.concat(i))}(e))},r.decode=function(e){var t=o.arrayify(e),r=u(t,0);if(r.consumed!==t.length)throw new Error("invalid rlp data");return r.result}},{"./bytes":63}],76:[function(e,t,r){"use strict";var n=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t};Object.defineProperty(r,"__esModule",{value:!0});var i=e("elliptic"),o=e("./address"),s=e("./bytes"),a=e("./hash"),u=e("./keccak256"),l=e("./properties"),h=n(e("../errors")),f=null;function c(){return f=f||new i.ec("secp256k1")}var d=(p.prototype.sign=function(e){var t=c().keyFromPrivate(s.arrayify(this.privateKey)).sign(s.arrayify(e),{canonical:!0});return{recoveryParam:t.recoveryParam,r:s.hexZeroPad("0x"+t.r.toString(16),32),s:s.hexZeroPad("0x"+t.s.toString(16),32),v:27+t.recoveryParam}},p.prototype.computeSharedSecret=function(e){var t=c().keyFromPrivate(s.arrayify(this.privateKey)),r=c().keyFromPublic(s.arrayify(v(e)));return s.hexZeroPad("0x"+t.derive(r.getPublic()).toString(16),32)},p.prototype._addPoint=function(e){var t=c().keyFromPublic(s.arrayify(this.publicKey)),r=c().keyFromPublic(s.arrayify(e));return"0x"+t.pub.add(r.pub).encodeCompressed("hex")},p);function p(e){var t=c().keyFromPrivate(s.arrayify(e));l.defineReadOnly(this,"privateKey",s.hexlify(t.priv.toArray("be",32))),l.defineReadOnly(this,"publicKey","0x"+t.getPublic(!1,"hex")),l.defineReadOnly(this,"compressedPublicKey","0x"+t.getPublic(!0,"hex")),l.defineReadOnly(this,"publicKeyBytes",t.getPublic().encode(null,!0))}function v(e,t){var r=s.arrayify(e);if(32!==r.length)return 33===r.length?t?s.hexlify(r):"0x"+c().keyFromPublic(r).getPublic(!1,"hex"):65===r.length?t?"0x"+c().keyFromPublic(r).getPublic(!0,"hex"):s.hexlify(r):(h.throwError("invalid public or private key",h.INVALID_ARGUMENT,{arg:"key",value:"[REDACTED]"}),null);var n=new d(r);return t?n.compressedPublicKey:n.publicKey}function y(e){var t="0x"+v(e).slice(4);return o.getAddress("0x"+u.keccak256(t).substring(26))}function m(e,t){var r=s.splitSignature(t),n={r:s.arrayify(r.r),s:s.arrayify(r.s)};return"0x"+c().recoverPubKey(s.arrayify(e),n,r.recoveryParam).encode("hex",!1)}function g(e,t){return y(m(s.arrayify(e),t))}r.KeyPair=d,r.computePublicKey=v,r.computeAddress=y,r.recoverPublicKey=m,r.recoverAddress=g,r.verifyMessage=function(e,t){return g(a.hashMessage(e),t)}},{"../errors":5,"./address":59,"./bytes":63,"./hash":64,"./keccak256":70,"./properties":73,elliptic:12}],77:[function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}},i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t};Object.defineProperty(r,"__esModule",{value:!0});var T=n(e("aes-js")),m=n(e("scrypt-js")),R=n(e("uuid")),O=e("./signing-key"),g=i(e("./hdnode")),b=e("./address"),C=e("./bytes"),w=e("./pbkdf2"),B=e("./keccak256"),p=e("./utf8"),D=e("./random-bytes");function _(e){return"string"==typeof e&&"0x"!==e.substring(0,2)&&(e="0x"+e),C.arrayify(e)}function L(e,t){for(e=String(e);e.lengthe.maxLength&&s.throwError("invalid length for "+e.name,s.INVALID_ARGUMENT,{arg:"transaction"+e.name,value:t}),n.push(h.hexlify(t))}),null!=r.chainId&&0!==r.chainId&&(n.push(h.hexlify(r.chainId)),n.push("0x"),n.push("0x"));var t=d.encode(n);if(!e)return t;var i=h.splitSignature(e),o=27+i.recoveryParam;return 9===n.length&&(n.pop(),n.pop(),n.pop(),o+=2*r.chainId+8),n.push(h.hexlify(o)),n.push(h.stripZeros(h.arrayify(i.r))),n.push(h.stripZeros(h.arrayify(i.s))),d.encode(n)},r.parse=function(e){var t=d.decode(e);9!==t.length&&6!==t.length&&s.throwError("invalid raw transaction",s.INVALID_ARGUMENT,{arg:"rawTransactin",value:e});var r={nonce:p(t[0]).toNumber(),gasPrice:p(t[1]),gasLimit:p(t[2]),to:function(e){return"0x"===e?null:u.getAddress(e)}(t[3]),value:p(t[4]),data:t[5],chainId:0};if(6===t.length)return r;try{r.v=l.bigNumberify(t[6]).toNumber()}catch(e){return s.info(e),r}if(r.r=h.hexZeroPad(t[7],32),r.s=h.hexZeroPad(t[8],32),l.bigNumberify(r.r).isZero()&&l.bigNumberify(r.s).isZero())r.chainId=r.v,r.v=0;else{r.chainId=Math.floor((r.v-35)/2),r.chainId<0&&(r.chainId=0);var n=r.v-27,i=t.slice(0,6);0!==r.chainId&&(i.push(h.hexlify(r.chainId)),i.push("0x"),i.push("0x"),n-=2*r.chainId+8);var o=f.keccak256(d.encode(i));try{r.from=a.recoverAddress(o,{r:h.hexlify(r.r),s:h.hexlify(r.s),recoveryParam:n})}catch(e){s.info(e)}r.hash=f.keccak256(e)}return r},r.populateTransaction=function(e,t,r){o.Provider.isProvider(t)||s.throwError("missing provider",s.INVALID_ARGUMENT,{argument:"provider",value:t}),c.checkProperties(e,y);var n=c.shallowCopy(e);if(null!=n.to&&(n.to=t.resolveName(n.to)),null==n.gasPrice&&(n.gasPrice=t.getGasPrice()),null==n.nonce&&(n.nonce=t.getTransactionCount(r)),null==n.gasLimit){var i=c.shallowCopy(n);i.from=r,n.gasLimit=t.estimateGas(i)}return null==n.chainId&&(n.chainId=t.getNetwork().then(function(e){return e.chainId})),c.resolveProperties(n)}},{"../constants":3,"../errors":5,"../providers/abstract-provider":49,"./address":59,"./bignumber":62,"./bytes":63,"./keccak256":70,"./properties":73,"./rlp":75,"./secp256k1":76}],83:[function(e,t,r){"use strict";var n=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t};Object.defineProperty(r,"__esModule",{value:!0});var i,h=e("../constants"),f=n(e("../errors")),c=e("./bignumber"),o={};function s(e){return{decimals:e.length-1,tenPower:c.bigNumberify(e)}}function d(e){var t=o[String(e).toLowerCase()];if(!t&&"number"==typeof e&&parseInt(String(e))==e&&0<=e&&e<=256){for(var r="1",n=0;nr.decimals&&f.throwError("underflow occurred",f.NUMERIC_FAULT,{operation:"division",fault:"underflow"});s.length>6|192),r.push(63&i|128);else if(55296==(64512&i)){n++;var o=e.charCodeAt(n);if(n>=e.length||56320!=(64512&o))throw new Error("invalid utf-8 string");i=65536+((1023&i)<<10)+(1023&o),r.push(i>>18|240),r.push(i>>12&63|128),r.push(i>>6&63|128),r.push(63&i|128)}else r.push(i>>12|224),r.push(i>>6&63|128),r.push(63&i|128)}return h.arrayify(r)}function u(e,t){e=h.arrayify(e);for(var r="",n=0;n>7!=0){var o=null,s=null;if(192==(224&i))o=1,s=127;else if(224==(240&i))o=2,s=2047;else{if(240!=(248&i)){if(t)continue;if(128==(192&i))throw new Error("invalid utf8 byte sequence; unexpected continuation byte");throw new Error("invalid utf8 byte sequence; invalid prefix")}o=3,s=65535}if(n+o>e.length){if(!t)throw new Error("invalid utf8 byte sequence; too short");for(;n>6==2;n++);}else{for(var a=i&(1<<8-o-1)-1,u=0;u>10&1023),56320+(1023&a)));else if(!t)throw new Error("invalid utf8 byte sequence; invalid continuation byte")}}else r+=String.fromCharCode(i)}return r}(n=s=r.UnicodeNormalizationForm||(r.UnicodeNormalizationForm={})).current="",n.NFC="NFC",n.NFD="NFD",n.NFKC="NFKC",n.NFKD="NFKD",r.toUtf8Bytes=o,r.toUtf8String=u,r.formatBytes32String=function(e){var t=o(e);if(31l.ceiling&&(t=l.ceiling),s&&(a--,t=s,s=null),setTimeout(r,t)}return null},function(e){o()&&t(e)})}()})}},{"../errors":5,"./base64":60,"./properties":73,"./utf8":84,xmlhttprequest:48}],86:[function(o,e,s){(function(e){"use strict";Object.defineProperty(s,"__esModule",{value:!0});var i=o("../utils/hash"),t=o("../utils/properties");s.check=function(e){for(var t=[],r=0;r<2048;r++){var n=e.getWord(r);if(r!==e.getWordIndex(n))return"0x";t.push(n)}return i.id(t.join("\n")+"\n")};var r=(n.prototype.split=function(e){return e.toLowerCase().split(/ +/g)},n.prototype.join=function(e){return e.join(" ")},n);function n(e){t.defineReadOnly(this,"locale",e)}s.Wordlist=r,s.register=function(e,t){t=t||e.locale}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"../utils/hash":64,"../utils/properties":73}],87:[function(e,t,r){"use strict";var n,i=this&&this.__extends||(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])},function(e,t){function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t};Object.defineProperty(r,"__esModule",{value:!0});var s,a=e("./utils/bytes"),u=e("./utils/hash"),l=e("./utils/hdnode"),h=e("./utils/json-wallet"),f=e("./utils/keccak256"),c=e("./utils/properties"),d=e("./utils/random-bytes"),p=o(e("./utils/secret-storage")),v=e("./utils/signing-key"),y=e("./utils/transaction"),m=e("./abstract-signer"),g=e("./providers/abstract-provider"),b=o(e("./errors")),w=(s=m.Signer,i(_,s),Object.defineProperty(_.prototype,"address",{get:function(){return this.signingKey.address},enumerable:!0,configurable:!0}),Object.defineProperty(_.prototype,"mnemonic",{get:function(){return this.signingKey.mnemonic},enumerable:!0,configurable:!0}),Object.defineProperty(_.prototype,"path",{get:function(){return this.signingKey.path},enumerable:!0,configurable:!0}),Object.defineProperty(_.prototype,"privateKey",{get:function(){return this.signingKey.privateKey},enumerable:!0,configurable:!0}),_.prototype.connect=function(e){return g.Provider.isProvider(e)||b.throwError("invalid provider",b.INVALID_ARGUMENT,{argument:"provider",value:e}),new _(this.signingKey,e)},_.prototype.getAddress=function(){return Promise.resolve(this.address)},_.prototype.sign=function(e){var n=this;return c.resolveProperties(e).then(function(e){var t=y.serialize(e),r=n.signingKey.signDigest(f.keccak256(t));return y.serialize(e,r)})},_.prototype.signMessage=function(e){return Promise.resolve(a.joinSignature(this.signingKey.signDigest(u.hashMessage(e))))},_.prototype.getBalance=function(e){if(!this.provider)throw new Error("missing provider");return this.provider.getBalance(this.address,e)},_.prototype.getTransactionCount=function(e){if(!this.provider)throw new Error("missing provider");return this.provider.getTransactionCount(this.address,e)},_.prototype.sendTransaction=function(e){var t=this;if(!this.provider)throw new Error("missing provider");return null==e.nonce&&((e=c.shallowCopy(e)).nonce=this.getTransactionCount("pending")),y.populateTransaction(e,this.provider,this.address).then(function(e){return t.sign(e).then(function(e){return t.provider.sendTransaction(e)})})},_.prototype.encrypt=function(e,t,r){if("function"!=typeof t||r||(r=t,t={}),r&&"function"!=typeof r)throw new Error("invalid callback");return t=t||{},this.mnemonic&&((t=c.shallowCopy(t)).mnemonic=this.mnemonic,t.path=this.path),p.encrypt(this.privateKey,e,t,r)},_.createRandom=function(e){var t=d.randomBytes(16);(e=e||{}).extraEntropy&&(t=a.arrayify(f.keccak256(a.concat([t,e.extraEntropy])).substring(0,34)));var r=l.entropyToMnemonic(t,e.locale);return _.fromMnemonic(r,e.path,e.locale)},_.fromEncryptedJson=function(e,t,r){if(h.isCrowdsaleWallet(e))try{r&&r(0);var n=p.decryptCrowdsale(e,t);return r&&r(1),Promise.resolve(new _(n))}catch(e){return Promise.reject(e)}else if(h.isSecretStorageWallet(e))return p.decrypt(e,t,r).then(function(e){return new _(e)});return Promise.reject("invalid wallet JSON")},_.fromMnemonic=function(e,t,r){return t=t||l.defaultPath,new _(l.fromMnemonic(e,r).derivePath(t))},_);function _(e,t){var r=s.call(this)||this;return b.checkNew(r,_),v.SigningKey.isSigningKey(e)?c.defineReadOnly(r,"signingKey",e):c.defineReadOnly(r,"signingKey",new v.SigningKey(e)),c.defineReadOnly(r,"provider",t),r}r.Wallet=w},{"./abstract-signer":2,"./errors":5,"./providers/abstract-provider":49,"./utils/bytes":63,"./utils/hash":64,"./utils/hdnode":65,"./utils/json-wallet":69,"./utils/keccak256":70,"./utils/properties":73,"./utils/random-bytes":74,"./utils/secret-storage":77,"./utils/signing-key":80,"./utils/transaction":82}],88:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=e("../wordlists/lang-en").langEn;r.en=n},{"../wordlists/lang-en":89}],89:[function(e,t,r){"use strict";var n,i=this&&this.__extends||(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])},function(e,t){function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)});Object.defineProperty(r,"__esModule",{value:!0});var o,s=e("../utils/wordlist"),a="AbandonAbilityAbleAboutAboveAbsentAbsorbAbstractAbsurdAbuseAccessAccidentAccountAccuseAchieveAcidAcousticAcquireAcrossActActionActorActressActualAdaptAddAddictAddressAdjustAdmitAdultAdvanceAdviceAerobicAffairAffordAfraidAgainAgeAgentAgreeAheadAimAirAirportAisleAlarmAlbumAlcoholAlertAlienAllAlleyAllowAlmostAloneAlphaAlreadyAlsoAlterAlwaysAmateurAmazingAmongAmountAmusedAnalystAnchorAncientAngerAngleAngryAnimalAnkleAnnounceAnnualAnotherAnswerAntennaAntiqueAnxietyAnyApartApologyAppearAppleApproveAprilArchArcticAreaArenaArgueArmArmedArmorArmyAroundArrangeArrestArriveArrowArtArtefactArtistArtworkAskAspectAssaultAssetAssistAssumeAsthmaAthleteAtomAttackAttendAttitudeAttractAuctionAuditAugustAuntAuthorAutoAutumnAverageAvocadoAvoidAwakeAwareAwayAwesomeAwfulAwkwardAxisBabyBachelorBaconBadgeBagBalanceBalconyBallBambooBananaBannerBarBarelyBargainBarrelBaseBasicBasketBattleBeachBeanBeautyBecauseBecomeBeefBeforeBeginBehaveBehindBelieveBelowBeltBenchBenefitBestBetrayBetterBetweenBeyondBicycleBidBikeBindBiologyBirdBirthBitterBlackBladeBlameBlanketBlastBleakBlessBlindBloodBlossomBlouseBlueBlurBlushBoardBoatBodyBoilBombBoneBonusBookBoostBorderBoringBorrowBossBottomBounceBoxBoyBracketBrainBrandBrassBraveBreadBreezeBrickBridgeBriefBrightBringBriskBroccoliBrokenBronzeBroomBrotherBrownBrushBubbleBuddyBudgetBuffaloBuildBulbBulkBulletBundleBunkerBurdenBurgerBurstBusBusinessBusyButterBuyerBuzzCabbageCabinCableCactusCageCakeCallCalmCameraCampCanCanalCancelCandyCannonCanoeCanvasCanyonCapableCapitalCaptainCarCarbonCardCargoCarpetCarryCartCaseCashCasinoCastleCasualCatCatalogCatchCategoryCattleCaughtCauseCautionCaveCeilingCeleryCementCensusCenturyCerealCertainChairChalkChampionChangeChaosChapterChargeChaseChatCheapCheckCheeseChefCherryChestChickenChiefChildChimneyChoiceChooseChronicChuckleChunkChurnCigarCinnamonCircleCitizenCityCivilClaimClapClarifyClawClayCleanClerkCleverClickClientCliffClimbClinicClipClockClogCloseClothCloudClownClubClumpClusterClutchCoachCoastCoconutCodeCoffeeCoilCoinCollectColorColumnCombineComeComfortComicCommonCompanyConcertConductConfirmCongressConnectConsiderControlConvinceCookCoolCopperCopyCoralCoreCornCorrectCostCottonCouchCountryCoupleCourseCousinCoverCoyoteCrackCradleCraftCramCraneCrashCraterCrawlCrazyCreamCreditCreekCrewCricketCrimeCrispCriticCropCrossCrouchCrowdCrucialCruelCruiseCrumbleCrunchCrushCryCrystalCubeCultureCupCupboardCuriousCurrentCurtainCurveCushionCustomCuteCycleDadDamageDampDanceDangerDaringDashDaughterDawnDayDealDebateDebrisDecadeDecemberDecideDeclineDecorateDecreaseDeerDefenseDefineDefyDegreeDelayDeliverDemandDemiseDenialDentistDenyDepartDependDepositDepthDeputyDeriveDescribeDesertDesignDeskDespairDestroyDetailDetectDevelopDeviceDevoteDiagramDialDiamondDiaryDiceDieselDietDifferDigitalDignityDilemmaDinnerDinosaurDirectDirtDisagreeDiscoverDiseaseDishDismissDisorderDisplayDistanceDivertDivideDivorceDizzyDoctorDocumentDogDollDolphinDomainDonateDonkeyDonorDoorDoseDoubleDoveDraftDragonDramaDrasticDrawDreamDressDriftDrillDrinkDripDriveDropDrumDryDuckDumbDuneDuringDustDutchDutyDwarfDynamicEagerEagleEarlyEarnEarthEasilyEastEasyEchoEcologyEconomyEdgeEditEducateEffortEggEightEitherElbowElderElectricElegantElementElephantElevatorEliteElseEmbarkEmbodyEmbraceEmergeEmotionEmployEmpowerEmptyEnableEnactEndEndlessEndorseEnemyEnergyEnforceEngageEngineEnhanceEnjoyEnlistEnoughEnrichEnrollEnsureEnterEntireEntryEnvelopeEpisodeEqualEquipEraEraseErodeErosionErrorEruptEscapeEssayEssenceEstateEternalEthicsEvidenceEvilEvokeEvolveExactExampleExcessExchangeExciteExcludeExcuseExecuteExerciseExhaustExhibitExileExistExitExoticExpandExpectExpireExplainExposeExpressExtendExtraEyeEyebrowFabricFaceFacultyFadeFaintFaithFallFalseFameFamilyFamousFanFancyFantasyFarmFashionFatFatalFatherFatigueFaultFavoriteFeatureFebruaryFederalFeeFeedFeelFemaleFenceFestivalFetchFeverFewFiberFictionFieldFigureFileFilmFilterFinalFindFineFingerFinishFireFirmFirstFiscalFishFitFitnessFixFlagFlameFlashFlatFlavorFleeFlightFlipFloatFlockFloorFlowerFluidFlushFlyFoamFocusFogFoilFoldFollowFoodFootForceForestForgetForkFortuneForumForwardFossilFosterFoundFoxFragileFrameFrequentFreshFriendFringeFrogFrontFrostFrownFrozenFruitFuelFunFunnyFurnaceFuryFutureGadgetGainGalaxyGalleryGameGapGarageGarbageGardenGarlicGarmentGasGaspGateGatherGaugeGazeGeneralGeniusGenreGentleGenuineGestureGhostGiantGiftGiggleGingerGiraffeGirlGiveGladGlanceGlareGlassGlideGlimpseGlobeGloomGloryGloveGlowGlueGoatGoddessGoldGoodGooseGorillaGospelGossipGovernGownGrabGraceGrainGrantGrapeGrassGravityGreatGreenGridGriefGritGroceryGroupGrowGruntGuardGuessGuideGuiltGuitarGunGymHabitHairHalfHammerHamsterHandHappyHarborHardHarshHarvestHatHaveHawkHazardHeadHealthHeartHeavyHedgehogHeightHelloHelmetHelpHenHeroHiddenHighHillHintHipHireHistoryHobbyHockeyHoldHoleHolidayHollowHomeHoneyHoodHopeHornHorrorHorseHospitalHostHotelHourHoverHubHugeHumanHumbleHumorHundredHungryHuntHurdleHurryHurtHusbandHybridIceIconIdeaIdentifyIdleIgnoreIllIllegalIllnessImageImitateImmenseImmuneImpactImposeImproveImpulseInchIncludeIncomeIncreaseIndexIndicateIndoorIndustryInfantInflictInformInhaleInheritInitialInjectInjuryInmateInnerInnocentInputInquiryInsaneInsectInsideInspireInstallIntactInterestIntoInvestInviteInvolveIronIslandIsolateIssueItemIvoryJacketJaguarJarJazzJealousJeansJellyJewelJobJoinJokeJourneyJoyJudgeJuiceJumpJungleJuniorJunkJustKangarooKeenKeepKetchupKeyKickKidKidneyKindKingdomKissKitKitchenKiteKittenKiwiKneeKnifeKnockKnowLabLabelLaborLadderLadyLakeLampLanguageLaptopLargeLaterLatinLaughLaundryLavaLawLawnLawsuitLayerLazyLeaderLeafLearnLeaveLectureLeftLegLegalLegendLeisureLemonLendLengthLensLeopardLessonLetterLevelLiarLibertyLibraryLicenseLifeLiftLightLikeLimbLimitLinkLionLiquidListLittleLiveLizardLoadLoanLobsterLocalLockLogicLonelyLongLoopLotteryLoudLoungeLoveLoyalLuckyLuggageLumberLunarLunchLuxuryLyricsMachineMadMagicMagnetMaidMailMainMajorMakeMammalManManageMandateMangoMansionManualMapleMarbleMarchMarginMarineMarketMarriageMaskMassMasterMatchMaterialMathMatrixMatterMaximumMazeMeadowMeanMeasureMeatMechanicMedalMediaMelodyMeltMemberMemoryMentionMenuMercyMergeMeritMerryMeshMessageMetalMethodMiddleMidnightMilkMillionMimicMindMinimumMinorMinuteMiracleMirrorMiseryMissMistakeMixMixedMixtureMobileModelModifyMomMomentMonitorMonkeyMonsterMonthMoonMoralMoreMorningMosquitoMotherMotionMotorMountainMouseMoveMovieMuchMuffinMuleMultiplyMuscleMuseumMushroomMusicMustMutualMyselfMysteryMythNaiveNameNapkinNarrowNastyNationNatureNearNeckNeedNegativeNeglectNeitherNephewNerveNestNetNetworkNeutralNeverNewsNextNiceNightNobleNoiseNomineeNoodleNormalNorthNoseNotableNoteNothingNoticeNovelNowNuclearNumberNurseNutOakObeyObjectObligeObscureObserveObtainObviousOccurOceanOctoberOdorOffOfferOfficeOftenOilOkayOldOliveOlympicOmitOnceOneOnionOnlineOnlyOpenOperaOpinionOpposeOptionOrangeOrbitOrchardOrderOrdinaryOrganOrientOriginalOrphanOstrichOtherOutdoorOuterOutputOutsideOvalOvenOverOwnOwnerOxygenOysterOzonePactPaddlePagePairPalacePalmPandaPanelPanicPantherPaperParadeParentParkParrotPartyPassPatchPathPatientPatrolPatternPausePavePaymentPeacePeanutPearPeasantPelicanPenPenaltyPencilPeoplePepperPerfectPermitPersonPetPhonePhotoPhrasePhysicalPianoPicnicPicturePiecePigPigeonPillPilotPinkPioneerPipePistolPitchPizzaPlacePlanetPlasticPlatePlayPleasePledgePluckPlugPlungePoemPoetPointPolarPolePolicePondPonyPoolPopularPortionPositionPossiblePostPotatoPotteryPovertyPowderPowerPracticePraisePredictPreferPreparePresentPrettyPreventPricePridePrimaryPrintPriorityPrisonPrivatePrizeProblemProcessProduceProfitProgramProjectPromoteProofPropertyProsperProtectProudProvidePublicPuddingPullPulpPulsePumpkinPunchPupilPuppyPurchasePurityPurposePursePushPutPuzzlePyramidQualityQuantumQuarterQuestionQuickQuitQuizQuoteRabbitRaccoonRaceRackRadarRadioRailRainRaiseRallyRampRanchRandomRangeRapidRareRateRatherRavenRawRazorReadyRealReasonRebelRebuildRecallReceiveRecipeRecordRecycleReduceReflectReformRefuseRegionRegretRegularRejectRelaxReleaseReliefRelyRemainRememberRemindRemoveRenderRenewRentReopenRepairRepeatReplaceReportRequireRescueResembleResistResourceResponseResultRetireRetreatReturnReunionRevealReviewRewardRhythmRibRibbonRiceRichRideRidgeRifleRightRigidRingRiotRippleRiskRitualRivalRiverRoadRoastRobotRobustRocketRomanceRoofRookieRoomRoseRotateRoughRoundRouteRoyalRubberRudeRugRuleRunRunwayRuralSadSaddleSadnessSafeSailSaladSalmonSalonSaltSaluteSameSampleSandSatisfySatoshiSauceSausageSaveSayScaleScanScareScatterSceneSchemeSchoolScienceScissorsScorpionScoutScrapScreenScriptScrubSeaSearchSeasonSeatSecondSecretSectionSecuritySeedSeekSegmentSelectSellSeminarSeniorSenseSentenceSeriesServiceSessionSettleSetupSevenShadowShaftShallowShareShedShellSheriffShieldShiftShineShipShiverShockShoeShootShopShortShoulderShoveShrimpShrugShuffleShySiblingSickSideSiegeSightSignSilentSilkSillySilverSimilarSimpleSinceSingSirenSisterSituateSixSizeSkateSketchSkiSkillSkinSkirtSkullSlabSlamSleepSlenderSliceSlideSlightSlimSloganSlotSlowSlushSmallSmartSmileSmokeSmoothSnackSnakeSnapSniffSnowSoapSoccerSocialSockSodaSoftSolarSoldierSolidSolutionSolveSomeoneSongSoonSorrySortSoulSoundSoupSourceSouthSpaceSpareSpatialSpawnSpeakSpecialSpeedSpellSpendSphereSpiceSpiderSpikeSpinSpiritSplitSpoilSponsorSpoonSportSpotSpraySpreadSpringSpySquareSqueezeSquirrelStableStadiumStaffStageStairsStampStandStartStateStaySteakSteelStemStepStereoStickStillStingStockStomachStoneStoolStoryStoveStrategyStreetStrikeStrongStruggleStudentStuffStumbleStyleSubjectSubmitSubwaySuccessSuchSuddenSufferSugarSuggestSuitSummerSunSunnySunsetSuperSupplySupremeSureSurfaceSurgeSurpriseSurroundSurveySuspectSustainSwallowSwampSwapSwarmSwearSweetSwiftSwimSwingSwitchSwordSymbolSymptomSyrupSystemTableTackleTagTailTalentTalkTankTapeTargetTaskTasteTattooTaxiTeachTeamTellTenTenantTennisTentTermTestTextThankThatThemeThenTheoryThereTheyThingThisThoughtThreeThriveThrowThumbThunderTicketTideTigerTiltTimberTimeTinyTipTiredTissueTitleToastTobaccoTodayToddlerToeTogetherToiletTokenTomatoTomorrowToneTongueTonightToolToothTopTopicToppleTorchTornadoTortoiseTossTotalTouristTowardTowerTownToyTrackTradeTrafficTragicTrainTransferTrapTrashTravelTrayTreatTreeTrendTrialTribeTrickTriggerTrimTripTrophyTroubleTruckTrueTrulyTrumpetTrustTruthTryTubeTuitionTumbleTunaTunnelTurkeyTurnTurtleTwelveTwentyTwiceTwinTwistTwoTypeTypicalUglyUmbrellaUnableUnawareUncleUncoverUnderUndoUnfairUnfoldUnhappyUniformUniqueUnitUniverseUnknownUnlockUntilUnusualUnveilUpdateUpgradeUpholdUponUpperUpsetUrbanUrgeUsageUseUsedUsefulUselessUsualUtilityVacantVacuumVagueValidValleyValveVanVanishVaporVariousVastVaultVehicleVelvetVendorVentureVenueVerbVerifyVersionVeryVesselVeteranViableVibrantViciousVictoryVideoViewVillageVintageViolinVirtualVirusVisaVisitVisualVitalVividVocalVoiceVoidVolcanoVolumeVoteVoyageWageWagonWaitWalkWallWalnutWantWarfareWarmWarriorWashWaspWasteWaterWaveWayWealthWeaponWearWeaselWeatherWebWeddingWeekendWeirdWelcomeWestWetWhaleWhatWheatWheelWhenWhereWhipWhisperWideWidthWifeWildWillWinWindowWineWingWinkWinnerWinterWireWisdomWiseWishWitnessWolfWomanWonderWoodWoolWordWorkWorldWorryWorthWrapWreckWrestleWristWriteWrongYardYearYellowYouYoungYouthZebraZeroZoneZoo",u=null;function l(e){if(null==u&&(u=a.replace(/([A-Z])/g," $1").toLowerCase().substring(1).split(" "),"0x3c8acc1e7b08d8e76f9fda015ef48dc8c710a73cb7e0f77b2c18a9b5a7adde60"!==s.check(e)))throw u=null,new Error("BIP39 Wordlist for en (English) FAILED")}function h(){return o.call(this,"en")||this}var f=new(o=s.Wordlist,i(h,o),h.prototype.getWord=function(e){return l(this),u[e]},h.prototype.getWordIndex=function(e){return l(this),u.indexOf(e)},h);r.langEn=f,s.register(f)},{"../utils/wordlist":86}]},{},[7])(7)}); +!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).ethers=e()}}(function(){return function o(s,a,u){function l(t,e){if(!a[t]){if(!s[t]){var r="function"==typeof require&&require;if(!e&&r)return r(t,!0);if(h)return h(t,!0);var n=new Error("Cannot find module '"+t+"'");throw n.code="MODULE_NOT_FOUND",n}var i=a[t]={exports:{}};s[t][0].call(i.exports,function(e){return l(s[t][1][e]||e)},i,i.exports,o,s,a,u)}return a[t].exports}for(var h="function"==typeof require&&require,e=0;ei[e]||console.log.apply(console,t)}function h(){for(var e=[],t=0;t>4]+i[15&n])}return t.join("")}}),f={16:10,24:12,32:14},c=[1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145],d=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],l=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],h=[3328402341,4168907908,4000806809,4135287693,4294111757,3597364157,3731845041,2445657428,1613770832,33620227,3462883241,1445669757,3892248089,3050821474,1303096294,3967186586,2412431941,528646813,2311702848,4202528135,4026202645,2992200171,2387036105,4226871307,1101901292,3017069671,1604494077,1169141738,597466303,1403299063,3832705686,2613100635,1974974402,3791519004,1033081774,1277568618,1815492186,2118074177,4126668546,2211236943,1748251740,1369810420,3521504564,4193382664,3799085459,2883115123,1647391059,706024767,134480908,2512897874,1176707941,2646852446,806885416,932615841,168101135,798661301,235341577,605164086,461406363,3756188221,3454790438,1311188841,2142417613,3933566367,302582043,495158174,1479289972,874125870,907746093,3698224818,3025820398,1537253627,2756858614,1983593293,3084310113,2108928974,1378429307,3722699582,1580150641,327451799,2790478837,3117535592,0,3253595436,1075847264,3825007647,2041688520,3059440621,3563743934,2378943302,1740553945,1916352843,2487896798,2555137236,2958579944,2244988746,3151024235,3320835882,1336584933,3992714006,2252555205,2588757463,1714631509,293963156,2319795663,3925473552,67240454,4269768577,2689618160,2017213508,631218106,1269344483,2723238387,1571005438,2151694528,93294474,1066570413,563977660,1882732616,4059428100,1673313503,2008463041,2950355573,1109467491,537923632,3858759450,4260623118,3218264685,2177748300,403442708,638784309,3287084079,3193921505,899127202,2286175436,773265209,2479146071,1437050866,4236148354,2050833735,3362022572,3126681063,840505643,3866325909,3227541664,427917720,2655997905,2749160575,1143087718,1412049534,999329963,193497219,2353415882,3354324521,1807268051,672404540,2816401017,3160301282,369822493,2916866934,3688947771,1681011286,1949973070,336202270,2454276571,201721354,1210328172,3093060836,2680341085,3184776046,1135389935,3294782118,965841320,831886756,3554993207,4068047243,3588745010,2345191491,1849112409,3664604599,26054028,2983581028,2622377682,1235855840,3630984372,2891339514,4092916743,3488279077,3395642799,4101667470,1202630377,268961816,1874508501,4034427016,1243948399,1546530418,941366308,1470539505,1941222599,2546386513,3421038627,2715671932,3899946140,1042226977,2521517021,1639824860,227249030,260737669,3765465232,2084453954,1907733956,3429263018,2420656344,100860677,4160157185,470683154,3261161891,1781871967,2924959737,1773779408,394692241,2579611992,974986535,664706745,3655459128,3958962195,731420851,571543859,3530123707,2849626480,126783113,865375399,765172662,1008606754,361203602,3387549984,2278477385,2857719295,1344809080,2782912378,59542671,1503764984,160008576,437062935,1707065306,3622233649,2218934982,3496503480,2185314755,697932208,1512910199,504303377,2075177163,2824099068,1841019862,739644986],p=[2781242211,2230877308,2582542199,2381740923,234877682,3184946027,2984144751,1418839493,1348481072,50462977,2848876391,2102799147,434634494,1656084439,3863849899,2599188086,1167051466,2636087938,1082771913,2281340285,368048890,3954334041,3381544775,201060592,3963727277,1739838676,4250903202,3930435503,3206782108,4149453988,2531553906,1536934080,3262494647,484572669,2923271059,1783375398,1517041206,1098792767,49674231,1334037708,1550332980,4098991525,886171109,150598129,2481090929,1940642008,1398944049,1059722517,201851908,1385547719,1699095331,1587397571,674240536,2704774806,252314885,3039795866,151914247,908333586,2602270848,1038082786,651029483,1766729511,3447698098,2682942837,454166793,2652734339,1951935532,775166490,758520603,3000790638,4004797018,4217086112,4137964114,1299594043,1639438038,3464344499,2068982057,1054729187,1901997871,2534638724,4121318227,1757008337,0,750906861,1614815264,535035132,3363418545,3988151131,3201591914,1183697867,3647454910,1265776953,3734260298,3566750796,3903871064,1250283471,1807470800,717615087,3847203498,384695291,3313910595,3617213773,1432761139,2484176261,3481945413,283769337,100925954,2180939647,4037038160,1148730428,3123027871,3813386408,4087501137,4267549603,3229630528,2315620239,2906624658,3156319645,1215313976,82966005,3747855548,3245848246,1974459098,1665278241,807407632,451280895,251524083,1841287890,1283575245,337120268,891687699,801369324,3787349855,2721421207,3431482436,959321879,1469301956,4065699751,2197585534,1199193405,2898814052,3887750493,724703513,2514908019,2696962144,2551808385,3516813135,2141445340,1715741218,2119445034,2872807568,2198571144,3398190662,700968686,3547052216,1009259540,2041044702,3803995742,487983883,1991105499,1004265696,1449407026,1316239930,504629770,3683797321,168560134,1816667172,3837287516,1570751170,1857934291,4014189740,2797888098,2822345105,2754712981,936633572,2347923833,852879335,1133234376,1500395319,3084545389,2348912013,1689376213,3533459022,3762923945,3034082412,4205598294,133428468,634383082,2949277029,2398386810,3913789102,403703816,3580869306,2297460856,1867130149,1918643758,607656988,4049053350,3346248884,1368901318,600565992,2090982877,2632479860,557719327,3717614411,3697393085,2249034635,2232388234,2430627952,1115438654,3295786421,2865522278,3633334344,84280067,33027830,303828494,2747425121,1600795957,4188952407,3496589753,2434238086,1486471617,658119965,3106381470,953803233,334231800,3005978776,857870609,3151128937,1890179545,2298973838,2805175444,3056442267,574365214,2450884487,550103529,1233637070,4289353045,2018519080,2057691103,2399374476,4166623649,2148108681,387583245,3664101311,836232934,3330556482,3100665960,3280093505,2955516313,2002398509,287182607,3413881008,4238890068,3597515707,975967766],v=[1671808611,2089089148,2006576759,2072901243,4061003762,1807603307,1873927791,3310653893,810573872,16974337,1739181671,729634347,4263110654,3613570519,2883997099,1989864566,3393556426,2191335298,3376449993,2106063485,4195741690,1508618841,1204391495,4027317232,2917941677,3563566036,2734514082,2951366063,2629772188,2767672228,1922491506,3227229120,3082974647,4246528509,2477669779,644500518,911895606,1061256767,4144166391,3427763148,878471220,2784252325,3845444069,4043897329,1905517169,3631459288,827548209,356461077,67897348,3344078279,593839651,3277757891,405286936,2527147926,84871685,2595565466,118033927,305538066,2157648768,3795705826,3945188843,661212711,2999812018,1973414517,152769033,2208177539,745822252,439235610,455947803,1857215598,1525593178,2700827552,1391895634,994932283,3596728278,3016654259,695947817,3812548067,795958831,2224493444,1408607827,3513301457,0,3979133421,543178784,4229948412,2982705585,1542305371,1790891114,3410398667,3201918910,961245753,1256100938,1289001036,1491644504,3477767631,3496721360,4012557807,2867154858,4212583931,1137018435,1305975373,861234739,2241073541,1171229253,4178635257,33948674,2139225727,1357946960,1011120188,2679776671,2833468328,1374921297,2751356323,1086357568,2408187279,2460827538,2646352285,944271416,4110742005,3168756668,3066132406,3665145818,560153121,271589392,4279952895,4077846003,3530407890,3444343245,202643468,322250259,3962553324,1608629855,2543990167,1154254916,389623319,3294073796,2817676711,2122513534,1028094525,1689045092,1575467613,422261273,1939203699,1621147744,2174228865,1339137615,3699352540,577127458,712922154,2427141008,2290289544,1187679302,3995715566,3100863416,339486740,3732514782,1591917662,186455563,3681988059,3762019296,844522546,978220090,169743370,1239126601,101321734,611076132,1558493276,3260915650,3547250131,2901361580,1655096418,2443721105,2510565781,3828863972,2039214713,3878868455,3359869896,928607799,1840765549,2374762893,3580146133,1322425422,2850048425,1823791212,1459268694,4094161908,3928346602,1706019429,2056189050,2934523822,135794696,3134549946,2022240376,628050469,779246638,472135708,2800834470,3032970164,3327236038,3894660072,3715932637,1956440180,522272287,1272813131,3185336765,2340818315,2323976074,1888542832,1044544574,3049550261,1722469478,1222152264,50660867,4127324150,236067854,1638122081,895445557,1475980887,3117443513,2257655686,3243809217,489110045,2662934430,3778599393,4162055160,2561878936,288563729,1773916777,3648039385,2391345038,2493985684,2612407707,505560094,2274497927,3911240169,3460925390,1442818645,678973480,3749357023,2358182796,2717407649,2306869641,219617805,3218761151,3862026214,1120306242,1756942440,1103331905,2578459033,762796589,252780047,2966125488,1425844308,3151392187,372911126],y=[1667474886,2088535288,2004326894,2071694838,4075949567,1802223062,1869591006,3318043793,808472672,16843522,1734846926,724270422,4278065639,3621216949,2880169549,1987484396,3402253711,2189597983,3385409673,2105378810,4210693615,1499065266,1195886990,4042263547,2913856577,3570689971,2728590687,2947541573,2627518243,2762274643,1920112356,3233831835,3082273397,4261223649,2475929149,640051788,909531756,1061110142,4160160501,3435941763,875846760,2779116625,3857003729,4059105529,1903268834,3638064043,825316194,353713962,67374088,3351728789,589522246,3284360861,404236336,2526454071,84217610,2593830191,117901582,303183396,2155911963,3806477791,3958056653,656894286,2998062463,1970642922,151591698,2206440989,741110872,437923380,454765878,1852748508,1515908788,2694904667,1381168804,993742198,3604373943,3014905469,690584402,3823320797,791638366,2223281939,1398011302,3520161977,0,3991743681,538992704,4244381667,2981218425,1532751286,1785380564,3419096717,3200178535,960056178,1246420628,1280103576,1482221744,3486468741,3503319995,4025428677,2863326543,4227536621,1128514950,1296947098,859002214,2240123921,1162203018,4193849577,33687044,2139062782,1347481760,1010582648,2678045221,2829640523,1364325282,2745433693,1077985408,2408548869,2459086143,2644360225,943212656,4126475505,3166494563,3065430391,3671750063,555836226,269496352,4294908645,4092792573,3537006015,3452783745,202118168,320025894,3974901699,1600119230,2543297077,1145359496,387397934,3301201811,2812801621,2122220284,1027426170,1684319432,1566435258,421079858,1936954854,1616945344,2172753945,1330631070,3705438115,572679748,707427924,2425400123,2290647819,1179044492,4008585671,3099120491,336870440,3739122087,1583276732,185277718,3688593069,3772791771,842159716,976899700,168435220,1229577106,101059084,606366792,1549591736,3267517855,3553849021,2897014595,1650632388,2442242105,2509612081,3840161747,2038008818,3890688725,3368567691,926374254,1835907034,2374863873,3587531953,1313788572,2846482505,1819063512,1448540844,4109633523,3941213647,1701162954,2054852340,2930698567,134748176,3132806511,2021165296,623210314,774795868,471606328,2795958615,3031746419,3334885783,3907527627,3722280097,1953799400,522133822,1263263126,3183336545,2341176845,2324333839,1886425312,1044267644,3048588401,1718004428,1212733584,50529542,4143317495,235803164,1633788866,892690282,1465383342,3115962473,2256965911,3250673817,488449850,2661202215,3789633753,4177007595,2560144171,286339874,1768537042,3654906025,2391705863,2492770099,2610673197,505291324,2273808917,3924369609,3469625735,1431699370,673740880,3755965093,2358021891,2711746649,2307489801,218961690,3217021541,3873845719,1111672452,1751693520,1094828930,2576986153,757954394,252645662,2964376443,1414855848,3149649517,370555436],m=[1374988112,2118214995,437757123,975658646,1001089995,530400753,2902087851,1273168787,540080725,2910219766,2295101073,4110568485,1340463100,3307916247,641025152,3043140495,3736164937,632953703,1172967064,1576976609,3274667266,2169303058,2370213795,1809054150,59727847,361929877,3211623147,2505202138,3569255213,1484005843,1239443753,2395588676,1975683434,4102977912,2572697195,666464733,3202437046,4035489047,3374361702,2110667444,1675577880,3843699074,2538681184,1649639237,2976151520,3144396420,4269907996,4178062228,1883793496,2403728665,2497604743,1383856311,2876494627,1917518562,3810496343,1716890410,3001755655,800440835,2261089178,3543599269,807962610,599762354,33778362,3977675356,2328828971,2809771154,4077384432,1315562145,1708848333,101039829,3509871135,3299278474,875451293,2733856160,92987698,2767645557,193195065,1080094634,1584504582,3178106961,1042385657,2531067453,3711829422,1306967366,2438237621,1908694277,67556463,1615861247,429456164,3602770327,2302690252,1742315127,2968011453,126454664,3877198648,2043211483,2709260871,2084704233,4169408201,0,159417987,841739592,504459436,1817866830,4245618683,260388950,1034867998,908933415,168810852,1750902305,2606453969,607530554,202008497,2472011535,3035535058,463180190,2160117071,1641816226,1517767529,470948374,3801332234,3231722213,1008918595,303765277,235474187,4069246893,766945465,337553864,1475418501,2943682380,4003061179,2743034109,4144047775,1551037884,1147550661,1543208500,2336434550,3408119516,3069049960,3102011747,3610369226,1113818384,328671808,2227573024,2236228733,3535486456,2935566865,3341394285,496906059,3702665459,226906860,2009195472,733156972,2842737049,294930682,1206477858,2835123396,2700099354,1451044056,573804783,2269728455,3644379585,2362090238,2564033334,2801107407,2776292904,3669462566,1068351396,742039012,1350078989,1784663195,1417561698,4136440770,2430122216,775550814,2193862645,2673705150,1775276924,1876241833,3475313331,3366754619,270040487,3902563182,3678124923,3441850377,1851332852,3969562369,2203032232,3868552805,2868897406,566021896,4011190502,3135740889,1248802510,3936291284,699432150,832877231,708780849,3332740144,899835584,1951317047,4236429990,3767586992,866637845,4043610186,1106041591,2144161806,395441711,1984812685,1139781709,3433712980,3835036895,2664543715,1282050075,3240894392,1181045119,2640243204,25965917,4203181171,4211818798,3009879386,2463879762,3910161971,1842759443,2597806476,933301370,1509430414,3943906441,3467192302,3076639029,3776767469,2051518780,2631065433,1441952575,404016761,1942435775,1408749034,1610459739,3745345300,2017778566,3400528769,3110650942,941896748,3265478751,371049330,3168937228,675039627,4279080257,967311729,135050206,3635733660,1683407248,2076935265,3576870512,1215061108,3501741890],g=[1347548327,1400783205,3273267108,2520393566,3409685355,4045380933,2880240216,2471224067,1428173050,4138563181,2441661558,636813900,4233094615,3620022987,2149987652,2411029155,1239331162,1730525723,2554718734,3781033664,46346101,310463728,2743944855,3328955385,3875770207,2501218972,3955191162,3667219033,768917123,3545789473,692707433,1150208456,1786102409,2029293177,1805211710,3710368113,3065962831,401639597,1724457132,3028143674,409198410,2196052529,1620529459,1164071807,3769721975,2226875310,486441376,2499348523,1483753576,428819965,2274680428,3075636216,598438867,3799141122,1474502543,711349675,129166120,53458370,2592523643,2782082824,4063242375,2988687269,3120694122,1559041666,730517276,2460449204,4042459122,2706270690,3446004468,3573941694,533804130,2328143614,2637442643,2695033685,839224033,1973745387,957055980,2856345839,106852767,1371368976,4181598602,1033297158,2933734917,1179510461,3046200461,91341917,1862534868,4284502037,605657339,2547432937,3431546947,2003294622,3182487618,2282195339,954669403,3682191598,1201765386,3917234703,3388507166,0,2198438022,1211247597,2887651696,1315723890,4227665663,1443857720,507358933,657861945,1678381017,560487590,3516619604,975451694,2970356327,261314535,3535072918,2652609425,1333838021,2724322336,1767536459,370938394,182621114,3854606378,1128014560,487725847,185469197,2918353863,3106780840,3356761769,2237133081,1286567175,3152976349,4255350624,2683765030,3160175349,3309594171,878443390,1988838185,3704300486,1756818940,1673061617,3403100636,272786309,1075025698,545572369,2105887268,4174560061,296679730,1841768865,1260232239,4091327024,3960309330,3497509347,1814803222,2578018489,4195456072,575138148,3299409036,446754879,3629546796,4011996048,3347532110,3252238545,4270639778,915985419,3483825537,681933534,651868046,2755636671,3828103837,223377554,2607439820,1649704518,3270937875,3901806776,1580087799,4118987695,3198115200,2087309459,2842678573,3016697106,1003007129,2802849917,1860738147,2077965243,164439672,4100872472,32283319,2827177882,1709610350,2125135846,136428751,3874428392,3652904859,3460984630,3572145929,3593056380,2939266226,824852259,818324884,3224740454,930369212,2801566410,2967507152,355706840,1257309336,4148292826,243256656,790073846,2373340630,1296297904,1422699085,3756299780,3818836405,457992840,3099667487,2135319889,77422314,1560382517,1945798516,788204353,1521706781,1385356242,870912086,325965383,2358957921,2050466060,2388260884,2313884476,4006521127,901210569,3990953189,1014646705,1503449823,1062597235,2031621326,3212035895,3931371469,1533017514,350174575,2256028891,2177544179,1052338372,741876788,1606591296,1914052035,213705253,2334669897,1107234197,1899603969,3725069491,2631447780,2422494913,1635502980,1893020342,1950903388,1120974935],b=[2807058932,1699970625,2764249623,1586903591,1808481195,1173430173,1487645946,59984867,4199882800,1844882806,1989249228,1277555970,3623636965,3419915562,1149249077,2744104290,1514790577,459744698,244860394,3235995134,1963115311,4027744588,2544078150,4190530515,1608975247,2627016082,2062270317,1507497298,2200818878,567498868,1764313568,3359936201,2305455554,2037970062,1047239e3,1910319033,1337376481,2904027272,2892417312,984907214,1243112415,830661914,861968209,2135253587,2011214180,2927934315,2686254721,731183368,1750626376,4246310725,1820824798,4172763771,3542330227,48394827,2404901663,2871682645,671593195,3254988725,2073724613,145085239,2280796200,2779915199,1790575107,2187128086,472615631,3029510009,4075877127,3802222185,4107101658,3201631749,1646252340,4270507174,1402811438,1436590835,3778151818,3950355702,3963161475,4020912224,2667994737,273792366,2331590177,104699613,95345982,3175501286,2377486676,1560637892,3564045318,369057872,4213447064,3919042237,1137477952,2658625497,1119727848,2340947849,1530455833,4007360968,172466556,266959938,516552836,0,2256734592,3980931627,1890328081,1917742170,4294704398,945164165,3575528878,958871085,3647212047,2787207260,1423022939,775562294,1739656202,3876557655,2530391278,2443058075,3310321856,547512796,1265195639,437656594,3121275539,719700128,3762502690,387781147,218828297,3350065803,2830708150,2848461854,428169201,122466165,3720081049,1627235199,648017665,4122762354,1002783846,2117360635,695634755,3336358691,4234721005,4049844452,3704280881,2232435299,574624663,287343814,612205898,1039717051,840019705,2708326185,793451934,821288114,1391201670,3822090177,376187827,3113855344,1224348052,1679968233,2361698556,1058709744,752375421,2431590963,1321699145,3519142200,2734591178,188127444,2177869557,3727205754,2384911031,3215212461,2648976442,2450346104,3432737375,1180849278,331544205,3102249176,4150144569,2952102595,2159976285,2474404304,766078933,313773861,2570832044,2108100632,1668212892,3145456443,2013908262,418672217,3070356634,2594734927,1852171925,3867060991,3473416636,3907448597,2614737639,919489135,164948639,2094410160,2997825956,590424639,2486224549,1723872674,3157750862,3399941250,3501252752,3625268135,2555048196,3673637356,1343127501,4130281361,3599595085,2957853679,1297403050,81781910,3051593425,2283490410,532201772,1367295589,3926170974,895287692,1953757831,1093597963,492483431,3528626907,1446242576,1192455638,1636604631,209336225,344873464,1015671571,669961897,3375740769,3857572124,2973530695,3747192018,1933530610,3464042516,935293895,3454686199,2858115069,1863638845,3683022916,4085369519,3292445032,875313188,1080017571,3279033885,621591778,1233856572,2504130317,24197544,3017672716,3835484340,3247465558,2220981195,3060847922,1551124588,1463996600],w=[4104605777,1097159550,396673818,660510266,2875968315,2638606623,4200115116,3808662347,821712160,1986918061,3430322568,38544885,3856137295,718002117,893681702,1654886325,2975484382,3122358053,3926825029,4274053469,796197571,1290801793,1184342925,3556361835,2405426947,2459735317,1836772287,1381620373,3196267988,1948373848,3764988233,3385345166,3263785589,2390325492,1480485785,3111247143,3780097726,2293045232,548169417,3459953789,3746175075,439452389,1362321559,1400849762,1685577905,1806599355,2174754046,137073913,1214797936,1174215055,3731654548,2079897426,1943217067,1258480242,529487843,1437280870,3945269170,3049390895,3313212038,923313619,679998e3,3215307299,57326082,377642221,3474729866,2041877159,133361907,1776460110,3673476453,96392454,878845905,2801699524,777231668,4082475170,2330014213,4142626212,2213296395,1626319424,1906247262,1846563261,562755902,3708173718,1040559837,3871163981,1418573201,3294430577,114585348,1343618912,2566595609,3186202582,1078185097,3651041127,3896688048,2307622919,425408743,3371096953,2081048481,1108339068,2216610296,0,2156299017,736970802,292596766,1517440620,251657213,2235061775,2933202493,758720310,265905162,1554391400,1532285339,908999204,174567692,1474760595,4002861748,2610011675,3234156416,3693126241,2001430874,303699484,2478443234,2687165888,585122620,454499602,151849742,2345119218,3064510765,514443284,4044981591,1963412655,2581445614,2137062819,19308535,1928707164,1715193156,4219352155,1126790795,600235211,3992742070,3841024952,836553431,1669664834,2535604243,3323011204,1243905413,3141400786,4180808110,698445255,2653899549,2989552604,2253581325,3252932727,3004591147,1891211689,2487810577,3915653703,4237083816,4030667424,2100090966,865136418,1229899655,953270745,3399679628,3557504664,4118925222,2061379749,3079546586,2915017791,983426092,2022837584,1607244650,2118541908,2366882550,3635996816,972512814,3283088770,1568718495,3499326569,3576539503,621982671,2895723464,410887952,2623762152,1002142683,645401037,1494807662,2595684844,1335535747,2507040230,4293295786,3167684641,367585007,3885750714,1865862730,2668221674,2960971305,2763173681,1059270954,2777952454,2724642869,1320957812,2194319100,2429595872,2815956275,77089521,3973773121,3444575871,2448830231,1305906550,4021308739,2857194700,2516901860,3518358430,1787304780,740276417,1699839814,1592394909,2352307457,2272556026,188821243,1729977011,3687994002,274084841,3594982253,3613494426,2701949495,4162096729,322734571,2837966542,1640576439,484830689,1202797690,3537852828,4067639125,349075736,3342319475,4157467219,4255800159,1030690015,1155237496,2951971274,1757691577,607398968,2738905026,499347990,3794078908,1011452712,227885567,2818666809,213114376,3034881240,1455525988,3414450555,850817237,1817998408,3092726480],_=[0,235474187,470948374,303765277,941896748,908933415,607530554,708780849,1883793496,2118214995,1817866830,1649639237,1215061108,1181045119,1417561698,1517767529,3767586992,4003061179,4236429990,4069246893,3635733660,3602770327,3299278474,3400528769,2430122216,2664543715,2362090238,2193862645,2835123396,2801107407,3035535058,3135740889,3678124923,3576870512,3341394285,3374361702,3810496343,3977675356,4279080257,4043610186,2876494627,2776292904,3076639029,3110650942,2472011535,2640243204,2403728665,2169303058,1001089995,899835584,666464733,699432150,59727847,226906860,530400753,294930682,1273168787,1172967064,1475418501,1509430414,1942435775,2110667444,1876241833,1641816226,2910219766,2743034109,2976151520,3211623147,2505202138,2606453969,2302690252,2269728455,3711829422,3543599269,3240894392,3475313331,3843699074,3943906441,4178062228,4144047775,1306967366,1139781709,1374988112,1610459739,1975683434,2076935265,1775276924,1742315127,1034867998,866637845,566021896,800440835,92987698,193195065,429456164,395441711,1984812685,2017778566,1784663195,1683407248,1315562145,1080094634,1383856311,1551037884,101039829,135050206,437757123,337553864,1042385657,807962610,573804783,742039012,2531067453,2564033334,2328828971,2227573024,2935566865,2700099354,3001755655,3168937228,3868552805,3902563182,4203181171,4102977912,3736164937,3501741890,3265478751,3433712980,1106041591,1340463100,1576976609,1408749034,2043211483,2009195472,1708848333,1809054150,832877231,1068351396,766945465,599762354,159417987,126454664,361929877,463180190,2709260871,2943682380,3178106961,3009879386,2572697195,2538681184,2236228733,2336434550,3509871135,3745345300,3441850377,3274667266,3910161971,3877198648,4110568485,4211818798,2597806476,2497604743,2261089178,2295101073,2733856160,2902087851,3202437046,2968011453,3936291284,3835036895,4136440770,4169408201,3535486456,3702665459,3467192302,3231722213,2051518780,1951317047,1716890410,1750902305,1113818384,1282050075,1584504582,1350078989,168810852,67556463,371049330,404016761,841739592,1008918595,775550814,540080725,3969562369,3801332234,4035489047,4269907996,3569255213,3669462566,3366754619,3332740144,2631065433,2463879762,2160117071,2395588676,2767645557,2868897406,3102011747,3069049960,202008497,33778362,270040487,504459436,875451293,975658646,675039627,641025152,2084704233,1917518562,1615861247,1851332852,1147550661,1248802510,1484005843,1451044056,933301370,967311729,733156972,632953703,260388950,25965917,328671808,496906059,1206477858,1239443753,1543208500,1441952575,2144161806,1908694277,1675577880,1842759443,3610369226,3644379585,3408119516,3307916247,4011190502,3776767469,4077384432,4245618683,2809771154,2842737049,3144396420,3043140495,2673705150,2438237621,2203032232,2370213795],M=[0,185469197,370938394,487725847,741876788,657861945,975451694,824852259,1483753576,1400783205,1315723890,1164071807,1950903388,2135319889,1649704518,1767536459,2967507152,3152976349,2801566410,2918353863,2631447780,2547432937,2328143614,2177544179,3901806776,3818836405,4270639778,4118987695,3299409036,3483825537,3535072918,3652904859,2077965243,1893020342,1841768865,1724457132,1474502543,1559041666,1107234197,1257309336,598438867,681933534,901210569,1052338372,261314535,77422314,428819965,310463728,3409685355,3224740454,3710368113,3593056380,3875770207,3960309330,4045380933,4195456072,2471224067,2554718734,2237133081,2388260884,3212035895,3028143674,2842678573,2724322336,4138563181,4255350624,3769721975,3955191162,3667219033,3516619604,3431546947,3347532110,2933734917,2782082824,3099667487,3016697106,2196052529,2313884476,2499348523,2683765030,1179510461,1296297904,1347548327,1533017514,1786102409,1635502980,2087309459,2003294622,507358933,355706840,136428751,53458370,839224033,957055980,605657339,790073846,2373340630,2256028891,2607439820,2422494913,2706270690,2856345839,3075636216,3160175349,3573941694,3725069491,3273267108,3356761769,4181598602,4063242375,4011996048,3828103837,1033297158,915985419,730517276,545572369,296679730,446754879,129166120,213705253,1709610350,1860738147,1945798516,2029293177,1239331162,1120974935,1606591296,1422699085,4148292826,4233094615,3781033664,3931371469,3682191598,3497509347,3446004468,3328955385,2939266226,2755636671,3106780840,2988687269,2198438022,2282195339,2501218972,2652609425,1201765386,1286567175,1371368976,1521706781,1805211710,1620529459,2105887268,1988838185,533804130,350174575,164439672,46346101,870912086,954669403,636813900,788204353,2358957921,2274680428,2592523643,2441661558,2695033685,2880240216,3065962831,3182487618,3572145929,3756299780,3270937875,3388507166,4174560061,4091327024,4006521127,3854606378,1014646705,930369212,711349675,560487590,272786309,457992840,106852767,223377554,1678381017,1862534868,1914052035,2031621326,1211247597,1128014560,1580087799,1428173050,32283319,182621114,401639597,486441376,768917123,651868046,1003007129,818324884,1503449823,1385356242,1333838021,1150208456,1973745387,2125135846,1673061617,1756818940,2970356327,3120694122,2802849917,2887651696,2637442643,2520393566,2334669897,2149987652,3917234703,3799141122,4284502037,4100872472,3309594171,3460984630,3545789473,3629546796,2050466060,1899603969,1814803222,1730525723,1443857720,1560382517,1075025698,1260232239,575138148,692707433,878443390,1062597235,243256656,91341917,409198410,325965383,3403100636,3252238545,3704300486,3620022987,3874428392,3990953189,4042459122,4227665663,2460449204,2578018489,2226875310,2411029155,3198115200,3046200461,2827177882,2743944855],A=[0,218828297,437656594,387781147,875313188,958871085,775562294,590424639,1750626376,1699970625,1917742170,2135253587,1551124588,1367295589,1180849278,1265195639,3501252752,3720081049,3399941250,3350065803,3835484340,3919042237,4270507174,4085369519,3102249176,3051593425,2734591178,2952102595,2361698556,2177869557,2530391278,2614737639,3145456443,3060847922,2708326185,2892417312,2404901663,2187128086,2504130317,2555048196,3542330227,3727205754,3375740769,3292445032,3876557655,3926170974,4246310725,4027744588,1808481195,1723872674,1910319033,2094410160,1608975247,1391201670,1173430173,1224348052,59984867,244860394,428169201,344873464,935293895,984907214,766078933,547512796,1844882806,1627235199,2011214180,2062270317,1507497298,1423022939,1137477952,1321699145,95345982,145085239,532201772,313773861,830661914,1015671571,731183368,648017665,3175501286,2957853679,2807058932,2858115069,2305455554,2220981195,2474404304,2658625497,3575528878,3625268135,3473416636,3254988725,3778151818,3963161475,4213447064,4130281361,3599595085,3683022916,3432737375,3247465558,3802222185,4020912224,4172763771,4122762354,3201631749,3017672716,2764249623,2848461854,2331590177,2280796200,2431590963,2648976442,104699613,188127444,472615631,287343814,840019705,1058709744,671593195,621591778,1852171925,1668212892,1953757831,2037970062,1514790577,1463996600,1080017571,1297403050,3673637356,3623636965,3235995134,3454686199,4007360968,3822090177,4107101658,4190530515,2997825956,3215212461,2830708150,2779915199,2256734592,2340947849,2627016082,2443058075,172466556,122466165,273792366,492483431,1047239e3,861968209,612205898,695634755,1646252340,1863638845,2013908262,1963115311,1446242576,1530455833,1277555970,1093597963,1636604631,1820824798,2073724613,1989249228,1436590835,1487645946,1337376481,1119727848,164948639,81781910,331544205,516552836,1039717051,821288114,669961897,719700128,2973530695,3157750862,2871682645,2787207260,2232435299,2283490410,2667994737,2450346104,3647212047,3564045318,3279033885,3464042516,3980931627,3762502690,4150144569,4199882800,3070356634,3121275539,2904027272,2686254721,2200818878,2384911031,2570832044,2486224549,3747192018,3528626907,3310321856,3359936201,3950355702,3867060991,4049844452,4234721005,1739656202,1790575107,2108100632,1890328081,1402811438,1586903591,1233856572,1149249077,266959938,48394827,369057872,418672217,1002783846,919489135,567498868,752375421,209336225,24197544,376187827,459744698,945164165,895287692,574624663,793451934,1679968233,1764313568,2117360635,1933530610,1343127501,1560637892,1243112415,1192455638,3704280881,3519142200,3336358691,3419915562,3907448597,3857572124,4075877127,4294704398,3029510009,3113855344,2927934315,2744104290,2159976285,2377486676,2594734927,2544078150],E=[0,151849742,303699484,454499602,607398968,758720310,908999204,1059270954,1214797936,1097159550,1517440620,1400849762,1817998408,1699839814,2118541908,2001430874,2429595872,2581445614,2194319100,2345119218,3034881240,3186202582,2801699524,2951971274,3635996816,3518358430,3399679628,3283088770,4237083816,4118925222,4002861748,3885750714,1002142683,850817237,698445255,548169417,529487843,377642221,227885567,77089521,1943217067,2061379749,1640576439,1757691577,1474760595,1592394909,1174215055,1290801793,2875968315,2724642869,3111247143,2960971305,2405426947,2253581325,2638606623,2487810577,3808662347,3926825029,4044981591,4162096729,3342319475,3459953789,3576539503,3693126241,1986918061,2137062819,1685577905,1836772287,1381620373,1532285339,1078185097,1229899655,1040559837,923313619,740276417,621982671,439452389,322734571,137073913,19308535,3871163981,4021308739,4104605777,4255800159,3263785589,3414450555,3499326569,3651041127,2933202493,2815956275,3167684641,3049390895,2330014213,2213296395,2566595609,2448830231,1305906550,1155237496,1607244650,1455525988,1776460110,1626319424,2079897426,1928707164,96392454,213114376,396673818,514443284,562755902,679998e3,865136418,983426092,3708173718,3557504664,3474729866,3323011204,4180808110,4030667424,3945269170,3794078908,2507040230,2623762152,2272556026,2390325492,2975484382,3092726480,2738905026,2857194700,3973773121,3856137295,4274053469,4157467219,3371096953,3252932727,3673476453,3556361835,2763173681,2915017791,3064510765,3215307299,2156299017,2307622919,2459735317,2610011675,2081048481,1963412655,1846563261,1729977011,1480485785,1362321559,1243905413,1126790795,878845905,1030690015,645401037,796197571,274084841,425408743,38544885,188821243,3613494426,3731654548,3313212038,3430322568,4082475170,4200115116,3780097726,3896688048,2668221674,2516901860,2366882550,2216610296,3141400786,2989552604,2837966542,2687165888,1202797690,1320957812,1437280870,1554391400,1669664834,1787304780,1906247262,2022837584,265905162,114585348,499347990,349075736,736970802,585122620,972512814,821712160,2595684844,2478443234,2293045232,2174754046,3196267988,3079546586,2895723464,2777952454,3537852828,3687994002,3234156416,3385345166,4142626212,4293295786,3841024952,3992742070,174567692,57326082,410887952,292596766,777231668,660510266,1011452712,893681702,1108339068,1258480242,1343618912,1494807662,1715193156,1865862730,1948373848,2100090966,2701949495,2818666809,3004591147,3122358053,2235061775,2352307457,2535604243,2653899549,3915653703,3764988233,4219352155,4067639125,3444575871,3294430577,3746175075,3594982253,836553431,953270745,600235211,718002117,367585007,484830689,133361907,251657213,2041877159,1891211689,1806599355,1654886325,1568718495,1418573201,1335535747,1184342925];function S(e){for(var t=[],r=0;r>2,this._Ke[r][t%4]=o[t],this._Kd[e-r][t%4]=o[t];for(var s,a=0,u=i;u>16&255]<<24^d[s>>8&255]<<16^d[255&s]<<8^d[s>>24&255]^c[a]<<24,a+=1,8!=i)for(t=1;t>8&255]<<8^d[s>>16&255]<<16^d[s>>24&255]<<24;for(t=i/2+1;t>2,h=u%4,this._Ke[l][h]=o[t],this._Kd[e-l][h]=o[t++],u++}for(var l=1;l>24&255]^M[s>>16&255]^A[s>>8&255]^E[255&s]},k.prototype.encrypt=function(e){if(16!=e.length)throw new Error("invalid plaintext size (must be 16 bytes)");for(var t=this._Ke.length-1,r=[0,0,0,0],n=S(e),i=0;i<4;i++)n[i]^=this._Ke[0][i];for(var o=1;o>24&255]^p[n[(i+1)%4]>>16&255]^v[n[(i+2)%4]>>8&255]^y[255&n[(i+3)%4]]^this._Ke[o][i];n=r.slice()}var s,a=u(16);for(i=0;i<4;i++)s=this._Ke[t][i],a[4*i]=255&(d[n[i]>>24&255]^s>>24),a[4*i+1]=255&(d[n[(i+1)%4]>>16&255]^s>>16),a[4*i+2]=255&(d[n[(i+2)%4]>>8&255]^s>>8),a[4*i+3]=255&(d[255&n[(i+3)%4]]^s);return a},k.prototype.decrypt=function(e){if(16!=e.length)throw new Error("invalid ciphertext size (must be 16 bytes)");for(var t=this._Kd.length-1,r=[0,0,0,0],n=S(e),i=0;i<4;i++)n[i]^=this._Kd[0][i];for(var o=1;o>24&255]^g[n[(i+3)%4]>>16&255]^b[n[(i+2)%4]>>8&255]^w[255&n[(i+1)%4]]^this._Kd[o][i];n=r.slice()}var s,a=u(16);for(i=0;i<4;i++)s=this._Kd[t][i],a[4*i]=255&(l[n[i]>>24&255]^s>>24),a[4*i+1]=255&(l[n[(i+3)%4]>>16&255]^s>>16),a[4*i+2]=255&(l[n[(i+2)%4]>>8&255]^s>>8),a[4*i+3]=255&(l[255&n[(i+1)%4]]^s);return a};var N=function(e){if(!(this instanceof N))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new k(e)};N.prototype.encrypt=function(e){if((e=o(e)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var t=u(e.length),r=u(16),n=0;n>=8},T.prototype.setBytes=function(e){if(16!=(e=o(e,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=e},T.prototype.increment=function(){for(var e=15;0<=e;e--){if(255!==this._counter[e]){this._counter[e]++;break}this._counter[e]=0}};var R=function(e,t){if(!(this instanceof R))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",t instanceof T||(t=new T(t)),this._counter=t,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new k(e)};R.prototype.encrypt=function(e){for(var t=o(e,!0),r=0;r>>26-s&67108863,26<=(s+=24)&&(s-=26,i++);else if("le"===r)for(i=n=0;n>>26-s&67108863,26<=(s+=24)&&(s-=26,i++);return this.strip()},m.prototype._parseHex=function(e,t){this.length=Math.ceil((e.length-t)/6),this.words=new Array(this.length);for(var r=0;r>>26-o&4194303,26<=(o+=24)&&(o-=26,n++);r+6!==t&&(i=s(e,t,r+6),this.words[n]|=i<>>26-o&4194303),this.strip()},m.prototype._parseBase=function(e,t,r){this.words=[0];for(var n=0,i=this.length=1;i<=67108863;i*=t)n++;n--,i=i/t|0;for(var o=e.length-r,s=o%n,a=Math.min(o,o-s)+r,u=0,l=r;l"};var c=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],d=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],p=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function i(e,t,r){r.negative=t.negative^e.negative;var n=e.length+t.length|0;n=(r.length=n)-1|0;var i=0|e.words[0],o=0|t.words[0],s=i*o,a=67108863&s,u=s/67108864|0;r.words[0]=a;for(var l=1;l>>26,f=67108863&u,c=Math.min(l,t.length-1),d=Math.max(0,l-e.length+1);d<=c;d++){var p=l-d|0;h+=(s=(i=0|e.words[p])*(o=0|t.words[d])+f)/67108864|0,f=67108863&s}r.words[l]=0|f,u=0|h}return 0!==u?r.words[l]=0|u:r.length--,r.strip()}m.prototype.toString=function(e,t){var r;if(t=0|t||1,16===(e=e||10)||"hex"===e){r="";for(var n=0,i=0,o=0;o>>24-n&16777215)||o!==this.length-1?c[6-a.length]+a+r:a+r,26<=(n+=2)&&(n-=26,o--)}for(0!==i&&(r=i.toString(16)+r);r.length%t!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(e===(0|e)&&2<=e&&e<=36){var u=d[e],l=p[e];r="";var h=this.clone();for(h.negative=0;!h.isZero();){var f=h.modn(l).toString(e);r=(h=h.idivn(l)).isZero()?f+r:c[u-f.length]+f+r}for(this.isZero()&&(r="0"+r);r.length%t!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}y(!1,"Base should be between 2 and 36")},m.prototype.toNumber=function(){var e=this.words[0];return 2===this.length?e+=67108864*this.words[1]:3===this.length&&1===this.words[2]?e+=4503599627370496+67108864*this.words[1]:2>>=13),64<=t&&(r+=7,t>>>=7),8<=t&&(r+=4,t>>>=4),2<=t&&(r+=2,t>>>=2),r+t},m.prototype._zeroBits=function(e){if(0===e)return 26;var t=e,r=0;return 0==(8191&t)&&(r+=13,t>>>=13),0==(127&t)&&(r+=7,t>>>=7),0==(15&t)&&(r+=4,t>>>=4),0==(3&t)&&(r+=2,t>>>=2),0==(1&t)&&r++,r},m.prototype.bitLength=function(){var e=this.words[this.length-1],t=this._countBits(e);return 26*(this.length-1)+t},m.prototype.zeroBits=function(){if(this.isZero())return 0;for(var e=0,t=0;te.length?this.clone().ior(e):e.clone().ior(this)},m.prototype.uor=function(e){return this.length>e.length?this.clone().iuor(e):e.clone().iuor(this)},m.prototype.iuand=function(e){var t;t=this.length>e.length?e:this;for(var r=0;re.length?this.clone().iand(e):e.clone().iand(this)},m.prototype.uand=function(e){return this.length>e.length?this.clone().iuand(e):e.clone().iuand(this)},m.prototype.iuxor=function(e){var t,r;r=this.length>e.length?(t=this,e):(t=e,this);for(var n=0;ne.length?this.clone().ixor(e):e.clone().ixor(this)},m.prototype.uxor=function(e){return this.length>e.length?this.clone().iuxor(e):e.clone().iuxor(this)},m.prototype.inotn=function(e){y("number"==typeof e&&0<=e);var t=0|Math.ceil(e/26),r=e%26;this._expand(t),0>26-r),this.strip()},m.prototype.notn=function(e){return this.clone().inotn(e)},m.prototype.setn=function(e,t){y("number"==typeof e&&0<=e);var r=e/26|0,n=e%26;return this._expand(1+r),this.words[r]=t?this.words[r]|1<e.length?(r=this,e):(r=e,this);for(var i=0,o=0;o>>26;for(;0!==i&&o>>26;if(this.length=r.length,0!==i)this.words[this.length]=i,this.length++;else if(r!==this)for(;oe.length?this.clone().iadd(e):e.clone().iadd(this)},m.prototype.isub=function(e){if(0!==e.negative){e.negative=0;var t=this.iadd(e);return e.negative=1,t._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(e),this.negative=1,this._normSign();var r,n,i=this.cmp(e);if(0===i)return this.negative=0,this.length=1,this.words[0]=0,this;n=0>26,this.words[s]=67108863&t;for(;0!==o&&s>26,this.words[s]=67108863&t;if(0===o&&s>>13,d=0|s[1],p=8191&d,v=d>>>13,y=0|s[2],m=8191&y,g=y>>>13,b=0|s[3],w=8191&b,_=b>>>13,M=0|s[4],A=8191&M,E=M>>>13,S=0|s[5],k=8191&S,N=S>>>13,x=0|s[6],P=8191&x,I=x>>>13,T=0|s[7],R=8191&T,O=T>>>13,C=0|s[8],L=8191&C,D=C>>>13,B=0|s[9],U=8191&B,F=B>>>13,j=0|a[0],G=8191&j,H=j>>>13,z=0|a[1],V=8191&z,K=z>>>13,q=0|a[2],W=8191&q,Z=q>>>13,J=0|a[3],X=8191&J,$=J>>>13,Q=0|a[4],Y=8191&Q,ee=Q>>>13,te=0|a[5],re=8191&te,ne=te>>>13,ie=0|a[6],oe=8191&ie,se=ie>>>13,ae=0|a[7],ue=8191&ae,le=ae>>>13,he=0|a[8],fe=8191&he,ce=he>>>13,de=0|a[9],pe=8191&de,ve=de>>>13;r.negative=e.negative^t.negative,r.length=19;var ye=(l+(n=Math.imul(f,G))|0)+((8191&(i=(i=Math.imul(f,H))+Math.imul(c,G)|0))<<13)|0;l=((o=Math.imul(c,H))+(i>>>13)|0)+(ye>>>26)|0,ye&=67108863,n=Math.imul(p,G),i=(i=Math.imul(p,H))+Math.imul(v,G)|0,o=Math.imul(v,H);var me=(l+(n=n+Math.imul(f,V)|0)|0)+((8191&(i=(i=i+Math.imul(f,K)|0)+Math.imul(c,V)|0))<<13)|0;l=((o=o+Math.imul(c,K)|0)+(i>>>13)|0)+(me>>>26)|0,me&=67108863,n=Math.imul(m,G),i=(i=Math.imul(m,H))+Math.imul(g,G)|0,o=Math.imul(g,H),n=n+Math.imul(p,V)|0,i=(i=i+Math.imul(p,K)|0)+Math.imul(v,V)|0,o=o+Math.imul(v,K)|0;var ge=(l+(n=n+Math.imul(f,W)|0)|0)+((8191&(i=(i=i+Math.imul(f,Z)|0)+Math.imul(c,W)|0))<<13)|0;l=((o=o+Math.imul(c,Z)|0)+(i>>>13)|0)+(ge>>>26)|0,ge&=67108863,n=Math.imul(w,G),i=(i=Math.imul(w,H))+Math.imul(_,G)|0,o=Math.imul(_,H),n=n+Math.imul(m,V)|0,i=(i=i+Math.imul(m,K)|0)+Math.imul(g,V)|0,o=o+Math.imul(g,K)|0,n=n+Math.imul(p,W)|0,i=(i=i+Math.imul(p,Z)|0)+Math.imul(v,W)|0,o=o+Math.imul(v,Z)|0;var be=(l+(n=n+Math.imul(f,X)|0)|0)+((8191&(i=(i=i+Math.imul(f,$)|0)+Math.imul(c,X)|0))<<13)|0;l=((o=o+Math.imul(c,$)|0)+(i>>>13)|0)+(be>>>26)|0,be&=67108863,n=Math.imul(A,G),i=(i=Math.imul(A,H))+Math.imul(E,G)|0,o=Math.imul(E,H),n=n+Math.imul(w,V)|0,i=(i=i+Math.imul(w,K)|0)+Math.imul(_,V)|0,o=o+Math.imul(_,K)|0,n=n+Math.imul(m,W)|0,i=(i=i+Math.imul(m,Z)|0)+Math.imul(g,W)|0,o=o+Math.imul(g,Z)|0,n=n+Math.imul(p,X)|0,i=(i=i+Math.imul(p,$)|0)+Math.imul(v,X)|0,o=o+Math.imul(v,$)|0;var we=(l+(n=n+Math.imul(f,Y)|0)|0)+((8191&(i=(i=i+Math.imul(f,ee)|0)+Math.imul(c,Y)|0))<<13)|0;l=((o=o+Math.imul(c,ee)|0)+(i>>>13)|0)+(we>>>26)|0,we&=67108863,n=Math.imul(k,G),i=(i=Math.imul(k,H))+Math.imul(N,G)|0,o=Math.imul(N,H),n=n+Math.imul(A,V)|0,i=(i=i+Math.imul(A,K)|0)+Math.imul(E,V)|0,o=o+Math.imul(E,K)|0,n=n+Math.imul(w,W)|0,i=(i=i+Math.imul(w,Z)|0)+Math.imul(_,W)|0,o=o+Math.imul(_,Z)|0,n=n+Math.imul(m,X)|0,i=(i=i+Math.imul(m,$)|0)+Math.imul(g,X)|0,o=o+Math.imul(g,$)|0,n=n+Math.imul(p,Y)|0,i=(i=i+Math.imul(p,ee)|0)+Math.imul(v,Y)|0,o=o+Math.imul(v,ee)|0;var _e=(l+(n=n+Math.imul(f,re)|0)|0)+((8191&(i=(i=i+Math.imul(f,ne)|0)+Math.imul(c,re)|0))<<13)|0;l=((o=o+Math.imul(c,ne)|0)+(i>>>13)|0)+(_e>>>26)|0,_e&=67108863,n=Math.imul(P,G),i=(i=Math.imul(P,H))+Math.imul(I,G)|0,o=Math.imul(I,H),n=n+Math.imul(k,V)|0,i=(i=i+Math.imul(k,K)|0)+Math.imul(N,V)|0,o=o+Math.imul(N,K)|0,n=n+Math.imul(A,W)|0,i=(i=i+Math.imul(A,Z)|0)+Math.imul(E,W)|0,o=o+Math.imul(E,Z)|0,n=n+Math.imul(w,X)|0,i=(i=i+Math.imul(w,$)|0)+Math.imul(_,X)|0,o=o+Math.imul(_,$)|0,n=n+Math.imul(m,Y)|0,i=(i=i+Math.imul(m,ee)|0)+Math.imul(g,Y)|0,o=o+Math.imul(g,ee)|0,n=n+Math.imul(p,re)|0,i=(i=i+Math.imul(p,ne)|0)+Math.imul(v,re)|0,o=o+Math.imul(v,ne)|0;var Me=(l+(n=n+Math.imul(f,oe)|0)|0)+((8191&(i=(i=i+Math.imul(f,se)|0)+Math.imul(c,oe)|0))<<13)|0;l=((o=o+Math.imul(c,se)|0)+(i>>>13)|0)+(Me>>>26)|0,Me&=67108863,n=Math.imul(R,G),i=(i=Math.imul(R,H))+Math.imul(O,G)|0,o=Math.imul(O,H),n=n+Math.imul(P,V)|0,i=(i=i+Math.imul(P,K)|0)+Math.imul(I,V)|0,o=o+Math.imul(I,K)|0,n=n+Math.imul(k,W)|0,i=(i=i+Math.imul(k,Z)|0)+Math.imul(N,W)|0,o=o+Math.imul(N,Z)|0,n=n+Math.imul(A,X)|0,i=(i=i+Math.imul(A,$)|0)+Math.imul(E,X)|0,o=o+Math.imul(E,$)|0,n=n+Math.imul(w,Y)|0,i=(i=i+Math.imul(w,ee)|0)+Math.imul(_,Y)|0,o=o+Math.imul(_,ee)|0,n=n+Math.imul(m,re)|0,i=(i=i+Math.imul(m,ne)|0)+Math.imul(g,re)|0,o=o+Math.imul(g,ne)|0,n=n+Math.imul(p,oe)|0,i=(i=i+Math.imul(p,se)|0)+Math.imul(v,oe)|0,o=o+Math.imul(v,se)|0;var Ae=(l+(n=n+Math.imul(f,ue)|0)|0)+((8191&(i=(i=i+Math.imul(f,le)|0)+Math.imul(c,ue)|0))<<13)|0;l=((o=o+Math.imul(c,le)|0)+(i>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,n=Math.imul(L,G),i=(i=Math.imul(L,H))+Math.imul(D,G)|0,o=Math.imul(D,H),n=n+Math.imul(R,V)|0,i=(i=i+Math.imul(R,K)|0)+Math.imul(O,V)|0,o=o+Math.imul(O,K)|0,n=n+Math.imul(P,W)|0,i=(i=i+Math.imul(P,Z)|0)+Math.imul(I,W)|0,o=o+Math.imul(I,Z)|0,n=n+Math.imul(k,X)|0,i=(i=i+Math.imul(k,$)|0)+Math.imul(N,X)|0,o=o+Math.imul(N,$)|0,n=n+Math.imul(A,Y)|0,i=(i=i+Math.imul(A,ee)|0)+Math.imul(E,Y)|0,o=o+Math.imul(E,ee)|0,n=n+Math.imul(w,re)|0,i=(i=i+Math.imul(w,ne)|0)+Math.imul(_,re)|0,o=o+Math.imul(_,ne)|0,n=n+Math.imul(m,oe)|0,i=(i=i+Math.imul(m,se)|0)+Math.imul(g,oe)|0,o=o+Math.imul(g,se)|0,n=n+Math.imul(p,ue)|0,i=(i=i+Math.imul(p,le)|0)+Math.imul(v,ue)|0,o=o+Math.imul(v,le)|0;var Ee=(l+(n=n+Math.imul(f,fe)|0)|0)+((8191&(i=(i=i+Math.imul(f,ce)|0)+Math.imul(c,fe)|0))<<13)|0;l=((o=o+Math.imul(c,ce)|0)+(i>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,n=Math.imul(U,G),i=(i=Math.imul(U,H))+Math.imul(F,G)|0,o=Math.imul(F,H),n=n+Math.imul(L,V)|0,i=(i=i+Math.imul(L,K)|0)+Math.imul(D,V)|0,o=o+Math.imul(D,K)|0,n=n+Math.imul(R,W)|0,i=(i=i+Math.imul(R,Z)|0)+Math.imul(O,W)|0,o=o+Math.imul(O,Z)|0,n=n+Math.imul(P,X)|0,i=(i=i+Math.imul(P,$)|0)+Math.imul(I,X)|0,o=o+Math.imul(I,$)|0,n=n+Math.imul(k,Y)|0,i=(i=i+Math.imul(k,ee)|0)+Math.imul(N,Y)|0,o=o+Math.imul(N,ee)|0,n=n+Math.imul(A,re)|0,i=(i=i+Math.imul(A,ne)|0)+Math.imul(E,re)|0,o=o+Math.imul(E,ne)|0,n=n+Math.imul(w,oe)|0,i=(i=i+Math.imul(w,se)|0)+Math.imul(_,oe)|0,o=o+Math.imul(_,se)|0,n=n+Math.imul(m,ue)|0,i=(i=i+Math.imul(m,le)|0)+Math.imul(g,ue)|0,o=o+Math.imul(g,le)|0,n=n+Math.imul(p,fe)|0,i=(i=i+Math.imul(p,ce)|0)+Math.imul(v,fe)|0,o=o+Math.imul(v,ce)|0;var Se=(l+(n=n+Math.imul(f,pe)|0)|0)+((8191&(i=(i=i+Math.imul(f,ve)|0)+Math.imul(c,pe)|0))<<13)|0;l=((o=o+Math.imul(c,ve)|0)+(i>>>13)|0)+(Se>>>26)|0,Se&=67108863,n=Math.imul(U,V),i=(i=Math.imul(U,K))+Math.imul(F,V)|0,o=Math.imul(F,K),n=n+Math.imul(L,W)|0,i=(i=i+Math.imul(L,Z)|0)+Math.imul(D,W)|0,o=o+Math.imul(D,Z)|0,n=n+Math.imul(R,X)|0,i=(i=i+Math.imul(R,$)|0)+Math.imul(O,X)|0,o=o+Math.imul(O,$)|0,n=n+Math.imul(P,Y)|0,i=(i=i+Math.imul(P,ee)|0)+Math.imul(I,Y)|0,o=o+Math.imul(I,ee)|0,n=n+Math.imul(k,re)|0,i=(i=i+Math.imul(k,ne)|0)+Math.imul(N,re)|0,o=o+Math.imul(N,ne)|0,n=n+Math.imul(A,oe)|0,i=(i=i+Math.imul(A,se)|0)+Math.imul(E,oe)|0,o=o+Math.imul(E,se)|0,n=n+Math.imul(w,ue)|0,i=(i=i+Math.imul(w,le)|0)+Math.imul(_,ue)|0,o=o+Math.imul(_,le)|0,n=n+Math.imul(m,fe)|0,i=(i=i+Math.imul(m,ce)|0)+Math.imul(g,fe)|0,o=o+Math.imul(g,ce)|0;var ke=(l+(n=n+Math.imul(p,pe)|0)|0)+((8191&(i=(i=i+Math.imul(p,ve)|0)+Math.imul(v,pe)|0))<<13)|0;l=((o=o+Math.imul(v,ve)|0)+(i>>>13)|0)+(ke>>>26)|0,ke&=67108863,n=Math.imul(U,W),i=(i=Math.imul(U,Z))+Math.imul(F,W)|0,o=Math.imul(F,Z),n=n+Math.imul(L,X)|0,i=(i=i+Math.imul(L,$)|0)+Math.imul(D,X)|0,o=o+Math.imul(D,$)|0,n=n+Math.imul(R,Y)|0,i=(i=i+Math.imul(R,ee)|0)+Math.imul(O,Y)|0,o=o+Math.imul(O,ee)|0,n=n+Math.imul(P,re)|0,i=(i=i+Math.imul(P,ne)|0)+Math.imul(I,re)|0,o=o+Math.imul(I,ne)|0,n=n+Math.imul(k,oe)|0,i=(i=i+Math.imul(k,se)|0)+Math.imul(N,oe)|0,o=o+Math.imul(N,se)|0,n=n+Math.imul(A,ue)|0,i=(i=i+Math.imul(A,le)|0)+Math.imul(E,ue)|0,o=o+Math.imul(E,le)|0,n=n+Math.imul(w,fe)|0,i=(i=i+Math.imul(w,ce)|0)+Math.imul(_,fe)|0,o=o+Math.imul(_,ce)|0;var Ne=(l+(n=n+Math.imul(m,pe)|0)|0)+((8191&(i=(i=i+Math.imul(m,ve)|0)+Math.imul(g,pe)|0))<<13)|0;l=((o=o+Math.imul(g,ve)|0)+(i>>>13)|0)+(Ne>>>26)|0,Ne&=67108863,n=Math.imul(U,X),i=(i=Math.imul(U,$))+Math.imul(F,X)|0,o=Math.imul(F,$),n=n+Math.imul(L,Y)|0,i=(i=i+Math.imul(L,ee)|0)+Math.imul(D,Y)|0,o=o+Math.imul(D,ee)|0,n=n+Math.imul(R,re)|0,i=(i=i+Math.imul(R,ne)|0)+Math.imul(O,re)|0,o=o+Math.imul(O,ne)|0,n=n+Math.imul(P,oe)|0,i=(i=i+Math.imul(P,se)|0)+Math.imul(I,oe)|0,o=o+Math.imul(I,se)|0,n=n+Math.imul(k,ue)|0,i=(i=i+Math.imul(k,le)|0)+Math.imul(N,ue)|0,o=o+Math.imul(N,le)|0,n=n+Math.imul(A,fe)|0,i=(i=i+Math.imul(A,ce)|0)+Math.imul(E,fe)|0,o=o+Math.imul(E,ce)|0;var xe=(l+(n=n+Math.imul(w,pe)|0)|0)+((8191&(i=(i=i+Math.imul(w,ve)|0)+Math.imul(_,pe)|0))<<13)|0;l=((o=o+Math.imul(_,ve)|0)+(i>>>13)|0)+(xe>>>26)|0,xe&=67108863,n=Math.imul(U,Y),i=(i=Math.imul(U,ee))+Math.imul(F,Y)|0,o=Math.imul(F,ee),n=n+Math.imul(L,re)|0,i=(i=i+Math.imul(L,ne)|0)+Math.imul(D,re)|0,o=o+Math.imul(D,ne)|0,n=n+Math.imul(R,oe)|0,i=(i=i+Math.imul(R,se)|0)+Math.imul(O,oe)|0,o=o+Math.imul(O,se)|0,n=n+Math.imul(P,ue)|0,i=(i=i+Math.imul(P,le)|0)+Math.imul(I,ue)|0,o=o+Math.imul(I,le)|0,n=n+Math.imul(k,fe)|0,i=(i=i+Math.imul(k,ce)|0)+Math.imul(N,fe)|0,o=o+Math.imul(N,ce)|0;var Pe=(l+(n=n+Math.imul(A,pe)|0)|0)+((8191&(i=(i=i+Math.imul(A,ve)|0)+Math.imul(E,pe)|0))<<13)|0;l=((o=o+Math.imul(E,ve)|0)+(i>>>13)|0)+(Pe>>>26)|0,Pe&=67108863,n=Math.imul(U,re),i=(i=Math.imul(U,ne))+Math.imul(F,re)|0,o=Math.imul(F,ne),n=n+Math.imul(L,oe)|0,i=(i=i+Math.imul(L,se)|0)+Math.imul(D,oe)|0,o=o+Math.imul(D,se)|0,n=n+Math.imul(R,ue)|0,i=(i=i+Math.imul(R,le)|0)+Math.imul(O,ue)|0,o=o+Math.imul(O,le)|0,n=n+Math.imul(P,fe)|0,i=(i=i+Math.imul(P,ce)|0)+Math.imul(I,fe)|0,o=o+Math.imul(I,ce)|0;var Ie=(l+(n=n+Math.imul(k,pe)|0)|0)+((8191&(i=(i=i+Math.imul(k,ve)|0)+Math.imul(N,pe)|0))<<13)|0;l=((o=o+Math.imul(N,ve)|0)+(i>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,n=Math.imul(U,oe),i=(i=Math.imul(U,se))+Math.imul(F,oe)|0,o=Math.imul(F,se),n=n+Math.imul(L,ue)|0,i=(i=i+Math.imul(L,le)|0)+Math.imul(D,ue)|0,o=o+Math.imul(D,le)|0,n=n+Math.imul(R,fe)|0,i=(i=i+Math.imul(R,ce)|0)+Math.imul(O,fe)|0,o=o+Math.imul(O,ce)|0;var Te=(l+(n=n+Math.imul(P,pe)|0)|0)+((8191&(i=(i=i+Math.imul(P,ve)|0)+Math.imul(I,pe)|0))<<13)|0;l=((o=o+Math.imul(I,ve)|0)+(i>>>13)|0)+(Te>>>26)|0,Te&=67108863,n=Math.imul(U,ue),i=(i=Math.imul(U,le))+Math.imul(F,ue)|0,o=Math.imul(F,le),n=n+Math.imul(L,fe)|0,i=(i=i+Math.imul(L,ce)|0)+Math.imul(D,fe)|0,o=o+Math.imul(D,ce)|0;var Re=(l+(n=n+Math.imul(R,pe)|0)|0)+((8191&(i=(i=i+Math.imul(R,ve)|0)+Math.imul(O,pe)|0))<<13)|0;l=((o=o+Math.imul(O,ve)|0)+(i>>>13)|0)+(Re>>>26)|0,Re&=67108863,n=Math.imul(U,fe),i=(i=Math.imul(U,ce))+Math.imul(F,fe)|0,o=Math.imul(F,ce);var Oe=(l+(n=n+Math.imul(L,pe)|0)|0)+((8191&(i=(i=i+Math.imul(L,ve)|0)+Math.imul(D,pe)|0))<<13)|0;l=((o=o+Math.imul(D,ve)|0)+(i>>>13)|0)+(Oe>>>26)|0,Oe&=67108863;var Ce=(l+(n=Math.imul(U,pe))|0)+((8191&(i=(i=Math.imul(U,ve))+Math.imul(F,pe)|0))<<13)|0;return l=((o=Math.imul(F,ve))+(i>>>13)|0)+(Ce>>>26)|0,Ce&=67108863,u[0]=ye,u[1]=me,u[2]=ge,u[3]=be,u[4]=we,u[5]=_e,u[6]=Me,u[7]=Ae,u[8]=Ee,u[9]=Se,u[10]=ke,u[11]=Ne,u[12]=xe,u[13]=Pe,u[14]=Ie,u[15]=Te,u[16]=Re,u[17]=Oe,u[18]=Ce,0!==l&&(u[19]=l,r.length++),r};function a(e,t,r){return(new u).mulp(e,t,r)}function u(e,t){this.x=e,this.y=t}Math.imul||(o=i),m.prototype.mulTo=function(e,t){var r=this.length+e.length;return 10===this.length&&10===e.length?o(this,e,t):r<63?i(this,e,t):r<1024?function(e,t,r){r.negative=t.negative^e.negative,r.length=e.length+t.length;for(var n=0,i=0,o=0;o>>26)|0)>>>26,s&=67108863}r.words[o]=a,n=s,s=i}return 0!==n?r.words[o]=n:r.length--,r.strip()}(this,e,t):a(this,e,t)},u.prototype.makeRBT=function(e){for(var t=new Array(e),r=m.prototype._countBits(e)-1,n=0;n>=1;return n},u.prototype.permute=function(e,t,r,n,i,o){for(var s=0;s>>=1)i++;return 1<>>=13,r[2*o+1]=8191&i,i>>>=13;for(o=2*t;o>=26,t+=n/67108864|0,t+=i>>>26,this.words[r]=67108863&i}return 0!==t&&(this.words[r]=t,this.length++),this},m.prototype.muln=function(e){return this.clone().imuln(e)},m.prototype.sqr=function(){return this.mul(this)},m.prototype.isqr=function(){return this.imul(this.clone())},m.prototype.pow=function(e){var t=function(e){for(var t=new Array(e.bitLength()),r=0;r>>i}return t}(e);if(0===t.length)return new m(1);for(var r=this,n=0;n>>26-r<<26-r;if(0!=r){var o=0;for(t=0;t>>26-r}o&&(this.words[t]=o,this.length++)}if(0!=n){for(t=this.length-1;0<=t;t--)this.words[t+n]=this.words[t];for(t=0;t>>i<o)for(this.length-=o,u=0;u>>i,l=h&s}return a&&0!==l&&(a.words[a.length++]=l),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},m.prototype.ishrn=function(e,t,r){return y(0===this.negative),this.iushrn(e,t,r)},m.prototype.shln=function(e){return this.clone().ishln(e)},m.prototype.ushln=function(e){return this.clone().iushln(e)},m.prototype.shrn=function(e){return this.clone().ishrn(e)},m.prototype.ushrn=function(e){return this.clone().iushrn(e)},m.prototype.testn=function(e){y("number"==typeof e&&0<=e);var t=e%26,r=(e-t)/26,n=1<>>t<>26)-(a/67108864|0),this.words[n+r]=67108863&i}for(;n>26,this.words[n+r]=67108863&i;if(0===s)return this.strip();for(y(-1===s),n=s=0;n>26,this.words[n]=67108863&i;return this.negative=1,this.strip()},m.prototype._wordDiv=function(e,t){var r=(this.length,e.length),n=this.clone(),i=e,o=0|i.words[i.length-1];0!=(r=26-this._countBits(o))&&(i=i.ushln(r),n.iushln(r),o=0|i.words[i.length-1]);var s,a=n.length-i.length;if("mod"!==t){(s=new m(null)).length=1+a,s.words=new Array(s.length);for(var u=0;uthis.length||this.cmp(e)<0?{div:new m(0),mod:this}:1===e.length?"div"===t?{div:this.divn(e.words[0]),mod:null}:"mod"===t?{div:null,mod:new m(this.modn(e.words[0]))}:{div:this.divn(e.words[0]),mod:new m(this.modn(e.words[0]))}:this._wordDiv(e,t);var n,i,o},m.prototype.div=function(e){return this.divmod(e,"div",!1).div},m.prototype.mod=function(e){return this.divmod(e,"mod",!1).mod},m.prototype.umod=function(e){return this.divmod(e,"mod",!0).mod},m.prototype.divRound=function(e){var t=this.divmod(e);if(t.mod.isZero())return t.div;var r=0!==t.div.negative?t.mod.isub(e):t.mod,n=e.ushrn(1),i=e.andln(1),o=r.cmp(n);return o<0||1===i&&0===o?t.div:0!==t.div.negative?t.div.isubn(1):t.div.iaddn(1)},m.prototype.modn=function(e){y(e<=67108863);for(var t=(1<<26)%e,r=0,n=this.length-1;0<=n;n--)r=(t*r+(0|this.words[n]))%e;return r},m.prototype.idivn=function(e){y(e<=67108863);for(var t=0,r=this.length-1;0<=r;r--){var n=(0|this.words[r])+67108864*t;this.words[r]=n/e|0,t=n%e}return this.strip()},m.prototype.divn=function(e){return this.clone().idivn(e)},m.prototype.egcd=function(e){y(0===e.negative),y(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var n=new m(1),i=new m(0),o=new m(0),s=new m(1),a=0;t.isEven()&&r.isEven();)t.iushrn(1),r.iushrn(1),++a;for(var u=r.clone(),l=t.clone();!t.isZero();){for(var h=0,f=1;0==(t.words[0]&f)&&h<26;++h,f<<=1);if(0>>26,s&=67108863,this.words[o]=s}return 0!==i&&(this.words[o]=i,this.length++),this},m.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},m.prototype.cmpn=function(e){var t,r=e<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),1e.length)return 1;if(this.lengththis.n;);var n=t>>22,i=o}i>>>=22,0===(e.words[n-10]=i)&&10>>=26,e.words[r]=i,t=n}return 0!==t&&(e.words[e.length++]=t),e},m._prime=function(e){if(l[e])return l[e];var t;if("k256"===e)t=new v;else if("p224"===e)t=new g;else if("p192"===e)t=new b;else{if("p25519"!==e)throw new Error("Unknown prime "+e);t=new w}return l[e]=t},_.prototype._verify1=function(e){y(0===e.negative,"red works only with positives"),y(e.red,"red works only with red numbers")},_.prototype._verify2=function(e,t){y(0==(e.negative|t.negative),"red works only with positives"),y(e.red&&e.red===t.red,"red works only with red numbers")},_.prototype.imod=function(e){return this.prime?this.prime.ireduce(e)._forceRed(this):e.umod(this.m)._forceRed(this)},_.prototype.neg=function(e){return e.isZero()?e.clone():this.m.sub(e)._forceRed(this)},_.prototype.add=function(e,t){this._verify2(e,t);var r=e.add(t);return 0<=r.cmp(this.m)&&r.isub(this.m),r._forceRed(this)},_.prototype.iadd=function(e,t){this._verify2(e,t);var r=e.iadd(t);return 0<=r.cmp(this.m)&&r.isub(this.m),r},_.prototype.sub=function(e,t){this._verify2(e,t);var r=e.sub(t);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},_.prototype.isub=function(e,t){this._verify2(e,t);var r=e.isub(t);return r.cmpn(0)<0&&r.iadd(this.m),r},_.prototype.shl=function(e,t){return this._verify1(e),this.imod(e.ushln(t))},_.prototype.imul=function(e,t){return this._verify2(e,t),this.imod(e.imul(t))},_.prototype.mul=function(e,t){return this._verify2(e,t),this.imod(e.mul(t))},_.prototype.isqr=function(e){return this.imul(e,e.clone())},_.prototype.sqr=function(e){return this.mul(e,e)},_.prototype.sqrt=function(e){if(e.isZero())return e.clone();var t=this.m.andln(3);if(y(t%2==1),3===t){var r=this.m.add(new m(1)).iushrn(2);return this.pow(e,r)}for(var n=this.m.subn(1),i=0;!n.isZero()&&0===n.andln(1);)i++,n.iushrn(1);y(!n.isZero());var o=new m(1).toRed(this),s=o.redNeg(),a=this.m.subn(1).iushrn(1),u=this.m.bitLength();for(u=new m(2*u*u).toRed(this);0!==this.pow(u,a).cmp(s);)u.redIAdd(s);for(var l=this.pow(u,n),h=this.pow(e,n.addn(1).iushrn(1)),f=this.pow(e,n),c=i;0!==f.cmp(o);){for(var d=f,p=0;0!==d.cmp(o);p++)d=d.redSqr();y(p>l&1;i!==r[0]&&(i=this.sqr(i)),0!=h||0!==o?(o<<=1,o|=h,(4===++s||0===n&&0===l)&&(i=this.mul(i,r[o]),o=s=0)):s=0}a=26}return i},_.prototype.convertTo=function(e){var t=e.umod(this.m);return t===e?t.clone():t},_.prototype.convertFrom=function(e){var t=e.clone();return t.red=null,t},m.mont=function(e){return new M(e)},r(M,_),M.prototype.convertTo=function(e){return this.imod(e.ushln(this.shift))},M.prototype.convertFrom=function(e){var t=this.imod(e.mul(this.rinv));return t.red=null,t},M.prototype.imul=function(e,t){if(e.isZero()||t.isZero())return e.words[0]=0,e.length=1,e;var r=e.imul(t),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),o=i;return 0<=i.cmp(this.m)?o=i.isub(this.m):i.cmpn(0)<0&&(o=i.iadd(this.m)),o._forceRed(this)},M.prototype.mul=function(e,t){if(e.isZero()||t.isZero())return new m(0)._forceRed(this);var r=e.mul(t),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),o=i;return 0<=i.cmp(this.m)?o=i.isub(this.m):i.cmpn(0)<0&&(o=i.iadd(this.m)),o._forceRed(this)},M.prototype.invm=function(e){return this.imod(e._invmp(this.m).mul(this.r2))._forceRed(this)}}(void 0===e||e,this)},{buffer:11}],10:[function(e,t,r){(function(r){t.exports=function(e){var t=new Uint8Array(e);return(r.crypto||r.msCrypto).getRandomValues(t),t}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],11:[function(e,t,r){},{}],12:[function(e,t,r){"use strict";var n=r;n.version=e("../package.json").version,n.utils=e("./elliptic/utils"),n.rand=e("brorand"),n.curve=e("./elliptic/curve"),n.curves=e("./elliptic/curves"),n.ec=e("./elliptic/ec"),n.eddsa=e("./elliptic/eddsa")},{"../package.json":25,"./elliptic/curve":15,"./elliptic/curves":18,"./elliptic/ec":19,"./elliptic/eddsa":22,"./elliptic/utils":24,brorand:10}],13:[function(e,t,r){"use strict";var n=e("bn.js"),i=e("../utils"),S=i.getNAF,k=i.getJSF,f=i.assert;function o(e,t){this.type=e,this.p=new n(t.p,16),this.red=t.prime?n.red(t.prime):n.mont(this.p),this.zero=new n(0).toRed(this.red),this.one=new n(1).toRed(this.red),this.two=new n(2).toRed(this.red),this.n=t.n&&new n(t.n,16),this.g=t.g&&this.pointFromJSON(t.g,t.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var r=this.n&&this.p.div(this.n);!r||0>1]):s.mixedAdd(i[-u-1>>1].neg()):0>1]):s.add(i[-u-1>>1].neg())}return"affine"===e.type?s.toP():s},o.prototype._wnafMulAdd=function(e,t,r,n,i){for(var o=this._wnafT1,s=this._wnafT2,a=this._wnafT3,u=0,l=0;l>1]:E<0&&(A=s[y][-E-1>>1].neg()),b="affine"===A.type?b.mixedAdd(A):b.add(A))}}for(l=0;l=Math.ceil((e.bitLength()+1)/t.step)},s.prototype._getDoubles=function(e,t){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var r=[this],n=this,i=0;i":""},u.prototype.isInfinity=function(){return this.inf},u.prototype.add=function(e){if(this.inf)return e;if(e.inf)return this;if(this.eq(e))return this.dbl();if(this.neg().eq(e))return this.curve.point(null,null);if(0===this.x.cmp(e.x))return this.curve.point(null,null);var t=this.y.redSub(e.y);0!==t.cmpn(0)&&(t=t.redMul(this.x.redSub(e.x).redInvm()));var r=t.redSqr().redISub(this.x).redISub(e.x),n=t.redMul(this.x.redSub(r)).redISub(this.y);return this.curve.point(r,n)},u.prototype.dbl=function(){if(this.inf)return this;var e=this.y.redAdd(this.y);if(0===e.cmpn(0))return this.curve.point(null,null);var t=this.curve.a,r=this.x.redSqr(),n=e.redInvm(),i=r.redAdd(r).redIAdd(r).redIAdd(t).redMul(n),o=i.redSqr().redISub(this.x.redAdd(this.x)),s=i.redMul(this.x.redSub(o)).redISub(this.y);return this.curve.point(o,s)},u.prototype.getX=function(){return this.x.fromRed()},u.prototype.getY=function(){return this.y.fromRed()},u.prototype.mul=function(e){return e=new _(e,16),this.isInfinity()?this:this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve.endo?this.curve._endoWnafMulAdd([this],[e]):this.curve._wnafMul(this,e)},u.prototype.mulAdd=function(e,t,r){var n=[this,t],i=[e,r];return this.curve.endo?this.curve._endoWnafMulAdd(n,i):this.curve._wnafMulAdd(1,n,i,2)},u.prototype.jmulAdd=function(e,t,r){var n=[this,t],i=[e,r];return this.curve.endo?this.curve._endoWnafMulAdd(n,i,!0):this.curve._wnafMulAdd(1,n,i,2,!0)},u.prototype.eq=function(e){return this===e||this.inf===e.inf&&(this.inf||0===this.x.cmp(e.x)&&0===this.y.cmp(e.y))},u.prototype.neg=function(e){if(this.inf)return this;var t=this.curve.point(this.x,this.y.redNeg());if(e&&this.precomputed){var r=this.precomputed,n=function(e){return e.neg()};t.precomputed={naf:r.naf&&{wnd:r.naf.wnd,points:r.naf.points.map(n)},doubles:r.doubles&&{step:r.doubles.step,points:r.doubles.points.map(n)}}}return t},u.prototype.toJ=function(){return this.inf?this.curve.jpoint(null,null,null):this.curve.jpoint(this.x,this.y,this.curve.one)},i(l,o.BasePoint),a.prototype.jpoint=function(e,t,r){return new l(this,e,t,r)},l.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var e=this.z.redInvm(),t=e.redSqr(),r=this.x.redMul(t),n=this.y.redMul(t).redMul(e);return this.curve.point(r,n)},l.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},l.prototype.add=function(e){if(this.isInfinity())return e;if(e.isInfinity())return this;var t=e.z.redSqr(),r=this.z.redSqr(),n=this.x.redMul(t),i=e.x.redMul(r),o=this.y.redMul(t.redMul(e.z)),s=e.y.redMul(r.redMul(this.z)),a=n.redSub(i),u=o.redSub(s);if(0===a.cmpn(0))return 0!==u.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var l=a.redSqr(),h=l.redMul(a),f=n.redMul(l),c=u.redSqr().redIAdd(h).redISub(f).redISub(f),d=u.redMul(f.redISub(c)).redISub(o.redMul(h)),p=this.z.redMul(e.z).redMul(a);return this.curve.jpoint(c,d,p)},l.prototype.mixedAdd=function(e){if(this.isInfinity())return e.toJ();if(e.isInfinity())return this;var t=this.z.redSqr(),r=this.x,n=e.x.redMul(t),i=this.y,o=e.y.redMul(t).redMul(this.z),s=r.redSub(n),a=i.redSub(o);if(0===s.cmpn(0))return 0!==a.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var u=s.redSqr(),l=u.redMul(s),h=r.redMul(u),f=a.redSqr().redIAdd(l).redISub(h).redISub(h),c=a.redMul(h.redISub(f)).redISub(i.redMul(l)),d=this.z.redMul(s);return this.curve.jpoint(f,c,d)},l.prototype.dblp=function(e){if(0===e)return this;if(this.isInfinity())return this;if(!e)return this.dbl();if(this.curve.zeroA||this.curve.threeA){for(var t=this,r=0;r":""},l.prototype.isInfinity=function(){return 0===this.z.cmpn(0)}},{"../utils":24,"./base":13,"bn.js":9,inherits:39}],18:[function(e,t,r){"use strict";var n,i=r,o=e("hash.js"),s=e("./curve"),a=e("./utils").assert;function u(e){"short"===e.type?this.curve=new s.short(e):"edwards"===e.type?this.curve=new s.edwards(e):this.curve=new s.mont(e),this.g=this.curve.g,this.n=this.curve.n,this.hash=e.hash,a(this.g.validate(),"Invalid curve"),a(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}function l(t,r){Object.defineProperty(i,t,{configurable:!0,enumerable:!0,get:function(){var e=new u(r);return Object.defineProperty(i,t,{configurable:!0,enumerable:!0,value:e}),e}})}i.PresetCurve=u,l("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:o.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),l("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:o.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),l("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:o.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),l("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:o.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),l("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:o.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),l("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:o.sha256,gRed:!1,g:["9"]}),l("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:o.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});try{n=e("./precomputed/secp256k1")}catch(e){n=void 0}l("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:o.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",n]})},{"./curve":15,"./precomputed/secp256k1":23,"./utils":24,"hash.js":26}],19:[function(e,t,r){"use strict";var y=e("bn.js"),m=e("hmac-drbg"),n=e("../utils"),i=e("../curves"),o=e("brorand"),d=n.assert,s=e("./key"),g=e("./signature");function a(e){if(!(this instanceof a))return new a(e);"string"==typeof e&&(d(i.hasOwnProperty(e),"Unknown curve "+e),e=i[e]),e instanceof i.PresetCurve&&(e={curve:e}),this.curve=e.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=e.curve.g,this.g.precompute(e.curve.n.bitLength()+1),this.hash=e.hash||e.curve.hash}(t.exports=a).prototype.keyPair=function(e){return new s(this,e)},a.prototype.keyFromPrivate=function(e,t){return s.fromPrivate(this,e,t)},a.prototype.keyFromPublic=function(e,t){return s.fromPublic(this,e,t)},a.prototype.genKeyPair=function(e){e=e||{};for(var t=new m({hash:this.hash,pers:e.pers,persEnc:e.persEnc||"utf8",entropy:e.entropy||o(this.hash.hmacStrength),entropyEnc:e.entropy&&e.entropyEnc||"utf8",nonce:this.n.toArray()}),r=this.n.byteLength(),n=this.n.sub(new y(2));;){var i=new y(t.generate(r));if(!(0>1;if(0<=s.cmp(this.curve.p.umod(this.curve.n))&&l)throw new Error("Unable to find sencond key candinate");s=l?this.curve.pointFromX(s.add(this.curve.n),u):this.curve.pointFromX(s,u);var h=t.r.invm(i),f=i.sub(o).mul(h).umod(i),c=a.mul(h).umod(i);return this.g.mulAdd(f,s,c)},a.prototype.getKeyRecoveryParam=function(e,t,r,n){if(null!==(t=new g(t,n)).recoveryParam)return t.recoveryParam;for(var i=0;i<4;i++){var o;try{o=this.recoverPubKey(e,t,i)}catch(e){continue}if(o.eq(r))return i}throw new Error("Unable to find valid recovery factor")}},{"../curves":18,"../utils":24,"./key":20,"./signature":21,"bn.js":9,brorand:10,"hmac-drbg":38}],20:[function(e,t,r){"use strict";var n=e("bn.js"),i=e("../utils").assert;function o(e,t){this.ec=e,this.priv=null,this.pub=null,t.priv&&this._importPrivate(t.priv,t.privEnc),t.pub&&this._importPublic(t.pub,t.pubEnc)}(t.exports=o).fromPublic=function(e,t,r){return t instanceof o?t:new o(e,{pub:t,pubEnc:r})},o.fromPrivate=function(e,t,r){return t instanceof o?t:new o(e,{priv:t,privEnc:r})},o.prototype.validate=function(){var e=this.getPublic();return e.isInfinity()?{result:!1,reason:"Invalid public key"}:e.validate()?e.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}},o.prototype.getPublic=function(e,t){return"string"==typeof e&&(t=e,e=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),t?this.pub.encode(t,e):this.pub},o.prototype.getPrivate=function(e){return"hex"===e?this.priv.toString(16,2):this.priv},o.prototype._importPrivate=function(e,t){this.priv=new n(e,t||16),this.priv=this.priv.umod(this.ec.curve.n)},o.prototype._importPublic=function(e,t){if(e.x||e.y)return"mont"===this.ec.curve.type?i(e.x,"Need x coordinate"):"short"!==this.ec.curve.type&&"edwards"!==this.ec.curve.type||i(e.x&&e.y,"Need both x and y coordinate"),void(this.pub=this.ec.curve.point(e.x,e.y));this.pub=this.ec.curve.decodePoint(e,t)},o.prototype.derive=function(e){return e.mul(this.priv).getX()},o.prototype.sign=function(e,t,r){return this.ec.sign(e,this,t,r)},o.prototype.verify=function(e,t){return this.ec.verify(e,t,this)},o.prototype.inspect=function(){return""}},{"../utils":24,"bn.js":9}],21:[function(e,t,r){"use strict";var a=e("bn.js"),u=e("../utils"),n=u.assert;function i(e,t){if(e instanceof i)return e;this._importDER(e,t)||(n(e.r&&e.s,"Signature without r or s"),this.r=new a(e.r,16),this.s=new a(e.s,16),void 0===e.recoveryParam?this.recoveryParam=null:this.recoveryParam=e.recoveryParam)}function l(){this.place=0}function h(e,t){var r=e[t.place++];if(!(128&r))return r;for(var n=15&r,i=0,o=0,s=t.place;o>>3);for(e.push(128|r);--r;)e.push(t>>>(r<<3)&255);e.push(t)}}(t.exports=i).prototype._importDER=function(e,t){e=u.toArray(e,t);var r=new l;if(48!==e[r.place++])return!1;if(h(e,r)+r.place!==e.length)return!1;if(2!==e[r.place++])return!1;var n=h(e,r),i=e.slice(r.place,n+r.place);if(r.place+=n,2!==e[r.place++])return!1;var o=h(e,r);if(e.length!==o+r.place)return!1;var s=e.slice(r.place,o+r.place);return 0===i[0]&&128&i[1]&&(i=i.slice(1)),0===s[0]&&128&s[1]&&(s=s.slice(1)),this.r=new a(i),this.s=new a(s),!(this.recoveryParam=null)},i.prototype.toDER=function(e){var t=this.r.toArray(),r=this.s.toArray();for(128&t[0]&&(t=[0].concat(t)),128&r[0]&&(r=[0].concat(r)),t=s(t),r=s(r);!(r[0]||128&r[1]);)r=r.slice(1);var n=[2];f(n,t.length),(n=n.concat(t)).push(2),f(n,r.length);var i=n.concat(r),o=[48];return f(o,i.length),o=o.concat(i),u.encode(o,e)}},{"../utils":24,"bn.js":9}],22:[function(e,t,r){arguments[4][14][0].apply(r,arguments)},{dup:14}],23:[function(e,t,r){t.exports=void 0},{}],24:[function(e,t,r){"use strict";var n=r,i=e("bn.js"),o=e("minimalistic-assert"),s=e("minimalistic-crypto-utils");n.assert=o,n.toArray=s.toArray,n.zero2=s.zero2,n.toHex=s.toHex,n.encode=s.encode,n.getNAF=function(e,t,r){var n=new Array(Math.max(e.bitLength(),r)+1);n.fill(0);for(var i=1<>1)-1>1)-u:u,o.isubn(a)):a=0,n[s]=a,o.iushrn(1)}return n},n.getJSF=function(e,t){var r=[[],[]];e=e.clone(),t=t.clone();for(var n=0,i=0;0=this._delta8){var r=(e=this.pending).length%this._delta8;this.pending=e.slice(e.length-r,e.length),0===this.pending.length&&(this.pending=null),e=i.join32(e,0,e.length-r,this.endian);for(var n=0;n>>24&255,n[i++]=e>>>16&255,n[i++]=e>>>8&255,n[i++]=255&e}else for(n[i++]=255&e,n[i++]=e>>>8&255,n[i++]=e>>>16&255,n[i++]=e>>>24&255,n[i++]=0,n[i++]=0,n[i++]=0,n[i++]=0,o=8;othis.blockSize&&(e=(new this.Hash).update(e).digest()),i(e.length<=this.blockSize);for(var t=e.length;t>>3},r.g1_256=function(e){return n(e,17)^n(e,19)^e>>>10}},{"../utils":37}],37:[function(e,t,r){"use strict";var l=e("minimalistic-assert"),n=e("inherits");function o(e){return(e>>>24|e>>>8&65280|e<<8&16711680|(255&e)<<24)>>>0}function i(e){return 1===e.length?"0"+e:e}function s(e){return 7===e.length?"0"+e:6===e.length?"00"+e:5===e.length?"000"+e:4===e.length?"0000"+e:3===e.length?"00000"+e:2===e.length?"000000"+e:1===e.length?"0000000"+e:e}r.inherits=n,r.toArray=function(e,t){if(Array.isArray(e))return e.slice();if(!e)return[];var r=[];if("string"==typeof e)if(t){if("hex"===t)for((e=e.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(e="0"+e),n=0;n>8,s=255&i;o?r.push(o,s):r.push(s)}else for(n=0;n>>0}return o},r.split32=function(e,t){for(var r=new Array(4*e.length),n=0,i=0;n>>24,r[i+1]=o>>>16&255,r[i+2]=o>>>8&255,r[i+3]=255&o):(r[i+3]=o>>>24,r[i+2]=o>>>16&255,r[i+1]=o>>>8&255,r[i]=255&o)}return r},r.rotr32=function(e,t){return e>>>t|e<<32-t},r.rotl32=function(e,t){return e<>>32-t},r.sum32=function(e,t){return e+t>>>0},r.sum32_3=function(e,t,r){return e+t+r>>>0},r.sum32_4=function(e,t,r,n){return e+t+r+n>>>0},r.sum32_5=function(e,t,r,n,i){return e+t+r+n+i>>>0},r.sum64=function(e,t,r,n){var i=e[t],o=n+e[t+1]>>>0,s=(o>>0,e[t+1]=o},r.sum64_hi=function(e,t,r,n){return(t+n>>>0>>0},r.sum64_lo=function(e,t,r,n){return t+n>>>0},r.sum64_4_hi=function(e,t,r,n,i,o,s,a){var u=0,l=t;return u+=(l=l+n>>>0)>>0)>>0)>>0},r.sum64_4_lo=function(e,t,r,n,i,o,s,a){return t+n+o+a>>>0},r.sum64_5_hi=function(e,t,r,n,i,o,s,a,u,l){var h=0,f=t;return h+=(f=f+n>>>0)>>0)>>0)>>0)>>0},r.sum64_5_lo=function(e,t,r,n,i,o,s,a,u,l){return t+n+o+a+l>>>0},r.rotr64_hi=function(e,t,r){return(t<<32-r|e>>>r)>>>0},r.rotr64_lo=function(e,t,r){return(e<<32-r|t>>>r)>>>0},r.shr64_hi=function(e,t,r){return e>>>r},r.shr64_lo=function(e,t,r){return(e<<32-r|t>>>r)>>>0}},{inherits:39,"minimalistic-assert":41}],38:[function(e,t,r){"use strict";var n=e("hash.js"),s=e("minimalistic-crypto-utils"),i=e("minimalistic-assert");function o(e){if(!(this instanceof o))return new o(e);this.hash=e.hash,this.predResist=!!e.predResist,this.outLen=this.hash.outSize,this.minEntropy=e.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var t=s.toArray(e.entropy,e.entropyEnc||"hex"),r=s.toArray(e.nonce,e.nonceEnc||"hex"),n=s.toArray(e.pers,e.persEnc||"hex");i(t.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(t,r,n)}(t.exports=o).prototype._init=function(e,t,r){var n=e.concat(t).concat(r);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var i=0;i=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(e.concat(r||[])),this._reseed=1},o.prototype.generate=function(e,t,r,n){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");"string"!=typeof t&&(n=r,r=t,t=null),r&&(r=s.toArray(r,n||"hex"),this._update(r));for(var i=[];i.length>5,this.byteCount=this.blockCount<<2,this.outputBlocks=r>>5,this.extraBytes=(31&r)>>3;for(var n=0;n<50;++n)this.s[n]=0}m.prototype.update=function(e){var t="string"!=typeof e;t&&e.constructor===ArrayBuffer&&(e=new Uint8Array(e));for(var r,n,i=e.length,o=this.blocks,s=this.byteCount,a=this.blockCount,u=0,l=this.s;u>2]|=e[u]<>2]|=n<>2]|=(192|n>>6)<>2]|=(224|n>>12)<>2]|=(240|n>>18)<>2]|=(128|n>>12&63)<>2]|=(128|n>>6&63)<>2]|=(128|63&n)<>2]|=this.padding[3&t],this.lastByteIndex===this.byteCount)for(e[0]=e[r],t=1;t>4&15]+u[15&e]+u[e>>12&15]+u[e>>8&15]+u[e>>20&15]+u[e>>16&15]+u[e>>28&15]+u[e>>24&15];s%t==0&&(g(r),o=0)}return i&&(e=r[o],0>4&15]+u[15&e]),1>12&15]+u[e>>8&15]),2>20&15]+u[e>>16&15])),a},m.prototype.buffer=m.prototype.arrayBuffer=function(){this.finalize();var e,t=this.blockCount,r=this.s,n=this.outputBlocks,i=this.extraBytes,o=0,s=0,a=this.outputBits>>3;e=i?new ArrayBuffer(n+1<<2):new ArrayBuffer(a);for(var u=new Uint32Array(e);s>8&255,u[e+2]=t>>16&255,u[e+3]=t>>24&255;a%r==0&&g(n)}return o&&(e=a<<2,t=n[s],0>8&255),2>16&255)),u};var g=function(e){var t,r,n,i,o,s,a,u,l,h,f,c,d,p,v,y,m,g,b,w,_,M,A,E,S,k,N,x,P,I,T,R,O,C,L,D,B,U,F,j,G,H,z,V,K,q,W,Z,J,X,$,Q,Y,ee,te,re,ne,ie,oe,se,ae,ue,le;for(n=0;n<48;n+=2)i=e[0]^e[10]^e[20]^e[30]^e[40],o=e[1]^e[11]^e[21]^e[31]^e[41],s=e[2]^e[12]^e[22]^e[32]^e[42],a=e[3]^e[13]^e[23]^e[33]^e[43],u=e[4]^e[14]^e[24]^e[34]^e[44],l=e[5]^e[15]^e[25]^e[35]^e[45],h=e[6]^e[16]^e[26]^e[36]^e[46],f=e[7]^e[17]^e[27]^e[37]^e[47],t=(c=e[8]^e[18]^e[28]^e[38]^e[48])^(s<<1|a>>>31),r=(d=e[9]^e[19]^e[29]^e[39]^e[49])^(a<<1|s>>>31),e[0]^=t,e[1]^=r,e[10]^=t,e[11]^=r,e[20]^=t,e[21]^=r,e[30]^=t,e[31]^=r,e[40]^=t,e[41]^=r,t=i^(u<<1|l>>>31),r=o^(l<<1|u>>>31),e[2]^=t,e[3]^=r,e[12]^=t,e[13]^=r,e[22]^=t,e[23]^=r,e[32]^=t,e[33]^=r,e[42]^=t,e[43]^=r,t=s^(h<<1|f>>>31),r=a^(f<<1|h>>>31),e[4]^=t,e[5]^=r,e[14]^=t,e[15]^=r,e[24]^=t,e[25]^=r,e[34]^=t,e[35]^=r,e[44]^=t,e[45]^=r,t=u^(c<<1|d>>>31),r=l^(d<<1|c>>>31),e[6]^=t,e[7]^=r,e[16]^=t,e[17]^=r,e[26]^=t,e[27]^=r,e[36]^=t,e[37]^=r,e[46]^=t,e[47]^=r,t=h^(i<<1|o>>>31),r=f^(o<<1|i>>>31),e[8]^=t,e[9]^=r,e[18]^=t,e[19]^=r,e[28]^=t,e[29]^=r,e[38]^=t,e[39]^=r,e[48]^=t,e[49]^=r,p=e[0],v=e[1],q=e[11]<<4|e[10]>>>28,W=e[10]<<4|e[11]>>>28,x=e[20]<<3|e[21]>>>29,P=e[21]<<3|e[20]>>>29,se=e[31]<<9|e[30]>>>23,ae=e[30]<<9|e[31]>>>23,H=e[40]<<18|e[41]>>>14,z=e[41]<<18|e[40]>>>14,C=e[2]<<1|e[3]>>>31,L=e[3]<<1|e[2]>>>31,y=e[13]<<12|e[12]>>>20,m=e[12]<<12|e[13]>>>20,Z=e[22]<<10|e[23]>>>22,J=e[23]<<10|e[22]>>>22,I=e[33]<<13|e[32]>>>19,T=e[32]<<13|e[33]>>>19,ue=e[42]<<2|e[43]>>>30,le=e[43]<<2|e[42]>>>30,ee=e[5]<<30|e[4]>>>2,te=e[4]<<30|e[5]>>>2,D=e[14]<<6|e[15]>>>26,B=e[15]<<6|e[14]>>>26,g=e[25]<<11|e[24]>>>21,b=e[24]<<11|e[25]>>>21,X=e[34]<<15|e[35]>>>17,$=e[35]<<15|e[34]>>>17,R=e[45]<<29|e[44]>>>3,O=e[44]<<29|e[45]>>>3,E=e[6]<<28|e[7]>>>4,S=e[7]<<28|e[6]>>>4,re=e[17]<<23|e[16]>>>9,ne=e[16]<<23|e[17]>>>9,U=e[26]<<25|e[27]>>>7,F=e[27]<<25|e[26]>>>7,w=e[36]<<21|e[37]>>>11,_=e[37]<<21|e[36]>>>11,Q=e[47]<<24|e[46]>>>8,Y=e[46]<<24|e[47]>>>8,V=e[8]<<27|e[9]>>>5,K=e[9]<<27|e[8]>>>5,k=e[18]<<20|e[19]>>>12,N=e[19]<<20|e[18]>>>12,ie=e[29]<<7|e[28]>>>25,oe=e[28]<<7|e[29]>>>25,j=e[38]<<8|e[39]>>>24,G=e[39]<<8|e[38]>>>24,M=e[48]<<14|e[49]>>>18,A=e[49]<<14|e[48]>>>18,e[0]=p^~y&g,e[1]=v^~m&b,e[10]=E^~k&x,e[11]=S^~N&P,e[20]=C^~D&U,e[21]=L^~B&F,e[30]=V^~q&Z,e[31]=K^~W&J,e[40]=ee^~re&ie,e[41]=te^~ne&oe,e[2]=y^~g&w,e[3]=m^~b&_,e[12]=k^~x&I,e[13]=N^~P&T,e[22]=D^~U&j,e[23]=B^~F&G,e[32]=q^~Z&X,e[33]=W^~J&$,e[42]=re^~ie&se,e[43]=ne^~oe&ae,e[4]=g^~w&M,e[5]=b^~_&A,e[14]=x^~I&R,e[15]=P^~T&O,e[24]=U^~j&H,e[25]=F^~G&z,e[34]=Z^~X&Q,e[35]=J^~$&Y,e[44]=ie^~se&ue,e[45]=oe^~ae&le,e[6]=w^~M&p,e[7]=_^~A&v,e[16]=I^~R&E,e[17]=T^~O&S,e[26]=j^~H&C,e[27]=G^~z&L,e[36]=X^~Q&V,e[37]=$^~Y&K,e[46]=se^~ue&ee,e[47]=ae^~le&te,e[8]=M^~p&y,e[9]=A^~v&m,e[18]=R^~E&k,e[19]=O^~S&N,e[28]=H^~C&D,e[29]=z^~L&B,e[38]=Q^~V&q,e[39]=Y^~K&W,e[48]=ue^~ee&re,e[49]=le^~te&ne,e[0]^=he[n],e[1]^=he[n+1]};if(t)_.exports=l;else for(c=0;c>8,s=255&i;o?r.push(o,s):r.push(s)}return r},n.zero2=i,n.toHex=o,n.encode=function(e,t){return"hex"===t?o(e):e}},{}],43:[function(e,t,r){t.exports={browser:!0}},{}],44:[function(e,r,o){(function(n){"use strict";function l(e){var y=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],m=1779033703,g=3144134277,b=1013904242,w=2773480762,_=1359893119,M=2600822924,A=528734635,E=1541459225,S=new Array(64);function t(e){for(var t=0,r=e.length;64<=r;){var n,i,o,s,a,u=m,l=g,h=b,f=w,c=_,d=M,p=A,v=E;for(i=0;i<16;i++)o=t+4*i,S[i]=(255&e[o])<<24|(255&e[o+1])<<16|(255&e[o+2])<<8|255&e[o+3];for(i=16;i<64;i++)s=((n=S[i-2])>>>17|n<<15)^(n>>>19|n<<13)^n>>>10,a=((n=S[i-15])>>>7|n<<25)^(n>>>18|n<<14)^n>>>3,S[i]=(s+S[i-7]|0)+(a+S[i-16]|0)|0;for(i=0;i<64;i++)s=(((c>>>6|c<<26)^(c>>>11|c<<21)^(c>>>25|c<<7))+(c&d^~c&p)|0)+(v+(y[i]+S[i]|0)|0)|0,a=((u>>>2|u<<30)^(u>>>13|u<<19)^(u>>>22|u<<10))+(u&l^u&h^l&h)|0,v=p,p=d,d=c,c=f+s|0,f=h,h=l,l=u,u=s+a|0;m=m+u|0,g=g+l|0,b=b+h|0,w=w+f|0,_=_+c|0,M=M+d|0,A=A+p|0,E=E+v|0,t+=64,r-=64}}t(e);var r,n=e.length%64,i=e.length/536870912|0,o=e.length<<3,s=n<56?56:120,a=e.slice(e.length-n,e.length);for(a.push(128),r=1+n;r>>24&255),a.push(i>>>16&255),a.push(i>>>8&255),a.push(i>>>0&255),a.push(o>>>24&255),a.push(o>>>16&255),a.push(o>>>8&255),a.push(o>>>0&255),t(a),[m>>>24&255,m>>>16&255,m>>>8&255,m>>>0&255,g>>>24&255,g>>>16&255,g>>>8&255,g>>>0&255,b>>>24&255,b>>>16&255,b>>>8&255,b>>>0&255,w>>>24&255,w>>>16&255,w>>>8&255,w>>>0&255,_>>>24&255,_>>>16&255,_>>>8&255,_>>>0&255,M>>>24&255,M>>>16&255,M>>>8&255,M>>>0&255,A>>>24&255,A>>>16&255,A>>>8&255,A>>>0&255,E>>>24&255,E>>>16&255,E>>>8&255,E>>>0&255]}function P(e,t,r){var n;e=e.length<=64?e:l(e);var i=64+t.length+4,o=new Array(i),s=new Array(64),a=[];for(n=0;n<64;n++)o[n]=54;for(n=0;n>>32-t}function s(e,t){R(e,0,t,0,16);for(var r=8;0>0&255),f.push(c[e]>>8&255),f.push(c[e]>>16&255),f.push(c[e]>>24&255);var i=P(o,f,l);return h(null,1,i)}N(x)};x()}var t,L;t=this,L=2147483647,void 0!==o?r.exports=e:t&&(t.scrypt&&(t._scrypt=t.scrypt),t.scrypt=e)}).call(this,e("timers").setImmediate)},{timers:46}],45:[function(e,t,r){(function(y,e,t){!function(r,n){"use strict";if(!r.setImmediate){var e,i,t,o,s=1,a={},u=!1,l=r.document,h=Object.getPrototypeOf&&Object.getPrototypeOf(r);h=h&&h.setTimeout?h:r,e="[object process]"==={}.toString.call(r.process)?function(){var e=f(arguments);return y.nextTick(c(d,e)),e}:function(){if(r.postMessage&&!r.importScripts){var e=!0,t=r.onmessage;return r.onmessage=function(){e=!1},r.postMessage("","*"),r.onmessage=t,e}}()?(o="setImmediate$"+Math.random()+"$",r.addEventListener?r.addEventListener("message",v,!1):r.attachEvent("onmessage",v),function(){var e=f(arguments);return r.postMessage(o+e,"*"),e}):r.MessageChannel?((t=new MessageChannel).port1.onmessage=function(e){d(e.data)},function(){var e=f(arguments);return t.port2.postMessage(e),e}):l&&"onreadystatechange"in l.createElement("script")?(i=l.documentElement,function(){var e=f(arguments),t=l.createElement("script");return t.onreadystatechange=function(){d(e),t.onreadystatechange=null,i.removeChild(t),t=null},i.appendChild(t),e}):function(){var e=f(arguments);return setTimeout(c(d,e),0),e},h.setImmediate=e,h.clearImmediate=p}function f(e){return a[s]=c.apply(n,e),s++}function c(e){var t=[].slice.call(arguments,1);return function(){"function"==typeof e?e.apply(n,t):new Function(""+e)()}}function d(e){if(u)setTimeout(c(d,e),0);else{var t=a[e];if(t){u=!0;try{t()}finally{p(e),u=!1}}}}function p(e){delete a[e]}function v(e){e.source===r&&"string"==typeof e.data&&0===e.data.indexOf(o)&&d(+e.data.slice(o.length))}}("undefined"==typeof self?void 0===e?this:e:self)}).call(this,e("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},e("timers").clearImmediate)},{_process:43,timers:46}],46:[function(e,t,r){(function(e){t.exports={setImmediate:e.setImmediate}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],47:[function(e,i,t){(function(e){var t;if(e.crypto&&crypto.getRandomValues){var r=new Uint8Array(16);t=function(){return crypto.getRandomValues(r),r}}if(!t){var n=new Array(16);t=function(){for(var e,t=0;t<16;t++)0==(3&t)&&(e=4294967296*Math.random()),n[t]=e>>>((3&t)<<3)&255;return n}}i.exports=t}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],48:[function(e,t,r){for(var s=e("./rng"),i=[],o={},n=0;n<256;n++)i[n]=(n+256).toString(16).substr(1),o[i[n]]=n;function d(e,t){var r=t||0,n=i;return n[e[r++]]+n[e[r++]]+n[e[r++]]+n[e[r++]]+"-"+n[e[r++]]+n[e[r++]]+"-"+n[e[r++]]+n[e[r++]]+"-"+n[e[r++]]+n[e[r++]]+"-"+n[e[r++]]+n[e[r++]]+n[e[r++]]+n[e[r++]]+n[e[r++]]+n[e[r++]]}var a=s(),p=[1|a[0],a[1],a[2],a[3],a[4],a[5]],v=16383&(a[6]<<8|a[7]),y=0,m=0;function u(e,t,r){var n=t&&r||0;"string"==typeof e&&(t="binary"==e?new Array(16):null,e=null);var i=(e=e||{}).random||(e.rng||s)();if(i[6]=15&i[6]|64,i[8]=63&i[8]|128,t)for(var o=0;o<16;o++)t[n+o]=i[o];return t||d(i)}var l=u;l.v1=function(e,t,r){var n=t&&r||0,i=t||[],o=void 0!==(e=e||{}).clockseq?e.clockseq:v,s=void 0!==e.msecs?e.msecs:(new Date).getTime(),a=void 0!==e.nsecs?e.nsecs:m+1,u=s-y+(a-m)/1e4;if(u<0&&void 0===e.clockseq&&(o=o+1&16383),(u<0||y>>24&255,i[n++]=l>>>16&255,i[n++]=l>>>8&255,i[n++]=255&l;var h=s/4294967296*1e4&268435455;i[n++]=h>>>8&255,i[n++]=255&h,i[n++]=h>>>24&15|16,i[n++]=h>>>16&255,i[n++]=o>>>8|128,i[n++]=255&o;for(var f=e.node||p,c=0;c<6;c++)i[n+c]=f[c];return t||d(i)},l.v4=u,l.parse=function(e,t,r){var n=t&&r||0,i=0;for(t=t||[],e.toLowerCase().replace(/[0-9a-f]{2}/g,function(e){i<16&&(t[n+i++]=o[e])});i<16;)t[n+i++]=0;return t},l.unparse=d,t.exports=l},{"./rng":47}],49:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});try{t.exports.XMLHttpRequest=XMLHttpRequest}catch(e){console.log("Warning: XMLHttpRequest is not defined"),t.exports.XMLHttpRequest=null}},{}],50:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=e("../utils/properties"),i=(o.isProvider=function(e){return n.isType(e,"Provider")},o);function o(){n.setType(this,"Provider")}r.Provider=i},{"../utils/properties":74}],51:[function(e,t,r){"use strict";var n,i=this&&this.__extends||(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])},function(e,t){function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t};Object.defineProperty(r,"__esModule",{value:!0});var s=e("../utils/address"),a=e("../utils/bignumber"),u=e("../utils/bytes"),l=e("../constants"),h=e("../utils/hash"),f=e("../utils/networks"),c=e("../utils/properties"),d=e("../utils/rlp"),p=e("../utils/transaction"),v=e("../utils/utf8"),y=e("../utils/web"),m=o(e("../errors")),g=e("./abstract-provider");function b(e,t){var r={};for(var n in e)try{var i=e[n](t[n]);void 0!==i&&(r[n]=i)}catch(e){throw e.checkKey=n,e.checkValue=t[n],e}return r}function w(t,r){return function(e){return null==e?r:t(e)}}function _(r){return function(e){if(!Array.isArray(e))throw new Error("not an array");var t=[];return e.forEach(function(e){t.push(r(e))}),t}}function M(e,t){return"string"==typeof e&&(t||"0x"===e.substring(0,2)||(e="0x"+e),32===u.hexDataLength(e))?e.toLowerCase():(m.throwError("invalid hash",m.INVALID_ARGUMENT,{arg:"hash",value:e}),null)}function A(e){return a.bigNumberify(e).toNumber()}function E(e){if(!u.isHexString(e))throw new Error("invalid uint256");for(;e.length<66;)e="0x0"+e.substring(2);return e}function S(e){if(null==e)return"latest";if("earliest"===e)return"0x0";if("latest"===e||"pending"===e)return e;if("number"==typeof e)return u.hexStripZeros(u.hexlify(e));if(u.isHexString(e))return u.hexStripZeros(e);throw new Error("invalid blockTag")}var k={hash:M,blockHash:w(M,null),blockNumber:w(A,null),transactionIndex:w(A,null),confirmations:w(A,null),from:s.getAddress,gasPrice:a.bigNumberify,gasLimit:a.bigNumberify,to:w(s.getAddress,null),value:a.bigNumberify,nonce:A,data:u.hexlify,r:w(E),s:w(E),v:w(A),creates:w(s.getAddress,null),raw:w(u.hexlify)};function N(e){if(null!=e.gas&&null==e.gasLimit&&(e.gasLimit=e.gas),e.to&&a.bigNumberify(e.to).isZero()&&(e.to="0x0000000000000000000000000000000000000000"),null!=e.input&&null==e.data&&(e.data=e.input),null==e.to&&null==e.creates&&(e.creates=s.getContractAddress(e)),!e.raw&&e.v&&e.r&&e.s){var t=[u.stripZeros(u.hexlify(e.nonce)),u.stripZeros(u.hexlify(e.gasPrice)),u.stripZeros(u.hexlify(e.gasLimit)),e.to||"0x",u.stripZeros(u.hexlify(e.value||"0x")),u.hexlify(e.data||"0x"),u.stripZeros(u.hexlify(e.v||"0x")),u.stripZeros(u.hexlify(e.r)),u.stripZeros(u.hexlify(e.s))];e.raw=d.encode(t)}var r=b(k,e),n=e.networkId;return null!=e.chainId&&null==n&&null==r.v&&(n=e.chainId),u.isHexString(n)&&(n=a.bigNumberify(n).toNumber()),"number"!=typeof n&&null!=r.v&&((n=(r.v-35)/2)<0&&(n=0),n=parseInt(n)),"number"!=typeof n&&(n=0),r.networkId=n,r.blockHash&&"x"===r.blockHash.replace(/0/g,"")&&(r.blockHash=null),r}var x={hash:M,parentHash:M,number:A,timestamp:A,nonce:w(u.hexlify),difficulty:function(e){var t=a.bigNumberify(e);try{return t.toNumber()}catch(e){}return null},gasLimit:a.bigNumberify,gasUsed:a.bigNumberify,miner:s.getAddress,extraData:u.hexlify,transactions:w(_(M))},P=c.shallowCopy(x);function I(e,t){return null!=e.author&&null==e.miner&&(e.miner=e.author),b(t?P:x,e)}P.transactions=w(_(N));var T={from:w(s.getAddress),nonce:w(A),gasLimit:w(a.bigNumberify),gasPrice:w(a.bigNumberify),to:w(s.getAddress),value:w(a.bigNumberify),data:w(u.hexlify)};function R(e){return b(T,e)}var O={transactionLogIndex:w(A),transactionIndex:A,blockNumber:A,transactionHash:M,address:s.getAddress,topics:_(M),data:u.hexlify,logIndex:A,blockHash:M};var C={to:w(s.getAddress,null),from:w(s.getAddress,null),contractAddress:w(s.getAddress,null),transactionIndex:A,root:w(M),gasUsed:a.bigNumberify,logsBloom:w(u.hexlify),blockHash:M,transactionHash:M,logs:_(function(e){return b(O,e)}),blockNumber:A,confirmations:w(A,null),cumulativeGasUsed:a.bigNumberify,status:w(A)};function L(e){return Array.isArray(e)?e.forEach(function(e){L(e)}):null!=e&&M(e),e}var D={fromBlock:w(S,void 0),toBlock:w(S,void 0),address:w(s.getAddress,void 0),topics:w(L,void 0)},B={blockHash:w(M,void 0),address:w(s.getAddress,void 0),topics:w(L,void 0)};var U,F,j={blockNumber:w(A),blockHash:w(M),transactionIndex:A,removed:w(function(e){if("boolean"==typeof e)return e;if("string"==typeof e){if("true"===e)return!0;if("false"===e)return!1}throw new Error("invaid boolean - "+e)}),address:s.getAddress,data:(U=u.hexlify,F="0x",function(e){return e?U(e):F}),topics:_(M),transactionHash:M,logIndex:A};function G(e){return b(j,e)}function H(e){return e.map(function(e){return"string"==typeof e?e:Array.isArray(e)?(e.forEach(function(e){null!==e&&32!==u.hexDataLength(e)&&m.throwError("invalid topic",m.INVALID_ARGUMENT,{argument:"topic",value:e})}),e.join(",")):null===e?"":m.throwError("invalid topic value",m.INVALID_ARGUMENT,{argument:"topic",value:e})}).join("&")}function z(e){if("string"==typeof e){if(20===u.hexDataLength(e))return"address:"+s.getAddress(e);if(e=e.toLowerCase(),32===u.hexDataLength(e))return"tx:"+e;if(-1===e.indexOf(":"))return e}else{if(Array.isArray(e))return"filter::"+H(e);if(e&&"object"==typeof e)return"filter:"+(e.address||"")+":"+H(e.topics||[])}throw new Error("invalid event - "+e)}function V(){return(new Date).getTime()}var K,q=(K=g.Provider,i(W,K),W.prototype._doPoll=function(){var u=this;this.getBlockNumber().then(function(s){if(u.polling&&(u._setFastBlockNumber(s),s!==u._lastBlockNumber)){-2===u._emitted.block&&(u._emitted.block=s-1);for(var e=u._emitted.block+1;e<=s;e++)u.emit("block",e);u._emitted.block!==s&&(u._emitted.block=s,Object.keys(u._emitted).forEach(function(e){if("block"!==e){var t=u._emitted[e];"pending"!==t&&122*this._pollingInterval&&(this._fastQueryDate=e,this._fastBlockNumberPromise=this.getBlockNumber().then(function(e){return(null==t._fastBlockNumber||e>t._fastBlockNumber)&&(t._fastBlockNumber=e),t._fastBlockNumber})),this._fastBlockNumberPromise},W.prototype._setFastBlockNumber=function(e){null!=this._fastBlockNumber&&ethis._fastBlockNumber)&&(this._fastBlockNumber=e,this._fastBlockNumberPromise=Promise.resolve(e)))},W.prototype.waitForTransaction=function(n,i){var o=this;return null==i&&(i=1),this.getTransactionReceipt(n).then(function(e){return 0===i||e&&e.confirmations>=i?e:new Promise(function(t){var r=function(e){e.confirmations(e=e.substring(64)).length)return null;var r=v.toUtf8String("0x"+e.substring(0,2*t));return i.resolveName(r).then(function(e){return e!=n?null:r})})},W.checkTransactionResponse=function(e){return N(e)},W.prototype.doPoll=function(){},W.prototype.perform=function(e,t){return m.throwError(e+" not implemented",m.NOT_IMPLEMENTED,{operation:e}),null},W.prototype._startPending=function(){m.warn("WARNING: this provider does not support pending events")},W.prototype._stopPending=function(){},W.prototype._addEventListener=function(e,t,r){this._events.push({tag:z(e),listener:t,once:r}),"pending"===e&&this._startPending(),this.polling=!0},W.prototype.on=function(e,t){return this._addEventListener(e,t,!1),this},W.prototype.once=function(e,t){return this._addEventListener(e,t,!0),this},W.prototype.addEventListener=function(e,t){return this.on(e,t)},W.prototype.emit=function(e){for(var t=this,r=[],n=1;ne.length)throw new Error("invalid null");return{consumed:0,value:this.coerceFunc("null",void 0)}},N);function N(e,t){return S.call(this,e,"null","",t,!1)||this}var x,P=(i(I,x=_),I.prototype.encode=function(t){try{var e=u.bigNumberify(t);if(this.signed){var r=s.MaxUint256.maskn(8*this.size-1);if(e.gt(r))throw new Error("out-of-bounds");if(r=r.add(s.One).mul(s.NegativeOne),e.lt(r))throw new Error("out-of-bounds")}else if(e.lt(s.Zero)||e.gt(s.MaxUint256.maskn(8*this.size)))throw new Error("out-of-bounds");return e=e.toTwos(8*this.size).maskn(8*this.size),this.signed&&(e=e.fromTwos(8*this.size).toTwos(256)),h.padZeros(h.arrayify(e),32)}catch(e){l.throwError("invalid number value",l.INVALID_ARGUMENT,{arg:this.localName,coderType:this.name,value:t})}return null},I.prototype.decode=function(e,t){e.length>1]>>4&&(t[i]=t[i].toUpperCase()),8<=(15&r[i>>1])&&(t[i+1]=t[i+1].toUpperCase());return"0x"+t.join("")}for(var h={},f=0;f<10;f++)h[String(f)]=String(f);for(f=0;f<26;f++)h[String.fromCharCode(65+f)]=String(10+f);var c,d=Math.floor((c=9007199254740991,Math.log10?Math.log10(c):Math.log(c)/Math.LN10));function p(e){e=(e=e.toUpperCase()).substring(4)+e.substring(0,2)+"00";var t="";for(e.split("").forEach(function(e){t+=h[e]});t.length>=d;){var r=t.substring(0,d);t=parseInt(r,10)%97+t.substring(r.length)}for(var n=String(98-parseInt(t,10)%97);n.length<2;)n="0"+n;return n}function v(e){var t=null;if("string"!=typeof e&&u.throwError("invalid address",u.INVALID_ARGUMENT,{arg:"address",value:e}),e.match(/^(0x)?[0-9a-fA-F]{40}$/))"0x"!==e.substring(0,2)&&(e="0x"+e),t=l(e),e.match(/([A-F].*[a-f])|([a-f].*[A-F])/)&&t!==e&&u.throwError("bad address checksum",u.INVALID_ARGUMENT,{arg:"address",value:e});else if(e.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)){for(e.substring(2,4)!==p(e)&&u.throwError("bad icap checksum",u.INVALID_ARGUMENT,{arg:"address",value:e}),t=new i.default.BN(e.substring(4),36).toString(16);t.length<40;)t="0"+t;t=l("0x"+t)}else u.throwError("invalid address",u.INVALID_ARGUMENT,{arg:"address",value:e});return t}r.getAddress=v,r.getIcapAddress=function(e){for(var t=new i.default.BN(v(e).substring(2),16).toString(36).toUpperCase();t.length<30;)t="0"+t;return"XE"+p("XE00"+t)+t},r.getContractAddress=function(e){if(!e.from)throw new Error("missing from address");var t=e.nonce;return v("0x"+s.keccak256(a.encode([v(e.from),o.stripZeros(o.hexlify(t))])).substring(26))}},{"../errors":5,"./bytes":64,"./keccak256":71,"./rlp":76,"bn.js":9}],61:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=e("../utils/bytes");t.exports={decode:function(e){e=atob(e);for(var t=[],r=0;r>=8;for(;0>=8}for(var s=0;e[s]===this._leader&&s>4]+f[15&o])}return"0x"+n.join("")}return s.throwError("invalid hexlify value",null,{arg:"value",value:e}),"never"}function d(e,t){for(o(e)||s.throwError("invalid hex string",s.INVALID_ARGUMENT,{arg:"value",value:e});e.length<2*t+2;)e="0x0"+e.substring(2);return e}function p(e){var t=0,r="0x",n="0x";if(function(e){return e&&null!=e.r&&null!=e.s}(e)){null==e.v&&null==e.recoveryParam&&s.throwError("at least on of recoveryParam or v must be specified",s.INVALID_ARGUMENT,{argument:"signature",value:e}),r=d(e.r,32),n=d(e.s,32),"string"==typeof(t=e.v)&&(t=parseInt(t,16));var i=e.recoveryParam;null==i&&null!=e.v&&(i=1-t%2),t=27+i}else{var o=h(e);if(65!==o.length)throw new Error("invalid signature");r=c(o.slice(0,32)),n=c(o.slice(32,64)),27!==(t=o[64])&&28!==t&&(t=27+t%2)}return{r:r,s:n,recoveryParam:t-27,v:t}}r.hexlify=c,r.hexDataLength=function(e){return o(e)&&e.length%2==0?(e.length-2)/2:null},r.hexDataSlice=function(e,t,r){return o(e)||s.throwError("invalid hex data",s.INVALID_ARGUMENT,{arg:"value",value:e}),e.length%2!=0&&s.throwError("hex data length must be even",s.INVALID_ARGUMENT,{arg:"value",value:e}),t=2+2*t,null!=r?"0x"+e.substring(t,2+2*r):"0x"+e.substring(t)},r.hexStripZeros=function(e){for(o(e)||s.throwError("invalid hex string",s.INVALID_ARGUMENT,{arg:"value",value:e});3>3)]=e>>24-n&255;var i=h.computeHmac(h.SupportedAlgorithms.sha512,this.chainCode,r),o=i.slice(0,32),s=i.slice(32),a=null,u=null;return this.privateKey?a=w(l.bigNumberify(o).add(this.privateKey).mod(m)):u=new v.KeyPair(d.hexlify(o))._addPoint(this.publicKey),new A(_,a,u,this.fingerprint,w(s),e,this.depth+1,this.mnemonic,t)},A.prototype.derivePath=function(e){var t=e.split("/");if(0===t.length||"m"===t[0]&&0!==this.depth)throw new Error("invalid path - "+e);"m"===t[0]&&t.shift();for(var r=this,n=0;n>3]|=1<<7-i%8),i++}var u=32*r.length/3,l=b(r.length/3),h=d.arrayify(y.sha256(n.slice(0,u/8)))[0];if((h&=l)!=(n[n.length-1]&l))throw new Error("invalid checksum");return d.hexlify(n.slice(0,u/8))}function N(e,t){if((e=d.arrayify(e)).length%4!=0||e.length<16||32>8-n,r.push(e[i]&(1<<8-n)-1),n+=3);var o=d.arrayify(y.sha256(e))[0],s=e.length/4;return o&=b(s),r[r.length-1]<<=s,r[r.length-1]|=o>>8-s,(t=t||c.langEn).join(r.map(function(e){return t.getWord(e)}))}r.HDNode=M,r.fromExtendedKey=function(e){var t=a.Base58.decode(e);82===t.length&&u(t.slice(0,78))===e||f.throwError("invalid extended key",f.INVALID_ARGUMENT,{argument:"extendedKey",value:"[REDACTED]"});var r=t[4],n=d.hexlify(t.slice(5,9)),i=parseInt(d.hexlify(t.slice(9,13)).substring(2),16),o=d.hexlify(t.slice(13,45)),s=t.slice(45,78);switch(d.hexlify(t.slice(0,4))){case"0x0488b21e":case"0x043587cf":return new M(_,null,d.hexlify(s),n,o,i,r,null,null);case"0x0488ade4":case"0x04358394":if(0!==s[0])break;return new M(_,d.hexlify(s.slice(1)),null,n,o,i,r,null,null)}return f.throwError("invalid extended key",f.INVALID_ARGUMENT,{argument:"extendedKey",value:"[REDACTED]"})},r.fromMnemonic=function(e,t,r){return E(S(e=N(k(e,t),t),r),e)},r.fromSeed=function(e){return E(e,null)},r.mnemonicToSeed=S,r.mnemonicToEntropy=k,r.entropyToMnemonic=N,r.isValidMnemonic=function(e,t){try{return k(e,t),!0}catch(e){}return!1}},{"../errors":5,"../wordlists/lang-en":90,"./basex":62,"./bignumber":63,"./bytes":64,"./hmac":67,"./pbkdf2":73,"./properties":74,"./secp256k1":77,"./sha2":79,"./utf8":85}],67:[function(e,t,r){"use strict";var n=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t};Object.defineProperty(r,"__esModule",{value:!0});var i,o,s=n(e("hash.js")),a=e("../utils/bytes"),u=n(e("../errors"));(o=i=r.SupportedAlgorithms||(r.SupportedAlgorithms={})).sha256="sha256",o.sha512="sha512",r.computeHmac=function(e,t,r){return i[e]||u.throwError("unsupported algorithm "+e,u.UNSUPPORTED_OPERATION,{operation:"hmac",algorithm:e}),a.arrayify(s.hmac(s[e],a.arrayify(t)).update(a.arrayify(r)).digest())}},{"../errors":5,"../utils/bytes":64,"hash.js":26}],68:[function(e,t,r){"use strict";var n=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t};Object.defineProperty(r,"__esModule",{value:!0});var i=e("./abi-coder");r.AbiCoder=i.AbiCoder,r.defaultAbiCoder=i.defaultAbiCoder,r.formatSignature=i.formatSignature,r.formatParamType=i.formatParamType,r.parseSignature=i.parseSignature,r.parseParamType=i.parseParamType;var o=e("./address");r.getAddress=o.getAddress,r.getContractAddress=o.getContractAddress,r.getIcapAddress=o.getIcapAddress;var s=n(e("./base64"));r.base64=s;var a=e("./bignumber");r.BigNumber=a.BigNumber,r.bigNumberify=a.bigNumberify;var u=e("./bytes");r.arrayify=u.arrayify,r.concat=u.concat,r.hexDataSlice=u.hexDataSlice,r.hexDataLength=u.hexDataLength,r.hexlify=u.hexlify,r.hexStripZeros=u.hexStripZeros,r.hexZeroPad=u.hexZeroPad,r.isHexString=u.isHexString,r.joinSignature=u.joinSignature,r.padZeros=u.padZeros,r.splitSignature=u.splitSignature,r.stripZeros=u.stripZeros;var l=e("./hash");r.hashMessage=l.hashMessage,r.id=l.id,r.namehash=l.namehash;var h=n(e("./hdnode"));r.HDNode=h;var f=e("./interface");r.Interface=f.Interface;var c=e("./json-wallet");r.getJsonWalletAddress=c.getJsonWalletAddress;var d=e("./keccak256");r.keccak256=d.keccak256;var p=e("./sha2");r.sha256=p.sha256;var v=e("./solidity");r.solidityKeccak256=v.keccak256,r.solidityPack=v.pack,r.soliditySha256=v.sha256;var y=e("./random-bytes");r.randomBytes=y.randomBytes;var m=e("./networks");r.getNetwork=m.getNetwork;var g=e("./properties");r.checkProperties=g.checkProperties,r.deepCopy=g.deepCopy,r.defineReadOnly=g.defineReadOnly,r.resolveProperties=g.resolveProperties,r.shallowCopy=g.shallowCopy;var b=n(e("./rlp"));r.RLP=b;var w=e("./secp256k1");r.computeAddress=w.computeAddress,r.computePublicKey=w.computePublicKey,r.recoverAddress=w.recoverAddress,r.recoverPublicKey=w.recoverPublicKey,r.verifyMessage=w.verifyMessage;var _=e("./signing-key");r.SigningKey=_.SigningKey;var M=e("./transaction");r.populateTransaction=M.populateTransaction;var A=e("./transaction");r.parseTransaction=A.parse,r.serializeTransaction=A.serialize;var E=e("./utf8");r.formatBytes32String=E.formatBytes32String,r.parseBytes32String=E.parseBytes32String,r.toUtf8Bytes=E.toUtf8Bytes,r.toUtf8String=E.toUtf8String;var S=e("./units");r.commify=S.commify,r.formatEther=S.formatEther,r.parseEther=S.parseEther,r.formatUnits=S.formatUnits,r.parseUnits=S.parseUnits;var k=e("./web");r.fetchJson=k.fetchJson,r.poll=k.poll;var N=e("./hmac");r.SupportedAlgorithms=N.SupportedAlgorithms;var x=e("./utf8");r.UnicodeNormalizationForm=x.UnicodeNormalizationForm;var P=e("./wordlist");r.Wordlist=P.Wordlist},{"./abi-coder":59,"./address":60,"./base64":61,"./bignumber":63,"./bytes":64,"./hash":65,"./hdnode":66,"./hmac":67,"./interface":69,"./json-wallet":70,"./keccak256":71,"./networks":72,"./properties":74,"./random-bytes":75,"./rlp":76,"./secp256k1":77,"./sha2":79,"./signing-key":81,"./solidity":82,"./transaction":83,"./units":84,"./utf8":85,"./web":86,"./wordlist":87}],69:[function(e,t,r){"use strict";var n,i=this&&this.__extends||(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])},function(e,t){function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t};Object.defineProperty(r,"__esModule",{value:!0});function s(e){for(var t in p.setType(this,"Description"),e)p.defineReadOnly(this,t,p.deepCopy(e[t],!0));Object.freeze(this)}var a,u=e("./address"),f=e("./abi-coder"),l=e("./bignumber"),c=e("./bytes"),h=e("./hash"),d=e("./keccak256"),p=e("./properties"),v=o(e("../errors")),y=function(e){p.setType(this,"Indexed"),p.defineReadOnly(this,"hash",e)},m=(i(g,a=s),g.prototype.encode=function(e,t){c.isHexString(e)||v.throwError("invalid contract bytecode",v.INVALID_ARGUMENT,{arg:"bytecode",value:e}),v.checkArgumentCount(t.length,this.inputs.length," in Interface constructor");try{return e+f.defaultAbiCoder.encode(this.inputs,t).substring(2)}catch(e){v.throwError("invalid constructor argument",v.INVALID_ARGUMENT,{arg:e.arg,reason:e.reason,value:e.value})}return null},g);function g(){return null!==a&&a.apply(this,arguments)||this}var b,w=(i(_,b=s),_.prototype.encode=function(e){v.checkArgumentCount(e.length,this.inputs.length," in interface function "+this.name);try{return this.sighash+f.defaultAbiCoder.encode(this.inputs,e).substring(2)}catch(e){v.throwError("invalid input argument",v.INVALID_ARGUMENT,{arg:e.arg,reason:e.reason,value:e.value})}return null},_.prototype.decode=function(t){try{return f.defaultAbiCoder.decode(this.outputs,c.arrayify(t))}catch(e){v.throwError("invalid data for function output",v.INVALID_ARGUMENT,{arg:"data",errorArg:e.arg,errorValue:e.value,value:t,reason:e.reason})}},_);function _(){return null!==b&&b.apply(this,arguments)||this}var M,A=(i(E,M=s),E);function E(){return null!==M&&M.apply(this,arguments)||this}var S,k=(i(N,S=s),N.prototype.encodeTopics=function(e){var n=this;e.length>this.inputs.length&&v.throwError("too many arguments for "+this.name,v.UNEXPECTED_ARGUMENT,{maxCount:e.length,expectedCount:this.inputs.length});var i=[];for(this.anonymous||i.push(this.topic),e.forEach(function(e,t){var r=n.inputs[t];r.indexed?null==e?i.push(null):"string"===r.type?i.push(h.id(e)):"bytes"===r.type?i.push(d.keccak256(e)):-1!==r.type.indexOf("[")||"tuple"===r.type.substring(0,5)?v.throwError("filtering with tuples or arrays not implemented yet; bug us on GitHub",v.NOT_IMPLEMENTED,{operation:"filter(array|tuple)"}):("address"===r.type&&u.getAddress(e),i.push(c.hexZeroPad(c.hexlify(e),32).toLowerCase())):null!=e&&v.throwError("cannot filter non-indexed parameters; must be null",v.INVALID_ARGUMENT,{argument:r.name||t,value:e})});i.length&&null===i[i.length-1];)i.pop();return i},N.prototype.decode=function(e,r){null==r||this.anonymous||(r=r.slice(1));var n=[],i=[],o=[];if(this.inputs.forEach(function(e,t){e.indexed?"string"===e.type||"bytes"===e.type||0<=e.type.indexOf("[")||"tuple"===e.type.substring(0,5)?(n.push({type:"bytes32",name:e.name||""}),o.push(!0)):(n.push(e),o.push(!1)):(i.push(e),o.push(!1))}),null!=r)var s=f.defaultAbiCoder.decode(n,c.concat(r));var a=f.defaultAbiCoder.decode(i,c.arrayify(e)),u={},l=0,h=0;return this.inputs.forEach(function(e,t){e.indexed?null==r?u[t]=new y(null):o[t]?u[t]=new y(s[h++]):u[t]=s[h++]:u[t]=a[l++],e.name&&(u[e.name]=u[t])}),u.length=this.inputs.length,new A(u)},N);function N(){return null!==S&&S.apply(this,arguments)||this}var x,P=(i(I,x=s),I);function I(){return null!==x&&x.apply(this,arguments)||this}var T,R=(i(O,T=s),O);function O(){return null!==T&&T.apply(this,arguments)||this}function C(e){switch(e.type){case"constructor":var t=new m({inputs:e.inputs,payable:null==e.payable||!!e.payable});this.deployFunction||(this.deployFunction=t);break;case"function":var r=f.formatSignature(e).replace(/tuple/g,""),n=h.id(r).substring(0,10);t=new w({inputs:e.inputs,outputs:e.outputs,gas:e.gas,payable:null==e.payable||!!e.payable,type:e.constant?"call":"transaction",name:e.name,signature:r,sighash:n});e.name&&(null==this.functions[e.name]?p.defineReadOnly(this.functions,e.name,t):v.warn("WARNING: Multiple definitions for "+e.name)),null==this.functions[t.signature]&&p.defineReadOnly(this.functions,t.signature,t);break;case"event":r=f.formatSignature(e).replace(/tuple/g,""),t=new k({name:e.name,signature:r,inputs:e.inputs,topic:h.id(r),anonymous:!!e.anonymous});e.name&&null==this.events[e.name]&&p.defineReadOnly(this.events,e.name,t),null==this.events[t.signature]&&p.defineReadOnly(this.events,t.signature,t);break;case"fallback":break;default:v.warn("WARNING: unsupported ABI type - "+e.type)}}var L=(D.prototype.parseTransaction=function(e){var t=e.data.substring(0,10).toLowerCase();for(var r in this.functions)if(-1!==r.indexOf("(")){var n=this.functions[r];if(n.sighash===t){var i=f.defaultAbiCoder.decode(n.inputs,"0x"+e.data.substring(10));return new P({args:i,decode:n.decode,name:n.name,signature:n.signature,sighash:n.sighash,value:l.bigNumberify(e.value||"0")})}}return null},D.prototype.parseLog=function(e){for(var t in this.events)if(-1!==t.indexOf("(")){var r=this.events[t];if(!r.anonymous&&r.topic===e.topics[0])return new R({decode:r.decode,name:r.name,signature:r.signature,topic:r.topic,values:r.decode(e.data,e.topics)})}return null},D.isInterface=function(e){return p.isType(e,"Interface")},D.isIndexed=function(e){return p.isType(e,"Indexed")},D);function D(t){if(v.checkNew(this,D),"string"==typeof t){try{t=JSON.parse(t)}catch(e){v.throwError("could not parse ABI JSON",v.INVALID_ARGUMENT,{arg:"abi",errorMessage:e.message,value:t})}if(!Array.isArray(t))return v.throwError("invalid abi",v.INVALID_ARGUMENT,{arg:"abi",value:t}),null}p.defineReadOnly(this,"functions",{}),p.defineReadOnly(this,"events",{});var r=[];t.forEach(function(e){"string"==typeof e&&(e=f.parseSignature(e)),r.push(e)}),p.defineReadOnly(this,"abi",p.deepCopy(r,!0)),r.forEach(C,this),this.deployFunction||C.call(this,{type:"constructor",inputs:[]}),p.setType(this,"Interface")}r.Interface=L},{"../errors":5,"./abi-coder":59,"./address":60,"./bignumber":63,"./bytes":64,"./hash":65,"./keccak256":71,"./properties":74}],70:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=e("./address");function i(e){try{var t=JSON.parse(e)}catch(e){return!1}return t.encseed&&t.ethaddr}function o(e){try{var t=JSON.parse(e)}catch(e){return!1}return!(!t.version||parseInt(t.version)!==t.version||3!==parseInt(t.version))}r.isCrowdsaleWallet=i,r.isSecretStorageWallet=o,r.getJsonWalletAddress=function(e){if(i(e))try{return n.getAddress(JSON.parse(e).ethaddr)}catch(e){return null}if(o(e))try{return n.getAddress(JSON.parse(e).address)}catch(e){return null}return null}},{"./address":60}],71:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=e("js-sha3"),i=e("./bytes");r.keccak256=function(e){return"0x"+n.keccak_256(i.arrayify(e))}},{"./bytes":64,"js-sha3":40}],72:[function(e,t,r){"use strict";var n=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t};Object.defineProperty(r,"__esModule",{value:!0});var o=n(e("../errors"));function i(r){return function(e){var t=[];return e.InfuraProvider&&t.push(new e.InfuraProvider(r)),e.EtherscanProvider&&t.push(new e.EtherscanProvider(r)),0===t.length?null:e.FallbackProvider?new e.FallbackProvider(t):t[0]}}function s(t,r){return function(e){return e.JsonRpcProvider?new e.JsonRpcProvider(t,r):null}}var a={chainId:1,ensAddress:"0x314159265dd8dbb310642f98f50c066173c1259b",name:"homestead",_defaultProvider:i("homestead")},u={chainId:3,ensAddress:"0x112234455c3a32fd11230c42e7bccd4a84e02010",name:"ropsten",_defaultProvider:i("ropsten")},l={unspecified:{chainId:0,name:"unspecified"},homestead:a,mainnet:a,morden:{chainId:2,name:"morden"},ropsten:u,testnet:u,rinkeby:{chainId:4,ensAddress:"0xe7410170f87102DF0055eB195163A03B7F2Bff4A",name:"rinkeby",_defaultProvider:i("rinkeby")},goerli:{chainId:5,ensAddress:"0x112234455c3a32fd11230c42e7bccd4a84e02010",name:"goerli",_defaultProvider:i("goerli")},kovan:{chainId:42,name:"kovan",_defaultProvider:i("kovan")},classic:{chainId:61,name:"classic",_defaultProvider:s("https://web3.gastracker.io","classic")},classicTestnet:{chainId:62,name:"classicTestnet",_defaultProvider:s("https://web3.gastracker.io/morden","classicTestnet")}};r.getNetwork=function(e){if(null==e)return null;if("number"==typeof e){for(var t in l){var r=l[t];if(r.chainId===e)return{name:r.name,chainId:r.chainId,ensAddress:r.ensAddress||null,_defaultProvider:r._defaultProvider||null}}return{chainId:e,name:"unknown"}}if("string"==typeof e){var n=l[e];return null==n?null:{name:n.name,chainId:n.chainId,ensAddress:n.ensAddress,_defaultProvider:n._defaultProvider||null}}var i=l[e.name];return i?(0!==e.chainId&&e.chainId!==i.chainId&&o.throwError("network chainId mismatch",o.INVALID_ARGUMENT,{arg:"network",value:e}),{name:e.name,chainId:i.chainId,ensAddress:e.ensAddress||i.ensAddress||null,_defaultProvider:e._defaultProvider||i._defaultProvider||null}):("number"!=typeof e.chainId&&o.throwError("invalid network chainId",o.INVALID_ARGUMENT,{arg:"network",value:e}),e)}},{"../errors":5}],73:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var m=e("../utils/bytes"),g=e("./hmac");r.pbkdf2=function(e,t,r,n,i){var o;e=m.arrayify(e),t=m.arrayify(t);var s,a,u=1,l=new Uint8Array(n),h=new Uint8Array(t.length+4);h.set(t);for(var f=1;f<=u;f++){h[t.length]=f>>24&255,h[t.length+1]=f>>16&255,h[t.length+2]=f>>8&255,h[t.length+3]=255&f;var c=g.computeHmac(i,e,h);o||(o=c.length,a=new Uint8Array(o),s=n-((u=Math.ceil(n/o))-1)*o),a.set(c);for(var d=1;d>=8;return t}function i(e,t,r){for(var n=0,i=0;ie.length)throw new Error("too short");if(t+1+r+(n=i(e,t+1,r))>e.length)throw new Error("to short");return a(e,t,t+1+r,r+n)}if(192<=e[t]){if(t+1+(n=e[t]-192)>e.length)throw new Error("invalid rlp data");return a(e,t,t+1,n)}if(184<=e[t]){var r;if(t+1+(r=e[t]-183)>e.length)throw new Error("invalid rlp data");if(t+1+r+(n=i(e,t+1,r))>e.length)throw new Error("invalid rlp data");return{consumed:1+r+n,result:o.hexlify(e.slice(t+1+r,t+1+r+n))}}if(128<=e[t]){var n;if(t+1+(n=e[t]-128)>e.length)throw new Error("invalid rlp data");return{consumed:1+n,result:o.hexlify(e.slice(t+1,t+1+n))}}return{consumed:1,result:o.hexlify(e[t])}}r.encode=function(e){return o.hexlify(function t(e){if(Array.isArray(e)){var r=[];return e.forEach(function(e){r=r.concat(t(e))}),r.length<=55?(r.unshift(192+r.length),r):((n=s(r.length)).unshift(247+n.length),n.concat(r))}var n,i=Array.prototype.slice.call(o.arrayify(e));return 1===i.length&&i[0]<=127?i:i.length<=55?(i.unshift(128+i.length),i):((n=s(i.length)).unshift(183+n.length),n.concat(i))}(e))},r.decode=function(e){var t=o.arrayify(e),r=u(t,0);if(r.consumed!==t.length)throw new Error("invalid rlp data");return r.result}},{"./bytes":64}],77:[function(e,t,r){"use strict";var n=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t};Object.defineProperty(r,"__esModule",{value:!0});var i=e("elliptic"),o=e("./address"),s=e("./bytes"),a=e("./hash"),u=e("./keccak256"),l=e("./properties"),h=n(e("../errors")),f=null;function c(){return f=f||new i.ec("secp256k1")}var d=(p.prototype.sign=function(e){var t=c().keyFromPrivate(s.arrayify(this.privateKey)).sign(s.arrayify(e),{canonical:!0});return{recoveryParam:t.recoveryParam,r:s.hexZeroPad("0x"+t.r.toString(16),32),s:s.hexZeroPad("0x"+t.s.toString(16),32),v:27+t.recoveryParam}},p.prototype.computeSharedSecret=function(e){var t=c().keyFromPrivate(s.arrayify(this.privateKey)),r=c().keyFromPublic(s.arrayify(v(e)));return s.hexZeroPad("0x"+t.derive(r.getPublic()).toString(16),32)},p.prototype._addPoint=function(e){var t=c().keyFromPublic(s.arrayify(this.publicKey)),r=c().keyFromPublic(s.arrayify(e));return"0x"+t.pub.add(r.pub).encodeCompressed("hex")},p);function p(e){var t=c().keyFromPrivate(s.arrayify(e));l.defineReadOnly(this,"privateKey",s.hexlify(t.priv.toArray("be",32))),l.defineReadOnly(this,"publicKey","0x"+t.getPublic(!1,"hex")),l.defineReadOnly(this,"compressedPublicKey","0x"+t.getPublic(!0,"hex")),l.defineReadOnly(this,"publicKeyBytes",t.getPublic().encode(null,!0))}function v(e,t){var r=s.arrayify(e);if(32!==r.length)return 33===r.length?t?s.hexlify(r):"0x"+c().keyFromPublic(r).getPublic(!1,"hex"):65===r.length?t?"0x"+c().keyFromPublic(r).getPublic(!0,"hex"):s.hexlify(r):(h.throwError("invalid public or private key",h.INVALID_ARGUMENT,{arg:"key",value:"[REDACTED]"}),null);var n=new d(r);return t?n.compressedPublicKey:n.publicKey}function y(e){var t="0x"+v(e).slice(4);return o.getAddress("0x"+u.keccak256(t).substring(26))}function m(e,t){var r=s.splitSignature(t),n={r:s.arrayify(r.r),s:s.arrayify(r.s)};return"0x"+c().recoverPubKey(s.arrayify(e),n,r.recoveryParam).encode("hex",!1)}function g(e,t){return y(m(s.arrayify(e),t))}r.KeyPair=d,r.computePublicKey=v,r.computeAddress=y,r.recoverPublicKey=m,r.recoverAddress=g,r.verifyMessage=function(e,t){return g(a.hashMessage(e),t)}},{"../errors":5,"./address":60,"./bytes":64,"./hash":65,"./keccak256":71,"./properties":74,elliptic:12}],78:[function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}},i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t};Object.defineProperty(r,"__esModule",{value:!0});var T=n(e("aes-js")),m=n(e("scrypt-js")),R=n(e("uuid")),O=e("./signing-key"),g=i(e("./hdnode")),b=e("./address"),C=e("./bytes"),w=e("./pbkdf2"),L=e("./keccak256"),p=e("./utf8"),D=e("./random-bytes");function _(e){return"string"==typeof e&&"0x"!==e.substring(0,2)&&(e="0x"+e),C.arrayify(e)}function B(e,t){for(e=String(e);e.lengthe.maxLength&&s.throwError("invalid length for "+e.name,s.INVALID_ARGUMENT,{arg:"transaction"+e.name,value:t}),n.push(h.hexlify(t))}),null!=r.chainId&&0!==r.chainId&&(n.push(h.hexlify(r.chainId)),n.push("0x"),n.push("0x"));var t=d.encode(n);if(!e)return t;var i=h.splitSignature(e),o=27+i.recoveryParam;return 9===n.length&&(n.pop(),n.pop(),n.pop(),o+=2*r.chainId+8),n.push(h.hexlify(o)),n.push(h.stripZeros(h.arrayify(i.r))),n.push(h.stripZeros(h.arrayify(i.s))),d.encode(n)},r.parse=function(e){var t=d.decode(e);9!==t.length&&6!==t.length&&s.throwError("invalid raw transaction",s.INVALID_ARGUMENT,{arg:"rawTransactin",value:e});var r={nonce:p(t[0]).toNumber(),gasPrice:p(t[1]),gasLimit:p(t[2]),to:function(e){return"0x"===e?null:u.getAddress(e)}(t[3]),value:p(t[4]),data:t[5],chainId:0};if(6===t.length)return r;try{r.v=l.bigNumberify(t[6]).toNumber()}catch(e){return s.info(e),r}if(r.r=h.hexZeroPad(t[7],32),r.s=h.hexZeroPad(t[8],32),l.bigNumberify(r.r).isZero()&&l.bigNumberify(r.s).isZero())r.chainId=r.v,r.v=0;else{r.chainId=Math.floor((r.v-35)/2),r.chainId<0&&(r.chainId=0);var n=r.v-27,i=t.slice(0,6);0!==r.chainId&&(i.push(h.hexlify(r.chainId)),i.push("0x"),i.push("0x"),n-=2*r.chainId+8);var o=f.keccak256(d.encode(i));try{r.from=a.recoverAddress(o,{r:h.hexlify(r.r),s:h.hexlify(r.s),recoveryParam:n})}catch(e){s.info(e)}r.hash=f.keccak256(e)}return r},r.populateTransaction=function(e,t,r){o.Provider.isProvider(t)||s.throwError("missing provider",s.INVALID_ARGUMENT,{argument:"provider",value:t}),c.checkProperties(e,y);var n=c.shallowCopy(e);if(null!=n.to&&(n.to=t.resolveName(n.to)),null==n.gasPrice&&(n.gasPrice=t.getGasPrice()),null==n.nonce&&(n.nonce=t.getTransactionCount(r)),null==n.gasLimit){var i=c.shallowCopy(n);i.from=r,n.gasLimit=t.estimateGas(i)}return null==n.chainId&&(n.chainId=t.getNetwork().then(function(e){return e.chainId})),c.resolveProperties(n)}},{"../constants":3,"../errors":5,"../providers/abstract-provider":50,"./address":60,"./bignumber":63,"./bytes":64,"./keccak256":71,"./properties":74,"./rlp":76,"./secp256k1":77}],84:[function(e,t,r){"use strict";var n=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t};Object.defineProperty(r,"__esModule",{value:!0});var i,h=e("../constants"),f=n(e("../errors")),c=e("./bignumber"),o={};function s(e){return{decimals:e.length-1,tenPower:c.bigNumberify(e)}}function d(e){var t=o[String(e).toLowerCase()];if(!t&&"number"==typeof e&&parseInt(String(e))==e&&0<=e&&e<=256){for(var r="1",n=0;nr.decimals&&f.throwError("underflow occurred",f.NUMERIC_FAULT,{operation:"division",fault:"underflow"});s.length>6|192),r.push(63&i|128);else if(55296==(64512&i)){n++;var o=e.charCodeAt(n);if(n>=e.length||56320!=(64512&o))throw new Error("invalid utf-8 string");i=65536+((1023&i)<<10)+(1023&o),r.push(i>>18|240),r.push(i>>12&63|128),r.push(i>>6&63|128),r.push(63&i|128)}else r.push(i>>12|224),r.push(i>>6&63|128),r.push(63&i|128)}return h.arrayify(r)}function u(e,t){e=h.arrayify(e);for(var r="",n=0;n>7!=0){var o=null,s=null;if(192==(224&i))o=1,s=127;else if(224==(240&i))o=2,s=2047;else{if(240!=(248&i)){if(t)continue;if(128==(192&i))throw new Error("invalid utf8 byte sequence; unexpected continuation byte");throw new Error("invalid utf8 byte sequence; invalid prefix")}o=3,s=65535}if(n+o>e.length){if(!t)throw new Error("invalid utf8 byte sequence; too short");for(;n>6==2;n++);}else{for(var a=i&(1<<8-o-1)-1,u=0;u>10&1023),56320+(1023&a)));else if(!t)throw new Error("invalid utf8 byte sequence; invalid continuation byte")}}else r+=String.fromCharCode(i)}return r}(n=s=r.UnicodeNormalizationForm||(r.UnicodeNormalizationForm={})).current="",n.NFC="NFC",n.NFD="NFD",n.NFKC="NFKC",n.NFKD="NFKD",r.toUtf8Bytes=o,r.toUtf8String=u,r.formatBytes32String=function(e){var t=o(e);if(31l.ceiling&&(t=l.ceiling),s&&(a--,t=s,s=null),setTimeout(r,t)}return null},function(e){o()&&t(e)})}()})}},{"../errors":5,"./base64":61,"./properties":74,"./utf8":85,xmlhttprequest:49}],87:[function(o,e,s){(function(e){"use strict";Object.defineProperty(s,"__esModule",{value:!0});var i=o("../utils/hash"),t=o("../utils/properties");s.check=function(e){for(var t=[],r=0;r<2048;r++){var n=e.getWord(r);if(r!==e.getWordIndex(n))return"0x";t.push(n)}return i.id(t.join("\n")+"\n")};var r=(n.prototype.split=function(e){return e.toLowerCase().split(/ +/g)},n.prototype.join=function(e){return e.join(" ")},n);function n(e){t.defineReadOnly(this,"locale",e)}s.Wordlist=r,s.register=function(e,t){t=t||e.locale}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"../utils/hash":65,"../utils/properties":74}],88:[function(e,t,r){"use strict";var n,i=this&&this.__extends||(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])},function(e,t){function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t};Object.defineProperty(r,"__esModule",{value:!0});var s,a=e("./utils/bytes"),u=e("./utils/hash"),l=e("./utils/hdnode"),h=e("./utils/json-wallet"),f=e("./utils/keccak256"),c=e("./utils/properties"),d=e("./utils/random-bytes"),p=o(e("./utils/secret-storage")),v=e("./utils/signing-key"),y=e("./utils/transaction"),m=e("./abstract-signer"),g=e("./providers/abstract-provider"),b=o(e("./errors")),w=(s=m.Signer,i(_,s),Object.defineProperty(_.prototype,"address",{get:function(){return this.signingKey.address},enumerable:!0,configurable:!0}),Object.defineProperty(_.prototype,"mnemonic",{get:function(){return this.signingKey.mnemonic},enumerable:!0,configurable:!0}),Object.defineProperty(_.prototype,"path",{get:function(){return this.signingKey.path},enumerable:!0,configurable:!0}),Object.defineProperty(_.prototype,"privateKey",{get:function(){return this.signingKey.privateKey},enumerable:!0,configurable:!0}),_.prototype.connect=function(e){return g.Provider.isProvider(e)||b.throwError("invalid provider",b.INVALID_ARGUMENT,{argument:"provider",value:e}),new _(this.signingKey,e)},_.prototype.getAddress=function(){return Promise.resolve(this.address)},_.prototype.sign=function(e){var n=this;return c.resolveProperties(e).then(function(e){var t=y.serialize(e),r=n.signingKey.signDigest(f.keccak256(t));return y.serialize(e,r)})},_.prototype.signMessage=function(e){return Promise.resolve(a.joinSignature(this.signingKey.signDigest(u.hashMessage(e))))},_.prototype.getBalance=function(e){if(!this.provider)throw new Error("missing provider");return this.provider.getBalance(this.address,e)},_.prototype.getTransactionCount=function(e){if(!this.provider)throw new Error("missing provider");return this.provider.getTransactionCount(this.address,e)},_.prototype.sendTransaction=function(e){var t=this;if(!this.provider)throw new Error("missing provider");return null==e.nonce&&((e=c.shallowCopy(e)).nonce=this.getTransactionCount("pending")),y.populateTransaction(e,this.provider,this.address).then(function(e){return t.sign(e).then(function(e){return t.provider.sendTransaction(e)})})},_.prototype.encrypt=function(e,t,r){if("function"!=typeof t||r||(r=t,t={}),r&&"function"!=typeof r)throw new Error("invalid callback");return t=t||{},this.mnemonic&&((t=c.shallowCopy(t)).mnemonic=this.mnemonic,t.path=this.path),p.encrypt(this.privateKey,e,t,r)},_.createRandom=function(e){var t=d.randomBytes(16);(e=e||{}).extraEntropy&&(t=a.arrayify(f.keccak256(a.concat([t,e.extraEntropy])).substring(0,34)));var r=l.entropyToMnemonic(t,e.locale);return _.fromMnemonic(r,e.path,e.locale)},_.fromEncryptedJson=function(e,t,r){if(h.isCrowdsaleWallet(e))try{r&&r(0);var n=p.decryptCrowdsale(e,t);return r&&r(1),Promise.resolve(new _(n))}catch(e){return Promise.reject(e)}else if(h.isSecretStorageWallet(e))return p.decrypt(e,t,r).then(function(e){return new _(e)});return Promise.reject("invalid wallet JSON")},_.fromMnemonic=function(e,t,r){return t=t||l.defaultPath,new _(l.fromMnemonic(e,r).derivePath(t))},_);function _(e,t){var r=s.call(this)||this;return b.checkNew(r,_),v.SigningKey.isSigningKey(e)?c.defineReadOnly(r,"signingKey",e):c.defineReadOnly(r,"signingKey",new v.SigningKey(e)),c.defineReadOnly(r,"provider",t),r}r.Wallet=w},{"./abstract-signer":2,"./errors":5,"./providers/abstract-provider":50,"./utils/bytes":64,"./utils/hash":65,"./utils/hdnode":66,"./utils/json-wallet":70,"./utils/keccak256":71,"./utils/properties":74,"./utils/random-bytes":75,"./utils/secret-storage":78,"./utils/signing-key":81,"./utils/transaction":83}],89:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=e("../wordlists/lang-en").langEn;r.en=n},{"../wordlists/lang-en":90}],90:[function(e,t,r){"use strict";var n,i=this&&this.__extends||(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])},function(e,t){function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)});Object.defineProperty(r,"__esModule",{value:!0});var o,s=e("../utils/wordlist"),a="AbandonAbilityAbleAboutAboveAbsentAbsorbAbstractAbsurdAbuseAccessAccidentAccountAccuseAchieveAcidAcousticAcquireAcrossActActionActorActressActualAdaptAddAddictAddressAdjustAdmitAdultAdvanceAdviceAerobicAffairAffordAfraidAgainAgeAgentAgreeAheadAimAirAirportAisleAlarmAlbumAlcoholAlertAlienAllAlleyAllowAlmostAloneAlphaAlreadyAlsoAlterAlwaysAmateurAmazingAmongAmountAmusedAnalystAnchorAncientAngerAngleAngryAnimalAnkleAnnounceAnnualAnotherAnswerAntennaAntiqueAnxietyAnyApartApologyAppearAppleApproveAprilArchArcticAreaArenaArgueArmArmedArmorArmyAroundArrangeArrestArriveArrowArtArtefactArtistArtworkAskAspectAssaultAssetAssistAssumeAsthmaAthleteAtomAttackAttendAttitudeAttractAuctionAuditAugustAuntAuthorAutoAutumnAverageAvocadoAvoidAwakeAwareAwayAwesomeAwfulAwkwardAxisBabyBachelorBaconBadgeBagBalanceBalconyBallBambooBananaBannerBarBarelyBargainBarrelBaseBasicBasketBattleBeachBeanBeautyBecauseBecomeBeefBeforeBeginBehaveBehindBelieveBelowBeltBenchBenefitBestBetrayBetterBetweenBeyondBicycleBidBikeBindBiologyBirdBirthBitterBlackBladeBlameBlanketBlastBleakBlessBlindBloodBlossomBlouseBlueBlurBlushBoardBoatBodyBoilBombBoneBonusBookBoostBorderBoringBorrowBossBottomBounceBoxBoyBracketBrainBrandBrassBraveBreadBreezeBrickBridgeBriefBrightBringBriskBroccoliBrokenBronzeBroomBrotherBrownBrushBubbleBuddyBudgetBuffaloBuildBulbBulkBulletBundleBunkerBurdenBurgerBurstBusBusinessBusyButterBuyerBuzzCabbageCabinCableCactusCageCakeCallCalmCameraCampCanCanalCancelCandyCannonCanoeCanvasCanyonCapableCapitalCaptainCarCarbonCardCargoCarpetCarryCartCaseCashCasinoCastleCasualCatCatalogCatchCategoryCattleCaughtCauseCautionCaveCeilingCeleryCementCensusCenturyCerealCertainChairChalkChampionChangeChaosChapterChargeChaseChatCheapCheckCheeseChefCherryChestChickenChiefChildChimneyChoiceChooseChronicChuckleChunkChurnCigarCinnamonCircleCitizenCityCivilClaimClapClarifyClawClayCleanClerkCleverClickClientCliffClimbClinicClipClockClogCloseClothCloudClownClubClumpClusterClutchCoachCoastCoconutCodeCoffeeCoilCoinCollectColorColumnCombineComeComfortComicCommonCompanyConcertConductConfirmCongressConnectConsiderControlConvinceCookCoolCopperCopyCoralCoreCornCorrectCostCottonCouchCountryCoupleCourseCousinCoverCoyoteCrackCradleCraftCramCraneCrashCraterCrawlCrazyCreamCreditCreekCrewCricketCrimeCrispCriticCropCrossCrouchCrowdCrucialCruelCruiseCrumbleCrunchCrushCryCrystalCubeCultureCupCupboardCuriousCurrentCurtainCurveCushionCustomCuteCycleDadDamageDampDanceDangerDaringDashDaughterDawnDayDealDebateDebrisDecadeDecemberDecideDeclineDecorateDecreaseDeerDefenseDefineDefyDegreeDelayDeliverDemandDemiseDenialDentistDenyDepartDependDepositDepthDeputyDeriveDescribeDesertDesignDeskDespairDestroyDetailDetectDevelopDeviceDevoteDiagramDialDiamondDiaryDiceDieselDietDifferDigitalDignityDilemmaDinnerDinosaurDirectDirtDisagreeDiscoverDiseaseDishDismissDisorderDisplayDistanceDivertDivideDivorceDizzyDoctorDocumentDogDollDolphinDomainDonateDonkeyDonorDoorDoseDoubleDoveDraftDragonDramaDrasticDrawDreamDressDriftDrillDrinkDripDriveDropDrumDryDuckDumbDuneDuringDustDutchDutyDwarfDynamicEagerEagleEarlyEarnEarthEasilyEastEasyEchoEcologyEconomyEdgeEditEducateEffortEggEightEitherElbowElderElectricElegantElementElephantElevatorEliteElseEmbarkEmbodyEmbraceEmergeEmotionEmployEmpowerEmptyEnableEnactEndEndlessEndorseEnemyEnergyEnforceEngageEngineEnhanceEnjoyEnlistEnoughEnrichEnrollEnsureEnterEntireEntryEnvelopeEpisodeEqualEquipEraEraseErodeErosionErrorEruptEscapeEssayEssenceEstateEternalEthicsEvidenceEvilEvokeEvolveExactExampleExcessExchangeExciteExcludeExcuseExecuteExerciseExhaustExhibitExileExistExitExoticExpandExpectExpireExplainExposeExpressExtendExtraEyeEyebrowFabricFaceFacultyFadeFaintFaithFallFalseFameFamilyFamousFanFancyFantasyFarmFashionFatFatalFatherFatigueFaultFavoriteFeatureFebruaryFederalFeeFeedFeelFemaleFenceFestivalFetchFeverFewFiberFictionFieldFigureFileFilmFilterFinalFindFineFingerFinishFireFirmFirstFiscalFishFitFitnessFixFlagFlameFlashFlatFlavorFleeFlightFlipFloatFlockFloorFlowerFluidFlushFlyFoamFocusFogFoilFoldFollowFoodFootForceForestForgetForkFortuneForumForwardFossilFosterFoundFoxFragileFrameFrequentFreshFriendFringeFrogFrontFrostFrownFrozenFruitFuelFunFunnyFurnaceFuryFutureGadgetGainGalaxyGalleryGameGapGarageGarbageGardenGarlicGarmentGasGaspGateGatherGaugeGazeGeneralGeniusGenreGentleGenuineGestureGhostGiantGiftGiggleGingerGiraffeGirlGiveGladGlanceGlareGlassGlideGlimpseGlobeGloomGloryGloveGlowGlueGoatGoddessGoldGoodGooseGorillaGospelGossipGovernGownGrabGraceGrainGrantGrapeGrassGravityGreatGreenGridGriefGritGroceryGroupGrowGruntGuardGuessGuideGuiltGuitarGunGymHabitHairHalfHammerHamsterHandHappyHarborHardHarshHarvestHatHaveHawkHazardHeadHealthHeartHeavyHedgehogHeightHelloHelmetHelpHenHeroHiddenHighHillHintHipHireHistoryHobbyHockeyHoldHoleHolidayHollowHomeHoneyHoodHopeHornHorrorHorseHospitalHostHotelHourHoverHubHugeHumanHumbleHumorHundredHungryHuntHurdleHurryHurtHusbandHybridIceIconIdeaIdentifyIdleIgnoreIllIllegalIllnessImageImitateImmenseImmuneImpactImposeImproveImpulseInchIncludeIncomeIncreaseIndexIndicateIndoorIndustryInfantInflictInformInhaleInheritInitialInjectInjuryInmateInnerInnocentInputInquiryInsaneInsectInsideInspireInstallIntactInterestIntoInvestInviteInvolveIronIslandIsolateIssueItemIvoryJacketJaguarJarJazzJealousJeansJellyJewelJobJoinJokeJourneyJoyJudgeJuiceJumpJungleJuniorJunkJustKangarooKeenKeepKetchupKeyKickKidKidneyKindKingdomKissKitKitchenKiteKittenKiwiKneeKnifeKnockKnowLabLabelLaborLadderLadyLakeLampLanguageLaptopLargeLaterLatinLaughLaundryLavaLawLawnLawsuitLayerLazyLeaderLeafLearnLeaveLectureLeftLegLegalLegendLeisureLemonLendLengthLensLeopardLessonLetterLevelLiarLibertyLibraryLicenseLifeLiftLightLikeLimbLimitLinkLionLiquidListLittleLiveLizardLoadLoanLobsterLocalLockLogicLonelyLongLoopLotteryLoudLoungeLoveLoyalLuckyLuggageLumberLunarLunchLuxuryLyricsMachineMadMagicMagnetMaidMailMainMajorMakeMammalManManageMandateMangoMansionManualMapleMarbleMarchMarginMarineMarketMarriageMaskMassMasterMatchMaterialMathMatrixMatterMaximumMazeMeadowMeanMeasureMeatMechanicMedalMediaMelodyMeltMemberMemoryMentionMenuMercyMergeMeritMerryMeshMessageMetalMethodMiddleMidnightMilkMillionMimicMindMinimumMinorMinuteMiracleMirrorMiseryMissMistakeMixMixedMixtureMobileModelModifyMomMomentMonitorMonkeyMonsterMonthMoonMoralMoreMorningMosquitoMotherMotionMotorMountainMouseMoveMovieMuchMuffinMuleMultiplyMuscleMuseumMushroomMusicMustMutualMyselfMysteryMythNaiveNameNapkinNarrowNastyNationNatureNearNeckNeedNegativeNeglectNeitherNephewNerveNestNetNetworkNeutralNeverNewsNextNiceNightNobleNoiseNomineeNoodleNormalNorthNoseNotableNoteNothingNoticeNovelNowNuclearNumberNurseNutOakObeyObjectObligeObscureObserveObtainObviousOccurOceanOctoberOdorOffOfferOfficeOftenOilOkayOldOliveOlympicOmitOnceOneOnionOnlineOnlyOpenOperaOpinionOpposeOptionOrangeOrbitOrchardOrderOrdinaryOrganOrientOriginalOrphanOstrichOtherOutdoorOuterOutputOutsideOvalOvenOverOwnOwnerOxygenOysterOzonePactPaddlePagePairPalacePalmPandaPanelPanicPantherPaperParadeParentParkParrotPartyPassPatchPathPatientPatrolPatternPausePavePaymentPeacePeanutPearPeasantPelicanPenPenaltyPencilPeoplePepperPerfectPermitPersonPetPhonePhotoPhrasePhysicalPianoPicnicPicturePiecePigPigeonPillPilotPinkPioneerPipePistolPitchPizzaPlacePlanetPlasticPlatePlayPleasePledgePluckPlugPlungePoemPoetPointPolarPolePolicePondPonyPoolPopularPortionPositionPossiblePostPotatoPotteryPovertyPowderPowerPracticePraisePredictPreferPreparePresentPrettyPreventPricePridePrimaryPrintPriorityPrisonPrivatePrizeProblemProcessProduceProfitProgramProjectPromoteProofPropertyProsperProtectProudProvidePublicPuddingPullPulpPulsePumpkinPunchPupilPuppyPurchasePurityPurposePursePushPutPuzzlePyramidQualityQuantumQuarterQuestionQuickQuitQuizQuoteRabbitRaccoonRaceRackRadarRadioRailRainRaiseRallyRampRanchRandomRangeRapidRareRateRatherRavenRawRazorReadyRealReasonRebelRebuildRecallReceiveRecipeRecordRecycleReduceReflectReformRefuseRegionRegretRegularRejectRelaxReleaseReliefRelyRemainRememberRemindRemoveRenderRenewRentReopenRepairRepeatReplaceReportRequireRescueResembleResistResourceResponseResultRetireRetreatReturnReunionRevealReviewRewardRhythmRibRibbonRiceRichRideRidgeRifleRightRigidRingRiotRippleRiskRitualRivalRiverRoadRoastRobotRobustRocketRomanceRoofRookieRoomRoseRotateRoughRoundRouteRoyalRubberRudeRugRuleRunRunwayRuralSadSaddleSadnessSafeSailSaladSalmonSalonSaltSaluteSameSampleSandSatisfySatoshiSauceSausageSaveSayScaleScanScareScatterSceneSchemeSchoolScienceScissorsScorpionScoutScrapScreenScriptScrubSeaSearchSeasonSeatSecondSecretSectionSecuritySeedSeekSegmentSelectSellSeminarSeniorSenseSentenceSeriesServiceSessionSettleSetupSevenShadowShaftShallowShareShedShellSheriffShieldShiftShineShipShiverShockShoeShootShopShortShoulderShoveShrimpShrugShuffleShySiblingSickSideSiegeSightSignSilentSilkSillySilverSimilarSimpleSinceSingSirenSisterSituateSixSizeSkateSketchSkiSkillSkinSkirtSkullSlabSlamSleepSlenderSliceSlideSlightSlimSloganSlotSlowSlushSmallSmartSmileSmokeSmoothSnackSnakeSnapSniffSnowSoapSoccerSocialSockSodaSoftSolarSoldierSolidSolutionSolveSomeoneSongSoonSorrySortSoulSoundSoupSourceSouthSpaceSpareSpatialSpawnSpeakSpecialSpeedSpellSpendSphereSpiceSpiderSpikeSpinSpiritSplitSpoilSponsorSpoonSportSpotSpraySpreadSpringSpySquareSqueezeSquirrelStableStadiumStaffStageStairsStampStandStartStateStaySteakSteelStemStepStereoStickStillStingStockStomachStoneStoolStoryStoveStrategyStreetStrikeStrongStruggleStudentStuffStumbleStyleSubjectSubmitSubwaySuccessSuchSuddenSufferSugarSuggestSuitSummerSunSunnySunsetSuperSupplySupremeSureSurfaceSurgeSurpriseSurroundSurveySuspectSustainSwallowSwampSwapSwarmSwearSweetSwiftSwimSwingSwitchSwordSymbolSymptomSyrupSystemTableTackleTagTailTalentTalkTankTapeTargetTaskTasteTattooTaxiTeachTeamTellTenTenantTennisTentTermTestTextThankThatThemeThenTheoryThereTheyThingThisThoughtThreeThriveThrowThumbThunderTicketTideTigerTiltTimberTimeTinyTipTiredTissueTitleToastTobaccoTodayToddlerToeTogetherToiletTokenTomatoTomorrowToneTongueTonightToolToothTopTopicToppleTorchTornadoTortoiseTossTotalTouristTowardTowerTownToyTrackTradeTrafficTragicTrainTransferTrapTrashTravelTrayTreatTreeTrendTrialTribeTrickTriggerTrimTripTrophyTroubleTruckTrueTrulyTrumpetTrustTruthTryTubeTuitionTumbleTunaTunnelTurkeyTurnTurtleTwelveTwentyTwiceTwinTwistTwoTypeTypicalUglyUmbrellaUnableUnawareUncleUncoverUnderUndoUnfairUnfoldUnhappyUniformUniqueUnitUniverseUnknownUnlockUntilUnusualUnveilUpdateUpgradeUpholdUponUpperUpsetUrbanUrgeUsageUseUsedUsefulUselessUsualUtilityVacantVacuumVagueValidValleyValveVanVanishVaporVariousVastVaultVehicleVelvetVendorVentureVenueVerbVerifyVersionVeryVesselVeteranViableVibrantViciousVictoryVideoViewVillageVintageViolinVirtualVirusVisaVisitVisualVitalVividVocalVoiceVoidVolcanoVolumeVoteVoyageWageWagonWaitWalkWallWalnutWantWarfareWarmWarriorWashWaspWasteWaterWaveWayWealthWeaponWearWeaselWeatherWebWeddingWeekendWeirdWelcomeWestWetWhaleWhatWheatWheelWhenWhereWhipWhisperWideWidthWifeWildWillWinWindowWineWingWinkWinnerWinterWireWisdomWiseWishWitnessWolfWomanWonderWoodWoolWordWorkWorldWorryWorthWrapWreckWrestleWristWriteWrongYardYearYellowYouYoungYouthZebraZeroZoneZoo",u=null;function l(e){if(null==u&&(u=a.replace(/([A-Z])/g," $1").toLowerCase().substring(1).split(" "),"0x3c8acc1e7b08d8e76f9fda015ef48dc8c710a73cb7e0f77b2c18a9b5a7adde60"!==s.check(e)))throw u=null,new Error("BIP39 Wordlist for en (English) FAILED")}function h(){return o.call(this,"en")||this}var f=new(o=s.Wordlist,i(h,o),h.prototype.getWord=function(e){return l(this),u[e]},h.prototype.getWordIndex=function(e){return l(this),u.indexOf(e)},h);r.langEn=f,s.register(f)},{"../utils/wordlist":87}]},{},[7])(7)}); //# sourceMappingURL=ethers.min.js.map diff --git a/dist/ethers.min.js.map b/dist/ethers.min.js.map index 33952133..2be3caa5 100644 --- a/dist/ethers.min.js.map +++ b/dist/ethers.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["ethers.min.js"],"names":["f","exports","module","define","amd","window","global","self","this","ethers","r","e","n","t","o","i","c","require","u","a","Error","code","p","call","length","1","Object","defineProperty","value","version","2","properties_1","Signer","isSigner","isType","setType","./utils/properties","3","bignumber_1","AddressZero","HashZero","EtherSymbol","NegativeOne","bigNumberify","Zero","One","Two","WeiPerEther","MaxUint256","./utils/bignumber","4","extendStatics","__extends","setPrototypeOf","__proto__","Array","d","b","hasOwnProperty","__","constructor","prototype","create","__importStar","mod","__esModule","result","k","_super","constants_1","errors","abi_coder_1","address_1","bytes_1","interface_1","abstract_provider_1","abstract_signer_1","VoidSigner","getAddress","Promise","resolve","address","_fail","message","operation","then","throwError","UNSUPPORTED_OPERATION","signMessage","sendTransaction","transaction","connect","provider","_this","defineReadOnly","allowedTransactionKeys","chainId","data","from","gasLimit","gasPrice","nonce","to","runMethod","contract","functionName","estimateOnly","method","interface","functions","params","_i","arguments","tx","blockTag","inputs","key","shallowCopy","pop","forEach","_deployed","addressPromise","resolveAddresses","paramType","isArray","promises_1","index","v","name","push","all","type","resolveName","components","isArrayMatch","match","promises","subParamType","encode","signer","hexDataLength","hexDataSlice","reason","defaultAbiCoder","decode","CALL_EXCEPTION","args","signature","errorSignature","errorArgs","outputs","error","estimateGas","gas","add","wait","bind","confirmations","receipt","events","logs","map","log","event","deepCopy","parsed","parseLog","values","eventSignature","removeListener","getBlock","blockHash","getTransaction","transactionHash","getTransactionReceipt","getEventTag","filter","topics","join","Contract","deployed","_deployedPromise","deployTransaction","getCode","contractAddress","fallback","overrides","signerOrProvider","attach","addressOrName","isIndexed","Interface","_getEventFilter","eventName","prepareEvent","eventTag","indexOf","formatSignature","parseSignature","event_1","INVALID_ARGUMENT","argumnet","filter_1","topic","slice","name_1","toLowerCase","_addEventListener","eventFilter","listener","once","wrappedListener","emit","apply","concat","on","_events","addListener","setTimeout","listenerCount","listeners","removeAllListeners","found","contractInterface","checkNew","isInterface","Provider","isProvider","arg","keys","filters","encodeTopics","catch","argument","run","warn","estimate","ContractFactory","getDeployTransaction","deployFunction","checkArgumentCount","bytecode","deploy","getContractAddress","fromSolidity","compilerOutput","MISSING_ARGUMENT","JSON","parse","abi","evm","bytecodeHex","isArrayish","hexlify","object","substring","isHexString","./abstract-signer","./constants","./errors","./providers/abstract-provider","./utils/abi-coder","./utils/address","./utils/bytes","./utils/interface","5","_version_1","UNKNOWN_ERROR","NOT_IMPLEMENTED","MISSING_NEW","UNEXPECTED_ARGUMENT","NUMERIC_FAULT","INSUFFICIENT_FUNDS","NONCE_EXPIRED","REPLACEMENT_UNDERPRICED","_permanentCensorErrors","_censorErrors","messageDetails","stringify","toString","kind","count","expectedCount","suffix","setCensorship","censorship","permanent","checkNormalize","form","normalize","String","fromCharCode","LogLevels","debug","default","info","off","LogLevel","logLevel","console","setLogLevel","level","./_version","6","contract_1","wallet_1","Wallet","constants","providers","utils","wordlists","shims_1","platform","getDefaultProvider","network","getNetwork","_defaultProvider","./contract","./providers","./utils","./utils/shims","./wallet","./wordlists","7","m","__export","./ethers","8","root","checkInt","parseInt","checkInts","arrayish","coerceArray","copy","buffer","ArrayBuffer","isView","Uint8Array","createArray","copyArray","sourceArray","targetArray","targetStart","sourceStart","sourceEnd","set","Hex","convertUtf8","toBytes","text","encodeURI","charCodeAt","substr","fromBytes","bytes","convertHex","numberOfRounds","16","24","32","rcon","S","Si","T1","T2","T3","T4","T5","T6","T7","T8","U1","U2","U3","U4","convertToInt32","AES","_prepare","rounds","_Ke","_Kd","roundKeyCount","KC","tk","tt","rconpointer","encrypt","plaintext","decrypt","ciphertext","ModeOfOperationECB","description","_aes","block","ModeOfOperationCBC","iv","_lastCipherblock","j","ModeOfOperationCFB","segmentSize","_shiftRegister","xorSegment","encrypted","ModeOfOperationOFB","_lastPrecipher","_lastPrecipherIndex","Counter","initialValue","_counter","setValue","setBytes","increment","ModeOfOperationCTR","counter","_remainingCounter","_remainingCounterIndex","aesjs","ModeOfOperation","ecb","cbc","cfb","ofb","ctr","hex","utf8","padding","pkcs7","pad","padder","strip","_arrayTest","_aesjs","9","assert","val","msg","inherits","ctor","superCtor","super_","TempCtor","BN","number","base","endian","isBN","negative","words","red","_init","Buffer","wordSize","parseHex","str","start","end","len","Math","min","parseBase","mul","num","max","left","right","cmp","_initNumber","_initArray","replace","_parseHex","_parseBase","toArray","ceil","w","limbLen","limbPow","total","word","imuln","_iaddn","pow","dest","clone","_expand","size","_normSign","inspect","zeros","groupSizes","groupBases","smallMulTo","out","lo","carry","ncarry","rword","maxJ","groupSize","groupBase","isZero","modn","idivn","toNumber","ret","toJSON","toBuffer","toArrayLike","ArrayType","byteLength","reqLength","littleEndian","res","q","andln","iushrn","_countBits","clz32","_zeroBits","bitLength","hi","zeroBits","toTwos","width","abs","inotn","iaddn","fromTwos","testn","notn","ineg","isNeg","neg","iuor","ior","or","uor","iuand","iand","and","uand","iuxor","ixor","xor","uxor","bytesNeeded","bitsLeft","setn","bit","wbit","iadd","isub","sub","comb10MulTo","mid","a0","al0","ah0","a1","al1","ah1","a2","al2","ah2","a3","al3","ah3","a4","al4","ah4","a5","al5","ah5","a6","al6","ah6","a7","al7","ah7","a8","al8","ah8","a9","al9","ah9","b0","bl0","bh0","b1","bl1","bh1","b2","bl2","bh2","b3","bl3","bh3","b4","bl4","bh4","b5","bl5","bh5","b6","bl6","bh6","b7","bl7","bh7","b8","bl8","bh8","b9","bl9","bh9","w0","imul","w1","w2","w3","w4","w5","w6","w7","w8","w9","w10","w11","w12","w13","w14","w15","w16","w17","w18","jumboMulTo","FFTM","mulp","x","y","mulTo","hncarry","bigMulTo","makeRBT","N","l","revBin","rb","permute","rbt","rws","iws","rtws","itws","transform","s","rtwdf","cos","PI","itwdf","sin","rtwdf_","itwdf_","re","ie","ro","io","rx","guessLen13b","odd","conjugate","normalize13b","ws","round","convert13b","stub","ph","_","rwst","iwst","nrws","nrwst","niwst","rmws","mulf","muln","sqr","isqr","toBitArray","iushln","bits","carryMask","newCarry","ishln","hint","extended","h","mask","maskedWords","ishrn","shln","ushln","shrn","ushrn","imaskn","maskn","isubn","addn","subn","iabs","_ishlnsubmul","shift","_wordDiv","mode","bhi","diff","qj","div","divmod","positive","divn","umod","divRound","dm","half","r2","acc","egcd","A","B","C","D","g","isEven","yp","xp","im","isOdd","jm","gcd","_invmp","x1","x2","delta","cmpn","invm","bincn","ucmp","gtn","gt","gten","gte","ltn","lt","lten","lte","eqn","eq","Red","toRed","ctx","convertTo","_forceRed","fromRed","convertFrom","forceRed","redAdd","redIAdd","redSub","redISub","redShl","shl","redMul","_verify2","redIMul","redSqr","_verify1","redISqr","redSqrt","sqrt","redInvm","redNeg","redPow","primes","k256","p224","p192","p25519","MPrime","tmp","_tmp","K256","P224","P192","P25519","prime","_prime","Mont","imod","rinv","minv","ireduce","rlen","split","imulK","input","output","outLen","prev","next","mod3","one","nOne","lpow","z","inv","wnd","current","currentLen","mont","10","crypto","msCrypto","getRandomValues","11","12","elliptic","rand","hmacDRBG","curve","curves","ec","eddsa","../package.json","./elliptic/curve","./elliptic/curves","./elliptic/ec","./elliptic/eddsa","./elliptic/hmac-drbg","./elliptic/utils","brorand","13","getNAF","getJSF","BaseCurve","conf","zero","two","pointFromJSON","gRed","_wnafT1","_wnafT2","_wnafT3","_wnafT4","adjustCount","redN","_maxwellTrick","BasePoint","precomputed","point","validate","_fixedNafMul","doubles","_getDoubles","naf","I","step","repr","nafW","jpoint","mixedAdd","points","toP","_wnafMul","nafPoints","_getNAFPoints","dblp","_wnafMulAdd","defW","coeffs","jacobianResult","wndWidth","comb","toJ","jsf","ja","jb","decodePoint","enc","pointFromX","encodeCompressed","_encode","compact","getX","getY","precompute","power","beta","_getBeta","_hasDoubles","dbl","../../elliptic","bn.js","14","15","short","edwards","./base","./edwards","./mont","./short","dup","17","Base","ShortCurve","tinv","zeroA","threeA","endo","_getEndomorphism","_endoWnafT1","_endoWnafT2","Point","isRed","inf","JPoint","zOne","lambda","betas","_getEndoRoots","lambdas","basis","vec","_getEndoBasis","ntinv","prevR","aprxSqrt","floor","y1","y2","len1","_endoSplit","v1","v2","c1","c2","p1","p2","q1","q2","k1","k2","ax","rhs","_endoWnafMulAdd","npoints","ncoeffs","obj","fromJSON","pre","endoMul","obj2point","isInfinity","nx","ny","ys1","dyinv","mulAdd","jmulAdd","_precompute","negate","zinv","zinv2","ay","pz2","z2","u1","u2","s1","s2","h2","h3","nz","jx","jy","jz","jz4","jyd","jx2","jyd2","jyd4","t1","t2","dny","_zeroDbl","_threeDbl","_dbl","xx","yy","yyyy","yyyy8","c8","gamma","alpha","beta4","beta8","ggamma8","jy2","jxd4","jyd8","trpl","zz","mm","ee","yyu4","kbase","z3","pz3","eqXToP","zs","xc","../curve","18","hash","PresetCurve","options","defineCurve","configurable","enumerable","get","sha256","sha384","sha512","undefined","../elliptic","./precomputed/secp256k1","hash.js","19","KeyPair","Signature","EC","nh","keyPair","keyFromPrivate","priv","fromPrivate","keyFromPublic","pub","fromPublic","genKeyPair","drbg","pers","entropy","hmacStrength","ns2","generate","_truncateToN","truncOnly","sign","bkey","getPrivate","persEnc","ns1","iter","kp","kpX","recoveryParam","canonical","verify","sinv","getPublic","recoverPubKey","isYOdd","isSecondKey","rInv","getKeyRecoveryParam","Q","Qprime","./key","./signature","20","_importPrivate","privEnc","_importPublic","pubEnc","derive","21","_importDER","Position","place","getLength","buf","initial","octetLen","rmPadding","constructLength","arr","octets","LN2","slen","toDER","backHalf","22","23","HmacDRBG","predResist","outSize","minEntropy","reseed","reseedInterval","K","V","entropyEnc","nonceEnc","seed","_update","_hmac","hmac","kmac","update","digest","addEnc","temp","25","zero2","toHex","d1","d2","m8","m14","m24","cachedProperty","computer","parseBytes","intFromLE","26","27","common","sha","ripemd","sha1","sha224","ripemd160","./hash/common","./hash/hmac","./hash/ripemd","./hash/sha","./hash/utils","28","BlockHash","pending","pendingTotal","blockSize","padLength","_delta8","_delta32","join32","_pad","_digest","minimalistic-assert","29","Hmac","Hash","inner","outer","30","rotl32","sum32","sum32_3","sum32_4","RIPEMD160","Kh","E","Ah","Bh","Ch","Dh","Eh","T","rh","sh","toHex32","split32","./common","31","./sha/1","./sha/224","./sha/256","./sha/384","./sha/512","33","34","shaCommon","sum32_5","ch32","maj32","s0_256","s1_256","g0_256","g1_256","sha256_K","SHA256","W","../common","../utils","35","36","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","sha512_K","SHA512","ch64_hi","xh","xl","yh","yl","zh","ch64_lo","zl","maj64_hi","maj64_lo","s0_512_hi","s0_512_lo","s1_512_hi","s1_512_lo","g0_512_hi","g0_512_lo","g1_512_hi","g1_512_lo","_prepareBlock","c0_hi","c0_lo","c1_hi","c1_lo","c2_hi","c2_lo","c3_hi","c3_lo","ah","al","bh","bl","ch","cl","dh","dl","eh","el","fh","fl","gh","gl","hh","hl","c4_hi","c4_lo","T1_hi","T1_lo","T2_hi","T2_lo","37","rotr32","p32","ft_1","38","htonl","zero8","pos","39","writable","40","process","JS_SHA3_NO_NODE_JS","versions","node","COMMON_JS","JS_SHA3_NO_COMMON_JS","HEX_CHARS","SHIFT","RC","BITS","OUTPUT_TYPES","createOutputMethod","outputType","Keccak","createShakeOutputMethod","outputBits","createMethod","algorithms","methods","methodNames","algorithm","methodName","blocks","reset","blockCount","byteCount","outputBlocks","extraBytes","notString","lastByteIndex","finalize","arrayBuffer","array","Uint32Array","offset","c0","c3","c4","c5","c6","c7","c9","b10","b11","b12","b13","b14","b15","b16","b17","b18","b19","b20","b21","b22","b23","b24","b25","b26","b27","b28","b29","b30","b31","b32","b33","b34","b35","b36","b37","b38","b39","b40","b41","b42","b43","b44","b45","b46","b47","b48","b49","_process","41","equal","42","browser","43","setImmediate","h0","h1","h4","h5","h6","h7","bytesLeft","bitLenHi","bitLenLo","numZeros","PBKDF2_HMAC_SHA256_OneIter","password","salt","dkLen","innerLen","outerKey","dk","incrementCounter","blockmix_salsa8","BY","Yi","_X","arraycopy","blockxor","salsa20_8","R","src","srcPos","destPos","checkBufferish","ensureInteger","intValue","scrypt","callback","MAX_VALUE","i1","Bi","XY","totalOps","currentOp","lastPercent10","stop","state","i0","limit","nextTick","incrementalSMix","steps","percent10","derivedKey","_scrypt","timers","44","clearImmediate","html","channel","messagePrefix","nextHandle","tasksByHandle","currentlyRunningATask","doc","document","attachTo","getPrototypeOf","handle","addFromSetImmediateArguments","partiallyApplied","runIfPresent","postMessage","importScripts","postMessageIsAsynchronous","oldOnMessage","onmessage","canUsePostMessage","random","addEventListener","onGlobalMessage","attachEvent","MessageChannel","port1","port2","createElement","documentElement","script","onreadystatechange","removeChild","appendChild","handler","Function","task","source","45","46","rng","_rnds8","_rnds","47","_rng","_byteToHex","_hexToByte","unparse","bth","_seedBytes","_nodeId","_clockseq","_lastMSecs","_lastNSecs","v4","rnds","ii","uuid","clockseq","msecs","Date","getTime","nsecs","dt","tl","tmh","oct","./rng","48","XMLHttpRequest","49","../utils/properties","50","hash_1","networks_1","rlp_1","transaction_1","utf8_1","web_1","check","format","checkKey","checkValue","allowNull","nullValue","arrayOf","checkHash","requirePrefix","checkNumber","checkUint256","uint256","checkBlockTag","hexStripZeros","formatTransaction","blockNumber","transactionIndex","creates","raw","checkTransactionResponse","stripZeros","networkId","formatBlock","parentHash","timestamp","difficulty","gasUsed","miner","extraData","transactions","formatBlockWithTransactions","checkBlock","includeTransactions","author","formatTransactionRequest","checkTransactionRequest","formatTransactionReceiptLog","transactionLogIndex","logIndex","formatTransactionReceipt","logsBloom","cumulativeGasUsed","status","checkTopics","formatFilter","fromBlock","toBlock","formatFilterByBlock","replaceValue","formatLog","removed","checkLog","serializeTopics","BaseProvider","_doPoll","getBlockNumber","_setFastBlockNumber","_lastBlockNumber","_emitted","eventBlockNumber","newBalances","uniqueEventTags","tag","comps","hash_2","address_2","_balances","getBalance","balance","lastBalance","deserializeTopics","getLogs","doPoll","resetEventsBlock","polling","_network","ready","_fastBlockNumber","_poller","setInterval","pollingInterval","clearInterval","_pollingInterval","_getFastBlockNumber","now","_fastQueryDate","_fastBlockNumberPromise","waitForTransaction","perform","getGasPrice","resolveProperties","_a","_getAddress","getTransactionCount","getStorageAt","position","signedTransaction","_wrapTransaction","expectedHash","returnedHash","_resolveNames","blockHashOrBlockTag","blockHash_1","poll","onceBlock","blockNumber_1","blockTag_1","transactionReceipt","entry","byzantium","checkTransactionReceipt","checkFilter","getEtherPrice","_getResolver","ensAddress","namehash","nodeHash","resolverAddress","lookupAddress","nodehash","toUtf8String","addr","_startPending","_stopPending","eventTag_1","knownNetwork","inheritable","../constants","../errors","../utils/address","../utils/bignumber","../utils/bytes","../utils/hash","../utils/networks","../utils/rlp","../utils/transaction","../utils/utf8","../utils/web","./abstract-provider","51","base_provider_1","getTransactionString","getResult","getJsonResult","jsonrpc","checkLogTag","EtherscanProvider","url","baseUrl","apiKey","procFunc","fetchJson","action","request","response","responseText","reject","topic0","txs","seq","parseFloat","ethusd","getHistory","startBlock","endBlock","item","timeStamp","./base-provider","52","checkNetworks","networks","FallbackProvider","_providers","firstError","ready_1","53","etherscan_provider_1","fallback_provider_1","ipc_provider_1","IpcProvider","infura_provider_1","InfuraProvider","json_rpc_provider_1","JsonRpcProvider","JsonRpcSigner","web3_provider_1","Web3Provider","./etherscan-provider","./fallback-provider","./infura-provider","./ipc-provider","./json-rpc-provider","./web3-provider","54","getSigner","listAccounts","projectId","standard","host","55","56","payload","getLowerCase","_constructorGuard","_nextId","_address","send","accounts","_index","sendUncheckedTransaction","fromAddress","results","hexTx","hexlifyTransaction","fastRetry","toUtf8Bytes","unlock","constructorGuard","addressOrIndex","id","connection","_pendingFilter","pendingFilter","filterId","hashes","timeout","timer","allowExtra","allowed","checkProperties","../abstract-signer","57","_web3Provider","isMetaMask","_sendAsync","error_1","web3Provider","path","sendAsync","58","paramTypeBytes","RegExp","paramTypeNumber","paramTypeArray","defaultCoerceFunc","regexParen","regexIdentifier","verifyType","parseParam","param","allowIndexed","originalParam","parent","allowType","allowParams","indexed","child","allowName","allowArray","sibling","readArray","formatParamType","getParamCoder","parseParamType","fragment","trim","anonymous","splitNesting","modifier","parseSignatureEvent","constant","payable","stateMutability","parseSignatureFunction","Coder","coerceFunc","localName","dynamic","CoderAnonymous","coder","CoderNull","arrayify","consumed","CoderNumber","signed","bounds","padZeros","coderType","junkLength","uint256Coder","CoderBoolean","CoderFixedBytes","CoderAddress","_encodeDynamicBytes","dataLength","_decodeDynamicBytes","CoderDynamicBytes","CoderString","alignSize","pack","coders","arrayValues","parts","staticSize","dynamicSize","part","dynamicOffset","unpack","baseOffset","CoderArray","decodedLength","CoderTuple","types","accum","depth","paramTypeSimple","bool","string","component","getTupleParamCoder","AbiCoder","typeObject","./address","./bignumber","./bytes","./properties","./utf8","59","__importDefault","bn_js_1","keccak256_1","getChecksumAddress","chars","hashed","i_1","keccak256","toUpperCase","ibanLookup","safeDigits","log10","LN10","ibanChecksum","expanded","checksum","getIcapAddress","base36","./keccak256","./rlp","60","textData","atob","btoa","61","BaseX","digits","_leader","alphabet","TypeError","byte","_alphabetMap","reverse","charAt","Base32","Base58","62","BN_1","bn","toBN","_bnify","toBigNumber","BigNumber","_hex","other","fault","details","toHexString","isBigNumber","outputValue","63","isHexable","addSlice","objects","arrays","HexCharacters","operartion","hexZeroPad","splitSignature","isSignature","endOffset","joinSignature","64","Zeros","Partition","UseSTD3ASCIIRules","partition","label","hashMessage","65","lang_en_1","basex_1","pbkdf2_1","hmac_1","secp256k1_1","sha2_1","MasterSecret","HardenedBit","getUpperMask","bytes32","base58check","defaultPath","HDNode","privateKey","parentFingerprint","chainCode","publicKey","neuter","_derive","computeHmac","SupportedAlgorithms","IL","IR","ki","Ki","_addPoint","fingerprint","mnemonic","derivePath","isHDNode","compressedPublicKey","computeAddress","_fromSeed","seedArray","mnemonicToSeed","UnicodeNormalizationForm","NFKD","pbkdf2","mnemonicToEntropy","wordlist","langEn","getWordIndex","entropyBits","checksumMask","entropyToMnemonic","indices","remainingBits","checksumBits","getWord","fromExtendedKey","extendedKey","fromMnemonic","fromSeed","isValidMnemonic","../wordlists/lang-en","./basex","./hmac","./pbkdf2","./secp256k1","./sha2","66","67","base64","json_wallet_1","getJsonWalletAddress","solidity_1","solidityKeccak256","solidityPack","soliditySha256","random_bytes_1","randomBytes","RLP","computePublicKey","recoverAddress","recoverPublicKey","verifyMessage","signing_key_1","SigningKey","populateTransaction","transaction_2","parseTransaction","serializeTransaction","serialize","formatBytes32String","parseBytes32String","units_1","commify","formatEther","parseEther","formatUnits","parseUnits","utf8_2","wordlist_1","Wordlist","./abi-coder","./base64","./hash","./hdnode","./interface","./json-wallet","./networks","./random-bytes","./signing-key","./solidity","./transaction","./units","./web","./wordlist","68","Description","freeze","_Indexed","_DeployDescription","_FunctionDescription","sighash","errorArg","errorValue","Result","_EventDescription","maxCount","inputIndexed","inputNonIndexed","inputDynamic","resultIndexed","resultNonIndexed","nonIndexedIndex","indexedIndex","_TransactionDescription","_LogDescription","addMethod","func","errorMessage","_abi","69","isCrowdsaleWallet","json","encseed","ethaddr","isSecretStorageWallet","70","sha3","keccak_256","js-sha3","71","ethDefaultProvider","providerList","etcDefaultProvider","homestead","ropsten","unspecified","mainnet","morden","testnet","rinkeby","goerli","kovan","classic","classicTestnet","n_1","n_2","72","iterations","keylen","hashAlgorithm","hLen","DK","block1","U","73","_ethersType","properties","opaque","boolean","frozen","74","trunc","_weakCrypto","75","arrayifyInteger","unshift","unarrayifyInteger","_decodeChildren","childOffset","decoded","_decode","lengthLength","76","elliptic_1","_curve","getCurve","computeSharedSecret","otherKey","otherKeyPair","p0","compressed","sig","rs","77","aes_js_1","scrypt_js_1","uuid_1","looseArrayify","hexString","zpad","getPassword","NFKC","searchPath","currentChild","matchingChild","decryptCrowdsale","encryptedSeed","aesCbc","seedHex","seedHexBytes","signingKey","progressCallback","getSigningKey","derivedHalf","computeMAC","aesCtr","mnemonicKey","mnemonicCiphertext","mnemonicIv","mnemonicCounter","mnemonicAesCtr","passwordBytes","kdf","progress","prfFunc","prf","privateKeyBytes","isSigningKey","client","uuidRandom","macPrefix","mac","Crypto","cipher","cipherparams","kdfparams","dklen","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","gethFilename","aes-js","scrypt-js","78","hash_js_1","79","setimmediate","80","hdnode_1","signDigest","81","regexBytes","regexNumber","regexArray","tight","_pack","baseType","82","handleNumber","transactionFields","maxLength","fieldInfo","unsignedTransaction","rawTransaction","handleAddress","../providers/abstract-provider","83","unitInfos","_getUnitInfo","decimals","tenPower","getUnitInfo","unitType","unitInfo","fraction","whole","wholeValue","fractionValue","wei","formatted","ether","84","errors_1","ignoreErrors","extraLength","overlongMask","nextChar","85","xmlhttprequest_1","base64_1","processFunc","headers","user","allowInsecure","authorization","abort","cancelTimeout","clearTimeout","open","header","setRequestHeader","readyState","statusCode","jsonError","orginialError","requestBody","body","onerror","connectionError","ceiling","interval","done","cancel","fastTimeout","attempt","xmlhttprequest","86","locale","register","lang","87","secretStorage","rawTx","createRandom","extraEntropy","fromEncryptedJson","./utils/hash","./utils/hdnode","./utils/json-wallet","./utils/keccak256","./utils/random-bytes","./utils/secret-storage","./utils/signing-key","./utils/transaction","88","en","89","loadWords","LangEn","../utils/wordlist"],"mappings":"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M,GAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,KAGtLC,EAAI,CAAC,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,EAAM,IAAM,GAAM,IAAM,GAAM,IAAM,EAAM,IAAM,EAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,EAAM,IAAM,GAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,EAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAC//CC,EAAI,CAAC,GAAM,EAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,EAAM,IAAM,IAAM,IAAM,EAAM,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,EAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,GAAM,KAG//CC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAC1/FC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,EAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAC1/FC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAC1/FC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAG1/FC,EAAK,CAAC,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,EAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,EAAK,CAAC,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,SAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,YAG1/FC,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UA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","file":"ethers.min.js","sourcesContent":["(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.ethers = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i 0) {\n errors.throwError('call exception', errors.CALL_EXCEPTION, {\n address: contract.address,\n method: method.signature,\n args: params\n });\n }\n throw error;\n }\n });\n }\n else if (method.type === 'transaction') {\n // Only computing the transaction estimate\n if (estimateOnly) {\n if (!contract.provider) {\n errors.throwError('estimate gas require a provider or a signer with a provider', errors.UNSUPPORTED_OPERATION, { operation: 'estimateGas' });\n }\n if (tx.from == null && contract.signer) {\n tx.from = contract.signer.getAddress();\n }\n return contract.provider.estimateGas(tx);\n }\n if (tx.gasLimit == null && method.gas != null) {\n tx.gasLimit = bignumber_1.bigNumberify(method.gas).add(21000);\n }\n if (!contract.signer) {\n errors.throwError('sending a transaction requires a signer', errors.UNSUPPORTED_OPERATION, { operation: 'sendTransaction' });\n }\n // Make sure they aren't overriding something they shouldn't\n if (tx.from != null) {\n errors.throwError('cannot override from in a transaction', errors.UNSUPPORTED_OPERATION, { operation: 'sendTransaction' });\n }\n return contract.signer.sendTransaction(tx).then(function (tx) {\n var wait = tx.wait.bind(tx);\n tx.wait = function (confirmations) {\n return wait(confirmations).then(function (receipt) {\n receipt.events = receipt.logs.map(function (log) {\n var event = properties_1.deepCopy(log);\n var parsed = contract.interface.parseLog(log);\n if (parsed) {\n event.args = parsed.values;\n event.decode = parsed.decode;\n event.event = parsed.name;\n event.eventSignature = parsed.signature;\n }\n event.removeListener = function () { return contract.provider; };\n event.getBlock = function () {\n return contract.provider.getBlock(receipt.blockHash);\n };\n event.getTransaction = function () {\n return contract.provider.getTransaction(receipt.transactionHash);\n };\n event.getTransactionReceipt = function () {\n return Promise.resolve(receipt);\n };\n return event;\n });\n return receipt;\n });\n };\n return tx;\n });\n }\n throw new Error('invalid type - ' + method.type);\n return null;\n });\n };\n}\nfunction getEventTag(filter) {\n if (filter.address && (filter.topics == null || filter.topics.length === 0)) {\n return '*';\n }\n return (filter.address || '*') + '@' + (filter.topics ? filter.topics.join(':') : '');\n}\nvar Contract = /** @class */ (function () {\n // https://github.com/Microsoft/TypeScript/issues/5453\n // Once this issue is resolved (there are open PR) we can do this nicer\n // by making addressOrName default to null for 2 operand calls. :)\n function Contract(addressOrName, contractInterface, signerOrProvider) {\n var _this = this;\n errors.checkNew(this, Contract);\n // @TODO: Maybe still check the addressOrName looks like a valid address or name?\n //address = getAddress(address);\n if (interface_1.Interface.isInterface(contractInterface)) {\n properties_1.defineReadOnly(this, 'interface', contractInterface);\n }\n else {\n properties_1.defineReadOnly(this, 'interface', new interface_1.Interface(contractInterface));\n }\n if (abstract_signer_1.Signer.isSigner(signerOrProvider)) {\n properties_1.defineReadOnly(this, 'provider', signerOrProvider.provider);\n properties_1.defineReadOnly(this, 'signer', signerOrProvider);\n }\n else if (abstract_provider_1.Provider.isProvider(signerOrProvider)) {\n properties_1.defineReadOnly(this, 'provider', signerOrProvider);\n properties_1.defineReadOnly(this, 'signer', null);\n }\n else {\n errors.throwError('invalid signer or provider', errors.INVALID_ARGUMENT, { arg: 'signerOrProvider', value: signerOrProvider });\n }\n properties_1.defineReadOnly(this, 'estimate', {});\n properties_1.defineReadOnly(this, 'functions', {});\n properties_1.defineReadOnly(this, 'filters', {});\n Object.keys(this.interface.events).forEach(function (eventName) {\n var event = _this.interface.events[eventName];\n properties_1.defineReadOnly(_this.filters, eventName, function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return {\n address: _this.address,\n topics: event.encodeTopics(args)\n };\n });\n });\n this._events = [];\n properties_1.defineReadOnly(this, 'address', addressOrName);\n if (this.provider) {\n properties_1.defineReadOnly(this, 'addressPromise', this.provider.resolveName(addressOrName).then(function (address) {\n if (address == null) {\n throw new Error('name not found');\n }\n return address;\n }).catch(function (error) {\n throw error;\n }));\n }\n else {\n try {\n properties_1.defineReadOnly(this, 'addressPromise', Promise.resolve(address_1.getAddress(addressOrName)));\n }\n catch (error) {\n // Without a provider, we cannot use ENS names\n errors.throwError('provider is required to use non-address contract address', errors.INVALID_ARGUMENT, { argument: 'addressOrName', value: addressOrName });\n }\n }\n Object.keys(this.interface.functions).forEach(function (name) {\n var run = runMethod(_this, name, false);\n if (_this[name] == null) {\n properties_1.defineReadOnly(_this, name, run);\n }\n else {\n errors.warn('WARNING: Multiple definitions for ' + name);\n }\n if (_this.functions[name] == null) {\n properties_1.defineReadOnly(_this.functions, name, run);\n properties_1.defineReadOnly(_this.estimate, name, runMethod(_this, name, true));\n }\n });\n }\n // @TODO: Allow timeout?\n Contract.prototype.deployed = function () {\n return this._deployed();\n };\n Contract.prototype._deployed = function (blockTag) {\n var _this = this;\n if (!this._deployedPromise) {\n // If we were just deployed, we know the transaction we should occur in\n if (this.deployTransaction) {\n this._deployedPromise = this.deployTransaction.wait().then(function () {\n return _this;\n });\n }\n else {\n // @TODO: Once we allow a timeout to be passed in, we will wait\n // up to that many blocks for getCode\n // Otherwise, poll for our code to be deployed\n this._deployedPromise = this.provider.getCode(this.address, blockTag).then(function (code) {\n if (code === '0x') {\n errors.throwError('contract not deployed', errors.UNSUPPORTED_OPERATION, {\n contractAddress: _this.address,\n operation: 'getDeployed'\n });\n }\n return _this;\n });\n }\n }\n return this._deployedPromise;\n };\n // @TODO:\n // estimateFallback(overrides?: TransactionRequest): Promise\n // @TODO:\n // estimateDeploy(bytecode: string, ...args): Promise\n Contract.prototype.fallback = function (overrides) {\n var _this = this;\n if (!this.signer) {\n errors.throwError('sending a transaction requires a signer', errors.UNSUPPORTED_OPERATION, { operation: 'sendTransaction(fallback)' });\n }\n var tx = properties_1.shallowCopy(overrides || {});\n ['from', 'to'].forEach(function (key) {\n if (tx[key] == null) {\n return;\n }\n errors.throwError('cannot override ' + key, errors.UNSUPPORTED_OPERATION, { operation: key });\n });\n tx.to = this.addressPromise;\n return this.deployed().then(function () {\n return _this.signer.sendTransaction(tx);\n });\n };\n // Reconnect to a different signer or provider\n Contract.prototype.connect = function (signerOrProvider) {\n if (typeof (signerOrProvider) === 'string') {\n signerOrProvider = new VoidSigner(signerOrProvider, this.provider);\n }\n var contract = new Contract(this.address, this.interface, signerOrProvider);\n if (this.deployTransaction) {\n properties_1.defineReadOnly(contract, 'deployTransaction', this.deployTransaction);\n }\n return contract;\n };\n // Re-attach to a different on=chain instance of this contract\n Contract.prototype.attach = function (addressOrName) {\n return new Contract(addressOrName, this.interface, this.signer || this.provider);\n };\n Contract.isIndexed = function (value) {\n return interface_1.Interface.isIndexed(value);\n };\n Contract.prototype._getEventFilter = function (eventName) {\n var _this = this;\n if (typeof (eventName) === 'string') {\n // Listen for any event\n if (eventName === '*') {\n return {\n prepareEvent: function (e) {\n var parsed = _this.interface.parseLog(e);\n if (parsed) {\n e.args = parsed.values;\n e.decode = parsed.decode;\n e.event = parsed.name;\n e.eventSignature = parsed.signature;\n }\n return [e];\n },\n eventTag: '*',\n filter: { address: this.address },\n };\n }\n // Normalize the eventName\n if (eventName.indexOf('(') !== -1) {\n eventName = abi_coder_1.formatSignature(abi_coder_1.parseSignature('event ' + eventName));\n }\n var event_1 = this.interface.events[eventName];\n if (!event_1) {\n errors.throwError('unknown event - ' + eventName, errors.INVALID_ARGUMENT, { argumnet: 'eventName', value: eventName });\n }\n var filter_1 = {\n address: this.address,\n topics: [event_1.topic]\n };\n return {\n prepareEvent: function (e) {\n var args = event_1.decode(e.data, e.topics);\n e.args = args;\n var result = Array.prototype.slice.call(args);\n result.push(e);\n return result;\n },\n event: event_1,\n eventTag: getEventTag(filter_1),\n filter: filter_1\n };\n }\n var filter = {\n address: this.address\n };\n // Find the matching event in the ABI; if none, we still allow filtering\n // since it may be a filter for an otherwise unknown event\n var event = null;\n if (eventName.topics && eventName.topics[0]) {\n filter.topics = eventName.topics;\n for (var name_1 in this.interface.events) {\n if (name_1.indexOf('(') === -1) {\n continue;\n }\n var e = this.interface.events[name_1];\n if (e.topic === eventName.topics[0].toLowerCase()) {\n event = e;\n break;\n }\n }\n }\n return {\n prepareEvent: function (e) {\n if (!event) {\n return [e];\n }\n var args = event.decode(e.data, e.topics);\n e.args = args;\n var result = Array.prototype.slice.call(args);\n result.push(e);\n return result;\n },\n event: event,\n eventTag: getEventTag(filter),\n filter: filter\n };\n };\n Contract.prototype._addEventListener = function (eventFilter, listener, once) {\n var _this = this;\n if (!this.provider) {\n errors.throwError('events require a provider or a signer with a provider', errors.UNSUPPORTED_OPERATION, { operation: 'once' });\n }\n var wrappedListener = function (log) {\n var event = properties_1.deepCopy(log);\n var args = eventFilter.prepareEvent(event);\n if (eventFilter.event) {\n event.decode = eventFilter.event.decode;\n event.event = eventFilter.event.name;\n event.eventSignature = eventFilter.event.signature;\n }\n event.removeListener = function () { _this.removeListener(eventFilter.filter, listener); };\n event.getBlock = function () { return _this.provider.getBlock(log.blockHash); };\n event.getTransaction = function () { return _this.provider.getTransaction(log.transactionHash); };\n event.getTransactionReceipt = function () { return _this.provider.getTransactionReceipt(log.transactionHash); };\n _this.emit.apply(_this, [eventFilter.filter].concat(args));\n };\n this.provider.on(eventFilter.filter, wrappedListener);\n this._events.push({ eventFilter: eventFilter, listener: listener, wrappedListener: wrappedListener, once: once });\n };\n Contract.prototype.on = function (event, listener) {\n this._addEventListener(this._getEventFilter(event), listener, false);\n return this;\n };\n Contract.prototype.once = function (event, listener) {\n this._addEventListener(this._getEventFilter(event), listener, true);\n return this;\n };\n Contract.prototype.addListener = function (eventName, listener) {\n return this.on(eventName, listener);\n };\n Contract.prototype.emit = function (eventName) {\n var _this = this;\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (!this.provider) {\n return false;\n }\n var result = false;\n var eventFilter = this._getEventFilter(eventName);\n this._events = this._events.filter(function (event) {\n // Not this event (keep it for later)\n if (event.eventFilter.eventTag !== eventFilter.eventTag) {\n return true;\n }\n // Call the callback in the next event loop\n setTimeout(function () {\n event.listener.apply(_this, args);\n }, 0);\n result = true;\n // Reschedule it if it not \"once\"\n return !(event.once);\n });\n return result;\n };\n Contract.prototype.listenerCount = function (eventName) {\n if (!this.provider) {\n return 0;\n }\n var eventFilter = this._getEventFilter(eventName);\n return this._events.filter(function (event) {\n return event.eventFilter.eventTag === eventFilter.eventTag;\n }).length;\n };\n Contract.prototype.listeners = function (eventName) {\n if (!this.provider) {\n return [];\n }\n var eventFilter = this._getEventFilter(eventName);\n return this._events.filter(function (event) {\n return event.eventFilter.eventTag === eventFilter.eventTag;\n }).map(function (event) { return event.listener; });\n };\n Contract.prototype.removeAllListeners = function (eventName) {\n var _this = this;\n if (!this.provider) {\n return this;\n }\n var eventFilter = this._getEventFilter(eventName);\n this._events = this._events.filter(function (event) {\n // Keep all other events\n if (event.eventFilter.eventTag !== eventFilter.eventTag) {\n return true;\n }\n // Deregister this event from the provider and filter it out\n _this.provider.removeListener(event.eventFilter.filter, event.wrappedListener);\n return false;\n });\n return this;\n };\n Contract.prototype.removeListener = function (eventName, listener) {\n var _this = this;\n if (!this.provider) {\n return this;\n }\n var found = false;\n var eventFilter = this._getEventFilter(eventName);\n this._events = this._events.filter(function (event) {\n // Make sure this event and listener match\n if (event.eventFilter.eventTag !== eventFilter.eventTag) {\n return true;\n }\n if (event.listener !== listener) {\n return true;\n }\n _this.provider.removeListener(event.eventFilter.filter, event.wrappedListener);\n // Already found a matching event in a previous loop\n if (found) {\n return true;\n }\n // REmove this event (returning false filters us out)\n found = true;\n return false;\n });\n return this;\n };\n return Contract;\n}());\nexports.Contract = Contract;\nvar ContractFactory = /** @class */ (function () {\n function ContractFactory(contractInterface, bytecode, signer) {\n var bytecodeHex = null;\n // Allow the bytecode object from the Solidity compiler\n if (typeof (bytecode) === 'string') {\n bytecodeHex = bytecode;\n }\n else if (bytes_1.isArrayish(bytecode)) {\n bytecodeHex = bytes_1.hexlify(bytecode);\n }\n else if (typeof (bytecode.object) === 'string') {\n bytecodeHex = bytecode.object;\n }\n else {\n errors.throwError('bytecode must be a valid hex string', errors.INVALID_ARGUMENT, { arg: 'bytecode', value: bytecode });\n }\n // Make sure it is 0x prefixed\n if (bytecodeHex.substring(0, 2) !== '0x') {\n bytecodeHex = '0x' + bytecodeHex;\n }\n if (!bytes_1.isHexString(bytecodeHex)) {\n errors.throwError('bytecode must be a valid hex string', errors.INVALID_ARGUMENT, { arg: 'bytecode', value: bytecode });\n }\n if ((bytecodeHex.length % 2) !== 0) {\n errors.throwError('bytecode must be valid data (even length)', errors.INVALID_ARGUMENT, { arg: 'bytecode', value: bytecode });\n }\n properties_1.defineReadOnly(this, 'bytecode', bytecodeHex);\n if (interface_1.Interface.isInterface(contractInterface)) {\n properties_1.defineReadOnly(this, 'interface', contractInterface);\n }\n else {\n properties_1.defineReadOnly(this, 'interface', new interface_1.Interface(contractInterface));\n }\n if (signer && !abstract_signer_1.Signer.isSigner(signer)) {\n errors.throwError('invalid signer', errors.INVALID_ARGUMENT, { arg: 'signer', value: null });\n }\n properties_1.defineReadOnly(this, 'signer', signer || null);\n }\n ContractFactory.prototype.getDeployTransaction = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var tx = {};\n // If we have 1 additional argument, we allow transaction overrides\n if (args.length === this.interface.deployFunction.inputs.length + 1) {\n tx = properties_1.shallowCopy(args.pop());\n for (var key in tx) {\n if (!allowedTransactionKeys[key]) {\n throw new Error('unknown transaction override ' + key);\n }\n }\n }\n // Do not allow these to be overridden in a deployment transaction\n ['data', 'from', 'to'].forEach(function (key) {\n if (tx[key] == null) {\n return;\n }\n errors.throwError('cannot override ' + key, errors.UNSUPPORTED_OPERATION, { operation: key });\n });\n // Make sure the call matches the constructor signature\n errors.checkArgumentCount(args.length, this.interface.deployFunction.inputs.length, ' in Contract constructor');\n // Set the data to the bytecode + the encoded constructor arguments\n tx.data = this.interface.deployFunction.encode(this.bytecode, args);\n return tx;\n };\n ContractFactory.prototype.deploy = function () {\n var _this = this;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n // Get the deployment transaction (with optional overrides)\n var tx = this.getDeployTransaction.apply(this, args);\n // Send the deployment transaction\n return this.signer.sendTransaction(tx).then(function (tx) {\n var contract = new Contract(address_1.getContractAddress(tx), _this.interface, _this.signer);\n properties_1.defineReadOnly(contract, 'deployTransaction', tx);\n return contract;\n });\n };\n ContractFactory.prototype.attach = function (address) {\n return new Contract(address, this.interface, this.signer);\n };\n ContractFactory.prototype.connect = function (signer) {\n return new ContractFactory(this.interface, this.bytecode, signer);\n };\n ContractFactory.fromSolidity = function (compilerOutput, signer) {\n if (compilerOutput == null) {\n errors.throwError('missing compiler output', errors.MISSING_ARGUMENT, { argument: 'compilerOutput' });\n }\n if (typeof (compilerOutput) === 'string') {\n compilerOutput = JSON.parse(compilerOutput);\n }\n var abi = compilerOutput.abi;\n var bytecode = null;\n if (compilerOutput.bytecode) {\n bytecode = compilerOutput.bytecode;\n }\n else if (compilerOutput.evm && compilerOutput.evm.bytecode) {\n bytecode = compilerOutput.evm.bytecode;\n }\n return new ContractFactory(abi, bytecode, signer);\n };\n return ContractFactory;\n}());\nexports.ContractFactory = ContractFactory;\n\n},{\"./abstract-signer\":2,\"./constants\":3,\"./errors\":5,\"./providers/abstract-provider\":49,\"./utils/abi-coder\":58,\"./utils/address\":59,\"./utils/bignumber\":62,\"./utils/bytes\":63,\"./utils/interface\":68,\"./utils/properties\":73}],5:[function(require,module,exports){\n'use strict';\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar _version_1 = require(\"./_version\");\n// Unknown Error\nexports.UNKNOWN_ERROR = 'UNKNOWN_ERROR';\n// Not implemented\nexports.NOT_IMPLEMENTED = 'NOT_IMPLEMENTED';\n// Missing new operator to an object\n// - name: The name of the class\nexports.MISSING_NEW = 'MISSING_NEW';\n// Call exception\n// - transaction: the transaction\n// - address?: the contract address\n// - args?: The arguments passed into the function\n// - method?: The Solidity method signature\n// - errorSignature?: The EIP848 error signature\n// - errorArgs?: The EIP848 error parameters\n// - reason: The reason (only for EIP848 \"Error(string)\")\nexports.CALL_EXCEPTION = 'CALL_EXCEPTION';\n// Invalid argument (e.g. value is incompatible with type) to a function:\n// - argument: The argument name that was invalid\n// - value: The value of the argument\nexports.INVALID_ARGUMENT = 'INVALID_ARGUMENT';\n// Missing argument to a function:\n// - count: The number of arguments received\n// - expectedCount: The number of arguments expected\nexports.MISSING_ARGUMENT = 'MISSING_ARGUMENT';\n// Too many arguments\n// - count: The number of arguments received\n// - expectedCount: The number of arguments expected\nexports.UNEXPECTED_ARGUMENT = 'UNEXPECTED_ARGUMENT';\n// Numeric Fault\n// - operation: the operation being executed\n// - fault: the reason this faulted\nexports.NUMERIC_FAULT = 'NUMERIC_FAULT';\n// Insufficien funds (< value + gasLimit * gasPrice)\n// - transaction: the transaction attempted\nexports.INSUFFICIENT_FUNDS = 'INSUFFICIENT_FUNDS';\n// Nonce has already been used\n// - transaction: the transaction attempted\nexports.NONCE_EXPIRED = 'NONCE_EXPIRED';\n// The replacement fee for the transaction is too low\n// - transaction: the transaction attempted\nexports.REPLACEMENT_UNDERPRICED = 'REPLACEMENT_UNDERPRICED';\n// Unsupported operation\n// - operation\nexports.UNSUPPORTED_OPERATION = 'UNSUPPORTED_OPERATION';\nvar _permanentCensorErrors = false;\nvar _censorErrors = false;\n// @TODO: Enum\nfunction throwError(message, code, params) {\n if (_censorErrors) {\n throw new Error('unknown error');\n }\n if (!code) {\n code = exports.UNKNOWN_ERROR;\n }\n if (!params) {\n params = {};\n }\n var messageDetails = [];\n Object.keys(params).forEach(function (key) {\n try {\n messageDetails.push(key + '=' + JSON.stringify(params[key]));\n }\n catch (error) {\n messageDetails.push(key + '=' + JSON.stringify(params[key].toString()));\n }\n });\n messageDetails.push(\"version=\" + _version_1.version);\n var reason = message;\n if (messageDetails.length) {\n message += ' (' + messageDetails.join(', ') + ')';\n }\n // @TODO: Any??\n var error = new Error(message);\n error.reason = reason;\n error.code = code;\n Object.keys(params).forEach(function (key) {\n error[key] = params[key];\n });\n throw error;\n}\nexports.throwError = throwError;\nfunction checkNew(self, kind) {\n if (!(self instanceof kind)) {\n throwError('missing new', exports.MISSING_NEW, { name: kind.name });\n }\n}\nexports.checkNew = checkNew;\nfunction checkArgumentCount(count, expectedCount, suffix) {\n if (!suffix) {\n suffix = '';\n }\n if (count < expectedCount) {\n throwError('missing argument' + suffix, exports.MISSING_ARGUMENT, { count: count, expectedCount: expectedCount });\n }\n if (count > expectedCount) {\n throwError('too many arguments' + suffix, exports.UNEXPECTED_ARGUMENT, { count: count, expectedCount: expectedCount });\n }\n}\nexports.checkArgumentCount = checkArgumentCount;\nfunction setCensorship(censorship, permanent) {\n if (_permanentCensorErrors) {\n throwError('error censorship permanent', exports.UNSUPPORTED_OPERATION, { operation: 'setCensorship' });\n }\n _censorErrors = !!censorship;\n _permanentCensorErrors = !!permanent;\n}\nexports.setCensorship = setCensorship;\nfunction checkNormalize() {\n try {\n // Make sure all forms of normalization are supported\n [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].forEach(function (form) {\n try {\n \"test\".normalize(form);\n }\n catch (error) {\n throw new Error('missing ' + form);\n }\n });\n if (String.fromCharCode(0xe9).normalize('NFD') !== String.fromCharCode(0x65, 0x0301)) {\n throw new Error('broken implementation');\n }\n }\n catch (error) {\n throwError('platform missing String.prototype.normalize', exports.UNSUPPORTED_OPERATION, { operation: 'String.prototype.normalize', form: error.message });\n }\n}\nexports.checkNormalize = checkNormalize;\nvar LogLevels = { debug: 1, \"default\": 2, info: 2, warn: 3, error: 4, off: 5 };\nvar LogLevel = LogLevels[\"default\"];\nfunction setLogLevel(logLevel) {\n var level = LogLevels[logLevel];\n if (level == null) {\n warn(\"invliad log level - \" + logLevel);\n return;\n }\n LogLevel = level;\n}\nexports.setLogLevel = setLogLevel;\nfunction log(logLevel, args) {\n if (LogLevel > LogLevels[logLevel]) {\n return;\n }\n console.log.apply(console, args);\n}\nfunction warn() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n log(\"warn\", args);\n}\nexports.warn = warn;\nfunction info() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n log(\"info\", args);\n}\nexports.info = info;\n\n},{\"./_version\":1}],6:[function(require,module,exports){\n'use strict';\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar contract_1 = require(\"./contract\");\nexports.Contract = contract_1.Contract;\nexports.ContractFactory = contract_1.ContractFactory;\nexports.VoidSigner = contract_1.VoidSigner;\nvar abstract_signer_1 = require(\"./abstract-signer\");\nexports.Signer = abstract_signer_1.Signer;\nvar wallet_1 = require(\"./wallet\");\nexports.Wallet = wallet_1.Wallet;\nvar constants = __importStar(require(\"./constants\"));\nexports.constants = constants;\nvar errors = __importStar(require(\"./errors\"));\nexports.errors = errors;\nvar providers = __importStar(require(\"./providers\"));\nexports.providers = providers;\nvar utils = __importStar(require(\"./utils\"));\nexports.utils = utils;\nvar wordlists = __importStar(require(\"./wordlists\"));\nexports.wordlists = wordlists;\n////////////////////////\n// Compile-Time Constants\n// This is empty in node, and used by browserify to inject extra goodies\nvar shims_1 = require(\"./utils/shims\");\nexports.platform = shims_1.platform;\n// This is generated by \"npm run dist\"\nvar _version_1 = require(\"./_version\");\nexports.version = _version_1.version;\n////////////////////////\n// Helper Functions\nfunction getDefaultProvider(network) {\n if (network == null) {\n network = 'homestead';\n }\n var n = utils.getNetwork(network);\n if (!n || !n._defaultProvider) {\n errors.throwError('unsupported getDefaultProvider network', errors.UNSUPPORTED_OPERATION, {\n operation: 'getDefaultProvider',\n network: network\n });\n }\n return n._defaultProvider(providers);\n}\nexports.getDefaultProvider = getDefaultProvider;\n\n},{\"./_version\":1,\"./abstract-signer\":2,\"./constants\":3,\"./contract\":4,\"./errors\":5,\"./providers\":53,\"./utils\":67,\"./utils/shims\":79,\"./wallet\":87,\"./wordlists\":88}],7:[function(require,module,exports){\n\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ethers = __importStar(require(\"./ethers\"));\nexports.ethers = ethers;\n__export(require(\"./ethers\"));\n\n},{\"./ethers\":6}],8:[function(require,module,exports){\n\"use strict\";\n\n(function(root) {\n\n function checkInt(value) {\n return (parseInt(value) === value);\n }\n\n function checkInts(arrayish) {\n if (!checkInt(arrayish.length)) { return false; }\n\n for (var i = 0; i < arrayish.length; i++) {\n if (!checkInt(arrayish[i]) || arrayish[i] < 0 || arrayish[i] > 255) {\n return false;\n }\n }\n\n return true;\n }\n\n function coerceArray(arg, copy) {\n\n // ArrayBuffer view\n if (arg.buffer && ArrayBuffer.isView(arg) && arg.name === 'Uint8Array') {\n\n if (copy) {\n if (arg.slice) {\n arg = arg.slice();\n } else {\n arg = Array.prototype.slice.call(arg);\n }\n }\n\n return arg;\n }\n\n // It's an array; check it is a valid representation of a byte\n if (Array.isArray(arg)) {\n if (!checkInts(arg)) {\n throw new Error('Array contains invalid value: ' + arg);\n }\n\n return new Uint8Array(arg);\n }\n\n // Something else, but behaves like an array (maybe a Buffer? Arguments?)\n if (checkInt(arg.length) && checkInts(arg)) {\n return new Uint8Array(arg);\n }\n\n throw new Error('unsupported array-like object');\n }\n\n function createArray(length) {\n return new Uint8Array(length);\n }\n\n function copyArray(sourceArray, targetArray, targetStart, sourceStart, sourceEnd) {\n if (sourceStart != null || sourceEnd != null) {\n if (sourceArray.slice) {\n sourceArray = sourceArray.slice(sourceStart, sourceEnd);\n } else {\n sourceArray = Array.prototype.slice.call(sourceArray, sourceStart, sourceEnd);\n }\n }\n targetArray.set(sourceArray, targetStart);\n }\n\n\n\n var convertUtf8 = (function() {\n function toBytes(text) {\n var result = [], i = 0;\n text = encodeURI(text);\n while (i < text.length) {\n var c = text.charCodeAt(i++);\n\n // if it is a % sign, encode the following 2 bytes as a hex value\n if (c === 37) {\n result.push(parseInt(text.substr(i, 2), 16))\n i += 2;\n\n // otherwise, just the actual byte\n } else {\n result.push(c)\n }\n }\n\n return coerceArray(result);\n }\n\n function fromBytes(bytes) {\n var result = [], i = 0;\n\n while (i < bytes.length) {\n var c = bytes[i];\n\n if (c < 128) {\n result.push(String.fromCharCode(c));\n i++;\n } else if (c > 191 && c < 224) {\n result.push(String.fromCharCode(((c & 0x1f) << 6) | (bytes[i + 1] & 0x3f)));\n i += 2;\n } else {\n result.push(String.fromCharCode(((c & 0x0f) << 12) | ((bytes[i + 1] & 0x3f) << 6) | (bytes[i + 2] & 0x3f)));\n i += 3;\n }\n }\n\n return result.join('');\n }\n\n return {\n toBytes: toBytes,\n fromBytes: fromBytes,\n }\n })();\n\n var convertHex = (function() {\n function toBytes(text) {\n var result = [];\n for (var i = 0; i < text.length; i += 2) {\n result.push(parseInt(text.substr(i, 2), 16));\n }\n\n return result;\n }\n\n // http://ixti.net/development/javascript/2011/11/11/base64-encodedecode-of-utf8-in-browser-with-js.html\n var Hex = '0123456789abcdef';\n\n function fromBytes(bytes) {\n var result = [];\n for (var i = 0; i < bytes.length; i++) {\n var v = bytes[i];\n result.push(Hex[(v & 0xf0) >> 4] + Hex[v & 0x0f]);\n }\n return result.join('');\n }\n\n return {\n toBytes: toBytes,\n fromBytes: fromBytes,\n }\n })();\n\n\n // Number of rounds by keysize\n var numberOfRounds = {16: 10, 24: 12, 32: 14}\n\n // Round constant words\n var rcon = [0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91];\n\n // S-box and Inverse S-box (S is for Substitution)\n var S = [0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16];\n var Si =[0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d];\n\n // Transformations for encryption\n var T1 = [0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d, 0xfff2f20d, 0xd66b6bbd, 0xde6f6fb1, 0x91c5c554, 0x60303050, 0x02010103, 0xce6767a9, 0x562b2b7d, 0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a, 0x8fcaca45, 0x1f82829d, 0x89c9c940, 0xfa7d7d87, 0xeffafa15, 0xb25959eb, 0x8e4747c9, 0xfbf0f00b, 0x41adadec, 0xb3d4d467, 0x5fa2a2fd, 0x45afafea, 0x239c9cbf, 0x53a4a4f7, 0xe4727296, 0x9bc0c05b, 0x75b7b7c2, 0xe1fdfd1c, 0x3d9393ae, 0x4c26266a, 0x6c36365a, 0x7e3f3f41, 0xf5f7f702, 0x83cccc4f, 0x6834345c, 0x51a5a5f4, 0xd1e5e534, 0xf9f1f108, 0xe2717193, 0xabd8d873, 0x62313153, 0x2a15153f, 0x0804040c, 0x95c7c752, 0x46232365, 0x9dc3c35e, 0x30181828, 0x379696a1, 0x0a05050f, 0x2f9a9ab5, 0x0e070709, 0x24121236, 0x1b80809b, 0xdfe2e23d, 0xcdebeb26, 0x4e272769, 0x7fb2b2cd, 0xea75759f, 0x1209091b, 0x1d83839e, 0x582c2c74, 0x341a1a2e, 0x361b1b2d, 0xdc6e6eb2, 0xb45a5aee, 0x5ba0a0fb, 0xa45252f6, 0x763b3b4d, 0xb7d6d661, 0x7db3b3ce, 0x5229297b, 0xdde3e33e, 0x5e2f2f71, 0x13848497, 0xa65353f5, 0xb9d1d168, 0x00000000, 0xc1eded2c, 0x40202060, 0xe3fcfc1f, 0x79b1b1c8, 0xb65b5bed, 0xd46a6abe, 0x8dcbcb46, 0x67bebed9, 0x7239394b, 0x944a4ade, 0x984c4cd4, 0xb05858e8, 0x85cfcf4a, 0xbbd0d06b, 0xc5efef2a, 0x4faaaae5, 0xedfbfb16, 0x864343c5, 0x9a4d4dd7, 0x66333355, 0x11858594, 0x8a4545cf, 0xe9f9f910, 0x04020206, 0xfe7f7f81, 0xa05050f0, 0x783c3c44, 0x259f9fba, 0x4ba8a8e3, 0xa25151f3, 0x5da3a3fe, 0x804040c0, 0x058f8f8a, 0x3f9292ad, 0x219d9dbc, 0x70383848, 0xf1f5f504, 0x63bcbcdf, 0x77b6b6c1, 0xafdada75, 0x42212163, 0x20101030, 0xe5ffff1a, 0xfdf3f30e, 0xbfd2d26d, 0x81cdcd4c, 0x180c0c14, 0x26131335, 0xc3ecec2f, 0xbe5f5fe1, 0x359797a2, 0x884444cc, 0x2e171739, 0x93c4c457, 0x55a7a7f2, 0xfc7e7e82, 0x7a3d3d47, 0xc86464ac, 0xba5d5de7, 0x3219192b, 0xe6737395, 0xc06060a0, 0x19818198, 0x9e4f4fd1, 0xa3dcdc7f, 0x44222266, 0x542a2a7e, 0x3b9090ab, 0x0b888883, 0x8c4646ca, 0xc7eeee29, 0x6bb8b8d3, 0x2814143c, 0xa7dede79, 0xbc5e5ee2, 0x160b0b1d, 0xaddbdb76, 0xdbe0e03b, 0x64323256, 0x743a3a4e, 0x140a0a1e, 0x924949db, 0x0c06060a, 0x4824246c, 0xb85c5ce4, 0x9fc2c25d, 0xbdd3d36e, 0x43acacef, 0xc46262a6, 0x399191a8, 0x319595a4, 0xd3e4e437, 0xf279798b, 0xd5e7e732, 0x8bc8c843, 0x6e373759, 0xda6d6db7, 0x018d8d8c, 0xb1d5d564, 0x9c4e4ed2, 0x49a9a9e0, 0xd86c6cb4, 0xac5656fa, 0xf3f4f407, 0xcfeaea25, 0xca6565af, 0xf47a7a8e, 0x47aeaee9, 0x10080818, 0x6fbabad5, 0xf0787888, 0x4a25256f, 0x5c2e2e72, 0x381c1c24, 0x57a6a6f1, 0x73b4b4c7, 0x97c6c651, 0xcbe8e823, 0xa1dddd7c, 0xe874749c, 0x3e1f1f21, 0x964b4bdd, 0x61bdbddc, 0x0d8b8b86, 0x0f8a8a85, 0xe0707090, 0x7c3e3e42, 0x71b5b5c4, 0xcc6666aa, 0x904848d8, 0x06030305, 0xf7f6f601, 0x1c0e0e12, 0xc26161a3, 0x6a35355f, 0xae5757f9, 0x69b9b9d0, 0x17868691, 0x99c1c158, 0x3a1d1d27, 0x279e9eb9, 0xd9e1e138, 0xebf8f813, 0x2b9898b3, 0x22111133, 0xd26969bb, 0xa9d9d970, 0x078e8e89, 0x339494a7, 0x2d9b9bb6, 0x3c1e1e22, 0x15878792, 0xc9e9e920, 0x87cece49, 0xaa5555ff, 0x50282878, 0xa5dfdf7a, 0x038c8c8f, 0x59a1a1f8, 0x09898980, 0x1a0d0d17, 0x65bfbfda, 0xd7e6e631, 0x844242c6, 0xd06868b8, 0x824141c3, 0x299999b0, 0x5a2d2d77, 0x1e0f0f11, 0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a];\n var T2 = [0xa5c66363, 0x84f87c7c, 0x99ee7777, 0x8df67b7b, 0x0dfff2f2, 0xbdd66b6b, 0xb1de6f6f, 0x5491c5c5, 0x50603030, 0x03020101, 0xa9ce6767, 0x7d562b2b, 0x19e7fefe, 0x62b5d7d7, 0xe64dabab, 0x9aec7676, 0x458fcaca, 0x9d1f8282, 0x4089c9c9, 0x87fa7d7d, 0x15effafa, 0xebb25959, 0xc98e4747, 0x0bfbf0f0, 0xec41adad, 0x67b3d4d4, 0xfd5fa2a2, 0xea45afaf, 0xbf239c9c, 0xf753a4a4, 0x96e47272, 0x5b9bc0c0, 0xc275b7b7, 0x1ce1fdfd, 0xae3d9393, 0x6a4c2626, 0x5a6c3636, 0x417e3f3f, 0x02f5f7f7, 0x4f83cccc, 0x5c683434, 0xf451a5a5, 0x34d1e5e5, 0x08f9f1f1, 0x93e27171, 0x73abd8d8, 0x53623131, 0x3f2a1515, 0x0c080404, 0x5295c7c7, 0x65462323, 0x5e9dc3c3, 0x28301818, 0xa1379696, 0x0f0a0505, 0xb52f9a9a, 0x090e0707, 0x36241212, 0x9b1b8080, 0x3ddfe2e2, 0x26cdebeb, 0x694e2727, 0xcd7fb2b2, 0x9fea7575, 0x1b120909, 0x9e1d8383, 0x74582c2c, 0x2e341a1a, 0x2d361b1b, 0xb2dc6e6e, 0xeeb45a5a, 0xfb5ba0a0, 0xf6a45252, 0x4d763b3b, 0x61b7d6d6, 0xce7db3b3, 0x7b522929, 0x3edde3e3, 0x715e2f2f, 0x97138484, 0xf5a65353, 0x68b9d1d1, 0x00000000, 0x2cc1eded, 0x60402020, 0x1fe3fcfc, 0xc879b1b1, 0xedb65b5b, 0xbed46a6a, 0x468dcbcb, 0xd967bebe, 0x4b723939, 0xde944a4a, 0xd4984c4c, 0xe8b05858, 0x4a85cfcf, 0x6bbbd0d0, 0x2ac5efef, 0xe54faaaa, 0x16edfbfb, 0xc5864343, 0xd79a4d4d, 0x55663333, 0x94118585, 0xcf8a4545, 0x10e9f9f9, 0x06040202, 0x81fe7f7f, 0xf0a05050, 0x44783c3c, 0xba259f9f, 0xe34ba8a8, 0xf3a25151, 0xfe5da3a3, 0xc0804040, 0x8a058f8f, 0xad3f9292, 0xbc219d9d, 0x48703838, 0x04f1f5f5, 0xdf63bcbc, 0xc177b6b6, 0x75afdada, 0x63422121, 0x30201010, 0x1ae5ffff, 0x0efdf3f3, 0x6dbfd2d2, 0x4c81cdcd, 0x14180c0c, 0x35261313, 0x2fc3ecec, 0xe1be5f5f, 0xa2359797, 0xcc884444, 0x392e1717, 0x5793c4c4, 0xf255a7a7, 0x82fc7e7e, 0x477a3d3d, 0xacc86464, 0xe7ba5d5d, 0x2b321919, 0x95e67373, 0xa0c06060, 0x98198181, 0xd19e4f4f, 0x7fa3dcdc, 0x66442222, 0x7e542a2a, 0xab3b9090, 0x830b8888, 0xca8c4646, 0x29c7eeee, 0xd36bb8b8, 0x3c281414, 0x79a7dede, 0xe2bc5e5e, 0x1d160b0b, 0x76addbdb, 0x3bdbe0e0, 0x56643232, 0x4e743a3a, 0x1e140a0a, 0xdb924949, 0x0a0c0606, 0x6c482424, 0xe4b85c5c, 0x5d9fc2c2, 0x6ebdd3d3, 0xef43acac, 0xa6c46262, 0xa8399191, 0xa4319595, 0x37d3e4e4, 0x8bf27979, 0x32d5e7e7, 0x438bc8c8, 0x596e3737, 0xb7da6d6d, 0x8c018d8d, 0x64b1d5d5, 0xd29c4e4e, 0xe049a9a9, 0xb4d86c6c, 0xfaac5656, 0x07f3f4f4, 0x25cfeaea, 0xafca6565, 0x8ef47a7a, 0xe947aeae, 0x18100808, 0xd56fbaba, 0x88f07878, 0x6f4a2525, 0x725c2e2e, 0x24381c1c, 0xf157a6a6, 0xc773b4b4, 0x5197c6c6, 0x23cbe8e8, 0x7ca1dddd, 0x9ce87474, 0x213e1f1f, 0xdd964b4b, 0xdc61bdbd, 0x860d8b8b, 0x850f8a8a, 0x90e07070, 0x427c3e3e, 0xc471b5b5, 0xaacc6666, 0xd8904848, 0x05060303, 0x01f7f6f6, 0x121c0e0e, 0xa3c26161, 0x5f6a3535, 0xf9ae5757, 0xd069b9b9, 0x91178686, 0x5899c1c1, 0x273a1d1d, 0xb9279e9e, 0x38d9e1e1, 0x13ebf8f8, 0xb32b9898, 0x33221111, 0xbbd26969, 0x70a9d9d9, 0x89078e8e, 0xa7339494, 0xb62d9b9b, 0x223c1e1e, 0x92158787, 0x20c9e9e9, 0x4987cece, 0xffaa5555, 0x78502828, 0x7aa5dfdf, 0x8f038c8c, 0xf859a1a1, 0x80098989, 0x171a0d0d, 0xda65bfbf, 0x31d7e6e6, 0xc6844242, 0xb8d06868, 0xc3824141, 0xb0299999, 0x775a2d2d, 0x111e0f0f, 0xcb7bb0b0, 0xfca85454, 0xd66dbbbb, 0x3a2c1616];\n var T3 = [0x63a5c663, 0x7c84f87c, 0x7799ee77, 0x7b8df67b, 0xf20dfff2, 0x6bbdd66b, 0x6fb1de6f, 0xc55491c5, 0x30506030, 0x01030201, 0x67a9ce67, 0x2b7d562b, 0xfe19e7fe, 0xd762b5d7, 0xabe64dab, 0x769aec76, 0xca458fca, 0x829d1f82, 0xc94089c9, 0x7d87fa7d, 0xfa15effa, 0x59ebb259, 0x47c98e47, 0xf00bfbf0, 0xadec41ad, 0xd467b3d4, 0xa2fd5fa2, 0xafea45af, 0x9cbf239c, 0xa4f753a4, 0x7296e472, 0xc05b9bc0, 0xb7c275b7, 0xfd1ce1fd, 0x93ae3d93, 0x266a4c26, 0x365a6c36, 0x3f417e3f, 0xf702f5f7, 0xcc4f83cc, 0x345c6834, 0xa5f451a5, 0xe534d1e5, 0xf108f9f1, 0x7193e271, 0xd873abd8, 0x31536231, 0x153f2a15, 0x040c0804, 0xc75295c7, 0x23654623, 0xc35e9dc3, 0x18283018, 0x96a13796, 0x050f0a05, 0x9ab52f9a, 0x07090e07, 0x12362412, 0x809b1b80, 0xe23ddfe2, 0xeb26cdeb, 0x27694e27, 0xb2cd7fb2, 0x759fea75, 0x091b1209, 0x839e1d83, 0x2c74582c, 0x1a2e341a, 0x1b2d361b, 0x6eb2dc6e, 0x5aeeb45a, 0xa0fb5ba0, 0x52f6a452, 0x3b4d763b, 0xd661b7d6, 0xb3ce7db3, 0x297b5229, 0xe33edde3, 0x2f715e2f, 0x84971384, 0x53f5a653, 0xd168b9d1, 0x00000000, 0xed2cc1ed, 0x20604020, 0xfc1fe3fc, 0xb1c879b1, 0x5bedb65b, 0x6abed46a, 0xcb468dcb, 0xbed967be, 0x394b7239, 0x4ade944a, 0x4cd4984c, 0x58e8b058, 0xcf4a85cf, 0xd06bbbd0, 0xef2ac5ef, 0xaae54faa, 0xfb16edfb, 0x43c58643, 0x4dd79a4d, 0x33556633, 0x85941185, 0x45cf8a45, 0xf910e9f9, 0x02060402, 0x7f81fe7f, 0x50f0a050, 0x3c44783c, 0x9fba259f, 0xa8e34ba8, 0x51f3a251, 0xa3fe5da3, 0x40c08040, 0x8f8a058f, 0x92ad3f92, 0x9dbc219d, 0x38487038, 0xf504f1f5, 0xbcdf63bc, 0xb6c177b6, 0xda75afda, 0x21634221, 0x10302010, 0xff1ae5ff, 0xf30efdf3, 0xd26dbfd2, 0xcd4c81cd, 0x0c14180c, 0x13352613, 0xec2fc3ec, 0x5fe1be5f, 0x97a23597, 0x44cc8844, 0x17392e17, 0xc45793c4, 0xa7f255a7, 0x7e82fc7e, 0x3d477a3d, 0x64acc864, 0x5de7ba5d, 0x192b3219, 0x7395e673, 0x60a0c060, 0x81981981, 0x4fd19e4f, 0xdc7fa3dc, 0x22664422, 0x2a7e542a, 0x90ab3b90, 0x88830b88, 0x46ca8c46, 0xee29c7ee, 0xb8d36bb8, 0x143c2814, 0xde79a7de, 0x5ee2bc5e, 0x0b1d160b, 0xdb76addb, 0xe03bdbe0, 0x32566432, 0x3a4e743a, 0x0a1e140a, 0x49db9249, 0x060a0c06, 0x246c4824, 0x5ce4b85c, 0xc25d9fc2, 0xd36ebdd3, 0xacef43ac, 0x62a6c462, 0x91a83991, 0x95a43195, 0xe437d3e4, 0x798bf279, 0xe732d5e7, 0xc8438bc8, 0x37596e37, 0x6db7da6d, 0x8d8c018d, 0xd564b1d5, 0x4ed29c4e, 0xa9e049a9, 0x6cb4d86c, 0x56faac56, 0xf407f3f4, 0xea25cfea, 0x65afca65, 0x7a8ef47a, 0xaee947ae, 0x08181008, 0xbad56fba, 0x7888f078, 0x256f4a25, 0x2e725c2e, 0x1c24381c, 0xa6f157a6, 0xb4c773b4, 0xc65197c6, 0xe823cbe8, 0xdd7ca1dd, 0x749ce874, 0x1f213e1f, 0x4bdd964b, 0xbddc61bd, 0x8b860d8b, 0x8a850f8a, 0x7090e070, 0x3e427c3e, 0xb5c471b5, 0x66aacc66, 0x48d89048, 0x03050603, 0xf601f7f6, 0x0e121c0e, 0x61a3c261, 0x355f6a35, 0x57f9ae57, 0xb9d069b9, 0x86911786, 0xc15899c1, 0x1d273a1d, 0x9eb9279e, 0xe138d9e1, 0xf813ebf8, 0x98b32b98, 0x11332211, 0x69bbd269, 0xd970a9d9, 0x8e89078e, 0x94a73394, 0x9bb62d9b, 0x1e223c1e, 0x87921587, 0xe920c9e9, 0xce4987ce, 0x55ffaa55, 0x28785028, 0xdf7aa5df, 0x8c8f038c, 0xa1f859a1, 0x89800989, 0x0d171a0d, 0xbfda65bf, 0xe631d7e6, 0x42c68442, 0x68b8d068, 0x41c38241, 0x99b02999, 0x2d775a2d, 0x0f111e0f, 0xb0cb7bb0, 0x54fca854, 0xbbd66dbb, 0x163a2c16];\n var T4 = [0x6363a5c6, 0x7c7c84f8, 0x777799ee, 0x7b7b8df6, 0xf2f20dff, 0x6b6bbdd6, 0x6f6fb1de, 0xc5c55491, 0x30305060, 0x01010302, 0x6767a9ce, 0x2b2b7d56, 0xfefe19e7, 0xd7d762b5, 0xababe64d, 0x76769aec, 0xcaca458f, 0x82829d1f, 0xc9c94089, 0x7d7d87fa, 0xfafa15ef, 0x5959ebb2, 0x4747c98e, 0xf0f00bfb, 0xadadec41, 0xd4d467b3, 0xa2a2fd5f, 0xafafea45, 0x9c9cbf23, 0xa4a4f753, 0x727296e4, 0xc0c05b9b, 0xb7b7c275, 0xfdfd1ce1, 0x9393ae3d, 0x26266a4c, 0x36365a6c, 0x3f3f417e, 0xf7f702f5, 0xcccc4f83, 0x34345c68, 0xa5a5f451, 0xe5e534d1, 0xf1f108f9, 0x717193e2, 0xd8d873ab, 0x31315362, 0x15153f2a, 0x04040c08, 0xc7c75295, 0x23236546, 0xc3c35e9d, 0x18182830, 0x9696a137, 0x05050f0a, 0x9a9ab52f, 0x0707090e, 0x12123624, 0x80809b1b, 0xe2e23ddf, 0xebeb26cd, 0x2727694e, 0xb2b2cd7f, 0x75759fea, 0x09091b12, 0x83839e1d, 0x2c2c7458, 0x1a1a2e34, 0x1b1b2d36, 0x6e6eb2dc, 0x5a5aeeb4, 0xa0a0fb5b, 0x5252f6a4, 0x3b3b4d76, 0xd6d661b7, 0xb3b3ce7d, 0x29297b52, 0xe3e33edd, 0x2f2f715e, 0x84849713, 0x5353f5a6, 0xd1d168b9, 0x00000000, 0xeded2cc1, 0x20206040, 0xfcfc1fe3, 0xb1b1c879, 0x5b5bedb6, 0x6a6abed4, 0xcbcb468d, 0xbebed967, 0x39394b72, 0x4a4ade94, 0x4c4cd498, 0x5858e8b0, 0xcfcf4a85, 0xd0d06bbb, 0xefef2ac5, 0xaaaae54f, 0xfbfb16ed, 0x4343c586, 0x4d4dd79a, 0x33335566, 0x85859411, 0x4545cf8a, 0xf9f910e9, 0x02020604, 0x7f7f81fe, 0x5050f0a0, 0x3c3c4478, 0x9f9fba25, 0xa8a8e34b, 0x5151f3a2, 0xa3a3fe5d, 0x4040c080, 0x8f8f8a05, 0x9292ad3f, 0x9d9dbc21, 0x38384870, 0xf5f504f1, 0xbcbcdf63, 0xb6b6c177, 0xdada75af, 0x21216342, 0x10103020, 0xffff1ae5, 0xf3f30efd, 0xd2d26dbf, 0xcdcd4c81, 0x0c0c1418, 0x13133526, 0xecec2fc3, 0x5f5fe1be, 0x9797a235, 0x4444cc88, 0x1717392e, 0xc4c45793, 0xa7a7f255, 0x7e7e82fc, 0x3d3d477a, 0x6464acc8, 0x5d5de7ba, 0x19192b32, 0x737395e6, 0x6060a0c0, 0x81819819, 0x4f4fd19e, 0xdcdc7fa3, 0x22226644, 0x2a2a7e54, 0x9090ab3b, 0x8888830b, 0x4646ca8c, 0xeeee29c7, 0xb8b8d36b, 0x14143c28, 0xdede79a7, 0x5e5ee2bc, 0x0b0b1d16, 0xdbdb76ad, 0xe0e03bdb, 0x32325664, 0x3a3a4e74, 0x0a0a1e14, 0x4949db92, 0x06060a0c, 0x24246c48, 0x5c5ce4b8, 0xc2c25d9f, 0xd3d36ebd, 0xacacef43, 0x6262a6c4, 0x9191a839, 0x9595a431, 0xe4e437d3, 0x79798bf2, 0xe7e732d5, 0xc8c8438b, 0x3737596e, 0x6d6db7da, 0x8d8d8c01, 0xd5d564b1, 0x4e4ed29c, 0xa9a9e049, 0x6c6cb4d8, 0x5656faac, 0xf4f407f3, 0xeaea25cf, 0x6565afca, 0x7a7a8ef4, 0xaeaee947, 0x08081810, 0xbabad56f, 0x787888f0, 0x25256f4a, 0x2e2e725c, 0x1c1c2438, 0xa6a6f157, 0xb4b4c773, 0xc6c65197, 0xe8e823cb, 0xdddd7ca1, 0x74749ce8, 0x1f1f213e, 0x4b4bdd96, 0xbdbddc61, 0x8b8b860d, 0x8a8a850f, 0x707090e0, 0x3e3e427c, 0xb5b5c471, 0x6666aacc, 0x4848d890, 0x03030506, 0xf6f601f7, 0x0e0e121c, 0x6161a3c2, 0x35355f6a, 0x5757f9ae, 0xb9b9d069, 0x86869117, 0xc1c15899, 0x1d1d273a, 0x9e9eb927, 0xe1e138d9, 0xf8f813eb, 0x9898b32b, 0x11113322, 0x6969bbd2, 0xd9d970a9, 0x8e8e8907, 0x9494a733, 0x9b9bb62d, 0x1e1e223c, 0x87879215, 0xe9e920c9, 0xcece4987, 0x5555ffaa, 0x28287850, 0xdfdf7aa5, 0x8c8c8f03, 0xa1a1f859, 0x89898009, 0x0d0d171a, 0xbfbfda65, 0xe6e631d7, 0x4242c684, 0x6868b8d0, 0x4141c382, 0x9999b029, 0x2d2d775a, 0x0f0f111e, 0xb0b0cb7b, 0x5454fca8, 0xbbbbd66d, 0x16163a2c];\n\n // Transformations for decryption\n var T5 = [0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96, 0x3bab6bcb, 0x1f9d45f1, 0xacfa58ab, 0x4be30393, 0x2030fa55, 0xad766df6, 0x88cc7691, 0xf5024c25, 0x4fe5d7fc, 0xc52acbd7, 0x26354480, 0xb562a38f, 0xdeb15a49, 0x25ba1b67, 0x45ea0e98, 0x5dfec0e1, 0xc32f7502, 0x814cf012, 0x8d4697a3, 0x6bd3f9c6, 0x038f5fe7, 0x15929c95, 0xbf6d7aeb, 0x955259da, 0xd4be832d, 0x587421d3, 0x49e06929, 0x8ec9c844, 0x75c2896a, 0xf48e7978, 0x99583e6b, 0x27b971dd, 0xbee14fb6, 0xf088ad17, 0xc920ac66, 0x7dce3ab4, 0x63df4a18, 0xe51a3182, 0x97513360, 0x62537f45, 0xb16477e0, 0xbb6bae84, 0xfe81a01c, 0xf9082b94, 0x70486858, 0x8f45fd19, 0x94de6c87, 0x527bf8b7, 0xab73d323, 0x724b02e2, 0xe31f8f57, 0x6655ab2a, 0xb2eb2807, 0x2fb5c203, 0x86c57b9a, 0xd33708a5, 0x302887f2, 0x23bfa5b2, 0x02036aba, 0xed16825c, 0x8acf1c2b, 0xa779b492, 0xf307f2f0, 0x4e69e2a1, 0x65daf4cd, 0x0605bed5, 0xd134621f, 0xc4a6fe8a, 0x342e539d, 0xa2f355a0, 0x058ae132, 0xa4f6eb75, 0x0b83ec39, 0x4060efaa, 0x5e719f06, 0xbd6e1051, 0x3e218af9, 0x96dd063d, 0xdd3e05ae, 0x4de6bd46, 0x91548db5, 0x71c45d05, 0x0406d46f, 0x605015ff, 0x1998fb24, 0xd6bde997, 0x894043cc, 0x67d99e77, 0xb0e842bd, 0x07898b88, 0xe7195b38, 0x79c8eedb, 0xa17c0a47, 0x7c420fe9, 0xf8841ec9, 0x00000000, 0x09808683, 0x322bed48, 0x1e1170ac, 0x6c5a724e, 0xfd0efffb, 0x0f853856, 0x3daed51e, 0x362d3927, 0x0a0fd964, 0x685ca621, 0x9b5b54d1, 0x24362e3a, 0x0c0a67b1, 0x9357e70f, 0xb4ee96d2, 0x1b9b919e, 0x80c0c54f, 0x61dc20a2, 0x5a774b69, 0x1c121a16, 0xe293ba0a, 0xc0a02ae5, 0x3c22e043, 0x121b171d, 0x0e090d0b, 0xf28bc7ad, 0x2db6a8b9, 0x141ea9c8, 0x57f11985, 0xaf75074c, 0xee99ddbb, 0xa37f60fd, 0xf701269f, 0x5c72f5bc, 0x44663bc5, 0x5bfb7e34, 0x8b432976, 0xcb23c6dc, 0xb6edfc68, 0xb8e4f163, 0xd731dcca, 0x42638510, 0x13972240, 0x84c61120, 0x854a247d, 0xd2bb3df8, 0xaef93211, 0xc729a16d, 0x1d9e2f4b, 0xdcb230f3, 0x0d8652ec, 0x77c1e3d0, 0x2bb3166c, 0xa970b999, 0x119448fa, 0x47e96422, 0xa8fc8cc4, 0xa0f03f1a, 0x567d2cd8, 0x223390ef, 0x87494ec7, 0xd938d1c1, 0x8ccaa2fe, 0x98d40b36, 0xa6f581cf, 0xa57ade28, 0xdab78e26, 0x3fadbfa4, 0x2c3a9de4, 0x5078920d, 0x6a5fcc9b, 0x547e4662, 0xf68d13c2, 0x90d8b8e8, 0x2e39f75e, 0x82c3aff5, 0x9f5d80be, 0x69d0937c, 0x6fd52da9, 0xcf2512b3, 0xc8ac993b, 0x10187da7, 0xe89c636e, 0xdb3bbb7b, 0xcd267809, 0x6e5918f4, 0xec9ab701, 0x834f9aa8, 0xe6956e65, 0xaaffe67e, 0x21bccf08, 0xef15e8e6, 0xbae79bd9, 0x4a6f36ce, 0xea9f09d4, 0x29b07cd6, 0x31a4b2af, 0x2a3f2331, 0xc6a59430, 0x35a266c0, 0x744ebc37, 0xfc82caa6, 0xe090d0b0, 0x33a7d815, 0xf104984a, 0x41ecdaf7, 0x7fcd500e, 0x1791f62f, 0x764dd68d, 0x43efb04d, 0xccaa4d54, 0xe49604df, 0x9ed1b5e3, 0x4c6a881b, 0xc12c1fb8, 0x4665517f, 0x9d5eea04, 0x018c355d, 0xfa877473, 0xfb0b412e, 0xb3671d5a, 0x92dbd252, 0xe9105633, 0x6dd64713, 0x9ad7618c, 0x37a10c7a, 0x59f8148e, 0xeb133c89, 0xcea927ee, 0xb761c935, 0xe11ce5ed, 0x7a47b13c, 0x9cd2df59, 0x55f2733f, 0x1814ce79, 0x73c737bf, 0x53f7cdea, 0x5ffdaa5b, 0xdf3d6f14, 0x7844db86, 0xcaaff381, 0xb968c43e, 0x3824342c, 0xc2a3405f, 0x161dc372, 0xbce2250c, 0x283c498b, 0xff0d9541, 0x39a80171, 0x080cb3de, 0xd8b4e49c, 0x6456c190, 0x7bcb8461, 0xd532b670, 0x486c5c74, 0xd0b85742];\n var T6 = [0x5051f4a7, 0x537e4165, 0xc31a17a4, 0x963a275e, 0xcb3bab6b, 0xf11f9d45, 0xabacfa58, 0x934be303, 0x552030fa, 0xf6ad766d, 0x9188cc76, 0x25f5024c, 0xfc4fe5d7, 0xd7c52acb, 0x80263544, 0x8fb562a3, 0x49deb15a, 0x6725ba1b, 0x9845ea0e, 0xe15dfec0, 0x02c32f75, 0x12814cf0, 0xa38d4697, 0xc66bd3f9, 0xe7038f5f, 0x9515929c, 0xebbf6d7a, 0xda955259, 0x2dd4be83, 0xd3587421, 0x2949e069, 0x448ec9c8, 0x6a75c289, 0x78f48e79, 0x6b99583e, 0xdd27b971, 0xb6bee14f, 0x17f088ad, 0x66c920ac, 0xb47dce3a, 0x1863df4a, 0x82e51a31, 0x60975133, 0x4562537f, 0xe0b16477, 0x84bb6bae, 0x1cfe81a0, 0x94f9082b, 0x58704868, 0x198f45fd, 0x8794de6c, 0xb7527bf8, 0x23ab73d3, 0xe2724b02, 0x57e31f8f, 0x2a6655ab, 0x07b2eb28, 0x032fb5c2, 0x9a86c57b, 0xa5d33708, 0xf2302887, 0xb223bfa5, 0xba02036a, 0x5ced1682, 0x2b8acf1c, 0x92a779b4, 0xf0f307f2, 0xa14e69e2, 0xcd65daf4, 0xd50605be, 0x1fd13462, 0x8ac4a6fe, 0x9d342e53, 0xa0a2f355, 0x32058ae1, 0x75a4f6eb, 0x390b83ec, 0xaa4060ef, 0x065e719f, 0x51bd6e10, 0xf93e218a, 0x3d96dd06, 0xaedd3e05, 0x464de6bd, 0xb591548d, 0x0571c45d, 0x6f0406d4, 0xff605015, 0x241998fb, 0x97d6bde9, 0xcc894043, 0x7767d99e, 0xbdb0e842, 0x8807898b, 0x38e7195b, 0xdb79c8ee, 0x47a17c0a, 0xe97c420f, 0xc9f8841e, 0x00000000, 0x83098086, 0x48322bed, 0xac1e1170, 0x4e6c5a72, 0xfbfd0eff, 0x560f8538, 0x1e3daed5, 0x27362d39, 0x640a0fd9, 0x21685ca6, 0xd19b5b54, 0x3a24362e, 0xb10c0a67, 0x0f9357e7, 0xd2b4ee96, 0x9e1b9b91, 0x4f80c0c5, 0xa261dc20, 0x695a774b, 0x161c121a, 0x0ae293ba, 0xe5c0a02a, 0x433c22e0, 0x1d121b17, 0x0b0e090d, 0xadf28bc7, 0xb92db6a8, 0xc8141ea9, 0x8557f119, 0x4caf7507, 0xbbee99dd, 0xfda37f60, 0x9ff70126, 0xbc5c72f5, 0xc544663b, 0x345bfb7e, 0x768b4329, 0xdccb23c6, 0x68b6edfc, 0x63b8e4f1, 0xcad731dc, 0x10426385, 0x40139722, 0x2084c611, 0x7d854a24, 0xf8d2bb3d, 0x11aef932, 0x6dc729a1, 0x4b1d9e2f, 0xf3dcb230, 0xec0d8652, 0xd077c1e3, 0x6c2bb316, 0x99a970b9, 0xfa119448, 0x2247e964, 0xc4a8fc8c, 0x1aa0f03f, 0xd8567d2c, 0xef223390, 0xc787494e, 0xc1d938d1, 0xfe8ccaa2, 0x3698d40b, 0xcfa6f581, 0x28a57ade, 0x26dab78e, 0xa43fadbf, 0xe42c3a9d, 0x0d507892, 0x9b6a5fcc, 0x62547e46, 0xc2f68d13, 0xe890d8b8, 0x5e2e39f7, 0xf582c3af, 0xbe9f5d80, 0x7c69d093, 0xa96fd52d, 0xb3cf2512, 0x3bc8ac99, 0xa710187d, 0x6ee89c63, 0x7bdb3bbb, 0x09cd2678, 0xf46e5918, 0x01ec9ab7, 0xa8834f9a, 0x65e6956e, 0x7eaaffe6, 0x0821bccf, 0xe6ef15e8, 0xd9bae79b, 0xce4a6f36, 0xd4ea9f09, 0xd629b07c, 0xaf31a4b2, 0x312a3f23, 0x30c6a594, 0xc035a266, 0x37744ebc, 0xa6fc82ca, 0xb0e090d0, 0x1533a7d8, 0x4af10498, 0xf741ecda, 0x0e7fcd50, 0x2f1791f6, 0x8d764dd6, 0x4d43efb0, 0x54ccaa4d, 0xdfe49604, 0xe39ed1b5, 0x1b4c6a88, 0xb8c12c1f, 0x7f466551, 0x049d5eea, 0x5d018c35, 0x73fa8774, 0x2efb0b41, 0x5ab3671d, 0x5292dbd2, 0x33e91056, 0x136dd647, 0x8c9ad761, 0x7a37a10c, 0x8e59f814, 0x89eb133c, 0xeecea927, 0x35b761c9, 0xede11ce5, 0x3c7a47b1, 0x599cd2df, 0x3f55f273, 0x791814ce, 0xbf73c737, 0xea53f7cd, 0x5b5ffdaa, 0x14df3d6f, 0x867844db, 0x81caaff3, 0x3eb968c4, 0x2c382434, 0x5fc2a340, 0x72161dc3, 0x0cbce225, 0x8b283c49, 0x41ff0d95, 0x7139a801, 0xde080cb3, 0x9cd8b4e4, 0x906456c1, 0x617bcb84, 0x70d532b6, 0x74486c5c, 0x42d0b857];\n var T7 = [0xa75051f4, 0x65537e41, 0xa4c31a17, 0x5e963a27, 0x6bcb3bab, 0x45f11f9d, 0x58abacfa, 0x03934be3, 0xfa552030, 0x6df6ad76, 0x769188cc, 0x4c25f502, 0xd7fc4fe5, 0xcbd7c52a, 0x44802635, 0xa38fb562, 0x5a49deb1, 0x1b6725ba, 0x0e9845ea, 0xc0e15dfe, 0x7502c32f, 0xf012814c, 0x97a38d46, 0xf9c66bd3, 0x5fe7038f, 0x9c951592, 0x7aebbf6d, 0x59da9552, 0x832dd4be, 0x21d35874, 0x692949e0, 0xc8448ec9, 0x896a75c2, 0x7978f48e, 0x3e6b9958, 0x71dd27b9, 0x4fb6bee1, 0xad17f088, 0xac66c920, 0x3ab47dce, 0x4a1863df, 0x3182e51a, 0x33609751, 0x7f456253, 0x77e0b164, 0xae84bb6b, 0xa01cfe81, 0x2b94f908, 0x68587048, 0xfd198f45, 0x6c8794de, 0xf8b7527b, 0xd323ab73, 0x02e2724b, 0x8f57e31f, 0xab2a6655, 0x2807b2eb, 0xc2032fb5, 0x7b9a86c5, 0x08a5d337, 0x87f23028, 0xa5b223bf, 0x6aba0203, 0x825ced16, 0x1c2b8acf, 0xb492a779, 0xf2f0f307, 0xe2a14e69, 0xf4cd65da, 0xbed50605, 0x621fd134, 0xfe8ac4a6, 0x539d342e, 0x55a0a2f3, 0xe132058a, 0xeb75a4f6, 0xec390b83, 0xefaa4060, 0x9f065e71, 0x1051bd6e, 0x8af93e21, 0x063d96dd, 0x05aedd3e, 0xbd464de6, 0x8db59154, 0x5d0571c4, 0xd46f0406, 0x15ff6050, 0xfb241998, 0xe997d6bd, 0x43cc8940, 0x9e7767d9, 0x42bdb0e8, 0x8b880789, 0x5b38e719, 0xeedb79c8, 0x0a47a17c, 0x0fe97c42, 0x1ec9f884, 0x00000000, 0x86830980, 0xed48322b, 0x70ac1e11, 0x724e6c5a, 0xfffbfd0e, 0x38560f85, 0xd51e3dae, 0x3927362d, 0xd9640a0f, 0xa621685c, 0x54d19b5b, 0x2e3a2436, 0x67b10c0a, 0xe70f9357, 0x96d2b4ee, 0x919e1b9b, 0xc54f80c0, 0x20a261dc, 0x4b695a77, 0x1a161c12, 0xba0ae293, 0x2ae5c0a0, 0xe0433c22, 0x171d121b, 0x0d0b0e09, 0xc7adf28b, 0xa8b92db6, 0xa9c8141e, 0x198557f1, 0x074caf75, 0xddbbee99, 0x60fda37f, 0x269ff701, 0xf5bc5c72, 0x3bc54466, 0x7e345bfb, 0x29768b43, 0xc6dccb23, 0xfc68b6ed, 0xf163b8e4, 0xdccad731, 0x85104263, 0x22401397, 0x112084c6, 0x247d854a, 0x3df8d2bb, 0x3211aef9, 0xa16dc729, 0x2f4b1d9e, 0x30f3dcb2, 0x52ec0d86, 0xe3d077c1, 0x166c2bb3, 0xb999a970, 0x48fa1194, 0x642247e9, 0x8cc4a8fc, 0x3f1aa0f0, 0x2cd8567d, 0x90ef2233, 0x4ec78749, 0xd1c1d938, 0xa2fe8cca, 0x0b3698d4, 0x81cfa6f5, 0xde28a57a, 0x8e26dab7, 0xbfa43fad, 0x9de42c3a, 0x920d5078, 0xcc9b6a5f, 0x4662547e, 0x13c2f68d, 0xb8e890d8, 0xf75e2e39, 0xaff582c3, 0x80be9f5d, 0x937c69d0, 0x2da96fd5, 0x12b3cf25, 0x993bc8ac, 0x7da71018, 0x636ee89c, 0xbb7bdb3b, 0x7809cd26, 0x18f46e59, 0xb701ec9a, 0x9aa8834f, 0x6e65e695, 0xe67eaaff, 0xcf0821bc, 0xe8e6ef15, 0x9bd9bae7, 0x36ce4a6f, 0x09d4ea9f, 0x7cd629b0, 0xb2af31a4, 0x23312a3f, 0x9430c6a5, 0x66c035a2, 0xbc37744e, 0xcaa6fc82, 0xd0b0e090, 0xd81533a7, 0x984af104, 0xdaf741ec, 0x500e7fcd, 0xf62f1791, 0xd68d764d, 0xb04d43ef, 0x4d54ccaa, 0x04dfe496, 0xb5e39ed1, 0x881b4c6a, 0x1fb8c12c, 0x517f4665, 0xea049d5e, 0x355d018c, 0x7473fa87, 0x412efb0b, 0x1d5ab367, 0xd25292db, 0x5633e910, 0x47136dd6, 0x618c9ad7, 0x0c7a37a1, 0x148e59f8, 0x3c89eb13, 0x27eecea9, 0xc935b761, 0xe5ede11c, 0xb13c7a47, 0xdf599cd2, 0x733f55f2, 0xce791814, 0x37bf73c7, 0xcdea53f7, 0xaa5b5ffd, 0x6f14df3d, 0xdb867844, 0xf381caaf, 0xc43eb968, 0x342c3824, 0x405fc2a3, 0xc372161d, 0x250cbce2, 0x498b283c, 0x9541ff0d, 0x017139a8, 0xb3de080c, 0xe49cd8b4, 0xc1906456, 0x84617bcb, 0xb670d532, 0x5c74486c, 0x5742d0b8];\n var T8 = [0xf4a75051, 0x4165537e, 0x17a4c31a, 0x275e963a, 0xab6bcb3b, 0x9d45f11f, 0xfa58abac, 0xe303934b, 0x30fa5520, 0x766df6ad, 0xcc769188, 0x024c25f5, 0xe5d7fc4f, 0x2acbd7c5, 0x35448026, 0x62a38fb5, 0xb15a49de, 0xba1b6725, 0xea0e9845, 0xfec0e15d, 0x2f7502c3, 0x4cf01281, 0x4697a38d, 0xd3f9c66b, 0x8f5fe703, 0x929c9515, 0x6d7aebbf, 0x5259da95, 0xbe832dd4, 0x7421d358, 0xe0692949, 0xc9c8448e, 0xc2896a75, 0x8e7978f4, 0x583e6b99, 0xb971dd27, 0xe14fb6be, 0x88ad17f0, 0x20ac66c9, 0xce3ab47d, 0xdf4a1863, 0x1a3182e5, 0x51336097, 0x537f4562, 0x6477e0b1, 0x6bae84bb, 0x81a01cfe, 0x082b94f9, 0x48685870, 0x45fd198f, 0xde6c8794, 0x7bf8b752, 0x73d323ab, 0x4b02e272, 0x1f8f57e3, 0x55ab2a66, 0xeb2807b2, 0xb5c2032f, 0xc57b9a86, 0x3708a5d3, 0x2887f230, 0xbfa5b223, 0x036aba02, 0x16825ced, 0xcf1c2b8a, 0x79b492a7, 0x07f2f0f3, 0x69e2a14e, 0xdaf4cd65, 0x05bed506, 0x34621fd1, 0xa6fe8ac4, 0x2e539d34, 0xf355a0a2, 0x8ae13205, 0xf6eb75a4, 0x83ec390b, 0x60efaa40, 0x719f065e, 0x6e1051bd, 0x218af93e, 0xdd063d96, 0x3e05aedd, 0xe6bd464d, 0x548db591, 0xc45d0571, 0x06d46f04, 0x5015ff60, 0x98fb2419, 0xbde997d6, 0x4043cc89, 0xd99e7767, 0xe842bdb0, 0x898b8807, 0x195b38e7, 0xc8eedb79, 0x7c0a47a1, 0x420fe97c, 0x841ec9f8, 0x00000000, 0x80868309, 0x2bed4832, 0x1170ac1e, 0x5a724e6c, 0x0efffbfd, 0x8538560f, 0xaed51e3d, 0x2d392736, 0x0fd9640a, 0x5ca62168, 0x5b54d19b, 0x362e3a24, 0x0a67b10c, 0x57e70f93, 0xee96d2b4, 0x9b919e1b, 0xc0c54f80, 0xdc20a261, 0x774b695a, 0x121a161c, 0x93ba0ae2, 0xa02ae5c0, 0x22e0433c, 0x1b171d12, 0x090d0b0e, 0x8bc7adf2, 0xb6a8b92d, 0x1ea9c814, 0xf1198557, 0x75074caf, 0x99ddbbee, 0x7f60fda3, 0x01269ff7, 0x72f5bc5c, 0x663bc544, 0xfb7e345b, 0x4329768b, 0x23c6dccb, 0xedfc68b6, 0xe4f163b8, 0x31dccad7, 0x63851042, 0x97224013, 0xc6112084, 0x4a247d85, 0xbb3df8d2, 0xf93211ae, 0x29a16dc7, 0x9e2f4b1d, 0xb230f3dc, 0x8652ec0d, 0xc1e3d077, 0xb3166c2b, 0x70b999a9, 0x9448fa11, 0xe9642247, 0xfc8cc4a8, 0xf03f1aa0, 0x7d2cd856, 0x3390ef22, 0x494ec787, 0x38d1c1d9, 0xcaa2fe8c, 0xd40b3698, 0xf581cfa6, 0x7ade28a5, 0xb78e26da, 0xadbfa43f, 0x3a9de42c, 0x78920d50, 0x5fcc9b6a, 0x7e466254, 0x8d13c2f6, 0xd8b8e890, 0x39f75e2e, 0xc3aff582, 0x5d80be9f, 0xd0937c69, 0xd52da96f, 0x2512b3cf, 0xac993bc8, 0x187da710, 0x9c636ee8, 0x3bbb7bdb, 0x267809cd, 0x5918f46e, 0x9ab701ec, 0x4f9aa883, 0x956e65e6, 0xffe67eaa, 0xbccf0821, 0x15e8e6ef, 0xe79bd9ba, 0x6f36ce4a, 0x9f09d4ea, 0xb07cd629, 0xa4b2af31, 0x3f23312a, 0xa59430c6, 0xa266c035, 0x4ebc3774, 0x82caa6fc, 0x90d0b0e0, 0xa7d81533, 0x04984af1, 0xecdaf741, 0xcd500e7f, 0x91f62f17, 0x4dd68d76, 0xefb04d43, 0xaa4d54cc, 0x9604dfe4, 0xd1b5e39e, 0x6a881b4c, 0x2c1fb8c1, 0x65517f46, 0x5eea049d, 0x8c355d01, 0x877473fa, 0x0b412efb, 0x671d5ab3, 0xdbd25292, 0x105633e9, 0xd647136d, 0xd7618c9a, 0xa10c7a37, 0xf8148e59, 0x133c89eb, 0xa927eece, 0x61c935b7, 0x1ce5ede1, 0x47b13c7a, 0xd2df599c, 0xf2733f55, 0x14ce7918, 0xc737bf73, 0xf7cdea53, 0xfdaa5b5f, 0x3d6f14df, 0x44db8678, 0xaff381ca, 0x68c43eb9, 0x24342c38, 0xa3405fc2, 0x1dc37216, 0xe2250cbc, 0x3c498b28, 0x0d9541ff, 0xa8017139, 0x0cb3de08, 0xb4e49cd8, 0x56c19064, 0xcb84617b, 0x32b670d5, 0x6c5c7448, 0xb85742d0];\n\n // Transformations for decryption key expansion\n var U1 = [0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3];\n var U2 = [0x00000000, 0x0b0e090d, 0x161c121a, 0x1d121b17, 0x2c382434, 0x27362d39, 0x3a24362e, 0x312a3f23, 0x58704868, 0x537e4165, 0x4e6c5a72, 0x4562537f, 0x74486c5c, 0x7f466551, 0x62547e46, 0x695a774b, 0xb0e090d0, 0xbbee99dd, 0xa6fc82ca, 0xadf28bc7, 0x9cd8b4e4, 0x97d6bde9, 0x8ac4a6fe, 0x81caaff3, 0xe890d8b8, 0xe39ed1b5, 0xfe8ccaa2, 0xf582c3af, 0xc4a8fc8c, 0xcfa6f581, 0xd2b4ee96, 0xd9bae79b, 0x7bdb3bbb, 0x70d532b6, 0x6dc729a1, 0x66c920ac, 0x57e31f8f, 0x5ced1682, 0x41ff0d95, 0x4af10498, 0x23ab73d3, 0x28a57ade, 0x35b761c9, 0x3eb968c4, 0x0f9357e7, 0x049d5eea, 0x198f45fd, 0x12814cf0, 0xcb3bab6b, 0xc035a266, 0xdd27b971, 0xd629b07c, 0xe7038f5f, 0xec0d8652, 0xf11f9d45, 0xfa119448, 0x934be303, 0x9845ea0e, 0x8557f119, 0x8e59f814, 0xbf73c737, 0xb47dce3a, 0xa96fd52d, 0xa261dc20, 0xf6ad766d, 0xfda37f60, 0xe0b16477, 0xebbf6d7a, 0xda955259, 0xd19b5b54, 0xcc894043, 0xc787494e, 0xaedd3e05, 0xa5d33708, 0xb8c12c1f, 0xb3cf2512, 0x82e51a31, 0x89eb133c, 0x94f9082b, 0x9ff70126, 0x464de6bd, 0x4d43efb0, 0x5051f4a7, 0x5b5ffdaa, 0x6a75c289, 0x617bcb84, 0x7c69d093, 0x7767d99e, 0x1e3daed5, 0x1533a7d8, 0x0821bccf, 0x032fb5c2, 0x32058ae1, 0x390b83ec, 0x241998fb, 0x2f1791f6, 0x8d764dd6, 0x867844db, 0x9b6a5fcc, 0x906456c1, 0xa14e69e2, 0xaa4060ef, 0xb7527bf8, 0xbc5c72f5, 0xd50605be, 0xde080cb3, 0xc31a17a4, 0xc8141ea9, 0xf93e218a, 0xf2302887, 0xef223390, 0xe42c3a9d, 0x3d96dd06, 0x3698d40b, 0x2b8acf1c, 0x2084c611, 0x11aef932, 0x1aa0f03f, 0x07b2eb28, 0x0cbce225, 0x65e6956e, 0x6ee89c63, 0x73fa8774, 0x78f48e79, 0x49deb15a, 0x42d0b857, 0x5fc2a340, 0x54ccaa4d, 0xf741ecda, 0xfc4fe5d7, 0xe15dfec0, 0xea53f7cd, 0xdb79c8ee, 0xd077c1e3, 0xcd65daf4, 0xc66bd3f9, 0xaf31a4b2, 0xa43fadbf, 0xb92db6a8, 0xb223bfa5, 0x83098086, 0x8807898b, 0x9515929c, 0x9e1b9b91, 0x47a17c0a, 0x4caf7507, 0x51bd6e10, 0x5ab3671d, 0x6b99583e, 0x60975133, 0x7d854a24, 0x768b4329, 0x1fd13462, 0x14df3d6f, 0x09cd2678, 0x02c32f75, 0x33e91056, 0x38e7195b, 0x25f5024c, 0x2efb0b41, 0x8c9ad761, 0x8794de6c, 0x9a86c57b, 0x9188cc76, 0xa0a2f355, 0xabacfa58, 0xb6bee14f, 0xbdb0e842, 0xd4ea9f09, 0xdfe49604, 0xc2f68d13, 0xc9f8841e, 0xf8d2bb3d, 0xf3dcb230, 0xeecea927, 0xe5c0a02a, 0x3c7a47b1, 0x37744ebc, 0x2a6655ab, 0x21685ca6, 0x10426385, 0x1b4c6a88, 0x065e719f, 0x0d507892, 0x640a0fd9, 0x6f0406d4, 0x72161dc3, 0x791814ce, 0x48322bed, 0x433c22e0, 0x5e2e39f7, 0x552030fa, 0x01ec9ab7, 0x0ae293ba, 0x17f088ad, 0x1cfe81a0, 0x2dd4be83, 0x26dab78e, 0x3bc8ac99, 0x30c6a594, 0x599cd2df, 0x5292dbd2, 0x4f80c0c5, 0x448ec9c8, 0x75a4f6eb, 0x7eaaffe6, 0x63b8e4f1, 0x68b6edfc, 0xb10c0a67, 0xba02036a, 0xa710187d, 0xac1e1170, 0x9d342e53, 0x963a275e, 0x8b283c49, 0x80263544, 0xe97c420f, 0xe2724b02, 0xff605015, 0xf46e5918, 0xc544663b, 0xce4a6f36, 0xd3587421, 0xd8567d2c, 0x7a37a10c, 0x7139a801, 0x6c2bb316, 0x6725ba1b, 0x560f8538, 0x5d018c35, 0x40139722, 0x4b1d9e2f, 0x2247e964, 0x2949e069, 0x345bfb7e, 0x3f55f273, 0x0e7fcd50, 0x0571c45d, 0x1863df4a, 0x136dd647, 0xcad731dc, 0xc1d938d1, 0xdccb23c6, 0xd7c52acb, 0xe6ef15e8, 0xede11ce5, 0xf0f307f2, 0xfbfd0eff, 0x92a779b4, 0x99a970b9, 0x84bb6bae, 0x8fb562a3, 0xbe9f5d80, 0xb591548d, 0xa8834f9a, 0xa38d4697];\n var U3 = [0x00000000, 0x0d0b0e09, 0x1a161c12, 0x171d121b, 0x342c3824, 0x3927362d, 0x2e3a2436, 0x23312a3f, 0x68587048, 0x65537e41, 0x724e6c5a, 0x7f456253, 0x5c74486c, 0x517f4665, 0x4662547e, 0x4b695a77, 0xd0b0e090, 0xddbbee99, 0xcaa6fc82, 0xc7adf28b, 0xe49cd8b4, 0xe997d6bd, 0xfe8ac4a6, 0xf381caaf, 0xb8e890d8, 0xb5e39ed1, 0xa2fe8cca, 0xaff582c3, 0x8cc4a8fc, 0x81cfa6f5, 0x96d2b4ee, 0x9bd9bae7, 0xbb7bdb3b, 0xb670d532, 0xa16dc729, 0xac66c920, 0x8f57e31f, 0x825ced16, 0x9541ff0d, 0x984af104, 0xd323ab73, 0xde28a57a, 0xc935b761, 0xc43eb968, 0xe70f9357, 0xea049d5e, 0xfd198f45, 0xf012814c, 0x6bcb3bab, 0x66c035a2, 0x71dd27b9, 0x7cd629b0, 0x5fe7038f, 0x52ec0d86, 0x45f11f9d, 0x48fa1194, 0x03934be3, 0x0e9845ea, 0x198557f1, 0x148e59f8, 0x37bf73c7, 0x3ab47dce, 0x2da96fd5, 0x20a261dc, 0x6df6ad76, 0x60fda37f, 0x77e0b164, 0x7aebbf6d, 0x59da9552, 0x54d19b5b, 0x43cc8940, 0x4ec78749, 0x05aedd3e, 0x08a5d337, 0x1fb8c12c, 0x12b3cf25, 0x3182e51a, 0x3c89eb13, 0x2b94f908, 0x269ff701, 0xbd464de6, 0xb04d43ef, 0xa75051f4, 0xaa5b5ffd, 0x896a75c2, 0x84617bcb, 0x937c69d0, 0x9e7767d9, 0xd51e3dae, 0xd81533a7, 0xcf0821bc, 0xc2032fb5, 0xe132058a, 0xec390b83, 0xfb241998, 0xf62f1791, 0xd68d764d, 0xdb867844, 0xcc9b6a5f, 0xc1906456, 0xe2a14e69, 0xefaa4060, 0xf8b7527b, 0xf5bc5c72, 0xbed50605, 0xb3de080c, 0xa4c31a17, 0xa9c8141e, 0x8af93e21, 0x87f23028, 0x90ef2233, 0x9de42c3a, 0x063d96dd, 0x0b3698d4, 0x1c2b8acf, 0x112084c6, 0x3211aef9, 0x3f1aa0f0, 0x2807b2eb, 0x250cbce2, 0x6e65e695, 0x636ee89c, 0x7473fa87, 0x7978f48e, 0x5a49deb1, 0x5742d0b8, 0x405fc2a3, 0x4d54ccaa, 0xdaf741ec, 0xd7fc4fe5, 0xc0e15dfe, 0xcdea53f7, 0xeedb79c8, 0xe3d077c1, 0xf4cd65da, 0xf9c66bd3, 0xb2af31a4, 0xbfa43fad, 0xa8b92db6, 0xa5b223bf, 0x86830980, 0x8b880789, 0x9c951592, 0x919e1b9b, 0x0a47a17c, 0x074caf75, 0x1051bd6e, 0x1d5ab367, 0x3e6b9958, 0x33609751, 0x247d854a, 0x29768b43, 0x621fd134, 0x6f14df3d, 0x7809cd26, 0x7502c32f, 0x5633e910, 0x5b38e719, 0x4c25f502, 0x412efb0b, 0x618c9ad7, 0x6c8794de, 0x7b9a86c5, 0x769188cc, 0x55a0a2f3, 0x58abacfa, 0x4fb6bee1, 0x42bdb0e8, 0x09d4ea9f, 0x04dfe496, 0x13c2f68d, 0x1ec9f884, 0x3df8d2bb, 0x30f3dcb2, 0x27eecea9, 0x2ae5c0a0, 0xb13c7a47, 0xbc37744e, 0xab2a6655, 0xa621685c, 0x85104263, 0x881b4c6a, 0x9f065e71, 0x920d5078, 0xd9640a0f, 0xd46f0406, 0xc372161d, 0xce791814, 0xed48322b, 0xe0433c22, 0xf75e2e39, 0xfa552030, 0xb701ec9a, 0xba0ae293, 0xad17f088, 0xa01cfe81, 0x832dd4be, 0x8e26dab7, 0x993bc8ac, 0x9430c6a5, 0xdf599cd2, 0xd25292db, 0xc54f80c0, 0xc8448ec9, 0xeb75a4f6, 0xe67eaaff, 0xf163b8e4, 0xfc68b6ed, 0x67b10c0a, 0x6aba0203, 0x7da71018, 0x70ac1e11, 0x539d342e, 0x5e963a27, 0x498b283c, 0x44802635, 0x0fe97c42, 0x02e2724b, 0x15ff6050, 0x18f46e59, 0x3bc54466, 0x36ce4a6f, 0x21d35874, 0x2cd8567d, 0x0c7a37a1, 0x017139a8, 0x166c2bb3, 0x1b6725ba, 0x38560f85, 0x355d018c, 0x22401397, 0x2f4b1d9e, 0x642247e9, 0x692949e0, 0x7e345bfb, 0x733f55f2, 0x500e7fcd, 0x5d0571c4, 0x4a1863df, 0x47136dd6, 0xdccad731, 0xd1c1d938, 0xc6dccb23, 0xcbd7c52a, 0xe8e6ef15, 0xe5ede11c, 0xf2f0f307, 0xfffbfd0e, 0xb492a779, 0xb999a970, 0xae84bb6b, 0xa38fb562, 0x80be9f5d, 0x8db59154, 0x9aa8834f, 0x97a38d46];\n var U4 = [0x00000000, 0x090d0b0e, 0x121a161c, 0x1b171d12, 0x24342c38, 0x2d392736, 0x362e3a24, 0x3f23312a, 0x48685870, 0x4165537e, 0x5a724e6c, 0x537f4562, 0x6c5c7448, 0x65517f46, 0x7e466254, 0x774b695a, 0x90d0b0e0, 0x99ddbbee, 0x82caa6fc, 0x8bc7adf2, 0xb4e49cd8, 0xbde997d6, 0xa6fe8ac4, 0xaff381ca, 0xd8b8e890, 0xd1b5e39e, 0xcaa2fe8c, 0xc3aff582, 0xfc8cc4a8, 0xf581cfa6, 0xee96d2b4, 0xe79bd9ba, 0x3bbb7bdb, 0x32b670d5, 0x29a16dc7, 0x20ac66c9, 0x1f8f57e3, 0x16825ced, 0x0d9541ff, 0x04984af1, 0x73d323ab, 0x7ade28a5, 0x61c935b7, 0x68c43eb9, 0x57e70f93, 0x5eea049d, 0x45fd198f, 0x4cf01281, 0xab6bcb3b, 0xa266c035, 0xb971dd27, 0xb07cd629, 0x8f5fe703, 0x8652ec0d, 0x9d45f11f, 0x9448fa11, 0xe303934b, 0xea0e9845, 0xf1198557, 0xf8148e59, 0xc737bf73, 0xce3ab47d, 0xd52da96f, 0xdc20a261, 0x766df6ad, 0x7f60fda3, 0x6477e0b1, 0x6d7aebbf, 0x5259da95, 0x5b54d19b, 0x4043cc89, 0x494ec787, 0x3e05aedd, 0x3708a5d3, 0x2c1fb8c1, 0x2512b3cf, 0x1a3182e5, 0x133c89eb, 0x082b94f9, 0x01269ff7, 0xe6bd464d, 0xefb04d43, 0xf4a75051, 0xfdaa5b5f, 0xc2896a75, 0xcb84617b, 0xd0937c69, 0xd99e7767, 0xaed51e3d, 0xa7d81533, 0xbccf0821, 0xb5c2032f, 0x8ae13205, 0x83ec390b, 0x98fb2419, 0x91f62f17, 0x4dd68d76, 0x44db8678, 0x5fcc9b6a, 0x56c19064, 0x69e2a14e, 0x60efaa40, 0x7bf8b752, 0x72f5bc5c, 0x05bed506, 0x0cb3de08, 0x17a4c31a, 0x1ea9c814, 0x218af93e, 0x2887f230, 0x3390ef22, 0x3a9de42c, 0xdd063d96, 0xd40b3698, 0xcf1c2b8a, 0xc6112084, 0xf93211ae, 0xf03f1aa0, 0xeb2807b2, 0xe2250cbc, 0x956e65e6, 0x9c636ee8, 0x877473fa, 0x8e7978f4, 0xb15a49de, 0xb85742d0, 0xa3405fc2, 0xaa4d54cc, 0xecdaf741, 0xe5d7fc4f, 0xfec0e15d, 0xf7cdea53, 0xc8eedb79, 0xc1e3d077, 0xdaf4cd65, 0xd3f9c66b, 0xa4b2af31, 0xadbfa43f, 0xb6a8b92d, 0xbfa5b223, 0x80868309, 0x898b8807, 0x929c9515, 0x9b919e1b, 0x7c0a47a1, 0x75074caf, 0x6e1051bd, 0x671d5ab3, 0x583e6b99, 0x51336097, 0x4a247d85, 0x4329768b, 0x34621fd1, 0x3d6f14df, 0x267809cd, 0x2f7502c3, 0x105633e9, 0x195b38e7, 0x024c25f5, 0x0b412efb, 0xd7618c9a, 0xde6c8794, 0xc57b9a86, 0xcc769188, 0xf355a0a2, 0xfa58abac, 0xe14fb6be, 0xe842bdb0, 0x9f09d4ea, 0x9604dfe4, 0x8d13c2f6, 0x841ec9f8, 0xbb3df8d2, 0xb230f3dc, 0xa927eece, 0xa02ae5c0, 0x47b13c7a, 0x4ebc3774, 0x55ab2a66, 0x5ca62168, 0x63851042, 0x6a881b4c, 0x719f065e, 0x78920d50, 0x0fd9640a, 0x06d46f04, 0x1dc37216, 0x14ce7918, 0x2bed4832, 0x22e0433c, 0x39f75e2e, 0x30fa5520, 0x9ab701ec, 0x93ba0ae2, 0x88ad17f0, 0x81a01cfe, 0xbe832dd4, 0xb78e26da, 0xac993bc8, 0xa59430c6, 0xd2df599c, 0xdbd25292, 0xc0c54f80, 0xc9c8448e, 0xf6eb75a4, 0xffe67eaa, 0xe4f163b8, 0xedfc68b6, 0x0a67b10c, 0x036aba02, 0x187da710, 0x1170ac1e, 0x2e539d34, 0x275e963a, 0x3c498b28, 0x35448026, 0x420fe97c, 0x4b02e272, 0x5015ff60, 0x5918f46e, 0x663bc544, 0x6f36ce4a, 0x7421d358, 0x7d2cd856, 0xa10c7a37, 0xa8017139, 0xb3166c2b, 0xba1b6725, 0x8538560f, 0x8c355d01, 0x97224013, 0x9e2f4b1d, 0xe9642247, 0xe0692949, 0xfb7e345b, 0xf2733f55, 0xcd500e7f, 0xc45d0571, 0xdf4a1863, 0xd647136d, 0x31dccad7, 0x38d1c1d9, 0x23c6dccb, 0x2acbd7c5, 0x15e8e6ef, 0x1ce5ede1, 0x07f2f0f3, 0x0efffbfd, 0x79b492a7, 0x70b999a9, 0x6bae84bb, 0x62a38fb5, 0x5d80be9f, 0x548db591, 0x4f9aa883, 0x4697a38d];\n\n function convertToInt32(bytes) {\n var result = [];\n for (var i = 0; i < bytes.length; i += 4) {\n result.push(\n (bytes[i ] << 24) |\n (bytes[i + 1] << 16) |\n (bytes[i + 2] << 8) |\n bytes[i + 3]\n );\n }\n return result;\n }\n\n var AES = function(key) {\n if (!(this instanceof AES)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n Object.defineProperty(this, 'key', {\n value: coerceArray(key, true)\n });\n\n this._prepare();\n }\n\n\n AES.prototype._prepare = function() {\n\n var rounds = numberOfRounds[this.key.length];\n if (rounds == null) {\n throw new Error('invalid key size (must be 16, 24 or 32 bytes)');\n }\n\n // encryption round keys\n this._Ke = [];\n\n // decryption round keys\n this._Kd = [];\n\n for (var i = 0; i <= rounds; i++) {\n this._Ke.push([0, 0, 0, 0]);\n this._Kd.push([0, 0, 0, 0]);\n }\n\n var roundKeyCount = (rounds + 1) * 4;\n var KC = this.key.length / 4;\n\n // convert the key into ints\n var tk = convertToInt32(this.key);\n\n // copy values into round key arrays\n var index;\n for (var i = 0; i < KC; i++) {\n index = i >> 2;\n this._Ke[index][i % 4] = tk[i];\n this._Kd[rounds - index][i % 4] = tk[i];\n }\n\n // key expansion (fips-197 section 5.2)\n var rconpointer = 0;\n var t = KC, tt;\n while (t < roundKeyCount) {\n tt = tk[KC - 1];\n tk[0] ^= ((S[(tt >> 16) & 0xFF] << 24) ^\n (S[(tt >> 8) & 0xFF] << 16) ^\n (S[ tt & 0xFF] << 8) ^\n S[(tt >> 24) & 0xFF] ^\n (rcon[rconpointer] << 24));\n rconpointer += 1;\n\n // key expansion (for non-256 bit)\n if (KC != 8) {\n for (var i = 1; i < KC; i++) {\n tk[i] ^= tk[i - 1];\n }\n\n // key expansion for 256-bit keys is \"slightly different\" (fips-197)\n } else {\n for (var i = 1; i < (KC / 2); i++) {\n tk[i] ^= tk[i - 1];\n }\n tt = tk[(KC / 2) - 1];\n\n tk[KC / 2] ^= (S[ tt & 0xFF] ^\n (S[(tt >> 8) & 0xFF] << 8) ^\n (S[(tt >> 16) & 0xFF] << 16) ^\n (S[(tt >> 24) & 0xFF] << 24));\n\n for (var i = (KC / 2) + 1; i < KC; i++) {\n tk[i] ^= tk[i - 1];\n }\n }\n\n // copy values into round key arrays\n var i = 0, r, c;\n while (i < KC && t < roundKeyCount) {\n r = t >> 2;\n c = t % 4;\n this._Ke[r][c] = tk[i];\n this._Kd[rounds - r][c] = tk[i++];\n t++;\n }\n }\n\n // inverse-cipher-ify the decryption round key (fips-197 section 5.3)\n for (var r = 1; r < rounds; r++) {\n for (var c = 0; c < 4; c++) {\n tt = this._Kd[r][c];\n this._Kd[r][c] = (U1[(tt >> 24) & 0xFF] ^\n U2[(tt >> 16) & 0xFF] ^\n U3[(tt >> 8) & 0xFF] ^\n U4[ tt & 0xFF]);\n }\n }\n }\n\n AES.prototype.encrypt = function(plaintext) {\n if (plaintext.length != 16) {\n throw new Error('invalid plaintext size (must be 16 bytes)');\n }\n\n var rounds = this._Ke.length - 1;\n var a = [0, 0, 0, 0];\n\n // convert plaintext to (ints ^ key)\n var t = convertToInt32(plaintext);\n for (var i = 0; i < 4; i++) {\n t[i] ^= this._Ke[0][i];\n }\n\n // apply round transforms\n for (var r = 1; r < rounds; r++) {\n for (var i = 0; i < 4; i++) {\n a[i] = (T1[(t[ i ] >> 24) & 0xff] ^\n T2[(t[(i + 1) % 4] >> 16) & 0xff] ^\n T3[(t[(i + 2) % 4] >> 8) & 0xff] ^\n T4[ t[(i + 3) % 4] & 0xff] ^\n this._Ke[r][i]);\n }\n t = a.slice();\n }\n\n // the last round is special\n var result = createArray(16), tt;\n for (var i = 0; i < 4; i++) {\n tt = this._Ke[rounds][i];\n result[4 * i ] = (S[(t[ i ] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n result[4 * i + 1] = (S[(t[(i + 1) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n result[4 * i + 2] = (S[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff;\n result[4 * i + 3] = (S[ t[(i + 3) % 4] & 0xff] ^ tt ) & 0xff;\n }\n\n return result;\n }\n\n AES.prototype.decrypt = function(ciphertext) {\n if (ciphertext.length != 16) {\n throw new Error('invalid ciphertext size (must be 16 bytes)');\n }\n\n var rounds = this._Kd.length - 1;\n var a = [0, 0, 0, 0];\n\n // convert plaintext to (ints ^ key)\n var t = convertToInt32(ciphertext);\n for (var i = 0; i < 4; i++) {\n t[i] ^= this._Kd[0][i];\n }\n\n // apply round transforms\n for (var r = 1; r < rounds; r++) {\n for (var i = 0; i < 4; i++) {\n a[i] = (T5[(t[ i ] >> 24) & 0xff] ^\n T6[(t[(i + 3) % 4] >> 16) & 0xff] ^\n T7[(t[(i + 2) % 4] >> 8) & 0xff] ^\n T8[ t[(i + 1) % 4] & 0xff] ^\n this._Kd[r][i]);\n }\n t = a.slice();\n }\n\n // the last round is special\n var result = createArray(16), tt;\n for (var i = 0; i < 4; i++) {\n tt = this._Kd[rounds][i];\n result[4 * i ] = (Si[(t[ i ] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n result[4 * i + 1] = (Si[(t[(i + 3) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n result[4 * i + 2] = (Si[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff;\n result[4 * i + 3] = (Si[ t[(i + 1) % 4] & 0xff] ^ tt ) & 0xff;\n }\n\n return result;\n }\n\n\n /**\n * Mode Of Operation - Electonic Codebook (ECB)\n */\n var ModeOfOperationECB = function(key) {\n if (!(this instanceof ModeOfOperationECB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Electronic Code Block\";\n this.name = \"ecb\";\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationECB.prototype.encrypt = function(plaintext) {\n plaintext = coerceArray(plaintext);\n\n if ((plaintext.length % 16) !== 0) {\n throw new Error('invalid plaintext size (must be multiple of 16 bytes)');\n }\n\n var ciphertext = createArray(plaintext.length);\n var block = createArray(16);\n\n for (var i = 0; i < plaintext.length; i += 16) {\n copyArray(plaintext, block, 0, i, i + 16);\n block = this._aes.encrypt(block);\n copyArray(block, ciphertext, i);\n }\n\n return ciphertext;\n }\n\n ModeOfOperationECB.prototype.decrypt = function(ciphertext) {\n ciphertext = coerceArray(ciphertext);\n\n if ((ciphertext.length % 16) !== 0) {\n throw new Error('invalid ciphertext size (must be multiple of 16 bytes)');\n }\n\n var plaintext = createArray(ciphertext.length);\n var block = createArray(16);\n\n for (var i = 0; i < ciphertext.length; i += 16) {\n copyArray(ciphertext, block, 0, i, i + 16);\n block = this._aes.decrypt(block);\n copyArray(block, plaintext, i);\n }\n\n return plaintext;\n }\n\n\n /**\n * Mode Of Operation - Cipher Block Chaining (CBC)\n */\n var ModeOfOperationCBC = function(key, iv) {\n if (!(this instanceof ModeOfOperationCBC)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Cipher Block Chaining\";\n this.name = \"cbc\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 bytes)');\n }\n\n this._lastCipherblock = coerceArray(iv, true);\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCBC.prototype.encrypt = function(plaintext) {\n plaintext = coerceArray(plaintext);\n\n if ((plaintext.length % 16) !== 0) {\n throw new Error('invalid plaintext size (must be multiple of 16 bytes)');\n }\n\n var ciphertext = createArray(plaintext.length);\n var block = createArray(16);\n\n for (var i = 0; i < plaintext.length; i += 16) {\n copyArray(plaintext, block, 0, i, i + 16);\n\n for (var j = 0; j < 16; j++) {\n block[j] ^= this._lastCipherblock[j];\n }\n\n this._lastCipherblock = this._aes.encrypt(block);\n copyArray(this._lastCipherblock, ciphertext, i);\n }\n\n return ciphertext;\n }\n\n ModeOfOperationCBC.prototype.decrypt = function(ciphertext) {\n ciphertext = coerceArray(ciphertext);\n\n if ((ciphertext.length % 16) !== 0) {\n throw new Error('invalid ciphertext size (must be multiple of 16 bytes)');\n }\n\n var plaintext = createArray(ciphertext.length);\n var block = createArray(16);\n\n for (var i = 0; i < ciphertext.length; i += 16) {\n copyArray(ciphertext, block, 0, i, i + 16);\n block = this._aes.decrypt(block);\n\n for (var j = 0; j < 16; j++) {\n plaintext[i + j] = block[j] ^ this._lastCipherblock[j];\n }\n\n copyArray(ciphertext, this._lastCipherblock, 0, i, i + 16);\n }\n\n return plaintext;\n }\n\n\n /**\n * Mode Of Operation - Cipher Feedback (CFB)\n */\n var ModeOfOperationCFB = function(key, iv, segmentSize) {\n if (!(this instanceof ModeOfOperationCFB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Cipher Feedback\";\n this.name = \"cfb\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 size)');\n }\n\n if (!segmentSize) { segmentSize = 1; }\n\n this.segmentSize = segmentSize;\n\n this._shiftRegister = coerceArray(iv, true);\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCFB.prototype.encrypt = function(plaintext) {\n if ((plaintext.length % this.segmentSize) != 0) {\n throw new Error('invalid plaintext size (must be segmentSize bytes)');\n }\n\n var encrypted = coerceArray(plaintext, true);\n\n var xorSegment;\n for (var i = 0; i < encrypted.length; i += this.segmentSize) {\n xorSegment = this._aes.encrypt(this._shiftRegister);\n for (var j = 0; j < this.segmentSize; j++) {\n encrypted[i + j] ^= xorSegment[j];\n }\n\n // Shift the register\n copyArray(this._shiftRegister, this._shiftRegister, 0, this.segmentSize);\n copyArray(encrypted, this._shiftRegister, 16 - this.segmentSize, i, i + this.segmentSize);\n }\n\n return encrypted;\n }\n\n ModeOfOperationCFB.prototype.decrypt = function(ciphertext) {\n if ((ciphertext.length % this.segmentSize) != 0) {\n throw new Error('invalid ciphertext size (must be segmentSize bytes)');\n }\n\n var plaintext = coerceArray(ciphertext, true);\n\n var xorSegment;\n for (var i = 0; i < plaintext.length; i += this.segmentSize) {\n xorSegment = this._aes.encrypt(this._shiftRegister);\n\n for (var j = 0; j < this.segmentSize; j++) {\n plaintext[i + j] ^= xorSegment[j];\n }\n\n // Shift the register\n copyArray(this._shiftRegister, this._shiftRegister, 0, this.segmentSize);\n copyArray(ciphertext, this._shiftRegister, 16 - this.segmentSize, i, i + this.segmentSize);\n }\n\n return plaintext;\n }\n\n /**\n * Mode Of Operation - Output Feedback (OFB)\n */\n var ModeOfOperationOFB = function(key, iv) {\n if (!(this instanceof ModeOfOperationOFB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Output Feedback\";\n this.name = \"ofb\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 bytes)');\n }\n\n this._lastPrecipher = coerceArray(iv, true);\n this._lastPrecipherIndex = 16;\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationOFB.prototype.encrypt = function(plaintext) {\n var encrypted = coerceArray(plaintext, true);\n\n for (var i = 0; i < encrypted.length; i++) {\n if (this._lastPrecipherIndex === 16) {\n this._lastPrecipher = this._aes.encrypt(this._lastPrecipher);\n this._lastPrecipherIndex = 0;\n }\n encrypted[i] ^= this._lastPrecipher[this._lastPrecipherIndex++];\n }\n\n return encrypted;\n }\n\n // Decryption is symetric\n ModeOfOperationOFB.prototype.decrypt = ModeOfOperationOFB.prototype.encrypt;\n\n\n /**\n * Counter object for CTR common mode of operation\n */\n var Counter = function(initialValue) {\n if (!(this instanceof Counter)) {\n throw Error('Counter must be instanitated with `new`');\n }\n\n // We allow 0, but anything false-ish uses the default 1\n if (initialValue !== 0 && !initialValue) { initialValue = 1; }\n\n if (typeof(initialValue) === 'number') {\n this._counter = createArray(16);\n this.setValue(initialValue);\n\n } else {\n this.setBytes(initialValue);\n }\n }\n\n Counter.prototype.setValue = function(value) {\n if (typeof(value) !== 'number' || parseInt(value) != value) {\n throw new Error('invalid counter value (must be an integer)');\n }\n\n for (var index = 15; index >= 0; --index) {\n this._counter[index] = value % 256;\n value = value >> 8;\n }\n }\n\n Counter.prototype.setBytes = function(bytes) {\n bytes = coerceArray(bytes, true);\n\n if (bytes.length != 16) {\n throw new Error('invalid counter bytes size (must be 16 bytes)');\n }\n\n this._counter = bytes;\n };\n\n Counter.prototype.increment = function() {\n for (var i = 15; i >= 0; i--) {\n if (this._counter[i] === 255) {\n this._counter[i] = 0;\n } else {\n this._counter[i]++;\n break;\n }\n }\n }\n\n\n /**\n * Mode Of Operation - Counter (CTR)\n */\n var ModeOfOperationCTR = function(key, counter) {\n if (!(this instanceof ModeOfOperationCTR)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Counter\";\n this.name = \"ctr\";\n\n if (!(counter instanceof Counter)) {\n counter = new Counter(counter)\n }\n\n this._counter = counter;\n\n this._remainingCounter = null;\n this._remainingCounterIndex = 16;\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCTR.prototype.encrypt = function(plaintext) {\n var encrypted = coerceArray(plaintext, true);\n\n for (var i = 0; i < encrypted.length; i++) {\n if (this._remainingCounterIndex === 16) {\n this._remainingCounter = this._aes.encrypt(this._counter._counter);\n this._remainingCounterIndex = 0;\n this._counter.increment();\n }\n encrypted[i] ^= this._remainingCounter[this._remainingCounterIndex++];\n }\n\n return encrypted;\n }\n\n // Decryption is symetric\n ModeOfOperationCTR.prototype.decrypt = ModeOfOperationCTR.prototype.encrypt;\n\n\n ///////////////////////\n // Padding\n\n // See:https://tools.ietf.org/html/rfc2315\n function pkcs7pad(data) {\n data = coerceArray(data, true);\n var padder = 16 - (data.length % 16);\n var result = createArray(data.length + padder);\n copyArray(data, result);\n for (var i = data.length; i < result.length; i++) {\n result[i] = padder;\n }\n return result;\n }\n\n function pkcs7strip(data) {\n data = coerceArray(data, true);\n if (data.length < 16) { throw new Error('PKCS#7 invalid length'); }\n\n var padder = data[data.length - 1];\n if (padder > 16) { throw new Error('PKCS#7 padding byte out of range'); }\n\n var length = data.length - padder;\n for (var i = 0; i < padder; i++) {\n if (data[length + i] !== padder) {\n throw new Error('PKCS#7 invalid padding byte');\n }\n }\n\n var result = createArray(length);\n copyArray(data, result, 0, 0, length);\n return result;\n }\n\n ///////////////////////\n // Exporting\n\n\n // The block cipher\n var aesjs = {\n AES: AES,\n Counter: Counter,\n\n ModeOfOperation: {\n ecb: ModeOfOperationECB,\n cbc: ModeOfOperationCBC,\n cfb: ModeOfOperationCFB,\n ofb: ModeOfOperationOFB,\n ctr: ModeOfOperationCTR\n },\n\n utils: {\n hex: convertHex,\n utf8: convertUtf8\n },\n\n padding: {\n pkcs7: {\n pad: pkcs7pad,\n strip: pkcs7strip\n }\n },\n\n _arrayTest: {\n coerceArray: coerceArray,\n createArray: createArray,\n copyArray: copyArray,\n }\n };\n\n\n // node.js\n if (typeof exports !== 'undefined') {\n module.exports = aesjs\n\n // RequireJS/AMD\n // http://www.requirejs.org/docs/api.html\n // https://github.com/amdjs/amdjs-api/wiki/AMD\n } else if (typeof(define) === 'function' && define.amd) {\n define(aesjs);\n\n // Web Browsers\n } else {\n\n // If there was an existing library at \"aesjs\" make sure it's still available\n if (root.aesjs) {\n aesjs._aesjs = root.aesjs;\n }\n\n root.aesjs = aesjs;\n }\n\n\n})(this);\n\n},{}],9:[function(require,module,exports){\n(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n Buffer = require('buffer').Buffer;\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex (str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r <<= 4;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n }\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n r.strip();\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n\n},{\"buffer\":11}],10:[function(require,module,exports){\n(function (global){\nmodule.exports = function(length) { var result = new Uint8Array(length); (global.crypto || global.msCrypto).getRandomValues(result); return result; }\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}],11:[function(require,module,exports){\n\n},{}],12:[function(require,module,exports){\n'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.hmacDRBG = require('./elliptic/hmac-drbg');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n\n},{\"../package.json\":26,\"./elliptic/curve\":15,\"./elliptic/curves\":18,\"./elliptic/ec\":19,\"./elliptic/eddsa\":22,\"./elliptic/hmac-drbg\":23,\"./elliptic/utils\":25,\"brorand\":10}],13:[function(require,module,exports){\n'use strict';\n\nvar BN = require('bn.js');\nvar elliptic = require('../../elliptic');\nvar utils = elliptic.utils;\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n for (var j = 0; j < naf.length; j += doubles.step) {\n var nafW = 0;\n for (var k = j + doubles.step - 1; k >= j; k--)\n nafW = (nafW << 1) + naf[k];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (var j = 0; j < repr.length; j++) {\n var nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var k = 0; i >= 0 && naf[i] === 0; i--)\n k++;\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n for (var i = 0; i < len; i++) {\n var p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (var i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a]);\n naf[b] = getNAF(coeffs[b], wndWidth[b]);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b] /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3 /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (var j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (var i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (var j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (var j = 0; j < len; j++) {\n var z = tmp[j];\n var p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (var i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len)) ;\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n\n},{\"../../elliptic\":12,\"bn.js\":9}],14:[function(require,module,exports){\nmodule.exports = {};\n},{}],15:[function(require,module,exports){\n'use strict';\n\nvar curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n\n},{\"./base\":13,\"./edwards\":14,\"./mont\":16,\"./short\":17}],16:[function(require,module,exports){\narguments[4][14][0].apply(exports,arguments)\n},{\"dup\":14}],17:[function(require,module,exports){\n'use strict';\n\nvar curve = require('../curve');\nvar elliptic = require('../../elliptic');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = curve.base;\n\nvar assert = elliptic.utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16)\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 }\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n};\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul)\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul)\n }\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1)\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1)\n }\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point))\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point))\n }\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n\n if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate)\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate)\n }\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (var i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (var i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n return false;\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\n},{\"../../elliptic\":12,\"../curve\":15,\"bn.js\":9,\"inherits\":39}],18:[function(require,module,exports){\n'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar elliptic = require('../elliptic');\n\nvar assert = elliptic.utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new elliptic.curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new elliptic.curve.edwards(options);\n else\n this.curve = new elliptic.curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve\n });\n return curve;\n }\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811'\n ]\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34'\n ]\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5'\n ]\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f'\n ]\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650'\n ]\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9'\n ]\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658'\n ]\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3'\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15'\n }\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre\n ]\n});\n\n},{\"../elliptic\":12,\"./precomputed/secp256k1\":24,\"hash.js\":27}],19:[function(require,module,exports){\n'use strict';\n\nvar BN = require('bn.js');\nvar elliptic = require('../../elliptic');\nvar utils = elliptic.utils;\nvar assert = utils.assert;\n\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert(elliptic.curves.hasOwnProperty(options), 'Unknown curve ' + options);\n\n options = elliptic.curves[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof elliptic.curves.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nmodule.exports = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new KeyPair(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return KeyPair.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return KeyPair.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new elliptic.hmacDRBG({\n hash: this.hash,\n pers: options.pers,\n entropy: options.entropy || elliptic.rand(this.hash.hmacStrength),\n nonce: this.n.toArray()\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n do {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n } while (true);\n};\n\nEC.prototype._truncateToN = function truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new elliptic.hmacDRBG({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; true; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new Signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature = new Signature(signature, 'hex');\n\n // Perform primitive values validation\n var r = signature.r;\n var s = signature.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n\n if (!this.curve._maxwellTrick) {\n var p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n var p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null)\n return signature.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n\n},{\"../../elliptic\":12,\"./key\":20,\"./signature\":21,\"bn.js\":9}],20:[function(require,module,exports){\n'use strict';\n\nvar BN = require('bn.js');\nvar elliptic = require('../../elliptic');\nvar utils = elliptic.utils;\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n\n},{\"../../elliptic\":12,\"bn.js\":9}],21:[function(require,module,exports){\n'use strict';\n\nvar BN = require('bn.js');\n\nvar elliptic = require('../../elliptic');\nvar utils = elliptic.utils;\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n }\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0 && (r[1] & 0x80)) {\n r = r.slice(1);\n }\n if (s[0] === 0 && (s[1] & 0x80)) {\n s = s.slice(1);\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\n\n},{\"../../elliptic\":12,\"bn.js\":9}],22:[function(require,module,exports){\narguments[4][14][0].apply(exports,arguments)\n},{\"dup\":14}],23:[function(require,module,exports){\n'use strict';\n\nvar hash = require('hash.js');\nvar elliptic = require('../elliptic');\nvar utils = elliptic.utils;\nvar assert = utils.assert;\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this.reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc);\n var nonce = utils.toArray(options.nonce, options.nonceEnc);\n var pers = utils.toArray(options.pers, options.persEnc);\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this.reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toBuffer(entropy, entropyEnc);\n add = utils.toBuffer(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this.reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this.reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc);\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this.reseed++;\n return utils.encode(res, enc);\n};\n\n},{\"../elliptic\":12,\"hash.js\":27}],24:[function(require,module,exports){\nmodule.exports = undefined;\n},{}],25:[function(require,module,exports){\n'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\n\nutils.assert = function assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n};\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (!enc) {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w) {\n var naf = [];\n var ws = 1 << (w + 1);\n var k = num.clone();\n while (k.cmpn(1) >= 0) {\n var z;\n if (k.isOdd()) {\n var mod = k.andln(ws - 1);\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n naf.push(z);\n\n // Optimization, shift by word if possible\n var shift = (k.cmpn(0) !== 0 && k.andln(ws - 1) === 0) ? (w + 1) : 1;\n for (var i = 1; i < shift; i++)\n naf.push(0);\n k.iushrn(shift);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n []\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n var m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n var m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n\n},{\"bn.js\":9}],26:[function(require,module,exports){\nmodule.exports={\"version\":\"6.3.3\"}\n},{}],27:[function(require,module,exports){\nvar hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n\n},{\"./hash/common\":28,\"./hash/hmac\":29,\"./hash/ripemd\":30,\"./hash/sha\":31,\"./hash/utils\":38}],28:[function(require,module,exports){\n'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n\n},{\"./utils\":38,\"minimalistic-assert\":41}],29:[function(require,module,exports){\n'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n\n},{\"./utils\":38,\"minimalistic-assert\":41}],30:[function(require,module,exports){\n'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n\n},{\"./common\":28,\"./utils\":38}],31:[function(require,module,exports){\n'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n\n},{\"./sha/1\":32,\"./sha/224\":33,\"./sha/256\":34,\"./sha/384\":35,\"./sha/512\":36}],32:[function(require,module,exports){\narguments[4][14][0].apply(exports,arguments)\n},{\"dup\":14}],33:[function(require,module,exports){\narguments[4][14][0].apply(exports,arguments)\n},{\"dup\":14}],34:[function(require,module,exports){\n'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\n},{\"../common\":28,\"../utils\":38,\"./common\":37,\"minimalistic-assert\":41}],35:[function(require,module,exports){\narguments[4][14][0].apply(exports,arguments)\n},{\"dup\":14}],36:[function(require,module,exports){\n'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\n},{\"../common\":28,\"../utils\":38,\"minimalistic-assert\":41}],37:[function(require,module,exports){\n'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n\n},{\"../utils\":38}],38:[function(require,module,exports){\n'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n\n},{\"inherits\":39,\"minimalistic-assert\":41}],39:[function(require,module,exports){\nif (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n\n},{}],40:[function(require,module,exports){\n(function (process,global){\n/**\r\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\r\n *\r\n * @version 0.5.7\r\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\r\n * @copyright Chen, Yi-Cyuan 2015-2016\r\n * @license MIT\r\n */\r\n/*jslint bitwise: true */\r\n(function () {\r\n 'use strict';\r\n\r\n var root = typeof window === 'object' ? window : {};\r\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\r\n if (NODE_JS) {\r\n root = global;\r\n }\r\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\r\n var HEX_CHARS = '0123456789abcdef'.split('');\r\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\r\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\r\n var PADDING = [6, 1536, 393216, 100663296];\r\n var SHIFT = [0, 8, 16, 24];\r\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\r\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\r\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\r\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\r\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\r\n var BITS = [224, 256, 384, 512];\r\n var SHAKE_BITS = [128, 256];\r\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array'];\r\n\r\n var createOutputMethod = function (bits, padding, outputType) {\r\n return function (message) {\r\n return new Keccak(bits, padding, bits).update(message)[outputType]();\r\n };\r\n };\r\n\r\n var createShakeOutputMethod = function (bits, padding, outputType) {\r\n return function (message, outputBits) {\r\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\r\n };\r\n };\r\n\r\n var createMethod = function (bits, padding) {\r\n var method = createOutputMethod(bits, padding, 'hex');\r\n method.create = function () {\r\n return new Keccak(bits, padding, bits);\r\n };\r\n method.update = function (message) {\r\n return method.create().update(message);\r\n };\r\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\r\n var type = OUTPUT_TYPES[i];\r\n method[type] = createOutputMethod(bits, padding, type);\r\n }\r\n return method;\r\n };\r\n\r\n var createShakeMethod = function (bits, padding) {\r\n var method = createShakeOutputMethod(bits, padding, 'hex');\r\n method.create = function (outputBits) {\r\n return new Keccak(bits, padding, outputBits);\r\n };\r\n method.update = function (message, outputBits) {\r\n return method.create(outputBits).update(message);\r\n };\r\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\r\n var type = OUTPUT_TYPES[i];\r\n method[type] = createShakeOutputMethod(bits, padding, type);\r\n }\r\n return method;\r\n };\r\n\r\n var algorithms = [\r\n {name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod},\r\n {name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod},\r\n {name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod}\r\n ];\r\n\r\n var methods = {}, methodNames = [];\r\n\r\n for (var i = 0; i < algorithms.length; ++i) {\r\n var algorithm = algorithms[i];\r\n var bits = algorithm.bits;\r\n for (var j = 0; j < bits.length; ++j) {\r\n var methodName = algorithm.name +'_' + bits[j];\r\n methodNames.push(methodName);\r\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\r\n }\r\n }\r\n\r\n function Keccak(bits, padding, outputBits) {\r\n this.blocks = [];\r\n this.s = [];\r\n this.padding = padding;\r\n this.outputBits = outputBits;\r\n this.reset = true;\r\n this.block = 0;\r\n this.start = 0;\r\n this.blockCount = (1600 - (bits << 1)) >> 5;\r\n this.byteCount = this.blockCount << 2;\r\n this.outputBlocks = outputBits >> 5;\r\n this.extraBytes = (outputBits & 31) >> 3;\r\n\r\n for (var i = 0; i < 50; ++i) {\r\n this.s[i] = 0;\r\n }\r\n }\r\n\r\n Keccak.prototype.update = function (message) {\r\n var notString = typeof message !== 'string';\r\n if (notString && message.constructor === ArrayBuffer) {\r\n message = new Uint8Array(message);\r\n }\r\n var length = message.length, blocks = this.blocks, byteCount = this.byteCount,\r\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\r\n\r\n while (index < length) {\r\n if (this.reset) {\r\n this.reset = false;\r\n blocks[0] = this.block;\r\n for (i = 1; i < blockCount + 1; ++i) {\r\n blocks[i] = 0;\r\n }\r\n }\r\n if (notString) {\r\n for (i = this.start; index < length && i < byteCount; ++index) {\r\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\r\n }\r\n } else {\r\n for (i = this.start; index < length && i < byteCount; ++index) {\r\n code = message.charCodeAt(index);\r\n if (code < 0x80) {\r\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\r\n } else if (code < 0x800) {\r\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\r\n } else if (code < 0xd800 || code >= 0xe000) {\r\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\r\n } else {\r\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\r\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\r\n }\r\n }\r\n }\r\n this.lastByteIndex = i;\r\n if (i >= byteCount) {\r\n this.start = i - byteCount;\r\n this.block = blocks[blockCount];\r\n for (i = 0; i < blockCount; ++i) {\r\n s[i] ^= blocks[i];\r\n }\r\n f(s);\r\n this.reset = true;\r\n } else {\r\n this.start = i;\r\n }\r\n }\r\n return this;\r\n };\r\n\r\n Keccak.prototype.finalize = function () {\r\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\r\n blocks[i >> 2] |= this.padding[i & 3];\r\n if (this.lastByteIndex === this.byteCount) {\r\n blocks[0] = blocks[blockCount];\r\n for (i = 1; i < blockCount + 1; ++i) {\r\n blocks[i] = 0;\r\n }\r\n }\r\n blocks[blockCount - 1] |= 0x80000000;\r\n for (i = 0; i < blockCount; ++i) {\r\n s[i] ^= blocks[i];\r\n }\r\n f(s);\r\n };\r\n\r\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\r\n this.finalize();\r\n\r\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\r\n extraBytes = this.extraBytes, i = 0, j = 0;\r\n var hex = '', block;\r\n while (j < outputBlocks) {\r\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\r\n block = s[i];\r\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\r\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\r\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\r\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\r\n }\r\n if (j % blockCount === 0) {\r\n f(s);\r\n i = 0;\r\n }\r\n }\r\n if (extraBytes) {\r\n block = s[i];\r\n if (extraBytes > 0) {\r\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\r\n }\r\n if (extraBytes > 1) {\r\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\r\n }\r\n if (extraBytes > 2) {\r\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\r\n }\r\n }\r\n return hex;\r\n };\r\n\r\n Keccak.prototype.arrayBuffer = function () {\r\n this.finalize();\r\n\r\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\r\n extraBytes = this.extraBytes, i = 0, j = 0;\r\n var bytes = this.outputBits >> 3;\r\n var buffer;\r\n if (extraBytes) {\r\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\r\n } else {\r\n buffer = new ArrayBuffer(bytes);\r\n }\r\n var array = new Uint32Array(buffer);\r\n while (j < outputBlocks) {\r\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\r\n array[j] = s[i];\r\n }\r\n if (j % blockCount === 0) {\r\n f(s);\r\n }\r\n }\r\n if (extraBytes) {\r\n array[i] = s[i];\r\n buffer = buffer.slice(0, bytes);\r\n }\r\n return buffer;\r\n };\r\n\r\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\r\n\r\n Keccak.prototype.digest = Keccak.prototype.array = function () {\r\n this.finalize();\r\n\r\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\r\n extraBytes = this.extraBytes, i = 0, j = 0;\r\n var array = [], offset, block;\r\n while (j < outputBlocks) {\r\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\r\n offset = j << 2;\r\n block = s[i];\r\n array[offset] = block & 0xFF;\r\n array[offset + 1] = (block >> 8) & 0xFF;\r\n array[offset + 2] = (block >> 16) & 0xFF;\r\n array[offset + 3] = (block >> 24) & 0xFF;\r\n }\r\n if (j % blockCount === 0) {\r\n f(s);\r\n }\r\n }\r\n if (extraBytes) {\r\n offset = j << 2;\r\n block = s[i];\r\n if (extraBytes > 0) {\r\n array[offset] = block & 0xFF;\r\n }\r\n if (extraBytes > 1) {\r\n array[offset + 1] = (block >> 8) & 0xFF;\r\n }\r\n if (extraBytes > 2) {\r\n array[offset + 2] = (block >> 16) & 0xFF;\r\n }\r\n }\r\n return array;\r\n };\r\n\r\n var f = function (s) {\r\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\r\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\r\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\r\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\r\n for (n = 0; n < 48; n += 2) {\r\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\r\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\r\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\r\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\r\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\r\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\r\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\r\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\r\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\r\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\r\n\r\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\r\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\r\n s[0] ^= h;\r\n s[1] ^= l;\r\n s[10] ^= h;\r\n s[11] ^= l;\r\n s[20] ^= h;\r\n s[21] ^= l;\r\n s[30] ^= h;\r\n s[31] ^= l;\r\n s[40] ^= h;\r\n s[41] ^= l;\r\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\r\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\r\n s[2] ^= h;\r\n s[3] ^= l;\r\n s[12] ^= h;\r\n s[13] ^= l;\r\n s[22] ^= h;\r\n s[23] ^= l;\r\n s[32] ^= h;\r\n s[33] ^= l;\r\n s[42] ^= h;\r\n s[43] ^= l;\r\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\r\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\r\n s[4] ^= h;\r\n s[5] ^= l;\r\n s[14] ^= h;\r\n s[15] ^= l;\r\n s[24] ^= h;\r\n s[25] ^= l;\r\n s[34] ^= h;\r\n s[35] ^= l;\r\n s[44] ^= h;\r\n s[45] ^= l;\r\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\r\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\r\n s[6] ^= h;\r\n s[7] ^= l;\r\n s[16] ^= h;\r\n s[17] ^= l;\r\n s[26] ^= h;\r\n s[27] ^= l;\r\n s[36] ^= h;\r\n s[37] ^= l;\r\n s[46] ^= h;\r\n s[47] ^= l;\r\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\r\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\r\n s[8] ^= h;\r\n s[9] ^= l;\r\n s[18] ^= h;\r\n s[19] ^= l;\r\n s[28] ^= h;\r\n s[29] ^= l;\r\n s[38] ^= h;\r\n s[39] ^= l;\r\n s[48] ^= h;\r\n s[49] ^= l;\r\n\r\n b0 = s[0];\r\n b1 = s[1];\r\n b32 = (s[11] << 4) | (s[10] >>> 28);\r\n b33 = (s[10] << 4) | (s[11] >>> 28);\r\n b14 = (s[20] << 3) | (s[21] >>> 29);\r\n b15 = (s[21] << 3) | (s[20] >>> 29);\r\n b46 = (s[31] << 9) | (s[30] >>> 23);\r\n b47 = (s[30] << 9) | (s[31] >>> 23);\r\n b28 = (s[40] << 18) | (s[41] >>> 14);\r\n b29 = (s[41] << 18) | (s[40] >>> 14);\r\n b20 = (s[2] << 1) | (s[3] >>> 31);\r\n b21 = (s[3] << 1) | (s[2] >>> 31);\r\n b2 = (s[13] << 12) | (s[12] >>> 20);\r\n b3 = (s[12] << 12) | (s[13] >>> 20);\r\n b34 = (s[22] << 10) | (s[23] >>> 22);\r\n b35 = (s[23] << 10) | (s[22] >>> 22);\r\n b16 = (s[33] << 13) | (s[32] >>> 19);\r\n b17 = (s[32] << 13) | (s[33] >>> 19);\r\n b48 = (s[42] << 2) | (s[43] >>> 30);\r\n b49 = (s[43] << 2) | (s[42] >>> 30);\r\n b40 = (s[5] << 30) | (s[4] >>> 2);\r\n b41 = (s[4] << 30) | (s[5] >>> 2);\r\n b22 = (s[14] << 6) | (s[15] >>> 26);\r\n b23 = (s[15] << 6) | (s[14] >>> 26);\r\n b4 = (s[25] << 11) | (s[24] >>> 21);\r\n b5 = (s[24] << 11) | (s[25] >>> 21);\r\n b36 = (s[34] << 15) | (s[35] >>> 17);\r\n b37 = (s[35] << 15) | (s[34] >>> 17);\r\n b18 = (s[45] << 29) | (s[44] >>> 3);\r\n b19 = (s[44] << 29) | (s[45] >>> 3);\r\n b10 = (s[6] << 28) | (s[7] >>> 4);\r\n b11 = (s[7] << 28) | (s[6] >>> 4);\r\n b42 = (s[17] << 23) | (s[16] >>> 9);\r\n b43 = (s[16] << 23) | (s[17] >>> 9);\r\n b24 = (s[26] << 25) | (s[27] >>> 7);\r\n b25 = (s[27] << 25) | (s[26] >>> 7);\r\n b6 = (s[36] << 21) | (s[37] >>> 11);\r\n b7 = (s[37] << 21) | (s[36] >>> 11);\r\n b38 = (s[47] << 24) | (s[46] >>> 8);\r\n b39 = (s[46] << 24) | (s[47] >>> 8);\r\n b30 = (s[8] << 27) | (s[9] >>> 5);\r\n b31 = (s[9] << 27) | (s[8] >>> 5);\r\n b12 = (s[18] << 20) | (s[19] >>> 12);\r\n b13 = (s[19] << 20) | (s[18] >>> 12);\r\n b44 = (s[29] << 7) | (s[28] >>> 25);\r\n b45 = (s[28] << 7) | (s[29] >>> 25);\r\n b26 = (s[38] << 8) | (s[39] >>> 24);\r\n b27 = (s[39] << 8) | (s[38] >>> 24);\r\n b8 = (s[48] << 14) | (s[49] >>> 18);\r\n b9 = (s[49] << 14) | (s[48] >>> 18);\r\n\r\n s[0] = b0 ^ (~b2 & b4);\r\n s[1] = b1 ^ (~b3 & b5);\r\n s[10] = b10 ^ (~b12 & b14);\r\n s[11] = b11 ^ (~b13 & b15);\r\n s[20] = b20 ^ (~b22 & b24);\r\n s[21] = b21 ^ (~b23 & b25);\r\n s[30] = b30 ^ (~b32 & b34);\r\n s[31] = b31 ^ (~b33 & b35);\r\n s[40] = b40 ^ (~b42 & b44);\r\n s[41] = b41 ^ (~b43 & b45);\r\n s[2] = b2 ^ (~b4 & b6);\r\n s[3] = b3 ^ (~b5 & b7);\r\n s[12] = b12 ^ (~b14 & b16);\r\n s[13] = b13 ^ (~b15 & b17);\r\n s[22] = b22 ^ (~b24 & b26);\r\n s[23] = b23 ^ (~b25 & b27);\r\n s[32] = b32 ^ (~b34 & b36);\r\n s[33] = b33 ^ (~b35 & b37);\r\n s[42] = b42 ^ (~b44 & b46);\r\n s[43] = b43 ^ (~b45 & b47);\r\n s[4] = b4 ^ (~b6 & b8);\r\n s[5] = b5 ^ (~b7 & b9);\r\n s[14] = b14 ^ (~b16 & b18);\r\n s[15] = b15 ^ (~b17 & b19);\r\n s[24] = b24 ^ (~b26 & b28);\r\n s[25] = b25 ^ (~b27 & b29);\r\n s[34] = b34 ^ (~b36 & b38);\r\n s[35] = b35 ^ (~b37 & b39);\r\n s[44] = b44 ^ (~b46 & b48);\r\n s[45] = b45 ^ (~b47 & b49);\r\n s[6] = b6 ^ (~b8 & b0);\r\n s[7] = b7 ^ (~b9 & b1);\r\n s[16] = b16 ^ (~b18 & b10);\r\n s[17] = b17 ^ (~b19 & b11);\r\n s[26] = b26 ^ (~b28 & b20);\r\n s[27] = b27 ^ (~b29 & b21);\r\n s[36] = b36 ^ (~b38 & b30);\r\n s[37] = b37 ^ (~b39 & b31);\r\n s[46] = b46 ^ (~b48 & b40);\r\n s[47] = b47 ^ (~b49 & b41);\r\n s[8] = b8 ^ (~b0 & b2);\r\n s[9] = b9 ^ (~b1 & b3);\r\n s[18] = b18 ^ (~b10 & b12);\r\n s[19] = b19 ^ (~b11 & b13);\r\n s[28] = b28 ^ (~b20 & b22);\r\n s[29] = b29 ^ (~b21 & b23);\r\n s[38] = b38 ^ (~b30 & b32);\r\n s[39] = b39 ^ (~b31 & b33);\r\n s[48] = b48 ^ (~b40 & b42);\r\n s[49] = b49 ^ (~b41 & b43);\r\n\r\n s[0] ^= RC[n];\r\n s[1] ^= RC[n + 1];\r\n }\r\n };\r\n\r\n if (COMMON_JS) {\r\n module.exports = methods;\r\n } else {\r\n for (var i = 0; i < methodNames.length; ++i) {\r\n root[methodNames[i]] = methods[methodNames[i]];\r\n }\r\n }\r\n})();\r\n\n}).call(this,require('_process'),typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"_process\":42}],41:[function(require,module,exports){\nmodule.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n\n},{}],42:[function(require,module,exports){\nmodule.exports = { browser: true };\n},{}],43:[function(require,module,exports){\n(function (setImmediate){\n\"use strict\";\n\n(function(root) {\n var MAX_VALUE = 0x7fffffff;\n\n // The SHA256 and PBKDF2 implementation are from scrypt-async-js:\n // See: https://github.com/dchest/scrypt-async-js\n function SHA256(m) {\n var K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b,\n 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01,\n 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7,\n 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152,\n 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,\n 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc,\n 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819,\n 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08,\n 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f,\n 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n ];\n\n var h0 = 0x6a09e667, h1 = 0xbb67ae85, h2 = 0x3c6ef372, h3 = 0xa54ff53a;\n var h4 = 0x510e527f, h5 = 0x9b05688c, h6 = 0x1f83d9ab, h7 = 0x5be0cd19;\n var w = new Array(64);\n\n function blocks(p) {\n var off = 0, len = p.length;\n while (len >= 64) {\n var a = h0, b = h1, c = h2, d = h3, e = h4, f = h5, g = h6, h = h7, u, i, j, t1, t2;\n\n for (i = 0; i < 16; i++) {\n j = off + i*4;\n w[i] = ((p[j] & 0xff)<<24) | ((p[j+1] & 0xff)<<16) |\n ((p[j+2] & 0xff)<<8) | (p[j+3] & 0xff);\n }\n\n for (i = 16; i < 64; i++) {\n u = w[i-2];\n t1 = ((u>>>17) | (u<<(32-17))) ^ ((u>>>19) | (u<<(32-19))) ^ (u>>>10);\n\n u = w[i-15];\n t2 = ((u>>>7) | (u<<(32-7))) ^ ((u>>>18) | (u<<(32-18))) ^ (u>>>3);\n\n w[i] = (((t1 + w[i-7]) | 0) + ((t2 + w[i-16]) | 0)) | 0;\n }\n\n for (i = 0; i < 64; i++) {\n t1 = ((((((e>>>6) | (e<<(32-6))) ^ ((e>>>11) | (e<<(32-11))) ^\n ((e>>>25) | (e<<(32-25)))) + ((e & f) ^ (~e & g))) | 0) +\n ((h + ((K[i] + w[i]) | 0)) | 0)) | 0;\n\n t2 = ((((a>>>2) | (a<<(32-2))) ^ ((a>>>13) | (a<<(32-13))) ^\n ((a>>>22) | (a<<(32-22)))) + ((a & b) ^ (a & c) ^ (b & c))) | 0;\n\n h = g;\n g = f;\n f = e;\n e = (d + t1) | 0;\n d = c;\n c = b;\n b = a;\n a = (t1 + t2) | 0;\n }\n\n h0 = (h0 + a) | 0;\n h1 = (h1 + b) | 0;\n h2 = (h2 + c) | 0;\n h3 = (h3 + d) | 0;\n h4 = (h4 + e) | 0;\n h5 = (h5 + f) | 0;\n h6 = (h6 + g) | 0;\n h7 = (h7 + h) | 0;\n\n off += 64;\n len -= 64;\n }\n }\n\n blocks(m);\n\n var i, bytesLeft = m.length % 64,\n bitLenHi = (m.length / 0x20000000) | 0,\n bitLenLo = m.length << 3,\n numZeros = (bytesLeft < 56) ? 56 : 120,\n p = m.slice(m.length - bytesLeft, m.length);\n\n p.push(0x80);\n for (i = bytesLeft + 1; i < numZeros; i++) { p.push(0); }\n p.push((bitLenHi>>>24) & 0xff);\n p.push((bitLenHi>>>16) & 0xff);\n p.push((bitLenHi>>>8) & 0xff);\n p.push((bitLenHi>>>0) & 0xff);\n p.push((bitLenLo>>>24) & 0xff);\n p.push((bitLenLo>>>16) & 0xff);\n p.push((bitLenLo>>>8) & 0xff);\n p.push((bitLenLo>>>0) & 0xff);\n\n blocks(p);\n\n return [\n (h0>>>24) & 0xff, (h0>>>16) & 0xff, (h0>>>8) & 0xff, (h0>>>0) & 0xff,\n (h1>>>24) & 0xff, (h1>>>16) & 0xff, (h1>>>8) & 0xff, (h1>>>0) & 0xff,\n (h2>>>24) & 0xff, (h2>>>16) & 0xff, (h2>>>8) & 0xff, (h2>>>0) & 0xff,\n (h3>>>24) & 0xff, (h3>>>16) & 0xff, (h3>>>8) & 0xff, (h3>>>0) & 0xff,\n (h4>>>24) & 0xff, (h4>>>16) & 0xff, (h4>>>8) & 0xff, (h4>>>0) & 0xff,\n (h5>>>24) & 0xff, (h5>>>16) & 0xff, (h5>>>8) & 0xff, (h5>>>0) & 0xff,\n (h6>>>24) & 0xff, (h6>>>16) & 0xff, (h6>>>8) & 0xff, (h6>>>0) & 0xff,\n (h7>>>24) & 0xff, (h7>>>16) & 0xff, (h7>>>8) & 0xff, (h7>>>0) & 0xff\n ];\n }\n\n function PBKDF2_HMAC_SHA256_OneIter(password, salt, dkLen) {\n // compress password if it's longer than hash block length\n password = password.length <= 64 ? password : SHA256(password);\n\n var i;\n var innerLen = 64 + salt.length + 4;\n var inner = new Array(innerLen);\n var outerKey = new Array(64);\n var dk = [];\n\n // inner = (password ^ ipad) || salt || counter\n for (i = 0; i < 64; i++) inner[i] = 0x36;\n for (i = 0; i < password.length; i++) inner[i] ^= password[i];\n for (i = 0; i < salt.length; i++) inner[64+i] = salt[i];\n for (i = innerLen - 4; i < innerLen; i++) inner[i] = 0;\n\n // outerKey = password ^ opad\n for (i = 0; i < 64; i++) outerKey[i] = 0x5c;\n for (i = 0; i < password.length; i++) outerKey[i] ^= password[i];\n\n // increments counter inside inner\n function incrementCounter() {\n for (var i = innerLen-1; i >= innerLen-4; i--) {\n inner[i]++;\n if (inner[i] <= 0xff) return;\n inner[i] = 0;\n }\n }\n\n // output blocks = SHA256(outerKey || SHA256(inner)) ...\n while (dkLen >= 32) {\n incrementCounter();\n dk = dk.concat(SHA256(outerKey.concat(SHA256(inner))));\n dkLen -= 32;\n }\n if (dkLen > 0) {\n incrementCounter();\n dk = dk.concat(SHA256(outerKey.concat(SHA256(inner))).slice(0, dkLen));\n }\n\n return dk;\n }\n\n // The following is an adaptation of scryptsy\n // See: https://www.npmjs.com/package/scryptsy\n function blockmix_salsa8(BY, Yi, r, x, _X) {\n var i;\n\n arraycopy(BY, (2 * r - 1) * 16, _X, 0, 16);\n for (i = 0; i < 2 * r; i++) {\n blockxor(BY, i * 16, _X, 16);\n salsa20_8(_X, x);\n arraycopy(_X, 0, BY, Yi + (i * 16), 16);\n }\n\n for (i = 0; i < r; i++) {\n arraycopy(BY, Yi + (i * 2) * 16, BY, (i * 16), 16);\n }\n\n for (i = 0; i < r; i++) {\n arraycopy(BY, Yi + (i * 2 + 1) * 16, BY, (i + r) * 16, 16);\n }\n }\n\n function R(a, b) {\n return (a << b) | (a >>> (32 - b));\n }\n\n function salsa20_8(B, x) {\n arraycopy(B, 0, x, 0, 16);\n\n for (var i = 8; i > 0; i -= 2) {\n x[ 4] ^= R(x[ 0] + x[12], 7);\n x[ 8] ^= R(x[ 4] + x[ 0], 9);\n x[12] ^= R(x[ 8] + x[ 4], 13);\n x[ 0] ^= R(x[12] + x[ 8], 18);\n x[ 9] ^= R(x[ 5] + x[ 1], 7);\n x[13] ^= R(x[ 9] + x[ 5], 9);\n x[ 1] ^= R(x[13] + x[ 9], 13);\n x[ 5] ^= R(x[ 1] + x[13], 18);\n x[14] ^= R(x[10] + x[ 6], 7);\n x[ 2] ^= R(x[14] + x[10], 9);\n x[ 6] ^= R(x[ 2] + x[14], 13);\n x[10] ^= R(x[ 6] + x[ 2], 18);\n x[ 3] ^= R(x[15] + x[11], 7);\n x[ 7] ^= R(x[ 3] + x[15], 9);\n x[11] ^= R(x[ 7] + x[ 3], 13);\n x[15] ^= R(x[11] + x[ 7], 18);\n x[ 1] ^= R(x[ 0] + x[ 3], 7);\n x[ 2] ^= R(x[ 1] + x[ 0], 9);\n x[ 3] ^= R(x[ 2] + x[ 1], 13);\n x[ 0] ^= R(x[ 3] + x[ 2], 18);\n x[ 6] ^= R(x[ 5] + x[ 4], 7);\n x[ 7] ^= R(x[ 6] + x[ 5], 9);\n x[ 4] ^= R(x[ 7] + x[ 6], 13);\n x[ 5] ^= R(x[ 4] + x[ 7], 18);\n x[11] ^= R(x[10] + x[ 9], 7);\n x[ 8] ^= R(x[11] + x[10], 9);\n x[ 9] ^= R(x[ 8] + x[11], 13);\n x[10] ^= R(x[ 9] + x[ 8], 18);\n x[12] ^= R(x[15] + x[14], 7);\n x[13] ^= R(x[12] + x[15], 9);\n x[14] ^= R(x[13] + x[12], 13);\n x[15] ^= R(x[14] + x[13], 18);\n }\n\n for (i = 0; i < 16; ++i) {\n B[i] += x[i];\n }\n }\n\n // naive approach... going back to loop unrolling may yield additional performance\n function blockxor(S, Si, D, len) {\n for (var i = 0; i < len; i++) {\n D[i] ^= S[Si + i]\n }\n }\n\n function arraycopy(src, srcPos, dest, destPos, length) {\n while (length--) {\n dest[destPos++] = src[srcPos++];\n }\n }\n\n function checkBufferish(o) {\n if (!o || typeof(o.length) !== 'number') {\n return false;\n }\n for (var i = 0; i < o.length; i++) {\n if (typeof(o[i]) !== 'number') { return false; }\n\n var v = parseInt(o[i]);\n if (v != o[i] || v < 0 || v >= 256) {\n return false;\n }\n }\n return true;\n }\n\n function ensureInteger(value, name) {\n var intValue = parseInt(value);\n if (value != intValue) { throw new Error('invalid ' + name); }\n return intValue;\n }\n\n // N = Cpu cost, r = Memory cost, p = parallelization cost\n // callback(error, progress, key)\n function scrypt(password, salt, N, r, p, dkLen, callback) {\n\n if (!callback) { throw new Error('missing callback'); }\n\n N = ensureInteger(N, 'N');\n r = ensureInteger(r, 'r');\n p = ensureInteger(p, 'p');\n\n dkLen = ensureInteger(dkLen, 'dkLen');\n\n if (N === 0 || (N & (N - 1)) !== 0) { throw new Error('N must be power of 2'); }\n\n if (N > MAX_VALUE / 128 / r) { throw new Error('N too large'); }\n if (r > MAX_VALUE / 128 / p) { throw new Error('r too large'); }\n\n if (!checkBufferish(password)) {\n throw new Error('password must be an array or buffer');\n }\n password = Array.prototype.slice.call(password);\n\n if (!checkBufferish(salt)) {\n throw new Error('salt must be an array or buffer');\n }\n salt = Array.prototype.slice.call(salt);\n\n var b = PBKDF2_HMAC_SHA256_OneIter(password, salt, p * 128 * r);\n var B = new Uint32Array(p * 32 * r)\n for (var i = 0; i < B.length; i++) {\n var j = i * 4;\n B[i] = ((b[j + 3] & 0xff) << 24) |\n ((b[j + 2] & 0xff) << 16) |\n ((b[j + 1] & 0xff) << 8) |\n ((b[j + 0] & 0xff) << 0);\n }\n\n var XY = new Uint32Array(64 * r);\n var V = new Uint32Array(32 * r * N);\n\n var Yi = 32 * r;\n\n // scratch space\n var x = new Uint32Array(16); // salsa20_8\n var _X = new Uint32Array(16); // blockmix_salsa8\n\n var totalOps = p * N * 2;\n var currentOp = 0;\n var lastPercent10 = null;\n\n // Set this to true to abandon the scrypt on the next step\n var stop = false;\n\n // State information\n var state = 0;\n var i0 = 0, i1;\n var Bi;\n\n // How many blockmix_salsa8 can we do per step?\n var limit = parseInt(1000 / r);\n\n // Trick from scrypt-async; if there is a setImmediate shim in place, use it\n var nextTick = (typeof(setImmediate) !== 'undefined') ? setImmediate : setTimeout;\n\n // This is really all I changed; making scryptsy a state machine so we occasionally\n // stop and give other evnts on the evnt loop a chance to run. ~RicMoo\n var incrementalSMix = function() {\n if (stop) {\n return callback(new Error('cancelled'), currentOp / totalOps);\n }\n\n switch (state) {\n case 0:\n // for (var i = 0; i < p; i++)...\n Bi = i0 * 32 * r;\n\n arraycopy(B, Bi, XY, 0, Yi); // ROMix - 1\n\n state = 1; // Move to ROMix 2\n i1 = 0;\n\n // Fall through\n\n case 1:\n\n // Run up to 1000 steps of the first inner smix loop\n var steps = N - i1;\n if (steps > limit) { steps = limit; }\n for (var i = 0; i < steps; i++) { // ROMix - 2\n arraycopy(XY, 0, V, (i1 + i) * Yi, Yi) // ROMix - 3\n blockmix_salsa8(XY, Yi, r, x, _X); // ROMix - 4\n }\n\n // for (var i = 0; i < N; i++)\n i1 += steps;\n currentOp += steps;\n\n // Call the callback with the progress (optionally stopping us)\n var percent10 = parseInt(1000 * currentOp / totalOps);\n if (percent10 !== lastPercent10) {\n stop = callback(null, currentOp / totalOps);\n if (stop) { break; }\n lastPercent10 = percent10;\n }\n\n if (i1 < N) {\n break;\n }\n\n i1 = 0; // Move to ROMix 6\n state = 2;\n\n // Fall through\n\n case 2:\n\n // Run up to 1000 steps of the second inner smix loop\n var steps = N - i1;\n if (steps > limit) { steps = limit; }\n for (var i = 0; i < steps; i++) { // ROMix - 6\n var offset = (2 * r - 1) * 16; // ROMix - 7\n var j = XY[offset] & (N - 1);\n blockxor(V, j * Yi, XY, Yi); // ROMix - 8 (inner)\n blockmix_salsa8(XY, Yi, r, x, _X); // ROMix - 9 (outer)\n }\n\n // for (var i = 0; i < N; i++)...\n i1 += steps;\n currentOp += steps;\n\n // Call the callback with the progress (optionally stopping us)\n var percent10 = parseInt(1000 * currentOp / totalOps);\n if (percent10 !== lastPercent10) {\n stop = callback(null, currentOp / totalOps);\n if (stop) { break; }\n lastPercent10 = percent10;\n }\n\n if (i1 < N) {\n break;\n }\n\n arraycopy(XY, 0, B, Bi, Yi); // ROMix - 10\n\n // for (var i = 0; i < p; i++)...\n i0++;\n if (i0 < p) {\n state = 0;\n break;\n }\n\n b = [];\n for (var i = 0; i < B.length; i++) {\n b.push((B[i] >> 0) & 0xff);\n b.push((B[i] >> 8) & 0xff);\n b.push((B[i] >> 16) & 0xff);\n b.push((B[i] >> 24) & 0xff);\n }\n\n var derivedKey = PBKDF2_HMAC_SHA256_OneIter(password, b, dkLen);\n\n // Done; don't break (which would reschedule)\n return callback(null, 1.0, derivedKey);\n }\n\n // Schedule the next steps\n nextTick(incrementalSMix);\n }\n\n // Bootstrap the incremental smix\n incrementalSMix();\n }\n\n // node.js\n if (typeof(exports) !== 'undefined') {\n module.exports = scrypt;\n\n // RequireJS/AMD\n // http://www.requirejs.org/docs/api.html\n // https://github.com/amdjs/amdjs-api/wiki/AMD\n } else if (typeof(define) === 'function' && define.amd) {\n define(scrypt);\n\n // Web Browsers\n } else if (root) {\n\n // If there was an existing library \"scrypt\", make sure it is still available\n if (root.scrypt) {\n root._scrypt = root.scrypt;\n }\n\n root.scrypt = scrypt;\n }\n\n})(this);\n\n}).call(this,require(\"timers\").setImmediate)\n},{\"timers\":45}],44:[function(require,module,exports){\n(function (process,global,clearImmediate){\n(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var setImmediate;\n\n function addFromSetImmediateArguments(args) {\n tasksByHandle[nextHandle] = partiallyApplied.apply(undefined, args);\n return nextHandle++;\n }\n\n // This function accepts the same arguments as setImmediate, but\n // returns a function that requires no arguments.\n function partiallyApplied(handler) {\n var args = [].slice.call(arguments, 1);\n return function() {\n if (typeof handler === \"function\") {\n handler.apply(undefined, args);\n } else {\n (new Function(\"\" + handler))();\n }\n };\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(partiallyApplied(runIfPresent, handle), 0);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n task();\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function installNextTickImplementation() {\n setImmediate = function() {\n var handle = addFromSetImmediateArguments(arguments);\n process.nextTick(partiallyApplied(runIfPresent, handle));\n return handle;\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n setImmediate = function() {\n var handle = addFromSetImmediateArguments(arguments);\n global.postMessage(messagePrefix + handle, \"*\");\n return handle;\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n setImmediate = function() {\n var handle = addFromSetImmediateArguments(arguments);\n channel.port2.postMessage(handle);\n return handle;\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n setImmediate = function() {\n var handle = addFromSetImmediateArguments(arguments);\n // Create a