{"version":3,"sources":["webpack:///./node_modules/diffie-hellman/browser.js","webpack:///./node_modules/public-encrypt/node_modules/bn.js/lib/bn.js","webpack:///./node_modules/browserify-aes/modes/ecb.js","webpack:///./node_modules/des.js/lib/des/cipher.js","webpack:///./node_modules/asn1.js/lib/asn1/constants/index.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/state.js","webpack:///./src/components/xtabs.vue?56c1","webpack:///./node_modules/hash-base/node_modules/safe-buffer/index.js","webpack:///./node_modules/hash.js/lib/hash/sha/224.js","webpack:///./node_modules/sha.js/sha.js","webpack:///./node_modules/readable-stream/duplex-browser.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/_stream_transform.js","webpack:///./node_modules/browserify-aes/streamCipher.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/_stream_passthrough.js","webpack:///./node_modules/browserify-des/modes.js","webpack:///./node_modules/elliptic/lib/elliptic/curves.js","webpack:///./node_modules/des.js/lib/des/cbc.js","webpack:///./node_modules/public-encrypt/privateDecrypt.js","webpack:///../../../src/components/VGrid/VRow.ts","webpack:///./node_modules/browserify-sign/algos.js","webpack:///./node_modules/randombytes/browser.js","webpack:///./node_modules/hash.js/lib/hash/sha/1.js","webpack:///./node_modules/des.js/lib/des.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/_stream_writable.js","webpack:///./node_modules/create-hmac/browser.js","webpack:///./node_modules/crypto-browserify/index.js","webpack:///./node_modules/browserify-des/index.js","webpack:///./node_modules/des.js/lib/des/ede.js","webpack:///./node_modules/pbkdf2/lib/async.js","webpack:///./node_modules/asn1.js/lib/asn1/decoders/index.js","webpack:///./node_modules/hash.js/lib/hash/hmac.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack:///./node_modules/readable-stream/lib/_stream_transform.js","webpack:///./node_modules/parse-asn1/index.js","webpack:///./node_modules/readable-stream/writable-browser.js","webpack:///./node_modules/elliptic/lib/elliptic/curve/short.js","webpack:///./node_modules/elliptic/lib/elliptic.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/readable-browser.js","webpack:///./node_modules/asn1.js/lib/asn1/encoders/index.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/readable-browser.js","webpack:///./node_modules/browserify-aes/modes/cfb.js","webpack:///./node_modules/asn1.js/lib/asn1/encoders/der.js","webpack:///./node_modules/create-ecdh/node_modules/bn.js/lib/bn.js","webpack:///./node_modules/elliptic/lib/elliptic/eddsa/key.js","webpack:///./node_modules/bn.js/lib/bn.js","webpack:///./node_modules/browserify-sign/node_modules/safe-buffer/index.js","webpack:///./node_modules/browserify-aes/aes.js","webpack:///./node_modules/core-util-is/lib/util.js","webpack:///./node_modules/elliptic/lib/elliptic/curve/edwards.js","webpack:///./node_modules/browserify-aes/ghash.js","webpack:///./node_modules/inherits/inherits_browser.js","webpack:///./node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js","webpack:///./node_modules/parse-asn1/asn1.js","webpack:///./node_modules/elliptic/lib/elliptic/curve/index.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/async_iterator.js","webpack:///./node_modules/asn1.js/lib/asn1/base/index.js","webpack:///./node_modules/browserify-aes/decrypter.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/_stream_readable.js","webpack:///./node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack:///./node_modules/elliptic/lib/elliptic/eddsa/signature.js","webpack:///./node_modules/readable-stream/lib/internal/streams/destroy.js","webpack:///./node_modules/diffie-hellman/node_modules/bn.js/lib/bn.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/destroy.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_writable.js","webpack:///./src/components/sworn.vue?2c64","webpack:///./node_modules/parse-asn1/fixProc.js","webpack:///./node_modules/des.js/lib/des/des.js","webpack:///./node_modules/sha.js/sha512.js","webpack:///./node_modules/browserify-aes/modes/ofb.js","webpack:///./node_modules/browserify-aes/modes/cfb1.js","webpack:///./node_modules/public-encrypt/withPublic.js","webpack:///./node_modules/diffie-hellman/lib/dh.js","webpack:///./node_modules/parse-asn1/certificate.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/async_iterator.js","webpack:///./node_modules/diffie-hellman/lib/generatePrime.js","webpack:///./node_modules/hash.js/lib/hash/sha.js","webpack:///./node_modules/create-hash/md5.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack:///./node_modules/readable-stream/lib/internal/streams/BufferList.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_duplex.js","webpack:///./node_modules/des.js/lib/des/utils.js","webpack:///./node_modules/asn1.js/lib/asn1/base/buffer.js","webpack:///../../../src/components/VGrid/VCol.ts","webpack:///./node_modules/browserify-aes/modes/cfb8.js","webpack:///./node_modules/cipher-base/index.js","webpack:///./node_modules/public-encrypt/browser.js","webpack:///./node_modules/elliptic/lib/elliptic/curve/mont.js","webpack:///./node_modules/sha.js/index.js","webpack:///./node_modules/hmac-drbg/lib/hmac-drbg.js","webpack:///./node_modules/browserify-aes/modes/ctr.js","webpack:///./node_modules/hash.js/lib/hash/sha/256.js","webpack:///./node_modules/browserify-sign/browser/sign.js","webpack:///./node_modules/sha.js/sha224.js","webpack:///./node_modules/randomfill/browser.js","webpack:///./node_modules/minimalistic-crypto-utils/lib/utils.js","webpack:///./node_modules/readable-stream/lib/_stream_passthrough.js","webpack:///./node_modules/miller-rabin/lib/mr.js","webpack:///./src/components/home.vue?06a3","webpack:///./node_modules/pbkdf2/lib/precondition.js","webpack:///./node_modules/string_decoder/lib/string_decoder.js","webpack:///./node_modules/hash.js/lib/hash.js","webpack:///./node_modules/sha.js/sha1.js","webpack:///./node_modules/asn1.js/lib/asn1.js","webpack:///./node_modules/elliptic/node_modules/bn.js/lib/bn.js","webpack:///./node_modules/browserify-aes/authCipher.js","webpack:///./node_modules/asn1.js/lib/asn1/base/node.js","webpack:///./node_modules/public-encrypt/xor.js","webpack:///./node_modules/asn1.js/lib/asn1/encoders/pem.js","webpack:///./node_modules/safe-buffer/index.js","webpack:///./node_modules/browserify-aes/encrypter.js","webpack:///./node_modules/asn1.js/lib/asn1/constants/der.js","webpack:///./node_modules/hash.js/lib/hash/sha/384.js","webpack:///./node_modules/pbkdf2/lib/to-buffer.js","webpack:///./node_modules/buffer-xor/index.js","webpack:///./node_modules/asn1.js/lib/asn1/decoders/pem.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/destroy.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/from-browser.js","webpack:///./node_modules/hash-base/index.js","webpack:///./node_modules/elliptic/lib/elliptic/eddsa/index.js","webpack:///./node_modules/browserify-cipher/browser.js","webpack:///./node_modules/process-nextick-args/index.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack:///./node_modules/browserify-sign/browser/verify.js","webpack:///./node_modules/create-hash/browser.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_passthrough.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/errors-browser.js","webpack:///./node_modules/pbkdf2/lib/default-encoding.js","webpack:///./node_modules/pbkdf2/browser.js","webpack:///./node_modules/sha.js/sha256.js","webpack:///../../../src/components/VGrid/grid.ts","webpack:///../../../src/components/VGrid/VContainer.ts","webpack:///./node_modules/browserify-rsa/index.js","webpack:///./node_modules/hash.js/lib/hash/sha/common.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack:///./node_modules/public-encrypt/publicEncrypt.js","webpack:///./node_modules/readable-stream/lib/_stream_readable.js","webpack:///./node_modules/evp_bytestokey/index.js","webpack:///../../../src/components/VBtn/index.ts","webpack:///./node_modules/readable-stream/lib/_stream_duplex.js","webpack:///./node_modules/hash.js/lib/hash/sha/512.js","webpack:///./node_modules/ripemd160/index.js","webpack:///./node_modules/sha.js/hash.js","webpack:///./node_modules/browserify-sign/browser/index.js","webpack:///./node_modules/elliptic/lib/elliptic/ec/signature.js","webpack:///./node_modules/util-deprecate/browser.js","webpack:///./node_modules/sha.js/sha384.js","webpack:///./node_modules/elliptic/lib/elliptic/ec/index.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/state.js","webpack:///./node_modules/browserify-aes/modes/index.js","webpack:///./node_modules/elliptic/lib/elliptic/ec/key.js","webpack:///./node_modules/hash.js/lib/hash/ripemd.js","webpack:///./node_modules/asn1.js/node_modules/bn.js/lib/bn.js","webpack:///./node_modules/browserify-aes/incr32.js","webpack:///./node_modules/browserify-aes/modes/cbc.js","webpack:///./node_modules/readable-stream/passthrough.js","webpack:///./src/components/home.vue","webpack:///../../../src/components/VTabs/VTab.ts","webpack:///../../../src/components/VWindow/VWindowItem.ts","webpack:///../../../src/components/VTabs/VTabItem.ts","webpack:///../../../src/components/VSlideGroup/VSlideGroup.ts","webpack:///../../../src/components/VTabs/VTabsBar.ts","webpack:///../../../src/components/VWindow/VWindow.ts","webpack:///../../../src/components/VTabs/VTabsItems.ts","webpack:///../../../src/components/VTabs/VTabsSlider.ts","webpack:///../../../src/components/VTabs/VTabs.ts","webpack:///./src/components/xtabs.vue","webpack:///../../../src/mixins/button-group/index.ts","webpack:///../../../src/components/VBtnToggle/VBtnToggle.ts","webpack:///../../../src/components/VProgressLinear/VProgressLinear.ts","webpack:///../../../src/components/VProgressLinear/index.ts","webpack:///../../../src/mixins/loadable/index.ts","webpack:///../../../src/components/VCard/VCard.ts","webpack:///../../../src/components/VCard/index.ts","webpack:///../../../src/components/VData/VData.ts","webpack:///../../../src/components/VChip/VChip.ts","webpack:///../../../src/components/VChip/index.ts","webpack:///../../../src/components/VThemeProvider/VThemeProvider.ts","webpack:///../../../src/mixins/delayable/index.ts","webpack:///../../../src/mixins/activatable/index.ts","webpack:///../../../src/mixins/stackable/index.ts","webpack:///../../../src/mixins/detachable/index.ts","webpack:///../../../src/mixins/menuable/index.ts","webpack:///../../../src/mixins/returnable/index.ts","webpack:///../../../src/components/VMenu/VMenu.ts","webpack:///../../../src/components/VMenu/index.ts","webpack:///../../../src/components/VCheckbox/VSimpleCheckbox.ts","webpack:///../../../src/components/VDivider/VDivider.ts","webpack:///../../../src/components/VDivider/index.ts","webpack:///../../../src/components/VSubheader/VSubheader.ts","webpack:///../../../src/components/VSubheader/index.ts","webpack:///../../../src/components/VSelect/VSelectList.ts","webpack:///../../../src/components/VLabel/VLabel.ts","webpack:///../../../src/components/VLabel/index.ts","webpack:///../../../src/components/VMessages/VMessages.ts","webpack:///../../../src/components/VMessages/index.ts","webpack:///../../../src/mixins/validatable/index.ts","webpack:///../../../src/components/VInput/VInput.ts","webpack:///../../../src/components/VInput/index.ts","webpack:///../../../src/components/VCounter/VCounter.ts","webpack:///../../../src/components/VCounter/index.ts","webpack:///../../../src/mixins/intersectable/index.ts","webpack:///../../../src/components/VTextField/VTextField.ts","webpack:///../../../src/mixins/filterable/index.ts","webpack:///../../../src/components/VSelect/VSelect.ts","webpack:///../../../src/components/VDataIterator/VDataFooter.ts","webpack:///../../../src/components/VDataIterator/VDataIterator.ts","webpack:///../../../../src/components/VDataTable/mixins/header.ts","webpack:///../../../src/components/VDataTable/VDataTableHeaderMobile.ts","webpack:///../../../src/components/VDataTable/VDataTableHeaderDesktop.ts","webpack:///../../src/util/dedupeModelListeners.ts","webpack:///../../src/util/rebuildFunctionalSlots.ts","webpack:///../../../src/components/VDataTable/VDataTableHeader.ts","webpack:///../../../src/components/VDataTable/Row.ts","webpack:///../../../src/components/VDataTable/RowGroup.ts","webpack:///../../../src/components/VDataTable/VSimpleTable.ts","webpack:///../../../src/components/VDataTable/MobileRow.ts","webpack:///../../../src/components/VDataTable/VDataTable.ts","webpack:///../../../src/components/VDialog/VDialog.ts","webpack:///../../../src/components/VForm/VForm.ts","webpack:///../../../src/components/VTextarea/VTextarea.ts","webpack:///./src/components/sworn.vue","webpack:///src/components/sworn.vue","webpack:///./src/components/sworn.vue?034c","webpack:///./src/components/sworn.vue?f4d7","webpack:///./src/components/records.vue","webpack:///src/components/records.vue","webpack:///./src/components/records.vue?4f8f","webpack:///./src/components/records.vue?d873","webpack:///src/components/xtabs.vue","webpack:///./src/components/xtabs.vue?d042","webpack:///./src/components/xtabs.vue?12fa","webpack:///./src/components/auth.vue","webpack:///src/components/auth.vue","webpack:///./src/components/auth.vue?f502","webpack:///./src/components/auth.vue?a9b3","webpack:///src/components/home.vue","webpack:///./src/components/home.vue?eef1","webpack:///./src/components/home.vue?f41b","webpack:///./node_modules/hash.js/lib/hash/utils.js","webpack:///./node_modules/safer-buffer/safer.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_readable.js","webpack:///./node_modules/asn1.js/lib/asn1/decoders/der.js","webpack:///./node_modules/miller-rabin/node_modules/bn.js/lib/bn.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/errors-browser.js","webpack:///./node_modules/readable-stream/transform.js","webpack:///./node_modules/asn1.js/lib/asn1/base/reporter.js","webpack:///./node_modules/create-hmac/legacy.js","webpack:///./node_modules/stream-browserify/index.js","webpack:///./node_modules/minimalistic-assert/index.js","webpack:///./node_modules/readable-stream/lib/_stream_writable.js","webpack:///./node_modules/pbkdf2/lib/sync-browser.js","webpack:///./node_modules/create-ecdh/browser.js","webpack:///./src/components/records.vue?cf20","webpack:///./node_modules/readable-stream/readable-browser.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/_stream_duplex.js","webpack:///./node_modules/elliptic/lib/elliptic/curve/base.js","webpack:///./node_modules/hash.js/lib/hash/common.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack:///./node_modules/asn1.js/lib/asn1/api.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_transform.js","webpack:///./node_modules/elliptic/lib/elliptic/utils.js","webpack:///./node_modules/public-encrypt/mgf.js","webpack:///./node_modules/md5.js/index.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/from-browser.js","webpack:///./node_modules/events/events.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack:///./node_modules/browserify-aes/browser.js","webpack:///./node_modules/brorand/index.js"],"names":["primes","DH","getDiffieHellman","mod","prime","Buffer","gen","ENCODINGS","createDiffieHellman","enc","generator","genc","isBuffer","undefined","generatePrime","exports","DiffieHellmanGroup","createDiffieHellmanGroup","DiffieHellman","assert","val","msg","Error","inherits","ctor","superCtor","super_","TempCtor","prototype","constructor","BN","number","base","endian","isBN","this","negative","words","length","red","_init","module","wordSize","window","e","parseHex4Bits","string","index","c","charCodeAt","parseHexByte","lowerBound","r","parseBase","str","start","end","mul","len","Math","min","i","num","Array","isArray","max","left","right","cmp","_initNumber","_initArray","toString","replace","_parseHex","_parseBase","toArray","ceil","j","w","off","strip","parseLength","limbLen","limbPow","total","word","imuln","_iaddn","pow","copy","dest","clone","_expand","size","_normSign","inspect","zeros","groupSizes","groupBases","toBitArray","bitLength","bit","wbit","smallMulTo","self","out","a","b","lo","carry","k","ncarry","rword","maxJ","padding","groupSize","groupBase","isZero","modn","idivn","toNumber","ret","toJSON","toBuffer","toArrayLike","ArrayType","byteLength","reqLength","littleEndian","res","q","andln","iushrn","clz32","_countBits","t","_zeroBits","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","iadd","isub","add","sub","comb10MulTo","mid","o","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","imul","w0","w1","w2","w3","w4","w5","w6","w7","w8","w9","w10","w11","w12","w13","w14","w15","w16","w17","w18","bigMulTo","hncarry","jumboMulTo","fftm","FFTM","mulp","x","y","mulTo","makeRBT","N","l","revBin","rb","permute","rbt","rws","iws","rtws","itws","transform","s","rtwdf","cos","PI","itwdf","sin","p","rtwdf_","itwdf_","re","ie","ro","io","rx","guessLen13b","n","m","odd","conjugate","normalize13b","ws","round","convert13b","stub","ph","_","rwst","iwst","nrws","nrwst","niwst","rmws","mulf","muln","sqr","isqr","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","bhiBits","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","k256","p224","p192","p25519","MPrime","name","tmp","_tmp","K256","call","P224","P192","P25519","_prime","Mont","imod","rinv","minv","ireduce","rlen","split","imulK","_strip","input","output","outLen","prev","next","mod3","one","nOne","lpow","z","inv","windowSize","wnd","current","currentLen","mont","u","encrypt","block","_cipher","encryptBlock","decrypt","decryptBlock","Cipher","options","type","blockSize","buffer","bufferOff","update","data","_updateDecrypt","_updateEncrypt","_buffer","_flushBuffer","_update","inputOff","outputOff","count","final","first","last","_finalEncrypt","_finalDecrypt","concat","_pad","_unpad","equal","constants","_reverse","map","Object","keys","forEach","key","value","der","ERR_INVALID_OPT_VALUE","codes","highWaterMarkFrom","isDuplex","duplexKey","highWaterMark","getHighWaterMark","state","hwm","isFinite","floor","objectMode","copyProps","src","dst","SafeBuffer","arg","encodingOrOffset","from","alloc","allocUnsafe","allocUnsafeSlow","create","TypeError","fill","encoding","buf","SlowBuffer","utils","SHA256","SHA224","outSize","hmacStrength","padLength","_digest","toHex32","slice","split32","Hash","K","W","Sha","init","_w","rotl5","rotl30","ft","d","_a","_b","_c","_d","_e","M","readInt32BE","_hash","H","writeInt32BE","Transform","_require$codes","ERR_METHOD_NOT_IMPLEMENTED","ERR_MULTIPLE_CALLBACK","ERR_TRANSFORM_ALREADY_TRANSFORMING","ERR_TRANSFORM_WITH_LENGTH_0","Duplex","afterTransform","er","ts","_transformState","transforming","cb","writecb","emit","writechunk","push","rs","_readableState","reading","needReadable","_read","bind","needTransform","writeencoding","sync","_transform","flush","_flush","on","prefinish","_this","destroyed","done","stream","_writableState","chunk","_write","_destroy","err","err2","aes","StreamCipher","iv","AES","_prev","_cache","_secCache","_decrypt","_mode","_final","scrub","PassThrough","des","des3","pre","curves","hash","curve","PresetCurve","short","edwards","validate","isInfinity","defineCurve","defineProperty","configurable","enumerable","get","sha256","gRed","sha384","sha512","beta","lambda","basis","proto","CBCState","instantiate","Base","CBC","_cbcInit","_cbcState","inp","inOff","outOff","superProto","parseKeys","mgf","crt","createHash","withPublic","oaep","modulus","iHash","digest","hLen","maskedSeed","maskedDb","seed","db","compare","pkcs1","reverse","p1","status","ps","dif","privateKey","zBuffer","breakpoints","ALIGNMENT","makeProps","prefix","def","reduce","props","upperFirst","alignValidator","includes","alignProps","String","default","validator","justifyValidator","justifyProps","alignContentValidator","alignContentProps","propMap","align","justify","alignContent","classMap","breakpointClass","prop","className","breakpoint","toLowerCase","cache","Map","Vue","extend","functional","tag","dense","Boolean","noGutters","render","children","cacheKey","classList","set","mergeData","staticClass","class","MAX_BYTES","MAX_UINT32","oldBrowser","crypto","global","msCrypto","randomBytes","RangeError","bytes","generated","getRandomValues","process","nextTick","common","shaCommon","rotl32","sum32","sum32_5","ft_1","BlockHash","sha1_K","SHA1","DES","EDE","CorkedRequest","entry","finish","onCorkedFinish","Writable","WritableState","internalUtil","deprecate","Stream","OurUint8Array","Uint8Array","_uint8ArrayToBuffer","_isUint8Array","obj","realHasInstance","destroyImpl","_require","ERR_INVALID_ARG_TYPE","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_DESTROYED","ERR_STREAM_NULL_VALUES","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","errorOrDestroy","nop","writableObjectMode","finalCalled","needDrain","ending","ended","finished","noDecode","decodeStrings","defaultEncoding","writing","corked","bufferProcessing","onwrite","writelen","bufferedRequest","lastBufferedRequest","pendingcb","prefinished","errorEmitted","emitClose","autoDestroy","bufferedRequestCount","corkedRequestsFree","writable","write","writev","_writev","destroy","writeAfterEnd","validChunk","decodeChunk","writeOrBuffer","isBuf","newChunk","callback","doWrite","onwriteError","finishMaybe","onwriteStateUpdate","needFinish","clearBuffer","afterWrite","onwriteDrain","holder","allBuffers","callFinal","need","rState","endEmitted","endWritable","once","corkReq","getBuffer","Symbol","hasInstance","Function","object","pipe","cork","uncork","setDefaultEncoding","indexOf","_undestroy","undestroy","Legacy","md5","RIPEMD160","sha","ZEROS","Hmac","alg","blocksize","_alg","_key","ipad","_ipad","opad","_opad","rng","pseudoRandomBytes","prng","createHmac","algos","algoKeys","hashes","getHashes","pbkdf2","pbkdf2Sync","createCipher","Cipheriv","createCipheriv","Decipher","createDecipher","Decipheriv","createDecipheriv","getCiphers","listCiphers","dh","sign","createSign","Sign","createVerify","Verify","createECDH","publicEncrypt","privateEncrypt","publicDecrypt","privateDecrypt","rf","randomFill","randomFillSync","createCredentials","join","CipherBase","modes","opts","modeName","_des","EDEState","k1","k2","k3","ciphers","_edeState","ZERO_BUF","checkParameters","subtle","toBrowser","sha1","checks","checkNative","algo","browser","Promise","resolve","importKey","deriveBits","prom","browserPbkdf2","then","catch","getNextTick","queueMicrotask","setImmediate","setTimeout","password","salt","iterations","resolvePromise","promise","keylen","resp","decoders","pem","inner","outer","ownKeys","enumerableOnly","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","apply","_objectSpread","target","arguments","source","_defineProperty","getOwnPropertyDescriptors","defineProperties","_classCallCheck","instance","Constructor","_defineProperties","descriptor","_createClass","protoProps","staticProps","_require2","custom","copyBuffer","offset","BufferList","head","tail","v","hasStrings","_getString","_getBuffer","nb","depth","customInspect","util","_this2","asn1","aesid","fixProc","compat","passphrase","subtype","ndata","stripped","certificate","decode","tbsCertificate","subjectPublicKeyInfo","PublicKey","algorithm","RSAPublicKey","subjectPublicKey","subjectPrivateKey","params","pub_key","DSAparam","EncryptedPrivateKey","PrivateKey","RSAPrivateKey","ECPrivateKey","priv_key","DSAPrivateKey","parameters","kde","kdeparams","iters","parseInt","cipher","cipherText","signature","ShortCurve","conf","tinv","two","zeroA","threeA","endo","_getEndomorphism","_endoWnafT1","_endoWnafT2","Point","isRed","BasePoint","inf","JPoint","zOne","betas","_getEndoRoots","lambdas","vec","_getEndoBasis","ntinv","l1","l2","prevR","aprxSqrt","y1","y2","len1","len2","_endoSplit","v1","v2","c1","c2","p2","q1","q2","pointFromX","zero","point","ax","rhs","_endoWnafMulAdd","points","coeffs","jacobianResult","npoints","ncoeffs","_getBeta","_wnafMulAdd","pointFromJSON","fromJSON","precomputed","endoMul","naf","doubles","step","JSON","parse","obj2point","dbl","nx","ny","ys1","dyinv","getX","getY","_hasDoubles","_fixedNafMul","_wnafMul","mulAdd","jmulAdd","_precompute","negate","toJ","jpoint","toP","zinv","zinv2","ay","pz2","z2","u1","u2","s1","s2","h2","h3","nz","mixedAdd","dblp","jx","jy","jz","jz4","jyd","jx2","jyd2","jyd4","t1","t2","dny","_zeroDbl","_threeDbl","_dbl","xx","yy","yyyy","yyyy8","f","c8","gamma","alpha","beta4","beta8","ggamma8","jy2","jxd4","jyd8","trpl","zz","mm","ee","yyu4","kbase","z3","pz3","eqXToP","zs","xc","redN","elliptic","version","rand","ec","eddsa","Readable","pipeline","encoders","encryptStart","Node","DEREncoder","entity","tree","DERNode","body","parent","encodeTag","primitive","cls","reporter","tagByName","hasOwnProperty","error","tagClassByName","encode","_encode","_encodeComposite","content","encodedTag","header","_createEncoderBuffer","lenOctets","_encodeStr","unused","writeUInt16BE","_isNumstr","_isPrintstr","test","_encodeObjid","id","values","relative","stringify","splice","ident","objid","_encodeTime","time","date","Date","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","_encodeNull","_encodeInt","numArray","unshift","_encodeBool","_use","_getEncoder","_skipDefault","dataBuffer","_baseState","defaultBuffer","_encodeValue","parseBytes","cachedProperty","KeyPair","_secret","secret","isPoint","pub","_pub","_pubBytes","fromPublic","fromSecret","encodePoint","decodePoint","priv","lastIx","encodingLength","decodeInt","privBytes","message","verify","sig","getSecret","getPublic","pubBytes","move","_move","for","modrn","allocate","postfix","_toArrayLikeLE","position","_toArrayLikeBE","isNegNum","asUInt32Array","readUInt32BE","scrubVec","cryptBlock","keySchedule","SUB_MIX","SBOX","nRounds","t0","t3","SUB_MIX0","SUB_MIX1","SUB_MIX2","SUB_MIX3","s0","s3","ksRow","RCON","G","INV_SBOX","INV_SUB_MIX","xi","sx","x4","x8","_reset","keySize","keyWords","ksRows","invKeySchedule","ik","ksR","tt","_nRounds","_keySchedule","_invKeySchedule","encryptBlockRaw","writeUInt32BE","m1","objectToString","isBoolean","isNull","isNullOrUndefined","isNumber","isString","isSymbol","isUndefined","isRegExp","isObject","isDate","isError","isFunction","isPrimitive","EdwardsCurve","twisted","mOneA","dd","oneC","_mulA","_mulC","lhs","pointFromY","normalize","_extDbl","nt","_projDbl","_extAdd","_projAdd","zi","other","ZEROES","fromArray","GHASH","ghash","_multiply","lsbVi","Vi","Zi","abl","bl","define","seq","int","use","AlgorithmIdentifier","bitstr","null_","optional","PrivateKeyInfo","octstr","EncryptedPrivateKeyInfo","explicit","ECParameters","choice","namedCurve","_Object$setPrototypeO","kLastResolve","kLastReject","kError","kEnded","kLastPromise","kHandlePromise","kStream","createIterResult","readAndResolve","iter","read","onReadable","wrapForNext","lastPromise","reject","AsyncIteratorPrototype","getPrototypeOf","ReadableStreamAsyncIteratorPrototype","setPrototypeOf","asyncIterator","createReadableStreamAsyncIterator","_Object$create","iterator","code","Reporter","DecoderBuffer","EncoderBuffer","AuthCipher","MODES","ebtk","Splitter","_last","_autopadding","unpad","padded","suite","config","thing","setAutoPadding","setTo","autoPadding","ReadableState","EventEmitter","EElistenerCount","emitter","listeners","debug","debugUtil","debuglog","StringDecoder","ERR_STREAM_PUSH_AFTER_EOF","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","kProxyEvents","prependListener","event","fn","_events","readableObjectMode","pipes","pipesCount","flowing","emittedReadable","readableListening","resumeScheduled","paused","awaitDrain","readingMore","decoder","readable","readableAddChunk","addToFront","skipChunkCheck","onEofChunk","chunkInvalid","addChunk","maybeReadMore","emitReadable","isPaused","setEncoding","clear","MAX_HWM","computeNewHighWaterMark","howMuchToRead","emitReadable_","flow","maybeReadMore_","pipeOnDrain","updateReadableListening","listenerCount","resume","nReadingNextTick","resume_","fromList","consume","endReadable","endReadableNT","wState","xs","nOrig","doRead","pipeOpts","doEnd","stdout","stderr","endFn","onend","unpipe","onunpipe","unpipeInfo","hasUnpiped","cleanup","ondrain","cleanedUp","removeListener","onclose","onfinish","onerror","ondata","pause","dests","ev","addListener","removeAllListeners","wrap","method","_fromList","iterable","ERR_STREAM_PREMATURE_CLOSE","called","_len","args","noop","isRequest","setHeader","abort","eos","onlegacyfinish","writableEnded","readableEnded","onrequest","req","Signature","R","S","_R","_S","_Rencoded","Rencoded","_Sencoded","Sencoded","encodeInt","toBytes","toHex","toUpperCase","pna","readableDestroyed","writableDestroyed","emitErrorNT","emitCloseNT","emitErrorAndCloseNT","findProc","startRegex","fullRegex","evp","okey","decrypted","match","cipherKey","match2","DESState","_desState","deriveKeys","shiftTable","kL","kR","pc1","r28shl","pc2","ip","_encrypt","pad","lStart","rStart","keyL","keyR","expand","substitute","rip","Sha512","Ch","maj","sigma0","xl","sigma1","Gamma0","Gamma0l","Gamma1","Gamma1l","getCarry","_ah","_bh","_ch","_dh","_eh","_fh","_gh","_hh","_al","_bl","_cl","_dl","_el","_fl","_gl","_hl","ah","bh","ch","eh","fh","gh","hh","al","cl","dl","el","fl","gl","hl","xh","gamma0","gamma0l","gamma1","gamma1l","Wi7h","Wi7l","Wi16h","Wi16l","Wil","Wih","majh","majl","sigma0h","sigma0l","sigma1h","sigma1l","Kih","Kil","chh","chl","t1l","t1h","t2l","t2h","writeInt64BE","getBlock","encryptByte","byteParam","shiftIn","paddedMsg","publicExponent","MillerRabin","millerRabin","TWENTYFOUR","ELEVEN","TEN","THREE","SEVEN","setPublicKey","setPrivateKey","_priv","primeCache","checkPrime","hex","rem","simpleSieve","fermatTest","malleable","setGenerator","__prime","_primeLen","_primeCode","formatReturnValue","bn","__gen","generateKeys","_gen","getPublicKey","computeSecret","getPrime","front","getPrivateKey","getGenerator","asn","Time","utcTime","utctime","generalTime","gentime","AttributeTypeValue","any","SubjectPublicKeyInfo","RelativeDistinguishedName","setof","RDNSequence","seqof","Name","rdnSequence","Validity","Extension","bool","TBSCertificate","implicit","X509Certificate","findPrime","ONE","TWO","FIVE","FOUR","_getPrimes","limit","n2","sha224","MD5","objectKeys","allowHalfOpen","onEndNT","inL","inR","outL","outR","pc2table","sTable","sb","permuteTable","padSplit","group","item","isEncoderBuffer","isDecoderBuffer","isCompatible","save","restore","isEmpty","readUInt8","skip","raw","fail","_reporterState","breakpointProps","Number","offsetProps","orderProps","col","order","cols","alignSelf","hasColClasses","some","startsWith","hashMode","_finalOrDigest","__final","_decoder","_encoding","inputEnc","outputEnc","outData","_toString","getAuthTag","setAuthTag","setAAD","fin","MontCurve","i4","a24","precompute","aa","bb","diffAdd","da","jumlAdd","Algorithm","HmacDRBG","predResist","minEntropy","_reseed","reseedInterval","V","entropy","entropyEnc","nonce","nonceEnc","pers","persEnc","_hmac","hmac","kmac","reseed","addEnc","generate","temp","incr32","chunkNum","sum32_4","ch32","maj32","s0_256","s1_256","g0_256","g1_256","sha256_K","T1","T2","EC","hashType","signType","ecSign","dsaSign","curveId","keyFromPrivate","toDER","bits2int","kv","getKey","makeKey","makeR","hlen","hbits","bits2octets","obits","Sha256","Sha224","_f","_g","_h","safeBuffer","randombytes","kBufferMaxLength","kMaxLength","kMaxUint32","assertOffset","assertSize","actualFill","ourBuf","uint","zero2","arr","brorand","Rand","_randbelow","min_bytes","_randrange","stop","rone","n1","rn1","getDivisor","MAX_ALLOC","isEncoding","_normalizeEncoding","retried","normalizeEncoding","nenc","text","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","lastChar","utf8CheckByte","byte","utf8CheckIncomplete","utf8CheckExtraBytes","utf8Text","utf8End","ripemd","ripemd160","Sha1","rotl1","bignum","xorTest","calcIv","ck","_finID","toPad","ivBits","writeUIntBE","_ghash","_alen","_authTag","_called","rump","tags","methods","overrided","reverseArgs","useDecoder","contains","_wrap","stateProps","cstate","child","_useArgs","newKey","_decode","wrapResult","prevObj","result","present","prevKey","enterKey","_peekTag","_decodeGeneric","_decodeChoice","enterObject","_decodeTag","track","path","_getUse","leaveObject","exitKey","leaveKey","_decodeList","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeBool","_decodeInt","node","_encodeChoice","_encodePrimitive","PEMEncoder","label","PADDING","equals","padBuff","writeUInt8","tagClass","0","1","2","3","SHA512","SHA384","ArrayBuffer","isView","DERDecoder","PEMDecoder","lines","base64","throwIfNotStringOrBuffer","HashBase","_block","_blockSize","_blockOffset","_length","_finalized","EDDSA","pointClass","keyFromSecret","hashInt","messagePrefix","s_","makeSignature","keyFromPublic","SG","RplusAh","intFromLE","normed","xIsOdd","aesModes","desModes","keyLen","ivLen","arg1","arg2","arg3","ecVerify","dsaVerify","padNum","pubkey","unpacked","checkValue","montp","_inheritsLoose","subClass","superClass","__proto__","createErrorType","getMessage","NodeError","_Base","oneOf","expected","search","pos","substr","endsWith","this_len","substring","actual","determiner","pVersionMajor","VGrid","trim","attrs","classes","domProps","Grid","fluid","blind","getr","blinder","unblinder","prime1","prime2","blinds","blinded","qinv","coefficient","exponent1","m2","exponent2","rotr32","p32","ERR_MISSING_ARGS","destroyer","closed","to","popCallback","streams","pop","destroys","mLen","hLen2","dblen","nonZero","cur","publicKey","readableHwm","readableHighWaterMark","defaultHwm","needMoreData","fromListPartial","list","copyFromBufferString","copyFromBuffer","increasedAwaitDrain","EVP_BytesToKey","keyBits","used","keyStart","ivStart","VBtn","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","ch64_hi","yh","yl","zh","ch64_lo","zl","maj64_hi","maj64_lo","s0_512_hi","c0_hi","c1_hi","c2_hi","s0_512_lo","c0_lo","c1_lo","c2_lo","s1_512_hi","s1_512_lo","g0_512_hi","g0_512_lo","g1_512_hi","g1_512_lo","_prepareBlock","c3_hi","c3_lo","c4_hi","c4_lo","T1_hi","T1_lo","T2_hi","T2_lo","ARRAY16","zr","sl","sr","hr","rotl","fn1","fn2","fn3","fn4","fn5","readInt32LE","ar","br","cr","dr","tl","tr","writeUInt32LE","writeInt32LE","finalSize","_finalSize","accum","assigned","remainder","lowBits","highBits","algorithms","_hashType","_tag","_signType","_importDER","recoveryParam","Position","place","getLength","initial","octetLen","rmPadding","constructLength","octets","log","LN2","slen","backHalf","warned","deprecated","console","trace","warn","localStorage","Sha384","nh","keyPair","fromPrivate","genKeyPair","drbg","ns2","_truncateToN","truncOnly","bkey","getPrivate","ns1","kp","kpX","canonical","sinv","_maxwellTrick","recoverPubKey","isYOdd","isSecondKey","rInv","getKeyRecoveryParam","Q","Qprime","modeModules","ECB","CFB","CFB8","CFB1","OFB","CTR","GCM","_importPrivate","privEnc","_importPublic","pubEnc","reason","compact","derive","sum32_3","Kh","E","Ah","Bh","Dh","Eh","T","rh","sh","_vm","staticRenderFns","baseMixins","mixins","Routable","GroupableFactory","Themeable","ripple","proxyClass","computed","disabled","groupClasses","href","$router","$route","append","click","preventDefault","detail","$el","blur","$emit","toggle","isActive","tabsBar","mandatory","generateRouteLink","role","tabindex","keydown","keyCode","keyCodes","enter","$slots","Bootable","directives","Touch","reverseTransition","transition","required","inTransition","computedTransition","windowGroup","internalReverse","genDefaultSlot","genWindowItem","$createElement","$listeners","onAfterTransition","transitionCount","transitionHeight","onBeforeTransition","convertToUnit","clientHeight","onTransitionCancelled","onEnter","$nextTick","beforeEnter","afterEnter","enterCancelled","beforeLeave","afterLeave","leaveCancelled","showLazyContent","VWindowItem","bias","calculateUpdatedOffset","selectedElement","widths","rtl","currentScrollOffset","clientWidth","offsetLeft","totalWidth","wrapper","itemOffset","additionalOffset","calculateCenteredOffset","offsetCentered","BaseSlideGroup","BaseItemGroup","Mobile","Resize","activeClass","centerActive","nextIcon","prevIcon","showArrows","isOverflowing","resizeTimeout","startX","isSwipingHorizontal","isSwiping","scrollOffset","canTouch","__cachedNext","genTransition","__cachedPrev","hasAffixes","isMobile","hasNext","hasPrev","watch","internalValue","$vuetify","scroll","$refs","style","mounted","ResizeObserver","obs","onResize","observe","$on","disconnect","itemsLength","setWidths","onScroll","scrollLeft","onFocusin","composedPath","vm","items","genNext","slot","$scopedSlots","onAffixClick","genContent","ref","focusin","genData","genIcon","location","icon","upperLocation","hasAffix","VIcon","genPrev","VFadeTransition","genWrapper","overflowCheck","onTouchStart","onTouchMove","onTouchEnd","calculateNewOffset","direction","newAbosluteOffset","scrollTo","_isDestroyed","touchstartX","setProperty","diffX","touchmoveX","diffY","touchmoveY","touchstartY","document","documentElement","overflowY","maxScrollOffset","removeProperty","stopPropagation","scrollIntoView","selectedItem","lastItemPosition","getBoundingClientRect","wrapperPosition","selectedIndex","requestAnimationFrame","provide","slideGroup","SSRBootable","themeClasses","callSlider","isBooted","onRouteChange","oldVal","newPath","oldPath","hasNew","hasOld","continuous","showArrowsOnHover","touch","touchless","vertical","changedByDelimiters","internalHeight","isReverse","axis","hasActiveItems","find","internalIndex","findIndex","getValue","updateReverse","genContainer","genControlIcons","height","lang","large","icons","getNextIndex","nextIndex","getPrevIndex","prevIndex","lastIndex","VWindow","isDark","rootIsDark","Colorable","setBackgroundColor","color","Proxyable","alignWithTitle","backgroundColor","centered","fixedTabs","grow","hideSlider","iconsAndText","mobileBreakpoint","sliderColor","sliderSize","slider","top","transitionTime","isReversed","sliderStyles","computedColor","appIsDark","selectedItems","activeTab","scrollHeight","offsetWidth","offsetTop","scrollWidth","genBar","dark","light","change","setTextColor","VTabsBar","genSlider","genItems","VTabsItems","VTabsSlider","clearTimeout","parseNodes","tab","vnode","componentOptions","Ctor","modifiers","quiet","model","expression","btnToggle","ButtonGroup","borderless","rounded","shaped","tile","PositionableFactory","intersect","active","backgroundOpacity","bufferValue","indeterminate","query","striped","internalLazyValue","isVisible","__cachedBackground","backgroundStyle","__cachedBar","__cachedBarType","__cachedIndeterminate","__cachedDeterminate","__cachedBuffer","styles","normalizedValue","genProgressBar","__cachedStream","normalizedBuffer","parseFloat","opacity","absolute","fixed","reactive","VSlideXTransition","getSlot","genListeners","onClick","offsetX","onObserve","entries","observer","isIntersecting","bottom","VProgressLinear","loading","loaderHeight","genProgress","progress","Loadable","VSheet","flat","hover","img","link","raised","isClickable","background","VCardActions","createSimpleFunctional","VCardText","VCardTitle","inheritAttrs","sortBy","sortDesc","customSort","sortItems","mustSort","multiSort","page","itemsPerPage","groupBy","groupDesc","customGroup","groupItems","locale","disableSort","disablePagination","disableFiltering","customFilter","searchItems","serverItemsLength","internalOptions","wrapInArray","assign","sortDiff","groupDiff","fillArray","filteredItems","pageCount","pageStart","pageStop","isGrouped","pagination","computedItems","paginateItems","groupedItems","scopedProps","sort","sortArray","updateOptions","originalItemsLength","computedOptions","handler","old","deepEqual","deep","immediate","oldBy","oldDesc","by","desc","byIndex","Sizeable","ToggleableFactory","chipGroup","close","closeIcon","closeLabel","draggable","filterIcon","outlined","pill","textColor","isLink","hasClose","sizeableClasses","created","breakingProps","original","replacement","$attrs","breaking","genFilter","VExpandXTransition","genClose","VChip","root","isComment","openDelay","closeDelay","openTimeout","closeTimeout","clearDelay","runDelay","delay","open","Delayable","Toggleable","activator","internalActivator","openOnClick","openOnHover","openOnFocus","activatorElement","activatorNode","events","slotType","getSlotType","consoleError","addActivatorEvents","beforeDestroy","removeActivatorEvents","getActivator","genActivatorListeners","addEventListener","genActivator","getValueProxy","genActivatorAttributes","mouseenter","mouseleave","focus","querySelector","componentInstance","$options","elm","currentTarget","nodeType","ELEMENT_NODE","getContentSlot","removeEventListener","resetActivator","stackElement","stackExclude","stackMinZIndex","activeZIndex","getMaxZIndex","getZIndex","exclude","zis","activeElements","getElementsByClassName","validateAttachTarget","removeActivator","parentNode","removeChild","attach","contentClass","hasDetached","initDetach","hasContent","beforeMount","firstChild","nextSibling","insertBefore","deactivated","isConnected","MutationObserver","record","removedNodes","subtree","childList","getScopeIdAttrs","scopeId","getObjectValueByPath","$vnode","appendChild","consoleWarn","Stackable","positionableFactory","Activatable","Detachable","allowOverflow","maxWidth","minWidth","nudgeBottom","nudgeLeft","nudgeRight","nudgeTop","nudgeWidth","offsetOverflow","positionX","positionY","zIndex","absoluteX","absoluteY","activatedBy","activatorFixed","dimensions","relativeYOffset","hasJustFocused","hasWindow","inputActivator","isContentActive","pageWidth","pageYOffset","stackClass","computedLeft","activatorLeft","isNaN","computedTop","offsetY","hasActivator","absoluteYOffset","callDeactivate","callActivate","updateDimensions","absolutePosition","activate","calcLeft","menuWidth","calcXOverflow","calcTop","calcYOverflow","xOverflow","getOffsetLeft","documentHeight","getInnerHeight","toTop","contentHeight","totalHeight","deactivate","checkForPageYOffset","getOffsetTop","checkActivatorFixed","getComputedStyle","offsetParent","clientX","clientY","innerHeight","pageXOffset","scrollTop","getRoundedBoundedClientRect","rect","measure","marginLeft","marginTop","sneakPeek","display","startTransition","offsetRect","returnValue","originalValue","Dependent","Returnable","Roundable","Menuable","ClickOutside","isInMenu","theme","auto","closeOnClick","closeOnContentClick","disableKeys","maxHeight","origin","calculatedTopAuto","defaultOffset","listIndex","tiles","activeTile","calculatedLeft","calculatedMinWidth","calcLeftAuto","calculatedMaxHeight","calculatedMaxWidth","calculatedTop","hasClickableTiles","tabIndex","transformOrigin","goTo","appOffset","duration","container","remove","removed","calcTopAuto","calcScrollPosition","maxScrollTop","offsetHeight","tileDistanceFromMenuTop","firstTileOffsetTop","changeListIndex","getTiles","down","nextTile","up","prevTile","lastTile","home","firstTile","closeConditional","attributes","onKeyDown","genDirectives","include","getOpenDependentElements","rootThemeClasses","roundedClasses","menuable__content__active","getAttribute","mouseEnterHandler","mouseLeaveHandler","querySelectorAll","relatedTarget","esc","VThemeProvider","VMenu","Ripple","indeterminateIcon","onIcon","offIcon","center","inset","orientation","VDivider","VSubheader","action","hideSelected","itemDisabled","itemText","itemValue","noDataText","noFilter","searchInput","parsedItems","tileActiveClass","staticNoDataTile","mousedown","VListItem","genTileContent","genAction","inputValue","VListItemAction","VSimpleCheckbox","genDivider","genFilteredText","escapeHTML","middle","getMaskedCharacters","genHighlight","genHeader","toLocaleLowerCase","genTile","hasItem","getDisabled","_uid","scopedSlot","needsTile","innerHTML","getText","VListItemContent","VListItemTitle","getPropertyFromItem","divider","VList","focused","functionalThemeClasses","VLabel","genChildren","genMessage","VMessages","RegistrableInject","errorCount","errorMessages","messages","readonly","rules","success","successMessages","validateOnBlur","errorBucket","hasColor","hasFocused","hasInput","isFocused","isResetting","lazyValue","valid","isDisabled","hasError","internalErrorMessages","hasSuccess","internalSuccessMessages","externalError","hasMessages","validationTarget","hasState","shouldValidate","genInternalMessages","internalMessages","form","isInteractive","isReadonly","validations","validationState","newVal","register","unregister","reset","resetValidation","force","rule","BindsAttrs","Validatable","appendIcon","hideDetails","hideSpinButtons","persistentHint","prependIcon","hasMouseDown","showDetails","isLabelActive","isDirty","computedId","hasDetails","messagesToDisplay","hasHint","hasLabel","$_modelEvent","validation","validationResult","beforeCreate","genPrependSlot","genControl","genAppendSlot","title","attrs$","genInputSlot","genMessages","genLabel","extraData","eventName","kebabCase","hasListener","listeners$","mouseup","onMouseDown","onMouseUp","scopedSlots","genSlot","prepend","VInput","isGreater","VCounter","intersectable","Intersect","inserted","unbind","onVisible","Intersectable","dirtyTypes","resize","appendOuterIcon","autofocus","clearable","clearIcon","counter","counterValue","filled","fullWidth","placeholder","prependInnerIcon","persistentPlaceholder","singleLine","solo","soloInverted","suffix","badInput","labelWidth","prefixWidth","prependWidth","initialValue","isClearing","isSingle","isSolo","isEnclosed","computedCounterValue","hasCounter","labelPosition","labelValue","showLabel","setLabelWidth","setPrefixWidth","$watch","tryAutofocus","onFocus","clearableCallback","genPrependInnerSlot","genIconSlot","genClearIcon","genCounter","maxlength","genFieldset","genTextFieldSlot","genLegend","span","genInput","inputAttrs","is","onBlur","onInput","messagesNode","counterNode","genAffix","attachedRoot","activeElement","validity","setPrependWidth","updateValue","defaultMenuProps","VTextField","Comparable","Filterable","cacheItems","chips","deletableChips","disableLookup","eager","itemColor","menuProps","multiple","openOnClear","returnObject","smallChips","cachedItems","menuIsBooted","isMenuActive","lastItem","keyboardLookupPrefix","keyboardLookupLastTime","allItems","filterDuplicates","hasChips","computedOwns","dynamicHeight","hasSlot","selection","listData","context","_scopeId","virtualizedItems","select","selectItem","staticList","VSelectList","$_menuProps","menuCanShow","normalisedProps","setSelectedItems","menu","onMenuActiveChange","setMenuIndex","activateMenu","setValue","getContent","uniqueValues","has","findExistingIndex","valueComparator","genChipSelection","small","onChipInput","genCommaSelection","selections","genSelections","genHiddenInput","genMenu","autocomplete","keypress","onKeyPress","genList","genListWithSlot","slots","slotName","genSelection","genSlotSelection","selected","getMenuIndex","isAppendInner","onEscDown","KEYBOARD_LOOKUP_THRESHOLD","now","performance","space","onUpDown","onTabDown","onSpaceDown","which","showMoreItems","appendInner","itemsPerPageOptions","firstIcon","lastIcon","itemsPerPageText","itemsPerPageAllText","showFirstLastPage","showCurrentPage","disableItemsPerPage","pageText","disableNextPageIcon","computedDataItemsPerPageOptions","option","genDataItemsPerPageOption","onFirstPage","onPreviousPage","onNextPage","onLastPage","onChangeItemsPerPage","genItemsPerPageSelect","computedIPPO","ippo","VSelect","genPaginationInfo","genIcons","before","after","VData","itemKey","singleSelect","expanded","singleExpand","noResultsText","loadingText","hideDefaultFooter","footerProps","selectableKey","expansion","internalCurrentItems","shiftKeyDown","lastEntry","everyItem","selectableItems","every","isSelected","someItems","sanitizedFooterProps","camelizeObjectKeys","isSelectable","removedProps","onKeyUp","toggleSelectAll","lastEntryKey","lastEntryKeySelected","multipleSelect","currentItem","isExpanded","createItemProps","genEmptyWrapper","genEmpty","filteredItemsLength","noData","noResults","empty","genFooter","getPrefixedScopedSlots","VDataFooter","genDefaultScopedSlot","outerProps","$props","headers","checkboxColor","sortIcon","showGroupBy","genSelectAll","genSortIcon","sortByText","genSortChip","sortIndex","beingSorted","isDesc","sortable","asc","genSortSelect","sortHeaders","th","genGroupByToggle","getAria","$t","ariaSort","ariaLabel","scope","groupable","dedupeModelListeners","rebuildFunctionalSlots","mobile","rebuildSlots","VDataTableHeaderMobile","VDataTableHeaderDesktop","needsTd","computedSlots","columns","regularSlot","textAlign","cellClass","headerClass","summaryClass","fixedHeader","hideDefaultHeader","mobileRowChildren","filterFn","searchTableItems","headersWithCustomFilters","headersWithoutCustomFilters","matchesColumnFilters","defaultFilter","matchesSearchTerm","VDataIterator","showSelect","showExpand","caption","headerProps","calculateWidths","headersLength","expandIcon","itemClass","internalGroupBy","openCache","computedHeaders","defaultHeader","colspanAttrs","colspan","columnSorters","filterable","sanitizedHeaderProps","computedItemsPerPage","firstOption","groupByText","calcWidths","customFilterWithColumns","customSortWithHeaders","genCaption","genColgroup","genLoading","genHeaders","VDataTableHeader","genGroupedRows","genRows","$set","genDefaultGroupedRow","isOpen","toggleFn","removeFn","column","RowGroup","genScopedRows","genDefaultRows","rows","genDefaultExpandedRow","genDefaultSimpleRow","headerRow","expandedRow","MobileRow","Row","mergeClasses","contextmenu","dblclick","genBody","genFoot","foot","genFooters","simpleProps","VSimpleTable","proxySlot","Overlayable","fullscreen","noClickAnimation","persistent","retainFocus","scrollable","animate","animateTimeout","previousActiveElement","contentClasses","show","hideScroll","removeOverlay","showScroll","genOverlay","animateClick","overlay","hideOverlay","dialog","onClickOutside","onKeydown","getOpenDependents","focusable","hasAttribute","genInnerContent","appear","RegistrableProvide","lazyValidation","inputs","watchers","errorBag","errors","watchInput","watcher","resetErrorBag","found","unwatch","$delete","novalidate","submit","autoGrow","noResize","rowHeight","noResizeHandle","calculateInputHeight","minHeight","filter_change","staticStyle","$event","_u","_s","form_valid","cur_member","$$v","rawName","dateRules","note","save_member","_v","email_form","to_rules","email_data","subject","update_ready","email_to_list","to_address","other_recipient","dialog_title","current_items","members","members_orig","toggle_exclusive","new_member","sworn_memberId","last_name","first_name","email","rpd_number","division","cert_date","exp_date","last_score","nameRules","emailRules","subject_rules","message1","alert","print","arr_ids","ids","certify_sworn","certify_sworn_now","formIn","lst_sworn_memberIds","dispatch","email_form_show","email_cur_items_now","email_cur_items","assign_tests_now","assign_tests","delete_member_now","delete_member","remove_member_temp","edit_member","open_dialog","current_items_change","st_plus","end_plus","past_due","badmems","readymems","ready_now","getSwornMembers","member","$moment","format","component","save_rec_member","record_memberId","certify_recs","certify_recs_now","lst_record_memberIds","getRecordMembers","components","sworn","records","_self","refreshTimer","showtimeout","loginURL","timeoutURL","token","auth","roles","rpduserId","local_roleId","confirmButtonText","confirmButtonColor","timer","didClose","user","xtabs","sendRequest","isSurrogatePair","htonl","zero8","join32","safer","Safer","kStringMaxLength","binding","MAX_LENGTH","MAX_STRING_LENGTH","derDecodeTag","oct","tagStr","derDecodeLen","decodedTag","_skipUntilEnd","possibleEnd","fromCharCode","readUInt16BE","numstr","printstr","identifiers","subident","second","year","mon","day","hour","sec","UTC","_getDecoder","ReporterError","rethrow","pathLen","inherited","elem","stack","partial","captureStackTrace","EE","_isStdio","didOnEnd","asyncWrite","writableHwm","writableHighWaterMark","sizes","rmd160","saltLen","getDigest","ipad1","ipad2","shaFunc","rmd160Func","DK","block1","destPos","run","U","ECDH","aliases","secp256k1","secp224r1","prime256v1","prime192v1","ed25519","secp384r1","secp521r1","curveType","p256","secp256r1","secp192r1","p384","p521","inenc","otherPub","getNAF","getJSF","BaseCurve","_wnafT1","_wnafT2","_wnafT3","_wnafT4","_bitLength","adjustCount","_getDoubles","I","nafW","repr","nafPoints","_getNAFPoints","defW","wndWidth","comb","jsf","ja","jb","encodeCompressed","power","pending","pendingTotal","_delta8","_delta32","api","Entity","_createNamed","Generated","_initNamed","minAssert","minUtils","m8","d1","d2","m14","m24","computer","i2ops","fnF","fnG","fnH","fnI","ReflectOwnKeys","Reflect","ReflectApply","receiver","ProcessEmitWarning","warning","getOwnPropertyNames","NumberIsNaN","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","listener","_getMaxListeners","that","_addListener","existing","newListener","onceWrapper","fired","wrapFn","_onceWrap","wrapped","_listeners","unwrap","evlistener","unwrapListeners","arrayClone","spliceOne","errorListener","resolver","eventTargetAgnosticAddListener","addErrorHandlerIfEventEmitter","flags","wrapListener","setMaxListeners","getMaxListeners","doError","prependOnceListener","originalListener","rawListeners","eventNames","deciphers","_rand","getBytes","getByte"],"mappings":"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c,OAAO4B,OAAOje,EAAUG,UAAW,CAClDC,YAAa,CACXqc,MAAO1c,EACPykB,YAAY,EACZgK,UAAU,EACVjK,cAAc,OAOtBvjB,EAAO1B,QAAU,SAAkBS,EAAMC,GACvC,GAAIA,EAAW,CACbD,EAAKE,OAASD,EACd,IAAIE,EAAW,aACfA,EAASC,UAAYH,EAAUG,UAC/BJ,EAAKI,UAAY,IAAID,EACrBH,EAAKI,UAAUC,YAAcL,K,uCCvBnCiB,EAAO1B,QAAU,CACfw/B,QAAS,CACPC,KAAM,EACNb,OAAQ,CACN,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,kEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,sEAINW,IAAK,CACH/kB,IAAK,EACLokB,OAAQ,CACN,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,iEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE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,cACAC,mBACA7kE,smBAWAskE,cACAQ,0BACAjD,UACAkD,iBACAC,WACAC,gBACA/zC,UACAg0C,wBACAC,YACAC,iBACAC,aACAC,cACAC,SACAC,cACAC,YACAnjF,UACAojF,uBACAC,sBACA3sC,sBACAmrC,QACAyB,eAEA7B,YACAqB,iBACAC,aACAC,cACAC,SACAC,cACAC,YACAnjF,aACAojF,qBACAC,oBACA3sC,oBACAmrC,QACAyB,eAEAzL,SACA,CAAA3xC,QAAAvwC,gBAAA6iF,aAEA,CAAAtyC,UAAAvwC,uBAAA6L,iBACA,CACA0kC,YACA1kC,cACA7L,mBAEA,CAAAuwC,aAAAvwC,oBACA,CAAAuwC,aAAAvwC,eACA,CAAAuwC,YAAAvwC,oBACA,CAAAuwC,cAAAvwC,gBACA,CAAAuwC,iBAAAvwC,mBACA,CAAAuwC,eAAAvwC,kBACA,CAAAuwC,gBAAAvwC,kBACA,CAAAuwC,kBAAAvwC,mBACA,CAAAuwC,gBAAAvwC,iBAAAtV,cACA,CAAA6lD,gBAAAvwC,iBAGA4tF,WACA1xE,2BACAA,yDAEA+vE,uCACA4B,YACA3xE,GACA,uDACA,wBAEAowE,mEACAwB,oDAGAn7C,SACAo7C,WACAC,wCAEAC,QACA,SACA,KACA,6CACA,8BACAC,yBAEAC,cACA1pG,8BAEA2pG,gBACA,WACA,gBACA,0BACA,2BACA,0BACA,gBACA,YACA,WAEA9lG,wBAEA,KACA,MACA,gBAGA+lG,oBACA,qBACA,SACAC,qCACAA,qCACA,SACA,6CACA,8BACAC,yBAGAD,wBAEAA,8BACA,WACA,YACAE,SAAA,SAAAF,GACAn1E,KAAA5a,IACAjW,oBACAA,oBAEA8wB,MAAAj2B,IACA,qBACA,8CAGAsrG,kBACA,8BACA,6CACA,8BACA,yCAEA,kEACA,oBAEAC,sBACA,qBACA,SACAJ,qCACAA,qCACAA,6BACA,SACA,6CACA,8BACAC,yBAGAD,wBAEAA,gCACA,WACA,YACAE,SAAA,SAAAF,GACAn1E,KAAA5a,IACAjW,gBACAA,oBACAA,kBACA,cACA,eACA,8BACA,UACA,KACA,QAGA8wB,MAAAj2B,IACA,qBACA,8CAGAwrG,kBACA,WACA,gBACA,sBACA,oCACA,0BACA,gBACA,YACA,WAEArmG,sBAEA,KACA,MACA,gBAGAsmG,mBACA,qBACA,SACAN,qCACAA,qCACA,SACA,6CACA,8BACAC,yBAGAD,wBAEAA,6BACA,WACA,YACAE,SAAA,SAAAF,GACAn1E,KAAA5a,IACAjW,oBACAA,oBAEA8wB,MAAAj2B,IACA,qBACA,8CAGA0rG,eACA,WACA,gBACA,uBACA,qCACA,0BACA,gBACA,YACA,WAEAvmG,uBAEA,KACA,MACA,gBAGAwmG,oBACA,qBACA,SACAR,qCACAA,qCACAA,gDAEAA,8BACA,WACA,YACAE,SAAA,SAAAF,GACAn1E,KAAA5a,IACAjW,oBACAA,kBACAA,YACA,iEAEA8wB,MAAAj2B,IACAmF,YACA,qBACA,8CAGAymG,gBACA,WACA,gBACA,yBACA,iCACA,2BACA,IACA,0BACA,MACA,YACA,WAEAzmG,wBAEA,KACA,MACA,gBAGA0mG,sBAGA,6BACAp/E,wCAEA,MACA,0BAOAq/E,eACA,gCACA,4BACA,gBAEAz+D,UAGA,6DACA,oBAGA,oDAEA27D,cACA,iCAQA,OAPA,cACA,cACA,sCACA,UACA,KACA,OAEA,EAEA,IACA,wCACA,yCACA,sCASA,OAPA,cACA,cACA,uDACA,UACA,KACA,OAEA,EAEA,qBACA,SACAmC,qCACAA,qCACAA,uCAEAA,wBACA,WACA,YACAE,SAAA,SAAAF,GACAn1E,KAAA5a,IACAjW,oBACAA,kBACAA,YACA,+DAEA8wB,MAAAj2B,IACAmF,YACA,qBACA,cACA,wBACAnF,MACA,UACA,KACA,SAIA+rG,cACA,+BACA,0CACA,gBAEAC,wBAEA,sBACA,qDACA,WACA,+BACA5sC,oBAEAA,wBAGAipC,iBAEA,eACA,WACA,sCACA,oCACA,2BAGA,OAFAljG,mCAEA,GACA,WACAA,mCAEA,MACA,gBACA,qCACA,qCACA,WAIA,MACA,iBACA,qCACA,wCACA,WAIA,MACA,iBAGA,0CACA,oCACA8mG,aACAC,aACA,qCACA,wCAC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wC,gBAAAvwC,iBAAAtV,cACA,CAAA6lD,gBAAAvwC,iBAGA4tF,WACA1xE,2BACAA,yDAEA+vE,uCACA4B,YACA3xE,GACA,uDACA,wBAEAowE,mEACAwB,oDAGAn7C,SACAo7C,WACAC,wCAEAC,QACA,SACA,KACA,6CACA,8BACAC,0BAEAC,cACA1pG,kCAEAwrG,eACA,WACA,gBACA,0BACA,2BACA,0BACA,gBACA,YACA,WAEA3nG,uBAEA,KACA,MACA,gBAGA4nG,mBACA,qBACA,SACA5B,qCACAA,qCACA,SACA,6CACA,8BACA6B,0BAGA7B,yBAEAA,6BACA,WACA,YACAE,SAAA,SAAAF,GACAn1E,KAAA5a,IACAjW,qBACAA,oBAEA8wB,MAAAj2B,IACA,qBACA,8CAGAsrG,kBACA,8BACA,6CACA,8BACA,yCAEA,kEACA,oBAEAC,sBACA,qBACA,SACAJ,qCACAA,qCACAA,6BACA,SACA,6CACA,8BACA6B,0BAGA7B,yBAEAA,gCACA,WACA,YACAE,SAAA,SAAAF,GACAn1E,KAAA5a,IACAjW,gBACAA,qBACAA,kBACA,4DAEA8wB,MAAAj2B,IACA,qBACA,8CAGAwrG,kBACA,WACA,gBACA,sBACA,oCACA,0BACA,gBACA,YACA,WAEArmG,sBAEA,KACA,MACA,gBAGAsmG,mBACA,qBACA,SACAN,qCACAA,qCACA,SACA,6CACA,8BACA6B,0BAGA7B,yBAEAA,iCACA,WACA,YACAE,SAAA,SAAAF,GACAn1E,KAAA5a,IACAjW,qBACAA,oBAEA8wB,MAAAj2B,IACA,qBACA,8CAGA0rG,eACA,WACA,gBACA,uBACA,qCACA,0BACA,gBACA,YACA,WAEAvmG,uBAEA,KACA,MACA,gBAGAwmG,oBACA,qBACA,SACAR,qCACAA,qCACAA,kDAEAA,kCACA,WACA,YACAE,SAAA,SAAAF,GACAn1E,KAAA5a,IACAjW,qBACAA,kBACAA,YACA,iEAEA8wB,MAAAj2B,IACAmF,YACA,qBACA,8CAGAymG,gBACA,WACA,gBACA,yBACA,iCACA,2BACA,IACA,0BACA,MACA,YACA,WAEAzmG,wBAEA,KACA,MACA,gBAGA0mG,sBAGA,6BACAp/E,0CAEA,MACA,0BAOAq/E,eACA,gCACA,4BACA,gBAEAz+D,UAGA,6DACA,oBAGA,oDAEAu/D,kBACA,iCAQA,OAPA,cACA,cACA,sCACA,UACA,KACA,OAEA,EAEA,IACA,wCACA,yCACA,sCASA,OAPA,cACA,cACA,uDACA,UACA,KACA,OAEA,EAEA,qBACA,SACAzB,qCACAA,qCACAA,6BAEAA,4BACA,WACA,YACAE,SAAA,SAAAF,GACAn1E,KAAA5a,IACAjW,qBACAA,kBACAA,YACA,+DAEA8wB,MAAAj2B,IACAmF,YACA,qBACA,cACA,wBACAnF,MACA,UACA,KACA,SAIA+rG,cACA,+BACA,0CACA,gBAEAC,wBAEA,sBACA,qDACA,WACA,+BACA5sC,oBAEAA,wBAQAipC,iBAEA,eACA,WACA,sCACA,oCACA,2BAGA,OAFAljG,mCAEA,GACA,WACAA,mCAEA,MACA,gBACA,qCACA,qCACA,WAIA,MACA,iBASA,qCACA,wCACA,WAIA,MACA,iBAGA,0CACA,oCACA8mG,aACAC,aACA,qCACA,wCACA,WAIA,MACA,eAGA,qCACA,oCACA,WAGA,MAEA,cAIA,qCACA,8CACA,WASA9sC,8BACA,MAEA,cAGA,SACA,IACA,qCACA,8CACA,WAIA,yCACA,0BAEA,0BACA3yC,0CAEA,MAGA,qCACAtnB,kBAKA,qCACA,wBACA,WAIAA,8DAEAA,+BACA,SACAi6D,eAEA,MAWA,eACA,SACA,WACA,uBACA,uCACA,wBACA,2BACA+sC,0BAEA,6CACA,KACAC,UAIA,yBAEA,MACA,cAEA,SAEA,uCACA,wBAIA,sBACAC,UAGA,yBACA,MAGA,2CAEAC,YACA,sBAEAW,mBACA,qBACA,wBACA,SACA9B,qCACAA,qCACAA,6BACA,WACA,YACAE,SAAA,SAAAF,GACAn1E,KAAA5a,IACAjW,sBACA,oCACA,mBACAqnG,uBACAA,cACAC,QAAAD,aACAE,OAAA,cAEAF,aACAC,QAAAD,YACAE,OAAA,cAEAF,aACAC,QAAAD,YACAE,OAAA,cAEAF,cACAC,QAAAD,aACAE,OAAA,cAEAF,kDAEArnG,gCAEAA,kBACA,mBAEA8wB,MAAAj2B,IACA,qBACA,8CAGAyf,OACA,0BAGA4pD,UACA,oBACA,gBCtiCiV,MCQ7U,I,UAAY,gBACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCeA,IACf6jC,YACAC,SACAC,YAEAhyF,OACA,OACAhD,aACA85D,SACA/H,OACA,CAAA+H,YAAAzsC,iBACA,CAAAysC,cAAAzsC,uBC7C+U,MCQ3U,I,UAAY,gBACd,GACA,EACA,GACA,EACA,KACA,WACA,OAIa,M,QCnBX7b,GAAS,WAAkB,IAAI64C,EAAI3hE,KAAKmf,EAAGwiD,EAAI4qC,MAAMptF,GAAG,OAAOA,EAAG,QAElEyiD,GAAkB,GCkBP,IACftqD,YACAwqD,gBACAsqC,cACA9xF,OACA,OACAvM,cACAy+F,kBACAC,eAEAC,SACA,0EACAC,WACA,oEAGApkC,UACA,WACA/nE,uCAGA,oBACA,WACA,yCACA,QACA6D,8BACAA,4BACA,CACA,OAAAuoG,oCAEA,YACArC,SAAA,WAAAnd,GACAl4D,KAAA5a,IACAgkD,qBACA,OACA+qC,cACArjE,0BACA6mE,QACAD,cACAE,cACAC,sBACAC,6BAGA,kCAEA73E,MAAAmP,IACA,aACAjgC,kBACA,YACAkrF,qBACAjjC,qGACA0d,eACAijC,uBACAC,6BACAC,UACAC,kBAKA,MAGA1zB,UACA,WACAl5E,qCAGA,8BACA,+BACA,OAEA,qBACA,OACA6D,kBACA,YACAkrF,yBACAjjC,qGACA0d,eACAijC,uBACAC,6BACAC,UACAC,iBAEA,CAEA,oBAEA,GACAR,SAGA,OAEA,YACArC,SAAA,WAAAnd,GACAl4D,KAAA5a,IACAgkD,qBACA,OACA+qC,cACArjE,0BACA6mE,QACAD,QACAE,cACAC,sBACAC,6BAGA,iCAGA,oCACA3oG,kBACA,YACAkrF,qBACAjjC,KACA,UACA+gD,QACA,6DACArjC,eACAijC,uBACAC,6BACAC,UACAC,gBAIAj4E,MAAAmP,IACA,aACAjgC,kBACA,YACAkrF,yBACAjjC,qGACA0d,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","file":"js/chunk-59034079.ffa8b5d6.js","sourcesContent":["var generatePrime = require('./lib/generatePrime')\nvar primes = require('./lib/primes.json')\n\nvar DH = require('./lib/dh')\n\nfunction getDiffieHellman (mod) {\n var prime = new Buffer(primes[mod].prime, 'hex')\n var gen = new Buffer(primes[mod].gen, 'hex')\n\n return new DH(prime, gen)\n}\n\nvar ENCODINGS = {\n 'binary': true, 'hex': true, 'base64': true\n}\n\nfunction createDiffieHellman (prime, enc, generator, genc) {\n if (Buffer.isBuffer(enc) || ENCODINGS[enc] === undefined) {\n return createDiffieHellman(prime, 'binary', enc, generator)\n }\n\n enc = enc || 'binary'\n genc = genc || 'binary'\n generator = generator || new Buffer([2])\n\n if (!Buffer.isBuffer(generator)) {\n generator = new Buffer(generator, genc)\n }\n\n if (typeof prime === 'number') {\n return new DH(generatePrime(prime, generator), generator, true)\n }\n\n if (!Buffer.isBuffer(prime)) {\n prime = new Buffer(prime, enc)\n }\n\n return new DH(prime, generator, true)\n}\n\nexports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffieHellman = getDiffieHellman\nexports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman\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 if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\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 this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\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 parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\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 // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\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 this.strip();\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 if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\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","exports.encrypt = function (self, block) {\n return self._cipher.encryptBlock(block)\n}\n\nexports.decrypt = function (self, block) {\n return self._cipher.decryptBlock(block)\n}\n","'use strict';\n\nvar assert = require('minimalistic-assert');\n\nfunction Cipher(options) {\n this.options = options;\n\n this.type = this.options.type;\n this.blockSize = 8;\n this._init();\n\n this.buffer = new Array(this.blockSize);\n this.bufferOff = 0;\n}\nmodule.exports = Cipher;\n\nCipher.prototype._init = function _init() {\n // Might be overrided\n};\n\nCipher.prototype.update = function update(data) {\n if (data.length === 0)\n return [];\n\n if (this.type === 'decrypt')\n return this._updateDecrypt(data);\n else\n return this._updateEncrypt(data);\n};\n\nCipher.prototype._buffer = function _buffer(data, off) {\n // Append data to buffer\n var min = Math.min(this.buffer.length - this.bufferOff, data.length - off);\n for (var i = 0; i < min; i++)\n this.buffer[this.bufferOff + i] = data[off + i];\n this.bufferOff += min;\n\n // Shift next\n return min;\n};\n\nCipher.prototype._flushBuffer = function _flushBuffer(out, off) {\n this._update(this.buffer, 0, out, off);\n this.bufferOff = 0;\n return this.blockSize;\n};\n\nCipher.prototype._updateEncrypt = function _updateEncrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n\n var count = ((this.bufferOff + data.length) / this.blockSize) | 0;\n var out = new Array(count * this.blockSize);\n\n if (this.bufferOff !== 0) {\n inputOff += this._buffer(data, inputOff);\n\n if (this.bufferOff === this.buffer.length)\n outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Write blocks\n var max = data.length - ((data.length - inputOff) % this.blockSize);\n for (; inputOff < max; inputOff += this.blockSize) {\n this._update(data, inputOff, out, outputOff);\n outputOff += this.blockSize;\n }\n\n // Queue rest\n for (; inputOff < data.length; inputOff++, this.bufferOff++)\n this.buffer[this.bufferOff] = data[inputOff];\n\n return out;\n};\n\nCipher.prototype._updateDecrypt = function _updateDecrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n\n var count = Math.ceil((this.bufferOff + data.length) / this.blockSize) - 1;\n var out = new Array(count * this.blockSize);\n\n // TODO(indutny): optimize it, this is far from optimal\n for (; count > 0; count--) {\n inputOff += this._buffer(data, inputOff);\n outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Buffer rest of the input\n inputOff += this._buffer(data, inputOff);\n\n return out;\n};\n\nCipher.prototype.final = function final(buffer) {\n var first;\n if (buffer)\n first = this.update(buffer);\n\n var last;\n if (this.type === 'encrypt')\n last = this._finalEncrypt();\n else\n last = this._finalDecrypt();\n\n if (first)\n return first.concat(last);\n else\n return last;\n};\n\nCipher.prototype._pad = function _pad(buffer, off) {\n if (off === 0)\n return false;\n\n while (off < buffer.length)\n buffer[off++] = 0;\n\n return true;\n};\n\nCipher.prototype._finalEncrypt = function _finalEncrypt() {\n if (!this._pad(this.buffer, this.bufferOff))\n return [];\n\n var out = new Array(this.blockSize);\n this._update(this.buffer, 0, out, 0);\n return out;\n};\n\nCipher.prototype._unpad = function _unpad(buffer) {\n return buffer;\n};\n\nCipher.prototype._finalDecrypt = function _finalDecrypt() {\n assert.equal(this.bufferOff, this.blockSize, 'Not enough data to decrypt');\n var out = new Array(this.blockSize);\n this._flushBuffer(out, 0);\n\n return this._unpad(out);\n};\n","'use strict';\n\nconst constants = exports;\n\n// Helper\nconstants._reverse = function reverse(map) {\n const res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n const value = map[key];\n res[value] = key;\n });\n\n return res;\n};\n\nconstants.der = require('./der');\n","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\n\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\n\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n\n return Math.floor(hwm);\n } // Default value\n\n\n return state.objectMode ? 16 : 16 * 1024;\n}\n\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./xtabs.vue?vue&type=style&index=0&id=3e6be587&prod&lang=scss&scoped=true&\"","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha, Hash)\n\nSha.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha\n","module.exports = require('./lib/_stream_duplex.js');\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n'use strict';\n\nmodule.exports = Transform;\n\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n\nvar Duplex = require('./_stream_duplex');\n\nrequire('inherits')(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n}; // This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n}; // Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}","var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\n\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._mode = mode\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n return this._mode.encrypt(this, chunk, this._decrypt)\n}\n\nStreamCipher.prototype._final = function () {\n this._cipher.scrub()\n}\n\nmodule.exports = StreamCipher\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\nrequire('inherits')(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","exports['des-ecb'] = {\n key: 8,\n iv: 0\n}\nexports['des-cbc'] = exports.des = {\n key: 8,\n iv: 8\n}\nexports['des-ede3-cbc'] = exports.des3 = {\n key: 24,\n iv: 8\n}\nexports['des-ede3'] = {\n key: 24,\n iv: 0\n}\nexports['des-ede-cbc'] = {\n key: 16,\n iv: 8\n}\nexports['des-ede'] = {\n key: 16,\n iv: 0\n}\n","'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new 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","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar proto = {};\n\nfunction CBCState(iv) {\n assert.equal(iv.length, 8, 'Invalid IV length');\n\n this.iv = new Array(8);\n for (var i = 0; i < this.iv.length; i++)\n this.iv[i] = iv[i];\n}\n\nfunction instantiate(Base) {\n function CBC(options) {\n Base.call(this, options);\n this._cbcInit();\n }\n inherits(CBC, Base);\n\n var keys = Object.keys(proto);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n CBC.prototype[key] = proto[key];\n }\n\n CBC.create = function create(options) {\n return new CBC(options);\n };\n\n return CBC;\n}\n\nexports.instantiate = instantiate;\n\nproto._cbcInit = function _cbcInit() {\n var state = new CBCState(this.options.iv);\n this._cbcState = state;\n};\n\nproto._update = function _update(inp, inOff, out, outOff) {\n var state = this._cbcState;\n var superProto = this.constructor.super_.prototype;\n\n var iv = state.iv;\n if (this.type === 'encrypt') {\n for (var i = 0; i < this.blockSize; i++)\n iv[i] ^= inp[inOff + i];\n\n superProto._update.call(this, iv, 0, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++)\n iv[i] = out[outOff + i];\n } else {\n superProto._update.call(this, inp, inOff, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++)\n out[outOff + i] ^= iv[i];\n\n for (var i = 0; i < this.blockSize; i++)\n iv[i] = inp[inOff + i];\n }\n};\n","var parseKeys = require('parse-asn1')\nvar mgf = require('./mgf')\nvar xor = require('./xor')\nvar BN = require('bn.js')\nvar crt = require('browserify-rsa')\nvar createHash = require('create-hash')\nvar withPublic = require('./withPublic')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function privateDecrypt (privateKey, enc, reverse) {\n var padding\n if (privateKey.padding) {\n padding = privateKey.padding\n } else if (reverse) {\n padding = 1\n } else {\n padding = 4\n }\n\n var key = parseKeys(privateKey)\n var k = key.modulus.byteLength()\n if (enc.length > k || new BN(enc).cmp(key.modulus) >= 0) {\n throw new Error('decryption error')\n }\n var msg\n if (reverse) {\n msg = withPublic(new BN(enc), key)\n } else {\n msg = crt(enc, key)\n }\n var zBuffer = Buffer.alloc(k - msg.length)\n msg = Buffer.concat([zBuffer, msg], k)\n if (padding === 4) {\n return oaep(key, msg)\n } else if (padding === 1) {\n return pkcs1(key, msg, reverse)\n } else if (padding === 3) {\n return msg\n } else {\n throw new Error('unknown padding')\n }\n}\n\nfunction oaep (key, msg) {\n var k = key.modulus.byteLength()\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n var hLen = iHash.length\n if (msg[0] !== 0) {\n throw new Error('decryption error')\n }\n var maskedSeed = msg.slice(1, hLen + 1)\n var maskedDb = msg.slice(hLen + 1)\n var seed = xor(maskedSeed, mgf(maskedDb, hLen))\n var db = xor(maskedDb, mgf(seed, k - hLen - 1))\n if (compare(iHash, db.slice(0, hLen))) {\n throw new Error('decryption error')\n }\n var i = hLen\n while (db[i] === 0) {\n i++\n }\n if (db[i++] !== 1) {\n throw new Error('decryption error')\n }\n return db.slice(i)\n}\n\nfunction pkcs1 (key, msg, reverse) {\n var p1 = msg.slice(0, 2)\n var i = 2\n var status = 0\n while (msg[i++] !== 0) {\n if (i >= msg.length) {\n status++\n break\n }\n }\n var ps = msg.slice(2, i - 1)\n\n if ((p1.toString('hex') !== '0002' && !reverse) || (p1.toString('hex') !== '0001' && reverse)) {\n status++\n }\n if (ps.length < 8) {\n status++\n }\n if (status) {\n throw new Error('decryption error')\n }\n return msg.slice(i)\n}\nfunction compare (a, b) {\n a = Buffer.from(a)\n b = Buffer.from(b)\n var dif = 0\n var len = a.length\n if (a.length !== b.length) {\n dif++\n len = Math.min(a.length, b.length)\n }\n var i = -1\n while (++i < len) {\n dif += (a[i] ^ b[i])\n }\n return dif\n}\n","import './VGrid.sass'\n\nimport Vue, { PropOptions } from 'vue'\nimport mergeData from '../../util/mergeData'\nimport { upperFirst } from '../../util/helpers'\n\n// no xs\nconst breakpoints = ['sm', 'md', 'lg', 'xl']\n\nconst ALIGNMENT = ['start', 'end', 'center']\n\nfunction makeProps (prefix: string, def: () => PropOptions) {\n return breakpoints.reduce((props, val) => {\n props[prefix + upperFirst(val)] = def()\n return props\n }, {} as Dictionary)\n}\n\nconst alignValidator = (str: any) => [...ALIGNMENT, 'baseline', 'stretch'].includes(str)\nconst alignProps = makeProps('align', () => ({\n type: String,\n default: null,\n validator: alignValidator,\n}))\n\nconst justifyValidator = (str: any) => [...ALIGNMENT, 'space-between', 'space-around'].includes(str)\nconst justifyProps = makeProps('justify', () => ({\n type: String,\n default: null,\n validator: justifyValidator,\n}))\n\nconst alignContentValidator = (str: any) => [...ALIGNMENT, 'space-between', 'space-around', 'stretch'].includes(str)\nconst alignContentProps = makeProps('alignContent', () => ({\n type: String,\n default: null,\n validator: alignContentValidator,\n}))\n\nconst propMap = {\n align: Object.keys(alignProps),\n justify: Object.keys(justifyProps),\n alignContent: Object.keys(alignContentProps),\n}\n\nconst classMap = {\n align: 'align',\n justify: 'justify',\n alignContent: 'align-content',\n}\n\nfunction breakpointClass (type: keyof typeof propMap, prop: string, val: string) {\n let className = classMap[type]\n if (val == null) {\n return undefined\n }\n if (prop) {\n // alignSm -> Sm\n const breakpoint = prop.replace(type, '')\n className += `-${breakpoint}`\n }\n // .align-items-sm-center\n className += `-${val}`\n return className.toLowerCase()\n}\n\nconst cache = new Map()\n\nexport default Vue.extend({\n name: 'v-row',\n functional: true,\n props: {\n tag: {\n type: String,\n default: 'div',\n },\n dense: Boolean,\n noGutters: Boolean,\n align: {\n type: String,\n default: null,\n validator: alignValidator,\n },\n ...alignProps,\n justify: {\n type: String,\n default: null,\n validator: justifyValidator,\n },\n ...justifyProps,\n alignContent: {\n type: String,\n default: null,\n validator: alignContentValidator,\n },\n ...alignContentProps,\n },\n render (h, { props, data, children }) {\n // Super-fast memoization based on props, 5x faster than JSON.stringify\n let cacheKey = ''\n for (const prop in props) {\n cacheKey += String((props as any)[prop])\n }\n let classList = cache.get(cacheKey)\n\n if (!classList) {\n classList = []\n // Loop through `align`, `justify`, `alignContent` breakpoint props\n let type: keyof typeof propMap\n for (type in propMap) {\n propMap[type].forEach(prop => {\n const value: string = (props as any)[prop]\n const className = breakpointClass(type, prop, value)\n if (className) classList!.push(className)\n })\n }\n\n classList.push({\n 'no-gutters': props.noGutters,\n 'row--dense': props.dense,\n [`align-${props.align}`]: props.align,\n [`justify-${props.justify}`]: props.justify,\n [`align-content-${props.alignContent}`]: props.alignContent,\n })\n\n cache.set(cacheKey, classList)\n }\n\n return h(\n props.tag,\n mergeData(data, {\n staticClass: 'row',\n class: classList,\n }),\n children\n )\n },\n})\n","module.exports = require('./browser/algorithms.json')\n","'use strict'\n\n// limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\nvar MAX_BYTES = 65536\n\n// Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\nvar MAX_UINT32 = 4294967295\n\nfunction oldBrowser () {\n throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11')\n}\n\nvar Buffer = require('safe-buffer').Buffer\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n module.exports = randomBytes\n} else {\n module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n // phantomjs needs to throw\n if (size > MAX_UINT32) throw new RangeError('requested too many random bytes')\n\n var bytes = Buffer.allocUnsafe(size)\n\n if (size > 0) { // getRandomValues fails on IE if size == 0\n if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues\n // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n for (var generated = 0; generated < size; generated += MAX_BYTES) {\n // buffer.slice automatically checks if the end is past the end of\n // the buffer so we don't have to here\n crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES))\n }\n } else {\n crypto.getRandomValues(bytes)\n }\n }\n\n if (typeof cb === 'function') {\n return process.nextTick(function () {\n cb(null, bytes)\n })\n }\n\n return bytes\n}\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.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\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\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\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\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};\n\nSHA1.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","'use strict';\n\nexports.utils = require('./des/utils');\nexports.Cipher = require('./des/cipher');\nexports.DES = require('./des/des');\nexports.CBC = require('./des/cbc');\nexports.EDE = require('./des/ede');\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n'use strict';\n\nmodule.exports = Writable;\n/* */\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\n\n\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n/**/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\nrequire('inherits')(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n\n this.sync = true; // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n\n return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\n\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n errorOrDestroy(stream, err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n } // reuse the free corkReq.\n\n\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","'use strict'\nvar inherits = require('inherits')\nvar Legacy = require('./legacy')\nvar Base = require('cipher-base')\nvar Buffer = require('safe-buffer').Buffer\nvar md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\n\nvar sha = require('sha.js')\n\nvar ZEROS = Buffer.alloc(128)\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n this._alg = alg\n this._key = key\n if (key.length > blocksize) {\n var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n key = hash.update(key).digest()\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n this._hash.update(ipad)\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._hash.digest()\n var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg)\n return hash.update(this._opad).update(h).digest()\n}\n\nmodule.exports = function createHmac (alg, key) {\n alg = alg.toLowerCase()\n if (alg === 'rmd160' || alg === 'ripemd160') {\n return new Hmac('rmd160', key)\n }\n if (alg === 'md5') {\n return new Legacy(md5, key)\n }\n return new Hmac(alg, key)\n}\n","'use strict'\n\nexports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = require('randombytes')\nexports.createHash = exports.Hash = require('create-hash')\nexports.createHmac = exports.Hmac = require('create-hmac')\n\nvar algos = require('browserify-sign/algos')\nvar algoKeys = Object.keys(algos)\nvar hashes = ['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'md5', 'rmd160'].concat(algoKeys)\nexports.getHashes = function () {\n return hashes\n}\n\nvar p = require('pbkdf2')\nexports.pbkdf2 = p.pbkdf2\nexports.pbkdf2Sync = p.pbkdf2Sync\n\nvar aes = require('browserify-cipher')\n\nexports.Cipher = aes.Cipher\nexports.createCipher = aes.createCipher\nexports.Cipheriv = aes.Cipheriv\nexports.createCipheriv = aes.createCipheriv\nexports.Decipher = aes.Decipher\nexports.createDecipher = aes.createDecipher\nexports.Decipheriv = aes.Decipheriv\nexports.createDecipheriv = aes.createDecipheriv\nexports.getCiphers = aes.getCiphers\nexports.listCiphers = aes.listCiphers\n\nvar dh = require('diffie-hellman')\n\nexports.DiffieHellmanGroup = dh.DiffieHellmanGroup\nexports.createDiffieHellmanGroup = dh.createDiffieHellmanGroup\nexports.getDiffieHellman = dh.getDiffieHellman\nexports.createDiffieHellman = dh.createDiffieHellman\nexports.DiffieHellman = dh.DiffieHellman\n\nvar sign = require('browserify-sign')\n\nexports.createSign = sign.createSign\nexports.Sign = sign.Sign\nexports.createVerify = sign.createVerify\nexports.Verify = sign.Verify\n\nexports.createECDH = require('create-ecdh')\n\nvar publicEncrypt = require('public-encrypt')\n\nexports.publicEncrypt = publicEncrypt.publicEncrypt\nexports.privateEncrypt = publicEncrypt.privateEncrypt\nexports.publicDecrypt = publicEncrypt.publicDecrypt\nexports.privateDecrypt = publicEncrypt.privateDecrypt\n\n// the least I can do is make error messages for the rest of the node.js/crypto api.\n// ;[\n// 'createCredentials'\n// ].forEach(function (name) {\n// exports[name] = function () {\n// throw new Error([\n// 'sorry, ' + name + ' is not implemented yet',\n// 'we accept pull requests',\n// 'https://github.com/crypto-browserify/crypto-browserify'\n// ].join('\\n'))\n// }\n// })\n\nvar rf = require('randomfill')\n\nexports.randomFill = rf.randomFill\nexports.randomFillSync = rf.randomFillSync\n\nexports.createCredentials = function () {\n throw new Error([\n 'sorry, createCredentials is not implemented yet',\n 'we accept pull requests',\n 'https://github.com/crypto-browserify/crypto-browserify'\n ].join('\\n'))\n}\n\nexports.constants = {\n 'DH_CHECK_P_NOT_SAFE_PRIME': 2,\n 'DH_CHECK_P_NOT_PRIME': 1,\n 'DH_UNABLE_TO_CHECK_GENERATOR': 4,\n 'DH_NOT_SUITABLE_GENERATOR': 8,\n 'NPN_ENABLED': 1,\n 'ALPN_ENABLED': 1,\n 'RSA_PKCS1_PADDING': 1,\n 'RSA_SSLV23_PADDING': 2,\n 'RSA_NO_PADDING': 3,\n 'RSA_PKCS1_OAEP_PADDING': 4,\n 'RSA_X931_PADDING': 5,\n 'RSA_PKCS1_PSS_PADDING': 6,\n 'POINT_CONVERSION_COMPRESSED': 2,\n 'POINT_CONVERSION_UNCOMPRESSED': 4,\n 'POINT_CONVERSION_HYBRID': 6\n}\n","var CipherBase = require('cipher-base')\nvar des = require('des.js')\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar modes = {\n 'des-ede3-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede3': des.EDE,\n 'des-ede-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede': des.EDE,\n 'des-cbc': des.CBC.instantiate(des.DES),\n 'des-ecb': des.DES\n}\nmodes.des = modes['des-cbc']\nmodes.des3 = modes['des-ede3-cbc']\nmodule.exports = DES\ninherits(DES, CipherBase)\nfunction DES (opts) {\n CipherBase.call(this)\n var modeName = opts.mode.toLowerCase()\n var mode = modes[modeName]\n var type\n if (opts.decrypt) {\n type = 'decrypt'\n } else {\n type = 'encrypt'\n }\n var key = opts.key\n if (!Buffer.isBuffer(key)) {\n key = Buffer.from(key)\n }\n if (modeName === 'des-ede' || modeName === 'des-ede-cbc') {\n key = Buffer.concat([key, key.slice(0, 8)])\n }\n var iv = opts.iv\n if (!Buffer.isBuffer(iv)) {\n iv = Buffer.from(iv)\n }\n this._des = mode.create({\n key: key,\n iv: iv,\n type: type\n })\n}\nDES.prototype._update = function (data) {\n return Buffer.from(this._des.update(data))\n}\nDES.prototype._final = function () {\n return Buffer.from(this._des.final())\n}\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar Cipher = require('./cipher');\nvar DES = require('./des');\n\nfunction EDEState(type, key) {\n assert.equal(key.length, 24, 'Invalid key length');\n\n var k1 = key.slice(0, 8);\n var k2 = key.slice(8, 16);\n var k3 = key.slice(16, 24);\n\n if (type === 'encrypt') {\n this.ciphers = [\n DES.create({ type: 'encrypt', key: k1 }),\n DES.create({ type: 'decrypt', key: k2 }),\n DES.create({ type: 'encrypt', key: k3 })\n ];\n } else {\n this.ciphers = [\n DES.create({ type: 'decrypt', key: k3 }),\n DES.create({ type: 'encrypt', key: k2 }),\n DES.create({ type: 'decrypt', key: k1 })\n ];\n }\n}\n\nfunction EDE(options) {\n Cipher.call(this, options);\n\n var state = new EDEState(this.type, this.options.key);\n this._edeState = state;\n}\ninherits(EDE, Cipher);\n\nmodule.exports = EDE;\n\nEDE.create = function create(options) {\n return new EDE(options);\n};\n\nEDE.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._edeState;\n\n state.ciphers[0]._update(inp, inOff, out, outOff);\n state.ciphers[1]._update(out, outOff, out, outOff);\n state.ciphers[2]._update(out, outOff, out, outOff);\n};\n\nEDE.prototype._pad = DES.prototype._pad;\nEDE.prototype._unpad = DES.prototype._unpad;\n","var Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar sync = require('./sync')\nvar toBuffer = require('./to-buffer')\n\nvar ZERO_BUF\nvar subtle = global.crypto && global.crypto.subtle\nvar toBrowser = {\n sha: 'SHA-1',\n 'sha-1': 'SHA-1',\n sha1: 'SHA-1',\n sha256: 'SHA-256',\n 'sha-256': 'SHA-256',\n sha384: 'SHA-384',\n 'sha-384': 'SHA-384',\n 'sha-512': 'SHA-512',\n sha512: 'SHA-512'\n}\nvar checks = []\nfunction checkNative (algo) {\n if (global.process && !global.process.browser) {\n return Promise.resolve(false)\n }\n if (!subtle || !subtle.importKey || !subtle.deriveBits) {\n return Promise.resolve(false)\n }\n if (checks[algo] !== undefined) {\n return checks[algo]\n }\n ZERO_BUF = ZERO_BUF || Buffer.alloc(8)\n var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo)\n .then(function () {\n return true\n }).catch(function () {\n return false\n })\n checks[algo] = prom\n return prom\n}\nvar nextTick\nfunction getNextTick () {\n if (nextTick) {\n return nextTick\n }\n if (global.process && global.process.nextTick) {\n nextTick = global.process.nextTick\n } else if (global.queueMicrotask) {\n nextTick = global.queueMicrotask\n } else if (global.setImmediate) {\n nextTick = global.setImmediate\n } else {\n nextTick = global.setTimeout\n }\n return nextTick\n}\nfunction browserPbkdf2 (password, salt, iterations, length, algo) {\n return subtle.importKey(\n 'raw', password, { name: 'PBKDF2' }, false, ['deriveBits']\n ).then(function (key) {\n return subtle.deriveBits({\n name: 'PBKDF2',\n salt: salt,\n iterations: iterations,\n hash: {\n name: algo\n }\n }, key, length << 3)\n }).then(function (res) {\n return Buffer.from(res)\n })\n}\n\nfunction resolvePromise (promise, callback) {\n promise.then(function (out) {\n getNextTick()(function () {\n callback(null, out)\n })\n }, function (e) {\n getNextTick()(function () {\n callback(e)\n })\n })\n}\nmodule.exports = function (password, salt, iterations, keylen, digest, callback) {\n if (typeof digest === 'function') {\n callback = digest\n digest = undefined\n }\n\n digest = digest || 'sha1'\n var algo = toBrowser[digest.toLowerCase()]\n\n if (!algo || typeof global.Promise !== 'function') {\n getNextTick()(function () {\n var out\n try {\n out = sync(password, salt, iterations, keylen, digest)\n } catch (e) {\n return callback(e)\n }\n callback(null, out)\n })\n return\n }\n\n checkParameters(iterations, keylen)\n password = toBuffer(password, defaultEncoding, 'Password')\n salt = toBuffer(salt, defaultEncoding, 'Salt')\n if (typeof callback !== 'function') throw new Error('No callback provided to pbkdf2')\n\n resolvePromise(checkNative(algo).then(function (resp) {\n if (resp) return browserPbkdf2(password, salt, iterations, keylen, algo)\n\n return sync(password, salt, iterations, keylen, digest)\n }), callback)\n}\n","'use strict';\n\nconst decoders = exports;\n\ndecoders.der = require('./der');\ndecoders.pem = require('./pem');\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","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\n\nvar _require2 = require('util'),\n inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\n}();","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n\n var cb = ts.writecb;\n\n if (!cb) {\n return this.emit('error', new Error('write callback called multiple times'));\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n\n cb(er);\n\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n\n Duplex.call(this, options);\n\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function') {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n throw new Error('_transform() is not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n var _this2 = this;\n\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n _this2.emit('close');\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');\n\n if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');\n\n return stream.push(null);\n}","var asn1 = require('./asn1')\nvar aesid = require('./aesid.json')\nvar fixProc = require('./fixProc')\nvar ciphers = require('browserify-aes')\nvar compat = require('pbkdf2')\nvar Buffer = require('safe-buffer').Buffer\nmodule.exports = parseKeys\n\nfunction parseKeys (buffer) {\n var password\n if (typeof buffer === 'object' && !Buffer.isBuffer(buffer)) {\n password = buffer.passphrase\n buffer = buffer.key\n }\n if (typeof buffer === 'string') {\n buffer = Buffer.from(buffer)\n }\n\n var stripped = fixProc(buffer, password)\n\n var type = stripped.tag\n var data = stripped.data\n var subtype, ndata\n switch (type) {\n case 'CERTIFICATE':\n ndata = asn1.certificate.decode(data, 'der').tbsCertificate.subjectPublicKeyInfo\n // falls through\n case 'PUBLIC KEY':\n if (!ndata) {\n ndata = asn1.PublicKey.decode(data, 'der')\n }\n subtype = ndata.algorithm.algorithm.join('.')\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, 'der')\n case '1.2.840.10045.2.1':\n ndata.subjectPrivateKey = ndata.subjectPublicKey\n return {\n type: 'ec',\n data: ndata\n }\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, 'der')\n return {\n type: 'dsa',\n data: ndata.algorithm.params\n }\n default: throw new Error('unknown key id ' + subtype)\n }\n // throw new Error('unknown key type ' + type)\n case 'ENCRYPTED PRIVATE KEY':\n data = asn1.EncryptedPrivateKey.decode(data, 'der')\n data = decrypt(data, password)\n // falls through\n case 'PRIVATE KEY':\n ndata = asn1.PrivateKey.decode(data, 'der')\n subtype = ndata.algorithm.algorithm.join('.')\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, 'der')\n case '1.2.840.10045.2.1':\n return {\n curve: ndata.algorithm.curve,\n privateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, 'der').privateKey\n }\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, 'der')\n return {\n type: 'dsa',\n params: ndata.algorithm.params\n }\n default: throw new Error('unknown key id ' + subtype)\n }\n // throw new Error('unknown key type ' + type)\n case 'RSA PUBLIC KEY':\n return asn1.RSAPublicKey.decode(data, 'der')\n case 'RSA PRIVATE KEY':\n return asn1.RSAPrivateKey.decode(data, 'der')\n case 'DSA PRIVATE KEY':\n return {\n type: 'dsa',\n params: asn1.DSAPrivateKey.decode(data, 'der')\n }\n case 'EC PRIVATE KEY':\n data = asn1.ECPrivateKey.decode(data, 'der')\n return {\n curve: data.parameters.value,\n privateKey: data.privateKey\n }\n default: throw new Error('unknown key type ' + type)\n }\n}\nparseKeys.signature = asn1.signature\nfunction decrypt (data, password) {\n var salt = data.algorithm.decrypt.kde.kdeparams.salt\n var iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10)\n var algo = aesid[data.algorithm.decrypt.cipher.algo.join('.')]\n var iv = data.algorithm.decrypt.cipher.iv\n var cipherText = data.subjectPrivateKey\n var keylen = parseInt(algo.split('-')[1], 10) / 8\n var key = compat.pbkdf2Sync(password, salt, iters, keylen, 'sha1')\n var cipher = ciphers.createDecipheriv(algo, key, iv)\n var out = []\n out.push(cipher.update(cipherText))\n out.push(cipher.final())\n return Buffer.concat(out)\n}\n","module.exports = require('./lib/_stream_writable.js');\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = 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 if (this.isInfinity())\n return this;\n else 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 var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (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 (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};\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","'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","'use strict';\n\nconst encoders = exports;\n\nencoders.der = require('./der');\nencoders.pem = require('./pem');\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","var Buffer = require('safe-buffer').Buffer\nvar xor = require('buffer-xor')\n\nfunction encryptStart (self, data, decrypt) {\n var len = data.length\n var out = xor(data, self._cache)\n self._cache = self._cache.slice(len)\n self._prev = Buffer.concat([self._prev, decrypt ? data : out])\n return out\n}\n\nexports.encrypt = function (self, data, decrypt) {\n var out = Buffer.allocUnsafe(0)\n var len\n\n while (data.length) {\n if (self._cache.length === 0) {\n self._cache = self._cipher.encryptBlock(self._prev)\n self._prev = Buffer.allocUnsafe(0)\n }\n\n if (self._cache.length <= data.length) {\n len = self._cache.length\n out = Buffer.concat([out, encryptStart(self, data.slice(0, len), decrypt)])\n data = data.slice(len)\n } else {\n out = Buffer.concat([out, encryptStart(self, data, decrypt)])\n break\n }\n }\n\n return out\n}\n","'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DEREncoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\nmodule.exports = DEREncoder;\n\nDEREncoder.prototype.encode = function encode(data, reporter) {\n return this.tree._encode(data, reporter).join();\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._encodeComposite = function encodeComposite(tag,\n primitive,\n cls,\n content) {\n const encodedTag = encodeTag(tag, primitive, cls, this.reporter);\n\n // Short form\n if (content.length < 0x80) {\n const header = Buffer.alloc(2);\n header[0] = encodedTag;\n header[1] = content.length;\n return this._createEncoderBuffer([ header, content ]);\n }\n\n // Long form\n // Count octets required to store length\n let lenOctets = 1;\n for (let i = content.length; i >= 0x100; i >>= 8)\n lenOctets++;\n\n const header = Buffer.alloc(1 + 1 + lenOctets);\n header[0] = encodedTag;\n header[1] = 0x80 | lenOctets;\n\n for (let i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8)\n header[i] = j & 0xff;\n\n return this._createEncoderBuffer([ header, content ]);\n};\n\nDERNode.prototype._encodeStr = function encodeStr(str, tag) {\n if (tag === 'bitstr') {\n return this._createEncoderBuffer([ str.unused | 0, str.data ]);\n } else if (tag === 'bmpstr') {\n const buf = Buffer.alloc(str.length * 2);\n for (let i = 0; i < str.length; i++) {\n buf.writeUInt16BE(str.charCodeAt(i), i * 2);\n }\n return this._createEncoderBuffer(buf);\n } else if (tag === 'numstr') {\n if (!this._isNumstr(str)) {\n return this.reporter.error('Encoding of string type: numstr supports ' +\n 'only digits and space');\n }\n return this._createEncoderBuffer(str);\n } else if (tag === 'printstr') {\n if (!this._isPrintstr(str)) {\n return this.reporter.error('Encoding of string type: printstr supports ' +\n 'only latin upper and lower case letters, ' +\n 'digits, space, apostrophe, left and rigth ' +\n 'parenthesis, plus sign, comma, hyphen, ' +\n 'dot, slash, colon, equal sign, ' +\n 'question mark');\n }\n return this._createEncoderBuffer(str);\n } else if (/str$/.test(tag)) {\n return this._createEncoderBuffer(str);\n } else if (tag === 'objDesc') {\n return this._createEncoderBuffer(str);\n } else {\n return this.reporter.error('Encoding of string type: ' + tag +\n ' unsupported');\n }\n};\n\nDERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {\n if (typeof id === 'string') {\n if (!values)\n return this.reporter.error('string objid given, but no values map found');\n if (!values.hasOwnProperty(id))\n return this.reporter.error('objid not found in values map');\n id = values[id].split(/[\\s.]+/g);\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n } else if (Array.isArray(id)) {\n id = id.slice();\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n }\n\n if (!Array.isArray(id)) {\n return this.reporter.error('objid() should be either array or string, ' +\n 'got: ' + JSON.stringify(id));\n }\n\n if (!relative) {\n if (id[1] >= 40)\n return this.reporter.error('Second objid identifier OOB');\n id.splice(0, 2, id[0] * 40 + id[1]);\n }\n\n // Count number of octets\n let size = 0;\n for (let i = 0; i < id.length; i++) {\n let ident = id[i];\n for (size++; ident >= 0x80; ident >>= 7)\n size++;\n }\n\n const objid = Buffer.alloc(size);\n let offset = objid.length - 1;\n for (let i = id.length - 1; i >= 0; i--) {\n let ident = id[i];\n objid[offset--] = ident & 0x7f;\n while ((ident >>= 7) > 0)\n objid[offset--] = 0x80 | (ident & 0x7f);\n }\n\n return this._createEncoderBuffer(objid);\n};\n\nfunction two(num) {\n if (num < 10)\n return '0' + num;\n else\n return num;\n}\n\nDERNode.prototype._encodeTime = function encodeTime(time, tag) {\n let str;\n const date = new Date(time);\n\n if (tag === 'gentime') {\n str = [\n two(date.getUTCFullYear()),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else if (tag === 'utctime') {\n str = [\n two(date.getUTCFullYear() % 100),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else {\n this.reporter.error('Encoding ' + tag + ' time is not supported yet');\n }\n\n return this._encodeStr(str, 'octstr');\n};\n\nDERNode.prototype._encodeNull = function encodeNull() {\n return this._createEncoderBuffer('');\n};\n\nDERNode.prototype._encodeInt = function encodeInt(num, values) {\n if (typeof num === 'string') {\n if (!values)\n return this.reporter.error('String int or enum given, but no values map');\n if (!values.hasOwnProperty(num)) {\n return this.reporter.error('Values map doesn\\'t contain: ' +\n JSON.stringify(num));\n }\n num = values[num];\n }\n\n // Bignum, assume big endian\n if (typeof num !== 'number' && !Buffer.isBuffer(num)) {\n const numArray = num.toArray();\n if (!num.sign && numArray[0] & 0x80) {\n numArray.unshift(0);\n }\n num = Buffer.from(numArray);\n }\n\n if (Buffer.isBuffer(num)) {\n let size = num.length;\n if (num.length === 0)\n size++;\n\n const out = Buffer.alloc(size);\n num.copy(out);\n if (num.length === 0)\n out[0] = 0;\n return this._createEncoderBuffer(out);\n }\n\n if (num < 0x80)\n return this._createEncoderBuffer(num);\n\n if (num < 0x100)\n return this._createEncoderBuffer([0, num]);\n\n let size = 1;\n for (let i = num; i >= 0x100; i >>= 8)\n size++;\n\n const out = new Array(size);\n for (let i = out.length - 1; i >= 0; i--) {\n out[i] = num & 0xff;\n num >>= 8;\n }\n if(out[0] & 0x80) {\n out.unshift(0);\n }\n\n return this._createEncoderBuffer(Buffer.from(out));\n};\n\nDERNode.prototype._encodeBool = function encodeBool(value) {\n return this._createEncoderBuffer(value ? 0xff : 0);\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getEncoder('der').tree;\n};\n\nDERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {\n const state = this._baseState;\n let i;\n if (state['default'] === null)\n return false;\n\n const data = dataBuffer.join();\n if (state.defaultBuffer === undefined)\n state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join();\n\n if (data.length !== state.defaultBuffer.length)\n return false;\n\n for (i=0; i < data.length; i++)\n if (data[i] !== state.defaultBuffer[i])\n return false;\n\n return true;\n};\n\n// Utility methods\n\nfunction encodeTag(tag, primitive, cls, reporter) {\n let res;\n\n if (tag === 'seqof')\n tag = 'seq';\n else if (tag === 'setof')\n tag = 'set';\n\n if (der.tagByName.hasOwnProperty(tag))\n res = der.tagByName[tag];\n else if (typeof tag === 'number' && (tag | 0) === tag)\n res = tag;\n else\n return reporter.error('Unknown tag: ' + tag);\n\n if (res >= 0x1f)\n return reporter.error('Multi-octet tag encoding unsupported');\n\n if (!primitive)\n res |= 0x20;\n\n res |= (der.tagClassByName[cls || 'universal'] << 6);\n\n return res;\n}\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 if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\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 this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\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 parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\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 // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\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 this.strip();\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 if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\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","'use strict';\n\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub))\n this._pub = params.pub;\n else\n this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair)\n return pub;\n return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair)\n return secret;\n return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes)\n return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n\n return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\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 if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\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 this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\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 parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\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 // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 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 b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\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 this._strip();\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 function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\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 // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n 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 off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\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.modrn(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, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\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 var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\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] >>> wbit) & 0x01;\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 // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(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 var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\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 isNegNum ? this.ineg() : 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.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(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.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\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 isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\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 this._strip();\n return isNegNum ? this.ineg() : this;\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 if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\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\n move(a, a.umod(this.m)._forceRed(this));\n return a;\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","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","// based on the aes implimentation in triple sec\n// https://github.com/keybase/triplesec\n// which is in turn based on the one from crypto-js\n// https://code.google.com/p/crypto-js/\n\nvar Buffer = require('safe-buffer').Buffer\n\nfunction asUInt32Array (buf) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n\n var len = (buf.length / 4) | 0\n var out = new Array(len)\n\n for (var i = 0; i < len; i++) {\n out[i] = buf.readUInt32BE(i * 4)\n }\n\n return out\n}\n\nfunction scrubVec (v) {\n for (var i = 0; i < v.length; v++) {\n v[i] = 0\n }\n}\n\nfunction cryptBlock (M, keySchedule, SUB_MIX, SBOX, nRounds) {\n var SUB_MIX0 = SUB_MIX[0]\n var SUB_MIX1 = SUB_MIX[1]\n var SUB_MIX2 = SUB_MIX[2]\n var SUB_MIX3 = SUB_MIX[3]\n\n var s0 = M[0] ^ keySchedule[0]\n var s1 = M[1] ^ keySchedule[1]\n var s2 = M[2] ^ keySchedule[2]\n var s3 = M[3] ^ keySchedule[3]\n var t0, t1, t2, t3\n var ksRow = 4\n\n for (var round = 1; round < nRounds; round++) {\n t0 = SUB_MIX0[s0 >>> 24] ^ SUB_MIX1[(s1 >>> 16) & 0xff] ^ SUB_MIX2[(s2 >>> 8) & 0xff] ^ SUB_MIX3[s3 & 0xff] ^ keySchedule[ksRow++]\n t1 = SUB_MIX0[s1 >>> 24] ^ SUB_MIX1[(s2 >>> 16) & 0xff] ^ SUB_MIX2[(s3 >>> 8) & 0xff] ^ SUB_MIX3[s0 & 0xff] ^ keySchedule[ksRow++]\n t2 = SUB_MIX0[s2 >>> 24] ^ SUB_MIX1[(s3 >>> 16) & 0xff] ^ SUB_MIX2[(s0 >>> 8) & 0xff] ^ SUB_MIX3[s1 & 0xff] ^ keySchedule[ksRow++]\n t3 = SUB_MIX0[s3 >>> 24] ^ SUB_MIX1[(s0 >>> 16) & 0xff] ^ SUB_MIX2[(s1 >>> 8) & 0xff] ^ SUB_MIX3[s2 & 0xff] ^ keySchedule[ksRow++]\n s0 = t0\n s1 = t1\n s2 = t2\n s3 = t3\n }\n\n t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++]\n t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++]\n t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++]\n t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]\n t0 = t0 >>> 0\n t1 = t1 >>> 0\n t2 = t2 >>> 0\n t3 = t3 >>> 0\n\n return [t0, t1, t2, t3]\n}\n\n// AES constants\nvar RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]\nvar G = (function () {\n // Compute double table\n var d = new Array(256)\n for (var j = 0; j < 256; j++) {\n if (j < 128) {\n d[j] = j << 1\n } else {\n d[j] = (j << 1) ^ 0x11b\n }\n }\n\n var SBOX = []\n var INV_SBOX = []\n var SUB_MIX = [[], [], [], []]\n var INV_SUB_MIX = [[], [], [], []]\n\n // Walk GF(2^8)\n var x = 0\n var xi = 0\n for (var i = 0; i < 256; ++i) {\n // Compute sbox\n var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4)\n sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63\n SBOX[x] = sx\n INV_SBOX[sx] = x\n\n // Compute multiplication\n var x2 = d[x]\n var x4 = d[x2]\n var x8 = d[x4]\n\n // Compute sub bytes, mix columns tables\n var t = (d[sx] * 0x101) ^ (sx * 0x1010100)\n SUB_MIX[0][x] = (t << 24) | (t >>> 8)\n SUB_MIX[1][x] = (t << 16) | (t >>> 16)\n SUB_MIX[2][x] = (t << 8) | (t >>> 24)\n SUB_MIX[3][x] = t\n\n // Compute inv sub bytes, inv mix columns tables\n t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100)\n INV_SUB_MIX[0][sx] = (t << 24) | (t >>> 8)\n INV_SUB_MIX[1][sx] = (t << 16) | (t >>> 16)\n INV_SUB_MIX[2][sx] = (t << 8) | (t >>> 24)\n INV_SUB_MIX[3][sx] = t\n\n if (x === 0) {\n x = xi = 1\n } else {\n x = x2 ^ d[d[d[x8 ^ x2]]]\n xi ^= d[d[xi]]\n }\n }\n\n return {\n SBOX: SBOX,\n INV_SBOX: INV_SBOX,\n SUB_MIX: SUB_MIX,\n INV_SUB_MIX: INV_SUB_MIX\n }\n})()\n\nfunction AES (key) {\n this._key = asUInt32Array(key)\n this._reset()\n}\n\nAES.blockSize = 4 * 4\nAES.keySize = 256 / 8\nAES.prototype.blockSize = AES.blockSize\nAES.prototype.keySize = AES.keySize\nAES.prototype._reset = function () {\n var keyWords = this._key\n var keySize = keyWords.length\n var nRounds = keySize + 6\n var ksRows = (nRounds + 1) * 4\n\n var keySchedule = []\n for (var k = 0; k < keySize; k++) {\n keySchedule[k] = keyWords[k]\n }\n\n for (k = keySize; k < ksRows; k++) {\n var t = keySchedule[k - 1]\n\n if (k % keySize === 0) {\n t = (t << 8) | (t >>> 24)\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n\n t ^= RCON[(k / keySize) | 0] << 24\n } else if (keySize > 6 && k % keySize === 4) {\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n }\n\n keySchedule[k] = keySchedule[k - keySize] ^ t\n }\n\n var invKeySchedule = []\n for (var ik = 0; ik < ksRows; ik++) {\n var ksR = ksRows - ik\n var tt = keySchedule[ksR - (ik % 4 ? 0 : 4)]\n\n if (ik < 4 || ksR <= 4) {\n invKeySchedule[ik] = tt\n } else {\n invKeySchedule[ik] =\n G.INV_SUB_MIX[0][G.SBOX[tt >>> 24]] ^\n G.INV_SUB_MIX[1][G.SBOX[(tt >>> 16) & 0xff]] ^\n G.INV_SUB_MIX[2][G.SBOX[(tt >>> 8) & 0xff]] ^\n G.INV_SUB_MIX[3][G.SBOX[tt & 0xff]]\n }\n }\n\n this._nRounds = nRounds\n this._keySchedule = keySchedule\n this._invKeySchedule = invKeySchedule\n}\n\nAES.prototype.encryptBlockRaw = function (M) {\n M = asUInt32Array(M)\n return cryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX, this._nRounds)\n}\n\nAES.prototype.encryptBlock = function (M) {\n var out = this.encryptBlockRaw(M)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[1], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[3], 12)\n return buf\n}\n\nAES.prototype.decryptBlock = function (M) {\n M = asUInt32Array(M)\n\n // swap\n var m1 = M[1]\n M[1] = M[3]\n M[3] = m1\n\n var out = cryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX, this._nRounds)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[3], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[1], 12)\n return buf\n}\n\nAES.prototype.scrub = function () {\n scrubVec(this._keySchedule)\n scrubVec(this._invKeySchedule)\n scrubVec(this._key)\n}\n\nmodule.exports.AES = AES\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\nfunction isArray(arg) {\n if (Array.isArray) {\n return Array.isArray(arg);\n }\n return objectToString(arg) === '[object Array]';\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = Buffer.isBuffer;\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction EdwardsCurve(conf) {\n // NOTE: Important as we are creating point in Base.call()\n this.twisted = (conf.a | 0) !== 1;\n this.mOneA = this.twisted && (conf.a | 0) === -1;\n this.extended = this.mOneA;\n\n Base.call(this, 'edwards', conf);\n\n this.a = new BN(conf.a, 16).umod(this.red.m);\n this.a = this.a.toRed(this.red);\n this.c = new BN(conf.c, 16).toRed(this.red);\n this.c2 = this.c.redSqr();\n this.d = new BN(conf.d, 16).toRed(this.red);\n this.dd = this.d.redAdd(this.d);\n\n assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n this.oneC = (conf.c | 0) === 1;\n}\ninherits(EdwardsCurve, Base);\nmodule.exports = EdwardsCurve;\n\nEdwardsCurve.prototype._mulA = function _mulA(num) {\n if (this.mOneA)\n return num.redNeg();\n else\n return this.a.redMul(num);\n};\n\nEdwardsCurve.prototype._mulC = function _mulC(num) {\n if (this.oneC)\n return num;\n else\n return this.c.redMul(num);\n};\n\n// Just for compatibility with Short curve\nEdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {\n return this.point(x, y, z, t);\n};\n\nEdwardsCurve.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 x2 = x.redSqr();\n var rhs = this.c2.redSub(this.a.redMul(x2));\n var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));\n\n var y2 = rhs.redMul(lhs.redInvm());\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\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\nEdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {\n y = new BN(y, 16);\n if (!y.red)\n y = y.toRed(this.red);\n\n // x^2 = (y^2 - c^2) / (c^2 d y^2 - a)\n var y2 = y.redSqr();\n var lhs = y2.redSub(this.c2);\n var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a);\n var x2 = lhs.redMul(rhs.redInvm());\n\n if (x2.cmp(this.zero) === 0) {\n if (odd)\n throw new Error('invalid point');\n else\n return this.point(this.zero, y);\n }\n\n var x = x2.redSqrt();\n if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n if (x.fromRed().isOdd() !== odd)\n x = x.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.validate = function validate(point) {\n if (point.isInfinity())\n return true;\n\n // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n point.normalize();\n\n var x2 = point.x.redSqr();\n var y2 = point.y.redSqr();\n var lhs = x2.redMul(this.a).redAdd(y2);\n var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));\n\n return lhs.cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, y, z, t) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && y === null && z === null) {\n this.x = this.curve.zero;\n this.y = this.curve.one;\n this.z = this.curve.one;\n this.t = this.curve.zero;\n this.zOne = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = z ? new BN(z, 16) : this.curve.one;\n this.t = t && new BN(t, 16);\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 if (this.t && !this.t.red)\n this.t = this.t.toRed(this.curve.red);\n this.zOne = this.z === this.curve.one;\n\n // Use extended coordinates\n if (this.curve.extended && !this.t) {\n this.t = this.x.redMul(this.y);\n if (!this.zOne)\n this.t = this.t.redMul(this.z.redInvm());\n }\n }\n}\ninherits(Point, Base.BasePoint);\n\nEdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nEdwardsCurve.prototype.point = function point(x, y, z, t) {\n return new Point(this, x, y, z, t);\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1], obj[2]);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.x.cmpn(0) === 0 &&\n (this.y.cmp(this.z) === 0 ||\n (this.zOne && this.y.cmp(this.curve.c) === 0));\n};\n\nPoint.prototype._extDbl = function _extDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #doubling-dbl-2008-hwcd\n // 4M + 4S\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = 2 * Z1^2\n var c = this.z.redSqr();\n c = c.redIAdd(c);\n // D = a * A\n var d = this.curve._mulA(a);\n // E = (X1 + Y1)^2 - A - B\n var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);\n // G = D + B\n var g = d.redAdd(b);\n // F = G - C\n var f = g.redSub(c);\n // H = D - B\n var h = d.redSub(b);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projDbl = function _projDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #doubling-dbl-2008-bbjlp\n // #doubling-dbl-2007-bl\n // and others\n // Generally 3M + 4S or 2M + 4S\n\n // B = (X1 + Y1)^2\n var b = this.x.redAdd(this.y).redSqr();\n // C = X1^2\n var c = this.x.redSqr();\n // D = Y1^2\n var d = this.y.redSqr();\n\n var nx;\n var ny;\n var nz;\n var e;\n var h;\n var j;\n if (this.curve.twisted) {\n // E = a * C\n e = this.curve._mulA(c);\n // F = E + D\n var f = e.redAdd(d);\n if (this.zOne) {\n // X3 = (B - C - D) * (F - 2)\n nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F^2 - 2 * F\n nz = f.redSqr().redSub(f).redSub(f);\n } else {\n // H = Z1^2\n h = this.z.redSqr();\n // J = F - 2 * H\n j = f.redSub(h).redISub(h);\n // X3 = (B-C-D)*J\n nx = b.redSub(c).redISub(d).redMul(j);\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F * J\n nz = f.redMul(j);\n }\n } else {\n // E = C + D\n e = c.redAdd(d);\n // H = (c * Z1)^2\n h = this.curve._mulC(this.z).redSqr();\n // J = E - 2 * H\n j = e.redSub(h).redSub(h);\n // X3 = c * (B - E) * J\n nx = this.curve._mulC(b.redISub(e)).redMul(j);\n // Y3 = c * E * (C - D)\n ny = this.curve._mulC(e).redMul(c.redISub(d));\n // Z3 = E * J\n nz = e.redMul(j);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n // Double in extended coordinates\n if (this.curve.extended)\n return this._extDbl();\n else\n return this._projDbl();\n};\n\nPoint.prototype._extAdd = function _extAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #addition-add-2008-hwcd-3\n // 8M\n\n // A = (Y1 - X1) * (Y2 - X2)\n var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));\n // B = (Y1 + X1) * (Y2 + X2)\n var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));\n // C = T1 * k * T2\n var c = this.t.redMul(this.curve.dd).redMul(p.t);\n // D = Z1 * 2 * Z2\n var d = this.z.redMul(p.z.redAdd(p.z));\n // E = B - A\n var e = b.redSub(a);\n // F = D - C\n var f = d.redSub(c);\n // G = D + C\n var g = d.redAdd(c);\n // H = B + A\n var h = b.redAdd(a);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projAdd = function _projAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #addition-add-2008-bbjlp\n // #addition-add-2007-bl\n // 10M + 1S\n\n // A = Z1 * Z2\n var a = this.z.redMul(p.z);\n // B = A^2\n var b = a.redSqr();\n // C = X1 * X2\n var c = this.x.redMul(p.x);\n // D = Y1 * Y2\n var d = this.y.redMul(p.y);\n // E = d * C * D\n var e = this.curve.d.redMul(c).redMul(d);\n // F = B - E\n var f = b.redSub(e);\n // G = B + E\n var g = b.redAdd(e);\n // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)\n var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);\n var nx = a.redMul(f).redMul(tmp);\n var ny;\n var nz;\n if (this.curve.twisted) {\n // Y3 = A * G * (D - a * C)\n ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));\n // Z3 = F * G\n nz = f.redMul(g);\n } else {\n // Y3 = A * G * (D - C)\n ny = a.redMul(g).redMul(d.redSub(c));\n // Z3 = c * F * G\n nz = this.curve._mulC(f).redMul(g);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.add = function add(p) {\n if (this.isInfinity())\n return p;\n if (p.isInfinity())\n return this;\n\n if (this.curve.extended)\n return this._extAdd(p);\n else\n return this._projAdd(p);\n};\n\nPoint.prototype.mul = function mul(k) {\n if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);\n};\n\nPoint.prototype.normalize = function normalize() {\n if (this.zOne)\n return this;\n\n // Normalize coordinates\n var zi = this.z.redInvm();\n this.x = this.x.redMul(zi);\n this.y = this.y.redMul(zi);\n if (this.t)\n this.t = this.t.redMul(zi);\n this.z = this.curve.one;\n this.zOne = true;\n return this;\n};\n\nPoint.prototype.neg = function neg() {\n return this.curve.point(this.x.redNeg(),\n this.y,\n this.z,\n this.t && this.t.redNeg());\n};\n\nPoint.prototype.getX = function getX() {\n this.normalize();\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n this.normalize();\n return this.y.fromRed();\n};\n\nPoint.prototype.eq = function eq(other) {\n return this === other ||\n this.getX().cmp(other.getX()) === 0 &&\n this.getY().cmp(other.getY()) === 0;\n};\n\nPoint.prototype.eqXToP = function eqXToP(x) {\n var rx = x.toRed(this.curve.red).redMul(this.z);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(this.z);\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};\n\n// Compatibility with BaseCurve\nPoint.prototype.toP = Point.prototype.normalize;\nPoint.prototype.mixedAdd = Point.prototype.add;\n","var Buffer = require('safe-buffer').Buffer\nvar ZEROES = Buffer.alloc(16, 0)\n\nfunction toArray (buf) {\n return [\n buf.readUInt32BE(0),\n buf.readUInt32BE(4),\n buf.readUInt32BE(8),\n buf.readUInt32BE(12)\n ]\n}\n\nfunction fromArray (out) {\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0] >>> 0, 0)\n buf.writeUInt32BE(out[1] >>> 0, 4)\n buf.writeUInt32BE(out[2] >>> 0, 8)\n buf.writeUInt32BE(out[3] >>> 0, 12)\n return buf\n}\n\nfunction GHASH (key) {\n this.h = key\n this.state = Buffer.alloc(16, 0)\n this.cache = Buffer.allocUnsafe(0)\n}\n\n// from http://bitwiseshiftleft.github.io/sjcl/doc/symbols/src/core_gcm.js.html\n// by Juho Vähä-Herttua\nGHASH.prototype.ghash = function (block) {\n var i = -1\n while (++i < block.length) {\n this.state[i] ^= block[i]\n }\n this._multiply()\n}\n\nGHASH.prototype._multiply = function () {\n var Vi = toArray(this.h)\n var Zi = [0, 0, 0, 0]\n var j, xi, lsbVi\n var i = -1\n while (++i < 128) {\n xi = (this.state[~~(i / 8)] & (1 << (7 - (i % 8)))) !== 0\n if (xi) {\n // Z_i+1 = Z_i ^ V_i\n Zi[0] ^= Vi[0]\n Zi[1] ^= Vi[1]\n Zi[2] ^= Vi[2]\n Zi[3] ^= Vi[3]\n }\n\n // Store the value of LSB(V_i)\n lsbVi = (Vi[3] & 1) !== 0\n\n // V_i+1 = V_i >> 1\n for (j = 3; j > 0; j--) {\n Vi[j] = (Vi[j] >>> 1) | ((Vi[j - 1] & 1) << 31)\n }\n Vi[0] = Vi[0] >>> 1\n\n // If LSB(V_i) is 1, V_i+1 = (V_i >> 1) ^ R\n if (lsbVi) {\n Vi[0] = Vi[0] ^ (0xe1 << 24)\n }\n }\n this.state = fromArray(Zi)\n}\n\nGHASH.prototype.update = function (buf) {\n this.cache = Buffer.concat([this.cache, buf])\n var chunk\n while (this.cache.length >= 16) {\n chunk = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n this.ghash(chunk)\n }\n}\n\nGHASH.prototype.final = function (abl, bl) {\n if (this.cache.length) {\n this.ghash(Buffer.concat([this.cache, ZEROES], 16))\n }\n\n this.ghash(fromArray([0, abl, 0, bl]))\n return this.state\n}\n\nmodule.exports = GHASH\n","if (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","module.exports = {\n doubles: {\n step: 4,\n points: [\n [\n 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',\n 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821',\n ],\n [\n '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',\n '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf',\n ],\n [\n '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',\n 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695',\n ],\n [\n '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',\n '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9',\n ],\n [\n '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',\n '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36',\n ],\n [\n '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',\n '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f',\n ],\n [\n 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',\n '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999',\n ],\n [\n '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',\n 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09',\n ],\n [\n 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',\n '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d',\n ],\n [\n 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',\n 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088',\n ],\n [\n 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',\n '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d',\n ],\n [\n '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',\n '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8',\n ],\n [\n '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',\n '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a',\n ],\n [\n '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',\n '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453',\n ],\n [\n '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',\n '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160',\n ],\n [\n '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',\n '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0',\n ],\n [\n '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',\n '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6',\n ],\n [\n '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',\n '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589',\n ],\n [\n '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',\n 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17',\n ],\n [\n 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',\n '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda',\n ],\n [\n 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',\n '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd',\n ],\n [\n '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',\n '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2',\n ],\n [\n '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',\n '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6',\n ],\n [\n 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',\n '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f',\n ],\n [\n '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',\n 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01',\n ],\n [\n 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',\n '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3',\n ],\n [\n 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',\n 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f',\n ],\n [\n 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',\n '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7',\n ],\n [\n 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',\n 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78',\n ],\n [\n 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',\n '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1',\n ],\n [\n '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',\n 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150',\n ],\n [\n '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',\n '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82',\n ],\n [\n 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',\n '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc',\n ],\n [\n '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',\n 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b',\n ],\n [\n 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',\n '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51',\n ],\n [\n 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',\n '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45',\n ],\n [\n 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',\n 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120',\n ],\n [\n '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',\n '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84',\n ],\n [\n '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',\n '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d',\n ],\n [\n '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',\n 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d',\n ],\n [\n '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',\n '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8',\n ],\n [\n 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',\n '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8',\n ],\n [\n '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',\n '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac',\n ],\n [\n '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',\n 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f',\n ],\n [\n '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',\n '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962',\n ],\n [\n 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',\n '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907',\n ],\n [\n '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',\n 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec',\n ],\n [\n 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',\n 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d',\n ],\n [\n 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',\n '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414',\n ],\n [\n '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',\n 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd',\n ],\n [\n '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',\n 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0',\n ],\n [\n 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',\n '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811',\n ],\n [\n 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',\n '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1',\n ],\n [\n 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',\n '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c',\n ],\n [\n '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',\n 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73',\n ],\n [\n '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',\n '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd',\n ],\n [\n 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',\n 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405',\n ],\n [\n '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',\n 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589',\n ],\n [\n '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',\n '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e',\n ],\n [\n '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',\n '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27',\n ],\n [\n 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',\n 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1',\n ],\n [\n '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',\n '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482',\n ],\n [\n '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',\n '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945',\n ],\n [\n 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',\n '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573',\n ],\n [\n 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',\n 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82',\n ],\n ],\n },\n naf: {\n wnd: 7,\n points: [\n [\n 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',\n '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672',\n ],\n [\n '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',\n 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6',\n ],\n [\n '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',\n '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da',\n ],\n [\n 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',\n 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37',\n ],\n [\n '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',\n 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b',\n ],\n [\n 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',\n 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81',\n ],\n [\n 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',\n '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58',\n ],\n [\n 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',\n '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77',\n ],\n [\n '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',\n '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a',\n ],\n [\n '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',\n '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c',\n ],\n [\n '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',\n '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67',\n ],\n [\n '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',\n '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402',\n ],\n [\n 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',\n 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55',\n ],\n [\n 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',\n '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482',\n ],\n [\n '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',\n 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82',\n ],\n [\n '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',\n 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396',\n ],\n [\n '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',\n '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49',\n ],\n [\n '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',\n '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf',\n ],\n [\n '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',\n '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a',\n ],\n [\n '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',\n 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7',\n ],\n [\n 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',\n 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933',\n ],\n [\n '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',\n '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a',\n ],\n [\n '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',\n '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6',\n ],\n [\n 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',\n 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37',\n ],\n [\n '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',\n '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e',\n ],\n [\n 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',\n 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6',\n ],\n [\n 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',\n 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476',\n ],\n [\n '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',\n '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40',\n ],\n [\n '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',\n '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61',\n ],\n [\n '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',\n '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683',\n ],\n [\n 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',\n '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5',\n ],\n [\n '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',\n '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b',\n ],\n [\n 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',\n '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417',\n ],\n [\n '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',\n 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868',\n ],\n [\n '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',\n 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a',\n ],\n [\n 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',\n 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6',\n ],\n [\n '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',\n '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996',\n ],\n [\n '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',\n 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e',\n ],\n [\n 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',\n 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d',\n ],\n [\n '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',\n '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2',\n ],\n [\n '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',\n 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e',\n ],\n [\n '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',\n '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437',\n ],\n [\n '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',\n 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311',\n ],\n [\n 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',\n '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4',\n ],\n [\n '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',\n '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575',\n ],\n [\n '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',\n 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d',\n ],\n [\n '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',\n 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d',\n ],\n [\n 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',\n 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629',\n ],\n [\n 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',\n 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06',\n ],\n [\n '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',\n '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374',\n ],\n [\n '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',\n '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee',\n ],\n [\n 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',\n '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1',\n ],\n [\n 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',\n 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b',\n ],\n [\n '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',\n '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661',\n ],\n [\n '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',\n '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6',\n ],\n [\n 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',\n '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e',\n ],\n [\n '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',\n '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d',\n ],\n [\n 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',\n 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc',\n ],\n [\n '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',\n 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4',\n ],\n [\n '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',\n '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c',\n ],\n [\n 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',\n '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b',\n ],\n [\n 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',\n '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913',\n ],\n [\n '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',\n '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154',\n ],\n [\n '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',\n '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865',\n ],\n [\n '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',\n 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc',\n ],\n [\n '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',\n 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224',\n ],\n [\n '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',\n '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e',\n ],\n [\n '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',\n '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6',\n ],\n [\n '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',\n '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511',\n ],\n [\n '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',\n 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b',\n ],\n [\n 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',\n 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2',\n ],\n [\n '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',\n 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c',\n ],\n [\n 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',\n '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3',\n ],\n [\n 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',\n '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d',\n ],\n [\n 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',\n '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700',\n ],\n [\n 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',\n '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4',\n ],\n [\n '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',\n 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196',\n ],\n [\n '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',\n '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4',\n ],\n [\n '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',\n 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257',\n ],\n [\n 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',\n 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13',\n ],\n [\n 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',\n '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096',\n ],\n [\n 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',\n 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38',\n ],\n [\n 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',\n '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f',\n ],\n [\n '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',\n '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448',\n ],\n [\n 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',\n '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a',\n ],\n [\n 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',\n '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4',\n ],\n [\n '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',\n '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437',\n ],\n [\n '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',\n 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7',\n ],\n [\n 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',\n '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d',\n ],\n [\n 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',\n '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a',\n ],\n [\n 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',\n '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54',\n ],\n [\n '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',\n '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77',\n ],\n [\n 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',\n 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517',\n ],\n [\n '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',\n 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10',\n ],\n [\n 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',\n 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125',\n ],\n [\n 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',\n '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e',\n ],\n [\n '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',\n 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1',\n ],\n [\n 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',\n '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2',\n ],\n [\n 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',\n '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423',\n ],\n [\n 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',\n '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8',\n ],\n [\n '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',\n 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758',\n ],\n [\n '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',\n 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375',\n ],\n [\n 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',\n '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d',\n ],\n [\n '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',\n 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec',\n ],\n [\n '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',\n '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0',\n ],\n [\n '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',\n 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c',\n ],\n [\n 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',\n 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4',\n ],\n [\n '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',\n 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f',\n ],\n [\n '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',\n '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649',\n ],\n [\n '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',\n 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826',\n ],\n [\n '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',\n '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5',\n ],\n [\n 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',\n 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87',\n ],\n [\n '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',\n '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b',\n ],\n [\n 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',\n '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc',\n ],\n [\n '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',\n '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c',\n ],\n [\n 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',\n 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f',\n ],\n [\n 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',\n '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a',\n ],\n [\n 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',\n 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46',\n ],\n [\n '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',\n 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f',\n ],\n [\n '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',\n '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03',\n ],\n [\n '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',\n 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08',\n ],\n [\n '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',\n '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8',\n ],\n [\n '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',\n '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373',\n ],\n [\n '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',\n 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3',\n ],\n [\n '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',\n '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8',\n ],\n [\n '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',\n '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1',\n ],\n [\n '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',\n '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9',\n ],\n ],\n },\n};\n","// from https://github.com/indutny/self-signed/blob/gh-pages/lib/asn1.js\n// Fedor, you are amazing.\n'use strict'\n\nvar asn1 = require('asn1.js')\n\nexports.certificate = require('./certificate')\n\nvar RSAPrivateKey = asn1.define('RSAPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('modulus').int(),\n this.key('publicExponent').int(),\n this.key('privateExponent').int(),\n this.key('prime1').int(),\n this.key('prime2').int(),\n this.key('exponent1').int(),\n this.key('exponent2').int(),\n this.key('coefficient').int()\n )\n})\nexports.RSAPrivateKey = RSAPrivateKey\n\nvar RSAPublicKey = asn1.define('RSAPublicKey', function () {\n this.seq().obj(\n this.key('modulus').int(),\n this.key('publicExponent').int()\n )\n})\nexports.RSAPublicKey = RSAPublicKey\n\nvar PublicKey = asn1.define('SubjectPublicKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPublicKey').bitstr()\n )\n})\nexports.PublicKey = PublicKey\n\nvar AlgorithmIdentifier = asn1.define('AlgorithmIdentifier', function () {\n this.seq().obj(\n this.key('algorithm').objid(),\n this.key('none').null_().optional(),\n this.key('curve').objid().optional(),\n this.key('params').seq().obj(\n this.key('p').int(),\n this.key('q').int(),\n this.key('g').int()\n ).optional()\n )\n})\n\nvar PrivateKeyInfo = asn1.define('PrivateKeyInfo', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPrivateKey').octstr()\n )\n})\nexports.PrivateKey = PrivateKeyInfo\nvar EncryptedPrivateKeyInfo = asn1.define('EncryptedPrivateKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').seq().obj(\n this.key('id').objid(),\n this.key('decrypt').seq().obj(\n this.key('kde').seq().obj(\n this.key('id').objid(),\n this.key('kdeparams').seq().obj(\n this.key('salt').octstr(),\n this.key('iters').int()\n )\n ),\n this.key('cipher').seq().obj(\n this.key('algo').objid(),\n this.key('iv').octstr()\n )\n )\n ),\n this.key('subjectPrivateKey').octstr()\n )\n})\n\nexports.EncryptedPrivateKey = EncryptedPrivateKeyInfo\n\nvar DSAPrivateKey = asn1.define('DSAPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('p').int(),\n this.key('q').int(),\n this.key('g').int(),\n this.key('pub_key').int(),\n this.key('priv_key').int()\n )\n})\nexports.DSAPrivateKey = DSAPrivateKey\n\nexports.DSAparam = asn1.define('DSAparam', function () {\n this.int()\n})\n\nvar ECPrivateKey = asn1.define('ECPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('privateKey').octstr(),\n this.key('parameters').optional().explicit(0).use(ECParameters),\n this.key('publicKey').optional().explicit(1).bitstr()\n )\n})\nexports.ECPrivateKey = ECPrivateKey\n\nvar ECParameters = asn1.define('ECParameters', function () {\n this.choice({\n namedCurve: this.objid()\n })\n})\n\nexports.signature = asn1.define('signature', function () {\n this.seq().obj(\n this.key('r').int(),\n this.key('s').int()\n )\n})\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","'use strict';\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar finished = require('./end-of-stream');\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\n\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\n\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this;\n\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n\n var lastPromise = this[kLastPromise];\n var promise;\n\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\n\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;","'use strict';\n\nconst base = exports;\n\nbase.Reporter = require('./reporter').Reporter;\nbase.DecoderBuffer = require('./buffer').DecoderBuffer;\nbase.EncoderBuffer = require('./buffer').EncoderBuffer;\nbase.Node = require('./node');\n","var AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar MODES = require('./modes')\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Decipher (mode, key, iv) {\n Transform.call(this)\n\n this._cache = new Splitter()\n this._last = void 0\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._mode = mode\n this._autopadding = true\n}\n\ninherits(Decipher, Transform)\n\nDecipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n while ((chunk = this._cache.get(this._autopadding))) {\n thing = this._mode.decrypt(this, chunk)\n out.push(thing)\n }\n return Buffer.concat(out)\n}\n\nDecipher.prototype._final = function () {\n var chunk = this._cache.flush()\n if (this._autopadding) {\n return unpad(this._mode.decrypt(this, chunk))\n } else if (chunk) {\n throw new Error('data not multiple of block length')\n }\n}\n\nDecipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function (autoPadding) {\n var out\n if (autoPadding) {\n if (this.cache.length > 16) {\n out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n } else {\n if (this.cache.length >= 16) {\n out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n }\n\n return null\n}\n\nSplitter.prototype.flush = function () {\n if (this.cache.length) return this.cache\n}\n\nfunction unpad (last) {\n var padded = last[15]\n if (padded < 1 || padded > 16) {\n throw new Error('unable to decrypt data')\n }\n var i = -1\n while (++i < padded) {\n if (last[(i + (16 - padded))] !== padded) {\n throw new Error('unable to decrypt data')\n }\n }\n if (padded === 16) return\n\n return last.slice(0, 16 - padded)\n}\n\nfunction createDecipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n if (typeof iv === 'string') iv = Buffer.from(iv)\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv, true)\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv, true)\n }\n\n return new Decipher(config.module, password, iv)\n}\n\nfunction createDecipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createDecipher = createDecipher\nexports.createDecipheriv = createDecipheriv\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nmodule.exports = Readable;\n/**/\n\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n/**/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\n\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/**/\n\n\nvar debugUtil = require('util');\n\nvar debug;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\n\nvar BufferList = require('./internal/streams/buffer_list');\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.\n\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n\nrequire('inherits')(Readable, Stream);\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n}; // Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n } // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n\n\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n\n return er;\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n var p = this._readableState.buffer.head;\n var content = '';\n\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n\n this._readableState.buffer.clear();\n\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n}; // Don't raise the hwm > 1GB\n\n\nvar MAX_HWM = 0x40000000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n } // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true;\n\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\n\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n } // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n\n\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n} // at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;\n }\n\n state.readingMore = false;\n} // abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\n\n\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n } // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true; // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n }\n\n return this;\n } // try to find the right one.\n\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused\n\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true; // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume'); // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n\n state.paused = false;\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n\n if (!state.reading) {\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n this._readableState.paused = true;\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\n while (state.flowing && stream.read() !== null) {\n ;\n }\n} // wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n\n return createReadableStreamAsyncIterator(this);\n };\n}\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n}); // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\n\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n\n return from(Readable, iterable, opts);\n };\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n\n return -1;\n}","module.exports = require('events').EventEmitter;\n","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n callback.apply(this, args);\n };\n}\n\nfunction noop() {}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n\n var writableEnded = stream._writableState && stream._writableState.finished;\n\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n\n var onclose = function onclose() {\n var err;\n\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\n\nmodule.exports = eos;","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array|Object} sig -\n* @param {Array|Point} [sig.R] - R point as Point or bytes\n* @param {Array|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array} [sig.Rencoded] - R point encoded\n* @param {Array} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n\n if (typeof sig !== 'object')\n sig = parseBytes(sig);\n\n if (Array.isArray(sig)) {\n sig = {\n R: sig.slice(0, eddsa.encodingLength),\n S: sig.slice(eddsa.encodingLength),\n };\n }\n\n assert(sig.R && sig.S, 'Signature without R or S');\n\n if (eddsa.isPoint(sig.R))\n this._R = sig.R;\n if (sig.S instanceof BN)\n this._S = sig.S;\n\n this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;\n this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;\n}\n\ncachedProperty(Signature, 'S', function S() {\n return this.eddsa.decodeInt(this.Sencoded());\n});\n\ncachedProperty(Signature, 'R', function R() {\n return this.eddsa.decodePoint(this.Rencoded());\n});\n\ncachedProperty(Signature, 'Rencoded', function Rencoded() {\n return this.eddsa.encodePoint(this.R());\n});\n\ncachedProperty(Signature, 'Sencoded', function Sencoded() {\n return this.eddsa.encodeInt(this.S());\n});\n\nSignature.prototype.toBytes = function toBytes() {\n return this.Rencoded().concat(this.Sencoded());\n};\n\nSignature.prototype.toHex = function toHex() {\n return utils.encode(this.toBytes(), 'hex').toUpperCase();\n};\n\nmodule.exports = Signature;\n","'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {\n pna.nextTick(emitErrorNT, this, err);\n }\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n pna.nextTick(emitErrorNT, _this, err);\n if (_this._writableState) {\n _this._writableState.errorEmitted = true;\n }\n } else if (cb) {\n cb(err);\n }\n });\n\n return this;\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy\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 if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\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 this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\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 parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\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 // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\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 this.strip();\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 if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\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","'use strict'; // undocumented cb() API, needed for core, not for public API\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n\n return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\n\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n'use strict';\n\nmodule.exports = Writable;\n/* */\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\n\n\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n/**/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\nrequire('inherits')(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n\n this.sync = true; // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n\n return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\n\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n errorOrDestroy(stream, err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n } // reuse the free corkReq.\n\n\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./sworn.vue?vue&type=style&index=0&id=5b5d067e&prod&lang=scss&scoped=true&\"","// adapted from https://github.com/apatil/pemstrip\nvar findProc = /Proc-Type: 4,ENCRYPTED[\\n\\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\\n\\r]+([0-9A-z\\n\\r+/=]+)[\\n\\r]+/m\nvar startRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m\nvar fullRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\\n\\r+/=]+)-----END \\1-----$/m\nvar evp = require('evp_bytestokey')\nvar ciphers = require('browserify-aes')\nvar Buffer = require('safe-buffer').Buffer\nmodule.exports = function (okey, password) {\n var key = okey.toString()\n var match = key.match(findProc)\n var decrypted\n if (!match) {\n var match2 = key.match(fullRegex)\n decrypted = Buffer.from(match2[2].replace(/[\\r\\n]/g, ''), 'base64')\n } else {\n var suite = 'aes' + match[1]\n var iv = Buffer.from(match[2], 'hex')\n var cipherText = Buffer.from(match[3].replace(/[\\r\\n]/g, ''), 'base64')\n var cipherKey = evp(password, iv.slice(0, 8), parseInt(match[1], 10)).key\n var out = []\n var cipher = ciphers.createDecipheriv(suite, cipherKey, iv)\n out.push(cipher.update(cipherText))\n out.push(cipher.final())\n decrypted = Buffer.concat(out)\n }\n var tag = key.match(startRegex)[1]\n return {\n tag: tag,\n data: decrypted\n }\n}\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar utils = require('./utils');\nvar Cipher = require('./cipher');\n\nfunction DESState() {\n this.tmp = new Array(2);\n this.keys = null;\n}\n\nfunction DES(options) {\n Cipher.call(this, options);\n\n var state = new DESState();\n this._desState = state;\n\n this.deriveKeys(state, options.key);\n}\ninherits(DES, Cipher);\nmodule.exports = DES;\n\nDES.create = function create(options) {\n return new DES(options);\n};\n\nvar shiftTable = [\n 1, 1, 2, 2, 2, 2, 2, 2,\n 1, 2, 2, 2, 2, 2, 2, 1\n];\n\nDES.prototype.deriveKeys = function deriveKeys(state, key) {\n state.keys = new Array(16 * 2);\n\n assert.equal(key.length, this.blockSize, 'Invalid key length');\n\n var kL = utils.readUInt32BE(key, 0);\n var kR = utils.readUInt32BE(key, 4);\n\n utils.pc1(kL, kR, state.tmp, 0);\n kL = state.tmp[0];\n kR = state.tmp[1];\n for (var i = 0; i < state.keys.length; i += 2) {\n var shift = shiftTable[i >>> 1];\n kL = utils.r28shl(kL, shift);\n kR = utils.r28shl(kR, shift);\n utils.pc2(kL, kR, state.keys, i);\n }\n};\n\nDES.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._desState;\n\n var l = utils.readUInt32BE(inp, inOff);\n var r = utils.readUInt32BE(inp, inOff + 4);\n\n // Initial Permutation\n utils.ip(l, r, state.tmp, 0);\n l = state.tmp[0];\n r = state.tmp[1];\n\n if (this.type === 'encrypt')\n this._encrypt(state, l, r, state.tmp, 0);\n else\n this._decrypt(state, l, r, state.tmp, 0);\n\n l = state.tmp[0];\n r = state.tmp[1];\n\n utils.writeUInt32BE(out, l, outOff);\n utils.writeUInt32BE(out, r, outOff + 4);\n};\n\nDES.prototype._pad = function _pad(buffer, off) {\n var value = buffer.length - off;\n for (var i = off; i < buffer.length; i++)\n buffer[i] = value;\n\n return true;\n};\n\nDES.prototype._unpad = function _unpad(buffer) {\n var pad = buffer[buffer.length - 1];\n for (var i = buffer.length - pad; i < buffer.length; i++)\n assert.equal(buffer[i], pad);\n\n return buffer.slice(0, buffer.length - pad);\n};\n\nDES.prototype._encrypt = function _encrypt(state, lStart, rStart, out, off) {\n var l = lStart;\n var r = rStart;\n\n // Apply f() x16 times\n for (var i = 0; i < state.keys.length; i += 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(r, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = r;\n r = (l ^ f) >>> 0;\n l = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(r, l, out, off);\n};\n\nDES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) {\n var l = rStart;\n var r = lStart;\n\n // Apply f() x16 times\n for (var i = state.keys.length - 2; i >= 0; i -= 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(l, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = l;\n l = (r ^ f) >>> 0;\n r = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(l, r, out, off);\n};\n","var inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar 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\nvar W = new Array(160)\n\nfunction Sha512 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha512, Hash)\n\nSha512.prototype.init = function () {\n this._ah = 0x6a09e667\n this._bh = 0xbb67ae85\n this._ch = 0x3c6ef372\n this._dh = 0xa54ff53a\n this._eh = 0x510e527f\n this._fh = 0x9b05688c\n this._gh = 0x1f83d9ab\n this._hh = 0x5be0cd19\n\n this._al = 0xf3bcc908\n this._bl = 0x84caa73b\n this._cl = 0xfe94f82b\n this._dl = 0x5f1d36f1\n this._el = 0xade682d1\n this._fl = 0x2b3e6c1f\n this._gl = 0xfb41bd6b\n this._hl = 0x137e2179\n\n return this\n}\n\nfunction Ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x, xl) {\n return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)\n}\n\nfunction sigma1 (x, xl) {\n return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)\n}\n\nfunction Gamma0 (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)\n}\n\nfunction Gamma0l (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)\n}\n\nfunction Gamma1 (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)\n}\n\nfunction Gamma1l (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)\n}\n\nfunction getCarry (a, b) {\n return (a >>> 0) < (b >>> 0) ? 1 : 0\n}\n\nSha512.prototype._update = function (M) {\n var W = this._w\n\n var ah = this._ah | 0\n var bh = this._bh | 0\n var ch = this._ch | 0\n var dh = this._dh | 0\n var eh = this._eh | 0\n var fh = this._fh | 0\n var gh = this._gh | 0\n var hh = this._hh | 0\n\n var al = this._al | 0\n var bl = this._bl | 0\n var cl = this._cl | 0\n var dl = this._dl | 0\n var el = this._el | 0\n var fl = this._fl | 0\n var gl = this._gl | 0\n var hl = this._hl | 0\n\n for (var i = 0; i < 32; i += 2) {\n W[i] = M.readInt32BE(i * 4)\n W[i + 1] = M.readInt32BE(i * 4 + 4)\n }\n for (; i < 160; i += 2) {\n var xh = W[i - 15 * 2]\n var xl = W[i - 15 * 2 + 1]\n var gamma0 = Gamma0(xh, xl)\n var gamma0l = Gamma0l(xl, xh)\n\n xh = W[i - 2 * 2]\n xl = W[i - 2 * 2 + 1]\n var gamma1 = Gamma1(xh, xl)\n var gamma1l = Gamma1l(xl, xh)\n\n // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n var Wi7h = W[i - 7 * 2]\n var Wi7l = W[i - 7 * 2 + 1]\n\n var Wi16h = W[i - 16 * 2]\n var Wi16l = W[i - 16 * 2 + 1]\n\n var Wil = (gamma0l + Wi7l) | 0\n var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0\n Wil = (Wil + gamma1l) | 0\n Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0\n Wil = (Wil + Wi16l) | 0\n Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0\n\n W[i] = Wih\n W[i + 1] = Wil\n }\n\n for (var j = 0; j < 160; j += 2) {\n Wih = W[j]\n Wil = W[j + 1]\n\n var majh = maj(ah, bh, ch)\n var majl = maj(al, bl, cl)\n\n var sigma0h = sigma0(ah, al)\n var sigma0l = sigma0(al, ah)\n var sigma1h = sigma1(eh, el)\n var sigma1l = sigma1(el, eh)\n\n // t1 = h + sigma1 + ch + K[j] + W[j]\n var Kih = K[j]\n var Kil = K[j + 1]\n\n var chh = Ch(eh, fh, gh)\n var chl = Ch(el, fl, gl)\n\n var t1l = (hl + sigma1l) | 0\n var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0\n t1l = (t1l + chl) | 0\n t1h = (t1h + chh + getCarry(t1l, chl)) | 0\n t1l = (t1l + Kil) | 0\n t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0\n t1l = (t1l + Wil) | 0\n t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0\n\n // t2 = sigma0 + maj\n var t2l = (sigma0l + majl) | 0\n var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0\n\n hh = gh\n hl = gl\n gh = fh\n gl = fl\n fh = eh\n fl = el\n el = (dl + t1l) | 0\n eh = (dh + t1h + getCarry(el, dl)) | 0\n dh = ch\n dl = cl\n ch = bh\n cl = bl\n bh = ah\n bl = al\n al = (t1l + t2l) | 0\n ah = (t1h + t2h + getCarry(al, t1l)) | 0\n }\n\n this._al = (this._al + al) | 0\n this._bl = (this._bl + bl) | 0\n this._cl = (this._cl + cl) | 0\n this._dl = (this._dl + dl) | 0\n this._el = (this._el + el) | 0\n this._fl = (this._fl + fl) | 0\n this._gl = (this._gl + gl) | 0\n this._hl = (this._hl + hl) | 0\n\n this._ah = (this._ah + ah + getCarry(this._al, al)) | 0\n this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0\n this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0\n this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0\n this._eh = (this._eh + eh + getCarry(this._el, el)) | 0\n this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0\n this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0\n this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0\n}\n\nSha512.prototype._hash = function () {\n var H = Buffer.allocUnsafe(64)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n writeInt64BE(this._gh, this._gl, 48)\n writeInt64BE(this._hh, this._hl, 56)\n\n return H\n}\n\nmodule.exports = Sha512\n","var xor = require('buffer-xor')\n\nfunction getBlock (self) {\n self._prev = self._cipher.encryptBlock(self._prev)\n return self._prev\n}\n\nexports.encrypt = function (self, chunk) {\n while (self._cache.length < chunk.length) {\n self._cache = Buffer.concat([self._cache, getBlock(self)])\n }\n\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n","var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad\n var i = -1\n var len = 8\n var out = 0\n var bit, value\n while (++i < len) {\n pad = self._cipher.encryptBlock(self._prev)\n bit = (byteParam & (1 << (7 - i))) ? 0x80 : 0\n value = pad[0] ^ bit\n out += ((value & 0x80) >> (i % 8))\n self._prev = shiftIn(self._prev, decrypt ? bit : value)\n }\n return out\n}\n\nfunction shiftIn (buffer, value) {\n var len = buffer.length\n var i = -1\n var out = Buffer.allocUnsafe(buffer.length)\n buffer = Buffer.concat([buffer, Buffer.from([value])])\n\n while (++i < len) {\n out[i] = buffer[i] << 1 | buffer[i + 1] >> (7)\n }\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n","var BN = require('bn.js')\nvar Buffer = require('safe-buffer').Buffer\n\nfunction withPublic (paddedMsg, key) {\n return Buffer.from(paddedMsg\n .toRed(BN.mont(key.modulus))\n .redPow(new BN(key.publicExponent))\n .fromRed()\n .toArray())\n}\n\nmodule.exports = withPublic\n","var BN = require('bn.js');\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar TWENTYFOUR = new BN(24);\nvar ELEVEN = new BN(11);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar primes = require('./generatePrime');\nvar randomBytes = require('randombytes');\nmodule.exports = DH;\n\nfunction setPublicKey(pub, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc);\n }\n this._pub = new BN(pub);\n return this;\n}\n\nfunction setPrivateKey(priv, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc);\n }\n this._priv = new BN(priv);\n return this;\n}\n\nvar primeCache = {};\nfunction checkPrime(prime, generator) {\n var gen = generator.toString('hex');\n var hex = [gen, prime.toString(16)].join('_');\n if (hex in primeCache) {\n return primeCache[hex];\n }\n var error = 0;\n\n if (prime.isEven() ||\n !primes.simpleSieve ||\n !primes.fermatTest(prime) ||\n !millerRabin.test(prime)) {\n //not a prime so +1\n error += 1;\n\n if (gen === '02' || gen === '05') {\n // we'd be able to check the generator\n // it would fail so +8\n error += 8;\n } else {\n //we wouldn't be able to test the generator\n // so +4\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n }\n if (!millerRabin.test(prime.shrn(1))) {\n //not a safe prime\n error += 2;\n }\n var rem;\n switch (gen) {\n case '02':\n if (prime.mod(TWENTYFOUR).cmp(ELEVEN)) {\n // unsuidable generator\n error += 8;\n }\n break;\n case '05':\n rem = prime.mod(TEN);\n if (rem.cmp(THREE) && rem.cmp(SEVEN)) {\n // prime mod 10 needs to equal 3 or 7\n error += 8;\n }\n break;\n default:\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n}\n\nfunction DH(prime, generator, malleable) {\n this.setGenerator(generator);\n this.__prime = new BN(prime);\n this._prime = BN.mont(this.__prime);\n this._primeLen = prime.length;\n this._pub = undefined;\n this._priv = undefined;\n this._primeCode = undefined;\n if (malleable) {\n this.setPublicKey = setPublicKey;\n this.setPrivateKey = setPrivateKey;\n } else {\n this._primeCode = 8;\n }\n}\nObject.defineProperty(DH.prototype, 'verifyError', {\n enumerable: true,\n get: function () {\n if (typeof this._primeCode !== 'number') {\n this._primeCode = checkPrime(this.__prime, this.__gen);\n }\n return this._primeCode;\n }\n});\nDH.prototype.generateKeys = function () {\n if (!this._priv) {\n this._priv = new BN(randomBytes(this._primeLen));\n }\n this._pub = this._gen.toRed(this._prime).redPow(this._priv).fromRed();\n return this.getPublicKey();\n};\n\nDH.prototype.computeSecret = function (other) {\n other = new BN(other);\n other = other.toRed(this._prime);\n var secret = other.redPow(this._priv).fromRed();\n var out = new Buffer(secret.toArray());\n var prime = this.getPrime();\n if (out.length < prime.length) {\n var front = new Buffer(prime.length - out.length);\n front.fill(0);\n out = Buffer.concat([front, out]);\n }\n return out;\n};\n\nDH.prototype.getPublicKey = function getPublicKey(enc) {\n return formatReturnValue(this._pub, enc);\n};\n\nDH.prototype.getPrivateKey = function getPrivateKey(enc) {\n return formatReturnValue(this._priv, enc);\n};\n\nDH.prototype.getPrime = function (enc) {\n return formatReturnValue(this.__prime, enc);\n};\n\nDH.prototype.getGenerator = function (enc) {\n return formatReturnValue(this._gen, enc);\n};\n\nDH.prototype.setGenerator = function (gen, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(gen)) {\n gen = new Buffer(gen, enc);\n }\n this.__gen = gen;\n this._gen = new BN(gen);\n return this;\n};\n\nfunction formatReturnValue(bn, enc) {\n var buf = new Buffer(bn.toArray());\n if (!enc) {\n return buf;\n } else {\n return buf.toString(enc);\n }\n}\n","// from https://github.com/Rantanen/node-dtls/blob/25a7dc861bda38cfeac93a723500eea4f0ac2e86/Certificate.js\n// thanks to @Rantanen\n\n'use strict'\n\nvar asn = require('asn1.js')\n\nvar Time = asn.define('Time', function () {\n this.choice({\n utcTime: this.utctime(),\n generalTime: this.gentime()\n })\n})\n\nvar AttributeTypeValue = asn.define('AttributeTypeValue', function () {\n this.seq().obj(\n this.key('type').objid(),\n this.key('value').any()\n )\n})\n\nvar AlgorithmIdentifier = asn.define('AlgorithmIdentifier', function () {\n this.seq().obj(\n this.key('algorithm').objid(),\n this.key('parameters').optional(),\n this.key('curve').objid().optional()\n )\n})\n\nvar SubjectPublicKeyInfo = asn.define('SubjectPublicKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPublicKey').bitstr()\n )\n})\n\nvar RelativeDistinguishedName = asn.define('RelativeDistinguishedName', function () {\n this.setof(AttributeTypeValue)\n})\n\nvar RDNSequence = asn.define('RDNSequence', function () {\n this.seqof(RelativeDistinguishedName)\n})\n\nvar Name = asn.define('Name', function () {\n this.choice({\n rdnSequence: this.use(RDNSequence)\n })\n})\n\nvar Validity = asn.define('Validity', function () {\n this.seq().obj(\n this.key('notBefore').use(Time),\n this.key('notAfter').use(Time)\n )\n})\n\nvar Extension = asn.define('Extension', function () {\n this.seq().obj(\n this.key('extnID').objid(),\n this.key('critical').bool().def(false),\n this.key('extnValue').octstr()\n )\n})\n\nvar TBSCertificate = asn.define('TBSCertificate', function () {\n this.seq().obj(\n this.key('version').explicit(0).int().optional(),\n this.key('serialNumber').int(),\n this.key('signature').use(AlgorithmIdentifier),\n this.key('issuer').use(Name),\n this.key('validity').use(Validity),\n this.key('subject').use(Name),\n this.key('subjectPublicKeyInfo').use(SubjectPublicKeyInfo),\n this.key('issuerUniqueID').implicit(1).bitstr().optional(),\n this.key('subjectUniqueID').implicit(2).bitstr().optional(),\n this.key('extensions').explicit(3).seqof(Extension).optional()\n )\n})\n\nvar X509Certificate = asn.define('X509Certificate', function () {\n this.seq().obj(\n this.key('tbsCertificate').use(TBSCertificate),\n this.key('signatureAlgorithm').use(AlgorithmIdentifier),\n this.key('signatureValue').bitstr()\n )\n})\n\nmodule.exports = X509Certificate\n","'use strict';\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar finished = require('./end-of-stream');\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\n\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\n\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this;\n\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n\n var lastPromise = this[kLastPromise];\n var promise;\n\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\n\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;","var randomBytes = require('randombytes');\nmodule.exports = findPrime;\nfindPrime.simpleSieve = simpleSieve;\nfindPrime.fermatTest = fermatTest;\nvar BN = require('bn.js');\nvar TWENTYFOUR = new BN(24);\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar ONE = new BN(1);\nvar TWO = new BN(2);\nvar FIVE = new BN(5);\nvar SIXTEEN = new BN(16);\nvar EIGHT = new BN(8);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar ELEVEN = new BN(11);\nvar FOUR = new BN(4);\nvar TWELVE = new BN(12);\nvar primes = null;\n\nfunction _getPrimes() {\n if (primes !== null)\n return primes;\n\n var limit = 0x100000;\n var res = [];\n res[0] = 2;\n for (var i = 1, k = 3; k < limit; k += 2) {\n var sqrt = Math.ceil(Math.sqrt(k));\n for (var j = 0; j < i && res[j] <= sqrt; j++)\n if (k % res[j] === 0)\n break;\n\n if (i !== j && res[j] <= sqrt)\n continue;\n\n res[i++] = k;\n }\n primes = res;\n return res;\n}\n\nfunction simpleSieve(p) {\n var primes = _getPrimes();\n\n for (var i = 0; i < primes.length; i++)\n if (p.modn(primes[i]) === 0) {\n if (p.cmpn(primes[i]) === 0) {\n return true;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\nfunction fermatTest(p) {\n var red = BN.mont(p);\n return TWO.toRed(red).redPow(p.subn(1)).fromRed().cmpn(1) === 0;\n}\n\nfunction findPrime(bits, gen) {\n if (bits < 16) {\n // this is what openssl does\n if (gen === 2 || gen === 5) {\n return new BN([0x8c, 0x7b]);\n } else {\n return new BN([0x8c, 0x27]);\n }\n }\n gen = new BN(gen);\n\n var num, n2;\n\n while (true) {\n num = new BN(randomBytes(Math.ceil(bits / 8)));\n while (num.bitLength() > bits) {\n num.ishrn(1);\n }\n if (num.isEven()) {\n num.iadd(ONE);\n }\n if (!num.testn(1)) {\n num.iadd(TWO);\n }\n if (!gen.cmp(TWO)) {\n while (num.mod(TWENTYFOUR).cmp(ELEVEN)) {\n num.iadd(FOUR);\n }\n } else if (!gen.cmp(FIVE)) {\n while (num.mod(TEN).cmp(THREE)) {\n num.iadd(FOUR);\n }\n }\n n2 = num.shrn(1);\n if (simpleSieve(n2) && simpleSieve(num) &&\n fermatTest(n2) && fermatTest(num) &&\n millerRabin.test(n2) && millerRabin.test(num)) {\n return num;\n }\n }\n\n}\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","var MD5 = require('md5.js')\n\nmodule.exports = function (buffer) {\n return new MD5().update(buffer).digest()\n}\n","module.exports = require('events').EventEmitter;\n","'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Buffer = require('safe-buffer').Buffer;\nvar util = require('util');\n\nfunction copyBuffer(src, target, offset) {\n src.copy(target, offset);\n}\n\nmodule.exports = function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n BufferList.prototype.push = function push(v) {\n var entry = { data: v, next: null };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n };\n\n BufferList.prototype.unshift = function unshift(v) {\n var entry = { data: v, next: this.head };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n };\n\n BufferList.prototype.shift = function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n };\n\n BufferList.prototype.clear = function clear() {\n this.head = this.tail = null;\n this.length = 0;\n };\n\n BufferList.prototype.join = function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) {\n ret += s + p.data;\n }return ret;\n };\n\n BufferList.prototype.concat = function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n if (this.length === 1) return this.head.data;\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n };\n\n return BufferList;\n}();\n\nif (util && util.inspect && util.inspect.custom) {\n module.exports.prototype[util.inspect.custom] = function () {\n var obj = util.inspect({ length: this.length });\n return this.constructor.name + ' ' + obj;\n };\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n'use strict';\n/**/\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/**/\n\n\nmodule.exports = Duplex;\n\nvar Readable = require('./_stream_readable');\n\nvar Writable = require('./_stream_writable');\n\nrequire('inherits')(Duplex, Readable);\n\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n process.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});","'use strict';\n\nexports.readUInt32BE = function readUInt32BE(bytes, off) {\n var res = (bytes[0 + off] << 24) |\n (bytes[1 + off] << 16) |\n (bytes[2 + off] << 8) |\n bytes[3 + off];\n return res >>> 0;\n};\n\nexports.writeUInt32BE = function writeUInt32BE(bytes, value, off) {\n bytes[0 + off] = value >>> 24;\n bytes[1 + off] = (value >>> 16) & 0xff;\n bytes[2 + off] = (value >>> 8) & 0xff;\n bytes[3 + off] = value & 0xff;\n};\n\nexports.ip = function ip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n }\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.rip = function rip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 0; i < 4; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n for (var i = 4; i < 8; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.pc1 = function pc1(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n // 7, 15, 23, 31, 39, 47, 55, 63\n // 6, 14, 22, 30, 39, 47, 55, 63\n // 5, 13, 21, 29, 39, 47, 55, 63\n // 4, 12, 20, 28\n for (var i = 7; i >= 5; i--) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n\n // 1, 9, 17, 25, 33, 41, 49, 57\n // 2, 10, 18, 26, 34, 42, 50, 58\n // 3, 11, 19, 27, 35, 43, 51, 59\n // 36, 44, 52, 60\n for (var i = 1; i <= 3; i++) {\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.r28shl = function r28shl(num, shift) {\n return ((num << shift) & 0xfffffff) | (num >>> (28 - shift));\n};\n\nvar pc2table = [\n // inL => outL\n 14, 11, 17, 4, 27, 23, 25, 0,\n 13, 22, 7, 18, 5, 9, 16, 24,\n 2, 20, 12, 21, 1, 8, 15, 26,\n\n // inR => outR\n 15, 4, 25, 19, 9, 1, 26, 16,\n 5, 11, 23, 8, 12, 7, 17, 0,\n 22, 3, 10, 14, 6, 20, 27, 24\n];\n\nexports.pc2 = function pc2(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n var len = pc2table.length >>> 1;\n for (var i = 0; i < len; i++) {\n outL <<= 1;\n outL |= (inL >>> pc2table[i]) & 0x1;\n }\n for (var i = len; i < pc2table.length; i++) {\n outR <<= 1;\n outR |= (inR >>> pc2table[i]) & 0x1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.expand = function expand(r, out, off) {\n var outL = 0;\n var outR = 0;\n\n outL = ((r & 1) << 5) | (r >>> 27);\n for (var i = 23; i >= 15; i -= 4) {\n outL <<= 6;\n outL |= (r >>> i) & 0x3f;\n }\n for (var i = 11; i >= 3; i -= 4) {\n outR |= (r >>> i) & 0x3f;\n outR <<= 6;\n }\n outR |= ((r & 0x1f) << 1) | (r >>> 31);\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nvar sTable = [\n 14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1,\n 3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8,\n 4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7,\n 15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13,\n\n 15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14,\n 9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5,\n 0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2,\n 5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9,\n\n 10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10,\n 1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1,\n 13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7,\n 11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12,\n\n 7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3,\n 1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9,\n 10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8,\n 15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14,\n\n 2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1,\n 8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6,\n 4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13,\n 15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3,\n\n 12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5,\n 0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8,\n 9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10,\n 7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13,\n\n 4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10,\n 3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6,\n 1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7,\n 10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12,\n\n 13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4,\n 10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2,\n 7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13,\n 0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11\n];\n\nexports.substitute = function substitute(inL, inR) {\n var out = 0;\n for (var i = 0; i < 4; i++) {\n var b = (inL >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n for (var i = 0; i < 4; i++) {\n var b = (inR >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[4 * 0x40 + i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n return out >>> 0;\n};\n\nvar permuteTable = [\n 16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22,\n 30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7\n];\n\nexports.permute = function permute(num) {\n var out = 0;\n for (var i = 0; i < permuteTable.length; i++) {\n out <<= 1;\n out |= (num >>> permuteTable[i]) & 0x1;\n }\n return out >>> 0;\n};\n\nexports.padSplit = function padSplit(num, size, group) {\n var str = num.toString(2);\n while (str.length < size)\n str = '0' + str;\n\n var out = [];\n for (var i = 0; i < size; i += group)\n out.push(str.slice(i, i + group));\n return out.join(' ');\n};\n","'use strict';\n\nconst inherits = require('inherits');\nconst Reporter = require('../base/reporter').Reporter;\nconst Buffer = require('safer-buffer').Buffer;\n\nfunction DecoderBuffer(base, options) {\n Reporter.call(this, options);\n if (!Buffer.isBuffer(base)) {\n this.error('Input not Buffer');\n return;\n }\n\n this.base = base;\n this.offset = 0;\n this.length = base.length;\n}\ninherits(DecoderBuffer, Reporter);\nexports.DecoderBuffer = DecoderBuffer;\n\nDecoderBuffer.isDecoderBuffer = function isDecoderBuffer(data) {\n if (data instanceof DecoderBuffer) {\n return true;\n }\n\n // Or accept compatible API\n const isCompatible = typeof data === 'object' &&\n Buffer.isBuffer(data.base) &&\n data.constructor.name === 'DecoderBuffer' &&\n typeof data.offset === 'number' &&\n typeof data.length === 'number' &&\n typeof data.save === 'function' &&\n typeof data.restore === 'function' &&\n typeof data.isEmpty === 'function' &&\n typeof data.readUInt8 === 'function' &&\n typeof data.skip === 'function' &&\n typeof data.raw === 'function';\n\n return isCompatible;\n};\n\nDecoderBuffer.prototype.save = function save() {\n return { offset: this.offset, reporter: Reporter.prototype.save.call(this) };\n};\n\nDecoderBuffer.prototype.restore = function restore(save) {\n // Return skipped data\n const res = new DecoderBuffer(this.base);\n res.offset = save.offset;\n res.length = this.offset;\n\n this.offset = save.offset;\n Reporter.prototype.restore.call(this, save.reporter);\n\n return res;\n};\n\nDecoderBuffer.prototype.isEmpty = function isEmpty() {\n return this.offset === this.length;\n};\n\nDecoderBuffer.prototype.readUInt8 = function readUInt8(fail) {\n if (this.offset + 1 <= this.length)\n return this.base.readUInt8(this.offset++, true);\n else\n return this.error(fail || 'DecoderBuffer overrun');\n};\n\nDecoderBuffer.prototype.skip = function skip(bytes, fail) {\n if (!(this.offset + bytes <= this.length))\n return this.error(fail || 'DecoderBuffer overrun');\n\n const res = new DecoderBuffer(this.base);\n\n // Share reporter state\n res._reporterState = this._reporterState;\n\n res.offset = this.offset;\n res.length = this.offset + bytes;\n this.offset += bytes;\n return res;\n};\n\nDecoderBuffer.prototype.raw = function raw(save) {\n return this.base.slice(save ? save.offset : this.offset, this.length);\n};\n\nfunction EncoderBuffer(value, reporter) {\n if (Array.isArray(value)) {\n this.length = 0;\n this.value = value.map(function(item) {\n if (!EncoderBuffer.isEncoderBuffer(item))\n item = new EncoderBuffer(item, reporter);\n this.length += item.length;\n return item;\n }, this);\n } else if (typeof value === 'number') {\n if (!(0 <= value && value <= 0xff))\n return reporter.error('non-byte EncoderBuffer value');\n this.value = value;\n this.length = 1;\n } else if (typeof value === 'string') {\n this.value = value;\n this.length = Buffer.byteLength(value);\n } else if (Buffer.isBuffer(value)) {\n this.value = value;\n this.length = value.length;\n } else {\n return reporter.error('Unsupported type: ' + typeof value);\n }\n}\nexports.EncoderBuffer = EncoderBuffer;\n\nEncoderBuffer.isEncoderBuffer = function isEncoderBuffer(data) {\n if (data instanceof EncoderBuffer) {\n return true;\n }\n\n // Or accept compatible API\n const isCompatible = typeof data === 'object' &&\n data.constructor.name === 'EncoderBuffer' &&\n typeof data.length === 'number' &&\n typeof data.join === 'function';\n\n return isCompatible;\n};\n\nEncoderBuffer.prototype.join = function join(out, offset) {\n if (!out)\n out = Buffer.alloc(this.length);\n if (!offset)\n offset = 0;\n\n if (this.length === 0)\n return out;\n\n if (Array.isArray(this.value)) {\n this.value.forEach(function(item) {\n item.join(out, offset);\n offset += item.length;\n });\n } else {\n if (typeof this.value === 'number')\n out[offset] = this.value;\n else if (typeof this.value === 'string')\n out.write(this.value, offset);\n else if (Buffer.isBuffer(this.value))\n this.value.copy(out, offset);\n offset += this.length;\n }\n\n return out;\n};\n","import './VGrid.sass'\n\nimport Vue, { VNode, PropOptions } from 'vue'\nimport mergeData from '../../util/mergeData'\nimport { upperFirst } from '../../util/helpers'\n\n// no xs\nconst breakpoints = ['sm', 'md', 'lg', 'xl']\n\nconst breakpointProps = (() => {\n return breakpoints.reduce((props, val) => {\n props[val] = {\n type: [Boolean, String, Number],\n default: false,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst offsetProps = (() => {\n return breakpoints.reduce((props, val) => {\n props['offset' + upperFirst(val)] = {\n type: [String, Number],\n default: null,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst orderProps = (() => {\n return breakpoints.reduce((props, val) => {\n props['order' + upperFirst(val)] = {\n type: [String, Number],\n default: null,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst propMap = {\n col: Object.keys(breakpointProps),\n offset: Object.keys(offsetProps),\n order: Object.keys(orderProps),\n}\n\nfunction breakpointClass (type: keyof typeof propMap, prop: string, val: boolean | string | number) {\n let className = type\n if (val == null || val === false) {\n return undefined\n }\n if (prop) {\n const breakpoint = prop.replace(type, '')\n className += `-${breakpoint}`\n }\n // Handling the boolean style prop when accepting [Boolean, String, Number]\n // means Vue will not convert to sm: true for us.\n // Since the default is false, an empty string indicates the prop's presence.\n if (type === 'col' && (val === '' || val === true)) {\n // .col-md\n return className.toLowerCase()\n }\n // .order-md-6\n className += `-${val}`\n return className.toLowerCase()\n}\n\nconst cache = new Map()\n\nexport default Vue.extend({\n name: 'v-col',\n functional: true,\n props: {\n cols: {\n type: [Boolean, String, Number],\n default: false,\n },\n ...breakpointProps,\n offset: {\n type: [String, Number],\n default: null,\n },\n ...offsetProps,\n order: {\n type: [String, Number],\n default: null,\n },\n ...orderProps,\n alignSelf: {\n type: String,\n default: null,\n validator: (str: any) => ['auto', 'start', 'end', 'center', 'baseline', 'stretch'].includes(str),\n },\n tag: {\n type: String,\n default: 'div',\n },\n },\n render (h, { props, data, children, parent }): VNode {\n // Super-fast memoization based on props, 5x faster than JSON.stringify\n let cacheKey = ''\n for (const prop in props) {\n cacheKey += String((props as any)[prop])\n }\n let classList = cache.get(cacheKey)\n\n if (!classList) {\n classList = []\n // Loop through `col`, `offset`, `order` breakpoint props\n let type: keyof typeof propMap\n for (type in propMap) {\n propMap[type].forEach(prop => {\n const value: string | number | boolean = (props as any)[prop]\n const className = breakpointClass(type, prop, value)\n if (className) classList!.push(className)\n })\n }\n\n const hasColClasses = classList.some(className => className.startsWith('col-'))\n\n classList.push({\n // Default to .col if no other col-{bp}-* classes generated nor `cols` specified.\n col: !hasColClasses || !props.cols,\n [`col-${props.cols}`]: props.cols,\n [`offset-${props.offset}`]: props.offset,\n [`order-${props.order}`]: props.order,\n [`align-self-${props.alignSelf}`]: props.alignSelf,\n })\n\n cache.set(cacheKey, classList)\n }\n\n return h(props.tag, mergeData(data, { class: classList }), children)\n },\n})\n","var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad = self._cipher.encryptBlock(self._prev)\n var out = pad[0] ^ byteParam\n\n self._prev = Buffer.concat([\n self._prev.slice(1),\n Buffer.from([decrypt ? byteParam : out])\n ])\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n","var Buffer = require('safe-buffer').Buffer\nvar Transform = require('stream').Transform\nvar StringDecoder = require('string_decoder').StringDecoder\nvar inherits = require('inherits')\n\nfunction CipherBase (hashMode) {\n Transform.call(this)\n this.hashMode = typeof hashMode === 'string'\n if (this.hashMode) {\n this[hashMode] = this._finalOrDigest\n } else {\n this.final = this._finalOrDigest\n }\n if (this._final) {\n this.__final = this._final\n this._final = null\n }\n this._decoder = null\n this._encoding = null\n}\ninherits(CipherBase, Transform)\n\nCipherBase.prototype.update = function (data, inputEnc, outputEnc) {\n if (typeof data === 'string') {\n data = Buffer.from(data, inputEnc)\n }\n\n var outData = this._update(data)\n if (this.hashMode) return this\n\n if (outputEnc) {\n outData = this._toString(outData, outputEnc)\n }\n\n return outData\n}\n\nCipherBase.prototype.setAutoPadding = function () {}\nCipherBase.prototype.getAuthTag = function () {\n throw new Error('trying to get auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAuthTag = function () {\n throw new Error('trying to set auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAAD = function () {\n throw new Error('trying to set aad in unsupported state')\n}\n\nCipherBase.prototype._transform = function (data, _, next) {\n var err\n try {\n if (this.hashMode) {\n this._update(data)\n } else {\n this.push(this._update(data))\n }\n } catch (e) {\n err = e\n } finally {\n next(err)\n }\n}\nCipherBase.prototype._flush = function (done) {\n var err\n try {\n this.push(this.__final())\n } catch (e) {\n err = e\n }\n\n done(err)\n}\nCipherBase.prototype._finalOrDigest = function (outputEnc) {\n var outData = this.__final() || Buffer.alloc(0)\n if (outputEnc) {\n outData = this._toString(outData, outputEnc, true)\n }\n return outData\n}\n\nCipherBase.prototype._toString = function (value, enc, fin) {\n if (!this._decoder) {\n this._decoder = new StringDecoder(enc)\n this._encoding = enc\n }\n\n if (this._encoding !== enc) throw new Error('can\\'t switch encodings')\n\n var out = this._decoder.write(value)\n if (fin) {\n out += this._decoder.end()\n }\n\n return out\n}\n\nmodule.exports = CipherBase\n","exports.publicEncrypt = require('./publicEncrypt')\nexports.privateDecrypt = require('./privateDecrypt')\n\nexports.privateEncrypt = function privateEncrypt (key, buf) {\n return exports.publicEncrypt(key, buf, true)\n}\n\nexports.publicDecrypt = function publicDecrypt (key, buf) {\n return exports.privateDecrypt(key, buf, true)\n}\n","'use strict';\n\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar utils = require('../utils');\n\nfunction MontCurve(conf) {\n Base.call(this, 'mont', 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.i4 = new BN(4).toRed(this.red).redInvm();\n this.two = new BN(2).toRed(this.red);\n this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n}\ninherits(MontCurve, Base);\nmodule.exports = MontCurve;\n\nMontCurve.prototype.validate = function validate(point) {\n var x = point.normalize().x;\n var x2 = x.redSqr();\n var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);\n var y = rhs.redSqrt();\n\n return y.redSqr().cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, z) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && z === null) {\n this.x = this.curve.one;\n this.z = this.curve.zero;\n } else {\n this.x = new BN(x, 16);\n this.z = new BN(z, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n }\n}\ninherits(Point, Base.BasePoint);\n\nMontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n return this.point(utils.toArray(bytes, enc), 1);\n};\n\nMontCurve.prototype.point = function point(x, z) {\n return new Point(this, x, z);\n};\n\nMontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nPoint.prototype.precompute = function precompute() {\n // No-op\n};\n\nPoint.prototype._encode = function _encode() {\n return this.getX().toArray('be', this.curve.p.byteLength());\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1] || curve.one);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.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\nPoint.prototype.dbl = function dbl() {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3\n // 2M + 2S + 4A\n\n // A = X1 + Z1\n var a = this.x.redAdd(this.z);\n // AA = A^2\n var aa = a.redSqr();\n // B = X1 - Z1\n var b = this.x.redSub(this.z);\n // BB = B^2\n var bb = b.redSqr();\n // C = AA - BB\n var c = aa.redSub(bb);\n // X3 = AA * BB\n var nx = aa.redMul(bb);\n // Z3 = C * (BB + A24 * C)\n var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.add = function add() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.diffAdd = function diffAdd(p, diff) {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3\n // 4M + 2S + 6A\n\n // A = X2 + Z2\n var a = this.x.redAdd(this.z);\n // B = X2 - Z2\n var b = this.x.redSub(this.z);\n // C = X3 + Z3\n var c = p.x.redAdd(p.z);\n // D = X3 - Z3\n var d = p.x.redSub(p.z);\n // DA = D * A\n var da = d.redMul(a);\n // CB = C * B\n var cb = c.redMul(b);\n // X5 = Z1 * (DA + CB)^2\n var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n // Z5 = X1 * (DA - CB)^2\n var nz = diff.x.redMul(da.redISub(cb).redSqr());\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.mul = function mul(k) {\n var t = k.clone();\n var a = this; // (N / 2) * Q + Q\n var b = this.curve.point(null, null); // (N / 2) * Q\n var c = this; // Q\n\n for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))\n bits.push(t.andln(1));\n\n for (var i = bits.length - 1; i >= 0; i--) {\n if (bits[i] === 0) {\n // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q\n a = a.diffAdd(b, c);\n // N * Q = 2 * ((N / 2) * Q + Q))\n b = b.dbl();\n } else {\n // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)\n b = a.diffAdd(b, c);\n // N * Q + Q = 2 * ((N / 2) * Q + Q)\n a = a.dbl();\n }\n }\n return b;\n};\n\nPoint.prototype.mulAdd = function mulAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.jumlAdd = function jumlAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.eq = function eq(other) {\n return this.getX().cmp(other.getX()) === 0;\n};\n\nPoint.prototype.normalize = function normalize() {\n this.x = this.x.redMul(this.z.redInvm());\n this.z = this.curve.one;\n return this;\n};\n\nPoint.prototype.getX = function getX() {\n // Normalize coordinates\n this.normalize();\n\n return this.x.fromRed();\n};\n","var exports = module.exports = function SHA (algorithm) {\n algorithm = algorithm.toLowerCase()\n\n var Algorithm = exports[algorithm]\n if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')\n\n return new Algorithm()\n}\n\nexports.sha = require('./sha')\nexports.sha1 = require('./sha1')\nexports.sha224 = require('./sha224')\nexports.sha256 = require('./sha256')\nexports.sha384 = require('./sha384')\nexports.sha512 = require('./sha512')\n","'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-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 || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\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.toArray(entropy, entropyEnc);\n add = utils.toArray(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 || 'hex');\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","var xor = require('buffer-xor')\nvar Buffer = require('safe-buffer').Buffer\nvar incr32 = require('../incr32')\n\nfunction getBlock (self) {\n var out = self._cipher.encryptBlockRaw(self._prev)\n incr32(self._prev)\n return out\n}\n\nvar blockSize = 16\nexports.encrypt = function (self, chunk) {\n var chunkNum = Math.ceil(chunk.length / blockSize)\n var start = self._cache.length\n self._cache = Buffer.concat([\n self._cache,\n Buffer.allocUnsafe(chunkNum * blockSize)\n ])\n for (var i = 0; i < chunkNum; i++) {\n var out = getBlock(self)\n var offset = start + i * blockSize\n self._cache.writeUInt32BE(out[0], offset + 0)\n self._cache.writeUInt32BE(out[1], offset + 4)\n self._cache.writeUInt32BE(out[2], offset + 8)\n self._cache.writeUInt32BE(out[3], offset + 12)\n }\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\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","// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer\nvar createHmac = require('create-hmac')\nvar crt = require('browserify-rsa')\nvar EC = require('elliptic').ec\nvar BN = require('bn.js')\nvar parseKeys = require('parse-asn1')\nvar curves = require('./curves.json')\n\nfunction sign (hash, key, hashType, signType, tag) {\n var priv = parseKeys(key)\n if (priv.curve) {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')\n return ecSign(hash, priv)\n } else if (priv.type === 'dsa') {\n if (signType !== 'dsa') throw new Error('wrong private key type')\n return dsaSign(hash, priv, hashType)\n } else {\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')\n }\n hash = Buffer.concat([tag, hash])\n var len = priv.modulus.byteLength()\n var pad = [0, 1]\n while (hash.length + pad.length + 1 < len) pad.push(0xff)\n pad.push(0x00)\n var i = -1\n while (++i < hash.length) pad.push(hash[i])\n\n var out = crt(pad, priv)\n return out\n}\n\nfunction ecSign (hash, priv) {\n var curveId = curves[priv.curve.join('.')]\n if (!curveId) throw new Error('unknown curve ' + priv.curve.join('.'))\n\n var curve = new EC(curveId)\n var key = curve.keyFromPrivate(priv.privateKey)\n var out = key.sign(hash)\n\n return Buffer.from(out.toDER())\n}\n\nfunction dsaSign (hash, priv, algo) {\n var x = priv.params.priv_key\n var p = priv.params.p\n var q = priv.params.q\n var g = priv.params.g\n var r = new BN(0)\n var k\n var H = bits2int(hash, q).mod(q)\n var s = false\n var kv = getKey(x, q, hash, algo)\n while (s === false) {\n k = makeKey(q, kv, algo)\n r = makeR(g, k, p, q)\n s = k.invm(q).imul(H.add(x.mul(r))).mod(q)\n if (s.cmpn(0) === 0) {\n s = false\n r = new BN(0)\n }\n }\n return toDER(r, s)\n}\n\nfunction toDER (r, s) {\n r = r.toArray()\n s = s.toArray()\n\n // Pad values\n if (r[0] & 0x80) r = [0].concat(r)\n if (s[0] & 0x80) s = [0].concat(s)\n\n var total = r.length + s.length + 4\n var res = [0x30, total, 0x02, r.length]\n res = res.concat(r, [0x02, s.length], s)\n return Buffer.from(res)\n}\n\nfunction getKey (x, q, hash, algo) {\n x = Buffer.from(x.toArray())\n if (x.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - x.length)\n x = Buffer.concat([zeros, x])\n }\n var hlen = hash.length\n var hbits = bits2octets(hash, q)\n var v = Buffer.alloc(hlen)\n v.fill(1)\n var k = Buffer.alloc(hlen)\n k = createHmac(algo, k).update(v).update(Buffer.from([0])).update(x).update(hbits).digest()\n v = createHmac(algo, k).update(v).digest()\n k = createHmac(algo, k).update(v).update(Buffer.from([1])).update(x).update(hbits).digest()\n v = createHmac(algo, k).update(v).digest()\n return { k: k, v: v }\n}\n\nfunction bits2int (obits, q) {\n var bits = new BN(obits)\n var shift = (obits.length << 3) - q.bitLength()\n if (shift > 0) bits.ishrn(shift)\n return bits\n}\n\nfunction bits2octets (bits, q) {\n bits = bits2int(bits, q)\n bits = bits.mod(q)\n var out = Buffer.from(bits.toArray())\n if (out.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - out.length)\n out = Buffer.concat([zeros, out])\n }\n return out\n}\n\nfunction makeKey (q, kv, algo) {\n var t\n var k\n\n do {\n t = Buffer.alloc(0)\n\n while (t.length * 8 < q.bitLength()) {\n kv.v = createHmac(algo, kv.k).update(kv.v).digest()\n t = Buffer.concat([t, kv.v])\n }\n\n k = bits2int(t, q)\n kv.k = createHmac(algo, kv.k).update(kv.v).update(Buffer.from([0])).digest()\n kv.v = createHmac(algo, kv.k).update(kv.v).digest()\n } while (k.cmp(q) !== -1)\n\n return k\n}\n\nfunction makeR (g, k, p, q) {\n return g.toRed(BN.mont(p)).redPow(k).fromRed().mod(q)\n}\n\nmodule.exports = sign\nmodule.exports.getKey = getKey\nmodule.exports.makeKey = makeKey\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Sha256 = require('./sha256')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(64)\n\nfunction Sha224 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha224, Sha256)\n\nSha224.prototype.init = function () {\n this._a = 0xc1059ed8\n this._b = 0x367cd507\n this._c = 0x3070dd17\n this._d = 0xf70e5939\n this._e = 0xffc00b31\n this._f = 0x68581511\n this._g = 0x64f98fa7\n this._h = 0xbefa4fa4\n\n return this\n}\n\nSha224.prototype._hash = function () {\n var H = Buffer.allocUnsafe(28)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n\n return H\n}\n\nmodule.exports = Sha224\n","'use strict'\n\nfunction oldBrowser () {\n throw new Error('secure random number generation not supported by this browser\\nuse chrome, FireFox or Internet Explorer 11')\n}\nvar safeBuffer = require('safe-buffer')\nvar randombytes = require('randombytes')\nvar Buffer = safeBuffer.Buffer\nvar kBufferMaxLength = safeBuffer.kMaxLength\nvar crypto = global.crypto || global.msCrypto\nvar kMaxUint32 = Math.pow(2, 32) - 1\nfunction assertOffset (offset, length) {\n if (typeof offset !== 'number' || offset !== offset) { // eslint-disable-line no-self-compare\n throw new TypeError('offset must be a number')\n }\n\n if (offset > kMaxUint32 || offset < 0) {\n throw new TypeError('offset must be a uint32')\n }\n\n if (offset > kBufferMaxLength || offset > length) {\n throw new RangeError('offset out of range')\n }\n}\n\nfunction assertSize (size, offset, length) {\n if (typeof size !== 'number' || size !== size) { // eslint-disable-line no-self-compare\n throw new TypeError('size must be a number')\n }\n\n if (size > kMaxUint32 || size < 0) {\n throw new TypeError('size must be a uint32')\n }\n\n if (size + offset > length || size > kBufferMaxLength) {\n throw new RangeError('buffer too small')\n }\n}\nif ((crypto && crypto.getRandomValues) || !process.browser) {\n exports.randomFill = randomFill\n exports.randomFillSync = randomFillSync\n} else {\n exports.randomFill = oldBrowser\n exports.randomFillSync = oldBrowser\n}\nfunction randomFill (buf, offset, size, cb) {\n if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n }\n\n if (typeof offset === 'function') {\n cb = offset\n offset = 0\n size = buf.length\n } else if (typeof size === 'function') {\n cb = size\n size = buf.length - offset\n } else if (typeof cb !== 'function') {\n throw new TypeError('\"cb\" argument must be a function')\n }\n assertOffset(offset, buf.length)\n assertSize(size, offset, buf.length)\n return actualFill(buf, offset, size, cb)\n}\n\nfunction actualFill (buf, offset, size, cb) {\n if (process.browser) {\n var ourBuf = buf.buffer\n var uint = new Uint8Array(ourBuf, offset, size)\n crypto.getRandomValues(uint)\n if (cb) {\n process.nextTick(function () {\n cb(null, buf)\n })\n return\n }\n return buf\n }\n if (cb) {\n randombytes(size, function (err, bytes) {\n if (err) {\n return cb(err)\n }\n bytes.copy(buf, offset)\n cb(null, buf)\n })\n return\n }\n var bytes = randombytes(size)\n bytes.copy(buf, offset)\n return buf\n}\nfunction randomFillSync (buf, offset, size) {\n if (typeof offset === 'undefined') {\n offset = 0\n }\n if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n }\n\n assertOffset(offset, buf.length)\n\n if (size === undefined) size = buf.length - offset\n\n assertSize(size, offset, buf.length)\n\n return actualFill(buf, offset, size)\n}\n","'use strict';\n\nvar utils = exports;\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 === '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 } else {\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 }\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","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","var bn = require('bn.js');\nvar brorand = require('brorand');\n\nfunction MillerRabin(rand) {\n this.rand = rand || new brorand.Rand();\n}\nmodule.exports = MillerRabin;\n\nMillerRabin.create = function create(rand) {\n return new MillerRabin(rand);\n};\n\nMillerRabin.prototype._randbelow = function _randbelow(n) {\n var len = n.bitLength();\n var min_bytes = Math.ceil(len / 8);\n\n // Generage random bytes until a number less than n is found.\n // This ensures that 0..n-1 have an equal probability of being selected.\n do\n var a = new bn(this.rand.generate(min_bytes));\n while (a.cmp(n) >= 0);\n\n return a;\n};\n\nMillerRabin.prototype._randrange = function _randrange(start, stop) {\n // Generate a random number greater than or equal to start and less than stop.\n var size = stop.sub(start);\n return start.add(this._randbelow(size));\n};\n\nMillerRabin.prototype.test = function test(n, k, cb) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n var prime = true;\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n if (cb)\n cb(a);\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return false;\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s)\n return false;\n }\n\n return prime;\n};\n\nMillerRabin.prototype.getDivisor = function getDivisor(n, k) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n\n var g = n.gcd(a);\n if (g.cmpn(1) !== 0)\n return g;\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return x.fromRed().subn(1).gcd(n);\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s) {\n x = x.redSqr();\n return x.fromRed().subn(1).gcd(n);\n }\n }\n\n return false;\n};\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./home.vue?vue&type=style&index=0&id=934dfa6c&prod&lang=scss&scoped=true&\"","var MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs\n\nmodule.exports = function (iterations, keylen) {\n if (typeof iterations !== 'number') {\n throw new TypeError('Iterations not a number')\n }\n\n if (iterations < 0) {\n throw new TypeError('Bad iterations')\n }\n\n if (typeof keylen !== 'number') {\n throw new TypeError('Key length not a number')\n }\n\n if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */\n throw new TypeError('Bad key length')\n }\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","var 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 * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha1 () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha1, Hash)\n\nSha1.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl1 (num) {\n return (num << 1) | (num >>> 31)\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha1.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha1.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha1\n","'use strict';\n\nconst asn1 = exports;\n\nasn1.bignum = require('bn.js');\n\nasn1.define = require('./asn1/api').define;\nasn1.base = require('./asn1/base');\nasn1.constants = require('./asn1/constants');\nasn1.decoders = require('./asn1/decoders');\nasn1.encoders = require('./asn1/encoders');\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 if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\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 this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\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 parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\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 // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\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 this.strip();\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 if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\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","var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\nvar GHASH = require('./ghash')\nvar xor = require('buffer-xor')\nvar incr32 = require('./incr32')\n\nfunction xorTest (a, b) {\n var out = 0\n if (a.length !== b.length) out++\n\n var len = Math.min(a.length, b.length)\n for (var i = 0; i < len; ++i) {\n out += (a[i] ^ b[i])\n }\n\n return out\n}\n\nfunction calcIv (self, iv, ck) {\n if (iv.length === 12) {\n self._finID = Buffer.concat([iv, Buffer.from([0, 0, 0, 1])])\n return Buffer.concat([iv, Buffer.from([0, 0, 0, 2])])\n }\n var ghash = new GHASH(ck)\n var len = iv.length\n var toPad = len % 16\n ghash.update(iv)\n if (toPad) {\n toPad = 16 - toPad\n ghash.update(Buffer.alloc(toPad, 0))\n }\n ghash.update(Buffer.alloc(8, 0))\n var ivBits = len * 8\n var tail = Buffer.alloc(8)\n tail.writeUIntBE(ivBits, 0, 8)\n ghash.update(tail)\n self._finID = ghash.state\n var out = Buffer.from(self._finID)\n incr32(out)\n return out\n}\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n var h = Buffer.alloc(4, 0)\n\n this._cipher = new aes.AES(key)\n var ck = this._cipher.encryptBlock(h)\n this._ghash = new GHASH(ck)\n iv = calcIv(this, iv, ck)\n\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._alen = 0\n this._len = 0\n this._mode = mode\n\n this._authTag = null\n this._called = false\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n if (!this._called && this._alen) {\n var rump = 16 - (this._alen % 16)\n if (rump < 16) {\n rump = Buffer.alloc(rump, 0)\n this._ghash.update(rump)\n }\n }\n\n this._called = true\n var out = this._mode.encrypt(this, chunk)\n if (this._decrypt) {\n this._ghash.update(chunk)\n } else {\n this._ghash.update(out)\n }\n this._len += chunk.length\n return out\n}\n\nStreamCipher.prototype._final = function () {\n if (this._decrypt && !this._authTag) throw new Error('Unsupported state or unable to authenticate data')\n\n var tag = xor(this._ghash.final(this._alen * 8, this._len * 8), this._cipher.encryptBlock(this._finID))\n if (this._decrypt && xorTest(tag, this._authTag)) throw new Error('Unsupported state or unable to authenticate data')\n\n this._authTag = tag\n this._cipher.scrub()\n}\n\nStreamCipher.prototype.getAuthTag = function getAuthTag () {\n if (this._decrypt || !Buffer.isBuffer(this._authTag)) throw new Error('Attempting to get auth tag in unsupported state')\n\n return this._authTag\n}\n\nStreamCipher.prototype.setAuthTag = function setAuthTag (tag) {\n if (!this._decrypt) throw new Error('Attempting to set auth tag in unsupported state')\n\n this._authTag = tag\n}\n\nStreamCipher.prototype.setAAD = function setAAD (buf) {\n if (this._called) throw new Error('Attempting to set AAD in unsupported state')\n\n this._ghash.update(buf)\n this._alen += buf.length\n}\n\nmodule.exports = StreamCipher\n","'use strict';\n\nconst Reporter = require('../base/reporter').Reporter;\nconst EncoderBuffer = require('../base/buffer').EncoderBuffer;\nconst DecoderBuffer = require('../base/buffer').DecoderBuffer;\nconst assert = require('minimalistic-assert');\n\n// Supported tags\nconst tags = [\n 'seq', 'seqof', 'set', 'setof', 'objid', 'bool',\n 'gentime', 'utctime', 'null_', 'enum', 'int', 'objDesc',\n 'bitstr', 'bmpstr', 'charstr', 'genstr', 'graphstr', 'ia5str', 'iso646str',\n 'numstr', 'octstr', 'printstr', 't61str', 'unistr', 'utf8str', 'videostr'\n];\n\n// Public methods list\nconst methods = [\n 'key', 'obj', 'use', 'optional', 'explicit', 'implicit', 'def', 'choice',\n 'any', 'contains'\n].concat(tags);\n\n// Overrided methods list\nconst overrided = [\n '_peekTag', '_decodeTag', '_use',\n '_decodeStr', '_decodeObjid', '_decodeTime',\n '_decodeNull', '_decodeInt', '_decodeBool', '_decodeList',\n\n '_encodeComposite', '_encodeStr', '_encodeObjid', '_encodeTime',\n '_encodeNull', '_encodeInt', '_encodeBool'\n];\n\nfunction Node(enc, parent, name) {\n const state = {};\n this._baseState = state;\n\n state.name = name;\n state.enc = enc;\n\n state.parent = parent || null;\n state.children = null;\n\n // State\n state.tag = null;\n state.args = null;\n state.reverseArgs = null;\n state.choice = null;\n state.optional = false;\n state.any = false;\n state.obj = false;\n state.use = null;\n state.useDecoder = null;\n state.key = null;\n state['default'] = null;\n state.explicit = null;\n state.implicit = null;\n state.contains = null;\n\n // Should create new instance on each method\n if (!state.parent) {\n state.children = [];\n this._wrap();\n }\n}\nmodule.exports = Node;\n\nconst stateProps = [\n 'enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice',\n 'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit',\n 'implicit', 'contains'\n];\n\nNode.prototype.clone = function clone() {\n const state = this._baseState;\n const cstate = {};\n stateProps.forEach(function(prop) {\n cstate[prop] = state[prop];\n });\n const res = new this.constructor(cstate.parent);\n res._baseState = cstate;\n return res;\n};\n\nNode.prototype._wrap = function wrap() {\n const state = this._baseState;\n methods.forEach(function(method) {\n this[method] = function _wrappedMethod() {\n const clone = new this.constructor(this);\n state.children.push(clone);\n return clone[method].apply(clone, arguments);\n };\n }, this);\n};\n\nNode.prototype._init = function init(body) {\n const state = this._baseState;\n\n assert(state.parent === null);\n body.call(this);\n\n // Filter children\n state.children = state.children.filter(function(child) {\n return child._baseState.parent === this;\n }, this);\n assert.equal(state.children.length, 1, 'Root node can have only one child');\n};\n\nNode.prototype._useArgs = function useArgs(args) {\n const state = this._baseState;\n\n // Filter children and args\n const children = args.filter(function(arg) {\n return arg instanceof this.constructor;\n }, this);\n args = args.filter(function(arg) {\n return !(arg instanceof this.constructor);\n }, this);\n\n if (children.length !== 0) {\n assert(state.children === null);\n state.children = children;\n\n // Replace parent to maintain backward link\n children.forEach(function(child) {\n child._baseState.parent = this;\n }, this);\n }\n if (args.length !== 0) {\n assert(state.args === null);\n state.args = args;\n state.reverseArgs = args.map(function(arg) {\n if (typeof arg !== 'object' || arg.constructor !== Object)\n return arg;\n\n const res = {};\n Object.keys(arg).forEach(function(key) {\n if (key == (key | 0))\n key |= 0;\n const value = arg[key];\n res[value] = key;\n });\n return res;\n });\n }\n};\n\n//\n// Overrided methods\n//\n\noverrided.forEach(function(method) {\n Node.prototype[method] = function _overrided() {\n const state = this._baseState;\n throw new Error(method + ' not implemented for encoding: ' + state.enc);\n };\n});\n\n//\n// Public methods\n//\n\ntags.forEach(function(tag) {\n Node.prototype[tag] = function _tagMethod() {\n const state = this._baseState;\n const args = Array.prototype.slice.call(arguments);\n\n assert(state.tag === null);\n state.tag = tag;\n\n this._useArgs(args);\n\n return this;\n };\n});\n\nNode.prototype.use = function use(item) {\n assert(item);\n const state = this._baseState;\n\n assert(state.use === null);\n state.use = item;\n\n return this;\n};\n\nNode.prototype.optional = function optional() {\n const state = this._baseState;\n\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.def = function def(val) {\n const state = this._baseState;\n\n assert(state['default'] === null);\n state['default'] = val;\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.explicit = function explicit(num) {\n const state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.explicit = num;\n\n return this;\n};\n\nNode.prototype.implicit = function implicit(num) {\n const state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.implicit = num;\n\n return this;\n};\n\nNode.prototype.obj = function obj() {\n const state = this._baseState;\n const args = Array.prototype.slice.call(arguments);\n\n state.obj = true;\n\n if (args.length !== 0)\n this._useArgs(args);\n\n return this;\n};\n\nNode.prototype.key = function key(newKey) {\n const state = this._baseState;\n\n assert(state.key === null);\n state.key = newKey;\n\n return this;\n};\n\nNode.prototype.any = function any() {\n const state = this._baseState;\n\n state.any = true;\n\n return this;\n};\n\nNode.prototype.choice = function choice(obj) {\n const state = this._baseState;\n\n assert(state.choice === null);\n state.choice = obj;\n this._useArgs(Object.keys(obj).map(function(key) {\n return obj[key];\n }));\n\n return this;\n};\n\nNode.prototype.contains = function contains(item) {\n const state = this._baseState;\n\n assert(state.use === null);\n state.contains = item;\n\n return this;\n};\n\n//\n// Decoding\n//\n\nNode.prototype._decode = function decode(input, options) {\n const state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return input.wrapResult(state.children[0]._decode(input, options));\n\n let result = state['default'];\n let present = true;\n\n let prevKey = null;\n if (state.key !== null)\n prevKey = input.enterKey(state.key);\n\n // Check if tag is there\n if (state.optional) {\n let tag = null;\n if (state.explicit !== null)\n tag = state.explicit;\n else if (state.implicit !== null)\n tag = state.implicit;\n else if (state.tag !== null)\n tag = state.tag;\n\n if (tag === null && !state.any) {\n // Trial and Error\n const save = input.save();\n try {\n if (state.choice === null)\n this._decodeGeneric(state.tag, input, options);\n else\n this._decodeChoice(input, options);\n present = true;\n } catch (e) {\n present = false;\n }\n input.restore(save);\n } else {\n present = this._peekTag(input, tag, state.any);\n\n if (input.isError(present))\n return present;\n }\n }\n\n // Push object on stack\n let prevObj;\n if (state.obj && present)\n prevObj = input.enterObject();\n\n if (present) {\n // Unwrap explicit values\n if (state.explicit !== null) {\n const explicit = this._decodeTag(input, state.explicit);\n if (input.isError(explicit))\n return explicit;\n input = explicit;\n }\n\n const start = input.offset;\n\n // Unwrap implicit and normal values\n if (state.use === null && state.choice === null) {\n let save;\n if (state.any)\n save = input.save();\n const body = this._decodeTag(\n input,\n state.implicit !== null ? state.implicit : state.tag,\n state.any\n );\n if (input.isError(body))\n return body;\n\n if (state.any)\n result = input.raw(save);\n else\n input = body;\n }\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), start, input.length, 'tagged');\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), input.offset, input.length, 'content');\n\n // Select proper method for tag\n if (state.any) {\n // no-op\n } else if (state.choice === null) {\n result = this._decodeGeneric(state.tag, input, options);\n } else {\n result = this._decodeChoice(input, options);\n }\n\n if (input.isError(result))\n return result;\n\n // Decode children\n if (!state.any && state.choice === null && state.children !== null) {\n state.children.forEach(function decodeChildren(child) {\n // NOTE: We are ignoring errors here, to let parser continue with other\n // parts of encoded data\n child._decode(input, options);\n });\n }\n\n // Decode contained/encoded by schema, only in bit or octet strings\n if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) {\n const data = new DecoderBuffer(result);\n result = this._getUse(state.contains, input._reporterState.obj)\n ._decode(data, options);\n }\n }\n\n // Pop object\n if (state.obj && present)\n result = input.leaveObject(prevObj);\n\n // Set key\n if (state.key !== null && (result !== null || present === true))\n input.leaveKey(prevKey, state.key, result);\n else if (prevKey !== null)\n input.exitKey(prevKey);\n\n return result;\n};\n\nNode.prototype._decodeGeneric = function decodeGeneric(tag, input, options) {\n const state = this._baseState;\n\n if (tag === 'seq' || tag === 'set')\n return null;\n if (tag === 'seqof' || tag === 'setof')\n return this._decodeList(input, tag, state.args[0], options);\n else if (/str$/.test(tag))\n return this._decodeStr(input, tag, options);\n else if (tag === 'objid' && state.args)\n return this._decodeObjid(input, state.args[0], state.args[1], options);\n else if (tag === 'objid')\n return this._decodeObjid(input, null, null, options);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._decodeTime(input, tag, options);\n else if (tag === 'null_')\n return this._decodeNull(input, options);\n else if (tag === 'bool')\n return this._decodeBool(input, options);\n else if (tag === 'objDesc')\n return this._decodeStr(input, tag, options);\n else if (tag === 'int' || tag === 'enum')\n return this._decodeInt(input, state.args && state.args[0], options);\n\n if (state.use !== null) {\n return this._getUse(state.use, input._reporterState.obj)\n ._decode(input, options);\n } else {\n return input.error('unknown tag: ' + tag);\n }\n};\n\nNode.prototype._getUse = function _getUse(entity, obj) {\n\n const state = this._baseState;\n // Create altered use decoder if implicit is set\n state.useDecoder = this._use(entity, obj);\n assert(state.useDecoder._baseState.parent === null);\n state.useDecoder = state.useDecoder._baseState.children[0];\n if (state.implicit !== state.useDecoder._baseState.implicit) {\n state.useDecoder = state.useDecoder.clone();\n state.useDecoder._baseState.implicit = state.implicit;\n }\n return state.useDecoder;\n};\n\nNode.prototype._decodeChoice = function decodeChoice(input, options) {\n const state = this._baseState;\n let result = null;\n let match = false;\n\n Object.keys(state.choice).some(function(key) {\n const save = input.save();\n const node = state.choice[key];\n try {\n const value = node._decode(input, options);\n if (input.isError(value))\n return false;\n\n result = { type: key, value: value };\n match = true;\n } catch (e) {\n input.restore(save);\n return false;\n }\n return true;\n }, this);\n\n if (!match)\n return input.error('Choice not matched');\n\n return result;\n};\n\n//\n// Encoding\n//\n\nNode.prototype._createEncoderBuffer = function createEncoderBuffer(data) {\n return new EncoderBuffer(data, this.reporter);\n};\n\nNode.prototype._encode = function encode(data, reporter, parent) {\n const state = this._baseState;\n if (state['default'] !== null && state['default'] === data)\n return;\n\n const result = this._encodeValue(data, reporter, parent);\n if (result === undefined)\n return;\n\n if (this._skipDefault(result, reporter, parent))\n return;\n\n return result;\n};\n\nNode.prototype._encodeValue = function encode(data, reporter, parent) {\n const state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return state.children[0]._encode(data, reporter || new Reporter());\n\n let result = null;\n\n // Set reporter to share it with a child class\n this.reporter = reporter;\n\n // Check if data is there\n if (state.optional && data === undefined) {\n if (state['default'] !== null)\n data = state['default'];\n else\n return;\n }\n\n // Encode children first\n let content = null;\n let primitive = false;\n if (state.any) {\n // Anything that was given is translated to buffer\n result = this._createEncoderBuffer(data);\n } else if (state.choice) {\n result = this._encodeChoice(data, reporter);\n } else if (state.contains) {\n content = this._getUse(state.contains, parent)._encode(data, reporter);\n primitive = true;\n } else if (state.children) {\n content = state.children.map(function(child) {\n if (child._baseState.tag === 'null_')\n return child._encode(null, reporter, data);\n\n if (child._baseState.key === null)\n return reporter.error('Child should have a key');\n const prevKey = reporter.enterKey(child._baseState.key);\n\n if (typeof data !== 'object')\n return reporter.error('Child expected, but input is not object');\n\n const res = child._encode(data[child._baseState.key], reporter, data);\n reporter.leaveKey(prevKey);\n\n return res;\n }, this).filter(function(child) {\n return child;\n });\n content = this._createEncoderBuffer(content);\n } else {\n if (state.tag === 'seqof' || state.tag === 'setof') {\n // TODO(indutny): this should be thrown on DSL level\n if (!(state.args && state.args.length === 1))\n return reporter.error('Too many args for : ' + state.tag);\n\n if (!Array.isArray(data))\n return reporter.error('seqof/setof, but data is not Array');\n\n const child = this.clone();\n child._baseState.implicit = null;\n content = this._createEncoderBuffer(data.map(function(item) {\n const state = this._baseState;\n\n return this._getUse(state.args[0], data)._encode(item, reporter);\n }, child));\n } else if (state.use !== null) {\n result = this._getUse(state.use, parent)._encode(data, reporter);\n } else {\n content = this._encodePrimitive(state.tag, data);\n primitive = true;\n }\n }\n\n // Encode data itself\n if (!state.any && state.choice === null) {\n const tag = state.implicit !== null ? state.implicit : state.tag;\n const cls = state.implicit === null ? 'universal' : 'context';\n\n if (tag === null) {\n if (state.use === null)\n reporter.error('Tag could be omitted only for .use()');\n } else {\n if (state.use === null)\n result = this._encodeComposite(tag, primitive, cls, content);\n }\n }\n\n // Wrap in explicit\n if (state.explicit !== null)\n result = this._encodeComposite(state.explicit, false, 'context', result);\n\n return result;\n};\n\nNode.prototype._encodeChoice = function encodeChoice(data, reporter) {\n const state = this._baseState;\n\n const node = state.choice[data.type];\n if (!node) {\n assert(\n false,\n data.type + ' not found in ' +\n JSON.stringify(Object.keys(state.choice)));\n }\n return node._encode(data.value, reporter);\n};\n\nNode.prototype._encodePrimitive = function encodePrimitive(tag, data) {\n const state = this._baseState;\n\n if (/str$/.test(tag))\n return this._encodeStr(data, tag);\n else if (tag === 'objid' && state.args)\n return this._encodeObjid(data, state.reverseArgs[0], state.args[1]);\n else if (tag === 'objid')\n return this._encodeObjid(data, null, null);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._encodeTime(data, tag);\n else if (tag === 'null_')\n return this._encodeNull();\n else if (tag === 'int' || tag === 'enum')\n return this._encodeInt(data, state.args && state.reverseArgs[0]);\n else if (tag === 'bool')\n return this._encodeBool(data);\n else if (tag === 'objDesc')\n return this._encodeStr(data, tag);\n else\n throw new Error('Unsupported tag: ' + tag);\n};\n\nNode.prototype._isNumstr = function isNumstr(str) {\n return /^[0-9 ]*$/.test(str);\n};\n\nNode.prototype._isPrintstr = function isPrintstr(str) {\n return /^[A-Za-z0-9 '()+,-./:=?]*$/.test(str);\n};\n","module.exports = function xor (a, b) {\n var len = a.length\n var i = -1\n while (++i < len) {\n a[i] ^= b[i]\n }\n return a\n}\n","'use strict';\n\nconst inherits = require('inherits');\n\nconst DEREncoder = require('./der');\n\nfunction PEMEncoder(entity) {\n DEREncoder.call(this, entity);\n this.enc = 'pem';\n}\ninherits(PEMEncoder, DEREncoder);\nmodule.exports = PEMEncoder;\n\nPEMEncoder.prototype.encode = function encode(data, options) {\n const buf = DEREncoder.prototype.encode.call(this, data);\n\n const p = buf.toString('base64');\n const out = [ '-----BEGIN ' + options.label + '-----' ];\n for (let i = 0; i < p.length; i += 64)\n out.push(p.slice(i, i + 64));\n out.push('-----END ' + options.label + '-----');\n return out.join('\\n');\n};\n","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","var MODES = require('./modes')\nvar AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Cipher (mode, key, iv) {\n Transform.call(this)\n\n this._cache = new Splitter()\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._mode = mode\n this._autopadding = true\n}\n\ninherits(Cipher, Transform)\n\nCipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n\n while ((chunk = this._cache.get())) {\n thing = this._mode.encrypt(this, chunk)\n out.push(thing)\n }\n\n return Buffer.concat(out)\n}\n\nvar PADDING = Buffer.alloc(16, 0x10)\n\nCipher.prototype._final = function () {\n var chunk = this._cache.flush()\n if (this._autopadding) {\n chunk = this._mode.encrypt(this, chunk)\n this._cipher.scrub()\n return chunk\n }\n\n if (!chunk.equals(PADDING)) {\n this._cipher.scrub()\n throw new Error('data not multiple of block length')\n }\n}\n\nCipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function () {\n if (this.cache.length > 15) {\n var out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n return null\n}\n\nSplitter.prototype.flush = function () {\n var len = 16 - this.cache.length\n var padBuff = Buffer.allocUnsafe(len)\n\n var i = -1\n while (++i < len) {\n padBuff.writeUInt8(len, i)\n }\n\n return Buffer.concat([this.cache, padBuff])\n}\n\nfunction createCipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n if (typeof iv === 'string') iv = Buffer.from(iv)\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv)\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv)\n }\n\n return new Cipher(config.module, password, iv)\n}\n\nfunction createCipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createCipheriv = createCipheriv\nexports.createCipher = createCipher\n","'use strict';\n\n// Helper\nfunction reverse(map) {\n const res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n const value = map[key];\n res[value] = key;\n });\n\n return res;\n}\n\nexports.tagClass = {\n 0: 'universal',\n 1: 'application',\n 2: 'context',\n 3: 'private'\n};\nexports.tagClassByName = reverse(exports.tagClass);\n\nexports.tag = {\n 0x00: 'end',\n 0x01: 'bool',\n 0x02: 'int',\n 0x03: 'bitstr',\n 0x04: 'octstr',\n 0x05: 'null_',\n 0x06: 'objid',\n 0x07: 'objDesc',\n 0x08: 'external',\n 0x09: 'real',\n 0x0a: 'enum',\n 0x0b: 'embed',\n 0x0c: 'utf8str',\n 0x0d: 'relativeOid',\n 0x10: 'seq',\n 0x11: 'set',\n 0x12: 'numstr',\n 0x13: 'printstr',\n 0x14: 't61str',\n 0x15: 'videostr',\n 0x16: 'ia5str',\n 0x17: 'utctime',\n 0x18: 'gentime',\n 0x19: 'graphstr',\n 0x1a: 'iso646str',\n 0x1b: 'genstr',\n 0x1c: 'unistr',\n 0x1d: 'charstr',\n 0x1e: 'bmpstr'\n};\nexports.tagByName = reverse(exports.tag);\n","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n","var Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (thing, encoding, name) {\n if (Buffer.isBuffer(thing)) {\n return thing\n } else if (typeof thing === 'string') {\n return Buffer.from(thing, encoding)\n } else if (ArrayBuffer.isView(thing)) {\n return Buffer.from(thing.buffer)\n } else {\n throw new TypeError(name + ' must be a string, a Buffer, a typed array or a DataView')\n }\n}\n","module.exports = function xor (a, b) {\n var length = Math.min(a.length, b.length)\n var buffer = new Buffer(length)\n\n for (var i = 0; i < length; ++i) {\n buffer[i] = a[i] ^ b[i]\n }\n\n return buffer\n}\n","'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\n\nconst DERDecoder = require('./der');\n\nfunction PEMDecoder(entity) {\n DERDecoder.call(this, entity);\n this.enc = 'pem';\n}\ninherits(PEMDecoder, DERDecoder);\nmodule.exports = PEMDecoder;\n\nPEMDecoder.prototype.decode = function decode(data, options) {\n const lines = data.toString().split(/[\\r\\n]+/g);\n\n const label = options.label.toUpperCase();\n\n const re = /^-----(BEGIN|END) ([^-]+)-----$/;\n let start = -1;\n let end = -1;\n for (let i = 0; i < lines.length; i++) {\n const match = lines[i].match(re);\n if (match === null)\n continue;\n\n if (match[2] !== label)\n continue;\n\n if (start === -1) {\n if (match[1] !== 'BEGIN')\n break;\n start = i;\n } else {\n if (match[1] !== 'END')\n break;\n end = i;\n break;\n }\n }\n if (start === -1 || end === -1)\n throw new Error('PEM section not found for: ' + label);\n\n const base64 = lines.slice(start + 1, end).join('');\n // Remove excessive symbols\n base64.replace(/[^a-z0-9+/=]+/gi, '');\n\n const input = Buffer.from(base64, 'base64');\n return DERDecoder.prototype.decode.call(this, input, options);\n};\n","'use strict'; // undocumented cb() API, needed for core, not for public API\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n\n return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\n\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n","'use strict'\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('readable-stream').Transform\nvar inherits = require('inherits')\n\nfunction throwIfNotStringOrBuffer (val, prefix) {\n if (!Buffer.isBuffer(val) && typeof val !== 'string') {\n throw new TypeError(prefix + ' must be a string or a buffer')\n }\n}\n\nfunction HashBase (blockSize) {\n Transform.call(this)\n\n this._block = Buffer.allocUnsafe(blockSize)\n this._blockSize = blockSize\n this._blockOffset = 0\n this._length = [0, 0, 0, 0]\n\n this._finalized = false\n}\n\ninherits(HashBase, Transform)\n\nHashBase.prototype._transform = function (chunk, encoding, callback) {\n var error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype._flush = function (callback) {\n var error = null\n try {\n this.push(this.digest())\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype.update = function (data, encoding) {\n throwIfNotStringOrBuffer(data, 'Data')\n if (this._finalized) throw new Error('Digest already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n // consume data\n var block = this._block\n var offset = 0\n while (this._blockOffset + data.length - offset >= this._blockSize) {\n for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]\n this._update()\n this._blockOffset = 0\n }\n while (offset < data.length) block[this._blockOffset++] = data[offset++]\n\n // update length\n for (var j = 0, carry = data.length * 8; carry > 0; ++j) {\n this._length[j] += carry\n carry = (this._length[j] / 0x0100000000) | 0\n if (carry > 0) this._length[j] -= 0x0100000000 * carry\n }\n\n return this\n}\n\nHashBase.prototype._update = function () {\n throw new Error('_update is not implemented')\n}\n\nHashBase.prototype.digest = function (encoding) {\n if (this._finalized) throw new Error('Digest already called')\n this._finalized = true\n\n var digest = this._digest()\n if (encoding !== undefined) digest = digest.toString(encoding)\n\n // reset state\n this._block.fill(0)\n this._blockOffset = 0\n for (var i = 0; i < 4; ++i) this._length[i] = 0\n\n return digest\n}\n\nHashBase.prototype._digest = function () {\n throw new Error('_digest is not implemented')\n}\n\nmodule.exports = HashBase\n","'use strict';\n\nvar hash = require('hash.js');\nvar curves = require('../curves');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EDDSA(curve) {\n assert(curve === 'ed25519', 'only tested with ed25519 so far');\n\n if (!(this instanceof EDDSA))\n return new EDDSA(curve);\n\n curve = curves[curve].curve;\n this.curve = curve;\n this.g = curve.g;\n this.g.precompute(curve.n.bitLength() + 1);\n\n this.pointClass = curve.point().constructor;\n this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n this.hash = hash.sha512;\n}\n\nmodule.exports = EDDSA;\n\n/**\n* @param {Array|String} message - message bytes\n* @param {Array|String|KeyPair} secret - secret bytes or a keypair\n* @returns {Signature} - signature\n*/\nEDDSA.prototype.sign = function sign(message, secret) {\n message = parseBytes(message);\n var key = this.keyFromSecret(secret);\n var r = this.hashInt(key.messagePrefix(), message);\n var R = this.g.mul(r);\n var Rencoded = this.encodePoint(R);\n var s_ = this.hashInt(Rencoded, key.pubBytes(), message)\n .mul(key.priv());\n var S = r.add(s_).umod(this.curve.n);\n return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });\n};\n\n/**\n* @param {Array} message - message bytes\n* @param {Array|String|Signature} sig - sig bytes\n* @param {Array|String|Point|KeyPair} pub - public key\n* @returns {Boolean} - true if public key matches sig of message\n*/\nEDDSA.prototype.verify = function verify(message, sig, pub) {\n message = parseBytes(message);\n sig = this.makeSignature(sig);\n var key = this.keyFromPublic(pub);\n var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n var SG = this.g.mul(sig.S());\n var RplusAh = sig.R().add(key.pub().mul(h));\n return RplusAh.eq(SG);\n};\n\nEDDSA.prototype.hashInt = function hashInt() {\n var hash = this.hash();\n for (var i = 0; i < arguments.length; i++)\n hash.update(arguments[i]);\n return utils.intFromLE(hash.digest()).umod(this.curve.n);\n};\n\nEDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n return KeyPair.fromPublic(this, pub);\n};\n\nEDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n return KeyPair.fromSecret(this, secret);\n};\n\nEDDSA.prototype.makeSignature = function makeSignature(sig) {\n if (sig instanceof Signature)\n return sig;\n return new Signature(this, sig);\n};\n\n/**\n* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2\n*\n* EDDSA defines methods for encoding and decoding points and integers. These are\n* helper convenience methods, that pass along to utility functions implied\n* parameters.\n*\n*/\nEDDSA.prototype.encodePoint = function encodePoint(point) {\n var enc = point.getY().toArray('le', this.encodingLength);\n enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;\n return enc;\n};\n\nEDDSA.prototype.decodePoint = function decodePoint(bytes) {\n bytes = utils.parseBytes(bytes);\n\n var lastIx = bytes.length - 1;\n var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);\n var xIsOdd = (bytes[lastIx] & 0x80) !== 0;\n\n var y = utils.intFromLE(normed);\n return this.curve.pointFromY(y, xIsOdd);\n};\n\nEDDSA.prototype.encodeInt = function encodeInt(num) {\n return num.toArray('le', this.encodingLength);\n};\n\nEDDSA.prototype.decodeInt = function decodeInt(bytes) {\n return utils.intFromLE(bytes);\n};\n\nEDDSA.prototype.isPoint = function isPoint(val) {\n return val instanceof this.pointClass;\n};\n","var DES = require('browserify-des')\nvar aes = require('browserify-aes/browser')\nvar aesModes = require('browserify-aes/modes')\nvar desModes = require('browserify-des/modes')\nvar ebtk = require('evp_bytestokey')\n\nfunction createCipher (suite, password) {\n suite = suite.toLowerCase()\n\n var keyLen, ivLen\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key\n ivLen = aesModes[suite].iv\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8\n ivLen = desModes[suite].iv\n } else {\n throw new TypeError('invalid suite type')\n }\n\n var keys = ebtk(password, false, keyLen, ivLen)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createDecipher (suite, password) {\n suite = suite.toLowerCase()\n\n var keyLen, ivLen\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key\n ivLen = aesModes[suite].iv\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8\n ivLen = desModes[suite].iv\n } else {\n throw new TypeError('invalid suite type')\n }\n\n var keys = ebtk(password, false, keyLen, ivLen)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createCipheriv (suite, key, iv) {\n suite = suite.toLowerCase()\n if (aesModes[suite]) return aes.createCipheriv(suite, key, iv)\n if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction createDecipheriv (suite, key, iv) {\n suite = suite.toLowerCase()\n if (aesModes[suite]) return aes.createDecipheriv(suite, key, iv)\n if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite, decrypt: true })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction getCiphers () {\n return Object.keys(desModes).concat(aes.getCiphers())\n}\n\nexports.createCipher = exports.Cipher = createCipher\nexports.createCipheriv = exports.Cipheriv = createCipheriv\nexports.createDecipher = exports.Decipher = createDecipher\nexports.createDecipheriv = exports.Decipheriv = createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n","'use strict';\n\nif (typeof process === 'undefined' ||\n !process.version ||\n process.version.indexOf('v0.') === 0 ||\n process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n module.exports = { nextTick: nextTick };\n} else {\n module.exports = process\n}\n\nfunction nextTick(fn, arg1, arg2, arg3) {\n if (typeof fn !== 'function') {\n throw new TypeError('\"callback\" argument must be a function');\n }\n var len = arguments.length;\n var args, i;\n switch (len) {\n case 0:\n case 1:\n return process.nextTick(fn);\n case 2:\n return process.nextTick(function afterTickOne() {\n fn.call(null, arg1);\n });\n case 3:\n return process.nextTick(function afterTickTwo() {\n fn.call(null, arg1, arg2);\n });\n case 4:\n return process.nextTick(function afterTickThree() {\n fn.call(null, arg1, arg2, arg3);\n });\n default:\n args = new Array(len - 1);\n i = 0;\n while (i < args.length) {\n args[i++] = arguments[i];\n }\n return process.nextTick(function afterTick() {\n fn.apply(null, args);\n });\n }\n}\n\n","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\n\nvar _require2 = require('util'),\n inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\n}();","// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer\nvar BN = require('bn.js')\nvar EC = require('elliptic').ec\nvar parseKeys = require('parse-asn1')\nvar curves = require('./curves.json')\n\nfunction verify (sig, hash, key, signType, tag) {\n var pub = parseKeys(key)\n if (pub.type === 'ec') {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')\n return ecVerify(sig, hash, pub)\n } else if (pub.type === 'dsa') {\n if (signType !== 'dsa') throw new Error('wrong public key type')\n return dsaVerify(sig, hash, pub)\n } else {\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')\n }\n hash = Buffer.concat([tag, hash])\n var len = pub.modulus.byteLength()\n var pad = [1]\n var padNum = 0\n while (hash.length + pad.length + 2 < len) {\n pad.push(0xff)\n padNum++\n }\n pad.push(0x00)\n var i = -1\n while (++i < hash.length) {\n pad.push(hash[i])\n }\n pad = Buffer.from(pad)\n var red = BN.mont(pub.modulus)\n sig = new BN(sig).toRed(red)\n\n sig = sig.redPow(new BN(pub.publicExponent))\n sig = Buffer.from(sig.fromRed().toArray())\n var out = padNum < 8 ? 1 : 0\n len = Math.min(sig.length, pad.length)\n if (sig.length !== pad.length) out = 1\n\n i = -1\n while (++i < len) out |= sig[i] ^ pad[i]\n return out === 0\n}\n\nfunction ecVerify (sig, hash, pub) {\n var curveId = curves[pub.data.algorithm.curve.join('.')]\n if (!curveId) throw new Error('unknown curve ' + pub.data.algorithm.curve.join('.'))\n\n var curve = new EC(curveId)\n var pubkey = pub.data.subjectPrivateKey.data\n\n return curve.verify(hash, sig, pubkey)\n}\n\nfunction dsaVerify (sig, hash, pub) {\n var p = pub.data.p\n var q = pub.data.q\n var g = pub.data.g\n var y = pub.data.pub_key\n var unpacked = parseKeys.signature.decode(sig, 'der')\n var s = unpacked.s\n var r = unpacked.r\n checkValue(s, q)\n checkValue(r, q)\n var montp = BN.mont(p)\n var w = s.invm(q)\n var v = g.toRed(montp)\n .redPow(new BN(hash).mul(w).mod(q))\n .fromRed()\n .mul(y.toRed(montp).redPow(r.mul(w).mod(q)).fromRed())\n .mod(p)\n .mod(q)\n return v.cmp(r) === 0\n}\n\nfunction checkValue (b, q) {\n if (b.cmpn(0) <= 0) throw new Error('invalid sig')\n if (b.cmp(q) >= q) throw new Error('invalid sig')\n}\n\nmodule.exports = verify\n","'use strict'\nvar inherits = require('inherits')\nvar MD5 = require('md5.js')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Base = require('cipher-base')\n\nfunction Hash (hash) {\n Base.call(this, 'digest')\n\n this._hash = hash\n}\n\ninherits(Hash, Base)\n\nHash.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHash.prototype._final = function () {\n return this._hash.digest()\n}\n\nmodule.exports = function createHash (alg) {\n alg = alg.toLowerCase()\n if (alg === 'md5') return new MD5()\n if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160()\n\n return new Hash(sha(alg))\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\nrequire('inherits')(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","var defaultEncoding\n/* istanbul ignore next */\nif (global.process && global.process.browser) {\n defaultEncoding = 'utf-8'\n} else if (global.process && global.process.version) {\n var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10)\n\n defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary'\n} else {\n defaultEncoding = 'utf-8'\n}\nmodule.exports = defaultEncoding\n","exports.pbkdf2 = require('./lib/async')\nexports.pbkdf2Sync = require('./lib/sync')\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar 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\nvar W = new Array(64)\n\nfunction Sha256 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha256, Hash)\n\nSha256.prototype.init = function () {\n this._a = 0x6a09e667\n this._b = 0xbb67ae85\n this._c = 0x3c6ef372\n this._d = 0xa54ff53a\n this._e = 0x510e527f\n this._f = 0x9b05688c\n this._g = 0x1f83d9ab\n this._h = 0x5be0cd19\n\n return this\n}\n\nfunction ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x) {\n return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)\n}\n\nfunction sigma1 (x) {\n return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)\n}\n\nfunction gamma0 (x) {\n return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)\n}\n\nfunction gamma1 (x) {\n return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)\n}\n\nSha256.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n var f = this._f | 0\n var g = this._g | 0\n var h = this._h | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0\n\n for (var j = 0; j < 64; ++j) {\n var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0\n var T2 = (sigma0(a) + maj(a, 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 this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n this._f = (f + this._f) | 0\n this._g = (g + this._g) | 0\n this._h = (h + this._h) | 0\n}\n\nSha256.prototype._hash = function () {\n var H = Buffer.allocUnsafe(32)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n H.writeInt32BE(this._h, 28)\n\n return H\n}\n\nmodule.exports = Sha256\n","// Types\nimport Vue, { VNode } from 'vue'\n\nexport default function VGrid (name: string) {\n /* @vue/component */\n return Vue.extend({\n name: `v-${name}`,\n\n functional: true,\n\n props: {\n id: String,\n tag: {\n type: String,\n default: 'div',\n },\n },\n\n render (h, { props, data, children }): VNode {\n data.staticClass = (`${name} ${data.staticClass || ''}`).trim()\n\n const { attrs } = data\n if (attrs) {\n // reset attrs to extract utility clases like pa-3\n data.attrs = {}\n const classes = Object.keys(attrs).filter(key => {\n // TODO: Remove once resolved\n // https://github.com/vuejs/vue/issues/7841\n if (key === 'slot') return false\n\n const value = attrs[key]\n\n // add back data attributes like data-test=\"foo\" but do not\n // add them as classes\n if (key.startsWith('data-')) {\n data.attrs![key] = value\n return false\n }\n\n return value || typeof value === 'string'\n })\n\n if (classes.length) data.staticClass += ` ${classes.join(' ')}`\n }\n\n if (props.id) {\n data.domProps = data.domProps || {}\n data.domProps.id = props.id\n }\n\n return h(props.tag, data, children)\n },\n })\n}\n","import './_grid.sass'\nimport './VGrid.sass'\n\nimport Grid from './grid'\n\nimport mergeData from '../../util/mergeData'\n\n/* @vue/component */\nexport default Grid('container').extend({\n name: 'v-container',\n functional: true,\n props: {\n id: String,\n tag: {\n type: String,\n default: 'div',\n },\n fluid: {\n type: Boolean,\n default: false,\n },\n },\n render (h, { props, data, children }) {\n let classes\n const { attrs } = data\n if (attrs) {\n // reset attrs to extract utility clases like pa-3\n data.attrs = {}\n classes = Object.keys(attrs).filter(key => {\n // TODO: Remove once resolved\n // https://github.com/vuejs/vue/issues/7841\n if (key === 'slot') return false\n\n const value = attrs[key]\n\n // add back data attributes like data-test=\"foo\" but do not\n // add them as classes\n if (key.startsWith('data-')) {\n data.attrs![key] = value\n return false\n }\n\n return value || typeof value === 'string'\n })\n }\n\n if (props.id) {\n data.domProps = data.domProps || {}\n data.domProps.id = props.id\n }\n\n return h(\n props.tag,\n mergeData(data, {\n staticClass: 'container',\n class: Array({\n 'container--fluid': props.fluid,\n }).concat(classes || []),\n }),\n children\n )\n },\n})\n","var BN = require('bn.js')\nvar randomBytes = require('randombytes')\n\nfunction blind (priv) {\n var r = getr(priv)\n var blinder = r.toRed(BN.mont(priv.modulus)).redPow(new BN(priv.publicExponent)).fromRed()\n return { blinder: blinder, unblinder: r.invm(priv.modulus) }\n}\n\nfunction getr (priv) {\n var len = priv.modulus.byteLength()\n var r\n do {\n r = new BN(randomBytes(len))\n } while (r.cmp(priv.modulus) >= 0 || !r.umod(priv.prime1) || !r.umod(priv.prime2))\n return r\n}\n\nfunction crt (msg, priv) {\n var blinds = blind(priv)\n var len = priv.modulus.byteLength()\n var blinded = new BN(msg).mul(blinds.blinder).umod(priv.modulus)\n var c1 = blinded.toRed(BN.mont(priv.prime1))\n var c2 = blinded.toRed(BN.mont(priv.prime2))\n var qinv = priv.coefficient\n var p = priv.prime1\n var q = priv.prime2\n var m1 = c1.redPow(priv.exponent1).fromRed()\n var m2 = c2.redPow(priv.exponent2).fromRed()\n var h = m1.isub(m2).imul(qinv).umod(p).imul(q)\n return m2.iadd(h).imul(blinds.unblinder).umod(priv.modulus).toArrayLike(Buffer, 'be', len)\n}\ncrt.getr = getr\n\nmodule.exports = crt\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","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar eos;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\n\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true; // request.destroy just do .end - .abort is what we want\n\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\n\nfunction call(fn) {\n fn();\n}\n\nfunction pipe(from, to) {\n return from.pipe(to);\n}\n\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\n\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\n\nmodule.exports = pipeline;","var parseKeys = require('parse-asn1')\nvar randomBytes = require('randombytes')\nvar createHash = require('create-hash')\nvar mgf = require('./mgf')\nvar xor = require('./xor')\nvar BN = require('bn.js')\nvar withPublic = require('./withPublic')\nvar crt = require('browserify-rsa')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function publicEncrypt (publicKey, msg, reverse) {\n var padding\n if (publicKey.padding) {\n padding = publicKey.padding\n } else if (reverse) {\n padding = 1\n } else {\n padding = 4\n }\n var key = parseKeys(publicKey)\n var paddedMsg\n if (padding === 4) {\n paddedMsg = oaep(key, msg)\n } else if (padding === 1) {\n paddedMsg = pkcs1(key, msg, reverse)\n } else if (padding === 3) {\n paddedMsg = new BN(msg)\n if (paddedMsg.cmp(key.modulus) >= 0) {\n throw new Error('data too long for modulus')\n }\n } else {\n throw new Error('unknown padding')\n }\n if (reverse) {\n return crt(paddedMsg, key)\n } else {\n return withPublic(paddedMsg, key)\n }\n}\n\nfunction oaep (key, msg) {\n var k = key.modulus.byteLength()\n var mLen = msg.length\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n var hLen = iHash.length\n var hLen2 = 2 * hLen\n if (mLen > k - hLen2 - 2) {\n throw new Error('message too long')\n }\n var ps = Buffer.alloc(k - mLen - hLen2 - 2)\n var dblen = k - hLen - 1\n var seed = randomBytes(hLen)\n var maskedDb = xor(Buffer.concat([iHash, ps, Buffer.alloc(1, 1), msg], dblen), mgf(seed, dblen))\n var maskedSeed = xor(seed, mgf(maskedDb, hLen))\n return new BN(Buffer.concat([Buffer.alloc(1), maskedSeed, maskedDb], k))\n}\nfunction pkcs1 (key, msg, reverse) {\n var mLen = msg.length\n var k = key.modulus.byteLength()\n if (mLen > k - 11) {\n throw new Error('message too long')\n }\n var ps\n if (reverse) {\n ps = Buffer.alloc(k - mLen - 3, 0xff)\n } else {\n ps = nonZero(k - mLen - 3)\n }\n return new BN(Buffer.concat([Buffer.from([0, reverse ? 1 : 2]), ps, Buffer.alloc(1), msg], k))\n}\nfunction nonZero (len) {\n var out = Buffer.allocUnsafe(len)\n var i = 0\n var cache = randomBytes(len * 2)\n var cur = 0\n var num\n while (i < len) {\n if (cur === cache.length) {\n cache = randomBytes(len * 2)\n cur = 0\n }\n num = cache[cur++]\n if (num) {\n out[i++] = num\n }\n }\n return out\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\nmodule.exports = Readable;\n\n/**/\nvar isArray = require('isarray');\n/**/\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function (emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\n/**/\nvar debugUtil = require('util');\nvar debug = void 0;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function () {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/BufferList');\nvar destroyImpl = require('./internal/streams/destroy');\nvar StringDecoder;\n\nutil.inherits(Readable, Stream);\n\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n var hwm = options.highWaterMark;\n var readableHwm = options.readableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n if (!(this instanceof Readable)) return new Readable(options);\n\n this._readableState = new ReadableState(options, this);\n\n // legacy\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\n\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n this.push(null);\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n stream.emit('error', new Error('stream.push() after EOF'));\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n }\n\n return needMoreData(state);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n}\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n};\n\n// Don't raise the hwm > 8MB\nvar MAX_HWM = 0x800000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n } else {\n state.length -= n;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n\n // emit 'readable' now to make sure it gets picked up.\n emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);\n }\n}\n\nfunction emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n pna.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;else len = state.length;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n this.emit('error', new Error('_read() is not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);\n\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n // If the user pushes more data while we're writing to dest then we'll end up\n // in ondata again. However, we only want to increase awaitDrain once because\n // dest will only emit one 'drain' event for the multiple writes.\n // => Introduce a guard on increasing awaitDrain.\n var increasedAwaitDrain = false;\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n increasedAwaitDrain = false;\n var ret = dest.write(chunk);\n if (false === ret && !increasedAwaitDrain) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', src._readableState.awaitDrain);\n src._readableState.awaitDrain++;\n increasedAwaitDrain = true;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function () {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = { hasUnpiped: false };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, unpipeInfo);\n }return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n\n dest.emit('unpipe', this, unpipeInfo);\n\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n\n if (ev === 'data') {\n // Start flowing on next tick if stream isn't explicitly paused\n if (this._readableState.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n var state = this._readableState;\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.emittedReadable = false;\n if (!state.reading) {\n pna.nextTick(nReadingNextTick, this);\n } else if (state.length) {\n emitReadable(this);\n }\n }\n }\n\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n resume(this, state);\n }\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n pna.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n if (!state.reading) {\n debug('resume read 0');\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n state.awaitDrain = 0;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null) {}\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function (method) {\n return function () {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._readableState.highWaterMark;\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = fromListPartial(n, state.buffer, state.decoder);\n }\n\n return ret;\n}\n\n// Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromListPartial(n, list, hasStrings) {\n var ret;\n if (n < list.head.data.length) {\n // slice is the same for buffers and strings\n ret = list.head.data.slice(0, n);\n list.head.data = list.head.data.slice(n);\n } else if (n === list.head.data.length) {\n // first chunk is a perfect match\n ret = list.shift();\n } else {\n // result spans more than one buffer\n ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n }\n return ret;\n}\n\n// Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBufferString(n, list) {\n var p = list.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\n// Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBuffer(n, list) {\n var ret = Buffer.allocUnsafe(n);\n var p = list.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n\n // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n if (!state.endEmitted) {\n state.ended = true;\n pna.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","var Buffer = require('safe-buffer').Buffer\nvar MD5 = require('md5.js')\n\n/* eslint-disable camelcase */\nfunction EVP_BytesToKey (password, salt, keyBits, ivLen) {\n if (!Buffer.isBuffer(password)) password = Buffer.from(password, 'binary')\n if (salt) {\n if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, 'binary')\n if (salt.length !== 8) throw new RangeError('salt should be Buffer with 8 byte length')\n }\n\n var keyLen = keyBits / 8\n var key = Buffer.alloc(keyLen)\n var iv = Buffer.alloc(ivLen || 0)\n var tmp = Buffer.alloc(0)\n\n while (keyLen > 0 || ivLen > 0) {\n var hash = new MD5()\n hash.update(tmp)\n hash.update(password)\n if (salt) hash.update(salt)\n tmp = hash.digest()\n\n var used = 0\n\n if (keyLen > 0) {\n var keyStart = key.length - keyLen\n used = Math.min(keyLen, tmp.length)\n tmp.copy(key, keyStart, 0, used)\n keyLen -= used\n }\n\n if (used < tmp.length && ivLen > 0) {\n var ivStart = iv.length - ivLen\n var length = Math.min(ivLen, tmp.length - used)\n tmp.copy(iv, ivStart, used, used + length)\n ivLen -= length\n }\n }\n\n tmp.fill(0)\n return { key: key, iv: iv }\n}\n\nmodule.exports = EVP_BytesToKey\n","import VBtn from './VBtn'\n\nexport { VBtn }\nexport default VBtn\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n keys.push(key);\n }return keys;\n};\n/**/\n\nmodule.exports = Duplex;\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\n\nutil.inherits(Duplex, Readable);\n\n{\n // avoid scope creep, the keys array can then be collected\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n\n Readable.call(this, options);\n Writable.call(this, options);\n\n if (options && options.readable === false) this.readable = false;\n\n if (options && options.writable === false) this.writable = false;\n\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n\n this.once('end', onend);\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // if we allow half-open state, or if the writable side ended,\n // then we're ok.\n if (this.allowHalfOpen || this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n pna.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});\n\nDuplex.prototype._destroy = function (err, cb) {\n this.push(null);\n this.end();\n\n pna.nextTick(cb, err);\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","'use strict'\nvar Buffer = require('buffer').Buffer\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\n\nvar ARRAY16 = new Array(16)\n\nvar zl = [\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 zr = [\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 sl = [\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 sr = [\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\nvar hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]\nvar hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]\n\nfunction RIPEMD160 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n}\n\ninherits(RIPEMD160, HashBase)\n\nRIPEMD160.prototype._update = function () {\n var words = ARRAY16\n for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4)\n\n var al = this._a | 0\n var bl = this._b | 0\n var cl = this._c | 0\n var dl = this._d | 0\n var el = this._e | 0\n\n var ar = this._a | 0\n var br = this._b | 0\n var cr = this._c | 0\n var dr = this._d | 0\n var er = this._e | 0\n\n // computation\n for (var i = 0; i < 80; i += 1) {\n var tl\n var tr\n if (i < 16) {\n tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i])\n tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i])\n } else if (i < 32) {\n tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i])\n tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i])\n } else if (i < 48) {\n tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i])\n tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i])\n } else if (i < 64) {\n tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i])\n tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i])\n } else { // if (i<80) {\n tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i])\n tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i])\n }\n\n al = el\n el = dl\n dl = rotl(cl, 10)\n cl = bl\n bl = tl\n\n ar = er\n er = dr\n dr = rotl(cr, 10)\n cr = br\n br = tr\n }\n\n // update state\n var t = (this._b + cl + dr) | 0\n this._b = (this._c + dl + er) | 0\n this._c = (this._d + el + ar) | 0\n this._d = (this._e + al + br) | 0\n this._e = (this._a + bl + cr) | 0\n this._a = t\n}\n\nRIPEMD160.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n buffer.writeInt32LE(this._e, 16)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fn1 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn2 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn3 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn4 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn5 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0\n}\n\nmodule.exports = RIPEMD160\n","var Buffer = require('safe-buffer').Buffer\n\n// prototype class for hash functions\nfunction Hash (blockSize, finalSize) {\n this._block = Buffer.alloc(blockSize)\n this._finalSize = finalSize\n this._blockSize = blockSize\n this._len = 0\n}\n\nHash.prototype.update = function (data, enc) {\n if (typeof data === 'string') {\n enc = enc || 'utf8'\n data = Buffer.from(data, enc)\n }\n\n var block = this._block\n var blockSize = this._blockSize\n var length = data.length\n var accum = this._len\n\n for (var offset = 0; offset < length;) {\n var assigned = accum % blockSize\n var remainder = Math.min(length - offset, blockSize - assigned)\n\n for (var i = 0; i < remainder; i++) {\n block[assigned + i] = data[offset + i]\n }\n\n accum += remainder\n offset += remainder\n\n if ((accum % blockSize) === 0) {\n this._update(block)\n }\n }\n\n this._len += length\n return this\n}\n\nHash.prototype.digest = function (enc) {\n var rem = this._len % this._blockSize\n\n this._block[rem] = 0x80\n\n // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n this._block.fill(0, rem + 1)\n\n if (rem >= this._finalSize) {\n this._update(this._block)\n this._block.fill(0)\n }\n\n var bits = this._len * 8\n\n // uint32\n if (bits <= 0xffffffff) {\n this._block.writeUInt32BE(bits, this._blockSize - 4)\n\n // uint64\n } else {\n var lowBits = (bits & 0xffffffff) >>> 0\n var highBits = (bits - lowBits) / 0x100000000\n\n this._block.writeUInt32BE(highBits, this._blockSize - 8)\n this._block.writeUInt32BE(lowBits, this._blockSize - 4)\n }\n\n this._update(this._block)\n var hash = this._hash()\n\n return enc ? hash.toString(enc) : hash\n}\n\nHash.prototype._update = function () {\n throw new Error('_update must be implemented by subclass')\n}\n\nmodule.exports = Hash\n","var Buffer = require('safe-buffer').Buffer\nvar createHash = require('create-hash')\nvar stream = require('readable-stream')\nvar inherits = require('inherits')\nvar sign = require('./sign')\nvar verify = require('./verify')\n\nvar algorithms = require('./algorithms.json')\nObject.keys(algorithms).forEach(function (key) {\n algorithms[key].id = Buffer.from(algorithms[key].id, 'hex')\n algorithms[key.toLowerCase()] = algorithms[key]\n})\n\nfunction Sign (algorithm) {\n stream.Writable.call(this)\n\n var data = algorithms[algorithm]\n if (!data) throw new Error('Unknown message digest')\n\n this._hashType = data.hash\n this._hash = createHash(data.hash)\n this._tag = data.id\n this._signType = data.sign\n}\ninherits(Sign, stream.Writable)\n\nSign.prototype._write = function _write (data, _, done) {\n this._hash.update(data)\n done()\n}\n\nSign.prototype.update = function update (data, enc) {\n if (typeof data === 'string') data = Buffer.from(data, enc)\n\n this._hash.update(data)\n return this\n}\n\nSign.prototype.sign = function signMethod (key, enc) {\n this.end()\n var hash = this._hash.digest()\n var sig = sign(hash, key, this._hashType, this._signType, this._tag)\n\n return enc ? sig.toString(enc) : sig\n}\n\nfunction Verify (algorithm) {\n stream.Writable.call(this)\n\n var data = algorithms[algorithm]\n if (!data) throw new Error('Unknown message digest')\n\n this._hash = createHash(data.hash)\n this._tag = data.id\n this._signType = data.sign\n}\ninherits(Verify, stream.Writable)\n\nVerify.prototype._write = function _write (data, _, done) {\n this._hash.update(data)\n done()\n}\n\nVerify.prototype.update = function update (data, enc) {\n if (typeof data === 'string') data = Buffer.from(data, enc)\n\n this._hash.update(data)\n return this\n}\n\nVerify.prototype.verify = function verifyMethod (key, sig, enc) {\n if (typeof sig === 'string') sig = Buffer.from(sig, enc)\n\n this.end()\n var hash = this._hash.digest()\n return verify(sig, hash, key, this._signType, this._tag)\n}\n\nfunction createSign (algorithm) {\n return new Sign(algorithm)\n}\n\nfunction createVerify (algorithm) {\n return new Verify(algorithm)\n}\n\nmodule.exports = {\n Sign: createSign,\n Verify: createVerify,\n createSign: createSign,\n createVerify: createVerify\n}\n","'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../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\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\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 === false) {\n return false;\n }\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 if (rlen === false) {\n return false;\n }\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 (slen === false) {\n return false;\n }\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) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\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/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n","var inherits = require('inherits')\nvar SHA512 = require('./sha512')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(160)\n\nfunction Sha384 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha384, SHA512)\n\nSha384.prototype.init = function () {\n this._ah = 0xcbbb9d5d\n this._bh = 0x629a292a\n this._ch = 0x9159015a\n this._dh = 0x152fecd8\n this._eh = 0x67332667\n this._fh = 0x8eb44a87\n this._gh = 0xdb0c2e0d\n this._hh = 0x47b5481d\n\n this._al = 0xc1059ed8\n this._bl = 0x367cd507\n this._cl = 0x3070dd17\n this._dl = 0xf70e5939\n this._el = 0xffc00b31\n this._fl = 0x68581511\n this._gl = 0x64f98fa7\n this._hl = 0xbefa4fa4\n\n return this\n}\n\nSha384.prototype._hash = function () {\n var H = Buffer.allocUnsafe(48)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n\n return H\n}\n\nmodule.exports = Sha384\n","'use strict';\n\nvar BN = require('bn.js');\nvar HmacDRBG = require('hmac-drbg');\nvar utils = require('../utils');\nvar curves = require('../curves');\nvar rand = require('brorand');\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(Object.prototype.hasOwnProperty.call(curves, options),\n 'Unknown curve ' + options);\n\n options = curves[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof 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 HmacDRBG({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\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 }\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 HmacDRBG({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; 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 var p;\n\n if (!this.curve._maxwellTrick) {\n 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 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","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\n\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\n\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n\n return Math.floor(hwm);\n } // Default value\n\n\n return state.objectMode ? 16 : 16 * 1024;\n}\n\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","var modeModules = {\n ECB: require('./ecb'),\n CBC: require('./cbc'),\n CFB: require('./cfb'),\n CFB8: require('./cfb8'),\n CFB1: require('./cfb1'),\n OFB: require('./ofb'),\n CTR: require('./ctr'),\n GCM: require('./ctr')\n}\n\nvar modes = require('./list.json')\n\nfor (var key in modes) {\n modes[key].module = modeModules[modes[key].mode]\n}\n\nmodule.exports = modes\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../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 if(!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\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","'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","(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 if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\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 this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\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 parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\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 // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\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 this.strip();\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 if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\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","function incr32 (iv) {\n var len = iv.length\n var item\n while (len--) {\n item = iv.readUInt8(len)\n if (item === 255) {\n iv.writeUInt8(0, len)\n } else {\n item++\n iv.writeUInt8(item, len)\n break\n }\n }\n}\nmodule.exports = incr32\n","var xor = require('buffer-xor')\n\nexports.encrypt = function (self, block) {\n var data = xor(block, self._prev)\n\n self._prev = self._cipher.encryptBlock(data)\n return self._prev\n}\n\nexports.decrypt = function (self, block) {\n var pad = self._prev\n\n self._prev = block\n var out = self._cipher.decryptBlock(block)\n\n return xor(out, pad)\n}\n","module.exports = require('./readable').PassThrough\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('Transition',{attrs:{\"name\":\"scroll-y-reverse-transition\",\"mode\":\"out-in\"}}),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('auth')],1),_c('v-main',[_c('v-container',{staticClass:\"cmpbk black--text\",attrs:{\"id\":\"home-container\"}},[_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"12\"}},[_c('h2',{staticClass:\"alice\"},[_vm._v(\"Manage Member Tests\")]),_c('xtabs')],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","// Mixins\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport Routable from '../../mixins/routable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport { keyCodes } from './../../util/helpers'\nimport mixins from '../../util/mixins'\nimport { ExtractVue } from './../../util/mixins'\n\n// Types\nimport { VNode } from 'vue/types'\n\n// Components\nimport VTabsBar from '../VTabs/VTabsBar'\n\nconst baseMixins = mixins(\n Routable,\n // Must be after routable\n // to overwrite activeClass\n GroupableFactory('tabsBar'),\n Themeable\n)\n\ntype VTabBarInstance = InstanceType\n\ninterface options extends ExtractVue {\n $el: HTMLElement\n tabsBar: VTabBarInstance\n}\n\nexport default baseMixins.extend().extend(\n /* @vue/component */\n).extend({\n name: 'v-tab',\n\n props: {\n ripple: {\n type: [Boolean, Object],\n default: true,\n },\n },\n\n data: () => ({\n proxyClass: 'v-tab--active',\n }),\n\n computed: {\n classes (): object {\n return {\n 'v-tab': true,\n ...Routable.options.computed.classes.call(this),\n 'v-tab--disabled': this.disabled,\n ...this.groupClasses,\n }\n },\n value (): any {\n let to = this.to || this.href\n\n if (to == null) return to\n\n if (this.$router &&\n this.to === Object(this.to)\n ) {\n const resolve = this.$router.resolve(\n this.to,\n this.$route,\n this.append\n )\n\n to = resolve.href\n }\n\n return to.replace('#', '')\n },\n },\n\n methods: {\n click (e: KeyboardEvent | MouseEvent): void {\n // Prevent keyboard actions\n // from children elements\n // within disabled tabs\n if (this.disabled) {\n e.preventDefault()\n return\n }\n\n // If user provides an\n // actual link, do not\n // prevent default\n if (this.href &&\n this.href.indexOf('#') > -1\n ) e.preventDefault()\n\n if (e.detail) this.$el.blur()\n\n this.$emit('click', e)\n\n this.to || this.toggle()\n },\n toggle () {\n // VItemGroup treats a change event as a click\n if (!this.isActive || (!this.tabsBar.mandatory && !this.to)) {\n this.$emit('change')\n }\n },\n },\n\n render (h): VNode {\n const { tag, data } = this.generateRouteLink()\n\n data.attrs = {\n ...data.attrs,\n 'aria-selected': String(this.isActive),\n role: 'tab',\n tabindex: this.disabled ? -1 : 0,\n }\n data.on = {\n ...data.on,\n keydown: (e: KeyboardEvent) => {\n if (e.keyCode === keyCodes.enter) this.click(e)\n\n this.$emit('keydown', e)\n },\n }\n\n return h(tag, data, this.$slots.default)\n },\n})\n","// Components\nimport VWindow from './VWindow'\n\n// Mixins\nimport Bootable from '../../mixins/bootable'\nimport { factory as GroupableFactory } from '../../mixins/groupable'\n\n// Directives\nimport Touch from '../../directives/touch'\n\n// Utilities\nimport { convertToUnit } from '../../util/helpers'\nimport mixins, { ExtractVue } from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\nconst baseMixins = mixins(\n Bootable,\n GroupableFactory('windowGroup', 'v-window-item', 'v-window')\n)\n\ninterface options extends ExtractVue {\n $el: HTMLElement\n windowGroup: InstanceType\n}\n\nexport default baseMixins.extend().extend(\n /* @vue/component */\n).extend({\n name: 'v-window-item',\n\n directives: {\n Touch,\n },\n\n props: {\n disabled: Boolean,\n reverseTransition: {\n type: [Boolean, String],\n default: undefined,\n },\n transition: {\n type: [Boolean, String],\n default: undefined,\n },\n value: {\n required: false,\n },\n },\n\n data () {\n return {\n isActive: false,\n inTransition: false,\n }\n },\n\n computed: {\n classes (): object {\n return this.groupClasses\n },\n computedTransition (): string | boolean {\n if (!this.windowGroup.internalReverse) {\n return typeof this.transition !== 'undefined'\n ? this.transition || ''\n : this.windowGroup.computedTransition\n }\n\n return typeof this.reverseTransition !== 'undefined'\n ? this.reverseTransition || ''\n : this.windowGroup.computedTransition\n },\n },\n\n methods: {\n genDefaultSlot () {\n return this.$slots.default\n },\n genWindowItem () {\n return this.$createElement('div', {\n staticClass: 'v-window-item',\n class: this.classes,\n directives: [{\n name: 'show',\n value: this.isActive,\n }],\n on: this.$listeners,\n }, this.genDefaultSlot())\n },\n onAfterTransition () {\n if (!this.inTransition) {\n return\n }\n\n // Finalize transition state.\n this.inTransition = false\n if (this.windowGroup.transitionCount > 0) {\n this.windowGroup.transitionCount--\n\n // Remove container height if we are out of transition.\n if (this.windowGroup.transitionCount === 0) {\n this.windowGroup.transitionHeight = undefined\n }\n }\n },\n onBeforeTransition () {\n if (this.inTransition) {\n return\n }\n\n // Initialize transition state here.\n this.inTransition = true\n if (this.windowGroup.transitionCount === 0) {\n // Set initial height for height transition.\n this.windowGroup.transitionHeight = convertToUnit(this.windowGroup.$el.clientHeight)\n }\n this.windowGroup.transitionCount++\n },\n onTransitionCancelled () {\n this.onAfterTransition() // This should have the same path as normal transition end.\n },\n onEnter (el: HTMLElement) {\n if (!this.inTransition) {\n return\n }\n\n this.$nextTick(() => {\n // Do not set height if no transition or cancelled.\n if (!this.computedTransition || !this.inTransition) {\n return\n }\n\n // Set transition target height.\n this.windowGroup.transitionHeight = convertToUnit(el.clientHeight)\n })\n },\n },\n\n render (h): VNode {\n return h('transition', {\n props: {\n name: this.computedTransition,\n },\n on: {\n // Handlers for enter windows.\n beforeEnter: this.onBeforeTransition,\n afterEnter: this.onAfterTransition,\n enterCancelled: this.onTransitionCancelled,\n\n // Handlers for leave windows.\n beforeLeave: this.onBeforeTransition,\n afterLeave: this.onAfterTransition,\n leaveCancelled: this.onTransitionCancelled,\n\n // Enter handler for height transition.\n enter: this.onEnter,\n },\n }, this.showLazyContent(() => [this.genWindowItem()]))\n },\n})\n","// Extensions\nimport VWindowItem from '../VWindow/VWindowItem'\n\n/* @vue/component */\nexport default VWindowItem.extend({\n name: 'v-tab-item',\n\n props: {\n id: String,\n },\n\n methods: {\n genWindowItem () {\n const item = VWindowItem.options.methods.genWindowItem.call(this)\n\n item.data!.domProps = item.data!.domProps || {}\n item.data!.domProps.id = this.id || this.value\n\n return item\n },\n },\n})\n","// Styles\nimport './VSlideGroup.sass'\n\n// Components\nimport VIcon from '../VIcon'\nimport { VFadeTransition } from '../transitions'\n\n// Extensions\nimport { BaseItemGroup } from '../VItemGroup/VItemGroup'\n\n// Mixins\nimport Mobile from '../../mixins/mobile'\n\n// Directives\nimport Resize from '../../directives/resize'\nimport Touch from '../../directives/touch'\n\n// Utilities\nimport mixins, { ExtractVue } from '../../util/mixins'\n\n// Types\nimport Vue, { VNode } from 'vue'\nimport { composedPath } from '../../util/helpers'\n\ninterface TouchEvent {\n touchstartX: number\n touchstartY: number\n touchmoveX: number\n touchmoveY: number\n stopPropagation: Function\n}\n\ninterface Widths {\n content: number\n wrapper: number\n}\n\ninterface options extends Vue {\n $refs: {\n content: HTMLElement\n wrapper: HTMLElement\n }\n}\n\nfunction bias (val: number) {\n const c = 0.501\n const x = Math.abs(val)\n return Math.sign(val) * (x / ((1 / c - 2) * (1 - x) + 1))\n}\n\nexport function calculateUpdatedOffset (\n selectedElement: HTMLElement,\n widths: Widths,\n rtl: boolean,\n currentScrollOffset: number\n): number {\n const clientWidth = selectedElement.clientWidth\n const offsetLeft = rtl\n ? (widths.content - selectedElement.offsetLeft - clientWidth)\n : selectedElement.offsetLeft\n\n if (rtl) {\n currentScrollOffset = -currentScrollOffset\n }\n\n const totalWidth = widths.wrapper + currentScrollOffset\n const itemOffset = clientWidth + offsetLeft\n const additionalOffset = clientWidth * 0.4\n\n if (offsetLeft <= currentScrollOffset) {\n currentScrollOffset = Math.max(offsetLeft - additionalOffset, 0)\n } else if (totalWidth <= itemOffset) {\n currentScrollOffset = Math.min(currentScrollOffset - (totalWidth - itemOffset - additionalOffset), widths.content - widths.wrapper)\n }\n\n return rtl ? -currentScrollOffset : currentScrollOffset\n}\n\nexport function calculateCenteredOffset (\n selectedElement: HTMLElement,\n widths: Widths,\n rtl: boolean\n): number {\n const { offsetLeft, clientWidth } = selectedElement\n\n if (rtl) {\n const offsetCentered = widths.content - offsetLeft - clientWidth / 2 - widths.wrapper / 2\n return -Math.min(widths.content - widths.wrapper, Math.max(0, offsetCentered))\n } else {\n const offsetCentered = offsetLeft + clientWidth / 2 - widths.wrapper / 2\n return Math.min(widths.content - widths.wrapper, Math.max(0, offsetCentered))\n }\n}\n\nexport const BaseSlideGroup = mixins\n/* eslint-enable indent */\n>(\n BaseItemGroup,\n Mobile,\n /* @vue/component */\n).extend({\n name: 'base-slide-group',\n\n directives: {\n Resize,\n Touch,\n },\n\n props: {\n activeClass: {\n type: String,\n default: 'v-slide-item--active',\n },\n centerActive: Boolean,\n nextIcon: {\n type: String,\n default: '$next',\n },\n prevIcon: {\n type: String,\n default: '$prev',\n },\n showArrows: {\n type: [Boolean, String],\n validator: (v: any) => (\n typeof v === 'boolean' || [\n 'always',\n 'desktop',\n 'mobile',\n ].includes(v)\n ),\n },\n },\n\n data: () => ({\n isOverflowing: false,\n resizeTimeout: 0,\n startX: 0,\n isSwipingHorizontal: false,\n isSwiping: false,\n scrollOffset: 0,\n widths: {\n content: 0,\n wrapper: 0,\n },\n }),\n\n computed: {\n canTouch (): boolean {\n return typeof window !== 'undefined'\n },\n __cachedNext (): VNode {\n return this.genTransition('next')\n },\n __cachedPrev (): VNode {\n return this.genTransition('prev')\n },\n classes (): object {\n return {\n ...BaseItemGroup.options.computed.classes.call(this),\n 'v-slide-group': true,\n 'v-slide-group--has-affixes': this.hasAffixes,\n 'v-slide-group--is-overflowing': this.isOverflowing,\n }\n },\n hasAffixes (): Boolean {\n switch (this.showArrows) {\n // Always show arrows on desktop & mobile\n case 'always': return true\n\n // Always show arrows on desktop\n case 'desktop': return !this.isMobile\n\n // Show arrows on mobile when overflowing.\n // This matches the default 2.2 behavior\n case true: return this.isOverflowing || Math.abs(this.scrollOffset) > 0\n\n // Always show on mobile\n case 'mobile': return (\n this.isMobile ||\n (this.isOverflowing || Math.abs(this.scrollOffset) > 0)\n )\n\n // https://material.io/components/tabs#scrollable-tabs\n // Always show arrows when\n // overflowed on desktop\n default: return (\n !this.isMobile &&\n (this.isOverflowing || Math.abs(this.scrollOffset) > 0)\n )\n }\n },\n hasNext (): boolean {\n if (!this.hasAffixes) return false\n\n const { content, wrapper } = this.widths\n\n // Check one scroll ahead to know the width of right-most item\n return content > Math.abs(this.scrollOffset) + wrapper\n },\n hasPrev (): boolean {\n return this.hasAffixes && this.scrollOffset !== 0\n },\n },\n\n watch: {\n internalValue: 'setWidths',\n // When overflow changes, the arrows alter\n // the widths of the content and wrapper\n // and need to be recalculated\n isOverflowing: 'setWidths',\n scrollOffset (val) {\n if (this.$vuetify.rtl) val = -val\n\n let scroll =\n val <= 0\n ? bias(-val)\n : val > this.widths.content - this.widths.wrapper\n ? -(this.widths.content - this.widths.wrapper) + bias(this.widths.content - this.widths.wrapper - val)\n : -val\n\n if (this.$vuetify.rtl) scroll = -scroll\n\n this.$refs.content.style.transform = `translateX(${scroll}px)`\n },\n },\n\n mounted () {\n if (typeof ResizeObserver !== 'undefined') {\n const obs = new ResizeObserver(() => {\n this.onResize()\n })\n obs.observe(this.$el)\n obs.observe(this.$refs.content)\n this.$on('hook:destroyed', () => {\n obs.disconnect()\n })\n } else {\n let itemsLength = 0\n this.$on('hook:beforeUpdate', () => {\n itemsLength = (this.$refs.content?.children || []).length\n })\n this.$on('hook:updated', () => {\n if (itemsLength === (this.$refs.content?.children || []).length) return\n this.setWidths()\n })\n }\n },\n\n methods: {\n onScroll () {\n this.$refs.wrapper.scrollLeft = 0\n },\n onFocusin (e: FocusEvent) {\n if (!this.isOverflowing) return\n\n // Focused element is likely to be the root of an item, so a\n // breadth-first search will probably find it in the first iteration\n for (const el of composedPath(e)) {\n for (const vm of this.items) {\n if (vm.$el === el) {\n this.scrollOffset = calculateUpdatedOffset(\n vm.$el as HTMLElement,\n this.widths,\n this.$vuetify.rtl,\n this.scrollOffset\n )\n return\n }\n }\n }\n },\n // Always generate next for scrollable hint\n genNext (): VNode | null {\n const slot = this.$scopedSlots.next\n ? this.$scopedSlots.next({})\n : this.$slots.next || this.__cachedNext\n\n return this.$createElement('div', {\n staticClass: 'v-slide-group__next',\n class: {\n 'v-slide-group__next--disabled': !this.hasNext,\n },\n on: {\n click: () => this.onAffixClick('next'),\n },\n key: 'next',\n }, [slot])\n },\n genContent (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-slide-group__content',\n ref: 'content',\n on: {\n focusin: this.onFocusin,\n },\n }, this.$slots.default)\n },\n genData (): object {\n return {\n class: this.classes,\n directives: [{\n name: 'resize',\n value: this.onResize,\n }],\n }\n },\n genIcon (location: 'prev' | 'next'): VNode | null {\n let icon = location\n\n if (this.$vuetify.rtl && location === 'prev') {\n icon = 'next'\n } else if (this.$vuetify.rtl && location === 'next') {\n icon = 'prev'\n }\n\n const upperLocation = `${location[0].toUpperCase()}${location.slice(1)}`\n const hasAffix = (this as any)[`has${upperLocation}`]\n\n if (\n !this.showArrows &&\n !hasAffix\n ) return null\n\n return this.$createElement(VIcon, {\n props: {\n disabled: !hasAffix,\n },\n }, (this as any)[`${icon}Icon`])\n },\n // Always generate prev for scrollable hint\n genPrev (): VNode | null {\n const slot = this.$scopedSlots.prev\n ? this.$scopedSlots.prev({})\n : this.$slots.prev || this.__cachedPrev\n\n return this.$createElement('div', {\n staticClass: 'v-slide-group__prev',\n class: {\n 'v-slide-group__prev--disabled': !this.hasPrev,\n },\n on: {\n click: () => this.onAffixClick('prev'),\n },\n key: 'prev',\n }, [slot])\n },\n genTransition (location: 'prev' | 'next') {\n return this.$createElement(VFadeTransition, [this.genIcon(location)])\n },\n genWrapper (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-slide-group__wrapper',\n directives: [{\n name: 'touch',\n value: {\n start: (e: TouchEvent) => this.overflowCheck(e, this.onTouchStart),\n move: (e: TouchEvent) => this.overflowCheck(e, this.onTouchMove),\n end: (e: TouchEvent) => this.overflowCheck(e, this.onTouchEnd),\n },\n }],\n ref: 'wrapper',\n on: {\n scroll: this.onScroll,\n },\n }, [this.genContent()])\n },\n calculateNewOffset (direction: 'prev' | 'next', widths: Widths, rtl: boolean, currentScrollOffset: number) {\n const sign = rtl ? -1 : 1\n const newAbosluteOffset = sign * currentScrollOffset +\n (direction === 'prev' ? -1 : 1) * widths.wrapper\n\n return sign * Math.max(Math.min(newAbosluteOffset, widths.content - widths.wrapper), 0)\n },\n onAffixClick (location: 'prev' | 'next') {\n this.$emit(`click:${location}`)\n this.scrollTo(location)\n },\n onResize () {\n /* istanbul ignore next */\n if (this._isDestroyed) return\n\n this.setWidths()\n },\n onTouchStart (e: TouchEvent) {\n const { content } = this.$refs\n\n this.startX = this.scrollOffset + e.touchstartX as number\n\n content.style.setProperty('transition', 'none')\n content.style.setProperty('willChange', 'transform')\n },\n onTouchMove (e: TouchEvent) {\n if (!this.canTouch) return\n\n if (!this.isSwiping) {\n // only calculate disableSwipeHorizontal during the first onTouchMove invoke\n // in order to ensure disableSwipeHorizontal value is consistent between onTouchStart and onTouchEnd\n const diffX = e.touchmoveX - e.touchstartX\n const diffY = e.touchmoveY - e.touchstartY\n this.isSwipingHorizontal = Math.abs(diffX) > Math.abs(diffY)\n this.isSwiping = true\n }\n\n if (this.isSwipingHorizontal) {\n // sliding horizontally\n this.scrollOffset = this.startX - e.touchmoveX\n // temporarily disable window vertical scrolling\n document.documentElement.style.overflowY = 'hidden'\n }\n },\n onTouchEnd () {\n if (!this.canTouch) return\n\n const { content, wrapper } = this.$refs\n const maxScrollOffset = content.clientWidth - wrapper.clientWidth\n\n content.style.setProperty('transition', null)\n content.style.setProperty('willChange', null)\n\n if (this.$vuetify.rtl) {\n /* istanbul ignore else */\n if (this.scrollOffset > 0 || !this.isOverflowing) {\n this.scrollOffset = 0\n } else if (this.scrollOffset <= -maxScrollOffset) {\n this.scrollOffset = -maxScrollOffset\n }\n } else {\n /* istanbul ignore else */\n if (this.scrollOffset < 0 || !this.isOverflowing) {\n this.scrollOffset = 0\n } else if (this.scrollOffset >= maxScrollOffset) {\n this.scrollOffset = maxScrollOffset\n }\n }\n\n this.isSwiping = false\n // rollback whole page scrolling to default\n document.documentElement.style.removeProperty('overflow-y')\n },\n overflowCheck (e: TouchEvent, fn: (e: TouchEvent) => void) {\n e.stopPropagation()\n this.isOverflowing && fn(e)\n },\n scrollIntoView /* istanbul ignore next */ () {\n if (!this.selectedItem && this.items.length) {\n const lastItemPosition = this.items[this.items.length - 1].$el.getBoundingClientRect()\n const wrapperPosition = this.$refs.wrapper.getBoundingClientRect()\n\n if (\n (this.$vuetify.rtl && wrapperPosition.right < lastItemPosition.right) ||\n (!this.$vuetify.rtl && wrapperPosition.left > lastItemPosition.left)\n ) {\n this.scrollTo('prev')\n }\n }\n\n if (!this.selectedItem) {\n return\n }\n\n if (\n this.selectedIndex === 0 ||\n (!this.centerActive && !this.isOverflowing)\n ) {\n this.scrollOffset = 0\n } else if (this.centerActive) {\n this.scrollOffset = calculateCenteredOffset(\n this.selectedItem.$el as HTMLElement,\n this.widths,\n this.$vuetify.rtl\n )\n } else if (this.isOverflowing) {\n this.scrollOffset = calculateUpdatedOffset(\n this.selectedItem.$el as HTMLElement,\n this.widths,\n this.$vuetify.rtl,\n this.scrollOffset\n )\n }\n },\n scrollTo /* istanbul ignore next */ (location: 'prev' | 'next') {\n this.scrollOffset = this.calculateNewOffset(location, {\n // Force reflow\n content: this.$refs.content ? this.$refs.content.clientWidth : 0,\n wrapper: this.$refs.wrapper ? this.$refs.wrapper.clientWidth : 0,\n }, this.$vuetify.rtl, this.scrollOffset)\n },\n setWidths () {\n window.requestAnimationFrame(() => {\n if (this._isDestroyed) return\n\n const { content, wrapper } = this.$refs\n\n this.widths = {\n content: content ? content.clientWidth : 0,\n wrapper: wrapper ? wrapper.clientWidth : 0,\n }\n\n // https://github.com/vuetifyjs/vuetify/issues/13212\n // We add +1 to the wrappers width to prevent an issue where the `clientWidth`\n // gets calculated wrongly by the browser if using a different zoom-level.\n this.isOverflowing = this.widths.wrapper + 1 < this.widths.content\n\n this.scrollIntoView()\n })\n },\n },\n\n render (h): VNode {\n return h('div', this.genData(), [\n this.genPrev(),\n this.genWrapper(),\n this.genNext(),\n ])\n },\n})\n\nexport default BaseSlideGroup.extend({\n name: 'v-slide-group',\n\n provide (): object {\n return {\n slideGroup: this,\n }\n },\n})\n","// Extensions\nimport { BaseSlideGroup } from '../VSlideGroup/VSlideGroup'\n\n// Components\nimport VTab from './VTab'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\nimport SSRBootable from '../../mixins/ssr-bootable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport { Route } from 'vue-router'\nimport { VNode } from 'vue'\n\ntype VTabInstance = InstanceType\n\nexport default mixins(\n BaseSlideGroup,\n SSRBootable,\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-tabs-bar',\n\n provide () {\n return {\n tabsBar: this,\n }\n },\n\n computed: {\n classes () {\n return {\n ...BaseSlideGroup.options.computed.classes.call(this),\n 'v-tabs-bar': true,\n 'v-tabs-bar--is-mobile': this.isMobile,\n // TODO: Remove this and move to v-slide-group\n 'v-tabs-bar--show-arrows': this.showArrows,\n ...this.themeClasses,\n }\n },\n },\n\n watch: {\n items: 'callSlider',\n internalValue: 'callSlider',\n $route: 'onRouteChange',\n },\n\n methods: {\n callSlider () {\n if (!this.isBooted) return\n\n this.$emit('call:slider')\n },\n genContent () {\n const render = BaseSlideGroup.options.methods.genContent.call(this)\n\n render.data = render.data || {}\n render.data.staticClass += ' v-tabs-bar__content'\n\n return render\n },\n onRouteChange (val: Route, oldVal: Route) {\n /* istanbul ignore next */\n if (this.mandatory) return\n\n const items = this.items as unknown as VTabInstance[]\n const newPath = val.path\n const oldPath = oldVal.path\n\n let hasNew = false\n let hasOld = false\n\n for (const item of items) {\n if (item.to === oldPath) hasOld = true\n else if (item.to === newPath) hasNew = true\n\n if (hasNew && hasOld) break\n }\n\n // If we have an old item and not a new one\n // it's assumed that the user navigated to\n // a path that is not present in the items\n if (!hasNew && hasOld) this.internalValue = undefined\n },\n },\n\n render (h): VNode {\n const render = BaseSlideGroup.options.render.call(this, h)\n\n render.data!.attrs = {\n role: 'tablist',\n }\n\n return render\n },\n})\n","// Styles\nimport './VWindow.sass'\n\n// Types\nimport { VNode, VNodeDirective } from 'vue/types/vnode'\nimport { PropType } from 'vue'\nimport { TouchHandlers } from 'vuetify/types'\n\n// Directives\nimport Touch from '../../directives/touch'\n\n// Components\nimport VBtn from '../VBtn'\nimport VIcon from '../VIcon'\nimport { BaseItemGroup } from '../VItemGroup/VItemGroup'\n\n/* @vue/component */\nexport default BaseItemGroup.extend({\n name: 'v-window',\n\n directives: { Touch },\n\n provide (): object {\n return {\n windowGroup: this,\n }\n },\n\n props: {\n activeClass: {\n type: String,\n default: 'v-window-item--active',\n },\n continuous: Boolean,\n mandatory: {\n type: Boolean,\n default: true,\n },\n nextIcon: {\n type: [Boolean, String],\n default: '$next',\n },\n prevIcon: {\n type: [Boolean, String],\n default: '$prev',\n },\n reverse: Boolean,\n showArrows: Boolean,\n showArrowsOnHover: Boolean,\n touch: Object as PropType,\n touchless: Boolean,\n value: {\n required: false,\n },\n vertical: Boolean,\n },\n\n data () {\n return {\n changedByDelimiters: false,\n internalHeight: undefined as undefined | string, // This can be fixed by child class.\n transitionHeight: undefined as undefined | string, // Intermediate height during transition.\n transitionCount: 0, // Number of windows in transition state.\n isBooted: false,\n isReverse: false,\n }\n },\n\n computed: {\n isActive (): boolean {\n return this.transitionCount > 0\n },\n classes (): object {\n return {\n ...BaseItemGroup.options.computed.classes.call(this),\n 'v-window--show-arrows-on-hover': this.showArrowsOnHover,\n }\n },\n computedTransition (): string {\n if (!this.isBooted) return ''\n\n const axis = this.vertical ? 'y' : 'x'\n const reverse = this.internalReverse ? !this.isReverse : this.isReverse\n const direction = reverse ? '-reverse' : ''\n\n return `v-window-${axis}${direction}-transition`\n },\n hasActiveItems (): boolean {\n return Boolean(\n this.items.find(item => !item.disabled)\n )\n },\n hasNext (): boolean {\n return this.continuous || this.internalIndex < this.items.length - 1\n },\n hasPrev (): boolean {\n return this.continuous || this.internalIndex > 0\n },\n internalIndex (): number {\n return this.items.findIndex((item, i) => {\n return this.internalValue === this.getValue(item, i)\n })\n },\n internalReverse (): boolean {\n return this.$vuetify.rtl ? !this.reverse : this.reverse\n },\n },\n\n watch: {\n internalIndex (val, oldVal) {\n this.isReverse = this.updateReverse(val, oldVal)\n },\n },\n\n mounted () {\n window.requestAnimationFrame(() => (this.isBooted = true))\n },\n\n methods: {\n genDefaultSlot () {\n return this.$slots.default\n },\n genContainer (): VNode {\n const children = [this.genDefaultSlot()]\n\n if (this.showArrows) {\n children.push(this.genControlIcons())\n }\n\n return this.$createElement('div', {\n staticClass: 'v-window__container',\n class: {\n 'v-window__container--is-active': this.isActive,\n },\n style: {\n height: this.internalHeight || this.transitionHeight,\n },\n }, children)\n },\n genIcon (\n direction: 'prev' | 'next',\n icon: string,\n click: () => void\n ) {\n const on = {\n click: (e: Event) => {\n e.stopPropagation()\n this.changedByDelimiters = true\n click()\n },\n }\n const attrs = {\n 'aria-label': this.$vuetify.lang.t(`$vuetify.carousel.${direction}`),\n }\n const children = this.$scopedSlots[direction]?.({\n on,\n attrs,\n }) ?? [this.$createElement(VBtn, {\n props: { icon: true },\n attrs,\n on,\n }, [\n this.$createElement(VIcon, {\n props: { large: true },\n }, icon),\n ])]\n\n return this.$createElement('div', {\n staticClass: `v-window__${direction}`,\n }, children)\n },\n genControlIcons () {\n const icons = []\n\n const prevIcon = this.$vuetify.rtl\n ? this.nextIcon\n : this.prevIcon\n\n /* istanbul ignore else */\n if (\n this.hasPrev &&\n prevIcon &&\n typeof prevIcon === 'string'\n ) {\n const icon = this.genIcon('prev', prevIcon, this.prev)\n icon && icons.push(icon)\n }\n\n const nextIcon = this.$vuetify.rtl\n ? this.prevIcon\n : this.nextIcon\n\n /* istanbul ignore else */\n if (\n this.hasNext &&\n nextIcon &&\n typeof nextIcon === 'string'\n ) {\n const icon = this.genIcon('next', nextIcon, this.next)\n icon && icons.push(icon)\n }\n\n return icons\n },\n getNextIndex (index: number): number {\n const nextIndex = (index + 1) % this.items.length\n const item = this.items[nextIndex]\n\n if (item.disabled) return this.getNextIndex(nextIndex)\n\n return nextIndex\n },\n getPrevIndex (index: number): number {\n const prevIndex = (index + this.items.length - 1) % this.items.length\n const item = this.items[prevIndex]\n\n if (item.disabled) return this.getPrevIndex(prevIndex)\n\n return prevIndex\n },\n next () {\n /* istanbul ignore if */\n if (!this.hasActiveItems || !this.hasNext) return\n\n const nextIndex = this.getNextIndex(this.internalIndex)\n const item = this.items[nextIndex]\n\n this.internalValue = this.getValue(item, nextIndex)\n },\n prev () {\n /* istanbul ignore if */\n if (!this.hasActiveItems || !this.hasPrev) return\n\n const lastIndex = this.getPrevIndex(this.internalIndex)\n const item = this.items[lastIndex]\n\n this.internalValue = this.getValue(item, lastIndex)\n },\n updateReverse (val: number, oldVal: number) {\n const itemsLength = this.items.length\n const lastIndex = itemsLength - 1\n\n if (itemsLength <= 2) return val < oldVal\n\n if (val === lastIndex && oldVal === 0) {\n return true\n } else if (val === 0 && oldVal === lastIndex) {\n return false\n } else {\n return val < oldVal\n }\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-window',\n class: this.classes,\n directives: [] as VNodeDirective[],\n }\n\n if (!this.touchless) {\n const value = this.touch || {\n left: () => {\n this.$vuetify.rtl ? this.prev() : this.next()\n },\n right: () => {\n this.$vuetify.rtl ? this.next() : this.prev()\n },\n end: (e: TouchEvent) => {\n e.stopPropagation()\n },\n start: (e: TouchEvent) => {\n e.stopPropagation()\n },\n }\n\n data.directives.push({\n name: 'touch',\n value,\n })\n }\n\n return h('div', data, [this.genContainer()])\n },\n})\n","// Extensions\nimport VWindow from '../VWindow/VWindow'\n\n// Types & Components\nimport { BaseItemGroup, GroupableInstance } from './../VItemGroup/VItemGroup'\n\n/* @vue/component */\nexport default VWindow.extend({\n name: 'v-tabs-items',\n\n props: {\n mandatory: {\n type: Boolean,\n default: false,\n },\n },\n\n computed: {\n classes (): object {\n return {\n ...VWindow.options.computed.classes.call(this),\n 'v-tabs-items': true,\n }\n },\n isDark (): boolean {\n return this.rootIsDark\n },\n },\n\n methods: {\n getValue (item: GroupableInstance, i: number) {\n return item.id || BaseItemGroup.options.methods.getValue.call(this, item, i)\n },\n },\n})\n","// Mixins\nimport Colorable from '../../mixins/colorable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue/types'\n\n/* @vue/component */\nexport default mixins(Colorable).extend({\n name: 'v-tabs-slider',\n\n render (h): VNode {\n return h('div', this.setBackgroundColor(this.color, {\n staticClass: 'v-tabs-slider',\n }))\n },\n})\n","// Styles\nimport './VTabs.sass'\n\n// Components\nimport VTabsBar from './VTabsBar'\nimport VTabsItems from './VTabsItems'\nimport VTabsSlider from './VTabsSlider'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Proxyable from '../../mixins/proxyable'\nimport Themeable from '../../mixins/themeable'\n\n// Directives\nimport Resize from '../../directives/resize'\n\n// Utilities\nimport { convertToUnit } from '../../util/helpers'\nimport { ExtractVue } from './../../util/mixins'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue/types'\n\nconst baseMixins = mixins(\n Colorable,\n Proxyable,\n Themeable\n)\n\ninterface options extends ExtractVue {\n $refs: {\n items: InstanceType\n }\n}\n\nexport default baseMixins.extend().extend({\n name: 'v-tabs',\n\n directives: {\n Resize,\n },\n\n props: {\n activeClass: {\n type: String,\n default: '',\n },\n alignWithTitle: Boolean,\n backgroundColor: String,\n centerActive: Boolean,\n centered: Boolean,\n fixedTabs: Boolean,\n grow: Boolean,\n height: {\n type: [Number, String],\n default: undefined,\n },\n hideSlider: Boolean,\n iconsAndText: Boolean,\n mobileBreakpoint: [String, Number],\n nextIcon: {\n type: String,\n default: '$next',\n },\n optional: Boolean,\n prevIcon: {\n type: String,\n default: '$prev',\n },\n right: Boolean,\n showArrows: [Boolean, String],\n sliderColor: String,\n sliderSize: {\n type: [Number, String],\n default: 2,\n },\n vertical: Boolean,\n },\n\n data () {\n return {\n resizeTimeout: 0,\n slider: {\n height: null as null | number,\n left: null as null | number,\n right: null as null | number,\n top: null as null | number,\n width: null as null | number,\n },\n transitionTime: 300,\n }\n },\n\n computed: {\n classes (): object {\n return {\n 'v-tabs--align-with-title': this.alignWithTitle,\n 'v-tabs--centered': this.centered,\n 'v-tabs--fixed-tabs': this.fixedTabs,\n 'v-tabs--grow': this.grow,\n 'v-tabs--icons-and-text': this.iconsAndText,\n 'v-tabs--right': this.right,\n 'v-tabs--vertical': this.vertical,\n ...this.themeClasses,\n }\n },\n isReversed (): boolean {\n return this.$vuetify.rtl && this.vertical\n },\n sliderStyles (): object {\n return {\n height: convertToUnit(this.slider.height),\n left: this.isReversed ? undefined : convertToUnit(this.slider.left),\n right: this.isReversed ? convertToUnit(this.slider.right) : undefined,\n top: this.vertical ? convertToUnit(this.slider.top) : undefined,\n transition: this.slider.left != null ? null : 'none',\n width: convertToUnit(this.slider.width),\n }\n },\n computedColor (): string {\n if (this.color) return this.color\n else if (this.isDark && !this.appIsDark) return 'white'\n else return 'primary'\n },\n },\n\n watch: {\n alignWithTitle: 'callSlider',\n centered: 'callSlider',\n centerActive: 'callSlider',\n fixedTabs: 'callSlider',\n grow: 'callSlider',\n iconsAndText: 'callSlider',\n right: 'callSlider',\n showArrows: 'callSlider',\n vertical: 'callSlider',\n '$vuetify.application.left': 'onResize',\n '$vuetify.application.right': 'onResize',\n '$vuetify.rtl': 'onResize',\n },\n\n mounted () {\n if (typeof ResizeObserver !== 'undefined') {\n const obs = new ResizeObserver(() => {\n this.onResize()\n })\n obs.observe(this.$el)\n this.$on('hook:destroyed', () => {\n obs.disconnect()\n })\n }\n\n this.$nextTick(() => {\n window.setTimeout(this.callSlider, 30)\n })\n },\n\n methods: {\n callSlider () {\n if (\n this.hideSlider ||\n !this.$refs.items ||\n !this.$refs.items.selectedItems.length\n ) {\n this.slider.width = 0\n return false\n }\n\n this.$nextTick(() => {\n // Give screen time to paint\n const activeTab = this.$refs.items.selectedItems[0]\n /* istanbul ignore if */\n if (!activeTab || !activeTab.$el) {\n this.slider.width = 0\n this.slider.left = 0\n return\n }\n const el = activeTab.$el as HTMLElement\n\n this.slider = {\n height: !this.vertical ? Number(this.sliderSize) : el.scrollHeight,\n left: this.vertical ? 0 : el.offsetLeft,\n right: this.vertical ? 0 : el.offsetLeft + el.offsetWidth,\n top: el.offsetTop,\n width: this.vertical ? Number(this.sliderSize) : el.scrollWidth,\n }\n })\n\n return true\n },\n genBar (items: VNode[], slider: VNode | null) {\n const data = {\n style: {\n height: convertToUnit(this.height),\n },\n props: {\n activeClass: this.activeClass,\n centerActive: this.centerActive,\n dark: this.dark,\n light: this.light,\n mandatory: !this.optional,\n mobileBreakpoint: this.mobileBreakpoint,\n nextIcon: this.nextIcon,\n prevIcon: this.prevIcon,\n showArrows: this.showArrows,\n value: this.internalValue,\n },\n on: {\n 'call:slider': this.callSlider,\n change: (val: any) => {\n this.internalValue = val\n },\n },\n ref: 'items',\n }\n\n this.setTextColor(this.computedColor, data)\n this.setBackgroundColor(this.backgroundColor, data)\n\n return this.$createElement(VTabsBar, data, [\n this.genSlider(slider),\n items,\n ])\n },\n genItems (items: VNode | null, item: VNode[]) {\n // If user provides items\n // opt to use theirs\n if (items) return items\n\n // If no tabs are provided\n // render nothing\n if (!item.length) return null\n\n return this.$createElement(VTabsItems, {\n props: {\n value: this.internalValue,\n },\n on: {\n change: (val: any) => {\n this.internalValue = val\n },\n },\n }, item)\n },\n genSlider (slider: VNode | null) {\n if (this.hideSlider) return null\n\n if (!slider) {\n slider = this.$createElement(VTabsSlider, {\n props: { color: this.sliderColor },\n })\n }\n\n return this.$createElement('div', {\n staticClass: 'v-tabs-slider-wrapper',\n style: this.sliderStyles,\n }, [slider])\n },\n onResize () {\n if (this._isDestroyed) return\n\n clearTimeout(this.resizeTimeout)\n this.resizeTimeout = window.setTimeout(this.callSlider, 0)\n },\n parseNodes () {\n let items = null\n let slider = null\n const item = []\n const tab = []\n const slot = this.$slots.default || []\n const length = slot.length\n\n for (let i = 0; i < length; i++) {\n const vnode = slot[i]\n\n if (vnode.componentOptions) {\n switch (vnode.componentOptions.Ctor.options.name) {\n case 'v-tabs-slider': slider = vnode\n break\n case 'v-tabs-items': items = vnode\n break\n case 'v-tab-item': item.push(vnode)\n break\n // case 'v-tab' - intentionally omitted\n default: tab.push(vnode)\n }\n } else {\n tab.push(vnode)\n }\n }\n\n /**\n * tab: array of `v-tab`\n * slider: single `v-tabs-slider`\n * items: single `v-tabs-items`\n * item: array of `v-tab-item`\n */\n return { tab, slider, items, item }\n },\n },\n\n render (h): VNode {\n const { tab, slider, items, item } = this.parseNodes()\n\n return h('div', {\n staticClass: 'v-tabs',\n class: this.classes,\n directives: [{\n name: 'resize',\n modifiers: { quiet: true },\n value: this.onResize,\n }],\n }, [\n this.genBar(tab, slider),\n this.genItems(items, item),\n ])\n },\n})\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('v-tabs',{attrs:{\"fixed-tabs\":\"\",\"color\":\"white\",\"background-color\":\"transparent\"},model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},_vm._l((_vm.items),function(item){return _c('v-tab',{key:item.tab},[_vm._v(\" \"+_vm._s(item.tab)+\" \")])}),1),_c('v-tabs-items',{model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},_vm._l((_vm.items),function(item){return _c('v-tab-item',{key:item.tab},[_c(item.content,{tag:\"component\"})],1)}),1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","// Extensions\nimport { BaseItemGroup } from '../../components/VItemGroup/VItemGroup'\n\n/* @vue/component */\nexport default BaseItemGroup.extend({\n name: 'button-group',\n\n provide (): object {\n return {\n btnToggle: this,\n }\n },\n\n computed: {\n classes (): object {\n return BaseItemGroup.options.computed.classes.call(this)\n },\n },\n\n methods: {\n // Isn't being passed down through types\n genData: BaseItemGroup.options.methods.genData,\n },\n})\n","// Styles\nimport './VBtnToggle.sass'\n\n// Mixins\nimport ButtonGroup from '../../mixins/button-group'\nimport Colorable from '../../mixins/colorable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n/* @vue/component */\nexport default mixins(\n ButtonGroup,\n Colorable\n).extend({\n name: 'v-btn-toggle',\n\n props: {\n backgroundColor: String,\n borderless: Boolean,\n dense: Boolean,\n group: Boolean,\n rounded: Boolean,\n shaped: Boolean,\n tile: Boolean,\n },\n\n computed: {\n classes (): object {\n return {\n ...ButtonGroup.options.computed.classes.call(this),\n 'v-btn-toggle': true,\n 'v-btn-toggle--borderless': this.borderless,\n 'v-btn-toggle--dense': this.dense,\n 'v-btn-toggle--group': this.group,\n 'v-btn-toggle--rounded': this.rounded,\n 'v-btn-toggle--shaped': this.shaped,\n 'v-btn-toggle--tile': this.tile,\n ...this.themeClasses,\n }\n },\n },\n\n methods: {\n genData () {\n const data = this.setTextColor(this.color, {\n ...ButtonGroup.options.methods.genData.call(this),\n })\n\n if (this.group) return data\n\n return this.setBackgroundColor(this.backgroundColor, data)\n },\n },\n})\n","import './VProgressLinear.sass'\n\n// Components\nimport {\n VFadeTransition,\n VSlideXTransition,\n} from '../transitions'\n\n// Directives\nimport intersect from '../../directives/intersect'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport { factory as PositionableFactory } from '../../mixins/positionable'\nimport Proxyable from '../../mixins/proxyable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport { convertToUnit, getSlot } from '../../util/helpers'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { FunctionalComponentOptions } from 'vue/types'\nimport { VNode } from 'vue'\n\nconst baseMixins = mixins(\n Colorable,\n PositionableFactory(['absolute', 'fixed', 'top', 'bottom']),\n Proxyable,\n Themeable\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-progress-linear',\n\n directives: { intersect },\n\n props: {\n active: {\n type: Boolean,\n default: true,\n },\n backgroundColor: {\n type: String,\n default: null,\n },\n backgroundOpacity: {\n type: [Number, String],\n default: null,\n },\n bufferValue: {\n type: [Number, String],\n default: 100,\n },\n color: {\n type: String,\n default: 'primary',\n },\n height: {\n type: [Number, String],\n default: 4,\n },\n indeterminate: Boolean,\n query: Boolean,\n reverse: Boolean,\n rounded: Boolean,\n stream: Boolean,\n striped: Boolean,\n value: {\n type: [Number, String],\n default: 0,\n },\n },\n\n data () {\n return {\n internalLazyValue: this.value || 0,\n isVisible: true,\n }\n },\n\n computed: {\n __cachedBackground (): VNode {\n return this.$createElement('div', this.setBackgroundColor(this.backgroundColor || this.color, {\n staticClass: 'v-progress-linear__background',\n style: this.backgroundStyle,\n }))\n },\n __cachedBar (): VNode {\n return this.$createElement(this.computedTransition, [this.__cachedBarType])\n },\n __cachedBarType (): VNode {\n return this.indeterminate ? this.__cachedIndeterminate : this.__cachedDeterminate\n },\n __cachedBuffer (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-progress-linear__buffer',\n style: this.styles,\n })\n },\n __cachedDeterminate (): VNode {\n return this.$createElement('div', this.setBackgroundColor(this.color, {\n staticClass: `v-progress-linear__determinate`,\n style: {\n width: convertToUnit(this.normalizedValue, '%'),\n },\n }))\n },\n __cachedIndeterminate (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-progress-linear__indeterminate',\n class: {\n 'v-progress-linear__indeterminate--active': this.active,\n },\n }, [\n this.genProgressBar('long'),\n this.genProgressBar('short'),\n ])\n },\n __cachedStream (): VNode | null {\n if (!this.stream) return null\n\n return this.$createElement('div', this.setTextColor(this.color, {\n staticClass: 'v-progress-linear__stream',\n style: {\n width: convertToUnit(100 - this.normalizedBuffer, '%'),\n },\n }))\n },\n backgroundStyle (): object {\n const backgroundOpacity = this.backgroundOpacity == null\n ? (this.backgroundColor ? 1 : 0.3)\n : parseFloat(this.backgroundOpacity)\n\n return {\n opacity: backgroundOpacity,\n [this.isReversed ? 'right' : 'left']: convertToUnit(this.normalizedValue, '%'),\n width: convertToUnit(Math.max(0, this.normalizedBuffer - this.normalizedValue), '%'),\n }\n },\n classes (): object {\n return {\n 'v-progress-linear--absolute': this.absolute,\n 'v-progress-linear--fixed': this.fixed,\n 'v-progress-linear--query': this.query,\n 'v-progress-linear--reactive': this.reactive,\n 'v-progress-linear--reverse': this.isReversed,\n 'v-progress-linear--rounded': this.rounded,\n 'v-progress-linear--striped': this.striped,\n 'v-progress-linear--visible': this.isVisible,\n ...this.themeClasses,\n }\n },\n computedTransition (): FunctionalComponentOptions {\n return this.indeterminate ? VFadeTransition : VSlideXTransition\n },\n isReversed (): boolean {\n return this.$vuetify.rtl !== this.reverse\n },\n normalizedBuffer (): number {\n return this.normalize(this.bufferValue)\n },\n normalizedValue (): number {\n return this.normalize(this.internalLazyValue)\n },\n reactive (): boolean {\n return Boolean(this.$listeners.change)\n },\n styles (): object {\n const styles: Record = {}\n\n if (!this.active) {\n styles.height = 0\n }\n\n if (!this.indeterminate && parseFloat(this.normalizedBuffer) !== 100) {\n styles.width = convertToUnit(this.normalizedBuffer, '%')\n }\n\n return styles\n },\n },\n\n methods: {\n genContent () {\n const slot = getSlot(this, 'default', { value: this.internalLazyValue })\n\n if (!slot) return null\n\n return this.$createElement('div', {\n staticClass: 'v-progress-linear__content',\n }, slot)\n },\n genListeners () {\n const listeners = this.$listeners\n\n if (this.reactive) {\n listeners.click = this.onClick\n }\n\n return listeners\n },\n genProgressBar (name: 'long' | 'short') {\n return this.$createElement('div', this.setBackgroundColor(this.color, {\n staticClass: 'v-progress-linear__indeterminate',\n class: {\n [name]: true,\n },\n }))\n },\n onClick (e: MouseEvent) {\n if (!this.reactive) return\n\n const { width } = this.$el.getBoundingClientRect()\n\n this.internalValue = e.offsetX / width * 100\n },\n onObserve (entries: IntersectionObserverEntry[], observer: IntersectionObserver, isIntersecting: boolean) {\n this.isVisible = isIntersecting\n },\n normalize (value: string | number) {\n if (value < 0) return 0\n if (value > 100) return 100\n return parseFloat(value)\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-progress-linear',\n attrs: {\n role: 'progressbar',\n 'aria-valuemin': 0,\n 'aria-valuemax': this.normalizedBuffer,\n 'aria-valuenow': this.indeterminate ? undefined : this.normalizedValue,\n },\n class: this.classes,\n directives: [{\n name: 'intersect',\n value: this.onObserve,\n }],\n style: {\n bottom: this.bottom ? 0 : undefined,\n height: this.active ? convertToUnit(this.height) : 0,\n top: this.top ? 0 : undefined,\n },\n on: this.genListeners(),\n }\n\n return h('div', data, [\n this.__cachedStream,\n this.__cachedBackground,\n this.__cachedBuffer,\n this.__cachedBar,\n this.genContent(),\n ])\n },\n})\n","import VProgressLinear from './VProgressLinear'\n\nexport { VProgressLinear }\nexport default VProgressLinear\n","import Vue, { VNode } from 'vue'\nimport VProgressLinear from '../../components/VProgressLinear'\n\ninterface colorable extends Vue {\n color?: string\n}\n\n/**\n * Loadable\n *\n * @mixin\n *\n * Used to add linear progress bar to components\n * Can use a default bar with a specific color\n * or designate a custom progress linear bar\n */\n/* @vue/component */\nexport default Vue.extend().extend({\n name: 'loadable',\n\n props: {\n loading: {\n type: [Boolean, String],\n default: false,\n },\n loaderHeight: {\n type: [Number, String],\n default: 2,\n },\n },\n\n methods: {\n genProgress (): VNode | VNode[] | null {\n if (this.loading === false) return null\n\n return this.$slots.progress || this.$createElement(VProgressLinear, {\n props: {\n absolute: true,\n color: (this.loading === true || this.loading === '')\n ? (this.color || 'primary')\n : this.loading,\n height: this.loaderHeight,\n indeterminate: true,\n },\n })\n },\n },\n})\n","// Styles\nimport './VCard.sass'\n\n// Extensions\nimport VSheet from '../VSheet'\n\n// Mixins\nimport Loadable from '../../mixins/loadable'\nimport Routable from '../../mixins/routable'\n\n// Helpers\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default mixins(\n Loadable,\n Routable,\n VSheet\n).extend({\n name: 'v-card',\n\n props: {\n flat: Boolean,\n hover: Boolean,\n img: String,\n link: Boolean,\n loaderHeight: {\n type: [Number, String],\n default: 4,\n },\n raised: Boolean,\n },\n\n computed: {\n classes (): object {\n return {\n 'v-card': true,\n ...Routable.options.computed.classes.call(this),\n 'v-card--flat': this.flat,\n 'v-card--hover': this.hover,\n 'v-card--link': this.isClickable,\n 'v-card--loading': this.loading,\n 'v-card--disabled': this.disabled,\n 'v-card--raised': this.raised,\n ...VSheet.options.computed.classes.call(this),\n }\n },\n styles (): object {\n const style: Dictionary = {\n ...VSheet.options.computed.styles.call(this),\n }\n\n if (this.img) {\n style.background = `url(\"${this.img}\") center center / cover no-repeat`\n }\n\n return style\n },\n },\n\n methods: {\n genProgress () {\n const render = Loadable.options.methods.genProgress.call(this)\n\n if (!render) return null\n\n return this.$createElement('div', {\n staticClass: 'v-card__progress',\n key: 'progress',\n }, [render])\n },\n },\n\n render (h): VNode {\n const { tag, data } = this.generateRouteLink()\n\n data.style = this.styles\n\n if (this.isClickable) {\n data.attrs = data.attrs || {}\n data.attrs.tabindex = 0\n }\n\n return h(tag, this.setBackgroundColor(this.color, data), [\n this.genProgress(),\n this.$slots.default,\n ])\n },\n})\n","import VCard from './VCard'\nimport { createSimpleFunctional } from '../../util/helpers'\n\nconst VCardActions = createSimpleFunctional('v-card__actions')\nconst VCardSubtitle = createSimpleFunctional('v-card__subtitle')\nconst VCardText = createSimpleFunctional('v-card__text')\nconst VCardTitle = createSimpleFunctional('v-card__title')\n\nexport {\n VCard,\n VCardActions,\n VCardSubtitle,\n VCardText,\n VCardTitle,\n}\n\nexport default {\n $_vuetify_subcomponents: {\n VCard,\n VCardActions,\n VCardSubtitle,\n VCardText,\n VCardTitle,\n },\n}\n","// Helpers\nimport { wrapInArray, sortItems, deepEqual, groupItems, searchItems, fillArray } from '../../util/helpers'\nimport Vue, { VNode } from 'vue'\n\n// Types\nimport {\n DataOptions,\n DataPagination,\n DataScopeProps,\n DataSortFunction,\n DataGroupFunction,\n DataSearchFunction,\n ItemGroup,\n} from 'vuetify/types'\nimport { PropValidator } from 'vue/types/options'\n\nexport default Vue.extend({\n name: 'v-data',\n\n inheritAttrs: false,\n\n props: {\n items: {\n type: Array,\n default: () => [],\n } as PropValidator,\n options: {\n type: Object,\n default: () => ({}),\n } as PropValidator>,\n sortBy: {\n type: [String, Array],\n } as PropValidator,\n sortDesc: {\n type: [Boolean, Array],\n } as PropValidator,\n customSort: {\n type: Function,\n default: sortItems,\n } as PropValidator,\n mustSort: Boolean,\n multiSort: Boolean,\n page: {\n type: Number,\n default: 1,\n },\n itemsPerPage: {\n type: Number,\n default: 10,\n },\n groupBy: {\n type: [String, Array],\n default: () => [],\n } as PropValidator,\n groupDesc: {\n type: [Boolean, Array],\n default: () => [],\n } as PropValidator,\n customGroup: {\n type: Function,\n default: groupItems,\n } as PropValidator,\n locale: {\n type: String,\n default: 'en-US',\n },\n disableSort: Boolean,\n disablePagination: Boolean,\n disableFiltering: Boolean,\n search: String,\n customFilter: {\n type: Function,\n default: searchItems,\n } as PropValidator,\n serverItemsLength: {\n type: Number,\n default: -1,\n },\n },\n\n data () {\n let internalOptions: DataOptions = {\n page: this.page,\n itemsPerPage: this.itemsPerPage,\n sortBy: wrapInArray(this.sortBy),\n sortDesc: wrapInArray(this.sortDesc),\n groupBy: wrapInArray(this.groupBy),\n groupDesc: wrapInArray(this.groupDesc),\n mustSort: this.mustSort,\n multiSort: this.multiSort,\n }\n\n if (this.options) {\n internalOptions = Object.assign(internalOptions, this.options)\n }\n\n const { sortBy, sortDesc, groupBy, groupDesc } = internalOptions\n const sortDiff = sortBy.length - sortDesc.length\n const groupDiff = groupBy.length - groupDesc.length\n\n if (sortDiff > 0) {\n internalOptions.sortDesc.push(...fillArray(sortDiff, false))\n }\n\n if (groupDiff > 0) {\n internalOptions.groupDesc.push(...fillArray(groupDiff, false))\n }\n\n return {\n internalOptions,\n }\n },\n\n computed: {\n itemsLength (): number {\n return this.serverItemsLength >= 0 ? this.serverItemsLength : this.filteredItems.length\n },\n pageCount (): number {\n return this.internalOptions.itemsPerPage <= 0\n ? 1\n : Math.ceil(this.itemsLength / this.internalOptions.itemsPerPage)\n },\n pageStart (): number {\n if (this.internalOptions.itemsPerPage === -1 || !this.items.length) return 0\n\n return (this.internalOptions.page - 1) * this.internalOptions.itemsPerPage\n },\n pageStop (): number {\n if (this.internalOptions.itemsPerPage === -1) return this.itemsLength\n if (!this.items.length) return 0\n\n return Math.min(this.itemsLength, this.internalOptions.page * this.internalOptions.itemsPerPage)\n },\n isGrouped (): boolean {\n return !!this.internalOptions.groupBy.length\n },\n pagination (): DataPagination {\n return {\n page: this.internalOptions.page,\n itemsPerPage: this.internalOptions.itemsPerPage,\n pageStart: this.pageStart,\n pageStop: this.pageStop,\n pageCount: this.pageCount,\n itemsLength: this.itemsLength,\n }\n },\n filteredItems (): any[] {\n let items = this.items.slice()\n\n if (!this.disableFiltering && this.serverItemsLength <= 0) {\n items = this.customFilter(items, this.search)\n }\n\n return items\n },\n computedItems (): any[] {\n let items = this.filteredItems.slice()\n\n if ((!this.disableSort || this.internalOptions.groupBy.length) && this.serverItemsLength <= 0) {\n items = this.sortItems(items)\n }\n\n if (!this.disablePagination && this.serverItemsLength <= 0) {\n items = this.paginateItems(items)\n }\n\n return items\n },\n groupedItems (): ItemGroup[] | null {\n return this.isGrouped ? this.groupItems(this.computedItems) : null\n },\n scopedProps (): DataScopeProps {\n return {\n sort: this.sort,\n sortArray: this.sortArray,\n group: this.group,\n items: this.computedItems,\n options: this.internalOptions,\n updateOptions: this.updateOptions,\n pagination: this.pagination,\n groupedItems: this.groupedItems,\n originalItemsLength: this.items.length,\n }\n },\n computedOptions (): DataOptions {\n return { ...this.options } as DataOptions\n },\n },\n\n watch: {\n computedOptions: {\n handler (options: DataOptions, old: DataOptions) {\n if (deepEqual(options, old)) return\n\n this.updateOptions(options)\n },\n deep: true,\n immediate: true,\n },\n internalOptions: {\n handler (options: DataOptions, old: DataOptions) {\n if (deepEqual(options, old)) return\n this.$emit('update:options', options)\n },\n deep: true,\n immediate: true,\n },\n page (page: number) {\n this.updateOptions({ page })\n },\n 'internalOptions.page' (page: number) {\n this.$emit('update:page', page)\n },\n itemsPerPage (itemsPerPage: number) {\n this.updateOptions({ itemsPerPage })\n },\n 'internalOptions.itemsPerPage' (itemsPerPage: number) {\n this.$emit('update:items-per-page', itemsPerPage)\n },\n sortBy (sortBy: string | string[]) {\n this.updateOptions({ sortBy: wrapInArray(sortBy) })\n },\n 'internalOptions.sortBy' (sortBy: string[], old: string[]) {\n !deepEqual(sortBy, old) && this.$emit('update:sort-by', Array.isArray(this.sortBy) ? sortBy : sortBy[0])\n },\n sortDesc (sortDesc: boolean | boolean[]) {\n this.updateOptions({ sortDesc: wrapInArray(sortDesc) })\n },\n 'internalOptions.sortDesc' (sortDesc: boolean[], old: boolean[]) {\n !deepEqual(sortDesc, old) && this.$emit('update:sort-desc', Array.isArray(this.sortDesc) ? sortDesc : sortDesc[0])\n },\n groupBy (groupBy: string | string[]) {\n this.updateOptions({ groupBy: wrapInArray(groupBy) })\n },\n 'internalOptions.groupBy' (groupBy: string[], old: string[]) {\n !deepEqual(groupBy, old) && this.$emit('update:group-by', Array.isArray(this.groupBy) ? groupBy : groupBy[0])\n },\n groupDesc (groupDesc: boolean | boolean[]) {\n this.updateOptions({ groupDesc: wrapInArray(groupDesc) })\n },\n 'internalOptions.groupDesc' (groupDesc: boolean[], old: boolean[]) {\n !deepEqual(groupDesc, old) && this.$emit('update:group-desc', Array.isArray(this.groupDesc) ? groupDesc : groupDesc[0])\n },\n multiSort (multiSort: boolean) {\n this.updateOptions({ multiSort })\n },\n 'internalOptions.multiSort' (multiSort: boolean) {\n this.$emit('update:multi-sort', multiSort)\n },\n mustSort (mustSort: boolean) {\n this.updateOptions({ mustSort })\n },\n 'internalOptions.mustSort' (mustSort: boolean) {\n this.$emit('update:must-sort', mustSort)\n },\n pageCount: {\n handler (pageCount: number) {\n this.$emit('page-count', pageCount)\n },\n immediate: true,\n },\n computedItems: {\n handler (computedItems: any[]) {\n this.$emit('current-items', computedItems)\n },\n immediate: true,\n },\n pagination: {\n handler (pagination: DataPagination, old: DataPagination) {\n if (deepEqual(pagination, old)) return\n this.$emit('pagination', this.pagination)\n },\n immediate: true,\n },\n },\n\n methods: {\n toggle (key: string, oldBy: string[], oldDesc: boolean[], page: number, mustSort: boolean, multiSort: boolean) {\n let by = oldBy.slice()\n let desc = oldDesc.slice()\n const byIndex = by.findIndex((k: string) => k === key)\n\n if (byIndex < 0) {\n if (!multiSort) {\n by = []\n desc = []\n }\n\n by.push(key)\n desc.push(false)\n } else if (byIndex >= 0 && !desc[byIndex]) {\n desc[byIndex] = true\n } else if (!mustSort) {\n by.splice(byIndex, 1)\n desc.splice(byIndex, 1)\n } else {\n desc[byIndex] = false\n }\n\n // Reset page to 1 if sortBy or sortDesc have changed\n if (!deepEqual(by, oldBy) || !deepEqual(desc, oldDesc)) {\n page = 1\n }\n\n return { by, desc, page }\n },\n group (key: string): void {\n const { by: groupBy, desc: groupDesc, page } = this.toggle(\n key,\n this.internalOptions.groupBy,\n this.internalOptions.groupDesc,\n this.internalOptions.page,\n true,\n false\n )\n this.updateOptions({ groupBy, groupDesc, page })\n },\n sort (key: string | string[]): void {\n if (Array.isArray(key)) return this.sortArray(key)\n\n const { by: sortBy, desc: sortDesc, page } = this.toggle(\n key,\n this.internalOptions.sortBy,\n this.internalOptions.sortDesc,\n this.internalOptions.page,\n this.internalOptions.mustSort,\n this.internalOptions.multiSort\n )\n this.updateOptions({ sortBy, sortDesc, page })\n },\n sortArray (sortBy: string[]) {\n const sortDesc = sortBy.map(s => {\n const i = this.internalOptions.sortBy.findIndex((k: string) => k === s)\n return i > -1 ? this.internalOptions.sortDesc[i] : false\n })\n\n this.updateOptions({ sortBy, sortDesc })\n },\n updateOptions (options: any) {\n this.internalOptions = {\n ...this.internalOptions,\n ...options,\n page: this.serverItemsLength < 0\n ? Math.max(1, Math.min(options.page || this.internalOptions.page, this.pageCount))\n : options.page || this.internalOptions.page,\n }\n },\n sortItems (items: any[]): any[] {\n let sortBy: string[] = []\n let sortDesc: boolean[] = []\n\n if (!this.disableSort) {\n sortBy = this.internalOptions.sortBy\n sortDesc = this.internalOptions.sortDesc\n }\n\n if (this.internalOptions.groupBy.length) {\n sortBy = [...this.internalOptions.groupBy, ...sortBy]\n sortDesc = [...this.internalOptions.groupDesc, ...sortDesc]\n }\n\n return this.customSort(items, sortBy, sortDesc, this.locale)\n },\n groupItems (items: any[]): ItemGroup[] {\n return this.customGroup(items, this.internalOptions.groupBy, this.internalOptions.groupDesc)\n },\n paginateItems (items: any[]): any[] {\n // Make sure we don't try to display non-existant page if items suddenly change\n // TODO: Could possibly move this to pageStart/pageStop?\n if (this.serverItemsLength === -1 && items.length <= this.pageStart) {\n this.internalOptions.page = Math.max(1, Math.ceil(items.length / this.internalOptions.itemsPerPage)) || 1 // Prevent NaN\n }\n\n return items.slice(this.pageStart, this.pageStop)\n },\n },\n\n render (): VNode {\n return this.$scopedSlots.default && this.$scopedSlots.default(this.scopedProps) as any\n },\n})\n","// Styles\nimport './VChip.sass'\n\n// Types\nimport { VNode } from 'vue'\nimport mixins from '../../util/mixins'\n\n// Components\nimport { VExpandXTransition } from '../transitions'\nimport VIcon from '../VIcon'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport Themeable from '../../mixins/themeable'\nimport { factory as ToggleableFactory } from '../../mixins/toggleable'\nimport Routable from '../../mixins/routable'\nimport Sizeable from '../../mixins/sizeable'\n\n// Utilities\nimport { breaking } from '../../util/console'\n\n// Types\nimport { PropValidator, PropType } from 'vue/types/options'\n\n/* @vue/component */\nexport default mixins(\n Colorable,\n Sizeable,\n Routable,\n Themeable,\n GroupableFactory('chipGroup'),\n ToggleableFactory('inputValue')\n).extend({\n name: 'v-chip',\n\n props: {\n active: {\n type: Boolean,\n default: true,\n },\n activeClass: {\n type: String,\n default (): string | undefined {\n if (!this.chipGroup) return ''\n\n return this.chipGroup.activeClass\n },\n } as any as PropValidator,\n close: Boolean,\n closeIcon: {\n type: String,\n default: '$delete',\n },\n closeLabel: {\n type: String,\n default: '$vuetify.close',\n },\n disabled: Boolean,\n draggable: Boolean,\n filter: Boolean,\n filterIcon: {\n type: String,\n default: '$complete',\n },\n label: Boolean,\n link: Boolean,\n outlined: Boolean,\n pill: Boolean,\n tag: {\n type: String,\n default: 'span',\n },\n textColor: String,\n value: null as any as PropType,\n },\n\n data: () => ({\n proxyClass: 'v-chip--active',\n }),\n\n computed: {\n classes (): object {\n return {\n 'v-chip': true,\n ...Routable.options.computed.classes.call(this),\n 'v-chip--clickable': this.isClickable,\n 'v-chip--disabled': this.disabled,\n 'v-chip--draggable': this.draggable,\n 'v-chip--label': this.label,\n 'v-chip--link': this.isLink,\n 'v-chip--no-color': !this.color,\n 'v-chip--outlined': this.outlined,\n 'v-chip--pill': this.pill,\n 'v-chip--removable': this.hasClose,\n ...this.themeClasses,\n ...this.sizeableClasses,\n ...this.groupClasses,\n }\n },\n hasClose (): boolean {\n return Boolean(this.close)\n },\n isClickable (): boolean {\n return Boolean(\n Routable.options.computed.isClickable.call(this) ||\n this.chipGroup\n )\n },\n },\n\n created () {\n const breakingProps = [\n ['outline', 'outlined'],\n ['selected', 'input-value'],\n ['value', 'active'],\n ['@input', '@active.sync'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n },\n\n methods: {\n click (e: MouseEvent): void {\n this.$emit('click', e)\n\n this.chipGroup && this.toggle()\n },\n genFilter (): VNode {\n const children = []\n\n if (this.isActive) {\n children.push(\n this.$createElement(VIcon, {\n staticClass: 'v-chip__filter',\n props: { left: true },\n }, this.filterIcon)\n )\n }\n\n return this.$createElement(VExpandXTransition, children)\n },\n genClose (): VNode {\n return this.$createElement(VIcon, {\n staticClass: 'v-chip__close',\n props: {\n right: true,\n size: 18,\n },\n attrs: {\n 'aria-label': this.$vuetify.lang.t(this.closeLabel),\n },\n on: {\n click: (e: Event) => {\n e.stopPropagation()\n e.preventDefault()\n\n this.$emit('click:close')\n this.$emit('update:active', false)\n },\n },\n }, this.closeIcon)\n },\n genContent (): VNode {\n return this.$createElement('span', {\n staticClass: 'v-chip__content',\n }, [\n this.filter && this.genFilter(),\n this.$slots.default,\n this.hasClose && this.genClose(),\n ])\n },\n },\n\n render (h): VNode {\n const children = [this.genContent()]\n let { tag, data } = this.generateRouteLink()\n\n data.attrs = {\n ...data.attrs,\n draggable: this.draggable ? 'true' : undefined,\n tabindex: this.chipGroup && !this.disabled ? 0 : data.attrs!.tabindex,\n }\n data.directives!.push({\n name: 'show',\n value: this.active,\n })\n data = this.setBackgroundColor(this.color, data)\n\n const color = this.textColor || (this.outlined && this.color)\n\n return h(tag, this.setTextColor(color, data), children)\n },\n})\n","import VChip from './VChip'\n\nexport { VChip }\nexport default VChip\n","// Mixins\nimport Themeable from '../../mixins/themeable'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default Themeable.extend({\n name: 'v-theme-provider',\n\n props: { root: Boolean },\n\n computed: {\n isDark (): boolean {\n return this.root\n ? this.rootIsDark\n : Themeable.options.computed.isDark.call(this)\n },\n },\n\n render (): VNode {\n /* istanbul ignore next */\n return (\n this.$slots.default! &&\n this.$slots.default!.find(node => !node.isComment && node.text !== ' ')!\n )\n },\n})\n","import Vue from 'vue'\n\n/**\n * Delayable\n *\n * @mixin\n *\n * Changes the open or close delay time for elements\n */\nexport default Vue.extend().extend({\n name: 'delayable',\n\n props: {\n openDelay: {\n type: [Number, String],\n default: 0,\n },\n closeDelay: {\n type: [Number, String],\n default: 0,\n },\n },\n\n data: () => ({\n openTimeout: undefined as number | undefined,\n closeTimeout: undefined as number | undefined,\n }),\n\n methods: {\n /**\n * Clear any pending delay timers from executing\n */\n clearDelay (): void {\n clearTimeout(this.openTimeout)\n clearTimeout(this.closeTimeout)\n },\n /**\n * Runs callback after a specified delay\n */\n runDelay (type: 'open' | 'close', cb?: () => void): void {\n this.clearDelay()\n\n const delay = parseInt((this as any)[`${type}Delay`], 10)\n\n ;(this as any)[`${type}Timeout`] = setTimeout(cb || (() => {\n this.isActive = { open: true, close: false }[type]\n }), delay)\n },\n },\n})\n","// Mixins\nimport Delayable from '../delayable'\nimport Toggleable from '../toggleable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { getSlot, getSlotType } from '../../util/helpers'\nimport { consoleError } from '../../util/console'\n\n// Types\nimport { VNode, PropType } from 'vue'\n\ntype Listeners = Dictionary<(e: MouseEvent & KeyboardEvent & FocusEvent) => void>\n\nconst baseMixins = mixins(\n Delayable,\n Toggleable\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'activatable',\n\n props: {\n activator: {\n default: null as unknown as PropType,\n validator: (val: string | object) => {\n return ['string', 'object'].includes(typeof val)\n },\n },\n disabled: Boolean,\n internalActivator: Boolean,\n openOnClick: {\n type: Boolean,\n default: true,\n },\n openOnHover: Boolean,\n openOnFocus: Boolean,\n },\n\n data: () => ({\n // Do not use this directly, call getActivator() instead\n activatorElement: null as HTMLElement | null,\n activatorNode: [] as VNode[],\n events: ['click', 'mouseenter', 'mouseleave', 'focus'],\n listeners: {} as Listeners,\n }),\n\n watch: {\n activator: 'resetActivator',\n openOnFocus: 'resetActivator',\n openOnHover: 'resetActivator',\n },\n\n mounted () {\n const slotType = getSlotType(this, 'activator', true)\n\n if (slotType && ['v-slot', 'normal'].includes(slotType)) {\n consoleError(`The activator slot must be bound, try '