chunk-03cb5fa0.d6c585fe.js.map 2.3 MB

1
  1. {"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:///./src/wasm/wasm_exec.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:///./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/core-js/modules/_to-index.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:///./node_modules/core-js/modules/_typed.js","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/node-libs-browser/node_modules/inherits/inherits_browser.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/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack:///./node_modules/browserify-des/index.js","webpack:///./src/wasm sync","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/core-js/modules/es6.reflect.construct.js","webpack:///./node_modules/core-js/modules/es6.typed.data-view.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/core-js/modules/es6.typed.uint8-array.js","webpack:///./node_modules/browserify-aes/modes/cfb.js","webpack:///./node_modules/core-js/modules/_array-fill.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/os-browserify/browser.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:///./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/core-js/modules/es6.array.sort.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/core-js/modules/es6.string.iterator.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:///./src/components/pdf-view.vue?fc2c","webpack:///./node_modules/des.js/lib/des/utils.js","webpack:///./node_modules/asn1.js/lib/asn1/base/buffer.js","webpack:///./src/components/pdf-catalogue-menu.vue","webpack:///src/components/pdf-catalogue-menu.vue","webpack:///./src/components/pdf-catalogue-menu.vue?f47c","webpack:///./src/components/pdf-catalogue-menu.vue?5345","webpack:///./src/components/pdf-catalogue.vue","webpack:///src/components/pdf-catalogue.vue","webpack:///./src/components/pdf-catalogue.vue?2f02","webpack:///./src/components/pdf-catalogue.vue?8b6e","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/core-js/modules/_meta.js","webpack:///./node_modules/sha.js/index.js","webpack:///./node_modules/core-js/modules/es6.typed.uint8-clamped-array.js","webpack:///./node_modules/hmac-drbg/lib/hmac-drbg.js","webpack:///./node_modules/browserify-aes/modes/ctr.js","webpack:///./node_modules/core-js/modules/es6.array.fill.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:///./src/components/pdf-catalogue-menu.vue?2050","webpack:///./node_modules/readable-stream/lib/_stream_passthrough.js","webpack:///./node_modules/core-js/modules/es6.date.now.js","webpack:///./node_modules/miller-rabin/lib/mr.js","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:///./src/components/pdf-view.vue","webpack:///src/components/pdf-view.vue","webpack:///./src/components/pdf-view.vue?9b34","webpack:///./src/components/pdf-view.vue?84c4","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/node-libs-browser/node_modules/util/support/isBufferBrowser.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/core-js/modules/es6.reflect.set.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/regenerator-runtime/runtime.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:///./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:///./node_modules/readable-stream/lib/_stream_duplex.js","webpack:///./node_modules/core-js/modules/_validate-collection.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/core-js/modules/es6.reflect.delete-property.js","webpack:///./node_modules/core-js/modules/_array-copy-within.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/@babel/runtime/helpers/esm/createClass.js","webpack:///./node_modules/browserify-aes/modes/cbc.js","webpack:///./node_modules/core-js/modules/_collection-strong.js","webpack:///./node_modules/readable-stream/passthrough.js","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/core-js/modules/es6.reflect.get.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/@babel/runtime/helpers/esm/classCallCheck.js","webpack:///./node_modules/minimalistic-assert/index.js","webpack:///./src/components/pdf-catalogue.vue?44f2","webpack:///./node_modules/readable-stream/lib/_stream_writable.js","webpack:///./src/common/watermark.js","webpack:///(webpack)/buildin/harmony-module.js","webpack:///./node_modules/core-js/modules/es6.reflect.apply.js","webpack:///./node_modules/pbkdf2/lib/sync-browser.js","webpack:///./node_modules/core-js/modules/_collection.js","webpack:///./node_modules/create-ecdh/browser.js","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/core-js/modules/_typed-array.js","webpack:///./node_modules/core-js/modules/_typed-buffer.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/node-libs-browser/node_modules/util/util.js","webpack:///./node_modules/asn1.js/lib/asn1/api.js","webpack:///./node_modules/core-js/modules/_bind.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/core-js/modules/es6.map.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","global","require","fs","Object","keys","enosys","err","code","outputBuf","constants","O_WRONLY","O_RDWR","O_CREAT","O_TRUNC","O_APPEND","O_EXCL","writeSync","fd","buf","decoder","decode","nl","lastIndexOf","console","log","substr","write","offset","position","callback","chmod","path","chown","uid","gid","close","fchmod","fchown","fstat","fsync","ftruncate","lchown","link","lstat","mkdir","perm","open","flags","read","readdir","readlink","rename","from","to","rmdir","stat","symlink","truncate","unlink","utimes","atime","mtime","process","getuid","getgid","geteuid","getegid","getgroups","pid","ppid","umask","cwd","chdir","crypto","nodeCrypto","getRandomValues","randomFillSync","performance","now","hrtime","sec","nsec","TextEncoder","TextDecoder","encoder","Go","argv","env","exit","warn","_exitPromise","Promise","resolve","_resolveExitPromise","_pendingEvent","_scheduledTimeouts","Map","_nextCallbackTimeoutID","setInt64","addr","v","mem","setUint32","floor","getInt64","low","getUint32","high","getInt32","loadValue","f","getFloat64","isNaN","id","_values","storeValue","nanHead","setFloat64","_ids","get","_idPool","pop","_goRefCounts","set","typeFlag","loadSlice","array","Uint8Array","_inst","loadSliceOfValues","loadString","saddr","DataView","timeOrigin","Date","importObject","go","sp","exited","msec","getTime","setInt32","setTimeout","_resume","has","clearTimeout","delete","push","result","Reflect","getsp","deleteProperty","args","apply","setUint8","construct","parseInt","encode","String","dst","src","Uint8ClampedArray","toCopy","subarray","value","instance","WebAssembly","Instance","NaN","fill","Infinity","strPtr","ptr","bytes","argc","argvPtrs","forEach","arg","sort","key","wasmMinDataAddr","run","resume","event","arguments","main","versions","electron","error","slice","assign","TMPDIR","tmpdir","instantiate","readFileSync","then","on","catch","_reverse","map","der","ERR_INVALID_OPT_VALUE","codes","highWaterMarkFrom","isDuplex","duplexKey","highWaterMark","getHighWaterMark","state","hwm","isFinite","objectMode","copyProps","SafeBuffer","encodingOrOffset","alloc","allocUnsafe","allocUnsafeSlow","create","TypeError","encoding","SlowBuffer","utils","SHA256","SHA224","outSize","hmacStrength","padLength","_digest","toHex32","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","rs","_readableState","reading","needReadable","_read","bind","needTransform","writeencoding","sync","_transform","flush","_flush","prefinish","_this","destroyed","done","stream","_writableState","chunk","_write","_destroy","err2","aes","StreamCipher","iv","AES","_prev","_cache","_secCache","_decrypt","_mode","_final","scrub","toInteger","toLength","it","RangeError","PassThrough","des","des3","pre","curves","hash","curve","PresetCurve","short","edwards","validate","isInfinity","defineCurve","defineProperty","configurable","enumerable","sha256","gRed","sha384","sha512","beta","lambda","basis","proto","CBCState","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","Typed","hide","TYPED","VIEW","ABV","ArrayBuffer","CONSTR","TypedArrayConstructors","MAX_BYTES","MAX_UINT32","oldBrowser","msCrypto","randomBytes","generated","nextTick","common","shaCommon","rotl32","sum32","sum32_5","ft_1","BlockHash","sha1_K","SHA1","DES","EDE","writable","CorkedRequest","entry","finish","onCorkedFinish","Writable","WritableState","internalUtil","deprecate","Stream","OurUint8Array","_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","writev","_writev","destroy","writeAfterEnd","validChunk","decodeChunk","writeOrBuffer","isBuf","newChunk","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","toLowerCase","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","createCredentials","join","asyncGeneratorStep","reject","_next","_throw","info","_asyncToGenerator","fn","CipherBase","modes","opts","modeName","_des","webpackEmptyContext","req","EDEState","k1","k2","k3","ciphers","_edeState","ZERO_BUF","checkParameters","subtle","toBrowser","sha1","checks","checkNative","algo","browser","importKey","deriveBits","prom","browserPbkdf2","getNextTick","queueMicrotask","setImmediate","password","salt","iterations","resolvePromise","promise","keylen","resp","decoders","pem","inner","outer","ownKeys","enumerableOnly","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","_objectSpread","target","source","_defineProperty","getOwnPropertyDescriptors","defineProperties","_classCallCheck","Constructor","_defineProperties","props","descriptor","_createClass","protoProps","staticProps","_require2","custom","copyBuffer","BufferList","head","tail","hasStrings","_getString","_getBuffer","nb","depth","customInspect","$export","aFunction","anObject","isObject","fails","rConstruct","NEW_TARGET_BUG","F","ARGS_BUG","S","Target","newTarget","$args","G","util","_this2","asn1","aesid","fixProc","compat","passphrase","subtype","ndata","stripped","tag","certificate","tbsCertificate","subjectPublicKeyInfo","PublicKey","algorithm","RSAPublicKey","subjectPublicKey","subjectPrivateKey","params","pub_key","DSAparam","EncryptedPrivateKey","PrivateKey","RSAPrivateKey","ECPrivateKey","priv_key","DSAPrivateKey","parameters","kde","kdeparams","iters","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","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","byteOffset","encryptStart","toObject","toAbsoluteIndex","O","aLen","endPos","Node","DEREncoder","entity","tree","DERNode","body","parent","encodeTag","primitive","cls","reporter","tagByName","hasOwnProperty","tagClassByName","_encode","_encodeComposite","content","encodedTag","header","_createEncoderBuffer","lenOctets","_encodeStr","unused","writeUInt16BE","_isNumstr","_isPrintstr","test","_encodeObjid","values","relative","stringify","splice","ident","objid","_encodeTime","time","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","_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","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","isDate","isError","isFunction","isPrimitive","endianness","hostname","location","loadavg","uptime","freemem","Number","MAX_VALUE","totalmem","cpus","release","navigator","appVersion","networkInterfaces","getNetworkInterfaces","arch","platform","tmpDir","EOL","homedir","EdwardsCurve","twisted","mOneA","dd","oneC","_mulA","_mulC","lhs","pointFromY","normalize","_extDbl","nt","_projDbl","_extAdd","_projAdd","zi","other","ZEROES","fromArray","GHASH","cache","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","onReadable","wrapForNext","lastPromise","AsyncIteratorPrototype","getPrototypeOf","ReadableStreamAsyncIteratorPrototype","setPrototypeOf","asyncIterator","createReadableStreamAsyncIterator","_Object$create","iterator","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","_events","readableObjectMode","pipes","pipesCount","flowing","emittedReadable","readableListening","resumeScheduled","paused","awaitDrain","readingMore","readable","readableAddChunk","addToFront","skipChunkCheck","onEofChunk","chunkInvalid","addChunk","maybeReadMore","emitReadable","isPaused","setEncoding","clear","MAX_HWM","computeNewHighWaterMark","howMuchToRead","emitReadable_","flow","maybeReadMore_","pipeOnDrain","updateReadableListening","listenerCount","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","noop","isRequest","setHeader","abort","eos","onlegacyfinish","writableEnded","readableEnded","onrequest","Signature","R","_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","$sort","P","comparefn","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","def","TBSCertificate","implicit","X509Certificate","findPrime","ONE","TWO","FIVE","FOUR","_getPrimes","limit","n2","sha224","MD5","$at","iterated","_t","_i","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","render","_vm","_self","_l","list","replaceFields","children","attrs","model","collapseActive","$$v","expression","scopedSlots","_u","$event","stopPropagation","menuClick","_v","_s","title","proxy","staticClass","staticRenderFns","default","methods","component","components","PdfCatalogueMenu","prop","show","computed","hashMode","_finalOrDigest","__final","_decoder","_encoding","inputEnc","outputEnc","outData","_toString","getAuthTag","setAuthTag","setAAD","fin","MontCurve","i4","a24","precompute","aa","bb","diffAdd","da","jumlAdd","META","setDesc","isExtensible","FREEZE","preventExtensions","setMeta","fastKey","getWeak","onFreeze","meta","NEED","KEY","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","overrided","reverseArgs","useDecoder","contains","_wrap","stateProps","cstate","child","_useArgs","newKey","_decode","wrapResult","prevObj","present","prevKey","enterKey","_peekTag","_decodeGeneric","_decodeChoice","enterObject","_decodeTag","track","_getUse","leaveObject","exitKey","leaveKey","_decodeList","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeBool","_decodeInt","some","node","_encodeChoice","_encodePrimitive","showDrawer","gData","handleSelect","visible","ref","class","loading","style","pdf_div_width","margin","pdf_pages","page","fontSize","maxWidth","watermarkText","userInfo","phone","currentRate","rate","staticStyle","PDFJS","PdfCatalogue","is_encrypt","expandedKeys","pageArr","placement","pdf_scale","pdf_src","pdf_data","loadingEndSize","mounted","top","offsetHeight","onClose","scaleD","scaleX","waitWasm","fetch","ReadPdf","that","readPdfData","_loadFile","loadingTask","pdf","_renderPage","scale","canvas","canvasContext","viewport","toFixed","loadFinished","PEMEncoder","label","PADDING","equals","padBuff","writeUInt8","tagClass","0","1","2","3","SHA512","SHA384","isView","DERDecoder","PEMDecoder","lines","base64","dP","gOPD","createDesc","propertyKey","existingDescriptor","receiver","ownDesc","throwIfNotStringOrBuffer","prefix","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","runtime","Op","hasOwn","desc","$Symbol","iteratorSymbol","asyncIteratorSymbol","toStringTagSymbol","toStringTag","innerFn","outerFn","tryLocsList","protoGenerator","Generator","context","Context","makeInvokeMethod","tryCatch","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","_invoke","AsyncIterator","PromiseImpl","invoke","record","__await","unwrapped","previousPromise","enqueue","callInvokeWithMethodAndArg","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","methodName","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iteratorMethod","displayName","isGeneratorFunction","genFun","mark","__proto__","awrap","async","skipTempReset","charAt","rootEntry","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","globalThis","ecVerify","dsaVerify","padNum","pubkey","unpacked","checkValue","montp","_inheritsLoose","subClass","superClass","createErrorType","getMessage","NodeError","_Base","oneOf","expected","startsWith","search","pos","endsWith","this_len","substring","includes","actual","determiner","pVersionMajor","blind","getr","blinder","unblinder","prime1","prime2","blinds","blinded","qinv","coefficient","exponent1","m2","exponent2","rotr32","p32","ERR_MISSING_ARGS","destroyer","closed","popCallback","streams","destroys","reduce","mLen","hLen2","dblen","nonZero","cur","publicKey","readableHwm","readableHighWaterMark","defaultHwm","needMoreData","fromListPartial","copyFromBufferString","copyFromBuffer","increasedAwaitDrain","EVP_BytesToKey","keyBits","used","keyStart","ivStart","TYPE","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","LN2","slen","backHalf","warned","deprecated","trace","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","copyWithin","inc","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","redefineAll","anInstance","forOf","$iterDefine","setSpecies","DESCRIPTORS","SIZE","getEntry","getConstructor","wrapper","NAME","IS_MAP","ADDER","callbackfn","setStrong","kind","_k","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","UTC","_getDecoder","errors","ReporterError","rethrow","pathLen","inherited","elem","stack","partial","captureStackTrace","EE","_isStdio","didOnEnd","asyncWrite","writableHwm","writableHighWaterMark","valid","watermark","setWatermark","container","document","getElementById","childelement","parentNode","removeChild","containerWidth","offsetWidth","containerHeight","can","createElement","height","cans","getContext","rotate","fillStyle","textAlign","textBaseline","fillText","pointerEvents","zIndex","background","toDataURL","appendChild","setInterval","onresize","originalModule","webpackPolyfill","rApply","fApply","thisArgument","argumentsList","L","sizes","rmd160","saltLen","getDigest","ipad1","ipad2","shaFunc","rmd160Func","DK","block1","destPos","U","redefine","$iterDetect","setToStringTag","inheritIfRequired","IS_WEAK","fixMethod","entries","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","ECDH","aliases","secp256k1","secp224r1","prime256v1","prime192v1","ed25519","secp384r1","secp521r1","curveType","p256","secp256r1","secp192r1","p384","p521","format","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","LIBRARY","$typed","$buffer","propertyDesc","toIndex","toPrimitive","classof","isArrayIter","gOPN","getIterFn","wks","createArrayMethod","createArrayIncludes","speciesConstructor","ArrayIterators","Iterators","arrayFill","arrayCopyWithin","$DP","$GOPD","ARRAY_BUFFER","SHARED_BUFFER","BYTES_PER_ELEMENT","PROTOTYPE","ArrayProto","$ArrayBuffer","$DataView","arrayForEach","arrayFilter","arraySome","arrayEvery","arrayFind","arrayFindIndex","arrayIncludes","arrayIndexOf","arrayValues","arrayKeys","arrayEntries","arrayLastIndexOf","arrayReduce","arrayReduceRight","reduceRight","arrayJoin","arraySort","arraySlice","arrayToString","arrayToLocaleString","toLocaleString","ITERATOR","TAG","TYPED_CONSTRUCTOR","DEF_CONSTRUCTOR","ALL_CONSTRUCTORS","TYPED_ARRAY","WRONG_LENGTH","$map","LITTLE_ENDIAN","Uint16Array","FORCED_SET","toOffset","BYTES","speciesFromList","addGetter","internal","$from","mapfn","mapping","iterFn","$of","TO_LOCALE_BUG","$toLocaleString","every","find","predicate","findIndex","searchElement","separator","middle","begin","$begin","$slice","$set","arrayLike","$iterators","isTAIndex","$getDesc","$setDesc","$TypedArrayPrototype$","CLAMPED","GETTER","SETTER","TypedArray","TAC","FORCED","TypedArrayPrototype","getter","setter","addElement","$offset","$length","klass","$len","$nativeIterator","CORRECT_ITER_NAME","$iterator","of","DATA_VIEW","WRONG_INDEX","BaseBuffer","BUFFER","BYTE_LENGTH","BYTE_OFFSET","$BUFFER","$LENGTH","$OFFSET","packIEEE754","nBytes","eLen","eMax","eBias","rt","unpackIEEE754","nBits","unpackI32","packI8","packI16","packI32","packF64","packF32","view","isLittleEndian","numIndex","intIndex","store","pack","conversion","ArrayBufferProto","$setInt8","setInt8","getInt8","bufferLength","getUint8","getInt16","getUint16","getFloat32","setInt16","setUint16","setFloat32","pending","pendingTotal","_delta8","_delta32","descriptors","formatRegExp","objects","noDeprecation","throwDeprecation","traceDeprecation","debugEnviron","debugs","seen","stylize","stylizeNoColor","colors","showHidden","_extend","stylizeWithColor","formatValue","styleType","styles","arrayToHash","idx","recurseTimes","formatPrimitive","visibleKeys","getOwnPropertyNames","formatError","RegExp","braces","toUTCString","formatArray","formatProperty","reduceToSingleString","simple","line","numLinesEst","NODE_DEBUG","months","timestamp","getHours","getMinutes","getSeconds","getDate","getMonth","origin","kCustomPromisifiedSymbol","callbackifyOnRejected","newReason","callbackify","original","callbackified","maybeCb","rej","promisify","promiseResolve","promiseReject","api","Entity","_createNamed","Generated","_initNamed","factories","partArgs","bound","minAssert","minUtils","m8","d1","d2","m14","m24","computer","strong","MAP","i2ops","fnF","fnG","fnH","fnI","ReflectOwnKeys","ReflectApply","ProcessEmitWarning","warning","NumberIsNaN","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","listener","_getMaxListeners","_addListener","prepend","events","existing","newListener","onceWrapper","fired","wrapFn","_onceWrap","wrapped","_listeners","unwrap","evlistener","unwrapListeners","arrayClone","spliceOne","errorListener","resolver","eventTargetAgnosticAddListener","addErrorHandlerIfEventEmitter","handler","addEventListener","wrapListener","removeEventListener","setMaxListeners","getMaxListeners","doError","prependOnceListener","originalListener","rawListeners","eventNames","deciphers","_rand","getBytes","getByte"],"mappings":"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EAEF,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,CACHruB,IAAK,EACL0tB,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,mEACA,wE,kCCnwBR,IAAI7E,EAAO,EAAQ,QAEnBrjC,EAAQ8jC,YAAc,EAAQ,QAE9B,IAAIa,EAAgBtB,EAAK8W,OAAO,iBAAiB,WAC/C/4C,KAAKg5C,MAAMzkB,IACTv0B,KAAK2mB,IAAI,WAAWsyB,MACpBj5C,KAAK2mB,IAAI,WAAWsyB,MACpBj5C,KAAK2mB,IAAI,kBAAkBsyB,MAC3Bj5C,KAAK2mB,IAAI,mBAAmBsyB,MAC5Bj5C,KAAK2mB,IAAI,UAAUsyB,MACnBj5C,KAAK2mB,IAAI,UAAUsyB,MACnBj5C,KAAK2mB,IAAI,aAAasyB,MACtBj5C,KAAK2mB,IAAI,aAAasyB,MACtBj5C,KAAK2mB,IAAI,eAAesyB,UAG5Br6C,EAAQ2kC,cAAgBA,EAExB,IAAIR,EAAed,EAAK8W,OAAO,gBAAgB,WAC7C/4C,KAAKg5C,MAAMzkB,IACTv0B,KAAK2mB,IAAI,WAAWsyB,MACpBj5C,KAAK2mB,IAAI,kBAAkBsyB,UAG/Br6C,EAAQmkC,aAAeA,EAEvB,IAAIF,EAAYZ,EAAK8W,OAAO,wBAAwB,WAClD/4C,KAAKg5C,MAAMzkB,IACTv0B,KAAK2mB,IAAI,aAAauyB,IAAIC,GAC1Bn5C,KAAK2mB,IAAI,oBAAoByyB,aAGjCx6C,EAAQikC,UAAYA,EAEpB,IAAIsW,EAAsBlX,EAAK8W,OAAO,uBAAuB,WAC3D/4C,KAAKg5C,MAAMzkB,IACTv0B,KAAK2mB,IAAI,aAAa0oB,QACtBrvC,KAAK2mB,IAAI,QAAQ0yB,QAAQC,WACzBt5C,KAAK2mB,IAAI,SAAS0oB,QAAQiK,WAC1Bt5C,KAAK2mB,IAAI,UAAUqyB,MAAMzkB,IACvBv0B,KAAK2mB,IAAI,KAAKsyB,MACdj5C,KAAK2mB,IAAI,KAAKsyB,MACdj5C,KAAK2mB,IAAI,KAAKsyB,OACdK,eAIFC,EAAiBtX,EAAK8W,OAAO,kBAAkB,WACjD/4C,KAAKg5C,MAAMzkB,IACTv0B,KAAK2mB,IAAI,WAAWsyB,MACpBj5C,KAAK2mB,IAAI,aAAauyB,IAAIC,GAC1Bn5C,KAAK2mB,IAAI,qBAAqB6yB,aAGlC56C,EAAQ0kC,WAAaiW,EACrB,IAAIE,EAA0BxX,EAAK8W,OAAO,2BAA2B,WACnE/4C,KAAKg5C,MAAMzkB,IACTv0B,KAAK2mB,IAAI,aAAaqyB,MAAMzkB,IAC1Bv0B,KAAK2mB,IAAI,MAAM0oB,QACfrvC,KAAK2mB,IAAI,WAAWqyB,MAAMzkB,IACxBv0B,KAAK2mB,IAAI,OAAOqyB,MAAMzkB,IACpBv0B,KAAK2mB,IAAI,MAAM0oB,QACfrvC,KAAK2mB,IAAI,aAAaqyB,MAAMzkB,IAC1Bv0B,KAAK2mB,IAAI,QAAQ6yB,SACjBx5C,KAAK2mB,IAAI,SAASsyB,QAGtBj5C,KAAK2mB,IAAI,UAAUqyB,MAAMzkB,IACvBv0B,KAAK2mB,IAAI,QAAQ0oB,QACjBrvC,KAAK2mB,IAAI,MAAM6yB,YAIrBx5C,KAAK2mB,IAAI,qBAAqB6yB,aAIlC56C,EAAQykC,oBAAsBoW,EAE9B,IAAI/V,EAAgBzB,EAAK8W,OAAO,iBAAiB,WAC/C/4C,KAAKg5C,MAAMzkB,IACTv0B,KAAK2mB,IAAI,WAAWsyB,MACpBj5C,KAAK2mB,IAAI,KAAKsyB,MACdj5C,KAAK2mB,IAAI,KAAKsyB,MACdj5C,KAAK2mB,IAAI,KAAKsyB,MACdj5C,KAAK2mB,IAAI,WAAWsyB,MACpBj5C,KAAK2mB,IAAI,YAAYsyB,UAGzBr6C,EAAQ8kC,cAAgBA,EAExB9kC,EAAQwkC,SAAWnB,EAAK8W,OAAO,YAAY,WACzC/4C,KAAKi5C,SAGP,IAAIzV,EAAevB,EAAK8W,OAAO,gBAAgB,WAC7C/4C,KAAKg5C,MAAMzkB,IACTv0B,KAAK2mB,IAAI,WAAWsyB,MACpBj5C,KAAK2mB,IAAI,cAAc6yB,SACvBx5C,KAAK2mB,IAAI,cAAc2yB,WAAWI,SAAS,GAAGR,IAAIS,GAClD35C,KAAK2mB,IAAI,aAAa2yB,WAAWI,SAAS,GAAGN,aAGjDx6C,EAAQ4kC,aAAeA,EAEvB,IAAImW,EAAe1X,EAAK8W,OAAO,gBAAgB,WAC7C/4C,KAAK45C,OAAO,CACVC,WAAY75C,KAAKqvC,aAIrBzwC,EAAQqlC,UAAYhC,EAAK8W,OAAO,aAAa,WAC3C/4C,KAAKg5C,MAAMzkB,IACTv0B,KAAK2mB,IAAI,KAAKsyB,MACdj5C,KAAK2mB,IAAI,KAAKsyB,W,kCCrHlB,IAAInqB,EAAQlwB,EAEZkwB,EAAMjvB,KAAO,EAAQ,QACrBivB,EAAME,MAAQ,EAAQ,QACtBF,EAAMvV,KAAO,EAAQ,QACrBuV,EAAMG,QAAU,EAAQ,S,mCCPxB,YAEA,IAAI6qB,EAEJ,SAASpa,EAAgBnL,EAAK5N,EAAKf,GAAiK,OAApJe,KAAO4N,EAAO5Y,OAAO0T,eAAekF,EAAK5N,EAAK,CAAEf,MAAOA,EAAO2J,YAAY,EAAMD,cAAc,EAAMoE,UAAU,IAAkBa,EAAI5N,GAAOf,EAAgB2O,EAE3M,IAAIiB,EAAW,EAAQ,QAEnBukB,EAAe1hB,OAAO,eACtB2hB,EAAc3hB,OAAO,cACrB4hB,EAAS5hB,OAAO,SAChB6hB,EAAS7hB,OAAO,SAChB8hB,EAAe9hB,OAAO,eACtB+hB,EAAiB/hB,OAAO,iBACxBgiB,EAAUhiB,OAAO,UAErB,SAASiiB,EAAiB10B,EAAOsH,GAC/B,MAAO,CACLtH,MAAOA,EACPsH,KAAMA,GAIV,SAASqtB,EAAeC,GACtB,IAAIp5B,EAAUo5B,EAAKT,GAEnB,GAAgB,OAAZ34B,EAAkB,CACpB,IAAI9G,EAAOkgC,EAAKH,GAAS77B,OAIZ,OAATlE,IACFkgC,EAAKL,GAAgB,KACrBK,EAAKT,GAAgB,KACrBS,EAAKR,GAAe,KACpB54B,EAAQk5B,EAAiBhgC,GAAM,MAKrC,SAASmgC,EAAWD,GAGlBl7B,EAAQwT,SAASynB,EAAgBC,GAGnC,SAASE,EAAYC,EAAaH,GAChC,OAAO,SAAUp5B,EAAS8a,GACxBye,EAAYhzB,MAAK,WACX6yB,EAAKN,GACP94B,EAAQk5B,OAAiB57C,GAAW,IAItC87C,EAAKJ,GAAgBh5B,EAAS8a,KAC7BA,IAIP,IAAI0e,EAAyBj/B,OAAOk/B,gBAAe,eAC/CC,EAAuCn/B,OAAOo/B,gBAAgBjB,EAAwB,CACxF,aACE,OAAO95C,KAAKq6C,IAGdzhC,KAAM,WACJ,IAAIoU,EAAQhtB,KAIRonB,EAAQpnB,KAAKi6C,GAEjB,GAAc,OAAV7yB,EACF,OAAOjG,QAAQ+a,OAAO9U,GAGxB,GAAIpnB,KAAKk6C,GACP,OAAO/4B,QAAQC,QAAQk5B,OAAiB57C,GAAW,IAGrD,GAAIsB,KAAKq6C,GAASptB,UAKhB,OAAO,IAAI9L,SAAQ,SAAUC,EAAS8a,GACpC5c,EAAQwT,UAAS,WACX9F,EAAMitB,GACR/d,EAAOlP,EAAMitB,IAEb74B,EAAQk5B,OAAiB57C,GAAW,UAU5C,IACI+/B,EADAkc,EAAc36C,KAAKm6C,GAGvB,GAAIQ,EACFlc,EAAU,IAAItd,QAAQu5B,EAAYC,EAAa36C,WAC1C,CAGL,IAAIsa,EAAOta,KAAKq6C,GAAS77B,OAEzB,GAAa,OAATlE,EACF,OAAO6G,QAAQC,QAAQk5B,EAAiBhgC,GAAM,IAGhDmkB,EAAU,IAAItd,QAAQnhB,KAAKo6C,IAI7B,OADAp6C,KAAKm6C,GAAgB1b,EACdA,IAERiB,EAAgBoa,EAAuBzhB,OAAO2iB,eAAe,WAC9D,OAAOh7C,QACL0/B,EAAgBoa,EAAuB,UAAU,WACnD,IAAI9X,EAAShiC,KAKb,OAAO,IAAImhB,SAAQ,SAAUC,EAAS8a,GACpC8F,EAAOqY,GAASzjB,QAAQ,MAAM,SAAU9a,GAClCA,EACFogB,EAAOpgB,GAITsF,EAAQk5B,OAAiB57C,GAAW,aAGtCo7C,GAAwBc,GAExBK,EAAoC,SAA2C9tB,GACjF,IAAI+tB,EAEAC,EAAWx/B,OAAOuN,OAAO4xB,GAAuCI,EAAiB,GAAIxb,EAAgBwb,EAAgBb,EAAS,CAChIz0B,MAAOuH,EACPuG,UAAU,IACRgM,EAAgBwb,EAAgBnB,EAAc,CAChDn0B,MAAO,KACP8N,UAAU,IACRgM,EAAgBwb,EAAgBlB,EAAa,CAC/Cp0B,MAAO,KACP8N,UAAU,IACRgM,EAAgBwb,EAAgBjB,EAAQ,CAC1Cr0B,MAAO,KACP8N,UAAU,IACRgM,EAAgBwb,EAAgBhB,EAAQ,CAC1Ct0B,MAAOuH,EAAOf,eAAe4L,WAC7BtE,UAAU,IACRgM,EAAgBwb,EAAgBd,EAAgB,CAClDx0B,MAAO,SAAexE,EAAS8a,GAC7B,IAAI5hB,EAAO6gC,EAASd,GAAS77B,OAEzBlE,GACF6gC,EAAShB,GAAgB,KACzBgB,EAASpB,GAAgB,KACzBoB,EAASnB,GAAe,KACxB54B,EAAQk5B,EAAiBhgC,GAAM,MAE/B6gC,EAASpB,GAAgB34B,EACzB+5B,EAASnB,GAAe9d,IAG5BxI,UAAU,IACRwnB,IA8BJ,OA7BAC,EAAShB,GAAgB,KACzB3kB,EAASrI,GAAQ,SAAUrR,GACzB,GAAIA,GAAoB,+BAAbA,EAAIC,KAAuC,CACpD,IAAImgB,EAASif,EAASnB,GAWtB,OARe,OAAX9d,IACFif,EAAShB,GAAgB,KACzBgB,EAASpB,GAAgB,KACzBoB,EAASnB,GAAe,KACxB9d,EAAOpgB,SAGTq/B,EAASlB,GAAUn+B,GAIrB,IAAIsF,EAAU+5B,EAASpB,GAEP,OAAZ34B,IACF+5B,EAAShB,GAAgB,KACzBgB,EAASpB,GAAgB,KACzBoB,EAASnB,GAAe,KACxB54B,EAAQk5B,OAAiB57C,GAAW,KAGtCy8C,EAASjB,IAAU,KAErB/sB,EAAOvF,GAAG,WAAY6yB,EAAWjuB,KAAK,KAAM2uB,IACrCA,GAGT76C,EAAO1B,QAAUq8C,I,0DC5MjB,MAAMp7C,EAAOjB,EAEbiB,EAAKu7C,SAAW,EAAQ,QAAcA,SACtCv7C,EAAKw7C,cAAgB,EAAQ,QAAYA,cACzCx7C,EAAKy7C,cAAgB,EAAQ,QAAYA,cACzCz7C,EAAKutC,KAAO,EAAQ,S,qBCPpB,IAAImO,EAAa,EAAQ,QACrBr9C,EAAS,EAAQ,QAAeA,OAChCs9C,EAAQ,EAAQ,QAChB9tB,EAAe,EAAQ,QACvBvC,EAAY,EAAQ,QACpBsC,EAAM,EAAQ,SACdguB,EAAO,EAAQ,QACfr8C,EAAW,EAAQ,QAEvB,SAASw7B,EAAUloB,EAAMiU,EAAKgH,GAC5BxC,EAAUzT,KAAK1X,MAEfA,KAAK8tB,OAAS,IAAI4tB,EAClB17C,KAAK27C,WAAQ,EACb37C,KAAK2Z,QAAU,IAAI8T,EAAIG,IAAIjH,GAC3B3mB,KAAK6tB,MAAQ3vB,EAAO0gB,KAAK+O,GACzB3tB,KAAKiuB,MAAQvb,EACb1S,KAAK47C,cAAe,EA+BtB,SAASF,IACP17C,KAAKu4C,MAAQr6C,EAAO8qB,YAAY,GA8BlC,SAAS6yB,EAAO5gC,GACd,IAAI6gC,EAAS7gC,EAAK,IAClB,GAAI6gC,EAAS,GAAKA,EAAS,GACzB,MAAM,IAAI38C,MAAM,0BAElB,IAAIuC,GAAK,EACT,QAASA,EAAIo6C,EACX,GAAI7gC,EAAMvZ,GAAK,GAAKo6C,MAAcA,EAChC,MAAM,IAAI38C,MAAM,0BAGpB,GAAe,KAAX28C,EAEJ,OAAO7gC,EAAKoM,MAAM,EAAG,GAAKy0B,GAG5B,SAAS/gB,EAAkBghB,EAAO1d,EAAU1Q,GAC1C,IAAIquB,EAASR,EAAMO,EAAMljB,eACzB,IAAKmjB,EAAQ,MAAM,IAAI7yB,UAAU,sBAGjC,GADkB,kBAAPwE,IAAiBA,EAAKzvB,EAAO0gB,KAAK+O,IACzB,QAAhBquB,EAAOtpC,MAAkBib,EAAGxtB,SAAW67C,EAAOruB,GAAI,MAAM,IAAIxE,UAAU,qBAAuBwE,EAAGxtB,QAGpG,GADwB,kBAAbk+B,IAAuBA,EAAWngC,EAAO0gB,KAAKyf,IACrDA,EAASl+B,SAAW67C,EAAOr1B,IAAM,EAAG,MAAM,IAAIwC,UAAU,sBAAwBkV,EAASl+B,QAE7F,MAAoB,WAAhB67C,EAAO/hC,KACF,IAAIyT,EAAasuB,EAAO17C,OAAQ+9B,EAAU1Q,GAAI,GAC5B,SAAhBquB,EAAO/hC,KACT,IAAIshC,EAAWS,EAAO17C,OAAQ+9B,EAAU1Q,GAAI,GAG9C,IAAIiN,EAASohB,EAAO17C,OAAQ+9B,EAAU1Q,GAG/C,SAASkN,EAAgBkhB,EAAO1d,GAC9B,IAAI2d,EAASR,EAAMO,EAAMljB,eACzB,IAAKmjB,EAAQ,MAAM,IAAI7yB,UAAU,sBAEjC,IAAIvN,EAAO6/B,EAAKpd,GAAU,EAAO2d,EAAOr1B,IAAKq1B,EAAOruB,IACpD,OAAOoN,EAAiBghB,EAAOngC,EAAK+K,IAAK/K,EAAK+R,IAnGhDvuB,EAASw7B,EAAUzP,GAEnByP,EAASn7B,UAAUkb,QAAU,SAAUL,GAErC,IAAI+S,EACA4uB,EAFJj8C,KAAK8tB,OAAO1lB,IAAIkS,GAGhB,IAAIhW,EAAM,GACV,MAAQ+oB,EAAQrtB,KAAK8tB,OAAO/K,IAAI/iB,KAAK47C,cACnCK,EAAQj8C,KAAKiuB,MAAMpU,QAAQ7Z,KAAMqtB,GACjC/oB,EAAIqgB,KAAKs3B,GAEX,OAAO/9C,EAAOkd,OAAO9W,IAGvBs2B,EAASn7B,UAAUyuB,OAAS,WAC1B,IAAIb,EAAQrtB,KAAK8tB,OAAOjB,QACxB,GAAI7sB,KAAK47C,aACP,OAAOC,EAAM77C,KAAKiuB,MAAMpU,QAAQ7Z,KAAMqtB,IACjC,GAAIA,EACT,MAAM,IAAIluB,MAAM,sCAIpBy7B,EAASn7B,UAAUy8C,eAAiB,SAAUC,GAE5C,OADAn8C,KAAK47C,eAAiBO,EACfn8C,MAOT07C,EAASj8C,UAAU2I,IAAM,SAAUkS,GACjCta,KAAKu4C,MAAQr6C,EAAOkd,OAAO,CAACpb,KAAKu4C,MAAOj+B,KAG1CohC,EAASj8C,UAAUsjB,IAAM,SAAUq5B,GACjC,IAAI93C,EACJ,GAAI83C,GACF,GAAIp8C,KAAKu4C,MAAMp4C,OAAS,GAGtB,OAFAmE,EAAMtE,KAAKu4C,MAAMlxB,MAAM,EAAG,IAC1BrnB,KAAKu4C,MAAQv4C,KAAKu4C,MAAMlxB,MAAM,IACvB/iB,OAGT,GAAItE,KAAKu4C,MAAMp4C,QAAU,GAGvB,OAFAmE,EAAMtE,KAAKu4C,MAAMlxB,MAAM,EAAG,IAC1BrnB,KAAKu4C,MAAQv4C,KAAKu4C,MAAMlxB,MAAM,IACvB/iB,EAIX,OAAO,MAGTo3C,EAASj8C,UAAUotB,MAAQ,WACzB,GAAI7sB,KAAKu4C,MAAMp4C,OAAQ,OAAOH,KAAKu4C,OA8CrC35C,EAAQi8B,eAAiBA,EACzBj8B,EAAQm8B,iBAAmBA,G,mCC3H3B,cAyBA,IAAItP,EAHJnrB,EAAO1B,QAAU8tC,EAMjBA,EAAS2P,cAAgBA,EAGhB,EAAQ,QAAUC,aAA3B,IAEIC,EAAkB,SAAyBC,EAASviC,GACtD,OAAOuiC,EAAQC,UAAUxiC,GAAM9Z,QAO7Bg0B,EAAS,EAAQ,QAIjBj2B,EAAS,EAAQ,QAAUA,OAE3Bk2B,EAAgB5Y,EAAO+H,YAAc,aAEzC,SAAS8Q,EAAoBhH,GAC3B,OAAOnvB,EAAO0gB,KAAKyO,GAGrB,SAASiH,EAAcC,GACrB,OAAOr2B,EAAOO,SAAS81B,IAAQA,aAAeH,EAKhD,IAEIsoB,EAFAC,EAAY,EAAQ,GAKtBD,EADEC,GAAaA,EAAUC,SACjBD,EAAUC,SAAS,UAEnB,aAKV,IAcIC,EACA5B,EACAr8B,EAhBA4hB,EAAa,EAAQ,QAErB/L,EAAc,EAAQ,QAEtBC,EAAW,EAAQ,QACnBnM,EAAmBmM,EAASnM,iBAE5B6C,EAAiB,EAAQ,QAAalD,MACtCyM,EAAuBvJ,EAAeuJ,qBACtCmoB,EAA4B1xB,EAAe0xB,0BAC3CzxB,EAA6BD,EAAeC,2BAC5C0xB,EAAqC3xB,EAAe2xB,mCAOxD,EAAQ,OAAR,CAAoBrQ,EAAUvY,GAE9B,IAAIc,EAAiBR,EAAYQ,eAC7B+nB,EAAe,CAAC,QAAS,QAAS,UAAW,QAAS,UAE1D,SAASC,EAAgBT,EAASz1B,EAAOwV,GAGvC,GAAuC,oBAA5BigB,EAAQS,gBAAgC,OAAOT,EAAQS,gBAAgBl2B,EAAOwV,GAKpFigB,EAAQU,SAAYV,EAAQU,QAAQn2B,GAAuCnlB,MAAMC,QAAQ26C,EAAQU,QAAQn2B,IAASy1B,EAAQU,QAAQn2B,GAAOmpB,QAAQ3T,GAASigB,EAAQU,QAAQn2B,GAAS,CAACwV,EAAIigB,EAAQU,QAAQn2B,IAA5Jy1B,EAAQ50B,GAAGb,EAAOwV,GAGrE,SAAS8f,EAAcriC,EAASmT,EAAQ/E,GACtCqD,EAASA,GAAU,EAAQ,QAC3BzR,EAAUA,GAAW,GAMG,mBAAboO,IAAwBA,EAAW+E,aAAkB1B,GAGhEzrB,KAAK2oB,aAAe3O,EAAQ2O,WACxBP,IAAUpoB,KAAK2oB,WAAa3oB,KAAK2oB,cAAgB3O,EAAQmjC,oBAG7Dn9C,KAAKsoB,cAAgBC,EAAiBvoB,KAAMga,EAAS,wBAAyBoO,GAI9EpoB,KAAKma,OAAS,IAAIqmB,EAClBxgC,KAAKG,OAAS,EACdH,KAAKo9C,MAAQ,KACbp9C,KAAKq9C,WAAa,EAClBr9C,KAAKs9C,QAAU,KACft9C,KAAKu1B,OAAQ,EACbv1B,KAAKg4B,YAAa,EAClBh4B,KAAKqsB,SAAU,EAKfrsB,KAAK2sB,MAAO,EAGZ3sB,KAAKssB,cAAe,EACpBtsB,KAAKu9C,iBAAkB,EACvBv9C,KAAKw9C,mBAAoB,EACzBx9C,KAAKy9C,iBAAkB,EACvBz9C,KAAK09C,QAAS,EAEd19C,KAAKs2B,WAAkC,IAAtBtc,EAAQsc,UAEzBt2B,KAAKu2B,cAAgBvc,EAAQuc,YAE7Bv2B,KAAKitB,WAAY,EAIjBjtB,KAAK21B,gBAAkB3b,EAAQ2b,iBAAmB,OAElD31B,KAAK29C,WAAa,EAElB39C,KAAK49C,aAAc,EACnB59C,KAAK2c,QAAU,KACf3c,KAAKopB,SAAW,KAEZpP,EAAQoP,WACLyzB,IAAeA,EAAgB,EAAQ,QAAmBA,eAC/D78C,KAAK2c,QAAU,IAAIkgC,EAAc7iC,EAAQoP,UACzCppB,KAAKopB,SAAWpP,EAAQoP,UAI5B,SAASsjB,EAAS1yB,GAEhB,GADAyR,EAASA,GAAU,EAAQ,UACrBzrB,gBAAgB0sC,GAAW,OAAO,IAAIA,EAAS1yB,GAGrD,IAAIoO,EAAWpoB,gBAAgByrB,EAC/BzrB,KAAKosB,eAAiB,IAAIiwB,EAAcriC,EAASha,KAAMooB,GAEvDpoB,KAAK69C,UAAW,EAEZ7jC,IAC0B,oBAAjBA,EAAQwE,OAAqBxe,KAAKusB,MAAQvS,EAAQwE,MAC9B,oBAApBxE,EAAQ4c,UAAwB52B,KAAKutB,SAAWvT,EAAQ4c,UAGrEzC,EAAOzc,KAAK1X,MAiEd,SAAS89C,EAAiB3wB,EAAQE,EAAOjE,EAAU20B,EAAYC,GAC7DtB,EAAM,mBAAoBrvB,GAC1B,IAMM1B,EANFnD,EAAQ2E,EAAOf,eAEnB,GAAc,OAAViB,EACF7E,EAAM6D,SAAU,EAChB4xB,EAAW9wB,EAAQ3E,QAKnB,GAFKw1B,IAAgBryB,EAAKuyB,EAAa11B,EAAO6E,IAE1C1B,EACFsJ,EAAe9H,EAAQxB,QAClB,GAAInD,EAAMG,YAAc0E,GAASA,EAAMltB,OAAS,EAKrD,GAJqB,kBAAVktB,GAAuB7E,EAAMG,YAAchN,OAAOk/B,eAAextB,KAAWnvB,EAAOuB,YAC5F4tB,EAAQgH,EAAoBhH,IAG1B0wB,EACEv1B,EAAMwP,WAAY/C,EAAe9H,EAAQ,IAAI4vB,GAA2CoB,EAAShxB,EAAQ3E,EAAO6E,GAAO,QACtH,GAAI7E,EAAM+M,MACfN,EAAe9H,EAAQ,IAAI2vB,OACtB,IAAIt0B,EAAMyE,UACf,OAAO,EAEPzE,EAAM6D,SAAU,EAEZ7D,EAAM7L,UAAYyM,GACpBiE,EAAQ7E,EAAM7L,QAAQO,MAAMmQ,GACxB7E,EAAMG,YAA+B,IAAjB0E,EAAMltB,OAAcg+C,EAAShxB,EAAQ3E,EAAO6E,GAAO,GAAY+wB,EAAcjxB,EAAQ3E,IAE7G21B,EAAShxB,EAAQ3E,EAAO6E,GAAO,QAGzB0wB,IACVv1B,EAAM6D,SAAU,EAChB+xB,EAAcjxB,EAAQ3E,IAO1B,OAAQA,EAAM+M,QAAU/M,EAAMroB,OAASqoB,EAAMF,eAAkC,IAAjBE,EAAMroB,QAGtE,SAASg+C,EAAShxB,EAAQ3E,EAAO6E,EAAO0wB,GAClCv1B,EAAM80B,SAA4B,IAAjB90B,EAAMroB,SAAiBqoB,EAAMmE,MAChDnE,EAAMm1B,WAAa,EACnBxwB,EAAOlB,KAAK,OAAQoB,KAGpB7E,EAAMroB,QAAUqoB,EAAMG,WAAa,EAAI0E,EAAMltB,OACzC49C,EAAYv1B,EAAMrO,OAAO+1B,QAAQ7iB,GAAY7E,EAAMrO,OAAOwK,KAAK0I,GAC/D7E,EAAM8D,cAAc+xB,EAAalxB,IAGvCixB,EAAcjxB,EAAQ3E,GAGxB,SAAS01B,EAAa11B,EAAO6E,GAC3B,IAAI1B,EAMJ,OAJK2I,EAAcjH,IAA2B,kBAAVA,QAAgC3uB,IAAV2uB,GAAwB7E,EAAMG,aACtFgD,EAAK,IAAIgJ,EAAqB,QAAS,CAAC,SAAU,SAAU,cAAetH,IAGtE1B,EAjIThQ,OAAO0T,eAAeqd,EAASjtC,UAAW,YAAa,CAIrD8vB,YAAY,EACZxM,IAAK,WACH,YAA4BrkB,IAAxBsB,KAAKosB,gBAIFpsB,KAAKosB,eAAea,WAE7B9J,IAAK,SAAayC,GAGX5lB,KAAKosB,iBAMVpsB,KAAKosB,eAAea,UAAYrH,MAGpC8mB,EAASjtC,UAAUm3B,QAAUnC,EAAYmC,QACzC8V,EAASjtC,UAAUs5B,WAAatE,EAAYuE,UAE5C0T,EAASjtC,UAAU8tB,SAAW,SAAUzR,EAAKiQ,GAC3CA,EAAGjQ,IAOL4wB,EAASjtC,UAAUklB,KAAO,SAAU0I,EAAOjE,GACzC,IACI40B,EADAx1B,EAAQxoB,KAAKosB,eAkBjB,OAfK5D,EAAMG,WAYTq1B,GAAiB,EAXI,kBAAV3wB,IACTjE,EAAWA,GAAYZ,EAAMmN,gBAEzBvM,IAAaZ,EAAMY,WACrBiE,EAAQnvB,EAAO0gB,KAAKyO,EAAOjE,GAC3BA,EAAW,IAGb40B,GAAiB,GAMdF,EAAiB99C,KAAMqtB,EAAOjE,GAAU,EAAO40B,IAIxDtR,EAASjtC,UAAUywC,QAAU,SAAU7iB,GACrC,OAAOywB,EAAiB99C,KAAMqtB,EAAO,MAAM,GAAM,IAyEnDqf,EAASjtC,UAAU6+C,SAAW,WAC5B,OAAuC,IAAhCt+C,KAAKosB,eAAekxB,SAI7B5Q,EAASjtC,UAAU8+C,YAAc,SAAUjgD,GACpCu+C,IAAeA,EAAgB,EAAQ,QAAmBA,eAC/D,IAAIlgC,EAAU,IAAIkgC,EAAcv+C,GAChC0B,KAAKosB,eAAezP,QAAUA,EAE9B3c,KAAKosB,eAAehD,SAAWppB,KAAKosB,eAAezP,QAAQyM,SAE3D,IAAIha,EAAIpP,KAAKosB,eAAejS,OAAOsmB,KAC/B2N,EAAU,GAEd,MAAa,OAANh/B,EACLg/B,GAAWzxB,EAAQO,MAAM9N,EAAEkL,MAC3BlL,EAAIA,EAAEwJ,KAOR,OAJA5Y,KAAKosB,eAAejS,OAAOqkC,QAEX,KAAZpQ,GAAgBpuC,KAAKosB,eAAejS,OAAOwK,KAAKypB,GACpDpuC,KAAKosB,eAAejsB,OAASiuC,EAAQjuC,OAC9BH,MAIT,IAAIy+C,EAAU,WAEd,SAASC,EAAwB7uC,GAgB/B,OAfIA,GAAK4uC,EAEP5uC,EAAI4uC,GAIJ5uC,IACAA,GAAKA,IAAM,EACXA,GAAKA,IAAM,EACXA,GAAKA,IAAM,EACXA,GAAKA,IAAM,EACXA,GAAKA,IAAM,GACXA,KAGKA,EAKT,SAAS8uC,EAAc9uC,EAAG2Y,GACxB,OAAI3Y,GAAK,GAAsB,IAAjB2Y,EAAMroB,QAAgBqoB,EAAM+M,MAAc,EACpD/M,EAAMG,WAAmB,EAEzB9Y,IAAMA,EAEJ2Y,EAAM80B,SAAW90B,EAAMroB,OAAeqoB,EAAMrO,OAAOsmB,KAAKnmB,KAAKna,OAAmBqoB,EAAMroB,QAIxF0P,EAAI2Y,EAAMF,gBAAeE,EAAMF,cAAgBo2B,EAAwB7uC,IACvEA,GAAK2Y,EAAMroB,OAAe0P,EAEzB2Y,EAAM+M,MAKJ/M,EAAMroB,QAJXqoB,EAAM8D,cAAe,EACd,IAsGX,SAAS2xB,EAAW9wB,EAAQ3E,GAE1B,GADAk0B,EAAM,eACFl0B,EAAM+M,MAAV,CAEA,GAAI/M,EAAM7L,QAAS,CACjB,IAAI0Q,EAAQ7E,EAAM7L,QAAQtb,MAEtBgsB,GAASA,EAAMltB,SACjBqoB,EAAMrO,OAAOwK,KAAK0I,GAClB7E,EAAMroB,QAAUqoB,EAAMG,WAAa,EAAI0E,EAAMltB,QAIjDqoB,EAAM+M,OAAQ,EAEV/M,EAAMmE,KAIR0xB,EAAalxB,IAGb3E,EAAM8D,cAAe,EAEhB9D,EAAM+0B,kBACT/0B,EAAM+0B,iBAAkB,EACxBqB,EAAczxB,MAQpB,SAASkxB,EAAalxB,GACpB,IAAI3E,EAAQ2E,EAAOf,eACnBswB,EAAM,eAAgBl0B,EAAM8D,aAAc9D,EAAM+0B,iBAChD/0B,EAAM8D,cAAe,EAEhB9D,EAAM+0B,kBACTb,EAAM,eAAgBl0B,EAAM80B,SAC5B90B,EAAM+0B,iBAAkB,EACxBj+B,EAAQwT,SAAS8rB,EAAezxB,IAIpC,SAASyxB,EAAczxB,GACrB,IAAI3E,EAAQ2E,EAAOf,eACnBswB,EAAM,gBAAiBl0B,EAAMyE,UAAWzE,EAAMroB,OAAQqoB,EAAM+M,OAEvD/M,EAAMyE,YAAczE,EAAMroB,SAAUqoB,EAAM+M,QAC7CpI,EAAOlB,KAAK,YACZzD,EAAM+0B,iBAAkB,GAS1B/0B,EAAM8D,cAAgB9D,EAAM80B,UAAY90B,EAAM+M,OAAS/M,EAAMroB,QAAUqoB,EAAMF,cAC7Eu2B,EAAK1xB,GASP,SAASixB,EAAcjxB,EAAQ3E,GACxBA,EAAMo1B,cACTp1B,EAAMo1B,aAAc,EACpBt+B,EAAQwT,SAASgsB,EAAgB3xB,EAAQ3E,IAI7C,SAASs2B,EAAe3xB,EAAQ3E,GAwB9B,OAAQA,EAAM6D,UAAY7D,EAAM+M,QAAU/M,EAAMroB,OAASqoB,EAAMF,eAAiBE,EAAM80B,SAA4B,IAAjB90B,EAAMroB,QAAe,CACpH,IAAIoB,EAAMinB,EAAMroB,OAGhB,GAFAu8C,EAAM,wBACNvvB,EAAO3O,KAAK,GACRjd,IAAQinB,EAAMroB,OAChB,MAGJqoB,EAAMo1B,aAAc,EAgJtB,SAASmB,EAAYv5B,GACnB,OAAO,WACL,IAAIgD,EAAQhD,EAAI4G,eAChBswB,EAAM,cAAel0B,EAAMm1B,YACvBn1B,EAAMm1B,YAAYn1B,EAAMm1B,aAEH,IAArBn1B,EAAMm1B,YAAoBpB,EAAgB/2B,EAAK,UACjDgD,EAAM80B,SAAU,EAChBuB,EAAKr5B,KAqHX,SAASw5B,EAAwB36C,GAC/B,IAAImkB,EAAQnkB,EAAK+nB,eACjB5D,EAAMg1B,kBAAoBn5C,EAAK46C,cAAc,YAAc,EAEvDz2B,EAAMi1B,kBAAoBj1B,EAAMk1B,OAGlCl1B,EAAM80B,SAAU,EACPj5C,EAAK46C,cAAc,QAAU,GACtC56C,EAAKyiB,SAIT,SAASo4B,EAAiB76C,GACxBq4C,EAAM,4BACNr4C,EAAKma,KAAK,GAqBZ,SAASsI,EAAOqG,EAAQ3E,GACjBA,EAAMi1B,kBACTj1B,EAAMi1B,iBAAkB,EACxBn+B,EAAQwT,SAASqsB,EAAShyB,EAAQ3E,IAItC,SAAS22B,EAAQhyB,EAAQ3E,GACvBk0B,EAAM,SAAUl0B,EAAM6D,SAEjB7D,EAAM6D,SACTc,EAAO3O,KAAK,GAGdgK,EAAMi1B,iBAAkB,EACxBtwB,EAAOlB,KAAK,UACZ4yB,EAAK1xB,GACD3E,EAAM80B,UAAY90B,EAAM6D,SAASc,EAAO3O,KAAK,GAgBnD,SAASqgC,EAAK1xB,GACZ,IAAI3E,EAAQ2E,EAAOf,eACnBswB,EAAM,OAAQl0B,EAAM80B,SAEpB,MAAO90B,EAAM80B,SAA6B,OAAlBnwB,EAAO3O,SA4HjC,SAAS4gC,EAASvvC,EAAG2Y,GAEnB,OAAqB,IAAjBA,EAAMroB,OAAqB,MAE3BqoB,EAAMG,WAAYrjB,EAAMkjB,EAAMrO,OAAO3H,SAAkB3C,GAAKA,GAAK2Y,EAAMroB,QAEtDmF,EAAfkjB,EAAM7L,QAAe6L,EAAMrO,OAAO6hB,KAAK,IAAqC,IAAxBxT,EAAMrO,OAAOha,OAAoBqoB,EAAMrO,OAAOa,QAAmBwN,EAAMrO,OAAOiB,OAAOoN,EAAMroB,QACnJqoB,EAAMrO,OAAOqkC,SAGbl5C,EAAMkjB,EAAMrO,OAAOklC,QAAQxvC,EAAG2Y,EAAM7L,SAE/BrX,GATP,IAAIA,EAYN,SAASg6C,EAAYnyB,GACnB,IAAI3E,EAAQ2E,EAAOf,eACnBswB,EAAM,cAAel0B,EAAMwP,YAEtBxP,EAAMwP,aACTxP,EAAM+M,OAAQ,EACdjW,EAAQwT,SAASysB,EAAe/2B,EAAO2E,IAI3C,SAASoyB,EAAc/2B,EAAO2E,GAG5B,GAFAuvB,EAAM,gBAAiBl0B,EAAMwP,WAAYxP,EAAMroB,SAE1CqoB,EAAMwP,YAA+B,IAAjBxP,EAAMroB,SAC7BqoB,EAAMwP,YAAa,EACnB7K,EAAO0wB,UAAW,EAClB1wB,EAAOlB,KAAK,OAERzD,EAAM+N,aAAa,CAGrB,IAAIipB,EAASryB,EAAOC,iBAEfoyB,GAAUA,EAAOjpB,aAAeipB,EAAOhqB,WAC1CrI,EAAOyJ,WAgBf,SAASkC,EAAQ2mB,EAAI1xC,GACnB,IAAK,IAAIrM,EAAI,EAAG0M,EAAIqxC,EAAGt/C,OAAQuB,EAAI0M,EAAG1M,IACpC,GAAI+9C,EAAG/9C,KAAOqM,EAAG,OAAOrM,EAG1B,OAAQ,EA3tBVgrC,EAASjtC,UAAU+e,KAAO,SAAU3O,GAClC6sC,EAAM,OAAQ7sC,GACdA,EAAIuV,SAASvV,EAAG,IAChB,IAAI2Y,EAAQxoB,KAAKosB,eACbszB,EAAQ7vC,EAKZ,GAJU,IAANA,IAAS2Y,EAAM+0B,iBAAkB,GAI3B,IAAN1tC,GAAW2Y,EAAM8D,gBAA0C,IAAxB9D,EAAMF,cAAsBE,EAAMroB,QAAUqoB,EAAMF,cAAgBE,EAAMroB,OAAS,IAAMqoB,EAAM+M,OAGlI,OAFAmnB,EAAM,qBAAsBl0B,EAAMroB,OAAQqoB,EAAM+M,OAC3B,IAAjB/M,EAAMroB,QAAgBqoB,EAAM+M,MAAO+pB,EAAYt/C,MAAWq+C,EAAar+C,MACpE,KAKT,GAFA6P,EAAI8uC,EAAc9uC,EAAG2Y,GAEX,IAAN3Y,GAAW2Y,EAAM+M,MAEnB,OADqB,IAAjB/M,EAAMroB,QAAcm/C,EAAYt/C,MAC7B,KAyBT,IA4BIsF,EA5BAq6C,EAASn3B,EAAM8D,aAgDnB,OA/CAowB,EAAM,gBAAiBiD,IAEF,IAAjBn3B,EAAMroB,QAAgBqoB,EAAMroB,OAAS0P,EAAI2Y,EAAMF,iBACjDq3B,GAAS,EACTjD,EAAM,6BAA8BiD,IAKlCn3B,EAAM+M,OAAS/M,EAAM6D,SACvBszB,GAAS,EACTjD,EAAM,mBAAoBiD,IACjBA,IACTjD,EAAM,WACNl0B,EAAM6D,SAAU,EAChB7D,EAAMmE,MAAO,EAEQ,IAAjBnE,EAAMroB,SAAcqoB,EAAM8D,cAAe,GAE7CtsB,KAAKusB,MAAM/D,EAAMF,eAEjBE,EAAMmE,MAAO,EAGRnE,EAAM6D,UAASxc,EAAI8uC,EAAce,EAAOl3B,KAIpCljB,EAAPuK,EAAI,EAASuvC,EAASvvC,EAAG2Y,GAAkB,KAEnC,OAARljB,GACFkjB,EAAM8D,aAAe9D,EAAMroB,QAAUqoB,EAAMF,cAC3CzY,EAAI,IAEJ2Y,EAAMroB,QAAU0P,EAChB2Y,EAAMm1B,WAAa,GAGA,IAAjBn1B,EAAMroB,SAGHqoB,EAAM+M,QAAO/M,EAAM8D,cAAe,GAEnCozB,IAAU7vC,GAAK2Y,EAAM+M,OAAO+pB,EAAYt/C,OAGlC,OAARsF,GAActF,KAAKisB,KAAK,OAAQ3mB,GAC7BA,GAwHTonC,EAASjtC,UAAU8sB,MAAQ,SAAU1c,GACnColB,EAAej1B,KAAM,IAAIqrB,EAA2B,aAGtDqhB,EAASjtC,UAAUg5B,KAAO,SAAUl1B,EAAMq8C,GACxC,IAAIp6B,EAAMxlB,KACNwoB,EAAQxoB,KAAKosB,eAEjB,OAAQ5D,EAAM60B,YACZ,KAAK,EACH70B,EAAM40B,MAAQ75C,EACd,MAEF,KAAK,EACHilB,EAAM40B,MAAQ,CAAC50B,EAAM40B,MAAO75C,GAC5B,MAEF,QACEilB,EAAM40B,MAAMz4B,KAAKphB,GACjB,MAGJilB,EAAM60B,YAAc,EACpBX,EAAM,wBAAyBl0B,EAAM60B,WAAYuC,GACjD,IAAIC,IAAUD,IAA6B,IAAjBA,EAASv+C,MAAkBkC,IAAS+b,EAAQwgC,QAAUv8C,IAAS+b,EAAQygC,OAC7FC,EAAQH,EAAQI,EAAQC,EAI5B,SAASC,EAAStC,EAAUuC,GAC1B1D,EAAM,YAEFmB,IAAar4B,GACX46B,IAAwC,IAA1BA,EAAWC,aAC3BD,EAAWC,YAAa,EACxBC,KAKN,SAASL,IACPvD,EAAM,SACNn5C,EAAKlC,MAhBHmnB,EAAMwP,WAAY1Y,EAAQwT,SAASktB,GAAYx6B,EAAI0S,KAAK,MAAO8nB,GACnEz8C,EAAKqkB,GAAG,SAAUu4B,GAsBlB,IAAII,EAAUxB,EAAYv5B,GAC1BjiB,EAAKqkB,GAAG,QAAS24B,GACjB,IAAIC,GAAY,EAEhB,SAASF,IACP5D,EAAM,WAENn5C,EAAKk9C,eAAe,QAASC,GAC7Bn9C,EAAKk9C,eAAe,SAAUE,GAC9Bp9C,EAAKk9C,eAAe,QAASF,GAC7Bh9C,EAAKk9C,eAAe,QAASG,GAC7Br9C,EAAKk9C,eAAe,SAAUN,GAC9B36B,EAAIi7B,eAAe,MAAOR,GAC1Bz6B,EAAIi7B,eAAe,MAAOP,GAC1B16B,EAAIi7B,eAAe,OAAQI,GAC3BL,GAAY,GAMRh4B,EAAMm1B,YAAgBp6C,EAAK6pB,iBAAkB7pB,EAAK6pB,eAAeiI,WAAYkrB,IAKnF,SAASM,EAAOxzB,GACdqvB,EAAM,UACN,IAAIp3C,EAAM/B,EAAK2Z,MAAMmQ,GACrBqvB,EAAM,aAAcp3C,IAER,IAARA,KAKwB,IAArBkjB,EAAM60B,YAAoB70B,EAAM40B,QAAU75C,GAAQilB,EAAM60B,WAAa,IAAqC,IAAhCvkB,EAAQtQ,EAAM40B,MAAO75C,MAAkBi9C,IACpH9D,EAAM,8BAA+Bl0B,EAAMm1B,YAC3Cn1B,EAAMm1B,cAGRn4B,EAAIs7B,SAMR,SAASF,EAAQj1B,GACf+wB,EAAM,UAAW/wB,GACjBu0B,IACA38C,EAAKk9C,eAAe,QAASG,GACU,IAAnCrE,EAAgBh5C,EAAM,UAAgB0xB,EAAe1xB,EAAMooB,GAMjE,SAAS+0B,IACPn9C,EAAKk9C,eAAe,SAAUE,GAC9BT,IAKF,SAASS,IACPjE,EAAM,YACNn5C,EAAKk9C,eAAe,QAASC,GAC7BR,IAKF,SAASA,IACPxD,EAAM,UACNl3B,EAAI06B,OAAO38C,GAWb,OA7DAiiB,EAAIoC,GAAG,OAAQi5B,GA+Bf5D,EAAgB15C,EAAM,QAASq9C,GAO/Br9C,EAAK20B,KAAK,QAASwoB,GAQnBn9C,EAAK20B,KAAK,SAAUyoB,GAQpBp9C,EAAK0oB,KAAK,OAAQzG,GAEbgD,EAAM80B,UACTZ,EAAM,eACNl3B,EAAIsB,UAGCvjB,GAgBTmpC,EAASjtC,UAAUygD,OAAS,SAAU38C,GACpC,IAAIilB,EAAQxoB,KAAKosB,eACbg0B,EAAa,CACfC,YAAY,GAGd,GAAyB,IAArB73B,EAAM60B,WAAkB,OAAOr9C,KAEnC,GAAyB,IAArBwoB,EAAM60B,WAER,OAAI95C,GAAQA,IAASilB,EAAM40B,QACtB75C,IAAMA,EAAOilB,EAAM40B,OAExB50B,EAAM40B,MAAQ,KACd50B,EAAM60B,WAAa,EACnB70B,EAAM80B,SAAU,EACZ/5C,GAAMA,EAAK0oB,KAAK,SAAUjsB,KAAMogD,IANKpgD,KAW3C,IAAKuD,EAAM,CAET,IAAIw9C,EAAQv4B,EAAM40B,MACd77C,EAAMinB,EAAM60B,WAChB70B,EAAM40B,MAAQ,KACd50B,EAAM60B,WAAa,EACnB70B,EAAM80B,SAAU,EAEhB,IAAK,IAAI57C,EAAI,EAAGA,EAAIH,EAAKG,IACvBq/C,EAAMr/C,GAAGuqB,KAAK,SAAUjsB,KAAM,CAC5BqgD,YAAY,IAIhB,OAAOrgD,KAIT,IAAIY,EAAQk4B,EAAQtQ,EAAM40B,MAAO75C,GACjC,OAAe,IAAX3C,IACJ4nB,EAAM40B,MAAMjO,OAAOvuC,EAAO,GAC1B4nB,EAAM60B,YAAc,EACK,IAArB70B,EAAM60B,aAAkB70B,EAAM40B,MAAQ50B,EAAM40B,MAAM,IACtD75C,EAAK0oB,KAAK,SAAUjsB,KAAMogD,IAJDpgD,MAU3B0sC,EAASjtC,UAAUmoB,GAAK,SAAUo5B,EAAIzkB,GACpC,IAAIz2B,EAAMquB,EAAO10B,UAAUmoB,GAAGlQ,KAAK1X,KAAMghD,EAAIzkB,GACzC/T,EAAQxoB,KAAKosB,eAuBjB,MArBW,SAAP40B,GAGFx4B,EAAMg1B,kBAAoBx9C,KAAKi/C,cAAc,YAAc,GAErC,IAAlBz2B,EAAM80B,SAAmBt9C,KAAK8mB,UAClB,aAAPk6B,IACJx4B,EAAMwP,YAAexP,EAAMg1B,oBAC9Bh1B,EAAMg1B,kBAAoBh1B,EAAM8D,cAAe,EAC/C9D,EAAM80B,SAAU,EAChB90B,EAAM+0B,iBAAkB,EACxBb,EAAM,cAAel0B,EAAMroB,OAAQqoB,EAAM6D,SAErC7D,EAAMroB,OACRk+C,EAAar+C,MACHwoB,EAAM6D,SAChB/M,EAAQwT,SAASosB,EAAkBl/C,QAKlC8F,GAGT4mC,EAASjtC,UAAUwhD,YAAcvU,EAASjtC,UAAUmoB,GAEpD8kB,EAASjtC,UAAUghD,eAAiB,SAAUO,EAAIzkB,GAChD,IAAIz2B,EAAMquB,EAAO10B,UAAUghD,eAAe/oC,KAAK1X,KAAMghD,EAAIzkB,GAYzD,MAVW,aAAPykB,GAOF1hC,EAAQwT,SAASksB,EAAyBh/C,MAGrC8F,GAGT4mC,EAASjtC,UAAUyhD,mBAAqB,SAAUF,GAChD,IAAIl7C,EAAMquB,EAAO10B,UAAUyhD,mBAAmBj8B,MAAMjlB,KAAMgnB,WAY1D,MAVW,aAAPg6B,QAA4BtiD,IAAPsiD,GAOvB1hC,EAAQwT,SAASksB,EAAyBh/C,MAGrC8F,GAuBT4mC,EAASjtC,UAAUqnB,OAAS,WAC1B,IAAI0B,EAAQxoB,KAAKosB,eAYjB,OAVK5D,EAAM80B,UACTZ,EAAM,UAINl0B,EAAM80B,SAAW90B,EAAMg1B,kBACvB12B,EAAO9mB,KAAMwoB,IAGfA,EAAMk1B,QAAS,EACR19C,MAuBT0sC,EAASjtC,UAAUqhD,MAAQ,WAUzB,OATApE,EAAM,wBAAyB18C,KAAKosB,eAAekxB,UAEf,IAAhCt9C,KAAKosB,eAAekxB,UACtBZ,EAAM,SACN18C,KAAKosB,eAAekxB,SAAU,EAC9Bt9C,KAAKisB,KAAK,UAGZjsB,KAAKosB,eAAesxB,QAAS,EACtB19C,MAeT0sC,EAASjtC,UAAU0hD,KAAO,SAAUh0B,GAClC,IAAIH,EAAQhtB,KAERwoB,EAAQxoB,KAAKosB,eACbsxB,GAAS,EA0Bb,IAAK,IAAIh8C,KAzBTyrB,EAAOvF,GAAG,OAAO,WAGf,GAFA80B,EAAM,eAEFl0B,EAAM7L,UAAY6L,EAAM+M,MAAO,CACjC,IAAIlI,EAAQ7E,EAAM7L,QAAQtb,MACtBgsB,GAASA,EAAMltB,QAAQ6sB,EAAMrI,KAAK0I,GAGxCL,EAAMrI,KAAK,SAEbwI,EAAOvF,GAAG,QAAQ,SAAUyF,GAI1B,GAHAqvB,EAAM,gBACFl0B,EAAM7L,UAAS0Q,EAAQ7E,EAAM7L,QAAQO,MAAMmQ,MAE3C7E,EAAMG,YAAyB,OAAV0E,QAA4B3uB,IAAV2uB,KAAuC7E,EAAMG,YAAgB0E,GAAUA,EAAMltB,QAA3C,CAE7E,IAAImF,EAAM0nB,EAAMrI,KAAK0I,GAEhB/nB,IACHo4C,GAAS,EACTvwB,EAAO2zB,aAKG3zB,OACIzuB,IAAZsB,KAAK0B,IAAyC,oBAAdyrB,EAAOzrB,KACzC1B,KAAK0B,GAAK,SAAoB0/C,GAC5B,OAAO,WACL,OAAOj0B,EAAOi0B,GAAQn8B,MAAMkI,EAAQnG,YAF9B,CAIRtlB,IAKN,IAAK,IAAImO,EAAI,EAAGA,EAAImtC,EAAa78C,OAAQ0P,IACvCsd,EAAOvF,GAAGo1B,EAAantC,GAAI7P,KAAKisB,KAAKO,KAAKxsB,KAAMg9C,EAAantC,KAc/D,OATA7P,KAAKusB,MAAQ,SAAU1c,GACrB6sC,EAAM,gBAAiB7sC,GAEnB6tC,IACFA,GAAS,EACTvwB,EAAOrG,WAIJ9mB,MAGa,oBAAXq4B,SACTqU,EAASjtC,UAAU44B,OAAO2iB,eAAiB,WAKzC,YAJ0Ct8C,IAAtCu8C,IACFA,EAAoC,EAAQ,SAGvCA,EAAkCj7C,QAI7C2b,OAAO0T,eAAeqd,EAASjtC,UAAW,wBAAyB,CAIjE8vB,YAAY,EACZxM,IAAK,WACH,OAAO/iB,KAAKosB,eAAe9D,iBAG/B3M,OAAO0T,eAAeqd,EAASjtC,UAAW,iBAAkB,CAI1D8vB,YAAY,EACZxM,IAAK,WACH,OAAO/iB,KAAKosB,gBAAkBpsB,KAAKosB,eAAejS,UAGtDwB,OAAO0T,eAAeqd,EAASjtC,UAAW,kBAAmB,CAI3D8vB,YAAY,EACZxM,IAAK,WACH,OAAO/iB,KAAKosB,eAAekxB,SAE7Bn6B,IAAK,SAAaqF,GACZxoB,KAAKosB,iBACPpsB,KAAKosB,eAAekxB,QAAU90B,MAKpCkkB,EAAS2U,UAAYjC,EACrBzjC,OAAO0T,eAAeqd,EAASjtC,UAAW,iBAAkB,CAI1D8vB,YAAY,EACZxM,IAAK,WACH,OAAO/iB,KAAKosB,eAAejsB,UAoDT,oBAAXk4B,SACTqU,EAAS9tB,KAAO,SAAU0iC,EAAU5kB,GAKlC,YAJah+B,IAATkgB,IACFA,EAAO,EAAQ,SAGVA,EAAK8tB,EAAU4U,EAAU5kB,O,uDCzlCpCp8B,EAAO1B,QAAU,EAAQ,QAAU09C,c,oCCInC,IAAIiF,EAA6B,EAAQ,QAAmBr5B,MAAMq5B,2BAElE,SAASrpB,EAAK7a,GACZ,IAAImkC,GAAS,EACb,OAAO,WACL,IAAIA,EAAJ,CACAA,GAAS,EAET,IAAK,IAAIC,EAAOz6B,UAAU7mB,OAAQ6kB,EAAO,IAAIpjB,MAAM6/C,GAAO/nB,EAAO,EAAGA,EAAO+nB,EAAM/nB,IAC/E1U,EAAK0U,GAAQ1S,UAAU0S,GAGzBrc,EAAS4H,MAAMjlB,KAAMglB,KAIzB,SAAS08B,KAET,SAASC,EAAUx0B,GACjB,OAAOA,EAAOy0B,WAAqC,oBAAjBz0B,EAAO00B,MAG3C,SAASC,EAAI30B,EAAQuP,EAAMrf,GACzB,GAAoB,oBAATqf,EAAqB,OAAOolB,EAAI30B,EAAQ,KAAMuP,GACpDA,IAAMA,EAAO,IAClBrf,EAAW6a,EAAK7a,GAAYqkC,GAC5B,IAAI7D,EAAWnhB,EAAKmhB,WAA8B,IAAlBnhB,EAAKmhB,UAAsB1wB,EAAO0wB,SAC9DnqB,EAAWgJ,EAAKhJ,WAA8B,IAAlBgJ,EAAKhJ,UAAsBvG,EAAOuG,SAE9DquB,EAAiB,WACd50B,EAAOuG,UAAUitB,KAGpBqB,EAAgB70B,EAAOC,gBAAkBD,EAAOC,eAAeoI,SAE/DmrB,EAAW,WACbjtB,GAAW,EACXsuB,GAAgB,EACXnE,GAAUxgC,EAAS3F,KAAKyV,IAG3B80B,EAAgB90B,EAAOf,gBAAkBe,EAAOf,eAAe4L,WAE/DioB,EAAQ,WACVpC,GAAW,EACXoE,GAAgB,EACXvuB,GAAUrW,EAAS3F,KAAKyV,IAG3ByzB,EAAU,SAAiB9kC,GAC7BuB,EAAS3F,KAAKyV,EAAQrR,IAGpB4kC,EAAU,WACZ,IAAI5kC,EAEJ,OAAI+hC,IAAaoE,GACV90B,EAAOf,gBAAmBe,EAAOf,eAAemJ,QAAOzZ,EAAM,IAAIylC,GAC/DlkC,EAAS3F,KAAKyV,EAAQrR,IAG3B4X,IAAasuB,GACV70B,EAAOC,gBAAmBD,EAAOC,eAAemI,QAAOzZ,EAAM,IAAIylC,GAC/DlkC,EAAS3F,KAAKyV,EAAQrR,SAF/B,GAMEomC,EAAY,WACd/0B,EAAO2P,IAAIlV,GAAG,SAAU+4B,IAiB1B,OAdIgB,EAAUx0B,IACZA,EAAOvF,GAAG,WAAY+4B,GACtBxzB,EAAOvF,GAAG,QAAS84B,GACfvzB,EAAO2P,IAAKolB,IAAiB/0B,EAAOvF,GAAG,UAAWs6B,IAC7CxuB,IAAavG,EAAOC,iBAE7BD,EAAOvF,GAAG,MAAOm6B,GACjB50B,EAAOvF,GAAG,QAASm6B,IAGrB50B,EAAOvF,GAAG,MAAOq4B,GACjB9yB,EAAOvF,GAAG,SAAU+4B,IACD,IAAfjkB,EAAKtV,OAAiB+F,EAAOvF,GAAG,QAASg5B,GAC7CzzB,EAAOvF,GAAG,QAAS84B,GACZ,WACLvzB,EAAOszB,eAAe,WAAYE,GAClCxzB,EAAOszB,eAAe,QAASC,GAC/BvzB,EAAOszB,eAAe,UAAWyB,GAC7B/0B,EAAO2P,KAAK3P,EAAO2P,IAAI2jB,eAAe,SAAUE,GACpDxzB,EAAOszB,eAAe,MAAOsB,GAC7B50B,EAAOszB,eAAe,QAASsB,GAC/B50B,EAAOszB,eAAe,SAAUE,GAChCxzB,EAAOszB,eAAe,MAAOR,GAC7B9yB,EAAOszB,eAAe,QAASG,GAC/BzzB,EAAOszB,eAAe,QAASC,IAInCpgD,EAAO1B,QAAUkjD,G,oCCrGjB,IAAIniD,EAAK,EAAQ,QACb2pB,EAAQ,EAAQ,QAChBtqB,EAASsqB,EAAMtqB,OACf4xC,EAAiBtnB,EAAMsnB,eACvBD,EAAarnB,EAAMqnB,WAUvB,SAASwR,EAAU1V,EAAOsF,GACxB/xC,KAAKysC,MAAQA,EAEM,kBAARsF,IACTA,EAAMpB,EAAWoB,IAEfnwC,MAAMC,QAAQkwC,KAChBA,EAAM,CACJqQ,EAAGrQ,EAAI1qB,MAAM,EAAGolB,EAAMiF,gBACtBhQ,EAAGqQ,EAAI1qB,MAAMolB,EAAMiF,kBAIvB1yC,EAAO+yC,EAAIqQ,GAAKrQ,EAAIrQ,EAAG,4BAEnB+K,EAAMuE,QAAQe,EAAIqQ,KACpBpiD,KAAKqiD,GAAKtQ,EAAIqQ,GACZrQ,EAAIrQ,aAAa/hC,IACnBK,KAAKsiD,GAAKvQ,EAAIrQ,GAEhB1hC,KAAKuiD,UAAY3gD,MAAMC,QAAQkwC,EAAIqQ,GAAKrQ,EAAIqQ,EAAIrQ,EAAIyQ,SACpDxiD,KAAKyiD,UAAY7gD,MAAMC,QAAQkwC,EAAIrQ,GAAKqQ,EAAIrQ,EAAIqQ,EAAI2Q,SAGtD9R,EAAeuR,EAAW,KAAK,WAC7B,OAAOniD,KAAKysC,MAAMkF,UAAU3xC,KAAK0iD,eAGnC9R,EAAeuR,EAAW,KAAK,WAC7B,OAAOniD,KAAKysC,MAAM8E,YAAYvxC,KAAKwiD,eAGrC5R,EAAeuR,EAAW,YAAY,WACpC,OAAOniD,KAAKysC,MAAM6E,YAAYtxC,KAAKoiD,QAGrCxR,EAAeuR,EAAW,YAAY,WACpC,OAAOniD,KAAKysC,MAAMkW,UAAU3iD,KAAK0hC,QAGnCygB,EAAU1iD,UAAUmjD,QAAU,WAC5B,OAAO5iD,KAAKwiD,WAAWpnC,OAAOpb,KAAK0iD,aAGrCP,EAAU1iD,UAAUojD,MAAQ,WAC1B,OAAOv5B,EAAMjE,OAAOrlB,KAAK4iD,UAAW,OAAOE,eAG7CxiD,EAAO1B,QAAUujD,G,kCC5DjB,IAAIY,EAAM,EAAQ,QAIlB,SAASnsB,EAAQ9a,EAAKiQ,GACpB,IAAIiB,EAAQhtB,KAERgjD,EAAoBhjD,KAAKosB,gBAAkBpsB,KAAKosB,eAAea,UAC/Dg2B,EAAoBjjD,KAAKotB,gBAAkBptB,KAAKotB,eAAeH,UAEnE,OAAI+1B,GAAqBC,GACnBl3B,EACFA,EAAGjQ,IACMA,GAAS9b,KAAKotB,gBAAmBptB,KAAKotB,eAAeiJ,cAC9D0sB,EAAIjwB,SAASowB,EAAaljD,KAAM8b,GAE3B9b,OAMLA,KAAKosB,iBACPpsB,KAAKosB,eAAea,WAAY,GAI9BjtB,KAAKotB,iBACPptB,KAAKotB,eAAeH,WAAY,GAGlCjtB,KAAKutB,SAASzR,GAAO,MAAM,SAAUA,IAC9BiQ,GAAMjQ,GACTinC,EAAIjwB,SAASowB,EAAal2B,EAAOlR,GAC7BkR,EAAMI,iBACRJ,EAAMI,eAAeiJ,cAAe,IAE7BtK,GACTA,EAAGjQ,MAIA9b,MAGT,SAASg5B,IACHh5B,KAAKosB,iBACPpsB,KAAKosB,eAAea,WAAY,EAChCjtB,KAAKosB,eAAeC,SAAU,EAC9BrsB,KAAKosB,eAAemJ,OAAQ,EAC5Bv1B,KAAKosB,eAAe4L,YAAa,GAG/Bh4B,KAAKotB,iBACPptB,KAAKotB,eAAeH,WAAY,EAChCjtB,KAAKotB,eAAemI,OAAQ,EAC5Bv1B,KAAKotB,eAAekI,QAAS,EAC7Bt1B,KAAKotB,eAAeoI,UAAW,EAC/Bx1B,KAAKotB,eAAeiJ,cAAe,GAIvC,SAAS6sB,EAAY7+C,EAAMyX,GACzBzX,EAAK4nB,KAAK,QAASnQ,GAGrBxb,EAAO1B,QAAU,CACfg4B,QAASA,EACToC,UAAWA,I,wBCxEb,2BACE,aAGA,SAASh6B,EAAQC,EAAKC,GACpB,IAAKD,EAAK,MAAM,IAAIE,MAAMD,GAAO,oBAKnC,SAASE,EAAUC,EAAMC,GACvBD,EAAKE,OAASD,EACd,IAAIE,EAAW,aACfA,EAASC,UAAYH,EAAUG,UAC/BJ,EAAKI,UAAY,IAAID,EACrBH,EAAKI,UAAUC,YAAcL,EAK/B,SAASM,EAAIC,EAAQC,EAAMC,GACzB,GAAIH,EAAGI,KAAKH,GACV,OAAOA,EAGTI,KAAKC,SAAW,EAChBD,KAAKE,MAAQ,KACbF,KAAKG,OAAS,EAGdH,KAAKI,IAAM,KAEI,OAAXR,IACW,OAATC,GAA0B,OAATA,IACnBC,EAASD,EACTA,EAAO,IAGTG,KAAKK,MAAMT,GAAU,EAAGC,GAAQ,GAAIC,GAAU,OAYlD,IAAI5B,EATkB,kBAAXoC,EACTA,EAAO1B,QAAUe,EAEjBf,EAAQe,GAAKA,EAGfA,EAAGA,GAAKA,EACRA,EAAGY,SAAW,GAGd,IAEIrC,EADoB,qBAAXsC,QAAmD,qBAAlBA,OAAOtC,OACxCsC,OAAOtC,OAEP,EAAQ,IAAUA,OAE7B,MAAOuC,IAgIT,SAASC,EAAeC,EAAQC,GAC9B,IAAIC,EAAIF,EAAOG,WAAWF,GAE1B,OAAIC,GAAK,IAAMA,GAAK,GACXA,EAAI,GAEFA,GAAK,IAAMA,GAAK,IAClBA,EAAI,GAGHA,EAAI,GAAM,GAItB,SAASE,EAAcJ,EAAQK,EAAYJ,GACzC,IAAIK,EAAIP,EAAcC,EAAQC,GAI9B,OAHIA,EAAQ,GAAKI,IACfC,GAAKP,EAAcC,EAAQC,EAAQ,IAAM,GAEpCK,EA8CT,SAASC,EAAWC,EAAKC,EAAOC,EAAKC,GAGnC,IAFA,IAAIL,EAAI,EACJM,EAAMC,KAAKC,IAAIN,EAAIhB,OAAQkB,GACtBK,EAAIN,EAAOM,EAAIH,EAAKG,IAAK,CAChC,IAAIb,EAAIM,EAAIL,WAAWY,GAAK,GAE5BT,GAAKK,EAIHL,GADEJ,GAAK,GACFA,EAAI,GAAK,GAGLA,GAAK,GACTA,EAAI,GAAK,GAITA,EAGT,OAAOI,EAnNTtB,EAAGI,KAAO,SAAe4B,GACvB,OAAIA,aAAehC,GAIJ,OAARgC,GAA+B,kBAARA,GAC5BA,EAAIjC,YAAYa,WAAaZ,EAAGY,UAAYqB,MAAMC,QAAQF,EAAIzB,QAGlEP,EAAGmC,IAAM,SAAcC,EAAMC,GAC3B,OAAID,EAAKE,IAAID,GAAS,EAAUD,EACzBC,GAGTrC,EAAG8B,IAAM,SAAcM,EAAMC,GAC3B,OAAID,EAAKE,IAAID,GAAS,EAAUD,EACzBC,GAGTrC,EAAGF,UAAUY,MAAQ,SAAeT,EAAQC,EAAMC,GAChD,GAAsB,kBAAXF,EACT,OAAOI,KAAKkC,YAAYtC,EAAQC,EAAMC,GAGxC,GAAsB,kBAAXF,EACT,OAAOI,KAAKmC,WAAWvC,EAAQC,EAAMC,GAG1B,QAATD,IACFA,EAAO,IAETb,EAAOa,KAAiB,EAAPA,IAAaA,GAAQ,GAAKA,GAAQ,IAEnDD,EAASA,EAAOwC,WAAWC,QAAQ,OAAQ,IAC3C,IAAIjB,EAAQ,EACM,MAAdxB,EAAO,KACTwB,IACApB,KAAKC,SAAW,GAGdmB,EAAQxB,EAAOO,SACJ,KAATN,EACFG,KAAKsC,UAAU1C,EAAQwB,EAAOtB,IAE9BE,KAAKuC,WAAW3C,EAAQC,EAAMuB,GACf,OAAXtB,GACFE,KAAKmC,WAAWnC,KAAKwC,UAAW3C,EAAMC,MAM9CH,EAAGF,UAAUyC,YAAc,SAAsBtC,EAAQC,EAAMC,GACzDF,EAAS,IACXI,KAAKC,SAAW,EAChBL,GAAUA,GAERA,EAAS,UACXI,KAAKE,MAAQ,CAAW,SAATN,GACfI,KAAKG,OAAS,GACLP,EAAS,kBAClBI,KAAKE,MAAQ,CACF,SAATN,EACCA,EAAS,SAAa,UAEzBI,KAAKG,OAAS,IAEdnB,EAAOY,EAAS,kBAChBI,KAAKE,MAAQ,CACF,SAATN,EACCA,EAAS,SAAa,SACvB,GAEFI,KAAKG,OAAS,GAGD,OAAXL,GAGJE,KAAKmC,WAAWnC,KAAKwC,UAAW3C,EAAMC,IAGxCH,EAAGF,UAAU0C,WAAa,SAAqBvC,EAAQC,EAAMC,GAG3D,GADAd,EAAgC,kBAAlBY,EAAOO,QACjBP,EAAOO,QAAU,EAGnB,OAFAH,KAAKE,MAAQ,CAAE,GACfF,KAAKG,OAAS,EACPH,KAGTA,KAAKG,OAASqB,KAAKiB,KAAK7C,EAAOO,OAAS,GACxCH,KAAKE,MAAQ,IAAI0B,MAAM5B,KAAKG,QAC5B,IAAK,IAAIuB,EAAI,EAAGA,EAAI1B,KAAKG,OAAQuB,IAC/B1B,KAAKE,MAAMwB,GAAK,EAGlB,IAAIgB,EAAGC,EACHC,EAAM,EACV,GAAe,OAAX9C,EACF,IAAK4B,EAAI9B,EAAOO,OAAS,EAAGuC,EAAI,EAAGhB,GAAK,EAAGA,GAAK,EAC9CiB,EAAI/C,EAAO8B,GAAM9B,EAAO8B,EAAI,IAAM,EAAM9B,EAAO8B,EAAI,IAAM,GACzD1B,KAAKE,MAAMwC,IAAOC,GAAKC,EAAO,SAC9B5C,KAAKE,MAAMwC,EAAI,GAAMC,IAAO,GAAKC,EAAQ,SACzCA,GAAO,GACHA,GAAO,KACTA,GAAO,GACPF,UAGC,GAAe,OAAX5C,EACT,IAAK4B,EAAI,EAAGgB,EAAI,EAAGhB,EAAI9B,EAAOO,OAAQuB,GAAK,EACzCiB,EAAI/C,EAAO8B,GAAM9B,EAAO8B,EAAI,IAAM,EAAM9B,EAAO8B,EAAI,IAAM,GACzD1B,KAAKE,MAAMwC,IAAOC,GAAKC,EAAO,SAC9B5C,KAAKE,MAAMwC,EAAI,GAAMC,IAAO,GAAKC,EAAQ,SACzCA,GAAO,GACHA,GAAO,KACTA,GAAO,GACPF,KAIN,OAAO1C,KAAK6C,SAyBdlD,EAAGF,UAAU6C,UAAY,SAAoB1C,EAAQwB,EAAOtB,GAE1DE,KAAKG,OAASqB,KAAKiB,MAAM7C,EAAOO,OAASiB,GAAS,GAClDpB,KAAKE,MAAQ,IAAI0B,MAAM5B,KAAKG,QAC5B,IAAK,IAAIuB,EAAI,EAAGA,EAAI1B,KAAKG,OAAQuB,IAC/B1B,KAAKE,MAAMwB,GAAK,EAIlB,IAGIiB,EAHAC,EAAM,EACNF,EAAI,EAGR,GAAe,OAAX5C,EACF,IAAK4B,EAAI9B,EAAOO,OAAS,EAAGuB,GAAKN,EAAOM,GAAK,EAC3CiB,EAAI5B,EAAanB,EAAQwB,EAAOM,IAAMkB,EACtC5C,KAAKE,MAAMwC,IAAU,SAAJC,EACbC,GAAO,IACTA,GAAO,GACPF,GAAK,EACL1C,KAAKE,MAAMwC,IAAMC,IAAM,IAEvBC,GAAO,MAGN,CACL,IAAIE,EAAclD,EAAOO,OAASiB,EAClC,IAAKM,EAAIoB,EAAc,IAAM,EAAI1B,EAAQ,EAAIA,EAAOM,EAAI9B,EAAOO,OAAQuB,GAAK,EAC1EiB,EAAI5B,EAAanB,EAAQwB,EAAOM,IAAMkB,EACtC5C,KAAKE,MAAMwC,IAAU,SAAJC,EACbC,GAAO,IACTA,GAAO,GACPF,GAAK,EACL1C,KAAKE,MAAMwC,IAAMC,IAAM,IAEvBC,GAAO,EAKb5C,KAAK6C,SA2BPlD,EAAGF,UAAU8C,WAAa,SAAqB3C,EAAQC,EAAMuB,GAE3DpB,KAAKE,MAAQ,CAAE,GACfF,KAAKG,OAAS,EAGd,IAAK,IAAI4C,EAAU,EAAGC,EAAU,EAAGA,GAAW,SAAWA,GAAWnD,EAClEkD,IAEFA,IACAC,EAAWA,EAAUnD,EAAQ,EAO7B,IALA,IAAIoD,EAAQrD,EAAOO,OAASiB,EACxBpD,EAAMiF,EAAQF,EACd1B,EAAMG,KAAKC,IAAIwB,EAAOA,EAAQjF,GAAOoD,EAErC8B,EAAO,EACFxB,EAAIN,EAAOM,EAAIL,EAAKK,GAAKqB,EAChCG,EAAOhC,EAAUtB,EAAQ8B,EAAGA,EAAIqB,EAASlD,GAEzCG,KAAKmD,MAAMH,GACPhD,KAAKE,MAAM,GAAKgD,EAAO,SACzBlD,KAAKE,MAAM,IAAMgD,EAEjBlD,KAAKoD,OAAOF,GAIhB,GAAY,IAARlF,EAAW,CACb,IAAIqF,EAAM,EAGV,IAFAH,EAAOhC,EAAUtB,EAAQ8B,EAAG9B,EAAOO,OAAQN,GAEtC6B,EAAI,EAAGA,EAAI1D,EAAK0D,IACnB2B,GAAOxD,EAGTG,KAAKmD,MAAME,GACPrD,KAAKE,MAAM,GAAKgD,EAAO,SACzBlD,KAAKE,MAAM,IAAMgD,EAEjBlD,KAAKoD,OAAOF,GAIhBlD,KAAK6C,SAGPlD,EAAGF,UAAU6D,KAAO,SAAeC,GACjCA,EAAKrD,MAAQ,IAAI0B,MAAM5B,KAAKG,QAC5B,IAAK,IAAIuB,EAAI,EAAGA,EAAI1B,KAAKG,OAAQuB,IAC/B6B,EAAKrD,MAAMwB,GAAK1B,KAAKE,MAAMwB,GAE7B6B,EAAKpD,OAASH,KAAKG,OACnBoD,EAAKtD,SAAWD,KAAKC,SACrBsD,EAAKnD,IAAMJ,KAAKI,KAGlBT,EAAGF,UAAU+D,MAAQ,WACnB,IAAIvC,EAAI,IAAItB,EAAG,MAEf,OADAK,KAAKsD,KAAKrC,GACHA,GAGTtB,EAAGF,UAAUgE,QAAU,SAAkBC,GACvC,MAAO1D,KAAKG,OAASuD,EACnB1D,KAAKE,MAAMF,KAAKG,UAAY,EAE9B,OAAOH,MAITL,EAAGF,UAAUoD,MAAQ,WACnB,MAAO7C,KAAKG,OAAS,GAAqC,IAAhCH,KAAKE,MAAMF,KAAKG,OAAS,GACjDH,KAAKG,SAEP,OAAOH,KAAK2D,aAGdhE,EAAGF,UAAUkE,UAAY,WAKvB,OAHoB,IAAhB3D,KAAKG,QAAkC,IAAlBH,KAAKE,MAAM,KAClCF,KAAKC,SAAW,GAEXD,MAGTL,EAAGF,UAAUmE,QAAU,WACrB,OAAQ5D,KAAKI,IAAM,UAAY,SAAWJ,KAAKoC,SAAS,IAAM,KAiChE,IAAIyB,EAAQ,CACV,GACA,IACA,KACA,MACA,OACA,QACA,SACA,UACA,WACA,YACA,aACA,cACA,eACA,gBACA,iBACA,kBACA,mBACA,oBACA,qBACA,sBACA,uBACA,wBACA,yBACA,0BACA,2BACA,6BAGEC,EAAa,CACf,EAAG,EACH,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EACvB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAGhBC,EAAa,CACf,EAAG,EACH,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAC5D,SAAU,IAAU,SAAU,SAAU,SAAU,QAAS,SAC3D,SAAU,SAAU,SAAU,SAAU,KAAU,QAAS,QAC3D,QAAS,QAAS,QAAS,SAAU,SAAU,SAAU,SACzD,MAAU,SAAU,SAAU,SAAU,SAAU,SAAU,UAyM9D,SAASC,EAAYrC,GAGnB,IAFA,IAAIgB,EAAI,IAAIf,MAAMD,EAAIsC,aAEbC,EAAM,EAAGA,EAAMvB,EAAExC,OAAQ+D,IAAO,CACvC,IAAItB,EAAOsB,EAAM,GAAM,EACnBC,EAAOD,EAAM,GAEjBvB,EAAEuB,IAAQvC,EAAIzB,MAAM0C,GAAQ,GAAKuB,KAAWA,EAG9C,OAAOxB,EAmWT,SAASyB,EAAYC,EAAM1C,EAAK2C,GAC9BA,EAAIrE,SAAW0B,EAAI1B,SAAWoE,EAAKpE,SACnC,IAAIsB,EAAO8C,EAAKlE,OAASwB,EAAIxB,OAAU,EACvCmE,EAAInE,OAASoB,EACbA,EAAOA,EAAM,EAAK,EAGlB,IAAIgD,EAAoB,EAAhBF,EAAKnE,MAAM,GACfsE,EAAmB,EAAf7C,EAAIzB,MAAM,GACde,EAAIsD,EAAIC,EAERC,EAAS,SAAJxD,EACLyD,EAASzD,EAAI,SAAa,EAC9BqD,EAAIpE,MAAM,GAAKuE,EAEf,IAAK,IAAIE,EAAI,EAAGA,EAAIpD,EAAKoD,IAAK,CAM5B,IAHA,IAAIC,EAASF,IAAU,GACnBG,EAAgB,SAARH,EACRI,EAAOtD,KAAKC,IAAIkD,EAAGhD,EAAIxB,OAAS,GAC3BuC,EAAIlB,KAAKM,IAAI,EAAG6C,EAAIN,EAAKlE,OAAS,GAAIuC,GAAKoC,EAAMpC,IAAK,CAC7D,IAAIhB,EAAKiD,EAAIjC,EAAK,EAClB6B,EAAoB,EAAhBF,EAAKnE,MAAMwB,GACf8C,EAAmB,EAAf7C,EAAIzB,MAAMwC,GACdzB,EAAIsD,EAAIC,EAAIK,EACZD,GAAW3D,EAAI,SAAa,EAC5B4D,EAAY,SAAJ5D,EAEVqD,EAAIpE,MAAMyE,GAAa,EAARE,EACfH,EAAiB,EAATE,EAQV,OANc,IAAVF,EACFJ,EAAIpE,MAAMyE,GAAa,EAARD,EAEfJ,EAAInE,SAGCmE,EAAIzB,QAzlBblD,EAAGF,UAAU2C,SAAW,SAAmBvC,EAAMkF,GAI/C,IAAIT,EACJ,GAJAzE,EAAOA,GAAQ,GACfkF,EAAoB,EAAVA,GAAe,EAGZ,KAATlF,GAAwB,QAATA,EAAgB,CACjCyE,EAAM,GAGN,IAFA,IAAI1B,EAAM,EACN8B,EAAQ,EACHhD,EAAI,EAAGA,EAAI1B,KAAKG,OAAQuB,IAAK,CACpC,IAAIiB,EAAI3C,KAAKE,MAAMwB,GACfwB,GAA+B,UAArBP,GAAKC,EAAO8B,IAAmBtC,SAAS,IACtDsC,EAAS/B,IAAO,GAAKC,EAAQ,SAE3B0B,EADY,IAAVI,GAAehD,IAAM1B,KAAKG,OAAS,EAC/B0D,EAAM,EAAIX,EAAK/C,QAAU+C,EAAOoB,EAEhCpB,EAAOoB,EAEf1B,GAAO,EACHA,GAAO,KACTA,GAAO,GACPlB,KAGU,IAAVgD,IACFJ,EAAMI,EAAMtC,SAAS,IAAMkC,GAE7B,MAAOA,EAAInE,OAAS4E,IAAY,EAC9BT,EAAM,IAAMA,EAKd,OAHsB,IAAlBtE,KAAKC,WACPqE,EAAM,IAAMA,GAEPA,EAGT,GAAIzE,KAAiB,EAAPA,IAAaA,GAAQ,GAAKA,GAAQ,GAAI,CAElD,IAAImF,EAAYlB,EAAWjE,GAEvBoF,EAAYlB,EAAWlE,GAC3ByE,EAAM,GACN,IAAIzD,EAAIb,KAAKwD,QACb3C,EAAEZ,SAAW,EACb,OAAQY,EAAEqE,SAAU,CAClB,IAAIjE,EAAIJ,EAAEsE,KAAKF,GAAW7C,SAASvC,GACnCgB,EAAIA,EAAEuE,MAAMH,GAKVX,EAHGzD,EAAEqE,SAGCjE,EAAIqD,EAFJT,EAAMmB,EAAY/D,EAAEd,QAAUc,EAAIqD,EAKxCtE,KAAKkF,WACPZ,EAAM,IAAMA,GAEd,MAAOA,EAAInE,OAAS4E,IAAY,EAC9BT,EAAM,IAAMA,EAKd,OAHsB,IAAlBtE,KAAKC,WACPqE,EAAM,IAAMA,GAEPA,EAGTtF,GAAO,EAAO,oCAGhBW,EAAGF,UAAU4F,SAAW,WACtB,IAAIC,EAAMtF,KAAKE,MAAM,GASrB,OARoB,IAAhBF,KAAKG,OACPmF,GAAuB,SAAhBtF,KAAKE,MAAM,GACO,IAAhBF,KAAKG,QAAkC,IAAlBH,KAAKE,MAAM,GAEzCoF,GAAO,iBAAoC,SAAhBtF,KAAKE,MAAM,GAC7BF,KAAKG,OAAS,GACvBnB,GAAO,EAAO,8CAEU,IAAlBgB,KAAKC,UAAmBqF,EAAMA,GAGxC3F,EAAGF,UAAU8F,OAAS,WACpB,OAAOvF,KAAKoC,SAAS,KAGvBzC,EAAGF,UAAU+F,SAAW,SAAmB1F,EAAQK,GAEjD,OADAnB,EAAyB,qBAAXd,GACP8B,KAAKyF,YAAYvH,EAAQ4B,EAAQK,IAG1CR,EAAGF,UAAU+C,QAAU,SAAkB1C,EAAQK,GAC/C,OAAOH,KAAKyF,YAAY7D,MAAO9B,EAAQK,IAGzCR,EAAGF,UAAUgG,YAAc,SAAsBC,EAAW5F,EAAQK,GAClE,IAAIwF,EAAa3F,KAAK2F,aAClBC,EAAYzF,GAAUqB,KAAKM,IAAI,EAAG6D,GACtC3G,EAAO2G,GAAcC,EAAW,yCAChC5G,EAAO4G,EAAY,EAAG,+BAEtB5F,KAAK6C,QACL,IAGI2B,EAAG9C,EAHHmE,EAA0B,OAAX/F,EACfgG,EAAM,IAAIJ,EAAUE,GAGpBG,EAAI/F,KAAKwD,QACb,GAAKqC,EAYE,CACL,IAAKnE,EAAI,GAAIqE,EAAEb,SAAUxD,IACvB8C,EAAIuB,EAAEC,MAAM,KACZD,EAAEE,OAAO,GAETH,EAAIpE,GAAK8C,EAGX,KAAO9C,EAAIkE,EAAWlE,IACpBoE,EAAIpE,GAAK,MArBM,CAEjB,IAAKA,EAAI,EAAGA,EAAIkE,EAAYD,EAAYjE,IACtCoE,EAAIpE,GAAK,EAGX,IAAKA,EAAI,GAAIqE,EAAEb,SAAUxD,IACvB8C,EAAIuB,EAAEC,MAAM,KACZD,EAAEE,OAAO,GAETH,EAAIF,EAAYlE,EAAI,GAAK8C,EAe7B,OAAOsB,GAGLtE,KAAK0E,MACPvG,EAAGF,UAAU0G,WAAa,SAAqBxD,GAC7C,OAAO,GAAKnB,KAAK0E,MAAMvD,IAGzBhD,EAAGF,UAAU0G,WAAa,SAAqBxD,GAC7C,IAAIyD,EAAIzD,EACJ1B,EAAI,EAiBR,OAhBImF,GAAK,OACPnF,GAAK,GACLmF,KAAO,IAELA,GAAK,KACPnF,GAAK,EACLmF,KAAO,GAELA,GAAK,IACPnF,GAAK,EACLmF,KAAO,GAELA,GAAK,IACPnF,GAAK,EACLmF,KAAO,GAEFnF,EAAImF,GAIfzG,EAAGF,UAAU4G,UAAY,SAAoB1D,GAE3C,GAAU,IAANA,EAAS,OAAO,GAEpB,IAAIyD,EAAIzD,EACJ1B,EAAI,EAoBR,OAnBqB,KAAZ,KAAJmF,KACHnF,GAAK,GACLmF,KAAO,IAEU,KAAV,IAAJA,KACHnF,GAAK,EACLmF,KAAO,GAES,KAAT,GAAJA,KACHnF,GAAK,EACLmF,KAAO,GAES,KAAT,EAAJA,KACHnF,GAAK,EACLmF,KAAO,GAES,KAAT,EAAJA,IACHnF,IAEKA,GAITtB,EAAGF,UAAUwE,UAAY,WACvB,IAAItB,EAAI3C,KAAKE,MAAMF,KAAKG,OAAS,GAC7BmG,EAAKtG,KAAKmG,WAAWxD,GACzB,OAA2B,IAAnB3C,KAAKG,OAAS,GAAUmG,GAiBlC3G,EAAGF,UAAU8G,SAAW,WACtB,GAAIvG,KAAKkF,SAAU,OAAO,EAG1B,IADA,IAAIjE,EAAI,EACCS,EAAI,EAAGA,EAAI1B,KAAKG,OAAQuB,IAAK,CACpC,IAAI8C,EAAIxE,KAAKqG,UAAUrG,KAAKE,MAAMwB,IAElC,GADAT,GAAKuD,EACK,KAANA,EAAU,MAEhB,OAAOvD,GAGTtB,EAAGF,UAAUkG,WAAa,WACxB,OAAOnE,KAAKiB,KAAKzC,KAAKiE,YAAc,IAGtCtE,EAAGF,UAAU+G,OAAS,SAAiBC,GACrC,OAAsB,IAAlBzG,KAAKC,SACAD,KAAK0G,MAAMC,MAAMF,GAAOG,MAAM,GAEhC5G,KAAKwD,SAGd7D,EAAGF,UAAUoH,SAAW,SAAmBJ,GACzC,OAAIzG,KAAK8G,MAAML,EAAQ,GACdzG,KAAK+G,KAAKN,GAAOG,MAAM,GAAGI,OAE5BhH,KAAKwD,SAGd7D,EAAGF,UAAUwH,MAAQ,WACnB,OAAyB,IAAlBjH,KAAKC,UAIdN,EAAGF,UAAUyH,IAAM,WACjB,OAAOlH,KAAKwD,QAAQwD,QAGtBrH,EAAGF,UAAUuH,KAAO,WAKlB,OAJKhH,KAAKkF,WACRlF,KAAKC,UAAY,GAGZD,MAITL,EAAGF,UAAU0H,KAAO,SAAexF,GACjC,MAAO3B,KAAKG,OAASwB,EAAIxB,OACvBH,KAAKE,MAAMF,KAAKG,UAAY,EAG9B,IAAK,IAAIuB,EAAI,EAAGA,EAAIC,EAAIxB,OAAQuB,IAC9B1B,KAAKE,MAAMwB,GAAK1B,KAAKE,MAAMwB,GAAKC,EAAIzB,MAAMwB,GAG5C,OAAO1B,KAAK6C,SAGdlD,EAAGF,UAAU2H,IAAM,SAAczF,GAE/B,OADA3C,EAA0C,KAAlCgB,KAAKC,SAAW0B,EAAI1B,WACrBD,KAAKmH,KAAKxF,IAInBhC,EAAGF,UAAU4H,GAAK,SAAa1F,GAC7B,OAAI3B,KAAKG,OAASwB,EAAIxB,OAAeH,KAAKwD,QAAQ4D,IAAIzF,GAC/CA,EAAI6B,QAAQ4D,IAAIpH,OAGzBL,EAAGF,UAAU6H,IAAM,SAAc3F,GAC/B,OAAI3B,KAAKG,OAASwB,EAAIxB,OAAeH,KAAKwD,QAAQ2D,KAAKxF,GAChDA,EAAI6B,QAAQ2D,KAAKnH,OAI1BL,EAAGF,UAAU8H,MAAQ,SAAgB5F,GAEnC,IAAI6C,EAEFA,EADExE,KAAKG,OAASwB,EAAIxB,OAChBwB,EAEA3B,KAGN,IAAK,IAAI0B,EAAI,EAAGA,EAAI8C,EAAErE,OAAQuB,IAC5B1B,KAAKE,MAAMwB,GAAK1B,KAAKE,MAAMwB,GAAKC,EAAIzB,MAAMwB,GAK5C,OAFA1B,KAAKG,OAASqE,EAAErE,OAETH,KAAK6C,SAGdlD,EAAGF,UAAU+H,KAAO,SAAe7F,GAEjC,OADA3C,EAA0C,KAAlCgB,KAAKC,SAAW0B,EAAI1B,WACrBD,KAAKuH,MAAM5F,IAIpBhC,EAAGF,UAAUgI,IAAM,SAAc9F,GAC/B,OAAI3B,KAAKG,OAASwB,EAAIxB,OAAeH,KAAKwD,QAAQgE,KAAK7F,GAChDA,EAAI6B,QAAQgE,KAAKxH,OAG1BL,EAAGF,UAAUiI,KAAO,SAAe/F,GACjC,OAAI3B,KAAKG,OAASwB,EAAIxB,OAAeH,KAAKwD,QAAQ+D,MAAM5F,GACjDA,EAAI6B,QAAQ+D,MAAMvH,OAI3BL,EAAGF,UAAUkI,MAAQ,SAAgBhG,GAEnC,IAAI4C,EACAC,EACAxE,KAAKG,OAASwB,EAAIxB,QACpBoE,EAAIvE,KACJwE,EAAI7C,IAEJ4C,EAAI5C,EACJ6C,EAAIxE,MAGN,IAAK,IAAI0B,EAAI,EAAGA,EAAI8C,EAAErE,OAAQuB,IAC5B1B,KAAKE,MAAMwB,GAAK6C,EAAErE,MAAMwB,GAAK8C,EAAEtE,MAAMwB,GAGvC,GAAI1B,OAASuE,EACX,KAAO7C,EAAI6C,EAAEpE,OAAQuB,IACnB1B,KAAKE,MAAMwB,GAAK6C,EAAErE,MAAMwB,GAM5B,OAFA1B,KAAKG,OAASoE,EAAEpE,OAETH,KAAK6C,SAGdlD,EAAGF,UAAUmI,KAAO,SAAejG,GAEjC,OADA3C,EAA0C,KAAlCgB,KAAKC,SAAW0B,EAAI1B,WACrBD,KAAK2H,MAAMhG,IAIpBhC,EAAGF,UAAUoI,IAAM,SAAclG,GAC/B,OAAI3B,KAAKG,OAASwB,EAAIxB,OAAeH,KAAKwD,QAAQoE,KAAKjG,GAChDA,EAAI6B,QAAQoE,KAAK5H,OAG1BL,EAAGF,UAAUqI,KAAO,SAAenG,GACjC,OAAI3B,KAAKG,OAASwB,EAAIxB,OAAeH,KAAKwD,QAAQmE,MAAMhG,GACjDA,EAAI6B,QAAQmE,MAAM3H,OAI3BL,EAAGF,UAAUkH,MAAQ,SAAgBF,GACnCzH,EAAwB,kBAAVyH,GAAsBA,GAAS,GAE7C,IAAIsB,EAAsC,EAAxBvG,KAAKiB,KAAKgE,EAAQ,IAChCuB,EAAWvB,EAAQ,GAGvBzG,KAAKyD,QAAQsE,GAETC,EAAW,GACbD,IAIF,IAAK,IAAIrG,EAAI,EAAGA,EAAIqG,EAAarG,IAC/B1B,KAAKE,MAAMwB,GAAsB,UAAhB1B,KAAKE,MAAMwB,GAS9B,OALIsG,EAAW,IACbhI,KAAKE,MAAMwB,IAAM1B,KAAKE,MAAMwB,GAAM,UAAc,GAAKsG,GAIhDhI,KAAK6C,SAGdlD,EAAGF,UAAUsH,KAAO,SAAeN,GACjC,OAAOzG,KAAKwD,QAAQmD,MAAMF,IAI5B9G,EAAGF,UAAUwI,KAAO,SAAe/D,EAAKjF,GACtCD,EAAsB,kBAARkF,GAAoBA,GAAO,GAEzC,IAAItB,EAAOsB,EAAM,GAAM,EACnBC,EAAOD,EAAM,GAUjB,OARAlE,KAAKyD,QAAQb,EAAM,GAGjB5C,KAAKE,MAAM0C,GADT3D,EACgBe,KAAKE,MAAM0C,GAAQ,GAAKuB,EAExBnE,KAAKE,MAAM0C,KAAS,GAAKuB,GAGtCnE,KAAK6C,SAIdlD,EAAGF,UAAUyI,KAAO,SAAevG,GACjC,IAAIV,EAkBAsD,EAAGC,EAfP,GAAsB,IAAlBxE,KAAKC,UAAmC,IAAjB0B,EAAI1B,SAI7B,OAHAD,KAAKC,SAAW,EAChBgB,EAAIjB,KAAKmI,KAAKxG,GACd3B,KAAKC,UAAY,EACVD,KAAK2D,YAGP,GAAsB,IAAlB3D,KAAKC,UAAmC,IAAjB0B,EAAI1B,SAIpC,OAHA0B,EAAI1B,SAAW,EACfgB,EAAIjB,KAAKmI,KAAKxG,GACdA,EAAI1B,SAAW,EACRgB,EAAE0C,YAKP3D,KAAKG,OAASwB,EAAIxB,QACpBoE,EAAIvE,KACJwE,EAAI7C,IAEJ4C,EAAI5C,EACJ6C,EAAIxE,MAIN,IADA,IAAI0E,EAAQ,EACHhD,EAAI,EAAGA,EAAI8C,EAAErE,OAAQuB,IAC5BT,GAAkB,EAAbsD,EAAErE,MAAMwB,KAAwB,EAAb8C,EAAEtE,MAAMwB,IAAUgD,EAC1C1E,KAAKE,MAAMwB,GAAS,SAAJT,EAChByD,EAAQzD,IAAM,GAEhB,KAAiB,IAAVyD,GAAehD,EAAI6C,EAAEpE,OAAQuB,IAClCT,GAAkB,EAAbsD,EAAErE,MAAMwB,IAAUgD,EACvB1E,KAAKE,MAAMwB,GAAS,SAAJT,EAChByD,EAAQzD,IAAM,GAIhB,GADAjB,KAAKG,OAASoE,EAAEpE,OACF,IAAVuE,EACF1E,KAAKE,MAAMF,KAAKG,QAAUuE,EAC1B1E,KAAKG,cAEA,GAAIoE,IAAMvE,KACf,KAAO0B,EAAI6C,EAAEpE,OAAQuB,IACnB1B,KAAKE,MAAMwB,GAAK6C,EAAErE,MAAMwB,GAI5B,OAAO1B,MAITL,EAAGF,UAAU2I,IAAM,SAAczG,GAC/B,IAAImE,EACJ,OAAqB,IAAjBnE,EAAI1B,UAAoC,IAAlBD,KAAKC,UAC7B0B,EAAI1B,SAAW,EACf6F,EAAM9F,KAAKqI,IAAI1G,GACfA,EAAI1B,UAAY,EACT6F,GACmB,IAAjBnE,EAAI1B,UAAoC,IAAlBD,KAAKC,UACpCD,KAAKC,SAAW,EAChB6F,EAAMnE,EAAI0G,IAAIrI,MACdA,KAAKC,SAAW,EACT6F,GAGL9F,KAAKG,OAASwB,EAAIxB,OAAeH,KAAKwD,QAAQ0E,KAAKvG,GAEhDA,EAAI6B,QAAQ0E,KAAKlI,OAI1BL,EAAGF,UAAU0I,KAAO,SAAexG,GAEjC,GAAqB,IAAjBA,EAAI1B,SAAgB,CACtB0B,EAAI1B,SAAW,EACf,IAAIgB,EAAIjB,KAAKkI,KAAKvG,GAElB,OADAA,EAAI1B,SAAW,EACRgB,EAAE0C,YAGJ,GAAsB,IAAlB3D,KAAKC,SAId,OAHAD,KAAKC,SAAW,EAChBD,KAAKkI,KAAKvG,GACV3B,KAAKC,SAAW,EACTD,KAAK2D,YAId,IAWIY,EAAGC,EAXHvC,EAAMjC,KAAKiC,IAAIN,GAGnB,GAAY,IAARM,EAIF,OAHAjC,KAAKC,SAAW,EAChBD,KAAKG,OAAS,EACdH,KAAKE,MAAM,GAAK,EACTF,KAKLiC,EAAM,GACRsC,EAAIvE,KACJwE,EAAI7C,IAEJ4C,EAAI5C,EACJ6C,EAAIxE,MAIN,IADA,IAAI0E,EAAQ,EACHhD,EAAI,EAAGA,EAAI8C,EAAErE,OAAQuB,IAC5BT,GAAkB,EAAbsD,EAAErE,MAAMwB,KAAwB,EAAb8C,EAAEtE,MAAMwB,IAAUgD,EAC1CA,EAAQzD,GAAK,GACbjB,KAAKE,MAAMwB,GAAS,SAAJT,EAElB,KAAiB,IAAVyD,GAAehD,EAAI6C,EAAEpE,OAAQuB,IAClCT,GAAkB,EAAbsD,EAAErE,MAAMwB,IAAUgD,EACvBA,EAAQzD,GAAK,GACbjB,KAAKE,MAAMwB,GAAS,SAAJT,EAIlB,GAAc,IAAVyD,GAAehD,EAAI6C,EAAEpE,QAAUoE,IAAMvE,KACvC,KAAO0B,EAAI6C,EAAEpE,OAAQuB,IACnB1B,KAAKE,MAAMwB,GAAK6C,EAAErE,MAAMwB,GAU5B,OANA1B,KAAKG,OAASqB,KAAKM,IAAI9B,KAAKG,OAAQuB,GAEhC6C,IAAMvE,OACRA,KAAKC,SAAW,GAGXD,KAAK6C,SAIdlD,EAAGF,UAAU4I,IAAM,SAAc1G,GAC/B,OAAO3B,KAAKwD,QAAQ2E,KAAKxG,IA+C3B,IAAI2G,EAAc,SAAsBjE,EAAM1C,EAAK2C,GACjD,IAIIG,EACA8D,EACAjC,EANA/B,EAAIF,EAAKnE,MACTsE,EAAI7C,EAAIzB,MACRsI,EAAIlE,EAAIpE,MACRW,EAAI,EAIJ4H,EAAY,EAAPlE,EAAE,GACPmE,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPrE,EAAE,GACPsE,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPxE,EAAE,GACPyE,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP3E,EAAE,GACP4E,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP9E,EAAE,GACP+E,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPjF,EAAE,GACPkF,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPpF,EAAE,GACPqF,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPvF,EAAE,GACPwF,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP1F,EAAE,GACP2F,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP7F,EAAE,GACP8F,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP/F,EAAE,GACPgG,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPlG,EAAE,GACPmG,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPrG,EAAE,GACPsG,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPxG,EAAE,GACPyG,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP3G,EAAE,GACP4G,EAAW,KAALD,EACNE,GAAMF,IAAO,GACbG,GAAY,EAAP9G,EAAE,GACP+G,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAPjH,EAAE,GACPkH,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAPpH,EAAE,GACPqH,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAPvH,EAAE,GACPwH,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAP1H,EAAE,GACP2H,GAAW,KAALD,GACNE,GAAMF,KAAO,GAEjB5H,EAAIrE,SAAWoE,EAAKpE,SAAW0B,EAAI1B,SACnCqE,EAAInE,OAAS,GAEbsE,EAAKjD,KAAK6K,KAAK3D,EAAK8B,GACpBjC,EAAM/G,KAAK6K,KAAK3D,EAAK+B,GACrBlC,EAAOA,EAAM/G,KAAK6K,KAAK1D,EAAK6B,GAAQ,EACpClE,EAAK9E,KAAK6K,KAAK1D,EAAK8B,GACpB,IAAI6B,IAAQzL,EAAI4D,EAAM,KAAa,KAAN8D,IAAiB,IAAO,EACrD1H,GAAOyF,GAAMiC,IAAQ,IAAO,IAAM+D,KAAO,IAAO,EAChDA,IAAM,SAEN7H,EAAKjD,KAAK6K,KAAKxD,EAAK2B,GACpBjC,EAAM/G,KAAK6K,KAAKxD,EAAK4B,GACrBlC,EAAOA,EAAM/G,KAAK6K,KAAKvD,EAAK0B,GAAQ,EACpClE,EAAK9E,KAAK6K,KAAKvD,EAAK2B,GACpBhG,EAAMA,EAAKjD,KAAK6K,KAAK3D,EAAKiC,GAAQ,EAClCpC,EAAOA,EAAM/G,KAAK6K,KAAK3D,EAAKkC,GAAQ,EACpCrC,EAAOA,EAAM/G,KAAK6K,KAAK1D,EAAKgC,GAAQ,EACpCrE,EAAMA,EAAK9E,KAAK6K,KAAK1D,EAAKiC,GAAQ,EAClC,IAAI2B,IAAQ1L,EAAI4D,EAAM,KAAa,KAAN8D,IAAiB,IAAO,EACrD1H,GAAOyF,GAAMiC,IAAQ,IAAO,IAAMgE,KAAO,IAAO,EAChDA,IAAM,SAEN9H,EAAKjD,KAAK6K,KAAKrD,EAAKwB,GACpBjC,EAAM/G,KAAK6K,KAAKrD,EAAKyB,GACrBlC,EAAOA,EAAM/G,KAAK6K,KAAKpD,EAAKuB,GAAQ,EACpClE,EAAK9E,KAAK6K,KAAKpD,EAAKwB,GACpBhG,EAAMA,EAAKjD,KAAK6K,KAAKxD,EAAK8B,GAAQ,EAClCpC,EAAOA,EAAM/G,KAAK6K,KAAKxD,EAAK+B,GAAQ,EACpCrC,EAAOA,EAAM/G,KAAK6K,KAAKvD,EAAK6B,GAAQ,EACpCrE,EAAMA,EAAK9E,KAAK6K,KAAKvD,EAAK8B,GAAQ,EAClCnG,EAAMA,EAAKjD,KAAK6K,KAAK3D,EAAKoC,GAAQ,EAClCvC,EAAOA,EAAM/G,KAAK6K,KAAK3D,EAAKqC,GAAQ,EACpCxC,EAAOA,EAAM/G,KAAK6K,KAAK1D,EAAKmC,GAAQ,EACpCxE,EAAMA,EAAK9E,KAAK6K,KAAK1D,EAAKoC,GAAQ,EAClC,IAAIyB,IAAQ3L,EAAI4D,EAAM,KAAa,KAAN8D,IAAiB,IAAO,EACrD1H,GAAOyF,GAAMiC,IAAQ,IAAO,IAAMiE,KAAO,IAAO,EAChDA,IAAM,SAEN/H,EAAKjD,KAAK6K,KAAKlD,EAAKqB,GACpBjC,EAAM/G,KAAK6K,KAAKlD,EAAKsB,GACrBlC,EAAOA,EAAM/G,KAAK6K,KAAKjD,EAAKoB,GAAQ,EACpClE,EAAK9E,KAAK6K,KAAKjD,EAAKqB,GACpBhG,EAAMA,EAAKjD,KAAK6K,KAAKrD,EAAK2B,GAAQ,EAClCpC,EAAOA,EAAM/G,KAAK6K,KAAKrD,EAAK4B,GAAQ,EACpCrC,EAAOA,EAAM/G,KAAK6K,KAAKpD,EAAK0B,GAAQ,EACpCrE,EAAMA,EAAK9E,KAAK6K,KAAKpD,EAAK2B,GAAQ,EAClCnG,EAAMA,EAAKjD,KAAK6K,KAAKxD,EAAKiC,GAAQ,EAClCvC,EAAOA,EAAM/G,KAAK6K,KAAKxD,EAAKkC,GAAQ,EACpCxC,EAAOA,EAAM/G,KAAK6K,KAAKvD,EAAKgC,GAAQ,EACpCxE,EAAMA,EAAK9E,KAAK6K,KAAKvD,EAAKiC,GAAQ,EAClCtG,EAAMA,EAAKjD,KAAK6K,KAAK3D,EAAKuC,GAAQ,EAClC1C,EAAOA,EAAM/G,KAAK6K,KAAK3D,EAAKwC,GAAQ,EACpC3C,EAAOA,EAAM/G,KAAK6K,KAAK1D,EAAKsC,GAAQ,EACpC3E,EAAMA,EAAK9E,KAAK6K,KAAK1D,EAAKuC,GAAQ,EAClC,IAAIuB,IAAQ5L,EAAI4D,EAAM,KAAa,KAAN8D,IAAiB,IAAO,EACrD1H,GAAOyF,GAAMiC,IAAQ,IAAO,IAAMkE,KAAO,IAAO,EAChDA,IAAM,SAENhI,EAAKjD,KAAK6K,KAAK/C,EAAKkB,GACpBjC,EAAM/G,KAAK6K,KAAK/C,EAAKmB,GACrBlC,EAAOA,EAAM/G,KAAK6K,KAAK9C,EAAKiB,GAAQ,EACpClE,EAAK9E,KAAK6K,KAAK9C,EAAKkB,GACpBhG,EAAMA,EAAKjD,KAAK6K,KAAKlD,EAAKwB,GAAQ,EAClCpC,EAAOA,EAAM/G,KAAK6K,KAAKlD,EAAKyB,GAAQ,EACpCrC,EAAOA,EAAM/G,KAAK6K,KAAKjD,EAAKuB,GAAQ,EACpCrE,EAAMA,EAAK9E,KAAK6K,KAAKjD,EAAKwB,GAAQ,EAClCnG,EAAMA,EAAKjD,KAAK6K,KAAKrD,EAAK8B,GAAQ,EAClCvC,EAAOA,EAAM/G,KAAK6K,KAAKrD,EAAK+B,GAAQ,EACpCxC,EAAOA,EAAM/G,KAAK6K,KAAKpD,EAAK6B,GAAQ,EACpCxE,EAAMA,EAAK9E,KAAK6K,KAAKpD,EAAK8B,GAAQ,EAClCtG,EAAMA,EAAKjD,KAAK6K,KAAKxD,EAAKoC,GAAQ,EAClC1C,EAAOA,EAAM/G,KAAK6K,KAAKxD,EAAKqC,GAAQ,EACpC3C,EAAOA,EAAM/G,KAAK6K,KAAKvD,EAAKmC,GAAQ,EACpC3E,EAAMA,EAAK9E,KAAK6K,KAAKvD,EAAKoC,GAAQ,EAClCzG,EAAMA,EAAKjD,KAAK6K,KAAK3D,EAAK0C,GAAQ,EAClC7C,EAAOA,EAAM/G,KAAK6K,KAAK3D,EAAK2C,IAAQ,EACpC9C,EAAOA,EAAM/G,KAAK6K,KAAK1D,EAAKyC,GAAQ,EACpC9E,EAAMA,EAAK9E,KAAK6K,KAAK1D,EAAK0C,IAAQ,EAClC,IAAIqB,IAAQ7L,EAAI4D,EAAM,KAAa,KAAN8D,IAAiB,IAAO,EACrD1H,GAAOyF,GAAMiC,IAAQ,IAAO,IAAMmE,KAAO,IAAO,EAChDA,IAAM,SAENjI,EAAKjD,KAAK6K,KAAK5C,EAAKe,GACpBjC,EAAM/G,KAAK6K,KAAK5C,EAAKgB,GACrBlC,EAAOA,EAAM/G,KAAK6K,KAAK3C,EAAKc,GAAQ,EACpClE,EAAK9E,KAAK6K,KAAK3C,EAAKe,GACpBhG,EAAMA,EAAKjD,KAAK6K,KAAK/C,EAAKqB,GAAQ,EAClCpC,EAAOA,EAAM/G,KAAK6K,KAAK/C,EAAKsB,GAAQ,EACpCrC,EAAOA,EAAM/G,KAAK6K,KAAK9C,EAAKoB,GAAQ,EACpCrE,EAAMA,EAAK9E,KAAK6K,KAAK9C,EAAKqB,GAAQ,EAClCnG,EAAMA,EAAKjD,KAAK6K,KAAKlD,EAAK2B,GAAQ,EAClCvC,EAAOA,EAAM/G,KAAK6K,KAAKlD,EAAK4B,GAAQ,EACpCxC,EAAOA,EAAM/G,KAAK6K,KAAKjD,EAAK0B,GAAQ,EACpCxE,EAAMA,EAAK9E,KAAK6K,KAAKjD,EAAK2B,GAAQ,EAClCtG,EAAMA,EAAKjD,KAAK6K,KAAKrD,EAAKiC,GAAQ,EAClC1C,EAAOA,EAAM/G,KAAK6K,KAAKrD,EAAKkC,GAAQ,EACpC3C,EAAOA,EAAM/G,KAAK6K,KAAKpD,EAAKgC,GAAQ,EACpC3E,EAAMA,EAAK9E,KAAK6K,KAAKpD,EAAKiC,GAAQ,EAClCzG,EAAMA,EAAKjD,KAAK6K,KAAKxD,EAAKuC,GAAQ,EAClC7C,EAAOA,EAAM/G,KAAK6K,KAAKxD,EAAKwC,IAAQ,EACpC9C,EAAOA,EAAM/G,KAAK6K,KAAKvD,EAAKsC,GAAQ,EACpC9E,EAAMA,EAAK9E,KAAK6K,KAAKvD,EAAKuC,IAAQ,EAClC5G,EAAMA,EAAKjD,KAAK6K,KAAK3D,EAAK6C,IAAQ,EAClChD,EAAOA,EAAM/G,KAAK6K,KAAK3D,EAAK8C,IAAQ,EACpCjD,EAAOA,EAAM/G,KAAK6K,KAAK1D,EAAK4C,IAAQ,EACpCjF,EAAMA,EAAK9E,KAAK6K,KAAK1D,EAAK6C,IAAQ,EAClC,IAAImB,IAAQ9L,EAAI4D,EAAM,KAAa,KAAN8D,IAAiB,IAAO,EACrD1H,GAAOyF,GAAMiC,IAAQ,IAAO,IAAMoE,KAAO,IAAO,EAChDA,IAAM,SAENlI,EAAKjD,KAAK6K,KAAKzC,EAAKY,GACpBjC,EAAM/G,KAAK6K,KAAKzC,EAAKa,GACrBlC,EAAOA,EAAM/G,KAAK6K,KAAKxC,EAAKW,GAAQ,EACpClE,EAAK9E,KAAK6K,KAAKxC,EAAKY,GACpBhG,EAAMA,EAAKjD,KAAK6K,KAAK5C,EAAKkB,GAAQ,EAClCpC,EAAOA,EAAM/G,KAAK6K,KAAK5C,EAAKmB,GAAQ,EACpCrC,EAAOA,EAAM/G,KAAK6K,KAAK3C,EAAKiB,GAAQ,EACpCrE,EAAMA,EAAK9E,KAAK6K,KAAK3C,EAAKkB,GAAQ,EAClCnG,EAAMA,EAAKjD,KAAK6K,KAAK/C,EAAKwB,GAAQ,EAClCvC,EAAOA,EAAM/G,KAAK6K,KAAK/C,EAAKyB,GAAQ,EACpCxC,EAAOA,EAAM/G,KAAK6K,KAAK9C,EAAKuB,GAAQ,EACpCxE,EAAMA,EAAK9E,KAAK6K,KAAK9C,EAAKwB,GAAQ,EAClCtG,EAAMA,EAAKjD,KAAK6K,KAAKlD,EAAK8B,GAAQ,EAClC1C,EAAOA,EAAM/G,KAAK6K,KAAKlD,EAAK+B,GAAQ,EACpC3C,EAAOA,EAAM/G,KAAK6K,KAAKjD,EAAK6B,GAAQ,EACpC3E,EAAMA,EAAK9E,KAAK6K,KAAKjD,EAAK8B,GAAQ,EAClCzG,EAAMA,EAAKjD,KAAK6K,KAAKrD,EAAKoC,GAAQ,EAClC7C,EAAOA,EAAM/G,KAAK6K,KAAKrD,EAAKqC,IAAQ,EACpC9C,EAAOA,EAAM/G,KAAK6K,KAAKpD,EAAKmC,GAAQ,EACpC9E,EAAMA,EAAK9E,KAAK6K,KAAKpD,EAAKoC,IAAQ,EAClC5G,EAAMA,EAAKjD,KAAK6K,KAAKxD,EAAK0C,IAAQ,EAClChD,EAAOA,EAAM/G,KAAK6K,KAAKxD,EAAK2C,IAAQ,EACpCjD,EAAOA,EAAM/G,KAAK6K,KAAKvD,EAAKyC,IAAQ,EACpCjF,EAAMA,EAAK9E,KAAK6K,KAAKvD,EAAK0C,IAAQ,EAClC/G,EAAMA,EAAKjD,KAAK6K,KAAK3D,EAAKgD,IAAQ,EAClCnD,EAAOA,EAAM/G,KAAK6K,KAAK3D,EAAKiD,IAAQ,EACpCpD,EAAOA,EAAM/G,KAAK6K,KAAK1D,EAAK+C,IAAQ,EACpCpF,EAAMA,EAAK9E,KAAK6K,KAAK1D,EAAKgD,IAAQ,EAClC,IAAIiB,IAAQ/L,EAAI4D,EAAM,KAAa,KAAN8D,IAAiB,IAAO,EACrD1H,GAAOyF,GAAMiC,IAAQ,IAAO,IAAMqE,KAAO,IAAO,EAChDA,IAAM,SAENnI,EAAKjD,KAAK6K,KAAKtC,EAAKS,GACpBjC,EAAM/G,KAAK6K,KAAKtC,EAAKU,GACrBlC,EAAOA,EAAM/G,KAAK6K,KAAKrC,EAAKQ,GAAQ,EACpClE,EAAK9E,KAAK6K,KAAKrC,EAAKS,GACpBhG,EAAMA,EAAKjD,KAAK6K,KAAKzC,EAAKe,GAAQ,EAClCpC,EAAOA,EAAM/G,KAAK6K,KAAKzC,EAAKgB,GAAQ,EACpCrC,EAAOA,EAAM/G,KAAK6K,KAAKxC,EAAKc,GAAQ,EACpCrE,EAAMA,EAAK9E,KAAK6K,KAAKxC,EAAKe,GAAQ,EAClCnG,EAAMA,EAAKjD,KAAK6K,KAAK5C,EAAKqB,GAAQ,EAClCvC,EAAOA,EAAM/G,KAAK6K,KAAK5C,EAAKsB,GAAQ,EACpCxC,EAAOA,EAAM/G,KAAK6K,KAAK3C,EAAKoB,GAAQ,EACpCxE,EAAMA,EAAK9E,KAAK6K,KAAK3C,EAAKqB,GAAQ,EAClCtG,EAAMA,EAAKjD,KAAK6K,KAAK/C,EAAK2B,GAAQ,EAClC1C,EAAOA,EAAM/G,KAAK6K,KAAK/C,EAAK4B,GAAQ,EACpC3C,EAAOA,EAAM/G,KAAK6K,KAAK9C,EAAK0B,GAAQ,EACpC3E,EAAMA,EAAK9E,KAAK6K,KAAK9C,EAAK2B,GAAQ,EAClCzG,EAAMA,EAAKjD,KAAK6K,KAAKlD,EAAKiC,GAAQ,EAClC7C,EAAOA,EAAM/G,KAAK6K,KAAKlD,EAAKkC,IAAQ,EACpC9C,EAAOA,EAAM/G,KAAK6K,KAAKjD,EAAKgC,GAAQ,EACpC9E,EAAMA,EAAK9E,KAAK6K,KAAKjD,EAAKiC,IAAQ,EAClC5G,EAAMA,EAAKjD,KAAK6K,KAAKrD,EAAKuC,IAAQ,EAClChD,EAAOA,EAAM/G,KAAK6K,KAAKrD,EAAKwC,IAAQ,EACpCjD,EAAOA,EAAM/G,KAAK6K,KAAKpD,EAAKsC,IAAQ,EACpCjF,EAAMA,EAAK9E,KAAK6K,KAAKpD,EAAKuC,IAAQ,EAClC/G,EAAMA,EAAKjD,KAAK6K,KAAKxD,EAAK6C,IAAQ,EAClCnD,EAAOA,EAAM/G,KAAK6K,KAAKxD,EAAK8C,IAAQ,EACpCpD,EAAOA,EAAM/G,KAAK6K,KAAKvD,EAAK4C,IAAQ,EACpCpF,EAAMA,EAAK9E,KAAK6K,KAAKvD,EAAK6C,IAAQ,EAClClH,EAAMA,EAAKjD,KAAK6K,KAAK3D,EAAKmD,IAAQ,EAClCtD,EAAOA,EAAM/G,KAAK6K,KAAK3D,EAAKoD,IAAQ,EACpCvD,EAAOA,EAAM/G,KAAK6K,KAAK1D,EAAKkD,IAAQ,EACpCvF,EAAMA,EAAK9E,KAAK6K,KAAK1D,EAAKmD,IAAQ,EAClC,IAAIe,IAAQhM,EAAI4D,EAAM,KAAa,KAAN8D,IAAiB,IAAO,EACrD1H,GAAOyF,GAAMiC,IAAQ,IAAO,IAAMsE,KAAO,IAAO,EAChDA,IAAM,SAENpI,EAAKjD,KAAK6K,KAAKnC,EAAKM,GACpBjC,EAAM/G,KAAK6K,KAAKnC,EAAKO,GACrBlC,EAAOA,EAAM/G,KAAK6K,KAAKlC,EAAKK,GAAQ,EACpClE,EAAK9E,KAAK6K,KAAKlC,EAAKM,GACpBhG,EAAMA,EAAKjD,KAAK6K,KAAKtC,EAAKY,GAAQ,EAClCpC,EAAOA,EAAM/G,KAAK6K,KAAKtC,EAAKa,GAAQ,EACpCrC,EAAOA,EAAM/G,KAAK6K,KAAKrC,EAAKW,GAAQ,EACpCrE,EAAMA,EAAK9E,KAAK6K,KAAKrC,EAAKY,GAAQ,EAClCnG,EAAMA,EAAKjD,KAAK6K,KAAKzC,EAAKkB,GAAQ,EAClCvC,EAAOA,EAAM/G,KAAK6K,KAAKzC,EAAKmB,GAAQ,EACpCxC,EAAOA,EAAM/G,KAAK6K,KAAKxC,EAAKiB,GAAQ,EACpCxE,EAAMA,EAAK9E,KAAK6K,KAAKxC,EAAKkB,GAAQ,EAClCtG,EAAMA,EAAKjD,KAAK6K,KAAK5C,EAAKwB,GAAQ,EAClC1C,EAAOA,EAAM/G,KAAK6K,KAAK5C,EAAKyB,GAAQ,EACpC3C,EAAOA,EAAM/G,KAAK6K,KAAK3C,EAAKuB,GAAQ,EACpC3E,EAAMA,EAAK9E,KAAK6K,KAAK3C,EAAKwB,GAAQ,EAClCzG,EAAMA,EAAKjD,KAAK6K,KAAK/C,EAAK8B,GAAQ,EAClC7C,EAAOA,EAAM/G,KAAK6K,KAAK/C,EAAK+B,IAAQ,EACpC9C,EAAOA,EAAM/G,KAAK6K,KAAK9C,EAAK6B,GAAQ,EACpC9E,EAAMA,EAAK9E,KAAK6K,KAAK9C,EAAK8B,IAAQ,EAClC5G,EAAMA,EAAKjD,KAAK6K,KAAKlD,EAAKoC,IAAQ,EAClChD,EAAOA,EAAM/G,KAAK6K,KAAKlD,EAAKqC,IAAQ,EACpCjD,EAAOA,EAAM/G,KAAK6K,KAAKjD,EAAKmC,IAAQ,EACpCjF,EAAMA,EAAK9E,KAAK6K,KAAKjD,EAAKoC,IAAQ,EAClC/G,EAAMA,EAAKjD,KAAK6K,KAAKrD,EAAK0C,IAAQ,EAClCnD,EAAOA,EAAM/G,KAAK6K,KAAKrD,EAAK2C,IAAQ,EACpCpD,EAAOA,EAAM/G,KAAK6K,KAAKpD,EAAKyC,IAAQ,EACpCpF,EAAMA,EAAK9E,KAAK6K,KAAKpD,EAAK0C,IAAQ,EAClClH,EAAMA,EAAKjD,KAAK6K,KAAKxD,EAAKgD,IAAQ,EAClCtD,EAAOA,EAAM/G,KAAK6K,KAAKxD,EAAKiD,IAAQ,EACpCvD,EAAOA,EAAM/G,KAAK6K,KAAKvD,EAAK+C,IAAQ,EACpCvF,EAAMA,EAAK9E,KAAK6K,KAAKvD,EAAKgD,IAAQ,EAClCrH,EAAMA,EAAKjD,KAAK6K,KAAK3D,EAAKsD,IAAQ,EAClCzD,EAAOA,EAAM/G,KAAK6K,KAAK3D,EAAKuD,IAAQ,EACpC1D,EAAOA,EAAM/G,KAAK6K,KAAK1D,EAAKqD,IAAQ,EACpC1F,EAAMA,EAAK9E,KAAK6K,KAAK1D,EAAKsD,IAAQ,EAClC,IAAIa,IAAQjM,EAAI4D,EAAM,KAAa,KAAN8D,IAAiB,IAAO,EACrD1H,GAAOyF,GAAMiC,IAAQ,IAAO,IAAMuE,KAAO,IAAO,EAChDA,IAAM,SAENrI,EAAKjD,KAAK6K,KAAKhC,EAAKG,GACpBjC,EAAM/G,KAAK6K,KAAKhC,EAAKI,GACrBlC,EAAOA,EAAM/G,KAAK6K,KAAK/B,EAAKE,GAAQ,EACpClE,EAAK9E,KAAK6K,KAAK/B,EAAKG,GACpBhG,EAAMA,EAAKjD,KAAK6K,KAAKnC,EAAKS,GAAQ,EAClCpC,EAAOA,EAAM/G,KAAK6K,KAAKnC,EAAKU,GAAQ,EACpCrC,EAAOA,EAAM/G,KAAK6K,KAAKlC,EAAKQ,GAAQ,EACpCrE,EAAMA,EAAK9E,KAAK6K,KAAKlC,EAAKS,GAAQ,EAClCnG,EAAMA,EAAKjD,KAAK6K,KAAKtC,EAAKe,GAAQ,EAClCvC,EAAOA,EAAM/G,KAAK6K,KAAKtC,EAAKgB,GAAQ,EACpCxC,EAAOA,EAAM/G,KAAK6K,KAAKrC,EAAKc,GAAQ,EACpCxE,EAAMA,EAAK9E,KAAK6K,KAAKrC,EAAKe,GAAQ,EAClCtG,EAAMA,EAAKjD,KAAK6K,KAAKzC,EAAKqB,GAAQ,EAClC1C,EAAOA,EAAM/G,KAAK6K,KAAKzC,EAAKsB,GAAQ,EACpC3C,EAAOA,EAAM/G,KAAK6K,KAAKxC,EAAKoB,GAAQ,EACpC3E,EAAMA,EAAK9E,KAAK6K,KAAKxC,EAAKqB,GAAQ,EAClCzG,EAAMA,EAAKjD,KAAK6K,KAAK5C,EAAK2B,GAAQ,EAClC7C,EAAOA,EAAM/G,KAAK6K,KAAK5C,EAAK4B,IAAQ,EACpC9C,EAAOA,EAAM/G,KAAK6K,KAAK3C,EAAK0B,GAAQ,EACpC9E,EAAMA,EAAK9E,KAAK6K,KAAK3C,EAAK2B,IAAQ,EAClC5G,EAAMA,EAAKjD,KAAK6K,KAAK/C,EAAKiC,IAAQ,EAClChD,EAAOA,EAAM/G,KAAK6K,KAAK/C,EAAKkC,IAAQ,EACpCjD,EAAOA,EAAM/G,KAAK6K,KAAK9C,EAAKgC,IAAQ,EACpCjF,EAAMA,EAAK9E,KAAK6K,KAAK9C,EAAKiC,IAAQ,EAClC/G,EAAMA,EAAKjD,KAAK6K,KAAKlD,EAAKuC,IAAQ,EAClCnD,EAAOA,EAAM/G,KAAK6K,KAAKlD,EAAKwC,IAAQ,EACpCpD,EAAOA,EAAM/G,KAAK6K,KAAKjD,EAAKsC,IAAQ,EACpCpF,EAAMA,EAAK9E,KAAK6K,KAAKjD,EAAKuC,IAAQ,EAClClH,EAAMA,EAAKjD,KAAK6K,KAAKrD,EAAK6C,IAAQ,EAClCtD,EAAOA,EAAM/G,KAAK6K,KAAKrD,EAAK8C,IAAQ,EACpCvD,EAAOA,EAAM/G,KAAK6K,KAAKpD,EAAK4C,IAAQ,EACpCvF,EAAMA,EAAK9E,KAAK6K,KAAKpD,EAAK6C,IAAQ,EAClCrH,EAAMA,EAAKjD,KAAK6K,KAAKxD,EAAKmD,IAAQ,EAClCzD,EAAOA,EAAM/G,KAAK6K,KAAKxD,EAAKoD,IAAQ,EACpC1D,EAAOA,EAAM/G,KAAK6K,KAAKvD,EAAKkD,IAAQ,EACpC1F,EAAMA,EAAK9E,KAAK6K,KAAKvD,EAAKmD,IAAQ,EAClCxH,EAAMA,EAAKjD,KAAK6K,KAAK3D,EAAKyD,IAAQ,EAClC5D,EAAOA,EAAM/G,KAAK6K,KAAK3D,EAAK0D,IAAQ,EACpC7D,EAAOA,EAAM/G,KAAK6K,KAAK1D,EAAKwD,IAAQ,EACpC7F,EAAMA,EAAK9E,KAAK6K,KAAK1D,EAAKyD,IAAQ,EAClC,IAAIW,IAAQlM,EAAI4D,EAAM,KAAa,KAAN8D,IAAiB,IAAO,EACrD1H,GAAOyF,GAAMiC,IAAQ,IAAO,IAAMwE,KAAO,IAAO,EAChDA,IAAM,SAENtI,EAAKjD,KAAK6K,KAAKhC,EAAKM,GACpBpC,EAAM/G,KAAK6K,KAAKhC,EAAKO,GACrBrC,EAAOA,EAAM/G,KAAK6K,KAAK/B,EAAKK,GAAQ,EACpCrE,EAAK9E,KAAK6K,KAAK/B,EAAKM,GACpBnG,EAAMA,EAAKjD,KAAK6K,KAAKnC,EAAKY,GAAQ,EAClCvC,EAAOA,EAAM/G,KAAK6K,KAAKnC,EAAKa,GAAQ,EACpCxC,EAAOA,EAAM/G,KAAK6K,KAAKlC,EAAKW,GAAQ,EACpCxE,EAAMA,EAAK9E,KAAK6K,KAAKlC,EAAKY,GAAQ,EAClCtG,EAAMA,EAAKjD,KAAK6K,KAAKtC,EAAKkB,GAAQ,EAClC1C,EAAOA,EAAM/G,KAAK6K,KAAKtC,EAAKmB,GAAQ,EACpC3C,EAAOA,EAAM/G,KAAK6K,KAAKrC,EAAKiB,GAAQ,EACpC3E,EAAMA,EAAK9E,KAAK6K,KAAKrC,EAAKkB,GAAQ,EAClCzG,EAAMA,EAAKjD,KAAK6K,KAAKzC,EAAKwB,GAAQ,EAClC7C,EAAOA,EAAM/G,KAAK6K,KAAKzC,EAAKyB,IAAQ,EACpC9C,EAAOA,EAAM/G,KAAK6K,KAAKxC,EAAKuB,GAAQ,EACpC9E,EAAMA,EAAK9E,KAAK6K,KAAKxC,EAAKwB,IAAQ,EAClC5G,EAAMA,EAAKjD,KAAK6K,KAAK5C,EAAK8B,IAAQ,EAClChD,EAAOA,EAAM/G,KAAK6K,KAAK5C,EAAK+B,IAAQ,EACpCjD,EAAOA,EAAM/G,KAAK6K,KAAK3C,EAAK6B,IAAQ,EACpCjF,EAAMA,EAAK9E,KAAK6K,KAAK3C,EAAK8B,IAAQ,EAClC/G,EAAMA,EAAKjD,KAAK6K,KAAK/C,EAAKoC,IAAQ,EAClCnD,EAAOA,EAAM/G,KAAK6K,KAAK/C,EAAKqC,IAAQ,EACpCpD,EAAOA,EAAM/G,KAAK6K,KAAK9C,EAAKmC,IAAQ,EACpCpF,EAAMA,EAAK9E,KAAK6K,KAAK9C,EAAKoC,IAAQ,EAClClH,EAAMA,EAAKjD,KAAK6K,KAAKlD,EAAK0C,IAAQ,EAClCtD,EAAOA,EAAM/G,KAAK6K,KAAKlD,EAAK2C,IAAQ,EACpCvD,EAAOA,EAAM/G,KAAK6K,KAAKjD,EAAKyC,IAAQ,EACpCvF,EAAMA,EAAK9E,KAAK6K,KAAKjD,EAAK0C,IAAQ,EAClCrH,EAAMA,EAAKjD,KAAK6K,KAAKrD,EAAKgD,IAAQ,EAClCzD,EAAOA,EAAM/G,KAAK6K,KAAKrD,EAAKiD,IAAQ,EACpC1D,EAAOA,EAAM/G,KAAK6K,KAAKpD,EAAK+C,IAAQ,EACpC1F,EAAMA,EAAK9E,KAAK6K,KAAKpD,EAAKgD,IAAQ,EAClCxH,EAAMA,EAAKjD,KAAK6K,KAAKxD,EAAKsD,IAAQ,EAClC5D,EAAOA,EAAM/G,KAAK6K,KAAKxD,EAAKuD,IAAQ,EACpC7D,EAAOA,EAAM/G,KAAK6K,KAAKvD,EAAKqD,IAAQ,EACpC7F,EAAMA,EAAK9E,KAAK6K,KAAKvD,EAAKsD,IAAQ,EAClC,IAAIY,IAASnM,EAAI4D,EAAM,KAAa,KAAN8D,IAAiB,IAAO,EACtD1H,GAAOyF,GAAMiC,IAAQ,IAAO,IAAMyE,KAAQ,IAAO,EACjDA,IAAO,SAEPvI,EAAKjD,KAAK6K,KAAKhC,EAAKS,GACpBvC,EAAM/G,KAAK6K,KAAKhC,EAAKU,GACrBxC,EAAOA,EAAM/G,KAAK6K,KAAK/B,EAAKQ,GAAQ,EACpCxE,EAAK9E,KAAK6K,KAAK/B,EAAKS,GACpBtG,EAAMA,EAAKjD,KAAK6K,KAAKnC,EAAKe,GAAQ,EAClC1C,EAAOA,EAAM/G,KAAK6K,KAAKnC,EAAKgB,GAAQ,EACpC3C,EAAOA,EAAM/G,KAAK6K,KAAKlC,EAAKc,GAAQ,EACpC3E,EAAMA,EAAK9E,KAAK6K,KAAKlC,EAAKe,GAAQ,EAClCzG,EAAMA,EAAKjD,KAAK6K,KAAKtC,EAAKqB,GAAQ,EAClC7C,EAAOA,EAAM/G,KAAK6K,KAAKtC,EAAKsB,IAAQ,EACpC9C,EAAOA,EAAM/G,KAAK6K,KAAKrC,EAAKoB,GAAQ,EACpC9E,EAAMA,EAAK9E,KAAK6K,KAAKrC,EAAKqB,IAAQ,EAClC5G,EAAMA,EAAKjD,KAAK6K,KAAKzC,EAAK2B,IAAQ,EAClChD,EAAOA,EAAM/G,KAAK6K,KAAKzC,EAAK4B,IAAQ,EACpCjD,EAAOA,EAAM/G,KAAK6K,KAAKxC,EAAK0B,IAAQ,EACpCjF,EAAMA,EAAK9E,KAAK6K,KAAKxC,EAAK2B,IAAQ,EAClC/G,EAAMA,EAAKjD,KAAK6K,KAAK5C,EAAKiC,IAAQ,EAClCnD,EAAOA,EAAM/G,KAAK6K,KAAK5C,EAAKkC,IAAQ,EACpCpD,EAAOA,EAAM/G,KAAK6K,KAAK3C,EAAKgC,IAAQ,EACpCpF,EAAMA,EAAK9E,KAAK6K,KAAK3C,EAAKiC,IAAQ,EAClClH,EAAMA,EAAKjD,KAAK6K,KAAK/C,EAAKuC,IAAQ,EAClCtD,EAAOA,EAAM/G,KAAK6K,KAAK/C,EAAKwC,IAAQ,EACpCvD,EAAOA,EAAM/G,KAAK6K,KAAK9C,EAAKsC,IAAQ,EACpCvF,EAAMA,EAAK9E,KAAK6K,KAAK9C,EAAKuC,IAAQ,EAClCrH,EAAMA,EAAKjD,KAAK6K,KAAKlD,EAAK6C,IAAQ,EAClCzD,EAAOA,EAAM/G,KAAK6K,KAAKlD,EAAK8C,IAAQ,EACpC1D,EAAOA,EAAM/G,KAAK6K,KAAKjD,EAAK4C,IAAQ,EACpC1F,EAAMA,EAAK9E,KAAK6K,KAAKjD,EAAK6C,IAAQ,EAClCxH,EAAMA,EAAKjD,KAAK6K,KAAKrD,EAAKmD,IAAQ,EAClC5D,EAAOA,EAAM/G,KAAK6K,KAAKrD,EAAKoD,IAAQ,EACpC7D,EAAOA,EAAM/G,KAAK6K,KAAKpD,EAAKkD,IAAQ,EACpC7F,EAAMA,EAAK9E,KAAK6K,KAAKpD,EAAKmD,IAAQ,EAClC,IAAIa,IAASpM,EAAI4D,EAAM,KAAa,KAAN8D,IAAiB,IAAO,EACtD1H,GAAOyF,GAAMiC,IAAQ,IAAO,IAAM0E,KAAQ,IAAO,EACjDA,IAAO,SAEPxI,EAAKjD,KAAK6K,KAAKhC,EAAKY,GACpB1C,EAAM/G,KAAK6K,KAAKhC,EAAKa,GACrB3C,EAAOA,EAAM/G,KAAK6K,KAAK/B,EAAKW,GAAQ,EACpC3E,EAAK9E,KAAK6K,KAAK/B,EAAKY,GACpBzG,EAAMA,EAAKjD,KAAK6K,KAAKnC,EAAKkB,GAAQ,EAClC7C,EAAOA,EAAM/G,KAAK6K,KAAKnC,EAAKmB,IAAQ,EACpC9C,EAAOA,EAAM/G,KAAK6K,KAAKlC,EAAKiB,GAAQ,EACpC9E,EAAMA,EAAK9E,KAAK6K,KAAKlC,EAAKkB,IAAQ,EAClC5G,EAAMA,EAAKjD,KAAK6K,KAAKtC,EAAKwB,IAAQ,EAClChD,EAAOA,EAAM/G,KAAK6K,KAAKtC,EAAKyB,IAAQ,EACpCjD,EAAOA,EAAM/G,KAAK6K,KAAKrC,EAAKuB,IAAQ,EACpCjF,EAAMA,EAAK9E,KAAK6K,KAAKrC,EAAKwB,IAAQ,EAClC/G,EAAMA,EAAKjD,KAAK6K,KAAKzC,EAAK8B,IAAQ,EAClCnD,EAAOA,EAAM/G,KAAK6K,KAAKzC,EAAK+B,IAAQ,EACpCpD,EAAOA,EAAM/G,KAAK6K,KAAKxC,EAAK6B,IAAQ,EACpCpF,EAAMA,EAAK9E,KAAK6K,KAAKxC,EAAK8B,IAAQ,EAClClH,EAAMA,EAAKjD,KAAK6K,KAAK5C,EAAKoC,IAAQ,EAClCtD,EAAOA,EAAM/G,KAAK6K,KAAK5C,EAAKqC,IAAQ,EACpCvD,EAAOA,EAAM/G,KAAK6K,KAAK3C,EAAKmC,IAAQ,EACpCvF,EAAMA,EAAK9E,KAAK6K,KAAK3C,EAAKoC,IAAQ,EAClCrH,EAAMA,EAAKjD,KAAK6K,KAAK/C,EAAK0C,IAAQ,EAClCzD,EAAOA,EAAM/G,KAAK6K,KAAK/C,EAAK2C,IAAQ,EACpC1D,EAAOA,EAAM/G,KAAK6K,KAAK9C,EAAKyC,IAAQ,EACpC1F,EAAMA,EAAK9E,KAAK6K,KAAK9C,EAAK0C,IAAQ,EAClCxH,EAAMA,EAAKjD,KAAK6K,KAAKlD,EAAKgD,IAAQ,EAClC5D,EAAOA,EAAM/G,KAAK6K,KAAKlD,EAAKiD,IAAQ,EACpC7D,EAAOA,EAAM/G,KAAK6K,KAAKjD,EAAK+C,IAAQ,EACpC7F,EAAMA,EAAK9E,KAAK6K,KAAKjD,EAAKgD,IAAQ,EAClC,IAAIc,IAASrM,EAAI4D,EAAM,KAAa,KAAN8D,IAAiB,IAAO,EACtD1H,GAAOyF,GAAMiC,IAAQ,IAAO,IAAM2E,KAAQ,IAAO,EACjDA,IAAO,SAEPzI,EAAKjD,KAAK6K,KAAKhC,EAAKe,GACpB7C,EAAM/G,KAAK6K,KAAKhC,EAAKgB,IACrB9C,EAAOA,EAAM/G,KAAK6K,KAAK/B,EAAKc,GAAQ,EACpC9E,EAAK9E,KAAK6K,KAAK/B,EAAKe,IACpB5G,EAAMA,EAAKjD,KAAK6K,KAAKnC,EAAKqB,IAAQ,EAClChD,EAAOA,EAAM/G,KAAK6K,KAAKnC,EAAKsB,IAAQ,EACpCjD,EAAOA,EAAM/G,KAAK6K,KAAKlC,EAAKoB,IAAQ,EACpCjF,EAAMA,EAAK9E,KAAK6K,KAAKlC,EAAKqB,IAAQ,EAClC/G,EAAMA,EAAKjD,KAAK6K,KAAKtC,EAAK2B,IAAQ,EAClCnD,EAAOA,EAAM/G,KAAK6K,KAAKtC,EAAK4B,IAAQ,EACpCpD,EAAOA,EAAM/G,KAAK6K,KAAKrC,EAAK0B,IAAQ,EACpCpF,EAAMA,EAAK9E,KAAK6K,KAAKrC,EAAK2B,IAAQ,EAClClH,EAAMA,EAAKjD,KAAK6K,KAAKzC,EAAKiC,IAAQ,EAClCtD,EAAOA,EAAM/G,KAAK6K,KAAKzC,EAAKkC,IAAQ,EACpCvD,EAAOA,EAAM/G,KAAK6K,KAAKxC,EAAKgC,IAAQ,EACpCvF,EAAMA,EAAK9E,KAAK6K,KAAKxC,EAAKiC,IAAQ,EAClCrH,EAAMA,EAAKjD,KAAK6K,KAAK5C,EAAKuC,IAAQ,EAClCzD,EAAOA,EAAM/G,KAAK6K,KAAK5C,EAAKwC,IAAQ,EACpC1D,EAAOA,EAAM/G,KAAK6K,KAAK3C,EAAKsC,IAAQ,EACpC1F,EAAMA,EAAK9E,KAAK6K,KAAK3C,EAAKuC,IAAQ,EAClCxH,EAAMA,EAAKjD,KAAK6K,KAAK/C,EAAK6C,IAAQ,EAClC5D,EAAOA,EAAM/G,KAAK6K,KAAK/C,EAAK8C,IAAQ,EACpC7D,EAAOA,EAAM/G,KAAK6K,KAAK9C,EAAK4C,IAAQ,EACpC7F,EAAMA,EAAK9E,KAAK6K,KAAK9C,EAAK6C,IAAQ,EAClC,IAAIe,IAAStM,EAAI4D,EAAM,KAAa,KAAN8D,IAAiB,IAAO,EACtD1H,GAAOyF,GAAMiC,IAAQ,IAAO,IAAM4E,KAAQ,IAAO,EACjDA,IAAO,SAEP1I,EAAKjD,KAAK6K,KAAKhC,EAAKkB,IACpBhD,EAAM/G,KAAK6K,KAAKhC,EAAKmB,IACrBjD,EAAOA,EAAM/G,KAAK6K,KAAK/B,EAAKiB,IAAQ,EACpCjF,EAAK9E,KAAK6K,KAAK/B,EAAKkB,IACpB/G,EAAMA,EAAKjD,KAAK6K,KAAKnC,EAAKwB,IAAQ,EAClCnD,EAAOA,EAAM/G,KAAK6K,KAAKnC,EAAKyB,IAAQ,EACpCpD,EAAOA,EAAM/G,KAAK6K,KAAKlC,EAAKuB,IAAQ,EACpCpF,EAAMA,EAAK9E,KAAK6K,KAAKlC,EAAKwB,IAAQ,EAClClH,EAAMA,EAAKjD,KAAK6K,KAAKtC,EAAK8B,IAAQ,EAClCtD,EAAOA,EAAM/G,KAAK6K,KAAKtC,EAAK+B,IAAQ,EACpCvD,EAAOA,EAAM/G,KAAK6K,KAAKrC,EAAK6B,IAAQ,EACpCvF,EAAMA,EAAK9E,KAAK6K,KAAKrC,EAAK8B,IAAQ,EAClCrH,EAAMA,EAAKjD,KAAK6K,KAAKzC,EAAKoC,IAAQ,EAClCzD,EAAOA,EAAM/G,KAAK6K,KAAKzC,EAAKqC,IAAQ,EACpC1D,EAAOA,EAAM/G,KAAK6K,KAAKxC,EAAKmC,IAAQ,EACpC1F,EAAMA,EAAK9E,KAAK6K,KAAKxC,EAAKoC,IAAQ,EAClCxH,EAAMA,EAAKjD,KAAK6K,KAAK5C,EAAK0C,IAAQ,EAClC5D,EAAOA,EAAM/G,KAAK6K,KAAK5C,EAAK2C,IAAQ,EACpC7D,EAAOA,EAAM/G,KAAK6K,KAAK3C,EAAKyC,IAAQ,EACpC7F,EAAMA,EAAK9E,KAAK6K,KAAK3C,EAAK0C,IAAQ,EAClC,IAAIgB,IAASvM,EAAI4D,EAAM,KAAa,KAAN8D,IAAiB,IAAO,EACtD1H,GAAOyF,GAAMiC,IAAQ,IAAO,IAAM6E,KAAQ,IAAO,EACjDA,IAAO,SAEP3I,EAAKjD,KAAK6K,KAAKhC,EAAKqB,IACpBnD,EAAM/G,KAAK6K,KAAKhC,EAAKsB,IACrBpD,EAAOA,EAAM/G,KAAK6K,KAAK/B,EAAKoB,IAAQ,EACpCpF,EAAK9E,KAAK6K,KAAK/B,EAAKqB,IACpBlH,EAAMA,EAAKjD,KAAK6K,KAAKnC,EAAK2B,IAAQ,EAClCtD,EAAOA,EAAM/G,KAAK6K,KAAKnC,EAAK4B,IAAQ,EACpCvD,EAAOA,EAAM/G,KAAK6K,KAAKlC,EAAK0B,IAAQ,EACpCvF,EAAMA,EAAK9E,KAAK6K,KAAKlC,EAAK2B,IAAQ,EAClCrH,EAAMA,EAAKjD,KAAK6K,KAAKtC,EAAKiC,IAAQ,EAClCzD,EAAOA,EAAM/G,KAAK6K,KAAKtC,EAAKkC,IAAQ,EACpC1D,EAAOA,EAAM/G,KAAK6K,KAAKrC,EAAKgC,IAAQ,EACpC1F,EAAMA,EAAK9E,KAAK6K,KAAKrC,EAAKiC,IAAQ,EAClCxH,EAAMA,EAAKjD,KAAK6K,KAAKzC,EAAKuC,IAAQ,EAClC5D,EAAOA,EAAM/G,KAAK6K,KAAKzC,EAAKwC,IAAQ,EACpC7D,EAAOA,EAAM/G,KAAK6K,KAAKxC,EAAKsC,IAAQ,EACpC7F,EAAMA,EAAK9E,KAAK6K,KAAKxC,EAAKuC,IAAQ,EAClC,IAAIiB,IAASxM,EAAI4D,EAAM,KAAa,KAAN8D,IAAiB,IAAO,EACtD1H,GAAOyF,GAAMiC,IAAQ,IAAO,IAAM8E,KAAQ,IAAO,EACjDA,IAAO,SAEP5I,EAAKjD,KAAK6K,KAAKhC,EAAKwB,IACpBtD,EAAM/G,KAAK6K,KAAKhC,EAAKyB,IACrBvD,EAAOA,EAAM/G,KAAK6K,KAAK/B,EAAKuB,IAAQ,EACpCvF,EAAK9E,KAAK6K,KAAK/B,EAAKwB,IACpBrH,EAAMA,EAAKjD,KAAK6K,KAAKnC,EAAK8B,IAAQ,EAClCzD,EAAOA,EAAM/G,KAAK6K,KAAKnC,EAAK+B,IAAQ,EACpC1D,EAAOA,EAAM/G,KAAK6K,KAAKlC,EAAK6B,IAAQ,EACpC1F,EAAMA,EAAK9E,KAAK6K,KAAKlC,EAAK8B,IAAQ,EAClCxH,EAAMA,EAAKjD,KAAK6K,KAAKtC,EAAKoC,IAAQ,EAClC5D,EAAOA,EAAM/G,KAAK6K,KAAKtC,EAAKqC,IAAQ,EACpC7D,EAAOA,EAAM/G,KAAK6K,KAAKrC,EAAKmC,IAAQ,EACpC7F,EAAMA,EAAK9E,KAAK6K,KAAKrC,EAAKoC,IAAQ,EAClC,IAAIkB,IAASzM,EAAI4D,EAAM,KAAa,KAAN8D,IAAiB,IAAO,EACtD1H,GAAOyF,GAAMiC,IAAQ,IAAO,IAAM+E,KAAQ,IAAO,EACjDA,IAAO,SAEP7I,EAAKjD,KAAK6K,KAAKhC,EAAK2B,IACpBzD,EAAM/G,KAAK6K,KAAKhC,EAAK4B,IACrB1D,EAAOA,EAAM/G,KAAK6K,KAAK/B,EAAK0B,IAAQ,EACpC1F,EAAK9E,KAAK6K,KAAK/B,EAAK2B,IACpBxH,EAAMA,EAAKjD,KAAK6K,KAAKnC,EAAKiC,IAAQ,EAClC5D,EAAOA,EAAM/G,KAAK6K,KAAKnC,EAAKkC,IAAQ,EACpC7D,EAAOA,EAAM/G,KAAK6K,KAAKlC,EAAKgC,IAAQ,EACpC7F,EAAMA,EAAK9E,KAAK6K,KAAKlC,EAAKiC,IAAQ,EAClC,IAAImB,IAAS1M,EAAI4D,EAAM,KAAa,KAAN8D,IAAiB,IAAO,EACtD1H,GAAOyF,GAAMiC,IAAQ,IAAO,IAAMgF,KAAQ,IAAO,EACjDA,IAAO,SAEP9I,EAAKjD,KAAK6K,KAAKhC,EAAK8B,IACpB5D,EAAM/G,KAAK6K,KAAKhC,EAAK+B,IACrB7D,EAAOA,EAAM/G,KAAK6K,KAAK/B,EAAK6B,IAAQ,EACpC7F,EAAK9E,KAAK6K,KAAK/B,EAAK8B,IACpB,IAAIoB,IAAS3M,EAAI4D,EAAM,KAAa,KAAN8D,IAAiB,IAAO,EA0BtD,OAzBA1H,GAAOyF,GAAMiC,IAAQ,IAAO,IAAMiF,KAAQ,IAAO,EACjDA,IAAO,SACPhF,EAAE,GAAK8D,GACP9D,EAAE,GAAK+D,GACP/D,EAAE,GAAKgE,GACPhE,EAAE,GAAKiE,GACPjE,EAAE,GAAKkE,GACPlE,EAAE,GAAKmE,GACPnE,EAAE,GAAKoE,GACPpE,EAAE,GAAKqE,GACPrE,EAAE,GAAKsE,GACPtE,EAAE,GAAKuE,GACPvE,EAAE,IAAMwE,GACRxE,EAAE,IAAMyE,GACRzE,EAAE,IAAM0E,GACR1E,EAAE,IAAM2E,GACR3E,EAAE,IAAM4E,GACR5E,EAAE,IAAM6E,GACR7E,EAAE,IAAM8E,GACR9E,EAAE,IAAM+E,GACR/E,EAAE,IAAMgF,GACE,IAAN3M,IACF2H,EAAE,IAAM3H,EACRyD,EAAInE,UAECmE,GAQT,SAASmJ,EAAUpJ,EAAM1C,EAAK2C,GAC5BA,EAAIrE,SAAW0B,EAAI1B,SAAWoE,EAAKpE,SACnCqE,EAAInE,OAASkE,EAAKlE,OAASwB,EAAIxB,OAI/B,IAFA,IAAIuE,EAAQ,EACRgJ,EAAU,EACL/I,EAAI,EAAGA,EAAIL,EAAInE,OAAS,EAAGwE,IAAK,CAGvC,IAAIC,EAAS8I,EACbA,EAAU,EAGV,IAFA,IAAI7I,EAAgB,SAARH,EACRI,EAAOtD,KAAKC,IAAIkD,EAAGhD,EAAIxB,OAAS,GAC3BuC,EAAIlB,KAAKM,IAAI,EAAG6C,EAAIN,EAAKlE,OAAS,GAAIuC,GAAKoC,EAAMpC,IAAK,CAC7D,IAAIhB,EAAIiD,EAAIjC,EACR6B,EAAoB,EAAhBF,EAAKnE,MAAMwB,GACf8C,EAAmB,EAAf7C,EAAIzB,MAAMwC,GACdzB,EAAIsD,EAAIC,EAERC,EAAS,SAAJxD,EACT2D,EAAUA,GAAW3D,EAAI,SAAa,GAAM,EAC5CwD,EAAMA,EAAKI,EAAS,EACpBA,EAAa,SAALJ,EACRG,EAAUA,GAAUH,IAAO,IAAO,EAElCiJ,GAAW9I,IAAW,GACtBA,GAAU,SAEZN,EAAIpE,MAAMyE,GAAKE,EACfH,EAAQE,EACRA,EAAS8I,EAQX,OANc,IAAVhJ,EACFJ,EAAIpE,MAAMyE,GAAKD,EAEfJ,EAAInE,SAGCmE,EAAIzB,QAGb,SAAS8K,EAAYtJ,EAAM1C,EAAK2C,GAC9B,IAAIsJ,EAAO,IAAIC,EACf,OAAOD,EAAKE,KAAKzJ,EAAM1C,EAAK2C,GAsB9B,SAASuJ,EAAME,EAAGC,GAChBhO,KAAK+N,EAAIA,EACT/N,KAAKgO,EAAIA,EAvENxM,KAAK6K,OACR/D,EAAclE,GAiDhBzE,EAAGF,UAAUwO,MAAQ,SAAgBtM,EAAK2C,GACxC,IAAIwB,EACAvE,EAAMvB,KAAKG,OAASwB,EAAIxB,OAW5B,OATE2F,EADkB,KAAhB9F,KAAKG,QAAgC,KAAfwB,EAAIxB,OACtBmI,EAAYtI,KAAM2B,EAAK2C,GACpB/C,EAAM,GACT6C,EAAWpE,KAAM2B,EAAK2C,GACnB/C,EAAM,KACTkM,EAASzN,KAAM2B,EAAK2C,GAEpBqJ,EAAW3N,KAAM2B,EAAK2C,GAGvBwB,GAWT+H,EAAKpO,UAAUyO,QAAU,SAAkBC,GAGzC,IAFA,IAAI/H,EAAI,IAAIxE,MAAMuM,GACdC,EAAIzO,EAAGF,UAAU0G,WAAWgI,GAAK,EAC5BzM,EAAI,EAAGA,EAAIyM,EAAGzM,IACrB0E,EAAE1E,GAAK1B,KAAKqO,OAAO3M,EAAG0M,EAAGD,GAG3B,OAAO/H,GAITyH,EAAKpO,UAAU4O,OAAS,SAAiBN,EAAGK,EAAGD,GAC7C,GAAU,IAANJ,GAAWA,IAAMI,EAAI,EAAG,OAAOJ,EAGnC,IADA,IAAIO,EAAK,EACA5M,EAAI,EAAGA,EAAI0M,EAAG1M,IACrB4M,IAAW,EAAJP,IAAWK,EAAI1M,EAAI,EAC1BqM,IAAM,EAGR,OAAOO,GAKTT,EAAKpO,UAAU8O,QAAU,SAAkBC,EAAKC,EAAKC,EAAKC,EAAMC,EAAMT,GACpE,IAAK,IAAIzM,EAAI,EAAGA,EAAIyM,EAAGzM,IACrBiN,EAAKjN,GAAK+M,EAAID,EAAI9M,IAClBkN,EAAKlN,GAAKgN,EAAIF,EAAI9M,KAItBmM,EAAKpO,UAAUoP,UAAY,SAAoBJ,EAAKC,EAAKC,EAAMC,EAAMT,EAAGK,GACtExO,KAAKuO,QAAQC,EAAKC,EAAKC,EAAKC,EAAMC,EAAMT,GAExC,IAAK,IAAIW,EAAI,EAAGA,EAAIX,EAAGW,IAAM,EAM3B,IALA,IAAIV,EAAIU,GAAK,EAETC,EAAQvN,KAAKwN,IAAI,EAAIxN,KAAKyN,GAAKb,GAC/Bc,EAAQ1N,KAAK2N,IAAI,EAAI3N,KAAKyN,GAAKb,GAE1BgB,EAAI,EAAGA,EAAIjB,EAAGiB,GAAKhB,EAI1B,IAHA,IAAIiB,EAASN,EACTO,EAASJ,EAEJxM,EAAI,EAAGA,EAAIoM,EAAGpM,IAAK,CAC1B,IAAI6M,EAAKZ,EAAKS,EAAI1M,GACd8M,EAAKZ,EAAKQ,EAAI1M,GAEd+M,EAAKd,EAAKS,EAAI1M,EAAIoM,GAClBY,EAAKd,EAAKQ,EAAI1M,EAAIoM,GAElBa,EAAKN,EAASI,EAAKH,EAASI,EAEhCA,EAAKL,EAASK,EAAKJ,EAASG,EAC5BA,EAAKE,EAELhB,EAAKS,EAAI1M,GAAK6M,EAAKE,EACnBb,EAAKQ,EAAI1M,GAAK8M,EAAKE,EAEnBf,EAAKS,EAAI1M,EAAIoM,GAAKS,EAAKE,EACvBb,EAAKQ,EAAI1M,EAAIoM,GAAKU,EAAKE,EAGnBhN,IAAM0L,IACRuB,EAAKZ,EAAQM,EAASH,EAAQI,EAE9BA,EAASP,EAAQO,EAASJ,EAAQG,EAClCA,EAASM,KAOnB9B,EAAKpO,UAAUmQ,YAAc,SAAsBC,EAAGC,GACpD,IAAI3B,EAAqB,EAAjB3M,KAAKM,IAAIgO,EAAGD,GAChBE,EAAU,EAAJ5B,EACNzM,EAAI,EACR,IAAKyM,EAAIA,EAAI,EAAI,EAAGA,EAAGA,KAAU,EAC/BzM,IAGF,OAAO,GAAKA,EAAI,EAAIqO,GAGtBlC,EAAKpO,UAAUuQ,UAAY,SAAoBvB,EAAKC,EAAKP,GACvD,KAAIA,GAAK,GAET,IAAK,IAAIzM,EAAI,EAAGA,EAAIyM,EAAI,EAAGzM,IAAK,CAC9B,IAAI0E,EAAIqI,EAAI/M,GAEZ+M,EAAI/M,GAAK+M,EAAIN,EAAIzM,EAAI,GACrB+M,EAAIN,EAAIzM,EAAI,GAAK0E,EAEjBA,EAAIsI,EAAIhN,GAERgN,EAAIhN,IAAMgN,EAAIP,EAAIzM,EAAI,GACtBgN,EAAIP,EAAIzM,EAAI,IAAM0E,IAItByH,EAAKpO,UAAUwQ,aAAe,SAAuBC,EAAI/B,GAEvD,IADA,IAAIzJ,EAAQ,EACHhD,EAAI,EAAGA,EAAIyM,EAAI,EAAGzM,IAAK,CAC9B,IAAIiB,EAAoC,KAAhCnB,KAAK2O,MAAMD,EAAG,EAAIxO,EAAI,GAAKyM,GACjC3M,KAAK2O,MAAMD,EAAG,EAAIxO,GAAKyM,GACvBzJ,EAEFwL,EAAGxO,GAAS,SAAJiB,EAGN+B,EADE/B,EAAI,SACE,EAEAA,EAAI,SAAY,EAI5B,OAAOuN,GAGTrC,EAAKpO,UAAU2Q,WAAa,SAAqBF,EAAI3O,EAAKkN,EAAKN,GAE7D,IADA,IAAIzJ,EAAQ,EACHhD,EAAI,EAAGA,EAAIH,EAAKG,IACvBgD,GAAyB,EAARwL,EAAGxO,GAEpB+M,EAAI,EAAI/M,GAAa,KAARgD,EAAgBA,KAAkB,GAC/C+J,EAAI,EAAI/M,EAAI,GAAa,KAARgD,EAAgBA,KAAkB,GAIrD,IAAKhD,EAAI,EAAIH,EAAKG,EAAIyM,IAAKzM,EACzB+M,EAAI/M,GAAK,EAGX1C,EAAiB,IAAV0F,GACP1F,EAA6B,MAAb,KAAR0F,KAGVmJ,EAAKpO,UAAU4Q,KAAO,SAAelC,GAEnC,IADA,IAAImC,EAAK,IAAI1O,MAAMuM,GACVzM,EAAI,EAAGA,EAAIyM,EAAGzM,IACrB4O,EAAG5O,GAAK,EAGV,OAAO4O,GAGTzC,EAAKpO,UAAUqO,KAAO,SAAeC,EAAGC,EAAG1J,GACzC,IAAI6J,EAAI,EAAInO,KAAK4P,YAAY7B,EAAE5N,OAAQ6N,EAAE7N,QAErCqO,EAAMxO,KAAKkO,QAAQC,GAEnBoC,EAAIvQ,KAAKqQ,KAAKlC,GAEdM,EAAM,IAAI7M,MAAMuM,GAChBqC,EAAO,IAAI5O,MAAMuM,GACjBsC,EAAO,IAAI7O,MAAMuM,GAEjBuC,EAAO,IAAI9O,MAAMuM,GACjBwC,EAAQ,IAAI/O,MAAMuM,GAClByC,EAAQ,IAAIhP,MAAMuM,GAElB0C,EAAOvM,EAAIpE,MACf2Q,EAAK1Q,OAASgO,EAEdnO,KAAKoQ,WAAWrC,EAAE7N,MAAO6N,EAAE5N,OAAQsO,EAAKN,GACxCnO,KAAKoQ,WAAWpC,EAAE9N,MAAO8N,EAAE7N,OAAQuQ,EAAMvC,GAEzCnO,KAAK6O,UAAUJ,EAAK8B,EAAGC,EAAMC,EAAMtC,EAAGK,GACtCxO,KAAK6O,UAAU6B,EAAMH,EAAGI,EAAOC,EAAOzC,EAAGK,GAEzC,IAAK,IAAI9M,EAAI,EAAGA,EAAIyM,EAAGzM,IAAK,CAC1B,IAAIiO,EAAKa,EAAK9O,GAAKiP,EAAMjP,GAAK+O,EAAK/O,GAAKkP,EAAMlP,GAC9C+O,EAAK/O,GAAK8O,EAAK9O,GAAKkP,EAAMlP,GAAK+O,EAAK/O,GAAKiP,EAAMjP,GAC/C8O,EAAK9O,GAAKiO,EAUZ,OAPA3P,KAAKgQ,UAAUQ,EAAMC,EAAMtC,GAC3BnO,KAAK6O,UAAU2B,EAAMC,EAAMI,EAAMN,EAAGpC,EAAGK,GACvCxO,KAAKgQ,UAAUa,EAAMN,EAAGpC,GACxBnO,KAAKiQ,aAAaY,EAAM1C,GAExB7J,EAAIrE,SAAW8N,EAAE9N,SAAW+N,EAAE/N,SAC9BqE,EAAInE,OAAS4N,EAAE5N,OAAS6N,EAAE7N,OACnBmE,EAAIzB,SAIblD,EAAGF,UAAU6B,IAAM,SAAcK,GAC/B,IAAI2C,EAAM,IAAI3E,EAAG,MAEjB,OADA2E,EAAIpE,MAAQ,IAAI0B,MAAM5B,KAAKG,OAASwB,EAAIxB,QACjCH,KAAKiO,MAAMtM,EAAK2C,IAIzB3E,EAAGF,UAAUqR,KAAO,SAAenP,GACjC,IAAI2C,EAAM,IAAI3E,EAAG,MAEjB,OADA2E,EAAIpE,MAAQ,IAAI0B,MAAM5B,KAAKG,OAASwB,EAAIxB,QACjCwN,EAAW3N,KAAM2B,EAAK2C,IAI/B3E,EAAGF,UAAU4M,KAAO,SAAe1K,GACjC,OAAO3B,KAAKwD,QAAQyK,MAAMtM,EAAK3B,OAGjCL,EAAGF,UAAU0D,MAAQ,SAAgBxB,GACnC3C,EAAsB,kBAAR2C,GACd3C,EAAO2C,EAAM,UAIb,IADA,IAAI+C,EAAQ,EACHhD,EAAI,EAAGA,EAAI1B,KAAKG,OAAQuB,IAAK,CACpC,IAAIiB,GAAqB,EAAhB3C,KAAKE,MAAMwB,IAAUC,EAC1B8C,GAAU,SAAJ9B,IAA0B,SAAR+B,GAC5BA,IAAU,GACVA,GAAU/B,EAAI,SAAa,EAE3B+B,GAASD,IAAO,GAChBzE,KAAKE,MAAMwB,GAAU,SAAL+C,EAQlB,OALc,IAAVC,IACF1E,KAAKE,MAAMwB,GAAKgD,EAChB1E,KAAKG,UAGAH,MAGTL,EAAGF,UAAUsR,KAAO,SAAepP,GACjC,OAAO3B,KAAKwD,QAAQL,MAAMxB,IAI5BhC,EAAGF,UAAUuR,IAAM,WACjB,OAAOhR,KAAKsB,IAAItB,OAIlBL,EAAGF,UAAUwR,KAAO,WAClB,OAAOjR,KAAKqM,KAAKrM,KAAKwD,UAIxB7D,EAAGF,UAAU4D,IAAM,SAAc1B,GAC/B,IAAIgB,EAAIqB,EAAWrC,GACnB,GAAiB,IAAbgB,EAAExC,OAAc,OAAO,IAAIR,EAAG,GAIlC,IADA,IAAImG,EAAM9F,KACD0B,EAAI,EAAGA,EAAIiB,EAAExC,OAAQuB,IAAKoE,EAAMA,EAAIkL,MAC3C,GAAa,IAATrO,EAAEjB,GAAU,MAGlB,KAAMA,EAAIiB,EAAExC,OACV,IAAK,IAAI4F,EAAID,EAAIkL,MAAOtP,EAAIiB,EAAExC,OAAQuB,IAAKqE,EAAIA,EAAEiL,MAClC,IAATrO,EAAEjB,KAENoE,EAAMA,EAAIxE,IAAIyE,IAIlB,OAAOD,GAITnG,EAAGF,UAAUyR,OAAS,SAAiBC,GACrCnS,EAAuB,kBAATmS,GAAqBA,GAAQ,GAC3C,IAGIzP,EAHAT,EAAIkQ,EAAO,GACXrC,GAAKqC,EAAOlQ,GAAK,GACjBmQ,EAAa,WAAe,GAAKnQ,GAAQ,GAAKA,EAGlD,GAAU,IAANA,EAAS,CACX,IAAIyD,EAAQ,EAEZ,IAAKhD,EAAI,EAAGA,EAAI1B,KAAKG,OAAQuB,IAAK,CAChC,IAAI2P,EAAWrR,KAAKE,MAAMwB,GAAK0P,EAC3BvQ,GAAsB,EAAhBb,KAAKE,MAAMwB,IAAU2P,GAAapQ,EAC5CjB,KAAKE,MAAMwB,GAAKb,EAAI6D,EACpBA,EAAQ2M,IAAc,GAAKpQ,EAGzByD,IACF1E,KAAKE,MAAMwB,GAAKgD,EAChB1E,KAAKG,UAIT,GAAU,IAAN2O,EAAS,CACX,IAAKpN,EAAI1B,KAAKG,OAAS,EAAGuB,GAAK,EAAGA,IAChC1B,KAAKE,MAAMwB,EAAIoN,GAAK9O,KAAKE,MAAMwB,GAGjC,IAAKA,EAAI,EAAGA,EAAIoN,EAAGpN,IACjB1B,KAAKE,MAAMwB,GAAK,EAGlB1B,KAAKG,QAAU2O,EAGjB,OAAO9O,KAAK6C,SAGdlD,EAAGF,UAAU6R,MAAQ,SAAgBH,GAGnC,OADAnS,EAAyB,IAAlBgB,KAAKC,UACLD,KAAKkR,OAAOC,IAMrBxR,EAAGF,UAAUwG,OAAS,SAAiBkL,EAAMI,EAAMC,GAEjD,IAAIC,EADJzS,EAAuB,kBAATmS,GAAqBA,GAAQ,GAGzCM,EADEF,GACGA,EAAQA,EAAO,IAAO,GAEvB,EAGN,IAAItQ,EAAIkQ,EAAO,GACXrC,EAAItN,KAAKC,KAAK0P,EAAOlQ,GAAK,GAAIjB,KAAKG,QACnCuR,EAAO,SAAc,WAAczQ,GAAMA,EACzC0Q,EAAcH,EAMlB,GAJAC,GAAK3C,EACL2C,EAAIjQ,KAAKM,IAAI,EAAG2P,GAGZE,EAAa,CACf,IAAK,IAAIjQ,EAAI,EAAGA,EAAIoN,EAAGpN,IACrBiQ,EAAYzR,MAAMwB,GAAK1B,KAAKE,MAAMwB,GAEpCiQ,EAAYxR,OAAS2O,EAGvB,GAAU,IAANA,QAEG,GAAI9O,KAAKG,OAAS2O,EAEvB,IADA9O,KAAKG,QAAU2O,EACVpN,EAAI,EAAGA,EAAI1B,KAAKG,OAAQuB,IAC3B1B,KAAKE,MAAMwB,GAAK1B,KAAKE,MAAMwB,EAAIoN,QAGjC9O,KAAKE,MAAM,GAAK,EAChBF,KAAKG,OAAS,EAGhB,IAAIuE,EAAQ,EACZ,IAAKhD,EAAI1B,KAAKG,OAAS,EAAGuB,GAAK,IAAgB,IAAVgD,GAAehD,GAAK+P,GAAI/P,IAAK,CAChE,IAAIwB,EAAuB,EAAhBlD,KAAKE,MAAMwB,GACtB1B,KAAKE,MAAMwB,GAAMgD,GAAU,GAAKzD,EAAOiC,IAASjC,EAChDyD,EAAQxB,EAAOwO,EAajB,OATIC,GAAyB,IAAVjN,IACjBiN,EAAYzR,MAAMyR,EAAYxR,UAAYuE,GAGxB,IAAhB1E,KAAKG,SACPH,KAAKE,MAAM,GAAK,EAChBF,KAAKG,OAAS,GAGTH,KAAK6C,SAGdlD,EAAGF,UAAUmS,MAAQ,SAAgBT,EAAMI,EAAMC,GAG/C,OADAxS,EAAyB,IAAlBgB,KAAKC,UACLD,KAAKiG,OAAOkL,EAAMI,EAAMC,IAIjC7R,EAAGF,UAAUoS,KAAO,SAAeV,GACjC,OAAOnR,KAAKwD,QAAQ8N,MAAMH,IAG5BxR,EAAGF,UAAUqS,MAAQ,SAAgBX,GACnC,OAAOnR,KAAKwD,QAAQ0N,OAAOC,IAI7BxR,EAAGF,UAAUsS,KAAO,SAAeZ,GACjC,OAAOnR,KAAKwD,QAAQoO,MAAMT,IAG5BxR,EAAGF,UAAUuS,MAAQ,SAAgBb,GACnC,OAAOnR,KAAKwD,QAAQyC,OAAOkL,IAI7BxR,EAAGF,UAAUqH,MAAQ,SAAgB5C,GACnClF,EAAsB,kBAARkF,GAAoBA,GAAO,GACzC,IAAIjD,EAAIiD,EAAM,GACV4K,GAAK5K,EAAMjD,GAAK,GAChB8E,EAAI,GAAK9E,EAGb,GAAIjB,KAAKG,QAAU2O,EAAG,OAAO,EAG7B,IAAInM,EAAI3C,KAAKE,MAAM4O,GAEnB,SAAUnM,EAAIoD,IAIhBpG,EAAGF,UAAUwS,OAAS,SAAiBd,GACrCnS,EAAuB,kBAATmS,GAAqBA,GAAQ,GAC3C,IAAIlQ,EAAIkQ,EAAO,GACXrC,GAAKqC,EAAOlQ,GAAK,GAIrB,GAFAjC,EAAyB,IAAlBgB,KAAKC,SAAgB,2CAExBD,KAAKG,QAAU2O,EACjB,OAAO9O,KAQT,GALU,IAANiB,GACF6N,IAEF9O,KAAKG,OAASqB,KAAKC,IAAIqN,EAAG9O,KAAKG,QAErB,IAANc,EAAS,CACX,IAAIyQ,EAAO,SAAc,WAAczQ,GAAMA,EAC7CjB,KAAKE,MAAMF,KAAKG,OAAS,IAAMuR,EAGjC,OAAO1R,KAAK6C,SAIdlD,EAAGF,UAAUyS,MAAQ,SAAgBf,GACnC,OAAOnR,KAAKwD,QAAQyO,OAAOd,IAI7BxR,EAAGF,UAAUmH,MAAQ,SAAgBjF,GAGnC,OAFA3C,EAAsB,kBAAR2C,GACd3C,EAAO2C,EAAM,UACTA,EAAM,EAAU3B,KAAKmS,OAAOxQ,GAGV,IAAlB3B,KAAKC,SACa,IAAhBD,KAAKG,SAAiC,EAAhBH,KAAKE,MAAM,IAAUyB,GAC7C3B,KAAKE,MAAM,GAAKyB,GAAuB,EAAhB3B,KAAKE,MAAM,IAClCF,KAAKC,SAAW,EACTD,OAGTA,KAAKC,SAAW,EAChBD,KAAKmS,MAAMxQ,GACX3B,KAAKC,SAAW,EACTD,MAIFA,KAAKoD,OAAOzB,IAGrBhC,EAAGF,UAAU2D,OAAS,SAAiBzB,GACrC3B,KAAKE,MAAM,IAAMyB,EAGjB,IAAK,IAAID,EAAI,EAAGA,EAAI1B,KAAKG,QAAUH,KAAKE,MAAMwB,IAAM,SAAWA,IAC7D1B,KAAKE,MAAMwB,IAAM,SACbA,IAAM1B,KAAKG,OAAS,EACtBH,KAAKE,MAAMwB,EAAI,GAAK,EAEpB1B,KAAKE,MAAMwB,EAAI,KAKnB,OAFA1B,KAAKG,OAASqB,KAAKM,IAAI9B,KAAKG,OAAQuB,EAAI,GAEjC1B,MAITL,EAAGF,UAAU0S,MAAQ,SAAgBxQ,GAGnC,GAFA3C,EAAsB,kBAAR2C,GACd3C,EAAO2C,EAAM,UACTA,EAAM,EAAG,OAAO3B,KAAK4G,OAAOjF,GAEhC,GAAsB,IAAlB3B,KAAKC,SAIP,OAHAD,KAAKC,SAAW,EAChBD,KAAK4G,MAAMjF,GACX3B,KAAKC,SAAW,EACTD,KAKT,GAFAA,KAAKE,MAAM,IAAMyB,EAEG,IAAhB3B,KAAKG,QAAgBH,KAAKE,MAAM,GAAK,EACvCF,KAAKE,MAAM,IAAMF,KAAKE,MAAM,GAC5BF,KAAKC,SAAW,OAGhB,IAAK,IAAIyB,EAAI,EAAGA,EAAI1B,KAAKG,QAAUH,KAAKE,MAAMwB,GAAK,EAAGA,IACpD1B,KAAKE,MAAMwB,IAAM,SACjB1B,KAAKE,MAAMwB,EAAI,IAAM,EAIzB,OAAO1B,KAAK6C,SAGdlD,EAAGF,UAAU2S,KAAO,SAAezQ,GACjC,OAAO3B,KAAKwD,QAAQoD,MAAMjF,IAG5BhC,EAAGF,UAAU4S,KAAO,SAAe1Q,GACjC,OAAO3B,KAAKwD,QAAQ2O,MAAMxQ,IAG5BhC,EAAGF,UAAU6S,KAAO,WAGlB,OAFAtS,KAAKC,SAAW,EAETD,MAGTL,EAAGF,UAAUiH,IAAM,WACjB,OAAO1G,KAAKwD,QAAQ8O,QAGtB3S,EAAGF,UAAU8S,aAAe,SAAuB5Q,EAAKL,EAAKkR,GAC3D,IACI9Q,EAIAiB,EALApB,EAAMI,EAAIxB,OAASqS,EAGvBxS,KAAKyD,QAAQlC,GAGb,IAAImD,EAAQ,EACZ,IAAKhD,EAAI,EAAGA,EAAIC,EAAIxB,OAAQuB,IAAK,CAC/BiB,GAA6B,EAAxB3C,KAAKE,MAAMwB,EAAI8Q,IAAc9N,EAClC,IAAI1C,GAAwB,EAAfL,EAAIzB,MAAMwB,IAAUJ,EACjCqB,GAAa,SAARX,EACL0C,GAAS/B,GAAK,KAAQX,EAAQ,SAAa,GAC3ChC,KAAKE,MAAMwB,EAAI8Q,GAAa,SAAJ7P,EAE1B,KAAOjB,EAAI1B,KAAKG,OAASqS,EAAO9Q,IAC9BiB,GAA6B,EAAxB3C,KAAKE,MAAMwB,EAAI8Q,IAAc9N,EAClCA,EAAQ/B,GAAK,GACb3C,KAAKE,MAAMwB,EAAI8Q,GAAa,SAAJ7P,EAG1B,GAAc,IAAV+B,EAAa,OAAO1E,KAAK6C,QAK7B,IAFA7D,GAAkB,IAAX0F,GACPA,EAAQ,EACHhD,EAAI,EAAGA,EAAI1B,KAAKG,OAAQuB,IAC3BiB,IAAsB,EAAhB3C,KAAKE,MAAMwB,IAAUgD,EAC3BA,EAAQ/B,GAAK,GACb3C,KAAKE,MAAMwB,GAAS,SAAJiB,EAIlB,OAFA3C,KAAKC,SAAW,EAETD,KAAK6C,SAGdlD,EAAGF,UAAUgT,SAAW,SAAmB9Q,EAAK+Q,GAC9C,IAAIF,EAAQxS,KAAKG,OAASwB,EAAIxB,OAE1BoE,EAAIvE,KAAKwD,QACTgB,EAAI7C,EAGJgR,EAA8B,EAAxBnO,EAAEtE,MAAMsE,EAAErE,OAAS,GACzByS,EAAU5S,KAAKmG,WAAWwM,GAC9BH,EAAQ,GAAKI,EACC,IAAVJ,IACFhO,EAAIA,EAAEsN,MAAMU,GACZjO,EAAE2M,OAAOsB,GACTG,EAA8B,EAAxBnO,EAAEtE,MAAMsE,EAAErE,OAAS,IAI3B,IACI4F,EADA+J,EAAIvL,EAAEpE,OAASqE,EAAErE,OAGrB,GAAa,QAATuS,EAAgB,CAClB3M,EAAI,IAAIpG,EAAG,MACXoG,EAAE5F,OAAS2P,EAAI,EACf/J,EAAE7F,MAAQ,IAAI0B,MAAMmE,EAAE5F,QACtB,IAAK,IAAIuB,EAAI,EAAGA,EAAIqE,EAAE5F,OAAQuB,IAC5BqE,EAAE7F,MAAMwB,GAAK,EAIjB,IAAImR,EAAOtO,EAAEf,QAAQ+O,aAAa/N,EAAG,EAAGsL,GAClB,IAAlB+C,EAAK5S,WACPsE,EAAIsO,EACA9M,IACFA,EAAE7F,MAAM4P,GAAK,IAIjB,IAAK,IAAIpN,EAAIoN,EAAI,EAAGpN,GAAK,EAAGA,IAAK,CAC/B,IAAIoQ,EAAmC,UAAL,EAAxBvO,EAAErE,MAAMsE,EAAErE,OAASuC,KACE,EAA5B6B,EAAErE,MAAMsE,EAAErE,OAASuC,EAAI,IAI1BoQ,EAAKtR,KAAKC,IAAKqR,EAAKH,EAAO,EAAG,UAE9BpO,EAAEgO,aAAa/N,EAAGsO,EAAIpQ,GACtB,MAAsB,IAAf6B,EAAEtE,SACP6S,IACAvO,EAAEtE,SAAW,EACbsE,EAAEgO,aAAa/N,EAAG,EAAG9B,GAChB6B,EAAEW,WACLX,EAAEtE,UAAY,GAGd8F,IACFA,EAAE7F,MAAMwC,GAAKoQ,GAajB,OAVI/M,GACFA,EAAElD,QAEJ0B,EAAE1B,QAGW,QAAT6P,GAA4B,IAAVF,GACpBjO,EAAE0B,OAAOuM,GAGJ,CACLO,IAAKhN,GAAK,KACV/H,IAAKuG,IAQT5E,EAAGF,UAAUuT,OAAS,SAAiBrR,EAAK+Q,EAAMO,GAGhD,OAFAjU,GAAQ2C,EAAIuD,UAERlF,KAAKkF,SACA,CACL6N,IAAK,IAAIpT,EAAG,GACZ3B,IAAK,IAAI2B,EAAG,IAKM,IAAlBK,KAAKC,UAAmC,IAAjB0B,EAAI1B,UAC7B6F,EAAM9F,KAAKkH,MAAM8L,OAAOrR,EAAK+Q,GAEhB,QAATA,IACFK,EAAMjN,EAAIiN,IAAI7L,OAGH,QAATwL,IACF1U,EAAM8H,EAAI9H,IAAIkJ,MACV+L,GAA6B,IAAjBjV,EAAIiC,UAClBjC,EAAIkK,KAAKvG,IAIN,CACLoR,IAAKA,EACL/U,IAAKA,IAIa,IAAlBgC,KAAKC,UAAmC,IAAjB0B,EAAI1B,UAC7B6F,EAAM9F,KAAKgT,OAAOrR,EAAIuF,MAAOwL,GAEhB,QAATA,IACFK,EAAMjN,EAAIiN,IAAI7L,OAGT,CACL6L,IAAKA,EACL/U,IAAK8H,EAAI9H,MAI0B,KAAlCgC,KAAKC,SAAW0B,EAAI1B,WACvB6F,EAAM9F,KAAKkH,MAAM8L,OAAOrR,EAAIuF,MAAOwL,GAEtB,QAATA,IACF1U,EAAM8H,EAAI9H,IAAIkJ,MACV+L,GAA6B,IAAjBjV,EAAIiC,UAClBjC,EAAImK,KAAKxG,IAIN,CACLoR,IAAKjN,EAAIiN,IACT/U,IAAKA,IAOL2D,EAAIxB,OAASH,KAAKG,QAAUH,KAAKiC,IAAIN,GAAO,EACvC,CACLoR,IAAK,IAAIpT,EAAG,GACZ3B,IAAKgC,MAKU,IAAf2B,EAAIxB,OACO,QAATuS,EACK,CACLK,IAAK/S,KAAKkT,KAAKvR,EAAIzB,MAAM,IACzBlC,IAAK,MAII,QAAT0U,EACK,CACLK,IAAK,KACL/U,IAAK,IAAI2B,EAAGK,KAAKmF,KAAKxD,EAAIzB,MAAM,MAI7B,CACL6S,IAAK/S,KAAKkT,KAAKvR,EAAIzB,MAAM,IACzBlC,IAAK,IAAI2B,EAAGK,KAAKmF,KAAKxD,EAAIzB,MAAM,MAI7BF,KAAKyS,SAAS9Q,EAAK+Q,GAlF1B,IAAIK,EAAK/U,EAAK8H,GAsFhBnG,EAAGF,UAAUsT,IAAM,SAAcpR,GAC/B,OAAO3B,KAAKgT,OAAOrR,EAAK,OAAO,GAAOoR,KAIxCpT,EAAGF,UAAUzB,IAAM,SAAc2D,GAC/B,OAAO3B,KAAKgT,OAAOrR,EAAK,OAAO,GAAO3D,KAGxC2B,EAAGF,UAAU0T,KAAO,SAAexR,GACjC,OAAO3B,KAAKgT,OAAOrR,EAAK,OAAO,GAAM3D,KAIvC2B,EAAGF,UAAU2T,SAAW,SAAmBzR,GACzC,IAAI0R,EAAKrT,KAAKgT,OAAOrR,GAGrB,GAAI0R,EAAGrV,IAAIkH,SAAU,OAAOmO,EAAGN,IAE/B,IAAI/U,EAA0B,IAApBqV,EAAGN,IAAI9S,SAAiBoT,EAAGrV,IAAImK,KAAKxG,GAAO0R,EAAGrV,IAEpDsV,EAAO3R,EAAIqQ,MAAM,GACjBuB,EAAK5R,EAAIqE,MAAM,GACf/D,EAAMjE,EAAIiE,IAAIqR,GAGlB,OAAIrR,EAAM,GAAY,IAAPsR,GAAoB,IAARtR,EAAkBoR,EAAGN,IAGrB,IAApBM,EAAGN,IAAI9S,SAAiBoT,EAAGN,IAAIZ,MAAM,GAAKkB,EAAGN,IAAInM,MAAM,IAGhEjH,EAAGF,UAAU0F,KAAO,SAAexD,GACjC3C,EAAO2C,GAAO,UAId,IAHA,IAAIyN,GAAK,GAAK,IAAMzN,EAEhB6R,EAAM,EACD9R,EAAI1B,KAAKG,OAAS,EAAGuB,GAAK,EAAGA,IACpC8R,GAAOpE,EAAIoE,GAAuB,EAAhBxT,KAAKE,MAAMwB,KAAWC,EAG1C,OAAO6R,GAIT7T,EAAGF,UAAU2F,MAAQ,SAAgBzD,GACnC3C,EAAO2C,GAAO,UAGd,IADA,IAAI+C,EAAQ,EACHhD,EAAI1B,KAAKG,OAAS,EAAGuB,GAAK,EAAGA,IAAK,CACzC,IAAIiB,GAAqB,EAAhB3C,KAAKE,MAAMwB,IAAkB,SAARgD,EAC9B1E,KAAKE,MAAMwB,GAAMiB,EAAIhB,EAAO,EAC5B+C,EAAQ/B,EAAIhB,EAGd,OAAO3B,KAAK6C,SAGdlD,EAAGF,UAAUyT,KAAO,SAAevR,GACjC,OAAO3B,KAAKwD,QAAQ4B,MAAMzD,IAG5BhC,EAAGF,UAAUgU,KAAO,SAAerE,GACjCpQ,EAAsB,IAAfoQ,EAAEnP,UACTjB,GAAQoQ,EAAElK,UAEV,IAAI6I,EAAI/N,KACJgO,EAAIoB,EAAE5L,QAGRuK,EADiB,IAAfA,EAAE9N,SACA8N,EAAEoF,KAAK/D,GAEPrB,EAAEvK,QAIR,IAAIkQ,EAAI,IAAI/T,EAAG,GACXgU,EAAI,IAAIhU,EAAG,GAGXiU,EAAI,IAAIjU,EAAG,GACXkU,EAAI,IAAIlU,EAAG,GAEXmU,EAAI,EAER,MAAO/F,EAAEgG,UAAY/F,EAAE+F,SACrBhG,EAAE9H,OAAO,GACT+H,EAAE/H,OAAO,KACP6N,EAGJ,IAAIE,EAAKhG,EAAExK,QACPyQ,EAAKlG,EAAEvK,QAEX,OAAQuK,EAAE7I,SAAU,CAClB,IAAK,IAAIxD,EAAI,EAAGwS,EAAK,EAAyB,KAArBnG,EAAE7N,MAAM,GAAKgU,IAAaxS,EAAI,KAAMA,EAAGwS,IAAO,GACvE,GAAIxS,EAAI,EAAG,CACTqM,EAAE9H,OAAOvE,GACT,MAAOA,KAAM,GACPgS,EAAES,SAAWR,EAAEQ,WACjBT,EAAExL,KAAK8L,GACPL,EAAExL,KAAK8L,IAGTP,EAAEzN,OAAO,GACT0N,EAAE1N,OAAO,GAIb,IAAK,IAAIvD,EAAI,EAAG0R,EAAK,EAAyB,KAArBpG,EAAE9N,MAAM,GAAKkU,IAAa1R,EAAI,KAAMA,EAAG0R,IAAO,GACvE,GAAI1R,EAAI,EAAG,CACTsL,EAAE/H,OAAOvD,GACT,MAAOA,KAAM,GACPkR,EAAEO,SAAWN,EAAEM,WACjBP,EAAE1L,KAAK8L,GACPH,EAAE1L,KAAK8L,IAGTL,EAAE3N,OAAO,GACT4N,EAAE5N,OAAO,GAIT8H,EAAE9L,IAAI+L,IAAM,GACdD,EAAE5F,KAAK6F,GACP0F,EAAEvL,KAAKyL,GACPD,EAAExL,KAAK0L,KAEP7F,EAAE7F,KAAK4F,GACP6F,EAAEzL,KAAKuL,GACPG,EAAE1L,KAAKwL,IAIX,MAAO,CACLpP,EAAGqP,EACHpP,EAAGqP,EACHQ,IAAKrG,EAAEkD,OAAO4C,KAOlBnU,EAAGF,UAAU6U,OAAS,SAAiBlF,GACrCpQ,EAAsB,IAAfoQ,EAAEnP,UACTjB,GAAQoQ,EAAElK,UAEV,IAAIX,EAAIvE,KACJwE,EAAI4K,EAAE5L,QAGRe,EADiB,IAAfA,EAAEtE,SACAsE,EAAE4O,KAAK/D,GAEP7K,EAAEf,QAGR,IAuCIsC,EAvCAyO,EAAK,IAAI5U,EAAG,GACZ6U,EAAK,IAAI7U,EAAG,GAEZ8U,EAAQjQ,EAAEhB,QAEd,MAAOe,EAAEmQ,KAAK,GAAK,GAAKlQ,EAAEkQ,KAAK,GAAK,EAAG,CACrC,IAAK,IAAIhT,EAAI,EAAGwS,EAAK,EAAyB,KAArB3P,EAAErE,MAAM,GAAKgU,IAAaxS,EAAI,KAAMA,EAAGwS,IAAO,GACvE,GAAIxS,EAAI,EAAG,CACT6C,EAAE0B,OAAOvE,GACT,MAAOA,KAAM,EACP6S,EAAGJ,SACLI,EAAGrM,KAAKuM,GAGVF,EAAGtO,OAAO,GAId,IAAK,IAAIvD,EAAI,EAAG0R,EAAK,EAAyB,KAArB5P,EAAEtE,MAAM,GAAKkU,IAAa1R,EAAI,KAAMA,EAAG0R,IAAO,GACvE,GAAI1R,EAAI,EAAG,CACT8B,EAAEyB,OAAOvD,GACT,MAAOA,KAAM,EACP8R,EAAGL,SACLK,EAAGtM,KAAKuM,GAGVD,EAAGvO,OAAO,GAIV1B,EAAEtC,IAAIuC,IAAM,GACdD,EAAE4D,KAAK3D,GACP+P,EAAGpM,KAAKqM,KAERhQ,EAAE2D,KAAK5D,GACPiQ,EAAGrM,KAAKoM,IAeZ,OATEzO,EADgB,IAAdvB,EAAEmQ,KAAK,GACHH,EAEAC,EAGJ1O,EAAI4O,KAAK,GAAK,GAChB5O,EAAIoC,KAAKkH,GAGJtJ,GAGTnG,EAAGF,UAAU4U,IAAM,SAAc1S,GAC/B,GAAI3B,KAAKkF,SAAU,OAAOvD,EAAI+E,MAC9B,GAAI/E,EAAIuD,SAAU,OAAOlF,KAAK0G,MAE9B,IAAInC,EAAIvE,KAAKwD,QACTgB,EAAI7C,EAAI6B,QACZe,EAAEtE,SAAW,EACbuE,EAAEvE,SAAW,EAGb,IAAK,IAAIuS,EAAQ,EAAGjO,EAAEwP,UAAYvP,EAAEuP,SAAUvB,IAC5CjO,EAAE0B,OAAO,GACTzB,EAAEyB,OAAO,GAGX,EAAG,CACD,MAAO1B,EAAEwP,SACPxP,EAAE0B,OAAO,GAEX,MAAOzB,EAAEuP,SACPvP,EAAEyB,OAAO,GAGX,IAAIhF,EAAIsD,EAAEtC,IAAIuC,GACd,GAAIvD,EAAI,EAAG,CAET,IAAImF,EAAI7B,EACRA,EAAIC,EACJA,EAAI4B,OACC,GAAU,IAANnF,GAAyB,IAAduD,EAAEkQ,KAAK,GAC3B,MAGFnQ,EAAE4D,KAAK3D,SACA,GAET,OAAOA,EAAE0M,OAAOsB,IAIlB7S,EAAGF,UAAUkV,KAAO,SAAehT,GACjC,OAAO3B,KAAKyT,KAAK9R,GAAK4C,EAAE4O,KAAKxR,IAG/BhC,EAAGF,UAAUsU,OAAS,WACpB,OAA+B,KAAP,EAAhB/T,KAAKE,MAAM,KAGrBP,EAAGF,UAAU0U,MAAQ,WACnB,OAA+B,KAAP,EAAhBnU,KAAKE,MAAM,KAIrBP,EAAGF,UAAUuG,MAAQ,SAAgBrE,GACnC,OAAO3B,KAAKE,MAAM,GAAKyB,GAIzBhC,EAAGF,UAAUmV,MAAQ,SAAgB1Q,GACnClF,EAAsB,kBAARkF,GACd,IAAIjD,EAAIiD,EAAM,GACV4K,GAAK5K,EAAMjD,GAAK,GAChB8E,EAAI,GAAK9E,EAGb,GAAIjB,KAAKG,QAAU2O,EAGjB,OAFA9O,KAAKyD,QAAQqL,EAAI,GACjB9O,KAAKE,MAAM4O,IAAM/I,EACV/F,KAKT,IADA,IAAI0E,EAAQqB,EACHrE,EAAIoN,EAAa,IAAVpK,GAAehD,EAAI1B,KAAKG,OAAQuB,IAAK,CACnD,IAAIiB,EAAoB,EAAhB3C,KAAKE,MAAMwB,GACnBiB,GAAK+B,EACLA,EAAQ/B,IAAM,GACdA,GAAK,SACL3C,KAAKE,MAAMwB,GAAKiB,EAMlB,OAJc,IAAV+B,IACF1E,KAAKE,MAAMwB,GAAKgD,EAChB1E,KAAKG,UAEAH,MAGTL,EAAGF,UAAUyF,OAAS,WACpB,OAAuB,IAAhBlF,KAAKG,QAAkC,IAAlBH,KAAKE,MAAM,IAGzCP,EAAGF,UAAUiV,KAAO,SAAe/S,GACjC,IAOImE,EAPA7F,EAAW0B,EAAM,EAErB,GAAsB,IAAlB3B,KAAKC,WAAmBA,EAAU,OAAQ,EAC9C,GAAsB,IAAlBD,KAAKC,UAAkBA,EAAU,OAAO,EAK5C,GAHAD,KAAK6C,QAGD7C,KAAKG,OAAS,EAChB2F,EAAM,MACD,CACD7F,IACF0B,GAAOA,GAGT3C,EAAO2C,GAAO,SAAW,qBAEzB,IAAIgB,EAAoB,EAAhB3C,KAAKE,MAAM,GACnB4F,EAAMnD,IAAMhB,EAAM,EAAIgB,EAAIhB,GAAO,EAAI,EAEvC,OAAsB,IAAlB3B,KAAKC,SAA8B,GAAN6F,EAC1BA,GAOTnG,EAAGF,UAAUwC,IAAM,SAAcN,GAC/B,GAAsB,IAAlB3B,KAAKC,UAAmC,IAAjB0B,EAAI1B,SAAgB,OAAQ,EACvD,GAAsB,IAAlBD,KAAKC,UAAmC,IAAjB0B,EAAI1B,SAAgB,OAAO,EAEtD,IAAI6F,EAAM9F,KAAK6U,KAAKlT,GACpB,OAAsB,IAAlB3B,KAAKC,SAA8B,GAAN6F,EAC1BA,GAITnG,EAAGF,UAAUoV,KAAO,SAAelT,GAEjC,GAAI3B,KAAKG,OAASwB,EAAIxB,OAAQ,OAAO,EACrC,GAAIH,KAAKG,OAASwB,EAAIxB,OAAQ,OAAQ,EAGtC,IADA,IAAI2F,EAAM,EACDpE,EAAI1B,KAAKG,OAAS,EAAGuB,GAAK,EAAGA,IAAK,CACzC,IAAI6C,EAAoB,EAAhBvE,KAAKE,MAAMwB,GACf8C,EAAmB,EAAf7C,EAAIzB,MAAMwB,GAElB,GAAI6C,IAAMC,EAAV,CACID,EAAIC,EACNsB,GAAO,EACEvB,EAAIC,IACbsB,EAAM,GAER,OAEF,OAAOA,GAGTnG,EAAGF,UAAUqV,IAAM,SAAcnT,GAC/B,OAA0B,IAAnB3B,KAAK0U,KAAK/S,IAGnBhC,EAAGF,UAAUsV,GAAK,SAAapT,GAC7B,OAAyB,IAAlB3B,KAAKiC,IAAIN,IAGlBhC,EAAGF,UAAUuV,KAAO,SAAerT,GACjC,OAAO3B,KAAK0U,KAAK/S,IAAQ,GAG3BhC,EAAGF,UAAUwV,IAAM,SAActT,GAC/B,OAAO3B,KAAKiC,IAAIN,IAAQ,GAG1BhC,EAAGF,UAAUyV,IAAM,SAAcvT,GAC/B,OAA2B,IAApB3B,KAAK0U,KAAK/S,IAGnBhC,EAAGF,UAAU0V,GAAK,SAAaxT,GAC7B,OAA0B,IAAnB3B,KAAKiC,IAAIN,IAGlBhC,EAAGF,UAAU2V,KAAO,SAAezT,GACjC,OAAO3B,KAAK0U,KAAK/S,IAAQ,GAG3BhC,EAAGF,UAAU4V,IAAM,SAAc1T,GAC/B,OAAO3B,KAAKiC,IAAIN,IAAQ,GAG1BhC,EAAGF,UAAU6V,IAAM,SAAc3T,GAC/B,OAA0B,IAAnB3B,KAAK0U,KAAK/S,IAGnBhC,EAAGF,UAAU8V,GAAK,SAAa5T,GAC7B,OAAyB,IAAlB3B,KAAKiC,IAAIN,IAOlBhC,EAAGS,IAAM,SAAcuB,GACrB,OAAO,IAAI6T,EAAI7T,IAGjBhC,EAAGF,UAAUgW,MAAQ,SAAgBC,GAGnC,OAFA1W,GAAQgB,KAAKI,IAAK,yCAClBpB,EAAyB,IAAlBgB,KAAKC,SAAgB,iCACrByV,EAAIC,UAAU3V,MAAM4V,UAAUF,IAGvC/V,EAAGF,UAAUoW,QAAU,WAErB,OADA7W,EAAOgB,KAAKI,IAAK,wDACVJ,KAAKI,IAAI0V,YAAY9V,OAG9BL,EAAGF,UAAUmW,UAAY,SAAoBF,GAE3C,OADA1V,KAAKI,IAAMsV,EACJ1V,MAGTL,EAAGF,UAAUsW,SAAW,SAAmBL,GAEzC,OADA1W,GAAQgB,KAAKI,IAAK,yCACXJ,KAAK4V,UAAUF,IAGxB/V,EAAGF,UAAUuW,OAAS,SAAiBrU,GAErC,OADA3C,EAAOgB,KAAKI,IAAK,sCACVJ,KAAKI,IAAIgI,IAAIpI,KAAM2B,IAG5BhC,EAAGF,UAAUwW,QAAU,SAAkBtU,GAEvC,OADA3C,EAAOgB,KAAKI,IAAK,uCACVJ,KAAKI,IAAI8H,KAAKlI,KAAM2B,IAG7BhC,EAAGF,UAAUyW,OAAS,SAAiBvU,GAErC,OADA3C,EAAOgB,KAAKI,IAAK,sCACVJ,KAAKI,IAAIiI,IAAIrI,KAAM2B,IAG5BhC,EAAGF,UAAU0W,QAAU,SAAkBxU,GAEvC,OADA3C,EAAOgB,KAAKI,IAAK,uCACVJ,KAAKI,IAAI+H,KAAKnI,KAAM2B,IAG7BhC,EAAGF,UAAU2W,OAAS,SAAiBzU,GAErC,OADA3C,EAAOgB,KAAKI,IAAK,sCACVJ,KAAKI,IAAIiW,IAAIrW,KAAM2B,IAG5BhC,EAAGF,UAAU6W,OAAS,SAAiB3U,GAGrC,OAFA3C,EAAOgB,KAAKI,IAAK,sCACjBJ,KAAKI,IAAImW,SAASvW,KAAM2B,GACjB3B,KAAKI,IAAIkB,IAAItB,KAAM2B,IAG5BhC,EAAGF,UAAU+W,QAAU,SAAkB7U,GAGvC,OAFA3C,EAAOgB,KAAKI,IAAK,sCACjBJ,KAAKI,IAAImW,SAASvW,KAAM2B,GACjB3B,KAAKI,IAAIiM,KAAKrM,KAAM2B,IAG7BhC,EAAGF,UAAUgX,OAAS,WAGpB,OAFAzX,EAAOgB,KAAKI,IAAK,sCACjBJ,KAAKI,IAAIsW,SAAS1W,MACXA,KAAKI,IAAI4Q,IAAIhR,OAGtBL,EAAGF,UAAUkX,QAAU,WAGrB,OAFA3X,EAAOgB,KAAKI,IAAK,uCACjBJ,KAAKI,IAAIsW,SAAS1W,MACXA,KAAKI,IAAI6Q,KAAKjR,OAIvBL,EAAGF,UAAUmX,QAAU,WAGrB,OAFA5X,EAAOgB,KAAKI,IAAK,uCACjBJ,KAAKI,IAAIsW,SAAS1W,MACXA,KAAKI,IAAIyW,KAAK7W,OAGvBL,EAAGF,UAAUqX,QAAU,WAGrB,OAFA9X,EAAOgB,KAAKI,IAAK,uCACjBJ,KAAKI,IAAIsW,SAAS1W,MACXA,KAAKI,IAAIuU,KAAK3U,OAIvBL,EAAGF,UAAUsX,OAAS,WAGpB,OAFA/X,EAAOgB,KAAKI,IAAK,sCACjBJ,KAAKI,IAAIsW,SAAS1W,MACXA,KAAKI,IAAI8G,IAAIlH,OAGtBL,EAAGF,UAAUuX,OAAS,SAAiBrV,GAGrC,OAFA3C,EAAOgB,KAAKI,MAAQuB,EAAIvB,IAAK,qBAC7BJ,KAAKI,IAAIsW,SAAS1W,MACXA,KAAKI,IAAIiD,IAAIrD,KAAM2B,IAI5B,IAAI9D,EAAS,CACXoZ,KAAM,KACNC,KAAM,KACNC,KAAM,KACNC,OAAQ,MAIV,SAASC,EAAQC,EAAMlI,GAErBpP,KAAKsX,KAAOA,EACZtX,KAAKoP,EAAI,IAAIzP,EAAGyP,EAAG,IACnBpP,KAAK6P,EAAI7P,KAAKoP,EAAEnL,YAChBjE,KAAK2E,EAAI,IAAIhF,EAAG,GAAGuR,OAAOlR,KAAK6P,GAAG1H,KAAKnI,KAAKoP,GAE5CpP,KAAKuX,IAAMvX,KAAKwX,OAiDlB,SAASC,IACPJ,EAAOK,KACL1X,KACA,OACA,2EA+DJ,SAAS2X,IACPN,EAAOK,KACL1X,KACA,OACA,kEAIJ,SAAS4X,IACPP,EAAOK,KACL1X,KACA,OACA,yDAIJ,SAAS6X,IAEPR,EAAOK,KACL1X,KACA,QACA,uEA8CJ,SAASwV,EAAK1F,GACZ,GAAiB,kBAANA,EAAgB,CACzB,IAAI7R,EAAQ0B,EAAGmY,OAAOhI,GACtB9P,KAAK8P,EAAI7R,EAAMmR,EACfpP,KAAK/B,MAAQA,OAEbe,EAAO8Q,EAAEgF,IAAI,GAAI,kCACjB9U,KAAK8P,EAAIA,EACT9P,KAAK/B,MAAQ,KAkOjB,SAAS8Z,EAAMjI,GACb0F,EAAIkC,KAAK1X,KAAM8P,GAEf9P,KAAKwS,MAAQxS,KAAK8P,EAAE7L,YAChBjE,KAAKwS,MAAQ,KAAO,IACtBxS,KAAKwS,OAAS,GAAMxS,KAAKwS,MAAQ,IAGnCxS,KAAKiB,EAAI,IAAItB,EAAG,GAAGuR,OAAOlR,KAAKwS,OAC/BxS,KAAKuT,GAAKvT,KAAKgY,KAAKhY,KAAKiB,EAAE+P,OAC3BhR,KAAKiY,KAAOjY,KAAKiB,EAAEqT,OAAOtU,KAAK8P,GAE/B9P,KAAKkY,KAAOlY,KAAKiY,KAAK3W,IAAItB,KAAKiB,GAAGkR,MAAM,GAAGY,IAAI/S,KAAK8P,GACpD9P,KAAKkY,KAAOlY,KAAKkY,KAAK/E,KAAKnT,KAAKiB,GAChCjB,KAAKkY,KAAOlY,KAAKiB,EAAEoH,IAAIrI,KAAKkY,MA5a9Bb,EAAO5X,UAAU+X,KAAO,WACtB,IAAID,EAAM,IAAI5X,EAAG,MAEjB,OADA4X,EAAIrX,MAAQ,IAAI0B,MAAMJ,KAAKiB,KAAKzC,KAAK6P,EAAI,KAClC0H,GAGTF,EAAO5X,UAAU0Y,QAAU,SAAkBxW,GAG3C,IACIyW,EADAnX,EAAIU,EAGR,GACE3B,KAAKqY,MAAMpX,EAAGjB,KAAKuX,KACnBtW,EAAIjB,KAAKsY,MAAMrX,GACfA,EAAIA,EAAEiH,KAAKlI,KAAKuX,KAChBa,EAAOnX,EAAEgD,kBACFmU,EAAOpY,KAAK6P,GAErB,IAAI5N,EAAMmW,EAAOpY,KAAK6P,GAAK,EAAI5O,EAAE4T,KAAK7U,KAAKoP,GAgB3C,OAfY,IAARnN,GACFhB,EAAEf,MAAM,GAAK,EACbe,EAAEd,OAAS,GACF8B,EAAM,EACfhB,EAAEkH,KAAKnI,KAAKoP,QAEI1Q,IAAZuC,EAAE4B,MAEJ5B,EAAE4B,QAGF5B,EAAEsX,SAICtX,GAGToW,EAAO5X,UAAU4Y,MAAQ,SAAgBG,EAAOlU,GAC9CkU,EAAMvS,OAAOjG,KAAK6P,EAAG,EAAGvL,IAG1B+S,EAAO5X,UAAU6Y,MAAQ,SAAgB3W,GACvC,OAAOA,EAAI0K,KAAKrM,KAAK2E,IASvBvF,EAASqY,EAAMJ,GAEfI,EAAKhY,UAAU4Y,MAAQ,SAAgBG,EAAOC,GAK5C,IAHA,IAAI/G,EAAO,QAEPgH,EAASlX,KAAKC,IAAI+W,EAAMrY,OAAQ,GAC3BuB,EAAI,EAAGA,EAAIgX,EAAQhX,IAC1B+W,EAAOvY,MAAMwB,GAAK8W,EAAMtY,MAAMwB,GAIhC,GAFA+W,EAAOtY,OAASuY,EAEZF,EAAMrY,QAAU,EAGlB,OAFAqY,EAAMtY,MAAM,GAAK,OACjBsY,EAAMrY,OAAS,GAKjB,IAAIwY,EAAOH,EAAMtY,MAAM,GAGvB,IAFAuY,EAAOvY,MAAMuY,EAAOtY,UAAYwY,EAAOjH,EAElChQ,EAAI,GAAIA,EAAI8W,EAAMrY,OAAQuB,IAAK,CAClC,IAAIkX,EAAwB,EAAjBJ,EAAMtY,MAAMwB,GACvB8W,EAAMtY,MAAMwB,EAAI,KAAQkX,EAAOlH,IAAS,EAAMiH,IAAS,GACvDA,EAAOC,EAETD,KAAU,GACVH,EAAMtY,MAAMwB,EAAI,IAAMiX,EACT,IAATA,GAAcH,EAAMrY,OAAS,GAC/BqY,EAAMrY,QAAU,GAEhBqY,EAAMrY,QAAU,GAIpBsX,EAAKhY,UAAU6Y,MAAQ,SAAgB3W,GAErCA,EAAIzB,MAAMyB,EAAIxB,QAAU,EACxBwB,EAAIzB,MAAMyB,EAAIxB,OAAS,GAAK,EAC5BwB,EAAIxB,QAAU,EAId,IADA,IAAIsE,EAAK,EACA/C,EAAI,EAAGA,EAAIC,EAAIxB,OAAQuB,IAAK,CACnC,IAAIiB,EAAmB,EAAfhB,EAAIzB,MAAMwB,GAClB+C,GAAU,IAAJ9B,EACNhB,EAAIzB,MAAMwB,GAAU,SAAL+C,EACfA,EAAS,GAAJ9B,GAAa8B,EAAK,SAAa,GAUtC,OANkC,IAA9B9C,EAAIzB,MAAMyB,EAAIxB,OAAS,KACzBwB,EAAIxB,SAC8B,IAA9BwB,EAAIzB,MAAMyB,EAAIxB,OAAS,IACzBwB,EAAIxB,UAGDwB,GASTvC,EAASuY,EAAMN,GAQfjY,EAASwY,EAAMP,GASfjY,EAASyY,EAAQR,GAEjBQ,EAAOpY,UAAU6Y,MAAQ,SAAgB3W,GAGvC,IADA,IAAI+C,EAAQ,EACHhD,EAAI,EAAGA,EAAIC,EAAIxB,OAAQuB,IAAK,CACnC,IAAI4E,EAA0B,IAAL,EAAf3E,EAAIzB,MAAMwB,IAAiBgD,EACjCD,EAAU,SAAL6B,EACTA,KAAQ,GAER3E,EAAIzB,MAAMwB,GAAK+C,EACfC,EAAQ4B,EAKV,OAHc,IAAV5B,IACF/C,EAAIzB,MAAMyB,EAAIxB,UAAYuE,GAErB/C,GAIThC,EAAGmY,OAAS,SAAgBR,GAE1B,GAAIzZ,EAAOyZ,GAAO,OAAOzZ,EAAOyZ,GAEhC,IAAIrZ,EACJ,GAAa,SAATqZ,EACFrZ,EAAQ,IAAIwZ,OACP,GAAa,SAATH,EACTrZ,EAAQ,IAAI0Z,OACP,GAAa,SAATL,EACTrZ,EAAQ,IAAI2Z,MACP,IAAa,WAATN,EAGT,MAAM,IAAInY,MAAM,iBAAmBmY,GAFnCrZ,EAAQ,IAAI4Z,EAMd,OAFAha,EAAOyZ,GAAQrZ,EAERA,GAkBTuX,EAAI/V,UAAUiX,SAAW,SAAmBnS,GAC1CvF,EAAsB,IAAfuF,EAAEtE,SAAgB,iCACzBjB,EAAOuF,EAAEnE,IAAK,oCAGhBoV,EAAI/V,UAAU8W,SAAW,SAAmBhS,EAAGC,GAC7CxF,EAAqC,KAA7BuF,EAAEtE,SAAWuE,EAAEvE,UAAiB,iCACxCjB,EAAOuF,EAAEnE,KAAOmE,EAAEnE,MAAQoE,EAAEpE,IAC1B,oCAGJoV,EAAI/V,UAAUuY,KAAO,SAAezT,GAClC,OAAIvE,KAAK/B,MAAc+B,KAAK/B,MAAMka,QAAQ5T,GAAGqR,UAAU5V,MAChDuE,EAAE4O,KAAKnT,KAAK8P,GAAG8F,UAAU5V,OAGlCwV,EAAI/V,UAAUyH,IAAM,SAAc3C,GAChC,OAAIA,EAAEW,SACGX,EAAEf,QAGJxD,KAAK8P,EAAEzH,IAAI9D,GAAGqR,UAAU5V,OAGjCwV,EAAI/V,UAAU2I,IAAM,SAAc7D,EAAGC,GACnCxE,KAAKuW,SAAShS,EAAGC,GAEjB,IAAIsB,EAAMvB,EAAE6D,IAAI5D,GAIhB,OAHIsB,EAAI7D,IAAIjC,KAAK8P,IAAM,GACrBhK,EAAIqC,KAAKnI,KAAK8P,GAEThK,EAAI8P,UAAU5V,OAGvBwV,EAAI/V,UAAUyI,KAAO,SAAe3D,EAAGC,GACrCxE,KAAKuW,SAAShS,EAAGC,GAEjB,IAAIsB,EAAMvB,EAAE2D,KAAK1D,GAIjB,OAHIsB,EAAI7D,IAAIjC,KAAK8P,IAAM,GACrBhK,EAAIqC,KAAKnI,KAAK8P,GAEThK,GAGT0P,EAAI/V,UAAU4I,IAAM,SAAc9D,EAAGC,GACnCxE,KAAKuW,SAAShS,EAAGC,GAEjB,IAAIsB,EAAMvB,EAAE8D,IAAI7D,GAIhB,OAHIsB,EAAI4O,KAAK,GAAK,GAChB5O,EAAIoC,KAAKlI,KAAK8P,GAEThK,EAAI8P,UAAU5V,OAGvBwV,EAAI/V,UAAU0I,KAAO,SAAe5D,EAAGC,GACrCxE,KAAKuW,SAAShS,EAAGC,GAEjB,IAAIsB,EAAMvB,EAAE4D,KAAK3D,GAIjB,OAHIsB,EAAI4O,KAAK,GAAK,GAChB5O,EAAIoC,KAAKlI,KAAK8P,GAEThK,GAGT0P,EAAI/V,UAAU4W,IAAM,SAAc9R,EAAG5C,GAEnC,OADA3B,KAAK0W,SAASnS,GACPvE,KAAKgY,KAAKzT,EAAEuN,MAAMnQ,KAG3B6T,EAAI/V,UAAU4M,KAAO,SAAe9H,EAAGC,GAErC,OADAxE,KAAKuW,SAAShS,EAAGC,GACVxE,KAAKgY,KAAKzT,EAAE8H,KAAK7H,KAG1BgR,EAAI/V,UAAU6B,IAAM,SAAciD,EAAGC,GAEnC,OADAxE,KAAKuW,SAAShS,EAAGC,GACVxE,KAAKgY,KAAKzT,EAAEjD,IAAIkD,KAGzBgR,EAAI/V,UAAUwR,KAAO,SAAe1M,GAClC,OAAOvE,KAAKqM,KAAK9H,EAAGA,EAAEf,UAGxBgS,EAAI/V,UAAUuR,IAAM,SAAczM,GAChC,OAAOvE,KAAKsB,IAAIiD,EAAGA,IAGrBiR,EAAI/V,UAAUoX,KAAO,SAAetS,GAClC,GAAIA,EAAEW,SAAU,OAAOX,EAAEf,QAEzB,IAAIqV,EAAO7Y,KAAK8P,EAAE9J,MAAM,GAIxB,GAHAhH,EAAO6Z,EAAO,IAAM,GAGP,IAATA,EAAY,CACd,IAAIxV,EAAMrD,KAAK8P,EAAE1H,IAAI,IAAIzI,EAAG,IAAIsG,OAAO,GACvC,OAAOjG,KAAKqD,IAAIkB,EAAGlB,GAMrB,IAAI0C,EAAI/F,KAAK8P,EAAEuC,KAAK,GAChBvD,EAAI,EACR,OAAQ/I,EAAEb,UAA2B,IAAfa,EAAEC,MAAM,GAC5B8I,IACA/I,EAAEE,OAAO,GAEXjH,GAAQ+G,EAAEb,UAEV,IAAI4T,EAAM,IAAInZ,EAAG,GAAG8V,MAAMzV,MACtB+Y,EAAOD,EAAI/B,SAIXiC,EAAOhZ,KAAK8P,EAAEuC,KAAK,GAAGpM,OAAO,GAC7BgT,EAAIjZ,KAAK8P,EAAE7L,YACfgV,EAAI,IAAItZ,EAAG,EAAIsZ,EAAIA,GAAGxD,MAAMzV,MAE5B,MAAuC,IAAhCA,KAAKqD,IAAI4V,EAAGD,GAAM/W,IAAI8W,GAC3BE,EAAEhD,QAAQ8C,GAGZ,IAAIlY,EAAIb,KAAKqD,IAAI4V,EAAGlT,GAChB9E,EAAIjB,KAAKqD,IAAIkB,EAAGwB,EAAEqM,KAAK,GAAGnM,OAAO,IACjCG,EAAIpG,KAAKqD,IAAIkB,EAAGwB,GAChB+J,EAAIhB,EACR,MAAsB,IAAf1I,EAAEnE,IAAI6W,GAAY,CAEvB,IADA,IAAIvB,EAAMnR,EACD1E,EAAI,EAAoB,IAAjB6V,EAAItV,IAAI6W,GAAYpX,IAClC6V,EAAMA,EAAId,SAEZzX,EAAO0C,EAAIoO,GACX,IAAItL,EAAIxE,KAAKqD,IAAIxC,EAAG,IAAIlB,EAAG,GAAGuR,OAAOpB,EAAIpO,EAAI,IAE7CT,EAAIA,EAAEqV,OAAO9R,GACb3D,EAAI2D,EAAEiS,SACNrQ,EAAIA,EAAEkQ,OAAOzV,GACbiP,EAAIpO,EAGN,OAAOT,GAGTuU,EAAI/V,UAAUkV,KAAO,SAAepQ,GAClC,IAAI2U,EAAM3U,EAAE+P,OAAOtU,KAAK8P,GACxB,OAAqB,IAAjBoJ,EAAIjZ,UACNiZ,EAAIjZ,SAAW,EACRD,KAAKgY,KAAKkB,GAAKnC,UAEf/W,KAAKgY,KAAKkB,IAIrB1D,EAAI/V,UAAU4D,IAAM,SAAckB,EAAG5C,GACnC,GAAIA,EAAIuD,SAAU,OAAO,IAAIvF,EAAG,GAAG8V,MAAMzV,MACzC,GAAoB,IAAhB2B,EAAI+S,KAAK,GAAU,OAAOnQ,EAAEf,QAEhC,IAAI2V,EAAa,EACbC,EAAM,IAAIxX,MAAM,GAAKuX,GACzBC,EAAI,GAAK,IAAIzZ,EAAG,GAAG8V,MAAMzV,MACzBoZ,EAAI,GAAK7U,EACT,IAAK,IAAI7C,EAAI,EAAGA,EAAI0X,EAAIjZ,OAAQuB,IAC9B0X,EAAI1X,GAAK1B,KAAKsB,IAAI8X,EAAI1X,EAAI,GAAI6C,GAGhC,IAAIuB,EAAMsT,EAAI,GACVC,EAAU,EACVC,EAAa,EACblY,EAAQO,EAAIsC,YAAc,GAK9B,IAJc,IAAV7C,IACFA,EAAQ,IAGLM,EAAIC,EAAIxB,OAAS,EAAGuB,GAAK,EAAGA,IAAK,CAEpC,IADA,IAAIwB,EAAOvB,EAAIzB,MAAMwB,GACZgB,EAAItB,EAAQ,EAAGsB,GAAK,EAAGA,IAAK,CACnC,IAAIwB,EAAOhB,GAAQR,EAAK,EACpBoD,IAAQsT,EAAI,KACdtT,EAAM9F,KAAKgR,IAAIlL,IAGL,IAAR5B,GAAyB,IAAZmV,GAKjBA,IAAY,EACZA,GAAWnV,EACXoV,KACIA,IAAeH,GAAqB,IAANzX,GAAiB,IAANgB,KAE7CoD,EAAM9F,KAAKsB,IAAIwE,EAAKsT,EAAIC,IACxBC,EAAa,EACbD,EAAU,IAXRC,EAAa,EAajBlY,EAAQ,GAGV,OAAO0E,GAGT0P,EAAI/V,UAAUkW,UAAY,SAAoBhU,GAC5C,IAAIV,EAAIU,EAAIwR,KAAKnT,KAAK8P,GAEtB,OAAO7O,IAAMU,EAAMV,EAAEuC,QAAUvC,GAGjCuU,EAAI/V,UAAUqW,YAAc,SAAsBnU,GAChD,IAAImE,EAAMnE,EAAI6B,QAEd,OADAsC,EAAI1F,IAAM,KACH0F,GAOTnG,EAAG4Z,KAAO,SAAe5X,GACvB,OAAO,IAAIoW,EAAKpW,IAmBlBvC,EAAS2Y,EAAMvC,GAEfuC,EAAKtY,UAAUkW,UAAY,SAAoBhU,GAC7C,OAAO3B,KAAKgY,KAAKrW,EAAImQ,MAAM9R,KAAKwS,SAGlCuF,EAAKtY,UAAUqW,YAAc,SAAsBnU,GACjD,IAAIV,EAAIjB,KAAKgY,KAAKrW,EAAIL,IAAItB,KAAKiY,OAE/B,OADAhX,EAAEb,IAAM,KACDa,GAGT8W,EAAKtY,UAAU4M,KAAO,SAAe9H,EAAGC,GACtC,GAAID,EAAEW,UAAYV,EAAEU,SAGlB,OAFAX,EAAErE,MAAM,GAAK,EACbqE,EAAEpE,OAAS,EACJoE,EAGT,IAAI6B,EAAI7B,EAAE8H,KAAK7H,GACX3D,EAAIuF,EAAE8L,MAAMlS,KAAKwS,OAAOlR,IAAItB,KAAKkY,MAAMjG,OAAOjS,KAAKwS,OAAOlR,IAAItB,KAAK8P,GACnE0J,EAAIpT,EAAE+B,KAAKtH,GAAGoF,OAAOjG,KAAKwS,OAC1B1M,EAAM0T,EAQV,OANIA,EAAEvX,IAAIjC,KAAK8P,IAAM,EACnBhK,EAAM0T,EAAErR,KAAKnI,KAAK8P,GACT0J,EAAE9E,KAAK,GAAK,IACrB5O,EAAM0T,EAAEtR,KAAKlI,KAAK8P,IAGbhK,EAAI8P,UAAU5V,OAGvB+X,EAAKtY,UAAU6B,IAAM,SAAciD,EAAGC,GACpC,GAAID,EAAEW,UAAYV,EAAEU,SAAU,OAAO,IAAIvF,EAAG,GAAGiW,UAAU5V,MAEzD,IAAIoG,EAAI7B,EAAEjD,IAAIkD,GACV3D,EAAIuF,EAAE8L,MAAMlS,KAAKwS,OAAOlR,IAAItB,KAAKkY,MAAMjG,OAAOjS,KAAKwS,OAAOlR,IAAItB,KAAK8P,GACnE0J,EAAIpT,EAAE+B,KAAKtH,GAAGoF,OAAOjG,KAAKwS,OAC1B1M,EAAM0T,EAOV,OANIA,EAAEvX,IAAIjC,KAAK8P,IAAM,EACnBhK,EAAM0T,EAAErR,KAAKnI,KAAK8P,GACT0J,EAAE9E,KAAK,GAAK,IACrB5O,EAAM0T,EAAEtR,KAAKlI,KAAK8P,IAGbhK,EAAI8P,UAAU5V,OAGvB+X,EAAKtY,UAAUkV,KAAO,SAAepQ,GAEnC,IAAIuB,EAAM9F,KAAKgY,KAAKzT,EAAE+P,OAAOtU,KAAK8P,GAAGxO,IAAItB,KAAKuT,KAC9C,OAAOzN,EAAI8P,UAAU5V,QAn3GzB,CAq3GoCM,EAAQN,Q,8DCr3G5C,YAEA,SAAS42B,EAAQ9a,EAAKiQ,GACpB,IAAIiB,EAAQhtB,KAERgjD,EAAoBhjD,KAAKosB,gBAAkBpsB,KAAKosB,eAAea,UAC/Dg2B,EAAoBjjD,KAAKotB,gBAAkBptB,KAAKotB,eAAeH,UAEnE,OAAI+1B,GAAqBC,GACnBl3B,EACFA,EAAGjQ,GACMA,IACJ9b,KAAKotB,eAEEptB,KAAKotB,eAAeiJ,eAC9Br2B,KAAKotB,eAAeiJ,cAAe,EACnC/W,EAAQwT,SAASowB,EAAaljD,KAAM8b,IAHpCwD,EAAQwT,SAASowB,EAAaljD,KAAM8b,IAOjC9b,OAKLA,KAAKosB,iBACPpsB,KAAKosB,eAAea,WAAY,GAI9BjtB,KAAKotB,iBACPptB,KAAKotB,eAAeH,WAAY,GAGlCjtB,KAAKutB,SAASzR,GAAO,MAAM,SAAUA,IAC9BiQ,GAAMjQ,EACJkR,EAAMI,eAECJ,EAAMI,eAAeiJ,aAI/B/W,EAAQwT,SAASqwB,EAAan2B,IAH9BA,EAAMI,eAAeiJ,cAAe,EACpC/W,EAAQwT,SAASswB,EAAqBp2B,EAAOlR,IAH7CwD,EAAQwT,SAASswB,EAAqBp2B,EAAOlR,GAOtCiQ,GACTzM,EAAQwT,SAASqwB,EAAan2B,GAC9BjB,EAAGjQ,IAEHwD,EAAQwT,SAASqwB,EAAan2B,MAI3BhtB,MAGT,SAASojD,EAAoB/+C,EAAMyX,GACjConC,EAAY7+C,EAAMyX,GAClBqnC,EAAY9+C,GAGd,SAAS8+C,EAAY9+C,GACfA,EAAK+oB,iBAAmB/oB,EAAK+oB,eAAekJ,WAC5CjyB,EAAK+nB,iBAAmB/nB,EAAK+nB,eAAekK,WAChDjyB,EAAK4nB,KAAK,SAGZ,SAAS+M,IACHh5B,KAAKosB,iBACPpsB,KAAKosB,eAAea,WAAY,EAChCjtB,KAAKosB,eAAeC,SAAU,EAC9BrsB,KAAKosB,eAAemJ,OAAQ,EAC5Bv1B,KAAKosB,eAAe4L,YAAa,GAG/Bh4B,KAAKotB,iBACPptB,KAAKotB,eAAeH,WAAY,EAChCjtB,KAAKotB,eAAemI,OAAQ,EAC5Bv1B,KAAKotB,eAAekI,QAAS,EAC7Bt1B,KAAKotB,eAAegI,aAAc,EAClCp1B,KAAKotB,eAAegJ,aAAc,EAClCp2B,KAAKotB,eAAeoI,UAAW,EAC/Bx1B,KAAKotB,eAAeiJ,cAAe,GAIvC,SAAS6sB,EAAY7+C,EAAMyX,GACzBzX,EAAK4nB,KAAK,QAASnQ,GAGrB,SAASmZ,EAAe9H,EAAQrR,GAM9B,IAAIic,EAAS5K,EAAOf,eAChBozB,EAASryB,EAAOC,eAChB2K,GAAUA,EAAOxB,aAAeipB,GAAUA,EAAOjpB,YAAapJ,EAAOyJ,QAAQ9a,GAAUqR,EAAOlB,KAAK,QAASnQ,GAGlHxb,EAAO1B,QAAU,CACfg4B,QAASA,EACToC,UAAWA,EACX/D,eAAgBA,K,2DCvGlB,cAqCA,SAAStB,EAAcnL,GACrB,IAAIwE,EAAQhtB,KAEZA,KAAK4Y,KAAO,KACZ5Y,KAAK4zB,MAAQ,KAEb5zB,KAAK6zB,OAAS,WACZC,EAAe9G,EAAOxE,IAQ1B,IAAIiD,EA3BJnrB,EAAO1B,QAAUm1B,EA8BjBA,EAASC,cAAgBA,EAGzB,IAAIC,EAAe,CACjBC,UAAW,EAAQ,SAMjBC,EAAS,EAAQ,QAIjBj2B,EAAS,EAAQ,QAAUA,OAE3Bk2B,EAAgB5Y,EAAO+H,YAAc,aAEzC,SAAS8Q,EAAoBhH,GAC3B,OAAOnvB,EAAO0gB,KAAKyO,GAGrB,SAASiH,EAAcC,GACrB,OAAOr2B,EAAOO,SAAS81B,IAAQA,aAAeH,EAGhD,IAkIII,EAlIAC,EAAc,EAAQ,QAEtBC,EAAW,EAAQ,QACnBnM,EAAmBmM,EAASnM,iBAE5B6C,EAAiB,EAAQ,QAAalD,MACtCyM,EAAuBvJ,EAAeuJ,qBACtCtJ,EAA6BD,EAAeC,2BAC5CC,EAAwBF,EAAeE,sBACvCsJ,EAAyBxJ,EAAewJ,uBACxCC,EAAuBzJ,EAAeyJ,qBACtCC,EAAyB1J,EAAe0J,uBACxCC,EAA6B3J,EAAe2J,2BAC5CC,EAAuB5J,EAAe4J,qBAEtCC,EAAiBR,EAAYQ,eAIjC,SAASC,KAET,SAASlB,EAAcha,EAASmT,EAAQ/E,GACtCqD,EAASA,GAAU,EAAQ,QAC3BzR,EAAUA,GAAW,GAMG,mBAAboO,IAAwBA,EAAW+E,aAAkB1B,GAGhEzrB,KAAK2oB,aAAe3O,EAAQ2O,WACxBP,IAAUpoB,KAAK2oB,WAAa3oB,KAAK2oB,cAAgB3O,EAAQmb,oBAI7Dn1B,KAAKsoB,cAAgBC,EAAiBvoB,KAAMga,EAAS,wBAAyBoO,GAE9EpoB,KAAKo1B,aAAc,EAEnBp1B,KAAKq1B,WAAY,EAEjBr1B,KAAKs1B,QAAS,EAEdt1B,KAAKu1B,OAAQ,EAEbv1B,KAAKw1B,UAAW,EAEhBx1B,KAAKitB,WAAY,EAIjB,IAAIwI,GAAqC,IAA1Bzb,EAAQ0b,cACvB11B,KAAK01B,eAAiBD,EAItBz1B,KAAK21B,gBAAkB3b,EAAQ2b,iBAAmB,OAIlD31B,KAAKG,OAAS,EAEdH,KAAK41B,SAAU,EAEf51B,KAAK61B,OAAS,EAKd71B,KAAK2sB,MAAO,EAIZ3sB,KAAK81B,kBAAmB,EAExB91B,KAAK+1B,QAAU,SAAUpK,GACvBoK,EAAQ5I,EAAQxB,IAIlB3rB,KAAKgsB,QAAU,KAEfhsB,KAAKg2B,SAAW,EAChBh2B,KAAKi2B,gBAAkB,KACvBj2B,KAAKk2B,oBAAsB,KAG3Bl2B,KAAKm2B,UAAY,EAGjBn2B,KAAKo2B,aAAc,EAEnBp2B,KAAKq2B,cAAe,EAEpBr2B,KAAKs2B,WAAkC,IAAtBtc,EAAQsc,UAEzBt2B,KAAKu2B,cAAgBvc,EAAQuc,YAE7Bv2B,KAAKw2B,qBAAuB,EAG5Bx2B,KAAKy2B,mBAAqB,IAAI9C,EAAc3zB,MA4C9C,SAAS+zB,EAAS/Z,GAChByR,EAASA,GAAU,EAAQ,QAS3B,IAAIrD,EAAWpoB,gBAAgByrB,EAC/B,IAAKrD,IAAaoM,EAAgB9c,KAAKqc,EAAU/zB,MAAO,OAAO,IAAI+zB,EAAS/Z,GAC5Eha,KAAKotB,eAAiB,IAAI4G,EAAcha,EAASha,KAAMooB,GAEvDpoB,KAAK0zB,UAAW,EAEZ1Z,IAC2B,oBAAlBA,EAAQkD,QAAsBld,KAAKstB,OAAStT,EAAQkD,OACjC,oBAAnBlD,EAAQ0c,SAAuB12B,KAAK22B,QAAU3c,EAAQ0c,QAClC,oBAApB1c,EAAQ4c,UAAwB52B,KAAKutB,SAAWvT,EAAQ4c,SACtC,oBAAlB5c,EAAQe,QAAsB/a,KAAKkuB,OAASlU,EAAQe,QAGjEoZ,EAAOzc,KAAK1X,MAQd,SAAS62B,EAAc1J,EAAQpB,GAC7B,IAAIJ,EAAK,IAAIoJ,EAEbE,EAAe9H,EAAQxB,GACvBrM,EAAQwT,SAAS/G,EAAIJ,GAMvB,SAASmL,EAAW3J,EAAQ3E,EAAO6E,EAAOtB,GACxC,IAAIJ,EAQJ,OANc,OAAV0B,EACF1B,EAAK,IAAImJ,EACiB,kBAAVzH,GAAuB7E,EAAMG,aAC7CgD,EAAK,IAAIgJ,EAAqB,QAAS,CAAC,SAAU,UAAWtH,KAG3D1B,IACFsJ,EAAe9H,EAAQxB,GACvBrM,EAAQwT,SAAS/G,EAAIJ,IACd,GA6DX,SAASoL,EAAYvO,EAAO6E,EAAOjE,GAKjC,OAJKZ,EAAMG,aAAsC,IAAxBH,EAAMkN,eAA4C,kBAAVrI,IAC/DA,EAAQnvB,EAAO0gB,KAAKyO,EAAOjE,IAGtBiE,EAeT,SAAS2J,EAAc7J,EAAQ3E,EAAOyO,EAAO5J,EAAOjE,EAAU2C,GAC5D,IAAKkL,EAAO,CACV,IAAIC,EAAWH,EAAYvO,EAAO6E,EAAOjE,GAErCiE,IAAU6J,IACZD,GAAQ,EACR7N,EAAW,SACXiE,EAAQ6J,GAIZ,IAAI31B,EAAMinB,EAAMG,WAAa,EAAI0E,EAAMltB,OACvCqoB,EAAMroB,QAAUoB,EAChB,IAAI+D,EAAMkjB,EAAMroB,OAASqoB,EAAMF,cAI/B,GAFKhjB,IAAKkjB,EAAM6M,WAAY,GAExB7M,EAAMoN,SAAWpN,EAAMqN,OAAQ,CACjC,IAAI5a,EAAOuN,EAAM0N,oBACjB1N,EAAM0N,oBAAsB,CAC1B7I,MAAOA,EACPjE,SAAUA,EACV6N,MAAOA,EACP5Z,SAAU0O,EACVnT,KAAM,MAGJqC,EACFA,EAAKrC,KAAO4P,EAAM0N,oBAElB1N,EAAMyN,gBAAkBzN,EAAM0N,oBAGhC1N,EAAMgO,sBAAwB,OAE9BW,EAAQhK,EAAQ3E,GAAO,EAAOjnB,EAAK8rB,EAAOjE,EAAU2C,GAGtD,OAAOzmB,EAGT,SAAS6xB,EAAQhK,EAAQ3E,EAAOkO,EAAQn1B,EAAK8rB,EAAOjE,EAAU2C,GAC5DvD,EAAMwN,SAAWz0B,EACjBinB,EAAMwD,QAAUD,EAChBvD,EAAMoN,SAAU,EAChBpN,EAAMmE,MAAO,EACTnE,EAAMyE,UAAWzE,EAAMuN,QAAQ,IAAIlB,EAAqB,UAAmB6B,EAAQvJ,EAAOwJ,QAAQtJ,EAAO7E,EAAMuN,SAAc5I,EAAOG,OAAOD,EAAOjE,EAAUZ,EAAMuN,SACtKvN,EAAMmE,MAAO,EAGf,SAASyK,EAAajK,EAAQ3E,EAAOmE,EAAMhB,EAAII,KAC3CvD,EAAM2N,UAEJxJ,GAGFrN,EAAQwT,SAAS/G,EAAIJ,GAGrBrM,EAAQwT,SAASuE,EAAalK,EAAQ3E,GACtC2E,EAAOC,eAAeiJ,cAAe,EACrCpB,EAAe9H,EAAQxB,KAIvBI,EAAGJ,GACHwB,EAAOC,eAAeiJ,cAAe,EACrCpB,EAAe9H,EAAQxB,GAGvB0L,EAAYlK,EAAQ3E,IAIxB,SAAS8O,EAAmB9O,GAC1BA,EAAMoN,SAAU,EAChBpN,EAAMwD,QAAU,KAChBxD,EAAMroB,QAAUqoB,EAAMwN,SACtBxN,EAAMwN,SAAW,EAGnB,SAASD,EAAQ5I,EAAQxB,GACvB,IAAInD,EAAQ2E,EAAOC,eACfT,EAAOnE,EAAMmE,KACbZ,EAAKvD,EAAMwD,QACf,GAAkB,oBAAPD,EAAmB,MAAM,IAAIT,EAExC,GADAgM,EAAmB9O,GACfmD,EAAIyL,EAAajK,EAAQ3E,EAAOmE,EAAMhB,EAAII,OAAS,CAErD,IAAIyJ,EAAW+B,EAAW/O,IAAU2E,EAAOF,UAEtCuI,GAAahN,EAAMqN,QAAWrN,EAAMsN,mBAAoBtN,EAAMyN,iBACjEuB,EAAYrK,EAAQ3E,GAGlBmE,EACFrN,EAAQwT,SAAS2E,EAAYtK,EAAQ3E,EAAOgN,EAAUzJ,GAEtD0L,EAAWtK,EAAQ3E,EAAOgN,EAAUzJ,IAK1C,SAAS0L,EAAWtK,EAAQ3E,EAAOgN,EAAUzJ,GACtCyJ,GAAUkC,EAAavK,EAAQ3E,GACpCA,EAAM2N,YACNpK,IACAsL,EAAYlK,EAAQ3E,GAMtB,SAASkP,EAAavK,EAAQ3E,GACP,IAAjBA,EAAMroB,QAAgBqoB,EAAM6M,YAC9B7M,EAAM6M,WAAY,EAClBlI,EAAOlB,KAAK,UAKhB,SAASuL,EAAYrK,EAAQ3E,GAC3BA,EAAMsN,kBAAmB,EACzB,IAAIlC,EAAQpL,EAAMyN,gBAElB,GAAI9I,EAAOwJ,SAAW/C,GAASA,EAAMhb,KAAM,CAEzC,IAAIxK,EAAIoa,EAAMgO,qBACVrc,EAAS,IAAIvY,MAAMwM,GACnBupB,EAASnP,EAAMiO,mBACnBkB,EAAO/D,MAAQA,EACf,IAAI9Y,EAAQ,EACR8c,GAAa,EAEjB,MAAOhE,EACLzZ,EAAOW,GAAS8Y,EACXA,EAAMqD,QAAOW,GAAa,GAC/BhE,EAAQA,EAAMhb,KACdkC,GAAS,EAGXX,EAAOyd,WAAaA,EACpBT,EAAQhK,EAAQ3E,GAAO,EAAMA,EAAMroB,OAAQga,EAAQ,GAAIwd,EAAO9D,QAG9DrL,EAAM2N,YACN3N,EAAM0N,oBAAsB,KAExByB,EAAO/e,MACT4P,EAAMiO,mBAAqBkB,EAAO/e,KAClC+e,EAAO/e,KAAO,MAEd4P,EAAMiO,mBAAqB,IAAI9C,EAAcnL,GAG/CA,EAAMgO,qBAAuB,MACxB,CAEL,MAAO5C,EAAO,CACZ,IAAIvG,EAAQuG,EAAMvG,MACdjE,EAAWwK,EAAMxK,SACjB2C,EAAK6H,EAAMvW,SACX9b,EAAMinB,EAAMG,WAAa,EAAI0E,EAAMltB,OAQvC,GAPAg3B,EAAQhK,EAAQ3E,GAAO,EAAOjnB,EAAK8rB,EAAOjE,EAAU2C,GACpD6H,EAAQA,EAAMhb,KACd4P,EAAMgO,uBAKFhO,EAAMoN,QACR,MAIU,OAAVhC,IAAgBpL,EAAM0N,oBAAsB,MAGlD1N,EAAMyN,gBAAkBrC,EACxBpL,EAAMsN,kBAAmB,EA2C3B,SAASyB,EAAW/O,GAClB,OAAOA,EAAM8M,QAA2B,IAAjB9M,EAAMroB,QAA0C,OAA1BqoB,EAAMyN,kBAA6BzN,EAAMgN,WAAahN,EAAMoN,QAG3G,SAASiC,EAAU1K,EAAQ3E,GACzB2E,EAAOe,QAAO,SAAUpS,GACtB0M,EAAM2N,YAEFra,GACFmZ,EAAe9H,EAAQrR,GAGzB0M,EAAM4N,aAAc,EACpBjJ,EAAOlB,KAAK,aACZoL,EAAYlK,EAAQ3E,MAIxB,SAASuE,EAAUI,EAAQ3E,GACpBA,EAAM4N,aAAgB5N,EAAM4M,cACF,oBAAlBjI,EAAOe,QAA0B1F,EAAMyE,WAKhDzE,EAAM4N,aAAc,EACpBjJ,EAAOlB,KAAK,eALZzD,EAAM2N,YACN3N,EAAM4M,aAAc,EACpB9V,EAAQwT,SAAS+E,EAAW1K,EAAQ3E,KAQ1C,SAAS6O,EAAYlK,EAAQ3E,GAC3B,IAAIsP,EAAOP,EAAW/O,GAEtB,GAAIsP,IACF/K,EAAUI,EAAQ3E,GAEM,IAApBA,EAAM2N,YACR3N,EAAMgN,UAAW,EACjBrI,EAAOlB,KAAK,UAERzD,EAAM+N,cAAa,CAGrB,IAAIwB,EAAS5K,EAAOf,iBAEf2L,GAAUA,EAAOxB,aAAewB,EAAOC,aAC1C7K,EAAOyJ,UAMf,OAAOkB,EAGT,SAASG,EAAY9K,EAAQ3E,EAAOuD,GAClCvD,EAAM8M,QAAS,EACf+B,EAAYlK,EAAQ3E,GAEhBuD,IACEvD,EAAMgN,SAAUlW,EAAQwT,SAAS/G,GAASoB,EAAO+K,KAAK,SAAUnM,IAGtEvD,EAAM+M,OAAQ,EACdpI,EAAOuG,UAAW,EAGpB,SAASI,EAAeqE,EAAS3P,EAAO1M,GACtC,IAAI8X,EAAQuE,EAAQvE,MACpBuE,EAAQvE,MAAQ,KAEhB,MAAOA,EAAO,CACZ,IAAI7H,EAAK6H,EAAMvW,SACfmL,EAAM2N,YACNpK,EAAGjQ,GACH8X,EAAQA,EAAMhb,KAIhB4P,EAAMiO,mBAAmB7d,KAAOuf,EAtjBlC,EAAQ,OAAR,CAAoBpE,EAAUI,GAyF9BH,EAAcv0B,UAAU24B,UAAY,WAClC,IAAI/e,EAAUrZ,KAAKi2B,gBACf3xB,EAAM,GAEV,MAAO+U,EACL/U,EAAIqgB,KAAKtL,GACTA,EAAUA,EAAQT,KAGpB,OAAOtU,GAGT,WACE,IACEqX,OAAO0T,eAAe2E,EAAcv0B,UAAW,SAAU,CACvDsjB,IAAKkR,EAAaC,WAAU,WAC1B,OAAOl0B,KAAKo4B,cACX,6EAAmF,aAExF,MAAO7nB,KAPX,GAcsB,oBAAX8nB,QAAyBA,OAAOC,aAAiE,oBAA3CC,SAAS94B,UAAU44B,OAAOC,cACzF9D,EAAkB+D,SAAS94B,UAAU44B,OAAOC,aAC5C3c,OAAO0T,eAAe0E,EAAUsE,OAAOC,YAAa,CAClD1S,MAAO,SAAe4S,GACpB,QAAIhE,EAAgB9c,KAAK1X,KAAMw4B,IAC3Bx4B,OAAS+zB,IACNyE,GAAUA,EAAOpL,0BAA0B4G,OAItDQ,EAAkB,SAAyBgE,GACzC,OAAOA,aAAkBx4B,MA+B7B+zB,EAASt0B,UAAUg5B,KAAO,WACxBxD,EAAej1B,KAAM,IAAI40B,IA+B3Bb,EAASt0B,UAAUyd,MAAQ,SAAUmQ,EAAOjE,EAAU2C,GACpD,IAAIvD,EAAQxoB,KAAKotB,eACb9nB,GAAM,EAEN2xB,GAASzO,EAAMG,YAAc2L,EAAcjH,GAiB/C,OAfI4J,IAAU/4B,EAAOO,SAAS4uB,KAC5BA,EAAQgH,EAAoBhH,IAGN,oBAAbjE,IACT2C,EAAK3C,EACLA,EAAW,MAGT6N,EAAO7N,EAAW,SAAmBA,IAAUA,EAAWZ,EAAMmN,iBAClD,oBAAP5J,IAAmBA,EAAKmJ,GAC/B1M,EAAM8M,OAAQuB,EAAc72B,KAAM+rB,IAAakL,GAASH,EAAW92B,KAAMwoB,EAAO6E,EAAOtB,MACzFvD,EAAM2N,YACN7wB,EAAM0xB,EAAch3B,KAAMwoB,EAAOyO,EAAO5J,EAAOjE,EAAU2C,IAEpDzmB,GAGTyuB,EAASt0B,UAAUi5B,KAAO,WACxB14B,KAAKotB,eAAeyI,UAGtB9B,EAASt0B,UAAUk5B,OAAS,WAC1B,IAAInQ,EAAQxoB,KAAKotB,eAEb5E,EAAMqN,SACRrN,EAAMqN,SACDrN,EAAMoN,SAAYpN,EAAMqN,QAAWrN,EAAMsN,mBAAoBtN,EAAMyN,iBAAiBuB,EAAYx3B,KAAMwoB,KAI/GuL,EAASt0B,UAAUm5B,mBAAqB,SAA4BxP,GAGlE,GADwB,kBAAbA,IAAuBA,EAAWA,EAASyP,iBAChD,CAAC,MAAO,OAAQ,QAAS,QAAS,SAAU,SAAU,OAAQ,QAAS,UAAW,WAAY,OAAOC,SAAS1P,EAAW,IAAIyP,gBAAkB,GAAI,MAAM,IAAI7D,EAAqB5L,GAExL,OADAppB,KAAKotB,eAAeuI,gBAAkBvM,EAC/BppB,MAGT2b,OAAO0T,eAAe0E,EAASt0B,UAAW,iBAAkB,CAI1D8vB,YAAY,EACZxM,IAAK,WACH,OAAO/iB,KAAKotB,gBAAkBptB,KAAKotB,eAAegL,eAYtDzc,OAAO0T,eAAe0E,EAASt0B,UAAW,wBAAyB,CAIjE8vB,YAAY,EACZxM,IAAK,WACH,OAAO/iB,KAAKotB,eAAe9E,iBA4L/ByL,EAASt0B,UAAU6tB,OAAS,SAAUD,EAAOjE,EAAU2C,GACrDA,EAAG,IAAIV,EAA2B,cAGpC0I,EAASt0B,UAAUk3B,QAAU,KAE7B5C,EAASt0B,UAAU4B,IAAM,SAAUgsB,EAAOjE,EAAU2C,GAClD,IAAIvD,EAAQxoB,KAAKotB,eAoBjB,MAlBqB,oBAAVC,GACTtB,EAAKsB,EACLA,EAAQ,KACRjE,EAAW,MACkB,oBAAbA,IAChB2C,EAAK3C,EACLA,EAAW,MAGC,OAAViE,QAA4B3uB,IAAV2uB,GAAqBrtB,KAAKkd,MAAMmQ,EAAOjE,GAEzDZ,EAAMqN,SACRrN,EAAMqN,OAAS,EACf71B,KAAK24B,UAIFnQ,EAAM8M,QAAQ2C,EAAYj4B,KAAMwoB,EAAOuD,GACrC/rB,MAGT2b,OAAO0T,eAAe0E,EAASt0B,UAAW,iBAAkB,CAI1D8vB,YAAY,EACZxM,IAAK,WACH,OAAO/iB,KAAKotB,eAAejtB,UAuF/Bwb,OAAO0T,eAAe0E,EAASt0B,UAAW,YAAa,CAIrD8vB,YAAY,EACZxM,IAAK,WACH,YAA4BrkB,IAAxBsB,KAAKotB,gBAIFptB,KAAKotB,eAAeH,WAE7B9J,IAAK,SAAayC,GAGX5lB,KAAKotB,iBAMVptB,KAAKotB,eAAeH,UAAYrH,MAGpCmO,EAASt0B,UAAUm3B,QAAUnC,EAAYmC,QACzC7C,EAASt0B,UAAUs5B,WAAatE,EAAYuE,UAE5CjF,EAASt0B,UAAU8tB,SAAW,SAAUzR,EAAKiQ,GAC3CA,EAAGjQ,M,uDCtrBL,IAAIunC,EAAW,wHACXC,EAAa,8CACbC,EAAY,iFACZC,EAAM,EAAQ,QACdrmB,EAAU,EAAQ,QAClBj/B,EAAS,EAAQ,QAAeA,OACpCoC,EAAO1B,QAAU,SAAU6kD,EAAMplB,GAC/B,IAEIqlB,EAFA/8B,EAAM88B,EAAKrhD,WACXuhD,EAAQh9B,EAAIg9B,MAAMN,GAEtB,GAAKM,EAGE,CACL,IAAI5H,EAAQ,MAAQ4H,EAAM,GACtBh2B,EAAKzvB,EAAO0gB,KAAK+kC,EAAM,GAAI,OAC3B3f,EAAa9lC,EAAO0gB,KAAK+kC,EAAM,GAAGthD,QAAQ,UAAW,IAAK,UAC1DuhD,EAAYJ,EAAInlB,EAAU1Q,EAAGtG,MAAM,EAAG,GAAIjC,SAASu+B,EAAM,GAAI,KAAKh9B,IAClEriB,EAAM,GACNy/B,EAAS5G,EAAQpC,iBAAiBghB,EAAO6H,EAAWj2B,GACxDrpB,EAAIqgB,KAAKof,EAAO1pB,OAAO2pB,IACvB1/B,EAAIqgB,KAAKof,EAAOhpB,SAChB2oC,EAAYxlD,EAAOkd,OAAO9W,OAZhB,CACV,IAAIu/C,EAASl9B,EAAIg9B,MAAMJ,GACvBG,EAAYxlD,EAAO0gB,KAAKilC,EAAO,GAAGxhD,QAAQ,UAAW,IAAK,UAY5D,IAAIogC,EAAM9b,EAAIg9B,MAAML,GAAY,GAChC,MAAO,CACL7gB,IAAKA,EACLnoB,KAAMopC,K,oCC1BV,IAAI1kD,EAAS,EAAQ,QACjBI,EAAW,EAAQ,QAEnBkqB,EAAQ,EAAQ,QAChBvP,EAAS,EAAQ,QAErB,SAAS+pC,IACP9jD,KAAKuX,IAAM,IAAI3V,MAAM,GACrB5B,KAAK4b,KAAO,KAGd,SAAS4X,EAAIxZ,GACXD,EAAOrC,KAAK1X,KAAMga,GAElB,IAAIwO,EAAQ,IAAIs7B,EAChB9jD,KAAK+jD,UAAYv7B,EAEjBxoB,KAAKgkD,WAAWx7B,EAAOxO,EAAQ2M,KAEjCvnB,EAASo0B,EAAKzZ,GACdzZ,EAAO1B,QAAU40B,EAEjBA,EAAItK,OAAS,SAAgBlP,GAC3B,OAAO,IAAIwZ,EAAIxZ,IAGjB,IAAIiqC,EAAa,CACf,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EACrB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAGvBzwB,EAAI/zB,UAAUukD,WAAa,SAAoBx7B,EAAO7B,GACpD6B,EAAM5M,KAAO,IAAIha,MAAM,IAEvB5C,EAAOuc,MAAMoL,EAAIxmB,OAAQH,KAAKka,UAAW,sBAEzC,IAAIgqC,EAAK56B,EAAMupB,aAAalsB,EAAK,GAC7Bw9B,EAAK76B,EAAMupB,aAAalsB,EAAK,GAEjC2C,EAAM86B,IAAIF,EAAIC,EAAI37B,EAAMjR,IAAK,GAC7B2sC,EAAK17B,EAAMjR,IAAI,GACf4sC,EAAK37B,EAAMjR,IAAI,GACf,IAAK,IAAI7V,EAAI,EAAGA,EAAI8mB,EAAM5M,KAAKzb,OAAQuB,GAAK,EAAG,CAC7C,IAAI8Q,EAAQyxC,EAAWviD,IAAM,GAC7BwiD,EAAK56B,EAAM+6B,OAAOH,EAAI1xC,GACtB2xC,EAAK76B,EAAM+6B,OAAOF,EAAI3xC,GACtB8W,EAAMg7B,IAAIJ,EAAIC,EAAI37B,EAAM5M,KAAMla,KAIlC8xB,EAAI/zB,UAAUkb,QAAU,SAAiB0V,EAAKC,EAAOhsB,EAAKisB,GACxD,IAAI/H,EAAQxoB,KAAK+jD,UAEb31C,EAAIkb,EAAMupB,aAAaxiB,EAAKC,GAC5BrvB,EAAIqoB,EAAMupB,aAAaxiB,EAAKC,EAAQ,GAGxChH,EAAMi7B,GAAGn2C,EAAGnN,EAAGunB,EAAMjR,IAAK,GAC1BnJ,EAAIoa,EAAMjR,IAAI,GACdtW,EAAIunB,EAAMjR,IAAI,GAEI,YAAdvX,KAAKia,KACPja,KAAKwkD,SAASh8B,EAAOpa,EAAGnN,EAAGunB,EAAMjR,IAAK,GAEtCvX,KAAKguB,SAASxF,EAAOpa,EAAGnN,EAAGunB,EAAMjR,IAAK,GAExCnJ,EAAIoa,EAAMjR,IAAI,GACdtW,EAAIunB,EAAMjR,IAAI,GAEd+R,EAAM0rB,cAAc1wC,EAAK8J,EAAGmiB,GAC5BjH,EAAM0rB,cAAc1wC,EAAKrD,EAAGsvB,EAAS,IAGvCiD,EAAI/zB,UAAU4b,KAAO,SAAclB,EAAQvX,GAEzC,IADA,IAAIgjB,EAAQzL,EAAOha,OAASyC,EACnBlB,EAAIkB,EAAKlB,EAAIyY,EAAOha,OAAQuB,IACnCyY,EAAOzY,GAAKkkB,EAEd,OAAO,GAGT4N,EAAI/zB,UAAU6b,OAAS,SAAgBnB,GAErC,IADA,IAAIsqC,EAAMtqC,EAAOA,EAAOha,OAAS,GACxBuB,EAAIyY,EAAOha,OAASskD,EAAK/iD,EAAIyY,EAAOha,OAAQuB,IACnD1C,EAAOuc,MAAMpB,EAAOzY,GAAI+iD,GAE1B,OAAOtqC,EAAOkN,MAAM,EAAGlN,EAAOha,OAASskD,IAGzCjxB,EAAI/zB,UAAU+kD,SAAW,SAAkBh8B,EAAOk8B,EAAQC,EAAQrgD,EAAK1B,GAKrE,IAJA,IAAIwL,EAAIs2C,EACJzjD,EAAI0jD,EAGCjjD,EAAI,EAAGA,EAAI8mB,EAAM5M,KAAKzb,OAAQuB,GAAK,EAAG,CAC7C,IAAIkjD,EAAOp8B,EAAM5M,KAAKla,GAClBmjD,EAAOr8B,EAAM5M,KAAKla,EAAI,GAG1B4nB,EAAMw7B,OAAO7jD,EAAGunB,EAAMjR,IAAK,GAE3BqtC,GAAQp8B,EAAMjR,IAAI,GAClBstC,GAAQr8B,EAAMjR,IAAI,GAClB,IAAIzI,EAAIwa,EAAMy7B,WAAWH,EAAMC,GAC3BviC,EAAIgH,EAAM/a,QAAQO,GAElB1I,EAAInF,EACRA,GAAKmN,EAAIkU,KAAO,EAChBlU,EAAIhI,EAINkjB,EAAM07B,IAAI/jD,EAAGmN,EAAG9J,EAAK1B,IAGvB4wB,EAAI/zB,UAAUuuB,SAAW,SAAkBxF,EAAOk8B,EAAQC,EAAQrgD,EAAK1B,GAKrE,IAJA,IAAIwL,EAAIu2C,EACJ1jD,EAAIyjD,EAGChjD,EAAI8mB,EAAM5M,KAAKzb,OAAS,EAAGuB,GAAK,EAAGA,GAAK,EAAG,CAClD,IAAIkjD,EAAOp8B,EAAM5M,KAAKla,GAClBmjD,EAAOr8B,EAAM5M,KAAKla,EAAI,GAG1B4nB,EAAMw7B,OAAO12C,EAAGoa,EAAMjR,IAAK,GAE3BqtC,GAAQp8B,EAAMjR,IAAI,GAClBstC,GAAQr8B,EAAMjR,IAAI,GAClB,IAAIzI,EAAIwa,EAAMy7B,WAAWH,EAAMC,GAC3BviC,EAAIgH,EAAM/a,QAAQO,GAElB1I,EAAIgI,EACRA,GAAKnN,EAAIqhB,KAAO,EAChBrhB,EAAImF,EAINkjB,EAAM07B,IAAI52C,EAAGnN,EAAGqD,EAAK1B,K,uBC5IvB,IAAIxD,EAAW,EAAQ,QACnB2qB,EAAO,EAAQ,QACf7rB,EAAS,EAAQ,QAAeA,OAEhC8rB,EAAI,CACN,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,UACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,UAAY,UACpC,UAAY,UAAY,UAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,YAGlCC,EAAI,IAAIroB,MAAM,KAElB,SAASqjD,IACPjlD,KAAKmqB,OACLnqB,KAAKoqB,GAAKH,EAEVF,EAAKrS,KAAK1X,KAAM,IAAK,KA2BvB,SAASklD,EAAIn3C,EAAGC,EAAGiL,GACjB,OAAOA,EAAKlL,GAAKC,EAAIiL,GAGvB,SAASksC,EAAKp3C,EAAGC,EAAGiL,GAClB,OAAQlL,EAAIC,EAAMiL,GAAKlL,EAAIC,GAG7B,SAASo3C,EAAQr3C,EAAGs3C,GAClB,OAAQt3C,IAAM,GAAKs3C,GAAM,IAAMA,IAAO,EAAIt3C,GAAK,KAAOs3C,IAAO,EAAIt3C,GAAK,IAGxE,SAASu3C,EAAQv3C,EAAGs3C,GAClB,OAAQt3C,IAAM,GAAKs3C,GAAM,KAAOt3C,IAAM,GAAKs3C,GAAM,KAAOA,IAAO,EAAIt3C,GAAK,IAG1E,SAASw3C,EAAQx3C,EAAGs3C,GAClB,OAAQt3C,IAAM,EAAIs3C,GAAM,KAAOt3C,IAAM,EAAIs3C,GAAM,IAAOt3C,IAAM,EAG9D,SAASy3C,EAASz3C,EAAGs3C,GACnB,OAAQt3C,IAAM,EAAIs3C,GAAM,KAAOt3C,IAAM,EAAIs3C,GAAM,KAAOt3C,IAAM,EAAIs3C,GAAM,IAGxE,SAASI,EAAQ13C,EAAGs3C,GAClB,OAAQt3C,IAAM,GAAKs3C,GAAM,KAAOA,IAAO,GAAKt3C,GAAK,GAAMA,IAAM,EAG/D,SAAS23C,EAAS33C,EAAGs3C,GACnB,OAAQt3C,IAAM,GAAKs3C,GAAM,KAAOA,IAAO,GAAKt3C,GAAK,IAAMA,IAAM,EAAIs3C,GAAM,IAGzE,SAASM,EAAUphD,EAAGC,GACpB,OAAQD,IAAM,EAAMC,IAAM,EAAK,EAAI,EAzDrCpF,EAAS6lD,EAAQl7B,GAEjBk7B,EAAOxlD,UAAU0qB,KAAO,WAmBtB,OAlBAnqB,KAAK4lD,IAAM,WACX5lD,KAAK6lD,IAAM,WACX7lD,KAAK8lD,IAAM,WACX9lD,KAAK+lD,IAAM,WACX/lD,KAAKgmD,IAAM,WACXhmD,KAAKimD,IAAM,WACXjmD,KAAKkmD,IAAM,UACXlmD,KAAKmmD,IAAM,WAEXnmD,KAAKomD,IAAM,WACXpmD,KAAKqmD,IAAM,WACXrmD,KAAKsmD,IAAM,WACXtmD,KAAKumD,IAAM,WACXvmD,KAAKwmD,IAAM,WACXxmD,KAAKymD,IAAM,UACXzmD,KAAK0mD,IAAM,WACX1mD,KAAK2mD,IAAM,UAEJ3mD,MAuCTilD,EAAOxlD,UAAUkb,QAAU,SAAUmQ,GAqBnC,IApBA,IAAIb,EAAIjqB,KAAKoqB,GAETw8B,EAAgB,EAAX5mD,KAAK4lD,IACViB,EAAgB,EAAX7mD,KAAK6lD,IACViB,EAAgB,EAAX9mD,KAAK8lD,IACV5qB,EAAgB,EAAXl7B,KAAK+lD,IACVgB,EAAgB,EAAX/mD,KAAKgmD,IACVgB,EAAgB,EAAXhnD,KAAKimD,IACVgB,EAAgB,EAAXjnD,KAAKkmD,IACVgB,EAAgB,EAAXlnD,KAAKmmD,IAEVgB,EAAgB,EAAXnnD,KAAKomD,IACVtN,EAAgB,EAAX94C,KAAKqmD,IACVe,EAAgB,EAAXpnD,KAAKsmD,IACVe,EAAgB,EAAXrnD,KAAKumD,IACVe,EAAgB,EAAXtnD,KAAKwmD,IACVe,EAAgB,EAAXvnD,KAAKymD,IACVe,EAAgB,EAAXxnD,KAAK0mD,IACVe,EAAgB,EAAXznD,KAAK2mD,IAELjlD,EAAI,EAAGA,EAAI,GAAIA,GAAK,EAC3BuoB,EAAEvoB,GAAKopB,EAAEC,YAAgB,EAAJrpB,GACrBuoB,EAAEvoB,EAAI,GAAKopB,EAAEC,YAAgB,EAAJrpB,EAAQ,GAEnC,KAAOA,EAAI,IAAKA,GAAK,EAAG,CACtB,IAAIgmD,EAAKz9B,EAAEvoB,EAAI,IACX2jD,EAAKp7B,EAAEvoB,EAAI,GAAS,GACpBimD,EAASpC,EAAOmC,EAAIrC,GACpBuC,EAAUpC,EAAQH,EAAIqC,GAE1BA,EAAKz9B,EAAEvoB,EAAI,GACX2jD,EAAKp7B,EAAEvoB,EAAI,EAAQ,GACnB,IAAImmD,EAASpC,EAAOiC,EAAIrC,GACpByC,EAAUpC,EAAQL,EAAIqC,GAGtBK,EAAO99B,EAAEvoB,EAAI,IACbsmD,EAAO/9B,EAAEvoB,EAAI,GAAQ,GAErBumD,EAAQh+B,EAAEvoB,EAAI,IACdwmD,EAAQj+B,EAAEvoB,EAAI,GAAS,GAEvBymD,EAAOP,EAAUI,EAAQ,EACzBI,EAAOT,EAASI,EAAOpC,EAASwC,EAAKP,GAAY,EACrDO,EAAOA,EAAML,EAAW,EACxBM,EAAOA,EAAMP,EAASlC,EAASwC,EAAKL,GAAY,EAChDK,EAAOA,EAAMD,EAAS,EACtBE,EAAOA,EAAMH,EAAQtC,EAASwC,EAAKD,GAAU,EAE7Cj+B,EAAEvoB,GAAK0mD,EACPn+B,EAAEvoB,EAAI,GAAKymD,EAGb,IAAK,IAAIzlD,EAAI,EAAGA,EAAI,IAAKA,GAAK,EAAG,CAC/B0lD,EAAMn+B,EAAEvnB,GACRylD,EAAMl+B,EAAEvnB,EAAI,GAEZ,IAAI2lD,EAAOlD,EAAIyB,EAAIC,EAAIC,GACnBwB,EAAOnD,EAAIgC,EAAIrO,EAAIsO,GAEnBmB,EAAUnD,EAAOwB,EAAIO,GACrBqB,EAAUpD,EAAO+B,EAAIP,GACrB6B,EAAUnD,EAAOyB,EAAIO,GACrBoB,EAAUpD,EAAOgC,EAAIP,GAGrB4B,EAAM3+B,EAAEtnB,GACRkmD,EAAM5+B,EAAEtnB,EAAI,GAEZmmD,EAAM3D,EAAG6B,EAAIC,EAAIC,GACjB6B,EAAM5D,EAAGoC,EAAIC,EAAIC,GAEjBuB,EAAOtB,EAAKiB,EAAW,EACvBM,EAAO9B,EAAKuB,EAAU9C,EAASoD,EAAKtB,GAAO,EAC/CsB,EAAOA,EAAMD,EAAO,EACpBE,EAAOA,EAAMH,EAAMlD,EAASoD,EAAKD,GAAQ,EACzCC,EAAOA,EAAMH,EAAO,EACpBI,EAAOA,EAAML,EAAMhD,EAASoD,EAAKH,GAAQ,EACzCG,EAAOA,EAAMZ,EAAO,EACpBa,EAAOA,EAAMZ,EAAMzC,EAASoD,EAAKZ,GAAQ,EAGzC,IAAIc,GAAOT,EAAUF,EAAQ,EACzBY,GAAOX,EAAUF,EAAO1C,EAASsD,GAAKT,GAAY,EAEtDtB,EAAKD,EACLQ,EAAKD,EACLP,EAAKD,EACLQ,EAAKD,EACLP,EAAKD,EACLQ,EAAKD,EACLA,EAAMD,EAAK0B,EAAO,EAClBhC,EAAM7rB,EAAK8tB,EAAMrD,EAAS2B,EAAID,GAAO,EACrCnsB,EAAK4rB,EACLO,EAAKD,EACLN,EAAKD,EACLO,EAAKtO,EACL+N,EAAKD,EACL9N,EAAKqO,EACLA,EAAM4B,EAAME,GAAO,EACnBrC,EAAMoC,EAAME,GAAMvD,EAASwB,EAAI4B,GAAQ,EAGzC/oD,KAAKomD,IAAOpmD,KAAKomD,IAAMe,EAAM,EAC7BnnD,KAAKqmD,IAAOrmD,KAAKqmD,IAAMvN,EAAM,EAC7B94C,KAAKsmD,IAAOtmD,KAAKsmD,IAAMc,EAAM,EAC7BpnD,KAAKumD,IAAOvmD,KAAKumD,IAAMc,EAAM,EAC7BrnD,KAAKwmD,IAAOxmD,KAAKwmD,IAAMc,EAAM,EAC7BtnD,KAAKymD,IAAOzmD,KAAKymD,IAAMc,EAAM,EAC7BvnD,KAAK0mD,IAAO1mD,KAAK0mD,IAAMc,EAAM,EAC7BxnD,KAAK2mD,IAAO3mD,KAAK2mD,IAAMc,EAAM,EAE7BznD,KAAK4lD,IAAO5lD,KAAK4lD,IAAMgB,EAAKjB,EAAS3lD,KAAKomD,IAAKe,GAAO,EACtDnnD,KAAK6lD,IAAO7lD,KAAK6lD,IAAMgB,EAAKlB,EAAS3lD,KAAKqmD,IAAKvN,GAAO,EACtD94C,KAAK8lD,IAAO9lD,KAAK8lD,IAAMgB,EAAKnB,EAAS3lD,KAAKsmD,IAAKc,GAAO,EACtDpnD,KAAK+lD,IAAO/lD,KAAK+lD,IAAM7qB,EAAKyqB,EAAS3lD,KAAKumD,IAAKc,GAAO,EACtDrnD,KAAKgmD,IAAOhmD,KAAKgmD,IAAMe,EAAKpB,EAAS3lD,KAAKwmD,IAAKc,GAAO,EACtDtnD,KAAKimD,IAAOjmD,KAAKimD,IAAMe,EAAKrB,EAAS3lD,KAAKymD,IAAKc,GAAO,EACtDvnD,KAAKkmD,IAAOlmD,KAAKkmD,IAAMe,EAAKtB,EAAS3lD,KAAK0mD,IAAKc,GAAO,EACtDxnD,KAAKmmD,IAAOnmD,KAAKmmD,IAAMe,EAAKvB,EAAS3lD,KAAK2mD,IAAKc,GAAO,GAGxDxC,EAAOxlD,UAAUurB,MAAQ,WACvB,IAAIC,EAAI/sB,EAAO8qB,YAAY,IAE3B,SAASmgC,EAAc13C,EAAGrD,EAAG+O,GAC3B8N,EAAEC,aAAazZ,EAAG0L,GAClB8N,EAAEC,aAAa9c,EAAG+O,EAAS,GAY7B,OATAgsC,EAAanpD,KAAK4lD,IAAK5lD,KAAKomD,IAAK,GACjC+C,EAAanpD,KAAK6lD,IAAK7lD,KAAKqmD,IAAK,GACjC8C,EAAanpD,KAAK8lD,IAAK9lD,KAAKsmD,IAAK,IACjC6C,EAAanpD,KAAK+lD,IAAK/lD,KAAKumD,IAAK,IACjC4C,EAAanpD,KAAKgmD,IAAKhmD,KAAKwmD,IAAK,IACjC2C,EAAanpD,KAAKimD,IAAKjmD,KAAKymD,IAAK,IACjC0C,EAAanpD,KAAKkmD,IAAKlmD,KAAK0mD,IAAK,IACjCyC,EAAanpD,KAAKmmD,IAAKnmD,KAAK2mD,IAAK,IAE1B17B,GAGT3qB,EAAO1B,QAAUqmD,G,sBCnQjB,kBAAU,EAAQ,QAElB,SAASmE,EAAU/kD,GAEjB,OADAA,EAAKwpB,MAAQxpB,EAAKsV,QAAQC,aAAavV,EAAKwpB,OACrCxpB,EAAKwpB,MAGdjvB,EAAQ6a,QAAU,SAAUpV,EAAMgpB,GAChC,MAAOhpB,EAAKypB,OAAO3tB,OAASktB,EAAMltB,OAChCkE,EAAKypB,OAAS5vB,EAAOkd,OAAO,CAAC/W,EAAKypB,OAAQs7B,EAAS/kD,KAGrD,IAAIogD,EAAMpgD,EAAKypB,OAAOzG,MAAM,EAAGgG,EAAMltB,QAErC,OADAkE,EAAKypB,OAASzpB,EAAKypB,OAAOzG,MAAMgG,EAAMltB,QAC/B0H,EAAIwlB,EAAOo3B,M,kDCdpB,IAAIvmD,EAAS,EAAQ,QAAeA,OAEpC,SAASmrD,EAAahlD,EAAMilD,EAAWzvC,GACrC,IAAI4qC,EAIAvgD,EAAK0hB,EAHLlkB,GAAK,EACLH,EAAM,EACN+C,EAAM,EAEV,QAAS5C,EAAIH,EACXkjD,EAAMpgD,EAAKsV,QAAQC,aAAavV,EAAKwpB,OACrC3pB,EAAOolD,EAAa,GAAM,EAAI5nD,EAAO,IAAO,EAC5CkkB,EAAQ6+B,EAAI,GAAKvgD,EACjBI,IAAiB,IAARshB,IAAkBlkB,EAAI,EAC/B2C,EAAKwpB,MAAQ07B,EAAQllD,EAAKwpB,MAAOhU,EAAU3V,EAAM0hB,GAEnD,OAAOthB,EAGT,SAASilD,EAASpvC,EAAQyL,GACxB,IAAIrkB,EAAM4Y,EAAOha,OACbuB,GAAK,EACL4C,EAAMpG,EAAO8qB,YAAY7O,EAAOha,QACpCga,EAASjc,EAAOkd,OAAO,CAACjB,EAAQjc,EAAO0gB,KAAK,CAACgH,MAE7C,QAASlkB,EAAIH,EACX+C,EAAI5C,GAAKyY,EAAOzY,IAAM,EAAIyY,EAAOzY,EAAI,IAAM,EAG7C,OAAO4C,EAGT1F,EAAQ6a,QAAU,SAAUpV,EAAMgpB,EAAOxT,GACvC,IAAItY,EAAM8rB,EAAMltB,OACZmE,EAAMpG,EAAO8qB,YAAYznB,GACzBG,GAAK,EAET,QAASA,EAAIH,EACX+C,EAAI5C,GAAK2nD,EAAYhlD,EAAMgpB,EAAM3rB,GAAImY,GAGvC,OAAOvV,I,qBCxCT,IAAI3E,EAAK,EAAQ,QACbzB,EAAS,EAAQ,QAAeA,OAEpC,SAAS2yB,EAAY24B,EAAW7iC,GAC9B,OAAOzoB,EAAO0gB,KAAK4qC,EAChB/zC,MAAM9V,EAAG4Z,KAAKoN,EAAIoK,UAClB/Z,OAAO,IAAIrX,EAAGgnB,EAAI8iC,iBAClB5zC,UACArT,WAGLlC,EAAO1B,QAAUiyB,G,oCCVjB,IAAIoQ,EAAU,EAAQ,QAClBC,EAAY,EAAQ,QACpB6L,EAAW,EAAQ,QACnB1L,EAAQ,EAAQ,QAChBqoB,EAAQ,GAAGhjC,KACXooB,EAAO,CAAC,EAAG,EAAG,GAElB7N,EAAQA,EAAQ0oB,EAAI1oB,EAAQO,GAAKH,GAAM,WAErCyN,EAAKpoB,UAAKhoB,QACL2iC,GAAM,WAEXyN,EAAKpoB,KAAK,WAEL,EAAQ,OAAR,CAA4BgjC,IAAS,QAAS,CAEnDhjC,KAAM,SAAckjC,GAClB,YAAqBlrD,IAAdkrD,EACHF,EAAMhyC,KAAKq1B,EAAS/sC,OACpB0pD,EAAMhyC,KAAKq1B,EAAS/sC,MAAOkhC,EAAU0oB,Q,wBCpB7C,kBAAS,EAAQ,QACbC,EAAc,EAAQ,QACtBC,EAAc,IAAID,EAClBE,EAAa,IAAIpqD,EAAG,IACpBqqD,EAAS,IAAIrqD,EAAG,IAChBsqD,EAAM,IAAItqD,EAAG,IACbuqD,EAAQ,IAAIvqD,EAAG,GACfwqD,EAAQ,IAAIxqD,EAAG,GACf9B,EAAS,EAAQ,QACjB+0B,EAAc,EAAQ,QAG1B,SAASw3B,EAAanZ,EAAK3yC,GAMzB,OALAA,EAAMA,GAAO,OACRJ,EAAOO,SAASwyC,KACnBA,EAAM,IAAI/yC,EAAO+yC,EAAK3yC,IAExB0B,KAAKkxC,KAAO,IAAIvxC,EAAGsxC,GACZjxC,KAGT,SAASqqD,EAAc7Y,EAAMlzC,GAM3B,OALAA,EAAMA,GAAO,OACRJ,EAAOO,SAAS+yC,KACnBA,EAAO,IAAItzC,EAAOszC,EAAMlzC,IAE1B0B,KAAKsqD,MAAQ,IAAI3qD,EAAG6xC,GACbxxC,KAjBTM,EAAO1B,QAAUd,EAoBjB,IAAIysD,EAAa,GACjB,SAASC,EAAWvsD,EAAOM,GACzB,IAAIJ,EAAMI,EAAU6D,SAAS,OACzBqoD,EAAM,CAACtsD,EAAKF,EAAMmE,SAAS,KAAK45B,KAAK,KACzC,GAAIyuB,KAAOF,EACT,OAAOA,EAAWE,GAEpB,IAyBIC,EAzBAtjC,EAAQ,EAEZ,GAAInpB,EAAM8V,WACPlW,EAAO8sD,cACP9sD,EAAO+sD,WAAW3sD,KAClB6rD,EAAYhb,KAAK7wC,GAclB,OAZAmpB,GAAS,EAKPA,GAHU,OAARjpB,GAAwB,OAARA,EAGT,EAIA,EAEXosD,EAAWE,GAAOrjC,EACXA,EAOT,OALK0iC,EAAYhb,KAAK7wC,EAAM8T,KAAK,MAE/BqV,GAAS,GAGHjpB,GACN,IAAK,KACCF,EAAMD,IAAI+rD,GAAY9nD,IAAI+nD,KAE5B5iC,GAAS,GAEX,MACF,IAAK,KACHsjC,EAAMzsD,EAAMD,IAAIisD,GACZS,EAAIzoD,IAAIioD,IAAUQ,EAAIzoD,IAAIkoD,KAE5B/iC,GAAS,GAEX,MACF,QACEA,GAAS,EAGb,OADAmjC,EAAWE,GAAOrjC,EACXA,EAGT,SAAStpB,EAAGG,EAAOM,EAAWssD,GAC5B7qD,KAAK8qD,aAAavsD,GAClByB,KAAK+qD,QAAU,IAAIprD,EAAG1B,GACtB+B,KAAK8X,OAASnY,EAAG4Z,KAAKvZ,KAAK+qD,SAC3B/qD,KAAKgrD,UAAY/sD,EAAMkC,OACvBH,KAAKkxC,UAAOxyC,EACZsB,KAAKsqD,WAAQ5rD,EACbsB,KAAKirD,gBAAavsD,EACdmsD,GACF7qD,KAAKoqD,aAAeA,EACpBpqD,KAAKqqD,cAAgBA,GAErBrqD,KAAKirD,WAAa,EA4DtB,SAASC,EAAkBC,EAAI7sD,GAC7B,IAAIoe,EAAM,IAAIxe,EAAOitD,EAAG3oD,WACxB,OAAKlE,EAGIoe,EAAIta,SAAS9D,GAFboe,EA5DXf,OAAO0T,eAAevxB,EAAG2B,UAAW,cAAe,CACjD8vB,YAAY,EACZxM,IAAK,WAIH,MAH+B,kBAApB/iB,KAAKirD,aACdjrD,KAAKirD,WAAaT,EAAWxqD,KAAK+qD,QAAS/qD,KAAKorD,QAE3CprD,KAAKirD,cAGhBntD,EAAG2B,UAAU4rD,aAAe,WAK1B,OAJKrrD,KAAKsqD,QACRtqD,KAAKsqD,MAAQ,IAAI3qD,EAAGizB,EAAY5yB,KAAKgrD,aAEvChrD,KAAKkxC,KAAOlxC,KAAKsrD,KAAK71C,MAAMzV,KAAK8X,QAAQd,OAAOhX,KAAKsqD,OAAOz0C,UACrD7V,KAAKurD,gBAGdztD,EAAG2B,UAAU+rD,cAAgB,SAAUrT,GACrCA,EAAQ,IAAIx4C,EAAGw4C,GACfA,EAAQA,EAAM1iC,MAAMzV,KAAK8X,QACzB,IAAIi5B,EAASoH,EAAMnhC,OAAOhX,KAAKsqD,OAAOz0C,UAClCvR,EAAM,IAAIpG,EAAO6yC,EAAOvuC,WACxBvE,EAAQ+B,KAAKyrD,WACjB,GAAInnD,EAAInE,OAASlC,EAAMkC,OAAQ,CAC7B,IAAIurD,EAAQ,IAAIxtD,EAAOD,EAAMkC,OAASmE,EAAInE,QAC1CurD,EAAMzlC,KAAK,GACX3hB,EAAMpG,EAAOkd,OAAO,CAACswC,EAAOpnD,IAE9B,OAAOA,GAGTxG,EAAG2B,UAAU8rD,aAAe,SAAsBjtD,GAChD,OAAO4sD,EAAkBlrD,KAAKkxC,KAAM5yC,IAGtCR,EAAG2B,UAAUksD,cAAgB,SAAuBrtD,GAClD,OAAO4sD,EAAkBlrD,KAAKsqD,MAAOhsD,IAGvCR,EAAG2B,UAAUgsD,SAAW,SAAUntD,GAChC,OAAO4sD,EAAkBlrD,KAAK+qD,QAASzsD,IAGzCR,EAAG2B,UAAUmsD,aAAe,SAAUttD,GACpC,OAAO4sD,EAAkBlrD,KAAKsrD,KAAMhtD,IAGtCR,EAAG2B,UAAUqrD,aAAe,SAAU3sD,EAAKG,GAOzC,OANAA,EAAMA,GAAO,OACRJ,EAAOO,SAASN,KACnBA,EAAM,IAAID,EAAOC,EAAKG,IAExB0B,KAAKorD,MAAQjtD,EACb6B,KAAKsrD,KAAO,IAAI3rD,EAAGxB,GACZ6B,Q,iECpJT,IAAI6rD,EAAM,EAAQ,QAEdC,EAAOD,EAAI9S,OAAO,QAAQ,WAC5B/4C,KAAK45C,OAAO,CACVmS,QAAS/rD,KAAKgsD,UACdC,YAAajsD,KAAKksD,eAIlBC,EAAqBN,EAAI9S,OAAO,sBAAsB,WACxD/4C,KAAKg5C,MAAMzkB,IACTv0B,KAAK2mB,IAAI,QAAQ0oB,QACjBrvC,KAAK2mB,IAAI,SAASylC,UAIlBjT,EAAsB0S,EAAI9S,OAAO,uBAAuB,WAC1D/4C,KAAKg5C,MAAMzkB,IACTv0B,KAAK2mB,IAAI,aAAa0oB,QACtBrvC,KAAK2mB,IAAI,cAAc2yB,WACvBt5C,KAAK2mB,IAAI,SAAS0oB,QAAQiK,eAI1B+S,EAAuBR,EAAI9S,OAAO,wBAAwB,WAC5D/4C,KAAKg5C,MAAMzkB,IACTv0B,KAAK2mB,IAAI,aAAauyB,IAAIC,GAC1Bn5C,KAAK2mB,IAAI,oBAAoByyB,aAI7BkT,EAA4BT,EAAI9S,OAAO,6BAA6B,WACtE/4C,KAAKusD,MAAMJ,MAGTK,EAAcX,EAAI9S,OAAO,eAAe,WAC1C/4C,KAAKysD,MAAMH,MAGTI,EAAOb,EAAI9S,OAAO,QAAQ,WAC5B/4C,KAAK45C,OAAO,CACV+S,YAAa3sD,KAAKk5C,IAAIsT,QAItBI,EAAWf,EAAI9S,OAAO,YAAY,WACpC/4C,KAAKg5C,MAAMzkB,IACTv0B,KAAK2mB,IAAI,aAAauyB,IAAI4S,GAC1B9rD,KAAK2mB,IAAI,YAAYuyB,IAAI4S,OAIzBe,EAAYhB,EAAI9S,OAAO,aAAa,WACtC/4C,KAAKg5C,MAAMzkB,IACTv0B,KAAK2mB,IAAI,UAAU0oB,QACnBrvC,KAAK2mB,IAAI,YAAYmmC,OAAOC,KAAI,GAChC/sD,KAAK2mB,IAAI,aAAa6yB,aAItBwT,EAAiBnB,EAAI9S,OAAO,kBAAkB,WAChD/4C,KAAKg5C,MAAMzkB,IACTv0B,KAAK2mB,IAAI,WAAW+yB,SAAS,GAAGT,MAAMK,WACtCt5C,KAAK2mB,IAAI,gBAAgBsyB,MACzBj5C,KAAK2mB,IAAI,aAAauyB,IAAIC,GAC1Bn5C,KAAK2mB,IAAI,UAAUuyB,IAAIwT,GACvB1sD,KAAK2mB,IAAI,YAAYuyB,IAAI0T,GACzB5sD,KAAK2mB,IAAI,WAAWuyB,IAAIwT,GACxB1sD,KAAK2mB,IAAI,wBAAwBuyB,IAAImT,GACrCrsD,KAAK2mB,IAAI,kBAAkBsmC,SAAS,GAAG7T,SAASE,WAChDt5C,KAAK2mB,IAAI,mBAAmBsmC,SAAS,GAAG7T,SAASE,WACjDt5C,KAAK2mB,IAAI,cAAc+yB,SAAS,GAAG+S,MAAMI,GAAWvT,eAIpD4T,EAAkBrB,EAAI9S,OAAO,mBAAmB,WAClD/4C,KAAKg5C,MAAMzkB,IACTv0B,KAAK2mB,IAAI,kBAAkBuyB,IAAI8T,GAC/BhtD,KAAK2mB,IAAI,sBAAsBuyB,IAAIC,GACnCn5C,KAAK2mB,IAAI,kBAAkByyB,aAI/B94C,EAAO1B,QAAUsuD,G,qCCxFjB,YAEA,IAAIpT,EAEJ,SAASpa,EAAgBnL,EAAK5N,EAAKf,GAAiK,OAApJe,KAAO4N,EAAO5Y,OAAO0T,eAAekF,EAAK5N,EAAK,CAAEf,MAAOA,EAAO2J,YAAY,EAAMD,cAAc,EAAMoE,UAAU,IAAkBa,EAAI5N,GAAOf,EAAgB2O,EAE3M,IAAIiB,EAAW,EAAQ,QAEnBukB,EAAe1hB,OAAO,eACtB2hB,EAAc3hB,OAAO,cACrB4hB,EAAS5hB,OAAO,SAChB6hB,EAAS7hB,OAAO,SAChB8hB,EAAe9hB,OAAO,eACtB+hB,EAAiB/hB,OAAO,iBACxBgiB,EAAUhiB,OAAO,UAErB,SAASiiB,EAAiB10B,EAAOsH,GAC/B,MAAO,CACLtH,MAAOA,EACPsH,KAAMA,GAIV,SAASqtB,EAAeC,GACtB,IAAIp5B,EAAUo5B,EAAKT,GAEnB,GAAgB,OAAZ34B,EAAkB,CACpB,IAAI9G,EAAOkgC,EAAKH,GAAS77B,OAIZ,OAATlE,IACFkgC,EAAKL,GAAgB,KACrBK,EAAKT,GAAgB,KACrBS,EAAKR,GAAe,KACpB54B,EAAQk5B,EAAiBhgC,GAAM,MAKrC,SAASmgC,EAAWD,GAGlBl7B,EAAQwT,SAASynB,EAAgBC,GAGnC,SAASE,EAAYC,EAAaH,GAChC,OAAO,SAAUp5B,EAAS8a,GACxBye,EAAYhzB,MAAK,WACX6yB,EAAKN,GACP94B,EAAQk5B,OAAiB57C,GAAW,IAItC87C,EAAKJ,GAAgBh5B,EAAS8a,KAC7BA,IAIP,IAAI0e,EAAyBj/B,OAAOk/B,gBAAe,eAC/CC,EAAuCn/B,OAAOo/B,gBAAgBjB,EAAwB,CACxF,aACE,OAAO95C,KAAKq6C,IAGdzhC,KAAM,WACJ,IAAIoU,EAAQhtB,KAIRonB,EAAQpnB,KAAKi6C,GAEjB,GAAc,OAAV7yB,EACF,OAAOjG,QAAQ+a,OAAO9U,GAGxB,GAAIpnB,KAAKk6C,GACP,OAAO/4B,QAAQC,QAAQk5B,OAAiB57C,GAAW,IAGrD,GAAIsB,KAAKq6C,GAASptB,UAKhB,OAAO,IAAI9L,SAAQ,SAAUC,EAAS8a,GACpC5c,EAAQwT,UAAS,WACX9F,EAAMitB,GACR/d,EAAOlP,EAAMitB,IAEb74B,EAAQk5B,OAAiB57C,GAAW,UAU5C,IACI+/B,EADAkc,EAAc36C,KAAKm6C,GAGvB,GAAIQ,EACFlc,EAAU,IAAItd,QAAQu5B,EAAYC,EAAa36C,WAC1C,CAGL,IAAIsa,EAAOta,KAAKq6C,GAAS77B,OAEzB,GAAa,OAATlE,EACF,OAAO6G,QAAQC,QAAQk5B,EAAiBhgC,GAAM,IAGhDmkB,EAAU,IAAItd,QAAQnhB,KAAKo6C,IAI7B,OADAp6C,KAAKm6C,GAAgB1b,EACdA,IAERiB,EAAgBoa,EAAuBzhB,OAAO2iB,eAAe,WAC9D,OAAOh7C,QACL0/B,EAAgBoa,EAAuB,UAAU,WACnD,IAAI9X,EAAShiC,KAKb,OAAO,IAAImhB,SAAQ,SAAUC,EAAS8a,GACpC8F,EAAOqY,GAASzjB,QAAQ,MAAM,SAAU9a,GAClCA,EACFogB,EAAOpgB,GAITsF,EAAQk5B,OAAiB57C,GAAW,aAGtCo7C,GAAwBc,GAExBK,EAAoC,SAA2C9tB,GACjF,IAAI+tB,EAEAC,EAAWx/B,OAAOuN,OAAO4xB,GAAuCI,EAAiB,GAAIxb,EAAgBwb,EAAgBb,EAAS,CAChIz0B,MAAOuH,EACPuG,UAAU,IACRgM,EAAgBwb,EAAgBnB,EAAc,CAChDn0B,MAAO,KACP8N,UAAU,IACRgM,EAAgBwb,EAAgBlB,EAAa,CAC/Cp0B,MAAO,KACP8N,UAAU,IACRgM,EAAgBwb,EAAgBjB,EAAQ,CAC1Cr0B,MAAO,KACP8N,UAAU,IACRgM,EAAgBwb,EAAgBhB,EAAQ,CAC1Ct0B,MAAOuH,EAAOf,eAAe4L,WAC7BtE,UAAU,IACRgM,EAAgBwb,EAAgBd,EAAgB,CAClDx0B,MAAO,SAAexE,EAAS8a,GAC7B,IAAI5hB,EAAO6gC,EAASd,GAAS77B,OAEzBlE,GACF6gC,EAAShB,GAAgB,KACzBgB,EAASpB,GAAgB,KACzBoB,EAASnB,GAAe,KACxB54B,EAAQk5B,EAAiBhgC,GAAM,MAE/B6gC,EAASpB,GAAgB34B,EACzB+5B,EAASnB,GAAe9d,IAG5BxI,UAAU,IACRwnB,IA8BJ,OA7BAC,EAAShB,GAAgB,KACzB3kB,EAASrI,GAAQ,SAAUrR,GACzB,GAAIA,GAAoB,+BAAbA,EAAIC,KAAuC,CACpD,IAAImgB,EAASif,EAASnB,GAWtB,OARe,OAAX9d,IACFif,EAAShB,GAAgB,KACzBgB,EAASpB,GAAgB,KACzBoB,EAASnB,GAAe,KACxB9d,EAAOpgB,SAGTq/B,EAASlB,GAAUn+B,GAIrB,IAAIsF,EAAU+5B,EAASpB,GAEP,OAAZ34B,IACF+5B,EAAShB,GAAgB,KACzBgB,EAASpB,GAAgB,KACzBoB,EAASnB,GAAe,KACxB54B,EAAQk5B,OAAiB57C,GAAW,KAGtCy8C,EAASjB,IAAU,KAErB/sB,EAAOvF,GAAG,WAAY6yB,EAAWjuB,KAAK,KAAM2uB,IACrCA,GAGT76C,EAAO1B,QAAUq8C,I,6CC9MjB,IAAIroB,EAAc,EAAQ,QAC1BtyB,EAAO1B,QAAUuuD,EACjBA,EAAUxC,YAAcA,EACxBwC,EAAUvC,WAAaA,EACvB,IAAIjrD,EAAK,EAAQ,QACboqD,EAAa,IAAIpqD,EAAG,IACpBkqD,EAAc,EAAQ,QACtBC,EAAc,IAAID,EAClBuD,EAAM,IAAIztD,EAAG,GACb0tD,EAAM,IAAI1tD,EAAG,GACb2tD,EAAO,IAAI3tD,EAAG,GAGdsqD,GAFU,IAAItqD,EAAG,IACT,IAAIA,EAAG,GACT,IAAIA,EAAG,KACbuqD,EAAQ,IAAIvqD,EAAG,GAEfqqD,GADQ,IAAIrqD,EAAG,GACN,IAAIA,EAAG,KAChB4tD,EAAO,IAAI5tD,EAAG,GAEd9B,GADS,IAAI8B,EAAG,IACP,MAEb,SAAS6tD,IACP,GAAe,OAAX3vD,EACF,OAAOA,EAET,IAAI4vD,EAAQ,QACR3nD,EAAM,GACVA,EAAI,GAAK,EACT,IAAK,IAAIpE,EAAI,EAAGiD,EAAI,EAAGA,EAAI8oD,EAAO9oD,GAAK,EAAG,CAExC,IADA,IAAIkS,EAAOrV,KAAKiB,KAAKjB,KAAKqV,KAAKlS,IACtBjC,EAAI,EAAGA,EAAIhB,GAAKoE,EAAIpD,IAAMmU,EAAMnU,IACvC,GAAIiC,EAAImB,EAAIpD,KAAO,EACjB,MAEAhB,IAAMgB,GAAKoD,EAAIpD,IAAMmU,IAGzB/Q,EAAIpE,KAAOiD,GAGb,OADA9G,EAASiI,EACFA,EAGT,SAAS6kD,EAAYv7C,GAGnB,IAFA,IAAIvR,EAAS2vD,IAEJ9rD,EAAI,EAAGA,EAAI7D,EAAOsC,OAAQuB,IACjC,GAA0B,IAAtB0N,EAAEjK,KAAKtH,EAAO6D,IAChB,OAA0B,IAAtB0N,EAAEsF,KAAK7W,EAAO6D,IAOtB,OAAO,EAGT,SAASkpD,EAAWx7C,GAClB,IAAIhP,EAAMT,EAAG4Z,KAAKnK,GAClB,OAA8D,IAAvDi+C,EAAI53C,MAAMrV,GAAK4W,OAAO5H,EAAEiD,KAAK,IAAIwD,UAAUnB,KAAK,GAGzD,SAASy4C,EAAUh8C,EAAMhT,GACvB,GAAIgT,EAAO,GAET,OACS,IAAIxR,EADD,IAARxB,GAAqB,IAARA,EACD,CAAC,IAAM,KAEP,CAAC,IAAM,KAKzB,IAAIwD,EAAK+rD,EAFTvvD,EAAM,IAAIwB,EAAGxB,GAIb,MAAO,EAAM,CACXwD,EAAM,IAAIhC,EAAGizB,EAAYpxB,KAAKiB,KAAK0O,EAAO,KAC1C,MAAOxP,EAAIsC,YAAckN,EACvBxP,EAAIiQ,MAAM,GAQZ,GANIjQ,EAAIoS,UACNpS,EAAIuG,KAAKklD,GAENzrD,EAAImF,MAAM,IACbnF,EAAIuG,KAAKmlD,GAENlvD,EAAI8D,IAAIorD,IAIN,IAAKlvD,EAAI8D,IAAIqrD,GAClB,MAAO3rD,EAAI3D,IAAIisD,GAAKhoD,IAAIioD,GACtBvoD,EAAIuG,KAAKqlD,QALX,MAAO5rD,EAAI3D,IAAI+rD,GAAY9nD,IAAI+nD,GAC7BroD,EAAIuG,KAAKqlD,GAQb,GADAG,EAAK/rD,EAAIoQ,KAAK,GACV44C,EAAY+C,IAAO/C,EAAYhpD,IACjCipD,EAAW8C,IAAO9C,EAAWjpD,IAC7BmoD,EAAYhb,KAAK4e,IAAO5D,EAAYhb,KAAKntC,GACzC,OAAOA,K,kCClGb/C,EAAQ6+B,KAAO,EAAQ,QACvB7+B,EAAQ+uD,OAAS,EAAQ,QACzB/uD,EAAQ4wB,OAAS,EAAQ,SACzB5wB,EAAQ8wB,OAAS,EAAQ,QACzB9wB,EAAQ+wB,OAAS,EAAQ,S,uBCNzB,IAAIi+B,EAAM,EAAQ,QAElBttD,EAAO1B,QAAU,SAAUub,GACzB,OAAO,IAAIyzC,GAAMvzC,OAAOF,GAAQ8W,W,uBCHlC3wB,EAAO1B,QAAU,EAAQ,QAAU09C,c,oCCCnC,IAAIuR,EAAM,EAAQ,OAAR,EAAwB,GAGlC,EAAQ,OAAR,CAA0BvoC,OAAQ,UAAU,SAAUwoC,GACpD9tD,KAAK+tD,GAAKzoC,OAAOwoC,GACjB9tD,KAAKguD,GAAK,KAET,WACD,IAEItnB,EAFAuG,EAAIjtC,KAAK+tD,GACTntD,EAAQZ,KAAKguD,GAEjB,OAAIptD,GAASqsC,EAAE9sC,OAAe,CAAEylB,WAAOlnB,EAAWwuB,MAAM,IACxDwZ,EAAQmnB,EAAI5gB,EAAGrsC,GACfZ,KAAKguD,IAAMtnB,EAAMvmC,OACV,CAAEylB,MAAO8gB,EAAOxZ,MAAM,Q,oCCb/B,SAAS2S,EAAgBha,EAAUia,GAAe,KAAMja,aAAoBia,GAAgB,MAAM,IAAI3W,UAAU,qCAEhH,IAAIjrB,EAAS,EAAQ,QAAeA,OAChC6jC,EAAO,EAAQ,IAEnB,SAASxB,EAAW/a,EAAKga,EAAQriB,GAC/BqI,EAAIliB,KAAKk8B,EAAQriB,GAGnB7c,EAAO1B,QAAU,WACf,SAAS4hC,IACPX,EAAgB7/B,KAAMwgC,GAEtBxgC,KAAKygC,KAAO,KACZzgC,KAAK0gC,KAAO,KACZ1gC,KAAKG,OAAS,EAqDhB,OAlDAqgC,EAAW/gC,UAAUklB,KAAO,SAAc/C,GACxC,IAAIgS,EAAQ,CAAEtZ,KAAMsH,EAAGhJ,KAAM,MACzB5Y,KAAKG,OAAS,EAAGH,KAAK0gC,KAAK9nB,KAAOgb,EAAW5zB,KAAKygC,KAAO7M,EAC7D5zB,KAAK0gC,KAAO9M,IACV5zB,KAAKG,QAGTqgC,EAAW/gC,UAAUywC,QAAU,SAAiBtuB,GAC9C,IAAIgS,EAAQ,CAAEtZ,KAAMsH,EAAGhJ,KAAM5Y,KAAKygC,MACd,IAAhBzgC,KAAKG,SAAcH,KAAK0gC,KAAO9M,GACnC5zB,KAAKygC,KAAO7M,IACV5zB,KAAKG,QAGTqgC,EAAW/gC,UAAU+S,MAAQ,WAC3B,GAAoB,IAAhBxS,KAAKG,OAAT,CACA,IAAImF,EAAMtF,KAAKygC,KAAKnmB,KAGpB,OAFoB,IAAhBta,KAAKG,OAAcH,KAAKygC,KAAOzgC,KAAK0gC,KAAO,KAAU1gC,KAAKygC,KAAOzgC,KAAKygC,KAAK7nB,OAC7E5Y,KAAKG,OACAmF,IAGTk7B,EAAW/gC,UAAU++C,MAAQ,WAC3Bx+C,KAAKygC,KAAOzgC,KAAK0gC,KAAO,KACxB1gC,KAAKG,OAAS,GAGhBqgC,EAAW/gC,UAAUu8B,KAAO,SAAcltB,GACxC,GAAoB,IAAhB9O,KAAKG,OAAc,MAAO,GAC9B,IAAIiP,EAAIpP,KAAKygC,KACTn7B,EAAM,GAAK8J,EAAEkL,KACjB,MAAOlL,EAAIA,EAAEwJ,KACXtT,GAAOwJ,EAAIM,EAAEkL,KACd,OAAOhV,GAGVk7B,EAAW/gC,UAAU2b,OAAS,SAAgBvL,GAC5C,GAAoB,IAAhB7P,KAAKG,OAAc,OAAOjC,EAAO6qB,MAAM,GAC3C,GAAoB,IAAhB/oB,KAAKG,OAAc,OAAOH,KAAKygC,KAAKnmB,KACxC,IAAIhV,EAAMpH,EAAO8qB,YAAYnZ,IAAM,GAC/BT,EAAIpP,KAAKygC,KACT/+B,EAAI,EACR,MAAO0N,EACLmxB,EAAWnxB,EAAEkL,KAAMhV,EAAK5D,GACxBA,GAAK0N,EAAEkL,KAAKna,OACZiP,EAAIA,EAAEwJ,KAER,OAAOtT,GAGFk7B,EA3DQ,GA8DbuB,GAAQA,EAAKn+B,SAAWm+B,EAAKn+B,QAAQ08B,SACvChgC,EAAO1B,QAAQa,UAAUsiC,EAAKn+B,QAAQ08B,QAAU,WAC9C,IAAI/L,EAAMwN,EAAKn+B,QAAQ,CAAEzD,OAAQH,KAAKG,SACtC,OAAOH,KAAKN,YAAY4X,KAAO,IAAMid,K,qCC5EzC,YA2BA,IAAI05B,EAAatyC,OAAOC,MAAQ,SAAU2Y,GACxC,IAAI3Y,EAAO,GAEX,IAAK,IAAI+K,KAAO4N,EACd3Y,EAAK+I,KAAKgC,GAGZ,OAAO/K,GAKTtb,EAAO1B,QAAU6sB,EAEjB,IAAIihB,EAAW,EAAQ,QAEnB3Y,EAAW,EAAQ,QAEvB,EAAQ,OAAR,CAAoBtI,EAAQihB,GAM1B,IAFA,IAAI9wB,EAAOqyC,EAAWl6B,EAASt0B,WAEtBmiB,EAAI,EAAGA,EAAIhG,EAAKzb,OAAQyhB,IAAK,CACpC,IAAIw/B,EAASxlC,EAAKgG,GACb6J,EAAOhsB,UAAU2hD,KAAS31B,EAAOhsB,UAAU2hD,GAAUrtB,EAASt0B,UAAU2hD,IAIjF,SAAS31B,EAAOzR,GACd,KAAMha,gBAAgByrB,GAAS,OAAO,IAAIA,EAAOzR,GACjD0yB,EAASh1B,KAAK1X,KAAMga,GACpB+Z,EAASrc,KAAK1X,KAAMga,GACpBha,KAAKkuD,eAAgB,EAEjBl0C,KACuB,IAArBA,EAAQ6jC,WAAoB79C,KAAK69C,UAAW,IACvB,IAArB7jC,EAAQ0Z,WAAoB1zB,KAAK0zB,UAAW,IAElB,IAA1B1Z,EAAQk0C,gBACVluD,KAAKkuD,eAAgB,EACrBluD,KAAKk4B,KAAK,MAAO+nB,KAiCvB,SAASA,IAEHjgD,KAAKotB,eAAemI,OAGxBjW,EAAQwT,SAASq7B,EAASnuD,MAG5B,SAASmuD,EAAQ9pD,GACfA,EAAKhD,MArCPsa,OAAO0T,eAAe5D,EAAOhsB,UAAW,wBAAyB,CAI/D8vB,YAAY,EACZxM,IAAK,WACH,OAAO/iB,KAAKotB,eAAe9E,iBAG/B3M,OAAO0T,eAAe5D,EAAOhsB,UAAW,iBAAkB,CAIxD8vB,YAAY,EACZxM,IAAK,WACH,OAAO/iB,KAAKotB,gBAAkBptB,KAAKotB,eAAegL,eAGtDzc,OAAO0T,eAAe5D,EAAOhsB,UAAW,iBAAkB,CAIxD8vB,YAAY,EACZxM,IAAK,WACH,OAAO/iB,KAAKotB,eAAejtB,UAgB/Bwb,OAAO0T,eAAe5D,EAAOhsB,UAAW,YAAa,CAInD8vB,YAAY,EACZxM,IAAK,WACH,YAA4BrkB,IAAxBsB,KAAKosB,qBAAwD1tB,IAAxBsB,KAAKotB,iBAIvCptB,KAAKosB,eAAea,WAAajtB,KAAKotB,eAAeH,YAE9D9J,IAAK,SAAayC,QAGYlnB,IAAxBsB,KAAKosB,qBAAwD1tB,IAAxBsB,KAAKotB,iBAM9CptB,KAAKosB,eAAea,UAAYrH,EAChC5lB,KAAKotB,eAAeH,UAAYrH,Q,0DCxIpC,W,oCCEAhnB,EAAQi0C,aAAe,SAAsBxsB,EAAOzjB,GAClD,IAAIkD,EAAQugB,EAAM,EAAIzjB,IAAQ,GAClByjB,EAAM,EAAIzjB,IAAQ,GAClByjB,EAAM,EAAIzjB,IAAQ,EACnByjB,EAAM,EAAIzjB,GACrB,OAAOkD,IAAQ,GAGjBlH,EAAQo2C,cAAgB,SAAuB3uB,EAAOT,EAAOhjB,GAC3DyjB,EAAM,EAAIzjB,GAAOgjB,IAAU,GAC3BS,EAAM,EAAIzjB,GAAQgjB,IAAU,GAAM,IAClCS,EAAM,EAAIzjB,GAAQgjB,IAAU,EAAK,IACjCS,EAAM,EAAIzjB,GAAe,IAARgjB,GAGnBhnB,EAAQ2lD,GAAK,SAAY6J,EAAKC,EAAK/pD,EAAK1B,GAItC,IAHA,IAAI0rD,EAAO,EACPC,EAAO,EAEF7sD,EAAI,EAAGA,GAAK,EAAGA,GAAK,EAAG,CAC9B,IAAK,IAAIgB,EAAI,EAAGA,GAAK,GAAIA,GAAK,EAC5B4rD,IAAS,EACTA,GAASD,IAAS3rD,EAAIhB,EAAM,EAE9B,IAASgB,EAAI,EAAGA,GAAK,GAAIA,GAAK,EAC5B4rD,IAAS,EACTA,GAASF,IAAS1rD,EAAIhB,EAAM,EAIhC,IAASA,EAAI,EAAGA,GAAK,EAAGA,GAAK,EAAG,CAC9B,IAASgB,EAAI,EAAGA,GAAK,GAAIA,GAAK,EAC5B6rD,IAAS,EACTA,GAASF,IAAS3rD,EAAIhB,EAAM,EAE9B,IAASgB,EAAI,EAAGA,GAAK,GAAIA,GAAK,EAC5B6rD,IAAS,EACTA,GAASH,IAAS1rD,EAAIhB,EAAM,EAIhC4C,EAAI1B,EAAM,GAAK0rD,IAAS,EACxBhqD,EAAI1B,EAAM,GAAK2rD,IAAS,GAG1B3vD,EAAQomD,IAAM,SAAaoJ,EAAKC,EAAK/pD,EAAK1B,GAIxC,IAHA,IAAI0rD,EAAO,EACPC,EAAO,EAEF7sD,EAAI,EAAGA,EAAI,EAAGA,IACrB,IAAK,IAAIgB,EAAI,GAAIA,GAAK,EAAGA,GAAK,EAC5B4rD,IAAS,EACTA,GAASD,IAAS3rD,EAAIhB,EAAM,EAC5B4sD,IAAS,EACTA,GAASF,IAAS1rD,EAAIhB,EAAM,EAGhC,IAASA,EAAI,EAAGA,EAAI,EAAGA,IACrB,IAASgB,EAAI,GAAIA,GAAK,EAAGA,GAAK,EAC5B6rD,IAAS,EACTA,GAASF,IAAS3rD,EAAIhB,EAAM,EAC5B6sD,IAAS,EACTA,GAASH,IAAS1rD,EAAIhB,EAAM,EAIhC4C,EAAI1B,EAAM,GAAK0rD,IAAS,EACxBhqD,EAAI1B,EAAM,GAAK2rD,IAAS,GAG1B3vD,EAAQwlD,IAAM,SAAagK,EAAKC,EAAK/pD,EAAK1B,GAQxC,IAPA,IAAI0rD,EAAO,EACPC,EAAO,EAMF7sD,EAAI,EAAGA,GAAK,EAAGA,IAAK,CAC3B,IAAK,IAAIgB,EAAI,EAAGA,GAAK,GAAIA,GAAK,EAC5B4rD,IAAS,EACTA,GAASD,GAAQ3rD,EAAIhB,EAAM,EAE7B,IAASgB,EAAI,EAAGA,GAAK,GAAIA,GAAK,EAC5B4rD,IAAS,EACTA,GAASF,GAAQ1rD,EAAIhB,EAAM,EAG/B,IAASgB,EAAI,EAAGA,GAAK,GAAIA,GAAK,EAC5B4rD,IAAS,EACTA,GAASD,GAAQ3rD,EAAIhB,EAAM,EAO7B,IAASA,EAAI,EAAGA,GAAK,EAAGA,IAAK,CAC3B,IAASgB,EAAI,EAAGA,GAAK,GAAIA,GAAK,EAC5B6rD,IAAS,EACTA,GAASF,GAAQ3rD,EAAIhB,EAAM,EAE7B,IAASgB,EAAI,EAAGA,GAAK,GAAIA,GAAK,EAC5B6rD,IAAS,EACTA,GAASH,GAAQ1rD,EAAIhB,EAAM,EAG/B,IAASgB,EAAI,EAAGA,GAAK,GAAIA,GAAK,EAC5B6rD,IAAS,EACTA,GAASH,GAAQ1rD,EAAIhB,EAAM,EAG7B4C,EAAI1B,EAAM,GAAK0rD,IAAS,EACxBhqD,EAAI1B,EAAM,GAAK2rD,IAAS,GAG1B3vD,EAAQylD,OAAS,SAAgB1iD,EAAK6Q,GACpC,OAAS7Q,GAAO6Q,EAAS,UAAc7Q,IAAS,GAAK6Q,GAGvD,IAAIg8C,EAAW,CAEb,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAC3B,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GACzB,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAGzB,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GACzB,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EACzB,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,IAG5B5vD,EAAQ0lD,IAAM,SAAa8J,EAAKC,EAAK/pD,EAAK1B,GAKxC,IAJA,IAAI0rD,EAAO,EACPC,EAAO,EAEPhtD,EAAMitD,EAASruD,SAAW,EACrBuB,EAAI,EAAGA,EAAIH,EAAKG,IACvB4sD,IAAS,EACTA,GAASF,IAAQI,EAAS9sD,GAAM,EAElC,IAASA,EAAIH,EAAKG,EAAI8sD,EAASruD,OAAQuB,IACrC6sD,IAAS,EACTA,GAASF,IAAQG,EAAS9sD,GAAM,EAGlC4C,EAAI1B,EAAM,GAAK0rD,IAAS,EACxBhqD,EAAI1B,EAAM,GAAK2rD,IAAS,GAG1B3vD,EAAQkmD,OAAS,SAAgB7jD,EAAGqD,EAAK1B,GACvC,IAAI0rD,EAAO,EACPC,EAAO,EAEXD,GAAa,EAAJrtD,IAAU,EAAMA,IAAM,GAC/B,IAAK,IAAIS,EAAI,GAAIA,GAAK,GAAIA,GAAK,EAC7B4sD,IAAS,EACTA,GAASrtD,IAAMS,EAAK,GAEtB,IAASA,EAAI,GAAIA,GAAK,EAAGA,GAAK,EAC5B6sD,GAASttD,IAAMS,EAAK,GACpB6sD,IAAS,EAEXA,IAAc,GAAJttD,IAAa,EAAMA,IAAM,GAEnCqD,EAAI1B,EAAM,GAAK0rD,IAAS,EACxBhqD,EAAI1B,EAAM,GAAK2rD,IAAS,GAG1B,IAAIE,EAAS,CACX,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EACpD,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClD,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAClD,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAEnD,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAClD,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EACnD,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EACpD,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAElD,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GACjD,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EACpD,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EACjD,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAEpD,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EACnD,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EACnD,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EACpD,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAEjD,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EACpD,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAClD,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GACnD,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAElD,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EACnD,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EACnD,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAClD,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAElD,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GACnD,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAClD,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EACpD,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAEjD,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EACnD,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EACnD,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,GAClD,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAGpD7vD,EAAQmmD,WAAa,SAAoBqJ,EAAKC,GAE5C,IADA,IAAI/pD,EAAM,EACD5C,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,IAAI8C,EAAK4pD,IAAS,GAAS,EAAJ1sD,EAAU,GAC7BgtD,EAAKD,EAAW,GAAJ/sD,EAAW8C,GAE3BF,IAAQ,EACRA,GAAOoqD,EAET,IAAShtD,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACtB8C,EAAK6pD,IAAS,GAAS,EAAJ3sD,EAAU,GAC7BgtD,EAAKD,EAAO,IAAe,GAAJ/sD,EAAW8C,GAEtCF,IAAQ,EACRA,GAAOoqD,EAET,OAAOpqD,IAAQ,GAGjB,IAAIqqD,EAAe,CACjB,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GACvD,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAG1D/vD,EAAQ2P,QAAU,SAAiB5M,GAEjC,IADA,IAAI2C,EAAM,EACD5C,EAAI,EAAGA,EAAIitD,EAAaxuD,OAAQuB,IACvC4C,IAAQ,EACRA,GAAQ3C,IAAQgtD,EAAajtD,GAAM,EAErC,OAAO4C,IAAQ,GAGjB1F,EAAQgwD,SAAW,SAAkBjtD,EAAK+B,EAAMmrD,GAC9C,IAAI1tD,EAAMQ,EAAIS,SAAS,GACvB,MAAOjB,EAAIhB,OAASuD,EAClBvC,EAAM,IAAMA,EAGd,IADA,IAAImD,EAAM,GACD5C,EAAI,EAAGA,EAAIgC,EAAMhC,GAAKmtD,EAC7BvqD,EAAIqgB,KAAKxjB,EAAIkmB,MAAM3lB,EAAGA,EAAImtD,IAC5B,OAAOvqD,EAAI03B,KAAK,O,kCC5PlB,MAAM58B,EAAW,EAAQ,QACnBg8C,EAAW,EAAQ,QAAoBA,SACvCl9C,EAAS,EAAQ,QAAgBA,OAEvC,SAASm9C,EAAcx7C,EAAMma,GAC3BohC,EAAS1jC,KAAK1X,KAAMga,GACf9b,EAAOO,SAASoB,IAKrBG,KAAKH,KAAOA,EACZG,KAAKmd,OAAS,EACdnd,KAAKG,OAASN,EAAKM,QANjBH,KAAKonB,MAAM,oBA8Ef,SAASk0B,EAAc11B,EAAOkoB,GAC5B,GAAIlsC,MAAMC,QAAQ+jB,GAChB5lB,KAAKG,OAAS,EACdH,KAAK4lB,MAAQA,EAAMmC,KAAI,SAAS+mC,GAI9B,OAHKxT,EAAcyT,gBAAgBD,KACjCA,EAAO,IAAIxT,EAAcwT,EAAMhhB,IACjC9tC,KAAKG,QAAU2uD,EAAK3uD,OACb2uD,IACN9uD,WACE,GAAqB,kBAAV4lB,EAAoB,CACpC,KAAM,GAAKA,GAASA,GAAS,KAC3B,OAAOkoB,EAAS1mB,MAAM,gCACxBpnB,KAAK4lB,MAAQA,EACb5lB,KAAKG,OAAS,OACT,GAAqB,kBAAVylB,EAChB5lB,KAAK4lB,MAAQA,EACb5lB,KAAKG,OAASjC,EAAOyH,WAAWigB,OAC3B,KAAI1nB,EAAOO,SAASmnB,GAIzB,OAAOkoB,EAAS1mB,MAAM,4BAA8BxB,GAHpD5lB,KAAK4lB,MAAQA,EACb5lB,KAAKG,OAASylB,EAAMzlB,QAzFxBf,EAASi8C,EAAeD,GACxBx8C,EAAQy8C,cAAgBA,EAExBA,EAAc2T,gBAAkB,SAAyB10C,GACvD,GAAIA,aAAgB+gC,EAClB,OAAO,EAIT,MAAM4T,EAA+B,kBAAT30C,GAC1Bpc,EAAOO,SAAS6b,EAAKza,OACK,kBAA1Bya,EAAK5a,YAAY4X,MACM,kBAAhBgD,EAAK6C,QACW,kBAAhB7C,EAAKna,QACS,oBAAdma,EAAK40C,MACY,oBAAjB50C,EAAK60C,SACY,oBAAjB70C,EAAK80C,SACc,oBAAnB90C,EAAK+0C,WACS,oBAAd/0C,EAAKg1C,MACQ,oBAAbh1C,EAAKi1C,IAEd,OAAON,GAGT5T,EAAc57C,UAAUyvD,KAAO,WAC7B,MAAO,CAAE/xC,OAAQnd,KAAKmd,OAAQ2wB,SAAUsN,EAAS37C,UAAUyvD,KAAKx3C,KAAK1X,QAGvEq7C,EAAc57C,UAAU0vD,QAAU,SAAiBD,GAEjD,MAAMppD,EAAM,IAAIu1C,EAAcr7C,KAAKH,MAOnC,OANAiG,EAAIqX,OAAS+xC,EAAK/xC,OAClBrX,EAAI3F,OAASH,KAAKmd,OAElBnd,KAAKmd,OAAS+xC,EAAK/xC,OACnBi+B,EAAS37C,UAAU0vD,QAAQz3C,KAAK1X,KAAMkvD,EAAKphB,UAEpChoC,GAGTu1C,EAAc57C,UAAU2vD,QAAU,WAChC,OAAOpvD,KAAKmd,SAAWnd,KAAKG,QAG9Bk7C,EAAc57C,UAAU4vD,UAAY,SAAmBG,GACrD,OAAIxvD,KAAKmd,OAAS,GAAKnd,KAAKG,OACnBH,KAAKH,KAAKwvD,UAAUrvD,KAAKmd,UAAU,GAEnCnd,KAAKonB,MAAMooC,GAAQ,0BAG9BnU,EAAc57C,UAAU6vD,KAAO,SAAcjpC,EAAOmpC,GAClD,KAAMxvD,KAAKmd,OAASkJ,GAASrmB,KAAKG,QAChC,OAAOH,KAAKonB,MAAMooC,GAAQ,yBAE5B,MAAM1pD,EAAM,IAAIu1C,EAAcr7C,KAAKH,MAQnC,OALAiG,EAAI2pD,eAAiBzvD,KAAKyvD,eAE1B3pD,EAAIqX,OAASnd,KAAKmd,OAClBrX,EAAI3F,OAASH,KAAKmd,OAASkJ,EAC3BrmB,KAAKmd,QAAUkJ,EACRvgB,GAGTu1C,EAAc57C,UAAU8vD,IAAM,SAAaL,GACzC,OAAOlvD,KAAKH,KAAKwnB,MAAM6nC,EAAOA,EAAK/xC,OAASnd,KAAKmd,OAAQnd,KAAKG,SA2BhEvB,EAAQ08C,cAAgBA,EAExBA,EAAcyT,gBAAkB,SAAyBz0C,GACvD,GAAIA,aAAgBghC,EAClB,OAAO,EAIT,MAAM2T,EAA+B,kBAAT30C,GACA,kBAA1BA,EAAK5a,YAAY4X,MACM,kBAAhBgD,EAAKna,QACS,oBAAdma,EAAK0hB,KAEd,OAAOizB,GAGT3T,EAAc77C,UAAUu8B,KAAO,SAAc13B,EAAK6Y,GAMhD,OALK7Y,IACHA,EAAMpG,EAAO6qB,MAAM/oB,KAAKG,SACrBgd,IACHA,EAAS,GAES,IAAhBnd,KAAKG,SAGLyB,MAAMC,QAAQ7B,KAAK4lB,OACrB5lB,KAAK4lB,MAAMY,SAAQ,SAASsoC,GAC1BA,EAAK9yB,KAAK13B,EAAK6Y,GACfA,GAAU2xC,EAAK3uD,WAGS,kBAAfH,KAAK4lB,MACdthB,EAAI6Y,GAAUnd,KAAK4lB,MACU,kBAAf5lB,KAAK4lB,MACnBthB,EAAI4Y,MAAMld,KAAK4lB,MAAOzI,GACfjf,EAAOO,SAASuB,KAAK4lB,QAC5B5lB,KAAK4lB,MAAMtiB,KAAKgB,EAAK6Y,GACvBA,GAAUnd,KAAKG,SAdRmE,I,kCCtIX,IAAIorD,EAAS,WAAkB,IAAIC,EAAI3vD,KAAK2qB,EAAGglC,EAAIC,MAAMjlC,GAAG,OAAOA,EAAG,MAAM,CAACglC,EAAIE,GAAIF,EAAIG,MAAM,SAAShB,EAAKluD,GAAO,MAAO,CAAEkuD,EAAKa,EAAII,cAAcC,WAAalB,EAAKa,EAAII,cAAcC,UAAU7vD,OAAS,EAAGwqB,EAAG,eAAe,CAACslC,MAAM,CAAC,QAAS,GAAOC,MAAM,CAACtqC,MAAO+pC,EAAIQ,eAAgB9yC,SAAS,SAAU+yC,GAAMT,EAAIQ,eAAeC,GAAKC,WAAW,mBAAmB,CAAC1lC,EAAG,oBAAoB,CAACslC,MAAM,CAAC,KAAOrvD,GAAO0vD,YAAYX,EAAIY,GAAG,CAAC,CAAC5pC,IAAI,QAAQ4V,GAAG,WAAW,MAAO,CAAC5R,EAAG,IAAI,CAAC/C,GAAG,CAAC,MAAQ,SAAS4oC,GAAiC,OAAzBA,EAAOC,kBAAyBd,EAAIe,UAAU5B,EAAKa,EAAII,cAAcnqC,WAAW,CAAC+pC,EAAIgB,GAAGhB,EAAIiB,GAAG9B,EAAKa,EAAII,cAAcc,aAAaC,OAAM,IAAO,MAAK,IAAO,CAACnmC,EAAG,qBAAqB,CAACslC,MAAM,CAAC,KAAOnB,EAAKa,EAAII,cAAcC,WAAWpoC,GAAG,CAAC,aAAa+nC,EAAIe,cAAc,IAAI,GAAG/lC,EAAG,MAAM,CAAComC,YAAY,OAAOnpC,GAAG,CAAC,MAAQ,SAAS4oC,GAAQ,OAAOb,EAAIe,UAAU5B,EAAKa,EAAII,cAAcnqC,WAAW,CAAC+pC,EAAIgB,GAAG,WAAWhB,EAAIiB,GAAG9B,EAAKa,EAAII,cAAcc,QAAQ,iBAAgB,IAEz7BG,EAAkB,GCkBP,GACf15C,0BACA0oB,OACA8vB,MACAmB,mBAAA,WAEAlB,eACAkB,mBAAA,OACAjB,iBACAa,cACAlqC,YACAf,iBAIAtL,gBACA,OACA61C,oBAGAe,SACAR,sBACA,8BC1C4V,I,wBCQxVS,EAAY,eACd,EACAzB,EACAsB,GACA,EACA,KACA,WACA,MAIa,OAAAG,E,2CCnBf,IAAIzB,EAAS,WAAkB,IAAIC,EAAI3vD,KAAK2qB,EAAGglC,EAAIC,MAAMjlC,GAAG,OAAOA,EAAG,YAAY,CAACslC,MAAM,CAAC,SAAW,QAAQC,MAAM,CAACtqC,MAAO+pC,EAAI/pC,MAAOvI,SAAS,SAAU+yC,GAAMT,EAAI/pC,MAAMwqC,GAAKC,WAAW,UAAU,CAAC1lC,EAAG,MAAM,CAAComC,YAAY,kBAAkB,CAACpmC,EAAG,IAAI,CAAComC,YAAY,wBAAwB,CAACpB,EAAIgB,GAAG,QAAQhmC,EAAG,qBAAqB,CAACslC,MAAM,CAAC,KAAON,EAAIG,MAAMloC,GAAG,CAAC,aAAa+nC,EAAIe,cAAc,MAEzXM,EAAkB,G,YCWP,GACfI,YAAAC,yBACAnB,OACAoB,YACAvqC,cAEAiZ,OACAuxB,MACAN,YAEAnB,MACAmB,mBAAA,YAGAO,UACA5rC,OACA7C,eACA,kBAEAI,gBACA,wBAIA7I,gBACA,UAGA42C,SACAR,sBACA,8BC3CuV,I,wBCQnVS,EAAY,eACd,EACAzB,EACAsB,GACA,EACA,KACA,WACA,MAIa,OAAAG,E,gCCnBf,IAAIjzD,EAAS,EAAQ,QAAeA,OAEpC,SAASmrD,EAAahlD,EAAMilD,EAAWzvC,GACrC,IAAI4qC,EAAMpgD,EAAKsV,QAAQC,aAAavV,EAAKwpB,OACrCvpB,EAAMmgD,EAAI,GAAK6E,EAOnB,OALAjlD,EAAKwpB,MAAQ3vB,EAAOkd,OAAO,CACzB/W,EAAKwpB,MAAMxG,MAAM,GACjBnpB,EAAO0gB,KAAK,CAAC/E,EAAUyvC,EAAYhlD,MAG9BA,EAGT1F,EAAQ6a,QAAU,SAAUpV,EAAMgpB,EAAOxT,GACvC,IAAItY,EAAM8rB,EAAMltB,OACZmE,EAAMpG,EAAO8qB,YAAYznB,GACzBG,GAAK,EAET,QAASA,EAAIH,EACX+C,EAAI5C,GAAK2nD,EAAYhlD,EAAMgpB,EAAM3rB,GAAImY,GAGvC,OAAOvV,I,qBCvBT,IAAIpG,EAAS,EAAQ,QAAeA,OAChCitB,EAAY,EAAQ,QAAUA,UAC9B0xB,EAAgB,EAAQ,QAAkBA,cAC1Cz9C,EAAW,EAAQ,QAEvB,SAASo9B,EAAYi1B,GACnBtmC,EAAUzT,KAAK1X,MACfA,KAAKyxD,SAA+B,kBAAbA,EACnBzxD,KAAKyxD,SACPzxD,KAAKyxD,GAAYzxD,KAAK0xD,eAEtB1xD,KAAK+a,MAAQ/a,KAAK0xD,eAEhB1xD,KAAKkuB,SACPluB,KAAK2xD,QAAU3xD,KAAKkuB,OACpBluB,KAAKkuB,OAAS,MAEhBluB,KAAK4xD,SAAW,KAChB5xD,KAAK6xD,UAAY,KAEnBzyD,EAASo9B,EAAYrR,GAErBqR,EAAW/8B,UAAU4a,OAAS,SAAUC,EAAMw3C,EAAUC,GAClC,kBAATz3C,IACTA,EAAOpc,EAAO0gB,KAAKtE,EAAMw3C,IAG3B,IAAIE,EAAUhyD,KAAK2a,QAAQL,GAC3B,OAAIta,KAAKyxD,SAAiBzxD,MAEtB+xD,IACFC,EAAUhyD,KAAKiyD,UAAUD,EAASD,IAG7BC,IAGTx1B,EAAW/8B,UAAUy8C,eAAiB,aACtC1f,EAAW/8B,UAAUyyD,WAAa,WAChC,MAAM,IAAI/yD,MAAM,gDAGlBq9B,EAAW/8B,UAAU0yD,WAAa,WAChC,MAAM,IAAIhzD,MAAM,gDAGlBq9B,EAAW/8B,UAAU2yD,OAAS,WAC5B,MAAM,IAAIjzD,MAAM,2CAGlBq9B,EAAW/8B,UAAUmtB,WAAa,SAAUtS,EAAM/J,EAAGqI,GACnD,IAAIkD,EACJ,IACM9b,KAAKyxD,SACPzxD,KAAK2a,QAAQL,GAEbta,KAAK2kB,KAAK3kB,KAAK2a,QAAQL,IAEzB,MAAO7Z,GACPqb,EAAMrb,EACN,QACAmY,EAAKkD,KAGT0gB,EAAW/8B,UAAUqtB,OAAS,SAAUI,GACtC,IAAIpR,EACJ,IACE9b,KAAK2kB,KAAK3kB,KAAK2xD,WACf,MAAOlxD,GACPqb,EAAMrb,EAGRysB,EAAKpR,IAEP0gB,EAAW/8B,UAAUiyD,eAAiB,SAAUK,GAC9C,IAAIC,EAAUhyD,KAAK2xD,WAAazzD,EAAO6qB,MAAM,GAI7C,OAHIgpC,IACFC,EAAUhyD,KAAKiyD,UAAUD,EAASD,GAAW,IAExCC,GAGTx1B,EAAW/8B,UAAUwyD,UAAY,SAAUrsC,EAAOtnB,EAAK+zD,GAMrD,GALKryD,KAAK4xD,WACR5xD,KAAK4xD,SAAW,IAAI/U,EAAcv+C,GAClC0B,KAAK6xD,UAAYvzD,GAGf0B,KAAK6xD,YAAcvzD,EAAK,MAAM,IAAIa,MAAM,0BAE5C,IAAImF,EAAMtE,KAAK4xD,SAAS10C,MAAM0I,GAK9B,OAJIysC,IACF/tD,GAAOtE,KAAK4xD,SAASvwD,OAGhBiD,GAGThE,EAAO1B,QAAU49B,G,qBClGjB59B,EAAQ68B,cAAgB,EAAQ,QAChC78B,EAAQg9B,eAAiB,EAAQ,QAEjCh9B,EAAQ88B,eAAiB,SAAyB/U,EAAKjK,GACrD,OAAO9d,EAAQ68B,cAAc9U,EAAKjK,GAAK,IAGzC9d,EAAQ+8B,cAAgB,SAAwBhV,EAAKjK,GACnD,OAAO9d,EAAQg9B,eAAejV,EAAKjK,GAAK,K,oCCN1C,IAAI/c,EAAK,EAAQ,QACbP,EAAW,EAAQ,QACnB6wB,EAAO,EAAQ,QAEf3G,EAAQ,EAAQ,QAEpB,SAASgpC,EAAUnuB,GACjBlU,EAAKvY,KAAK1X,KAAM,OAAQmkC,GAExBnkC,KAAKuE,EAAI,IAAI5E,EAAGwkC,EAAK5/B,EAAG,IAAIkR,MAAMzV,KAAKI,KACvCJ,KAAKwE,EAAI,IAAI7E,EAAGwkC,EAAK3/B,EAAG,IAAIiR,MAAMzV,KAAKI,KACvCJ,KAAKuyD,GAAK,IAAI5yD,EAAG,GAAG8V,MAAMzV,KAAKI,KAAK0W,UACpC9W,KAAKqkC,IAAM,IAAI1kC,EAAG,GAAG8V,MAAMzV,KAAKI,KAChCJ,KAAKwyD,IAAMxyD,KAAKuyD,GAAGj8C,OAAOtW,KAAKuE,EAAEyR,OAAOhW,KAAKqkC,MAc/C,SAASO,EAAM9V,EAAO/gB,EAAGkL,GACvBgX,EAAK6U,UAAUptB,KAAK1X,KAAM8uB,EAAO,cACvB,OAAN/gB,GAAoB,OAANkL,GAChBjZ,KAAK+N,EAAI/N,KAAK8uB,MAAMhW,IACpB9Y,KAAKiZ,EAAIjZ,KAAK8uB,MAAM2X,OAEpBzmC,KAAK+N,EAAI,IAAIpO,EAAGoO,EAAG,IACnB/N,KAAKiZ,EAAI,IAAItZ,EAAGsZ,EAAG,IACdjZ,KAAK+N,EAAE3N,MACVJ,KAAK+N,EAAI/N,KAAK+N,EAAE0H,MAAMzV,KAAK8uB,MAAM1uB,MAC9BJ,KAAKiZ,EAAE7Y,MACVJ,KAAKiZ,EAAIjZ,KAAKiZ,EAAExD,MAAMzV,KAAK8uB,MAAM1uB,OAvBvChB,EAASkzD,EAAWriC,GACpB3vB,EAAO1B,QAAU0zD,EAEjBA,EAAU7yD,UAAUyvB,SAAW,SAAkBwX,GAC/C,IAAI34B,EAAI24B,EAAMkR,YAAY7pC,EACtByG,EAAKzG,EAAE0I,SACPmwB,EAAMpyB,EAAG8B,OAAOvI,GAAGiI,OAAOxB,EAAG8B,OAAOtW,KAAKuE,IAAIyR,OAAOjI,GACpDC,EAAI44B,EAAIhwB,UAEZ,OAA+B,IAAxB5I,EAAEyI,SAASxU,IAAI2kC,IAiBxBxnC,EAASwlC,EAAO3U,EAAK6U,WAErBwtB,EAAU7yD,UAAU8xC,YAAc,SAAqBlrB,EAAO/nB,GAC5D,OAAO0B,KAAK0mC,MAAMpd,EAAM9mB,QAAQ6jB,EAAO/nB,GAAM,IAG/Cg0D,EAAU7yD,UAAUinC,MAAQ,SAAe34B,EAAGkL,GAC5C,OAAO,IAAI2rB,EAAM5kC,KAAM+N,EAAGkL,IAG5Bq5C,EAAU7yD,UAAU4nC,cAAgB,SAAuB9S,GACzD,OAAOqQ,EAAM0C,SAAStnC,KAAMu0B,IAG9BqQ,EAAMnlC,UAAUgzD,WAAa,aAI7B7tB,EAAMnlC,UAAUyuC,QAAU,WACxB,OAAOluC,KAAKooC,OAAO5lC,QAAQ,KAAMxC,KAAK8uB,MAAM1f,EAAEzJ,eAGhDi/B,EAAM0C,SAAW,SAAkBxY,EAAOyF,GACxC,OAAO,IAAIqQ,EAAM9V,EAAOyF,EAAI,GAAIA,EAAI,IAAMzF,EAAMhW,MAGlD8rB,EAAMnlC,UAAUmE,QAAU,WACxB,OAAI5D,KAAKmvB,aACA,sBACF,gBAAkBnvB,KAAK+N,EAAE8H,UAAUzT,SAAS,GAAI,GACnD,OAASpC,KAAKiZ,EAAEpD,UAAUzT,SAAS,GAAI,GAAK,KAGlDwiC,EAAMnlC,UAAU0vB,WAAa,WAE3B,OAA0B,IAAnBnvB,KAAKiZ,EAAEvE,KAAK,IAGrBkwB,EAAMnlC,UAAUsoC,IAAM,WAKpB,IAAIxjC,EAAIvE,KAAK+N,EAAEiI,OAAOhW,KAAKiZ,GAEvBy5C,EAAKnuD,EAAEkS,SAEPjS,EAAIxE,KAAK+N,EAAEmI,OAAOlW,KAAKiZ,GAEvB05C,EAAKnuD,EAAEiS,SAEP5V,EAAI6xD,EAAGx8C,OAAOy8C,GAEd3qB,EAAK0qB,EAAGp8C,OAAOq8C,GAEfhpB,EAAK9oC,EAAEyV,OAAOq8C,EAAG38C,OAAOhW,KAAK8uB,MAAM0jC,IAAIl8C,OAAOzV,KAClD,OAAOb,KAAK8uB,MAAM4X,MAAMsB,EAAI2B,IAG9B/E,EAAMnlC,UAAU2I,IAAM,WACpB,MAAM,IAAIjJ,MAAM,sCAGlBylC,EAAMnlC,UAAUmzD,QAAU,SAAiBxjD,EAAGyD,GAK5C,IAAItO,EAAIvE,KAAK+N,EAAEiI,OAAOhW,KAAKiZ,GAEvBzU,EAAIxE,KAAK+N,EAAEmI,OAAOlW,KAAKiZ,GAEvBpY,EAAIuO,EAAErB,EAAEiI,OAAO5G,EAAE6J,GAEjBuR,EAAIpb,EAAErB,EAAEmI,OAAO9G,EAAE6J,GAEjB45C,EAAKroC,EAAElU,OAAO/R,GAEdwnB,EAAKlrB,EAAEyV,OAAO9R,GAEdwjC,EAAKn1B,EAAKoG,EAAE3C,OAAOu8C,EAAG78C,OAAO+V,GAAItV,UAEjCkzB,EAAK92B,EAAK9E,EAAEuI,OAAOu8C,EAAG18C,QAAQ4V,GAAItV,UACtC,OAAOzW,KAAK8uB,MAAM4X,MAAMsB,EAAI2B,IAG9B/E,EAAMnlC,UAAU6B,IAAM,SAAaqD,GAMjC,IALA,IAAIyB,EAAIzB,EAAEnB,QACNe,EAAIvE,KACJwE,EAAIxE,KAAK8uB,MAAM4X,MAAM,KAAM,MAC3B7lC,EAAIb,KAECmR,EAAO,GAAkB,IAAd/K,EAAEsO,KAAK,GAAUtO,EAAEH,OAAO,GAC5CkL,EAAKwT,KAAKve,EAAEJ,MAAM,IAEpB,IAAK,IAAItE,EAAIyP,EAAKhR,OAAS,EAAGuB,GAAK,EAAGA,IACpB,IAAZyP,EAAKzP,IAEP6C,EAAIA,EAAEquD,QAAQpuD,EAAG3D,GAEjB2D,EAAIA,EAAEujC,QAGNvjC,EAAID,EAAEquD,QAAQpuD,EAAG3D,GAEjB0D,EAAIA,EAAEwjC,OAGV,OAAOvjC,GAGTogC,EAAMnlC,UAAUgpC,OAAS,WACvB,MAAM,IAAItpC,MAAM,sCAGlBylC,EAAMnlC,UAAUqzD,QAAU,WACxB,MAAM,IAAI3zD,MAAM,sCAGlBylC,EAAMnlC,UAAU8V,GAAK,SAAY4iC,GAC/B,OAAyC,IAAlCn4C,KAAKooC,OAAOnmC,IAAIk2C,EAAM/P,SAG/BxD,EAAMnlC,UAAUm4C,UAAY,WAG1B,OAFA53C,KAAK+N,EAAI/N,KAAK+N,EAAEuI,OAAOtW,KAAKiZ,EAAEnC,WAC9B9W,KAAKiZ,EAAIjZ,KAAK8uB,MAAMhW,IACb9Y,MAGT4kC,EAAMnlC,UAAU2oC,KAAO,WAIrB,OAFApoC,KAAK43C,YAEE53C,KAAK+N,EAAE8H,Y,uBChLhB,IAAIk9C,EAAO,EAAQ,OAAR,CAAkB,QACzB3xB,EAAW,EAAQ,QACnB5c,EAAM,EAAQ,QACdwuC,EAAU,EAAQ,QAAgB1wC,EAClCG,EAAK,EACLwwC,EAAet3C,OAAOs3C,cAAgB,WACxC,OAAO,GAELC,GAAU,EAAQ,OAAR,EAAoB,WAChC,OAAOD,EAAat3C,OAAOw3C,kBAAkB,QAE3CC,EAAU,SAAU9kC,GACtB0kC,EAAQ1kC,EAAIykC,EAAM,CAAEntC,MAAO,CACzBlkB,EAAG,OAAQ+gB,EACX9f,EAAG,OAGH0wD,EAAU,SAAU/kC,EAAIpF,GAE1B,IAAKkY,EAAS9S,GAAK,MAAoB,iBAANA,EAAiBA,GAAmB,iBAANA,EAAiB,IAAM,KAAOA,EAC7F,IAAK9J,EAAI8J,EAAIykC,GAAO,CAElB,IAAKE,EAAa3kC,GAAK,MAAO,IAE9B,IAAKpF,EAAQ,MAAO,IAEpBkqC,EAAQ9kC,GAER,OAAOA,EAAGykC,GAAMrxD,GAEhB4xD,EAAU,SAAUhlC,EAAIpF,GAC1B,IAAK1E,EAAI8J,EAAIykC,GAAO,CAElB,IAAKE,EAAa3kC,GAAK,OAAO,EAE9B,IAAKpF,EAAQ,OAAO,EAEpBkqC,EAAQ9kC,GAER,OAAOA,EAAGykC,GAAMpwD,GAGhB4wD,EAAW,SAAUjlC,GAEvB,OADI4kC,GAAUM,EAAKC,MAAQR,EAAa3kC,KAAQ9J,EAAI8J,EAAIykC,IAAOK,EAAQ9kC,GAChEA,GAELklC,EAAOlzD,EAAO1B,QAAU,CAC1B80D,IAAKX,EACLU,MAAM,EACNJ,QAASA,EACTC,QAASA,EACTC,SAAUA,I,uBCnDR30D,EAAU0B,EAAO1B,QAAU,SAAckkC,GAC3CA,EAAYA,EAAUjK,cAEtB,IAAI86B,EAAY/0D,EAAQkkC,GACxB,IAAK6wB,EAAW,MAAM,IAAIx0D,MAAM2jC,EAAY,+CAE5C,OAAO,IAAI6wB,GAGb/0D,EAAQw6B,IAAM,EAAQ,QACtBx6B,EAAQ6+B,KAAO,EAAQ,QACvB7+B,EAAQ+uD,OAAS,EAAQ,QACzB/uD,EAAQ4wB,OAAS,EAAQ,QACzB5wB,EAAQ8wB,OAAS,EAAQ,QACzB9wB,EAAQ+wB,OAAS,EAAQ,S,uBCdzB,EAAQ,OAAR,CAA0B,QAAS,GAAG,SAAUxF,GAC9C,OAAO,SAA2B7P,EAAMuyB,EAAY1sC,GAClD,OAAOgqB,EAAKnqB,KAAMsa,EAAMuyB,EAAY1sC,OAErC,I,qCCFH,IAAI0uB,EAAO,EAAQ,QACfvF,EAAQ,EAAQ,QAChBtqB,EAAS,EAAQ,QAErB,SAAS40D,EAAS55C,GAChB,KAAMha,gBAAgB4zD,GACpB,OAAO,IAAIA,EAAS55C,GACtBha,KAAK6uB,KAAO7U,EAAQ6U,KACpB7uB,KAAK6zD,aAAe75C,EAAQ65C,WAE5B7zD,KAAK0Y,OAAS1Y,KAAK6uB,KAAKpF,QACxBzpB,KAAK8zD,WAAa95C,EAAQ85C,YAAc9zD,KAAK6uB,KAAKnF,aAElD1pB,KAAK+zD,QAAU,KACf/zD,KAAKg0D,eAAiB,KACtBh0D,KAAKgqB,EAAI,KACThqB,KAAKi0D,EAAI,KAET,IAAIC,EAAU5qC,EAAM9mB,QAAQwX,EAAQk6C,QAASl6C,EAAQm6C,YAAc,OAC/DC,EAAQ9qC,EAAM9mB,QAAQwX,EAAQo6C,MAAOp6C,EAAQq6C,UAAY,OACzDC,EAAOhrC,EAAM9mB,QAAQwX,EAAQs6C,KAAMt6C,EAAQu6C,SAAW,OAC1Dv1D,EAAOk1D,EAAQ/zD,QAAWH,KAAK8zD,WAAa,EACrC,mCAAqC9zD,KAAK8zD,WAAa,SAC9D9zD,KAAKK,MAAM6zD,EAASE,EAAOE,GAE7Bh0D,EAAO1B,QAAUg1D,EAEjBA,EAASn0D,UAAUY,MAAQ,SAAc6zD,EAASE,EAAOE,GACvD,IAAIjjC,EAAO6iC,EAAQ94C,OAAOg5C,GAAOh5C,OAAOk5C,GAExCt0D,KAAKgqB,EAAI,IAAIpoB,MAAM5B,KAAK0Y,OAAS,GACjC1Y,KAAKi0D,EAAI,IAAIryD,MAAM5B,KAAK0Y,OAAS,GACjC,IAAK,IAAIhX,EAAI,EAAGA,EAAI1B,KAAKi0D,EAAE9zD,OAAQuB,IACjC1B,KAAKgqB,EAAEtoB,GAAK,EACZ1B,KAAKi0D,EAAEvyD,GAAK,EAGd1B,KAAK2a,QAAQ0W,GACbrxB,KAAK+zD,QAAU,EACf/zD,KAAKg0D,eAAiB,iBAGxBJ,EAASn0D,UAAU+0D,MAAQ,WACzB,OAAO,IAAI3lC,EAAK4lC,KAAKz0D,KAAK6uB,KAAM7uB,KAAKgqB,IAGvC4pC,EAASn0D,UAAUkb,QAAU,SAAgB0W,GAC3C,IAAIqjC,EAAO10D,KAAKw0D,QACAn6C,OAAOra,KAAKi0D,GACZ55C,OAAO,CAAE,IACrBgX,IACFqjC,EAAOA,EAAKr6C,OAAOgX,IACrBrxB,KAAKgqB,EAAI0qC,EAAKzjC,SACdjxB,KAAKi0D,EAAIj0D,KAAKw0D,QAAQn6C,OAAOra,KAAKi0D,GAAGhjC,SAChCI,IAGLrxB,KAAKgqB,EAAIhqB,KAAKw0D,QACAn6C,OAAOra,KAAKi0D,GACZ55C,OAAO,CAAE,IACTA,OAAOgX,GACPJ,SACdjxB,KAAKi0D,EAAIj0D,KAAKw0D,QAAQn6C,OAAOra,KAAKi0D,GAAGhjC,WAGvC2iC,EAASn0D,UAAUk1D,OAAS,SAAgBT,EAASC,EAAY/rD,EAAKwsD,GAE1C,kBAAfT,IACTS,EAASxsD,EACTA,EAAM+rD,EACNA,EAAa,MAGfD,EAAU5qC,EAAM9mB,QAAQ0xD,EAASC,GACjC/rD,EAAMkhB,EAAM9mB,QAAQ4F,EAAKwsD,GAEzB51D,EAAOk1D,EAAQ/zD,QAAWH,KAAK8zD,WAAa,EACrC,mCAAqC9zD,KAAK8zD,WAAa,SAE9D9zD,KAAK2a,QAAQu5C,EAAQ94C,OAAOhT,GAAO,KACnCpI,KAAK+zD,QAAU,GAGjBH,EAASn0D,UAAUo1D,SAAW,SAAkBtzD,EAAKjD,EAAK8J,EAAKwsD,GAC7D,GAAI50D,KAAK+zD,QAAU/zD,KAAKg0D,eACtB,MAAM,IAAI70D,MAAM,sBAGC,kBAARb,IACTs2D,EAASxsD,EACTA,EAAM9J,EACNA,EAAM,MAIJ8J,IACFA,EAAMkhB,EAAM9mB,QAAQ4F,EAAKwsD,GAAU,OACnC50D,KAAK2a,QAAQvS,IAGf,IAAI0sD,EAAO,GACX,MAAOA,EAAK30D,OAASoB,EACnBvB,KAAKi0D,EAAIj0D,KAAKw0D,QAAQn6C,OAAOra,KAAKi0D,GAAGhjC,SACrC6jC,EAAOA,EAAK15C,OAAOpb,KAAKi0D,GAG1B,IAAInuD,EAAMgvD,EAAKztC,MAAM,EAAG9lB,GAGxB,OAFAvB,KAAK2a,QAAQvS,GACbpI,KAAK+zD,UACEzqC,EAAMjE,OAAOvf,EAAKxH,K,uBC/G3B,IAAIuJ,EAAM,EAAQ,QACd3J,EAAS,EAAQ,QAAeA,OAChC62D,EAAS,EAAQ,QAErB,SAAS3L,EAAU/kD,GACjB,IAAIC,EAAMD,EAAKsV,QAAQo7B,gBAAgB1wC,EAAKwpB,OAE5C,OADAknC,EAAO1wD,EAAKwpB,OACLvpB,EAGT,IAAI4V,EAAY,GAChBtb,EAAQ6a,QAAU,SAAUpV,EAAMgpB,GAChC,IAAI2nC,EAAWxzD,KAAKiB,KAAK4qB,EAAMltB,OAAS+Z,GACpC9Y,EAAQiD,EAAKypB,OAAO3tB,OACxBkE,EAAKypB,OAAS5vB,EAAOkd,OAAO,CAC1B/W,EAAKypB,OACL5vB,EAAO8qB,YAAYgsC,EAAW96C,KAEhC,IAAK,IAAIxY,EAAI,EAAGA,EAAIszD,EAAUtzD,IAAK,CACjC,IAAI4C,EAAM8kD,EAAS/kD,GACf8Y,EAAS/b,EAAQM,EAAIwY,EACzB7V,EAAKypB,OAAOknB,cAAc1wC,EAAI,GAAI6Y,EAAS,GAC3C9Y,EAAKypB,OAAOknB,cAAc1wC,EAAI,GAAI6Y,EAAS,GAC3C9Y,EAAKypB,OAAOknB,cAAc1wC,EAAI,GAAI6Y,EAAS,GAC3C9Y,EAAKypB,OAAOknB,cAAc1wC,EAAI,GAAI6Y,EAAS,IAE7C,IAAIsnC,EAAMpgD,EAAKypB,OAAOzG,MAAM,EAAGgG,EAAMltB,QAErC,OADAkE,EAAKypB,OAASzpB,EAAKypB,OAAOzG,MAAMgG,EAAMltB,QAC/B0H,EAAIwlB,EAAOo3B,K,gDC3BpB,IAAIxjB,EAAU,EAAQ,QAEtBA,EAAQA,EAAQ0oB,EAAG,QAAS,CAAE1jC,KAAM,EAAQ,UAE5C,EAAQ,OAAR,CAAiC,S,qCCHjC,IAAIqD,EAAQ,EAAQ,QAChByJ,EAAS,EAAQ,QACjBC,EAAY,EAAQ,QACpBh0B,EAAS,EAAQ,QAEjBk0B,EAAQ5J,EAAM4J,MACd+hC,EAAU3rC,EAAM2rC,QAChB9hC,EAAU7J,EAAM6J,QAChB+hC,EAAOliC,EAAUkiC,KACjBC,EAAQniC,EAAUmiC,MAClBC,EAASpiC,EAAUoiC,OACnBC,EAASriC,EAAUqiC,OACnBC,EAAStiC,EAAUsiC,OACnBC,EAASviC,EAAUuiC,OAEnBliC,EAAYN,EAAOM,UAEnBmiC,EAAW,CACb,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,UAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UACpC,UAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,UAAY,UAAY,UAAY,UACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,YAGtC,SAASjsC,IACP,KAAMvpB,gBAAgBupB,GACpB,OAAO,IAAIA,EAEb8J,EAAU3b,KAAK1X,MACfA,KAAKyR,EAAI,CACP,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,YAEtCzR,KAAK2E,EAAI6wD,EACTx1D,KAAKiqB,EAAI,IAAIroB,MAAM,IAErB0nB,EAAMlqB,SAASmqB,EAAQ8J,GACvB/yB,EAAO1B,QAAU2qB,EAEjBA,EAAOrP,UAAY,IACnBqP,EAAOE,QAAU,IACjBF,EAAOG,aAAe,IACtBH,EAAOI,UAAY,GAEnBJ,EAAO9pB,UAAUkb,QAAU,SAAiBzb,EAAKkC,GAG/C,IAFA,IAAI6oB,EAAIjqB,KAAKiqB,EAEJvoB,EAAI,EAAGA,EAAI,GAAIA,IACtBuoB,EAAEvoB,GAAKxC,EAAIkC,EAAQM,GACrB,KAAOA,EAAIuoB,EAAE9pB,OAAQuB,IACnBuoB,EAAEvoB,GAAKuzD,EAAQM,EAAOtrC,EAAEvoB,EAAI,IAAKuoB,EAAEvoB,EAAI,GAAI4zD,EAAOrrC,EAAEvoB,EAAI,KAAMuoB,EAAEvoB,EAAI,KAEtE,IAAI6C,EAAIvE,KAAKyR,EAAE,GACXjN,EAAIxE,KAAKyR,EAAE,GACX5Q,EAAIb,KAAKyR,EAAE,GACX+Y,EAAIxqB,KAAKyR,EAAE,GACXhR,EAAIT,KAAKyR,EAAE,GACX6Q,EAAItiB,KAAKyR,EAAE,GACXqC,EAAI9T,KAAKyR,EAAE,GACXA,EAAIzR,KAAKyR,EAAE,GAGf,IADAzS,EAAOgB,KAAK2E,EAAExE,SAAW8pB,EAAE9pB,QACtBuB,EAAI,EAAGA,EAAIuoB,EAAE9pB,OAAQuB,IAAK,CAC7B,IAAI+zD,EAAKtiC,EAAQ1hB,EAAG4jD,EAAO50D,GAAIy0D,EAAKz0D,EAAG6hB,EAAGxO,GAAI9T,KAAK2E,EAAEjD,GAAIuoB,EAAEvoB,IACvDg0D,EAAKxiC,EAAMkiC,EAAO7wD,GAAI4wD,EAAM5wD,EAAGC,EAAG3D,IACtC4Q,EAAIqC,EACJA,EAAIwO,EACJA,EAAI7hB,EACJA,EAAIyyB,EAAM1I,EAAGirC,GACbjrC,EAAI3pB,EACJA,EAAI2D,EACJA,EAAID,EACJA,EAAI2uB,EAAMuiC,EAAIC,GAGhB11D,KAAKyR,EAAE,GAAKyhB,EAAMlzB,KAAKyR,EAAE,GAAIlN,GAC7BvE,KAAKyR,EAAE,GAAKyhB,EAAMlzB,KAAKyR,EAAE,GAAIjN,GAC7BxE,KAAKyR,EAAE,GAAKyhB,EAAMlzB,KAAKyR,EAAE,GAAI5Q,GAC7Bb,KAAKyR,EAAE,GAAKyhB,EAAMlzB,KAAKyR,EAAE,GAAI+Y,GAC7BxqB,KAAKyR,EAAE,GAAKyhB,EAAMlzB,KAAKyR,EAAE,GAAIhR,GAC7BT,KAAKyR,EAAE,GAAKyhB,EAAMlzB,KAAKyR,EAAE,GAAI6Q,GAC7BtiB,KAAKyR,EAAE,GAAKyhB,EAAMlzB,KAAKyR,EAAE,GAAIqC,GAC7B9T,KAAKyR,EAAE,GAAKyhB,EAAMlzB,KAAKyR,EAAE,GAAIA,IAG/B8X,EAAO9pB,UAAUmqB,QAAU,SAAgBtrB,GACzC,MAAY,QAARA,EACKgrB,EAAMO,QAAQ7pB,KAAKyR,EAAG,OAEtB6X,EAAMQ,QAAQ9pB,KAAKyR,EAAG,S,uBCtGjC,IAAIvT,EAAS,EAAQ,QAAeA,OAChCg8B,EAAa,EAAQ,QACrBvJ,EAAM,EAAQ,QACdglC,EAAK,EAAQ,QAAYnpB,GACzB7sC,EAAK,EAAQ,QACb8wB,EAAY,EAAQ,QACpB7B,EAAS,EAAQ,QAErB,SAASuM,EAAMtM,EAAMlI,EAAKivC,EAAUC,EAAUpzB,GAC5C,IAAI+O,EAAO/gB,EAAU9J,GACrB,GAAI6qB,EAAK1iB,MAAO,CAEd,GAAiB,UAAb+mC,GAAqC,cAAbA,EAA0B,MAAM,IAAI12D,MAAM,0BACtE,OAAO22D,EAAOjnC,EAAM2iB,GACf,GAAkB,QAAdA,EAAKv3B,KAAgB,CAC9B,GAAiB,QAAb47C,EAAoB,MAAM,IAAI12D,MAAM,0BACxC,OAAO42D,EAAQlnC,EAAM2iB,EAAMokB,GAE3B,GAAiB,QAAbC,GAAmC,cAAbA,EAA0B,MAAM,IAAI12D,MAAM,0BAEtE0vB,EAAO3wB,EAAOkd,OAAO,CAACqnB,EAAK5T,IAC3B,IAAIttB,EAAMiwC,EAAKzgB,QAAQprB,aACnB8+C,EAAM,CAAC,EAAG,GACd,MAAO51B,EAAK1uB,OAASskD,EAAItkD,OAAS,EAAIoB,EAAKkjD,EAAI9/B,KAAK,KACpD8/B,EAAI9/B,KAAK,GACT,IAAIjjB,GAAK,EACT,QAASA,EAAImtB,EAAK1uB,OAAQskD,EAAI9/B,KAAKkK,EAAKntB,IAExC,IAAI4C,EAAMqsB,EAAI8zB,EAAKjT,GACnB,OAAOltC,EAGT,SAASwxD,EAAQjnC,EAAM2iB,GACrB,IAAIwkB,EAAUpnC,EAAO4iB,EAAK1iB,MAAMkN,KAAK,MACrC,IAAKg6B,EAAS,MAAM,IAAI72D,MAAM,iBAAmBqyC,EAAK1iB,MAAMkN,KAAK,MAEjE,IAAIlN,EAAQ,IAAI6mC,EAAGK,GACfrvC,EAAMmI,EAAMmnC,eAAezkB,EAAK1f,YAChCxtB,EAAMqiB,EAAIwU,KAAKtM,GAEnB,OAAO3wB,EAAO0gB,KAAKta,EAAI4xD,SAGzB,SAASH,EAASlnC,EAAM2iB,EAAM5T,GAC5B,IAKIj5B,EALAoJ,EAAIyjC,EAAKtO,OAAOO,SAChBr0B,EAAIoiC,EAAKtO,OAAO9zB,EAChBrJ,EAAIyrC,EAAKtO,OAAOn9B,EAChB+N,EAAI09B,EAAKtO,OAAOpvB,EAChB7S,EAAI,IAAItB,EAAG,GAEXsrB,EAAIkrC,EAAStnC,EAAM9oB,GAAG/H,IAAI+H,GAC1B+I,GAAI,EACJsnD,EAAKC,EAAOtoD,EAAGhI,EAAG8oB,EAAM+O,GAC5B,OAAa,IAAN9uB,EACLnK,EAAI2xD,EAAQvwD,EAAGqwD,EAAIx4B,GACnB38B,EAAIs1D,EAAMziD,EAAGnP,EAAGyK,EAAGrJ,GACnB+I,EAAInK,EAAEgQ,KAAK5O,GAAGsG,KAAK4e,EAAE7iB,IAAI2F,EAAEzM,IAAIL,KAAKjD,IAAI+H,GACtB,IAAd+I,EAAE4F,KAAK,KACT5F,GAAI,EACJ7N,EAAI,IAAItB,EAAG,IAGf,OAAOu2D,EAAMj1D,EAAG6N,GAGlB,SAASonD,EAAOj1D,EAAG6N,GACjB7N,EAAIA,EAAEuB,UACNsM,EAAIA,EAAEtM,UAGK,IAAPvB,EAAE,KAAWA,EAAI,CAAC,GAAGma,OAAOna,IACrB,IAAP6N,EAAE,KAAWA,EAAI,CAAC,GAAGsM,OAAOtM,IAEhC,IAAI7L,EAAQhC,EAAEd,OAAS2O,EAAE3O,OAAS,EAC9B2F,EAAM,CAAC,GAAM7C,EAAO,EAAMhC,EAAEd,QAEhC,OADA2F,EAAMA,EAAIsV,OAAOna,EAAG,CAAC,EAAM6N,EAAE3O,QAAS2O,GAC/B5Q,EAAO0gB,KAAK9Y,GAGrB,SAASuwD,EAAQtoD,EAAGhI,EAAG8oB,EAAM+O,GAE3B,GADA7vB,EAAI7P,EAAO0gB,KAAK7Q,EAAEvL,WACduL,EAAE5N,OAAS4F,EAAEJ,aAAc,CAC7B,IAAI9B,EAAQ3F,EAAO6qB,MAAMhjB,EAAEJ,aAAeoI,EAAE5N,QAC5C4N,EAAI7P,EAAOkd,OAAO,CAACvX,EAAOkK,IAE5B,IAAIyoD,EAAO3nC,EAAK1uB,OACZs2D,EAAQC,EAAY7nC,EAAM9oB,GAC1B6b,EAAI1jB,EAAO6qB,MAAMytC,GACrB50C,EAAEqE,KAAK,GACP,IAAIthB,EAAIzG,EAAO6qB,MAAMytC,GAKrB,OAJA7xD,EAAIu1B,EAAW0D,EAAMj5B,GAAG0V,OAAOuH,GAAGvH,OAAOnc,EAAO0gB,KAAK,CAAC,KAAKvE,OAAOtM,GAAGsM,OAAOo8C,GAAOxlC,SACnFrP,EAAIsY,EAAW0D,EAAMj5B,GAAG0V,OAAOuH,GAAGqP,SAClCtsB,EAAIu1B,EAAW0D,EAAMj5B,GAAG0V,OAAOuH,GAAGvH,OAAOnc,EAAO0gB,KAAK,CAAC,KAAKvE,OAAOtM,GAAGsM,OAAOo8C,GAAOxlC,SACnFrP,EAAIsY,EAAW0D,EAAMj5B,GAAG0V,OAAOuH,GAAGqP,SAC3B,CAAEtsB,EAAGA,EAAGid,EAAGA,GAGpB,SAASu0C,EAAUQ,EAAO5wD,GACxB,IAAIoL,EAAO,IAAIxR,EAAGg3D,GACdnkD,GAASmkD,EAAMx2D,QAAU,GAAK4F,EAAE9B,YAEpC,OADIuO,EAAQ,GAAGrB,EAAKS,MAAMY,GACnBrB,EAGT,SAASulD,EAAavlD,EAAMpL,GAC1BoL,EAAOglD,EAAShlD,EAAMpL,GACtBoL,EAAOA,EAAKnT,IAAI+H,GAChB,IAAIzB,EAAMpG,EAAO0gB,KAAKzN,EAAK3O,WAC3B,GAAI8B,EAAInE,OAAS4F,EAAEJ,aAAc,CAC/B,IAAI9B,EAAQ3F,EAAO6qB,MAAMhjB,EAAEJ,aAAerB,EAAInE,QAC9CmE,EAAMpG,EAAOkd,OAAO,CAACvX,EAAOS,IAE9B,OAAOA,EAGT,SAASgyD,EAASvwD,EAAGqwD,EAAIx4B,GACvB,IAAIx3B,EACAzB,EAEJ,EAAG,CACDyB,EAAIlI,EAAO6qB,MAAM,GAEjB,MAAkB,EAAX3iB,EAAEjG,OAAa4F,EAAE9B,YACtBmyD,EAAGx0C,EAAIsY,EAAW0D,EAAMw4B,EAAGzxD,GAAG0V,OAAO+7C,EAAGx0C,GAAGqP,SAC3C7qB,EAAIlI,EAAOkd,OAAO,CAAChV,EAAGgwD,EAAGx0C,IAG3Bjd,EAAIwxD,EAAS/vD,EAAGL,GAChBqwD,EAAGzxD,EAAIu1B,EAAW0D,EAAMw4B,EAAGzxD,GAAG0V,OAAO+7C,EAAGx0C,GAAGvH,OAAOnc,EAAO0gB,KAAK,CAAC,KAAKqS,SACpEmlC,EAAGx0C,EAAIsY,EAAW0D,EAAMw4B,EAAGzxD,GAAG0V,OAAO+7C,EAAGx0C,GAAGqP,gBACtB,IAAdtsB,EAAE1C,IAAI8D,IAEf,OAAOpB,EAGT,SAAS4xD,EAAOziD,EAAGnP,EAAGyK,EAAGrJ,GACvB,OAAO+N,EAAE2B,MAAM9V,EAAG4Z,KAAKnK,IAAI4H,OAAOrS,GAAGkR,UAAU7X,IAAI+H,GAGrDzF,EAAO1B,QAAUu8B,EACjB76B,EAAO1B,QAAQy3D,OAASA,EACxB/1D,EAAO1B,QAAQ03D,QAAUA,G,uBCtIzB,IAAIl3D,EAAW,EAAQ,QACnBw3D,EAAS,EAAQ,QACjB7sC,EAAO,EAAQ,QACf7rB,EAAS,EAAQ,QAAeA,OAEhC+rB,EAAI,IAAIroB,MAAM,IAElB,SAASi1D,IACP72D,KAAKmqB,OAELnqB,KAAKoqB,GAAKH,EAEVF,EAAKrS,KAAK1X,KAAM,GAAI,IAGtBZ,EAASy3D,EAAQD,GAEjBC,EAAOp3D,UAAU0qB,KAAO,WAUtB,OATAnqB,KAAKyqB,GAAK,WACVzqB,KAAK0qB,GAAK,UACV1qB,KAAK2qB,GAAK,UACV3qB,KAAK4qB,GAAK,WACV5qB,KAAK6qB,GAAK,WACV7qB,KAAK82D,GAAK,WACV92D,KAAK+2D,GAAK,WACV/2D,KAAKg3D,GAAK,WAEHh3D,MAGT62D,EAAOp3D,UAAUurB,MAAQ,WACvB,IAAIC,EAAI/sB,EAAO8qB,YAAY,IAU3B,OARAiC,EAAEC,aAAalrB,KAAKyqB,GAAI,GACxBQ,EAAEC,aAAalrB,KAAK0qB,GAAI,GACxBO,EAAEC,aAAalrB,KAAK2qB,GAAI,GACxBM,EAAEC,aAAalrB,KAAK4qB,GAAI,IACxBK,EAAEC,aAAalrB,KAAK6qB,GAAI,IACxBI,EAAEC,aAAalrB,KAAK82D,GAAI,IACxB7rC,EAAEC,aAAalrB,KAAK+2D,GAAI,IAEjB9rC,GAGT3qB,EAAO1B,QAAUi4D,G,qCCpDjB,cAEA,SAASnkC,IACP,MAAM,IAAIvzB,MAAM,8GAElB,IAAI83D,EAAa,EAAQ,QACrBC,EAAc,EAAQ,QACtBh5D,EAAS+4D,EAAW/4D,OACpBi5D,EAAmBF,EAAWG,WAC9Bn3C,EAASzE,EAAOyE,QAAUzE,EAAOmX,SACjC0kC,EAAa71D,KAAK6B,IAAI,EAAG,IAAM,EACnC,SAASi0D,EAAcn6C,EAAQhd,GAC7B,GAAsB,kBAAXgd,GAAuBA,IAAWA,EAC3C,MAAM,IAAIgM,UAAU,2BAGtB,GAAIhM,EAASk6C,GAAcl6C,EAAS,EAClC,MAAM,IAAIgM,UAAU,2BAGtB,GAAIhM,EAASg6C,GAAoBh6C,EAAShd,EACxC,MAAM,IAAIouB,WAAW,uBAIzB,SAASgpC,EAAY7zD,EAAMyZ,EAAQhd,GACjC,GAAoB,kBAATuD,GAAqBA,IAASA,EACvC,MAAM,IAAIylB,UAAU,yBAGtB,GAAIzlB,EAAO2zD,GAAc3zD,EAAO,EAC9B,MAAM,IAAIylB,UAAU,yBAGtB,GAAIzlB,EAAOyZ,EAAShd,GAAUuD,EAAOyzD,EACnC,MAAM,IAAI5oC,WAAW,oBAUzB,SAASuN,EAAYpf,EAAKS,EAAQzZ,EAAMqoB,GACtC,IAAK7tB,EAAOO,SAASie,MAAUA,aAAelB,EAAO+H,YACnD,MAAM,IAAI4F,UAAU,iDAGtB,GAAsB,oBAAXhM,EACT4O,EAAK5O,EACLA,EAAS,EACTzZ,EAAOgZ,EAAIvc,YACN,GAAoB,oBAATuD,EAChBqoB,EAAKroB,EACLA,EAAOgZ,EAAIvc,OAASgd,OACf,GAAkB,oBAAP4O,EAChB,MAAM,IAAI5C,UAAU,oCAItB,OAFAmuC,EAAan6C,EAAQT,EAAIvc,QACzBo3D,EAAW7zD,EAAMyZ,EAAQT,EAAIvc,QACtBq3D,EAAW96C,EAAKS,EAAQzZ,EAAMqoB,GAGvC,SAASyrC,EAAY96C,EAAKS,EAAQzZ,EAAMqoB,GACtC,GAAIzM,EAAQue,QAAS,CACnB,IAAI45B,EAAS/6C,EAAIvC,OACbu9C,EAAO,IAAIn0C,WAAWk0C,EAAQt6C,EAAQzZ,GAE1C,OADAuc,EAAOE,gBAAgBu3C,GACnB3rC,OACFzM,EAAQwT,UAAS,WACf/G,EAAG,KAAMrP,MAINA,EAET,IAAIqP,EAAJ,CAUA,IAAI1F,EAAQ6wC,EAAYxzD,GAExB,OADA2iB,EAAM/iB,KAAKoZ,EAAKS,GACTT,EAXLw6C,EAAYxzD,GAAM,SAAUoY,EAAKuK,GAC/B,GAAIvK,EACF,OAAOiQ,EAAGjQ,GAEZuK,EAAM/iB,KAAKoZ,EAAKS,GAChB4O,EAAG,KAAMrP,MAQf,SAAS0D,EAAgB1D,EAAKS,EAAQzZ,GAIpC,GAHsB,qBAAXyZ,IACTA,EAAS,IAENjf,EAAOO,SAASie,MAAUA,aAAelB,EAAO+H,YACnD,MAAM,IAAI4F,UAAU,iDAStB,OANAmuC,EAAan6C,EAAQT,EAAIvc,aAEZzB,IAATgF,IAAoBA,EAAOgZ,EAAIvc,OAASgd,GAE5Co6C,EAAW7zD,EAAMyZ,EAAQT,EAAIvc,QAEtBq3D,EAAW96C,EAAKS,EAAQzZ,GApE5Buc,GAAUA,EAAOE,kBAAqBb,EAAQue,SACjDj/B,EAAQk9B,WAAaA,EACrBl9B,EAAQwhB,eAAiBA,IAEzBxhB,EAAQk9B,WAAapJ,EACrB9zB,EAAQwhB,eAAiBsS,K,kECzC3B,IAAIpJ,EAAQ1qB,EAEZ,SAAS4D,EAAQtD,EAAKZ,GACpB,GAAIsD,MAAMC,QAAQ3C,GAChB,OAAOA,EAAImoB,QACb,IAAKnoB,EACH,MAAO,GACT,IAAI4G,EAAM,GACV,GAAmB,kBAAR5G,EAAkB,CAC3B,IAAK,IAAIwC,EAAI,EAAGA,EAAIxC,EAAIiB,OAAQuB,IAC9BoE,EAAIpE,GAAc,EAATxC,EAAIwC,GACf,OAAOoE,EAET,GAAY,QAARxH,EAAe,CACjBY,EAAMA,EAAImD,QAAQ,eAAgB,IAC9BnD,EAAIiB,OAAS,IAAM,IACrBjB,EAAM,IAAMA,GACd,IAASwC,EAAI,EAAGA,EAAIxC,EAAIiB,OAAQuB,GAAK,EACnCoE,EAAI6e,KAAKS,SAASlmB,EAAIwC,GAAKxC,EAAIwC,EAAI,GAAI,UAEzC,IAASA,EAAI,EAAGA,EAAIxC,EAAIiB,OAAQuB,IAAK,CACnC,IAAIb,EAAI3B,EAAI4B,WAAWY,GACnB4E,EAAKzF,GAAK,EACV4D,EAAS,IAAJ5D,EACLyF,EACFR,EAAI6e,KAAKre,EAAI7B,GAEbqB,EAAI6e,KAAKlgB,GAGf,OAAOqB,EAIT,SAAS6xD,EAAMz0D,GACb,OAAoB,IAAhBA,EAAK/C,OACA,IAAM+C,EAENA,EAIX,SAAS2/C,EAAM3jD,GAEb,IADA,IAAI4G,EAAM,GACDpE,EAAI,EAAGA,EAAIxC,EAAIiB,OAAQuB,IAC9BoE,GAAO6xD,EAAMz4D,EAAIwC,GAAGU,SAAS,KAC/B,OAAO0D,EAdTwjB,EAAM9mB,QAAUA,EAQhB8mB,EAAMquC,MAAQA,EAQdruC,EAAMu5B,MAAQA,EAEdv5B,EAAMjE,OAAS,SAAgBuyC,EAAKt5D,GAClC,MAAY,QAARA,EACKukD,EAAM+U,GAENA,I,oCCxDX,Y,oCC2BAt3D,EAAO1B,QAAU4vB,EAEjB,IAAIrD,EAAY,EAAQ,QAGpB4W,EAAOpmB,OAAOuN,OAAO,EAAQ,SAMjC,SAASsF,EAAYxU,GACnB,KAAMha,gBAAgBwuB,GAAc,OAAO,IAAIA,EAAYxU,GAE3DmR,EAAUzT,KAAK1X,KAAMga,GARvB+nB,EAAK3iC,SAAW,EAAQ,QAGxB2iC,EAAK3iC,SAASovB,EAAarD,GAQ3BqD,EAAY/uB,UAAUmtB,WAAa,SAAUS,EAAOjE,EAAU2C,GAC5DA,EAAG,KAAMsB,K,uBC5CX,IAAI4T,EAAU,EAAQ,QAEtBA,EAAQA,EAAQS,EAAG,OAAQ,CAAEphB,IAAK,WAAc,OAAO,IAAIwD,MAAOM,c,uBCHlE,IAAI+mC,EAAK,EAAQ,QACb0M,EAAU,EAAQ,QAEtB,SAAShO,EAAYtd,GACnBvsC,KAAKusC,KAAOA,GAAQ,IAAIsrB,EAAQC,KAElCx3D,EAAO1B,QAAUirD,EAEjBA,EAAY3gC,OAAS,SAAgBqjB,GACnC,OAAO,IAAIsd,EAAYtd,IAGzBsd,EAAYpqD,UAAUs4D,WAAa,SAAoBloD,GACrD,IAAItO,EAAMsO,EAAE5L,YACR+zD,EAAYx2D,KAAKiB,KAAKlB,EAAM,GAIhC,GACE,IAAIgD,EAAI,IAAI4mD,EAAGnrD,KAAKusC,KAAKsoB,SAASmD,UAC7BzzD,EAAEtC,IAAI4N,IAAM,GAEnB,OAAOtL,GAGTslD,EAAYpqD,UAAUw4D,WAAa,SAAoB72D,EAAO82D,GAE5D,IAAIx0D,EAAOw0D,EAAK7vD,IAAIjH,GACpB,OAAOA,EAAMgH,IAAIpI,KAAK+3D,WAAWr0D,KAGnCmmD,EAAYpqD,UAAUqvC,KAAO,SAAcj/B,EAAGlL,EAAGonB,GAC/C,IAAIxqB,EAAMsO,EAAE5L,YACR7D,EAAM+qD,EAAG5xC,KAAK1J,GACdsoD,EAAO,IAAIhN,EAAG,GAAG11C,MAAMrV,GAEtBuE,IACHA,EAAInD,KAAKM,IAAI,EAAIP,EAAM,GAAM,IAI/B,IADA,IAAI62D,EAAKvoD,EAAEwC,KAAK,GACPvD,EAAI,GAAIspD,EAAGtxD,MAAMgI,GAAIA,KAM9B,IALA,IAAI0b,EAAI3a,EAAEkC,KAAKjD,GAEXupD,EAAMD,EAAG3iD,MAAMrV,GAEfnC,GAAQ,EACL0G,EAAI,EAAGA,IAAK,CACjB,IAAIJ,EAAIvE,KAAKi4D,WAAW,IAAI9M,EAAG,GAAIiN,GAC/BrsC,GACFA,EAAGxnB,GAEL,IAAIwJ,EAAIxJ,EAAEkR,MAAMrV,GAAK4W,OAAOwT,GAC5B,GAAoB,IAAhBzc,EAAE9L,IAAIk2D,IAA8B,IAAfpqD,EAAE9L,IAAIo2D,GAA/B,CAGA,IAAK,IAAI32D,EAAI,EAAGA,EAAIoN,EAAGpN,IAAK,CAG1B,GAFAqM,EAAIA,EAAE0I,SAEc,IAAhB1I,EAAE9L,IAAIk2D,GACR,OAAO,EACT,GAAmB,IAAfpqD,EAAE9L,IAAIo2D,GACR,MAGJ,GAAI32D,IAAMoN,EACR,OAAO,GAGX,OAAO7Q,GAGT4rD,EAAYpqD,UAAU64D,WAAa,SAAoBzoD,EAAGlL,GACxD,IAAIpD,EAAMsO,EAAE5L,YACR7D,EAAM+qD,EAAG5xC,KAAK1J,GACdsoD,EAAO,IAAIhN,EAAG,GAAG11C,MAAMrV,GAEtBuE,IACHA,EAAInD,KAAKM,IAAI,EAAIP,EAAM,GAAM,IAI/B,IADA,IAAI62D,EAAKvoD,EAAEwC,KAAK,GACPvD,EAAI,GAAIspD,EAAGtxD,MAAMgI,GAAIA,KAK9B,IAJA,IAAI0b,EAAI3a,EAAEkC,KAAKjD,GAEXupD,EAAMD,EAAG3iD,MAAMrV,GAEZuE,EAAI,EAAGA,IAAK,CACjB,IAAIJ,EAAIvE,KAAKi4D,WAAW,IAAI9M,EAAG,GAAIiN,GAE/BtkD,EAAIjE,EAAEwE,IAAI9P,GACd,GAAkB,IAAduP,EAAEY,KAAK,GACT,OAAOZ,EAET,IAAI/F,EAAIxJ,EAAEkR,MAAMrV,GAAK4W,OAAOwT,GAC5B,GAAoB,IAAhBzc,EAAE9L,IAAIk2D,IAA8B,IAAfpqD,EAAE9L,IAAIo2D,GAA/B,CAGA,IAAK,IAAI32D,EAAI,EAAGA,EAAIoN,EAAGpN,IAAK,CAG1B,GAFAqM,EAAIA,EAAE0I,SAEc,IAAhB1I,EAAE9L,IAAIk2D,GACR,OAAOpqD,EAAE8H,UAAUxD,KAAK,GAAGgC,IAAIxE,GACjC,GAAmB,IAAf9B,EAAE9L,IAAIo2D,GACR,MAGJ,GAAI32D,IAAMoN,EAER,OADAf,EAAIA,EAAE0I,SACC1I,EAAE8H,UAAUxD,KAAK,GAAGgC,IAAIxE,IAInC,OAAO,I,qBCjHT,IAAI0oD,EAAY/2D,KAAK6B,IAAI,EAAG,IAAM,EAElC/C,EAAO1B,QAAU,SAAU2/B,EAAYG,GACrC,GAA0B,kBAAfH,EACT,MAAM,IAAIpV,UAAU,2BAGtB,GAAIoV,EAAa,EACf,MAAM,IAAIpV,UAAU,kBAGtB,GAAsB,kBAAXuV,EACT,MAAM,IAAIvV,UAAU,2BAGtB,GAAIuV,EAAS,GAAKA,EAAS65B,GAAa75B,IAAWA,EACjD,MAAM,IAAIvV,UAAU,oB,oCCSxB,IAAIjrB,EAAS,EAAQ,QAAeA,OAGhCs6D,EAAat6D,EAAOs6D,YAAc,SAAUpvC,GAE9C,OADAA,EAAW,GAAKA,EACRA,GAAYA,EAASyP,eAC3B,IAAK,MAAM,IAAK,OAAO,IAAK,QAAQ,IAAK,QAAQ,IAAK,SAAS,IAAK,SAAS,IAAK,OAAO,IAAK,QAAQ,IAAK,UAAU,IAAK,WAAW,IAAK,MACxI,OAAO,EACT,QACE,OAAO,IAIb,SAAS4/B,EAAmBn6D,GAC1B,IAAKA,EAAK,MAAO,OACjB,IAAIo6D,EACJ,MAAO,EACL,OAAQp6D,GACN,IAAK,OACL,IAAK,QACH,MAAO,OACT,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,MAAO,UACT,IAAK,SACL,IAAK,SACH,MAAO,SACT,IAAK,SACL,IAAK,QACL,IAAK,MACH,OAAOA,EACT,QACE,GAAIo6D,EAAS,OACbp6D,GAAO,GAAKA,GAAKu6B,cACjB6/B,GAAU,GAOlB,SAASC,EAAkBr6D,GACzB,IAAIs6D,EAAOH,EAAmBn6D,GAC9B,GAAoB,kBAATs6D,IAAsB16D,EAAOs6D,aAAeA,IAAeA,EAAWl6D,IAAO,MAAM,IAAIa,MAAM,qBAAuBb,GAC/H,OAAOs6D,GAAQt6D,EAOjB,SAASu+C,EAAczzB,GAErB,IAAI0X,EACJ,OAFA9gC,KAAKopB,SAAWuvC,EAAkBvvC,GAE1BppB,KAAKopB,UACX,IAAK,UACHppB,KAAK64D,KAAOC,EACZ94D,KAAKqB,IAAM03D,EACXj4B,EAAK,EACL,MACF,IAAK,OACH9gC,KAAKg5D,SAAWC,EAChBn4B,EAAK,EACL,MACF,IAAK,SACH9gC,KAAK64D,KAAOK,EACZl5D,KAAKqB,IAAM83D,EACXr4B,EAAK,EACL,MACF,QAGE,OAFA9gC,KAAKkd,MAAQk8C,OACbp5D,KAAKqB,IAAMg4D,GAGfr5D,KAAKs5D,SAAW,EAChBt5D,KAAKu5D,UAAY,EACjBv5D,KAAKw5D,SAAWt7D,EAAO8qB,YAAY8X,GAoCrC,SAAS24B,EAAcC,GACrB,OAAIA,GAAQ,IAAa,EAAWA,GAAQ,IAAM,EAAa,EAAWA,GAAQ,IAAM,GAAa,EAAWA,GAAQ,IAAM,GAAa,EACpIA,GAAQ,IAAM,GAAQ,GAAK,EAMpC,SAASC,EAAoBt1D,EAAMqY,EAAKhb,GACtC,IAAIgB,EAAIga,EAAIvc,OAAS,EACrB,GAAIuC,EAAIhB,EAAG,OAAO,EAClB,IAAIo/B,EAAK24B,EAAc/8C,EAAIha,IAC3B,OAAIo+B,GAAM,GACJA,EAAK,IAAGz8B,EAAKi1D,SAAWx4B,EAAK,GAC1BA,KAEHp+B,EAAIhB,IAAa,IAARo/B,EAAkB,GACjCA,EAAK24B,EAAc/8C,EAAIha,IACnBo+B,GAAM,GACJA,EAAK,IAAGz8B,EAAKi1D,SAAWx4B,EAAK,GAC1BA,KAEHp+B,EAAIhB,IAAa,IAARo/B,EAAkB,GACjCA,EAAK24B,EAAc/8C,EAAIha,IACnBo+B,GAAM,GACJA,EAAK,IACI,IAAPA,EAAUA,EAAK,EAAOz8B,EAAKi1D,SAAWx4B,EAAK,GAE1CA,GAEF,IAWT,SAAS84B,EAAoBv1D,EAAMqY,EAAKtN,GACtC,GAAwB,OAAV,IAATsN,EAAI,IAEP,OADArY,EAAKi1D,SAAW,EACT,IAET,GAAIj1D,EAAKi1D,SAAW,GAAK58C,EAAIvc,OAAS,EAAG,CACvC,GAAwB,OAAV,IAATuc,EAAI,IAEP,OADArY,EAAKi1D,SAAW,EACT,IAET,GAAIj1D,EAAKi1D,SAAW,GAAK58C,EAAIvc,OAAS,GACZ,OAAV,IAATuc,EAAI,IAEP,OADArY,EAAKi1D,SAAW,EACT,KAOf,SAASL,EAAav8C,GACpB,IAAItN,EAAIpP,KAAKu5D,UAAYv5D,KAAKs5D,SAC1Br4D,EAAI24D,EAAoB55D,KAAM0c,EAAKtN,GACvC,YAAU1Q,IAANuC,EAAwBA,EACxBjB,KAAKs5D,UAAY58C,EAAIvc,QACvBuc,EAAIpZ,KAAKtD,KAAKw5D,SAAUpqD,EAAG,EAAGpP,KAAKs5D,UAC5Bt5D,KAAKw5D,SAASp3D,SAASpC,KAAKopB,SAAU,EAAGppB,KAAKu5D,aAEvD78C,EAAIpZ,KAAKtD,KAAKw5D,SAAUpqD,EAAG,EAAGsN,EAAIvc,aAClCH,KAAKs5D,UAAY58C,EAAIvc,SAMvB,SAAS05D,EAASn9C,EAAKhb,GACrB,IAAIuB,EAAQ02D,EAAoB35D,KAAM0c,EAAKhb,GAC3C,IAAK1B,KAAKs5D,SAAU,OAAO58C,EAAIta,SAAS,OAAQV,GAChD1B,KAAKu5D,UAAYt2D,EACjB,IAAI5B,EAAMqb,EAAIvc,QAAU8C,EAAQjD,KAAKs5D,UAErC,OADA58C,EAAIpZ,KAAKtD,KAAKw5D,SAAU,EAAGn4D,GACpBqb,EAAIta,SAAS,OAAQV,EAAGL,GAKjC,SAASy4D,EAAQp9C,GACf,IAAIzb,EAAIyb,GAAOA,EAAIvc,OAASH,KAAKkd,MAAMR,GAAO,GAC9C,OAAI1c,KAAKs5D,SAAiBr4D,EAAI,IACvBA,EAOT,SAAS63D,EAAUp8C,EAAKhb,GACtB,IAAKgb,EAAIvc,OAASuB,GAAK,IAAM,EAAG,CAC9B,IAAIT,EAAIyb,EAAIta,SAAS,UAAWV,GAChC,GAAIT,EAAG,CACL,IAAIJ,EAAII,EAAEH,WAAWG,EAAEd,OAAS,GAChC,GAAIU,GAAK,OAAUA,GAAK,MAKtB,OAJAb,KAAKs5D,SAAW,EAChBt5D,KAAKu5D,UAAY,EACjBv5D,KAAKw5D,SAAS,GAAK98C,EAAIA,EAAIvc,OAAS,GACpCH,KAAKw5D,SAAS,GAAK98C,EAAIA,EAAIvc,OAAS,GAC7Bc,EAAEomB,MAAM,GAAI,GAGvB,OAAOpmB,EAKT,OAHAjB,KAAKs5D,SAAW,EAChBt5D,KAAKu5D,UAAY,EACjBv5D,KAAKw5D,SAAS,GAAK98C,EAAIA,EAAIvc,OAAS,GAC7Buc,EAAIta,SAAS,UAAWV,EAAGgb,EAAIvc,OAAS,GAKjD,SAAS44D,EAASr8C,GAChB,IAAIzb,EAAIyb,GAAOA,EAAIvc,OAASH,KAAKkd,MAAMR,GAAO,GAC9C,GAAI1c,KAAKs5D,SAAU,CACjB,IAAIj4D,EAAMrB,KAAKu5D,UAAYv5D,KAAKs5D,SAChC,OAAOr4D,EAAIjB,KAAKw5D,SAASp3D,SAAS,UAAW,EAAGf,GAElD,OAAOJ,EAGT,SAASi4D,EAAWx8C,EAAKhb,GACvB,IAAImO,GAAK6M,EAAIvc,OAASuB,GAAK,EAC3B,OAAU,IAANmO,EAAgB6M,EAAIta,SAAS,SAAUV,IAC3C1B,KAAKs5D,SAAW,EAAIzpD,EACpB7P,KAAKu5D,UAAY,EACP,IAAN1pD,EACF7P,KAAKw5D,SAAS,GAAK98C,EAAIA,EAAIvc,OAAS,IAEpCH,KAAKw5D,SAAS,GAAK98C,EAAIA,EAAIvc,OAAS,GACpCH,KAAKw5D,SAAS,GAAK98C,EAAIA,EAAIvc,OAAS,IAE/Buc,EAAIta,SAAS,SAAUV,EAAGgb,EAAIvc,OAAS0P,IAGhD,SAASspD,EAAUz8C,GACjB,IAAIzb,EAAIyb,GAAOA,EAAIvc,OAASH,KAAKkd,MAAMR,GAAO,GAC9C,OAAI1c,KAAKs5D,SAAiBr4D,EAAIjB,KAAKw5D,SAASp3D,SAAS,SAAU,EAAG,EAAIpC,KAAKs5D,UACpEr4D,EAIT,SAASm4D,EAAY18C,GACnB,OAAOA,EAAIta,SAASpC,KAAKopB,UAG3B,SAASiwC,EAAU38C,GACjB,OAAOA,GAAOA,EAAIvc,OAASH,KAAKkd,MAAMR,GAAO,GAzN/C9d,EAAQi+C,cAAgBA,EA6BxBA,EAAcp9C,UAAUyd,MAAQ,SAAUR,GACxC,GAAmB,IAAfA,EAAIvc,OAAc,MAAO,GAC7B,IAAIc,EACAS,EACJ,GAAI1B,KAAKs5D,SAAU,CAEjB,GADAr4D,EAAIjB,KAAKg5D,SAASt8C,QACRhe,IAANuC,EAAiB,MAAO,GAC5BS,EAAI1B,KAAKs5D,SACTt5D,KAAKs5D,SAAW,OAEhB53D,EAAI,EAEN,OAAIA,EAAIgb,EAAIvc,OAAec,EAAIA,EAAIjB,KAAK64D,KAAKn8C,EAAKhb,GAAK1B,KAAK64D,KAAKn8C,EAAKhb,GAC/DT,GAAK,IAGd47C,EAAcp9C,UAAU4B,IAAMy4D,EAG9Bjd,EAAcp9C,UAAUo5D,KAAOgB,EAG/Bhd,EAAcp9C,UAAUu5D,SAAW,SAAUt8C,GAC3C,GAAI1c,KAAKs5D,UAAY58C,EAAIvc,OAEvB,OADAuc,EAAIpZ,KAAKtD,KAAKw5D,SAAUx5D,KAAKu5D,UAAYv5D,KAAKs5D,SAAU,EAAGt5D,KAAKs5D,UACzDt5D,KAAKw5D,SAASp3D,SAASpC,KAAKopB,SAAU,EAAGppB,KAAKu5D,WAEvD78C,EAAIpZ,KAAKtD,KAAKw5D,SAAUx5D,KAAKu5D,UAAYv5D,KAAKs5D,SAAU,EAAG58C,EAAIvc,QAC/DH,KAAKs5D,UAAY58C,EAAIvc,S,uBCtIvB,IAAI0uB,EAAOjwB,EAEXiwB,EAAKvF,MAAQ,EAAQ,QACrBuF,EAAKkE,OAAS,EAAQ,QACtBlE,EAAKuK,IAAM,EAAQ,QACnBvK,EAAKkrC,OAAS,EAAQ,QACtBlrC,EAAK4lC,KAAO,EAAQ,QAGpB5lC,EAAK4O,KAAO5O,EAAKuK,IAAIqE,KACrB5O,EAAKW,OAASX,EAAKuK,IAAI5J,OACvBX,EAAK8+B,OAAS9+B,EAAKuK,IAAIu0B,OACvB9+B,EAAKa,OAASb,EAAKuK,IAAI1J,OACvBb,EAAKc,OAASd,EAAKuK,IAAIzJ,OACvBd,EAAKmrC,UAAYnrC,EAAKkrC,OAAOC,W,uBCL7B,IAAI56D,EAAW,EAAQ,QACnB2qB,EAAO,EAAQ,QACf7rB,EAAS,EAAQ,QAAeA,OAEhC8rB,EAAI,CACN,WAAY,YAAY,YAAgB,WAGtCC,EAAI,IAAIroB,MAAM,IAElB,SAASq4D,IACPj6D,KAAKmqB,OACLnqB,KAAKoqB,GAAKH,EAEVF,EAAKrS,KAAK1X,KAAM,GAAI,IAetB,SAASk6D,EAAOv4D,GACd,OAAQA,GAAO,EAAMA,IAAQ,GAG/B,SAAS0oB,EAAO1oB,GACd,OAAQA,GAAO,EAAMA,IAAQ,GAG/B,SAAS2oB,EAAQ3oB,GACf,OAAQA,GAAO,GAAOA,IAAQ,EAGhC,SAAS4oB,EAAIzb,EAAGtK,EAAG3D,EAAG2pB,GACpB,OAAU,IAAN1b,EAAiBtK,EAAI3D,GAAQ2D,EAAKgmB,EAC5B,IAAN1b,EAAiBtK,EAAI3D,EAAM2D,EAAIgmB,EAAM3pB,EAAI2pB,EACtChmB,EAAI3D,EAAI2pB,EA3BjBprB,EAAS66D,EAAMlwC,GAEfkwC,EAAKx6D,UAAU0qB,KAAO,WAOpB,OANAnqB,KAAKyqB,GAAK,WACVzqB,KAAK0qB,GAAK,WACV1qB,KAAK2qB,GAAK,WACV3qB,KAAK4qB,GAAK,UACV5qB,KAAK6qB,GAAK,WAEH7qB,MAqBTi6D,EAAKx6D,UAAUkb,QAAU,SAAUmQ,GASjC,IARA,IAAIb,EAAIjqB,KAAKoqB,GAET7lB,EAAc,EAAVvE,KAAKyqB,GACTjmB,EAAc,EAAVxE,KAAK0qB,GACT7pB,EAAc,EAAVb,KAAK2qB,GACTH,EAAc,EAAVxqB,KAAK4qB,GACTnqB,EAAc,EAAVT,KAAK6qB,GAEJnpB,EAAI,EAAGA,EAAI,KAAMA,EAAGuoB,EAAEvoB,GAAKopB,EAAEC,YAAgB,EAAJrpB,GAClD,KAAOA,EAAI,KAAMA,EAAGuoB,EAAEvoB,GAAKw4D,EAAMjwC,EAAEvoB,EAAI,GAAKuoB,EAAEvoB,EAAI,GAAKuoB,EAAEvoB,EAAI,IAAMuoB,EAAEvoB,EAAI,KAEzE,IAAK,IAAIgB,EAAI,EAAGA,EAAI,KAAMA,EAAG,CAC3B,IAAIoM,KAAOpM,EAAI,IACX0D,EAAKikB,EAAM9lB,GAAKgmB,EAAGzb,EAAGtK,EAAG3D,EAAG2pB,GAAK/pB,EAAIwpB,EAAEvnB,GAAKsnB,EAAElb,GAAM,EAExDrO,EAAI+pB,EACJA,EAAI3pB,EACJA,EAAIypB,EAAO9lB,GACXA,EAAID,EACJA,EAAI6B,EAGNpG,KAAKyqB,GAAMlmB,EAAIvE,KAAKyqB,GAAM,EAC1BzqB,KAAK0qB,GAAMlmB,EAAIxE,KAAK0qB,GAAM,EAC1B1qB,KAAK2qB,GAAM9pB,EAAIb,KAAK2qB,GAAM,EAC1B3qB,KAAK4qB,GAAMJ,EAAIxqB,KAAK4qB,GAAM,EAC1B5qB,KAAK6qB,GAAMpqB,EAAIT,KAAK6qB,GAAM,GAG5BovC,EAAKx6D,UAAUurB,MAAQ,WACrB,IAAIC,EAAI/sB,EAAO8qB,YAAY,IAQ3B,OANAiC,EAAEC,aAAuB,EAAVlrB,KAAKyqB,GAAQ,GAC5BQ,EAAEC,aAAuB,EAAVlrB,KAAK0qB,GAAQ,GAC5BO,EAAEC,aAAuB,EAAVlrB,KAAK2qB,GAAQ,GAC5BM,EAAEC,aAAuB,EAAVlrB,KAAK4qB,GAAQ,IAC5BK,EAAEC,aAAuB,EAAVlrB,KAAK6qB,GAAQ,IAErBI,GAGT3qB,EAAO1B,QAAUq7D,G,oCChGjB,MAAMh4B,EAAOrjC,EAEbqjC,EAAKk4B,OAAS,EAAQ,QAEtBl4B,EAAK8W,OAAS,EAAQ,QAAcA,OACpC9W,EAAKpiC,KAAO,EAAQ,QACpBoiC,EAAKhmB,UAAY,EAAQ,QACzBgmB,EAAKrD,SAAW,EAAQ,QACxBqD,EAAK2K,SAAW,EAAQ,S,wBCVxB,2BACE,aAGA,SAAS5tC,EAAQC,EAAKC,GACpB,IAAKD,EAAK,MAAM,IAAIE,MAAMD,GAAO,oBAKnC,SAASE,EAAUC,EAAMC,GACvBD,EAAKE,OAASD,EACd,IAAIE,EAAW,aACfA,EAASC,UAAYH,EAAUG,UAC/BJ,EAAKI,UAAY,IAAID,EACrBH,EAAKI,UAAUC,YAAcL,EAK/B,SAASM,EAAIC,EAAQC,EAAMC,GACzB,GAAIH,EAAGI,KAAKH,GACV,OAAOA,EAGTI,KAAKC,SAAW,EAChBD,KAAKE,MAAQ,KACbF,KAAKG,OAAS,EAGdH,KAAKI,IAAM,KAEI,OAAXR,IACW,OAATC,GAA0B,OAATA,IACnBC,EAASD,EACTA,EAAO,IAGTG,KAAKK,MAAMT,GAAU,EAAGC,GAAQ,GAAIC,GAAU,OAYlD,IAAI5B,EATkB,kBAAXoC,EACTA,EAAO1B,QAAUe,EAEjBf,EAAQe,GAAKA,EAGfA,EAAGA,GAAKA,EACRA,EAAGY,SAAW,GAGd,IAEIrC,EADoB,qBAAXsC,QAAmD,qBAAlBA,OAAOtC,OACxCsC,OAAOtC,OAEP,EAAQ,IAAUA,OAE7B,MAAOuC,IAgIT,SAASC,EAAeC,EAAQC,GAC9B,IAAIC,EAAIF,EAAOG,WAAWF,GAE1B,OAAIC,GAAK,IAAMA,GAAK,GACXA,EAAI,GAEFA,GAAK,IAAMA,GAAK,IAClBA,EAAI,GAGHA,EAAI,GAAM,GAItB,SAASE,EAAcJ,EAAQK,EAAYJ,GACzC,IAAIK,EAAIP,EAAcC,EAAQC,GAI9B,OAHIA,EAAQ,GAAKI,IACfC,GAAKP,EAAcC,EAAQC,EAAQ,IAAM,GAEpCK,EA8CT,SAASC,EAAWC,EAAKC,EAAOC,EAAKC,GAGnC,IAFA,IAAIL,EAAI,EACJM,EAAMC,KAAKC,IAAIN,EAAIhB,OAAQkB,GACtBK,EAAIN,EAAOM,EAAIH,EAAKG,IAAK,CAChC,IAAIb,EAAIM,EAAIL,WAAWY,GAAK,GAE5BT,GAAKK,EAIHL,GADEJ,GAAK,GACFA,EAAI,GAAK,GAGLA,GAAK,GACTA,EAAI,GAAK,GAITA,EAGT,OAAOI,EAnNTtB,EAAGI,KAAO,SAAe4B,GACvB,OAAIA,aAAehC,GAIJ,OAARgC,GAA+B,kBAARA,GAC5BA,EAAIjC,YAAYa,WAAaZ,EAAGY,UAAYqB,MAAMC,QAAQF,EAAIzB,QAGlEP,EAAGmC,IAAM,SAAcC,EAAMC,GAC3B,OAAID,EAAKE,IAAID,GAAS,EAAUD,EACzBC,GAGTrC,EAAG8B,IAAM,SAAcM,EAAMC,GAC3B,OAAID,EAAKE,IAAID,GAAS,EAAUD,EACzBC,GAGTrC,EAAGF,UAAUY,MAAQ,SAAeT,EAAQC,EAAMC,GAChD,GAAsB,kBAAXF,EACT,OAAOI,KAAKkC,YAAYtC,EAAQC,EAAMC,GAGxC,GAAsB,kBAAXF,EACT,OAAOI,KAAKmC,WAAWvC,EAAQC,EAAMC,GAG1B,QAATD,IACFA,EAAO,IAETb,EAAOa,KAAiB,EAAPA,IAAaA,GAAQ,GAAKA,GAAQ,IAEnDD,EAASA,EAAOwC,WAAWC,QAAQ,OAAQ,IAC3C,IAAIjB,EAAQ,EACM,MAAdxB,EAAO,KACTwB,IACApB,KAAKC,SAAW,GAGdmB,EAAQxB,EAAOO,SACJ,KAATN,EACFG,KAAKsC,UAAU1C,EAAQwB,EAAOtB,IAE9BE,KAAKuC,WAAW3C,EAAQC,EAAMuB,GACf,OAAXtB,GACFE,KAAKmC,WAAWnC,KAAKwC,UAAW3C,EAAMC,MAM9CH,EAAGF,UAAUyC,YAAc,SAAsBtC,EAAQC,EAAMC,GACzDF,EAAS,IACXI,KAAKC,SAAW,EAChBL,GAAUA,GAERA,EAAS,UACXI,KAAKE,MAAQ,CAAW,SAATN,GACfI,KAAKG,OAAS,GACLP,EAAS,kBAClBI,KAAKE,MAAQ,CACF,SAATN,EACCA,EAAS,SAAa,UAEzBI,KAAKG,OAAS,IAEdnB,EAAOY,EAAS,kBAChBI,KAAKE,MAAQ,CACF,SAATN,EACCA,EAAS,SAAa,SACvB,GAEFI,KAAKG,OAAS,GAGD,OAAXL,GAGJE,KAAKmC,WAAWnC,KAAKwC,UAAW3C,EAAMC,IAGxCH,EAAGF,UAAU0C,WAAa,SAAqBvC,EAAQC,EAAMC,GAG3D,GADAd,EAAgC,kBAAlBY,EAAOO,QACjBP,EAAOO,QAAU,EAGnB,OAFAH,KAAKE,MAAQ,CAAE,GACfF,KAAKG,OAAS,EACPH,KAGTA,KAAKG,OAASqB,KAAKiB,KAAK7C,EAAOO,OAAS,GACxCH,KAAKE,MAAQ,IAAI0B,MAAM5B,KAAKG,QAC5B,IAAK,IAAIuB,EAAI,EAAGA,EAAI1B,KAAKG,OAAQuB,IAC/B1B,KAAKE,MAAMwB,GAAK,EAGlB,IAAIgB,EAAGC,EACHC,EAAM,EACV,GAAe,OAAX9C,EACF,IAAK4B,EAAI9B,EAAOO,OAAS,EAAGuC,EAAI,EAAGhB,GAAK,EAAGA,GAAK,EAC9CiB,EAAI/C,EAAO8B,GAAM9B,EAAO8B,EAAI,IAAM,EAAM9B,EAAO8B,EAAI,IAAM,GACzD1B,KAAKE,MAAMwC,IAAOC,GAAKC,EAAO,SAC9B5C,KAAKE,MAAMwC,EAAI,GAAMC,IAAO,GAAKC,EAAQ,SACzCA,GAAO,GACHA,GAAO,KACTA,GAAO,GACPF,UAGC,GAAe,OAAX5C,EACT,IAAK4B,EAAI,EAAGgB,EAAI,EAAGhB,EAAI9B,EAAOO,OAAQuB,GAAK,EACzCiB,EAAI/C,EAAO8B,GAAM9B,EAAO8B,EAAI,IAAM,EAAM9B,EAAO8B,EAAI,IAAM,GACzD1B,KAAKE,MAAMwC,IAAOC,GAAKC,EAAO,SAC9B5C,KAAKE,MAAMwC,EAAI,GAAMC,IAAO,GAAKC,EAAQ,SACzCA,GAAO,GACHA,GAAO,KACTA,GAAO,GACPF,KAIN,OAAO1C,KAAK6C,SAyBdlD,EAAGF,UAAU6C,UAAY,SAAoB1C,EAAQwB,EAAOtB,GAE1DE,KAAKG,OAASqB,KAAKiB,MAAM7C,EAAOO,OAASiB,GAAS,GAClDpB,KAAKE,MAAQ,IAAI0B,MAAM5B,KAAKG,QAC5B,IAAK,IAAIuB,EAAI,EAAGA,EAAI1B,KAAKG,OAAQuB,IAC/B1B,KAAKE,MAAMwB,GAAK,EAIlB,IAGIiB,EAHAC,EAAM,EACNF,EAAI,EAGR,GAAe,OAAX5C,EACF,IAAK4B,EAAI9B,EAAOO,OAAS,EAAGuB,GAAKN,EAAOM,GAAK,EAC3CiB,EAAI5B,EAAanB,EAAQwB,EAAOM,IAAMkB,EACtC5C,KAAKE,MAAMwC,IAAU,SAAJC,EACbC,GAAO,IACTA,GAAO,GACPF,GAAK,EACL1C,KAAKE,MAAMwC,IAAMC,IAAM,IAEvBC,GAAO,MAGN,CACL,IAAIE,EAAclD,EAAOO,OAASiB,EAClC,IAAKM,EAAIoB,EAAc,IAAM,EAAI1B,EAAQ,EAAIA,EAAOM,EAAI9B,EAAOO,OAAQuB,GAAK,EAC1EiB,EAAI5B,EAAanB,EAAQwB,EAAOM,IAAMkB,EACtC5C,KAAKE,MAAMwC,IAAU,SAAJC,EACbC,GAAO,IACTA,GAAO,GACPF,GAAK,EACL1C,KAAKE,MAAMwC,IAAMC,IAAM,IAEvBC,GAAO,EAKb5C,KAAK6C,SA2BPlD,EAAGF,UAAU8C,WAAa,SAAqB3C,EAAQC,EAAMuB,GAE3DpB,KAAKE,MAAQ,CAAE,GACfF,KAAKG,OAAS,EAGd,IAAK,IAAI4C,EAAU,EAAGC,EAAU,EAAGA,GAAW,SAAWA,GAAWnD,EAClEkD,IAEFA,IACAC,EAAWA,EAAUnD,EAAQ,EAO7B,IALA,IAAIoD,EAAQrD,EAAOO,OAASiB,EACxBpD,EAAMiF,EAAQF,EACd1B,EAAMG,KAAKC,IAAIwB,EAAOA,EAAQjF,GAAOoD,EAErC8B,EAAO,EACFxB,EAAIN,EAAOM,EAAIL,EAAKK,GAAKqB,EAChCG,EAAOhC,EAAUtB,EAAQ8B,EAAGA,EAAIqB,EAASlD,GAEzCG,KAAKmD,MAAMH,GACPhD,KAAKE,MAAM,GAAKgD,EAAO,SACzBlD,KAAKE,MAAM,IAAMgD,EAEjBlD,KAAKoD,OAAOF,GAIhB,GAAY,IAARlF,EAAW,CACb,IAAIqF,EAAM,EAGV,IAFAH,EAAOhC,EAAUtB,EAAQ8B,EAAG9B,EAAOO,OAAQN,GAEtC6B,EAAI,EAAGA,EAAI1D,EAAK0D,IACnB2B,GAAOxD,EAGTG,KAAKmD,MAAME,GACPrD,KAAKE,MAAM,GAAKgD,EAAO,SACzBlD,KAAKE,MAAM,IAAMgD,EAEjBlD,KAAKoD,OAAOF,GAIhBlD,KAAK6C,SAGPlD,EAAGF,UAAU6D,KAAO,SAAeC,GACjCA,EAAKrD,MAAQ,IAAI0B,MAAM5B,KAAKG,QAC5B,IAAK,IAAIuB,EAAI,EAAGA,EAAI1B,KAAKG,OAAQuB,IAC/B6B,EAAKrD,MAAMwB,GAAK1B,KAAKE,MAAMwB,GAE7B6B,EAAKpD,OAASH,KAAKG,OACnBoD,EAAKtD,SAAWD,KAAKC,SACrBsD,EAAKnD,IAAMJ,KAAKI,KAGlBT,EAAGF,UAAU+D,MAAQ,WACnB,IAAIvC,EAAI,IAAItB,EAAG,MAEf,OADAK,KAAKsD,KAAKrC,GACHA,GAGTtB,EAAGF,UAAUgE,QAAU,SAAkBC,GACvC,MAAO1D,KAAKG,OAASuD,EACnB1D,KAAKE,MAAMF,KAAKG,UAAY,EAE9B,OAAOH,MAITL,EAAGF,UAAUoD,MAAQ,WACnB,MAAO7C,KAAKG,OAAS,GAAqC,IAAhCH,KAAKE,MAAMF,KAAKG,OAAS,GACjDH,KAAKG,SAEP,OAAOH,KAAK2D,aAGdhE,EAAGF,UAAUkE,UAAY,WAKvB,OAHoB,IAAhB3D,KAAKG,QAAkC,IAAlBH,KAAKE,MAAM,KAClCF,KAAKC,SAAW,GAEXD,MAGTL,EAAGF,UAAUmE,QAAU,WACrB,OAAQ5D,KAAKI,IAAM,UAAY,SAAWJ,KAAKoC,SAAS,IAAM,KAiChE,IAAIyB,EAAQ,CACV,GACA,IACA,KACA,MACA,OACA,QACA,SACA,UACA,WACA,YACA,aACA,cACA,eACA,gBACA,iBACA,kBACA,mBACA,oBACA,qBACA,sBACA,uBACA,wBACA,yBACA,0BACA,2BACA,6BAGEC,EAAa,CACf,EAAG,EACH,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EACvB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAGhBC,EAAa,CACf,EAAG,EACH,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAC5D,SAAU,IAAU,SAAU,SAAU,SAAU,QAAS,SAC3D,SAAU,SAAU,SAAU,SAAU,KAAU,QAAS,QAC3D,QAAS,QAAS,QAAS,SAAU,SAAU,SAAU,SACzD,MAAU,SAAU,SAAU,SAAU,SAAU,SAAU,UAyM9D,SAASC,EAAYrC,GAGnB,IAFA,IAAIgB,EAAI,IAAIf,MAAMD,EAAIsC,aAEbC,EAAM,EAAGA,EAAMvB,EAAExC,OAAQ+D,IAAO,CACvC,IAAItB,EAAOsB,EAAM,GAAM,EACnBC,EAAOD,EAAM,GAEjBvB,EAAEuB,IAAQvC,EAAIzB,MAAM0C,GAAQ,GAAKuB,KAAWA,EAG9C,OAAOxB,EAmWT,SAASyB,EAAYC,EAAM1C,EAAK2C,GAC9BA,EAAIrE,SAAW0B,EAAI1B,SAAWoE,EAAKpE,SACnC,IAAIsB,EAAO8C,EAAKlE,OAASwB,EAAIxB,OAAU,EACvCmE,EAAInE,OAASoB,EACbA,EAAOA,EAAM,EAAK,EAGlB,IAAIgD,EAAoB,EAAhBF,EAAKnE,MAAM,GACfsE,EAAmB,EAAf7C,EAAIzB,MAAM,GACde,EAAIsD,EAAIC,EAERC,EAAS,SAAJxD,EACLyD,EAASzD,EAAI,SAAa,EAC9BqD,EAAIpE,MAAM,GAAKuE,EAEf,IAAK,IAAIE,EAAI,EAAGA,EAAIpD,EAAKoD,IAAK,CAM5B,IAHA,IAAIC,EAASF,IAAU,GACnBG,EAAgB,SAARH,EACRI,EAAOtD,KAAKC,IAAIkD,EAAGhD,EAAIxB,OAAS,GAC3BuC,EAAIlB,KAAKM,IAAI,EAAG6C,EAAIN,EAAKlE,OAAS,GAAIuC,GAAKoC,EAAMpC,IAAK,CAC7D,IAAIhB,EAAKiD,EAAIjC,EAAK,EAClB6B,EAAoB,EAAhBF,EAAKnE,MAAMwB,GACf8C,EAAmB,EAAf7C,EAAIzB,MAAMwC,GACdzB,EAAIsD,EAAIC,EAAIK,EACZD,GAAW3D,EAAI,SAAa,EAC5B4D,EAAY,SAAJ5D,EAEVqD,EAAIpE,MAAMyE,GAAa,EAARE,EACfH,EAAiB,EAATE,EAQV,OANc,IAAVF,EACFJ,EAAIpE,MAAMyE,GAAa,EAARD,EAEfJ,EAAInE,SAGCmE,EAAIzB,QAzlBblD,EAAGF,UAAU2C,SAAW,SAAmBvC,EAAMkF,GAI/C,IAAIT,EACJ,GAJAzE,EAAOA,GAAQ,GACfkF,EAAoB,EAAVA,GAAe,EAGZ,KAATlF,GAAwB,QAATA,EAAgB,CACjCyE,EAAM,GAGN,IAFA,IAAI1B,EAAM,EACN8B,EAAQ,EACHhD,EAAI,EAAGA,EAAI1B,KAAKG,OAAQuB,IAAK,CACpC,IAAIiB,EAAI3C,KAAKE,MAAMwB,GACfwB,GAA+B,UAArBP,GAAKC,EAAO8B,IAAmBtC,SAAS,IACtDsC,EAAS/B,IAAO,GAAKC,EAAQ,SAE3B0B,EADY,IAAVI,GAAehD,IAAM1B,KAAKG,OAAS,EAC/B0D,EAAM,EAAIX,EAAK/C,QAAU+C,EAAOoB,EAEhCpB,EAAOoB,EAEf1B,GAAO,EACHA,GAAO,KACTA,GAAO,GACPlB,KAGU,IAAVgD,IACFJ,EAAMI,EAAMtC,SAAS,IAAMkC,GAE7B,MAAOA,EAAInE,OAAS4E,IAAY,EAC9BT,EAAM,IAAMA,EAKd,OAHsB,IAAlBtE,KAAKC,WACPqE,EAAM,IAAMA,GAEPA,EAGT,GAAIzE,KAAiB,EAAPA,IAAaA,GAAQ,GAAKA,GAAQ,GAAI,CAElD,IAAImF,EAAYlB,EAAWjE,GAEvBoF,EAAYlB,EAAWlE,GAC3ByE,EAAM,GACN,IAAIzD,EAAIb,KAAKwD,QACb3C,EAAEZ,SAAW,EACb,OAAQY,EAAEqE,SAAU,CAClB,IAAIjE,EAAIJ,EAAEsE,KAAKF,GAAW7C,SAASvC,GACnCgB,EAAIA,EAAEuE,MAAMH,GAKVX,EAHGzD,EAAEqE,SAGCjE,EAAIqD,EAFJT,EAAMmB,EAAY/D,EAAEd,QAAUc,EAAIqD,EAKxCtE,KAAKkF,WACPZ,EAAM,IAAMA,GAEd,MAAOA,EAAInE,OAAS4E,IAAY,EAC9BT,EAAM,IAAMA,EAKd,OAHsB,IAAlBtE,KAAKC,WACPqE,EAAM,IAAMA,GAEPA,EAGTtF,GAAO,EAAO,oCAGhBW,EAAGF,UAAU4F,SAAW,WACtB,IAAIC,EAAMtF,KAAKE,MAAM,GASrB,OARoB,IAAhBF,KAAKG,OACPmF,GAAuB,SAAhBtF,KAAKE,MAAM,GACO,IAAhBF,KAAKG,QAAkC,IAAlBH,KAAKE,MAAM,GAEzCoF,GAAO,iBAAoC,SAAhBtF,KAAKE,MAAM,GAC7BF,KAAKG,OAAS,GACvBnB,GAAO,EAAO,8CAEU,IAAlBgB,KAAKC,UAAmBqF,EAAMA,GAGxC3F,EAAGF,UAAU8F,OAAS,WACpB,OAAOvF,KAAKoC,SAAS,KAGvBzC,EAAGF,UAAU+F,SAAW,SAAmB1F,EAAQK,GAEjD,OADAnB,EAAyB,qBAAXd,GACP8B,KAAKyF,YAAYvH,EAAQ4B,EAAQK,IAG1CR,EAAGF,UAAU+C,QAAU,SAAkB1C,EAAQK,GAC/C,OAAOH,KAAKyF,YAAY7D,MAAO9B,EAAQK,IAGzCR,EAAGF,UAAUgG,YAAc,SAAsBC,EAAW5F,EAAQK,GAClE,IAAIwF,EAAa3F,KAAK2F,aAClBC,EAAYzF,GAAUqB,KAAKM,IAAI,EAAG6D,GACtC3G,EAAO2G,GAAcC,EAAW,yCAChC5G,EAAO4G,EAAY,EAAG,+BAEtB5F,KAAK6C,QACL,IAGI2B,EAAG9C,EAHHmE,EAA0B,OAAX/F,EACfgG,EAAM,IAAIJ,EAAUE,GAGpBG,EAAI/F,KAAKwD,QACb,GAAKqC,EAYE,CACL,IAAKnE,EAAI,GAAIqE,EAAEb,SAAUxD,IACvB8C,EAAIuB,EAAEC,MAAM,KACZD,EAAEE,OAAO,GAETH,EAAIpE,GAAK8C,EAGX,KAAO9C,EAAIkE,EAAWlE,IACpBoE,EAAIpE,GAAK,MArBM,CAEjB,IAAKA,EAAI,EAAGA,EAAIkE,EAAYD,EAAYjE,IACtCoE,EAAIpE,GAAK,EAGX,IAAKA,EAAI,GAAIqE,EAAEb,SAAUxD,IACvB8C,EAAIuB,EAAEC,MAAM,KACZD,EAAEE,OAAO,GAETH,EAAIF,EAAYlE,EAAI,GAAK8C,EAe7B,OAAOsB,GAGLtE,KAAK0E,MACPvG,EAAGF,UAAU0G,WAAa,SAAqBxD,GAC7C,OAAO,GAAKnB,KAAK0E,MAAMvD,IAGzBhD,EAAGF,UAAU0G,WAAa,SAAqBxD,GAC7C,IAAIyD,EAAIzD,EACJ1B,EAAI,EAiBR,OAhBImF,GAAK,OACPnF,GAAK,GACLmF,KAAO,IAELA,GAAK,KACPnF,GAAK,EACLmF,KAAO,GAELA,GAAK,IACPnF,GAAK,EACLmF,KAAO,GAELA,GAAK,IACPnF,GAAK,EACLmF,KAAO,GAEFnF,EAAImF,GAIfzG,EAAGF,UAAU4G,UAAY,SAAoB1D,GAE3C,GAAU,IAANA,EAAS,OAAO,GAEpB,IAAIyD,EAAIzD,EACJ1B,EAAI,EAoBR,OAnBqB,KAAZ,KAAJmF,KACHnF,GAAK,GACLmF,KAAO,IAEU,KAAV,IAAJA,KACHnF,GAAK,EACLmF,KAAO,GAES,KAAT,GAAJA,KACHnF,GAAK,EACLmF,KAAO,GAES,KAAT,EAAJA,KACHnF,GAAK,EACLmF,KAAO,GAES,KAAT,EAAJA,IACHnF,IAEKA,GAITtB,EAAGF,UAAUwE,UAAY,WACvB,IAAItB,EAAI3C,KAAKE,MAAMF,KAAKG,OAAS,GAC7BmG,EAAKtG,KAAKmG,WAAWxD,GACzB,OAA2B,IAAnB3C,KAAKG,OAAS,GAAUmG,GAiBlC3G,EAAGF,UAAU8G,SAAW,WACtB,GAAIvG,KAAKkF,SAAU,OAAO,EAG1B,IADA,IAAIjE,EAAI,EACCS,EAAI,EAAGA,EAAI1B,KAAKG,OAAQuB,IAAK,CACpC,IAAI8C,EAAIxE,KAAKqG,UAAUrG,KAAKE,MAAMwB,IAElC,GADAT,GAAKuD,EACK,KAANA,EAAU,MAEhB,OAAOvD,GAGTtB,EAAGF,UAAUkG,WAAa,WACxB,OAAOnE,KAAKiB,KAAKzC,KAAKiE,YAAc,IAGtCtE,EAAGF,UAAU+G,OAAS,SAAiBC,GACrC,OAAsB,IAAlBzG,KAAKC,SACAD,KAAK0G,MAAMC,MAAMF,GAAOG,MAAM,GAEhC5G,KAAKwD,SAGd7D,EAAGF,UAAUoH,SAAW,SAAmBJ,GACzC,OAAIzG,KAAK8G,MAAML,EAAQ,GACdzG,KAAK+G,KAAKN,GAAOG,MAAM,GAAGI,OAE5BhH,KAAKwD,SAGd7D,EAAGF,UAAUwH,MAAQ,WACnB,OAAyB,IAAlBjH,KAAKC,UAIdN,EAAGF,UAAUyH,IAAM,WACjB,OAAOlH,KAAKwD,QAAQwD,QAGtBrH,EAAGF,UAAUuH,KAAO,WAKlB,OAJKhH,KAAKkF,WACRlF,KAAKC,UAAY,GAGZD,MAITL,EAAGF,UAAU0H,KAAO,SAAexF,GACjC,MAAO3B,KAAKG,OAASwB,EAAIxB,OACvBH,KAAKE,MAAMF,KAAKG,UAAY,EAG9B,IAAK,IAAIuB,EAAI,EAAGA,EAAIC,EAAIxB,OAAQuB,IAC9B1B,KAAKE,MAAMwB,GAAK1B,KAAKE,MAAMwB,GAAKC,EAAIzB,MAAMwB,GAG5C,OAAO1B,KAAK6C,SAGdlD,EAAGF,UAAU2H,IAAM,SAAczF,GAE/B,OADA3C,EAA0C,KAAlCgB,KAAKC,SAAW0B,EAAI1B,WACrBD,KAAKmH,KAAKxF,IAInBhC,EAAGF,UAAU4H,GAAK,SAAa1F,GAC7B,OAAI3B,KAAKG,OAASwB,EAAIxB,OAAeH,KAAKwD,QAAQ4D,IAAIzF,GAC/CA,EAAI6B,QAAQ4D,IAAIpH,OAGzBL,EAAGF,UAAU6H,IAAM,SAAc3F,GAC/B,OAAI3B,KAAKG,OAASwB,EAAIxB,OAAeH,KAAKwD,QAAQ2D,KAAKxF,GAChDA,EAAI6B,QAAQ2D,KAAKnH,OAI1BL,EAAGF,UAAU8H,MAAQ,SAAgB5F,GAEnC,IAAI6C,EAEFA,EADExE,KAAKG,OAASwB,EAAIxB,OAChBwB,EAEA3B,KAGN,IAAK,IAAI0B,EAAI,EAAGA,EAAI8C,EAAErE,OAAQuB,IAC5B1B,KAAKE,MAAMwB,GAAK1B,KAAKE,MAAMwB,GAAKC,EAAIzB,MAAMwB,GAK5C,OAFA1B,KAAKG,OAASqE,EAAErE,OAETH,KAAK6C,SAGdlD,EAAGF,UAAU+H,KAAO,SAAe7F,GAEjC,OADA3C,EAA0C,KAAlCgB,KAAKC,SAAW0B,EAAI1B,WACrBD,KAAKuH,MAAM5F,IAIpBhC,EAAGF,UAAUgI,IAAM,SAAc9F,GAC/B,OAAI3B,KAAKG,OAASwB,EAAIxB,OAAeH,KAAKwD,QAAQgE,KAAK7F,GAChDA,EAAI6B,QAAQgE,KAAKxH,OAG1BL,EAAGF,UAAUiI,KAAO,SAAe/F,GACjC,OAAI3B,KAAKG,OAASwB,EAAIxB,OAAeH,KAAKwD,QAAQ+D,MAAM5F,GACjDA,EAAI6B,QAAQ+D,MAAMvH,OAI3BL,EAAGF,UAAUkI,MAAQ,SAAgBhG,GAEnC,IAAI4C,EACAC,EACAxE,KAAKG,OAASwB,EAAIxB,QACpBoE,EAAIvE,KACJwE,EAAI7C,IAEJ4C,EAAI5C,EACJ6C,EAAIxE,MAGN,IAAK,IAAI0B,EAAI,EAAGA,EAAI8C,EAAErE,OAAQuB,IAC5B1B,KAAKE,MAAMwB,GAAK6C,EAAErE,MAAMwB,GAAK8C,EAAEtE,MAAMwB,GAGvC,GAAI1B,OAASuE,EACX,KAAO7C,EAAI6C,EAAEpE,OAAQuB,IACnB1B,KAAKE,MAAMwB,GAAK6C,EAAErE,MAAMwB,GAM5B,OAFA1B,KAAKG,OAASoE,EAAEpE,OAETH,KAAK6C,SAGdlD,EAAGF,UAAUmI,KAAO,SAAejG,GAEjC,OADA3C,EAA0C,KAAlCgB,KAAKC,SAAW0B,EAAI1B,WACrBD,KAAK2H,MAAMhG,IAIpBhC,EAAGF,UAAUoI,IAAM,SAAclG,GAC/B,OAAI3B,KAAKG,OAASwB,EAAIxB,OAAeH,KAAKwD,QAAQoE,KAAKjG,GAChDA,EAAI6B,QAAQoE,KAAK5H,OAG1BL,EAAGF,UAAUqI,KAAO,SAAenG,GACjC,OAAI3B,KAAKG,OAASwB,EAAIxB,OAAeH,KAAKwD,QAAQmE,MAAMhG,GACjDA,EAAI6B,QAAQmE,MAAM3H,OAI3BL,EAAGF,UAAUkH,MAAQ,SAAgBF,GACnCzH,EAAwB,kBAAVyH,GAAsBA,GAAS,GAE7C,IAAIsB,EAAsC,EAAxBvG,KAAKiB,KAAKgE,EAAQ,IAChCuB,EAAWvB,EAAQ,GAGvBzG,KAAKyD,QAAQsE,GAETC,EAAW,GACbD,IAIF,IAAK,IAAIrG,EAAI,EAAGA,EAAIqG,EAAarG,IAC/B1B,KAAKE,MAAMwB,GAAsB,UAAhB1B,KAAKE,MAAMwB,GAS9B,OALIsG,EAAW,IACbhI,KAAKE,MAAMwB,IAAM1B,KAAKE,MAAMwB,GAAM,UAAc,GAAKsG,GAIhDhI,KAAK6C,SAGdlD,EAAGF,UAAUsH,KAAO,SAAeN,GACjC,OAAOzG,KAAKwD,QAAQmD,MAAMF,IAI5B9G,EAAGF,UAAUwI,KAAO,SAAe/D,EAAKjF,GACtCD,EAAsB,kBAARkF,GAAoBA,GAAO,GAEzC,IAAItB,EAAOsB,EAAM,GAAM,EACnBC,EAAOD,EAAM,GAUjB,OARAlE,KAAKyD,QAAQb,EAAM,GAGjB5C,KAAKE,MAAM0C,GADT3D,EACgBe,KAAKE,MAAM0C,GAAQ,GAAKuB,EAExBnE,KAAKE,MAAM0C,KAAS,GAAKuB,GAGtCnE,KAAK6C,SAIdlD,EAAGF,UAAUyI,KAAO,SAAevG,GACjC,IAAIV,EAkBAsD,EAAGC,EAfP,GAAsB,IAAlBxE,KAAKC,UAAmC,IAAjB0B,EAAI1B,SAI7B,OAHAD,KAAKC,SAAW,EAChBgB,EAAIjB,KAAKmI,KAAKxG,GACd3B,KAAKC,UAAY,EACVD,KAAK2D,YAGP,GAAsB,IAAlB3D,KAAKC,UAAmC,IAAjB0B,EAAI1B,SAIpC,OAHA0B,EAAI1B,SAAW,EACfgB,EAAIjB,KAAKmI,KAAKxG,GACdA,EAAI1B,SAAW,EACRgB,EAAE0C,YAKP3D,KAAKG,OAASwB,EAAIxB,QACpBoE,EAAIvE,KACJwE,EAAI7C,IAEJ4C,EAAI5C,EACJ6C,EAAIxE,MAIN,IADA,IAAI0E,EAAQ,EACHhD,EAAI,EAAGA,EAAI8C,EAAErE,OAAQuB,IAC5BT,GAAkB,EAAbsD,EAAErE,MAAMwB,KAAwB,EAAb8C,EAAEtE,MAAMwB,IAAUgD,EAC1C1E,KAAKE,MAAMwB,GAAS,SAAJT,EAChByD,EAAQzD,IAAM,GAEhB,KAAiB,IAAVyD,GAAehD,EAAI6C,EAAEpE,OAAQuB,IAClCT,GAAkB,EAAbsD,EAAErE,MAAMwB,IAAUgD,EACvB1E,KAAKE,MAAMwB,GAAS,SAAJT,EAChByD,EAAQzD,IAAM,GAIhB,GADAjB,KAAKG,OAASoE,EAAEpE,OACF,IAAVuE,EACF1E,KAAKE,MAAMF,KAAKG,QAAUuE,EAC1B1E,KAAKG,cAEA,GAAIoE,IAAMvE,KACf,KAAO0B,EAAI6C,EAAEpE,OAAQuB,IACnB1B,KAAKE,MAAMwB,GAAK6C,EAAErE,MAAMwB,GAI5B,OAAO1B,MAITL,EAAGF,UAAU2I,IAAM,SAAczG,GAC/B,IAAImE,EACJ,OAAqB,IAAjBnE,EAAI1B,UAAoC,IAAlBD,KAAKC,UAC7B0B,EAAI1B,SAAW,EACf6F,EAAM9F,KAAKqI,IAAI1G,GACfA,EAAI1B,UAAY,EACT6F,GACmB,IAAjBnE,EAAI1B,UAAoC,IAAlBD,KAAKC,UACpCD,KAAKC,SAAW,EAChB6F,EAAMnE,EAAI0G,IAAIrI,MACdA,KAAKC,SAAW,EACT6F,GAGL9F,KAAKG,OAASwB,EAAIxB,OAAeH,KAAKwD,QAAQ0E,KAAKvG,GAEhDA,EAAI6B,QAAQ0E,KAAKlI,OAI1BL,EAAGF,UAAU0I,KAAO,SAAexG,GAEjC,GAAqB,IAAjBA,EAAI1B,SAAgB,CACtB0B,EAAI1B,SAAW,EACf,IAAIgB,EAAIjB,KAAKkI,KAAKvG,GAElB,OADAA,EAAI1B,SAAW,EACRgB,EAAE0C,YAGJ,GAAsB,IAAlB3D,KAAKC,SAId,OAHAD,KAAKC,SAAW,EAChBD,KAAKkI,KAAKvG,GACV3B,KAAKC,SAAW,EACTD,KAAK2D,YAId,IAWIY,EAAGC,EAXHvC,EAAMjC,KAAKiC,IAAIN,GAGnB,GAAY,IAARM,EAIF,OAHAjC,KAAKC,SAAW,EAChBD,KAAKG,OAAS,EACdH,KAAKE,MAAM,GAAK,EACTF,KAKLiC,EAAM,GACRsC,EAAIvE,KACJwE,EAAI7C,IAEJ4C,EAAI5C,EACJ6C,EAAIxE,MAIN,IADA,IAAI0E,EAAQ,EACHhD,EAAI,EAAGA,EAAI8C,EAAErE,OAAQuB,IAC5BT,GAAkB,EAAbsD,EAAErE,MAAMwB,KAAwB,EAAb8C,EAAEtE,MAAMwB,IAAUgD,EAC1CA,EAAQzD,GAAK,GACbjB,KAAKE,MAAMwB,GAAS,SAAJT,EAElB,KAAiB,IAAVyD,GAAehD,EAAI6C,EAAEpE,OAAQuB,IAClCT,GAAkB,EAAbsD,EAAErE,MAAMwB,IAAUgD,EACvBA,EAAQzD,GAAK,GACbjB,KAAKE,MAAMwB,GAAS,SAAJT,EAIlB,GAAc,IAAVyD,GAAehD,EAAI6C,EAAEpE,QAAUoE,IAAMvE,KACvC,KAAO0B,EAAI6C,EAAEpE,OAAQuB,IACnB1B,KAAKE,MAAMwB,GAAK6C,EAAErE,MAAMwB,GAU5B,OANA1B,KAAKG,OAASqB,KAAKM,IAAI9B,KAAKG,OAAQuB,GAEhC6C,IAAMvE,OACRA,KAAKC,SAAW,GAGXD,KAAK6C,SAIdlD,EAAGF,UAAU4I,IAAM,SAAc1G,GAC/B,OAAO3B,KAAKwD,QAAQ2E,KAAKxG,IA+C3B,IAAI2G,EAAc,SAAsBjE,EAAM1C,EAAK2C,GACjD,IAIIG,EACA8D,EACAjC,EANA/B,EAAIF,EAAKnE,MACTsE,EAAI7C,EAAIzB,MACRsI,EAAIlE,EAAIpE,MACRW,EAAI,EAIJ4H,EAAY,EAAPlE,EAAE,GACPmE,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPrE,EAAE,GACPsE,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPxE,EAAE,GACPyE,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP3E,EAAE,GACP4E,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP9E,EAAE,GACP+E,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPjF,EAAE,GACPkF,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPpF,EAAE,GACPqF,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPvF,EAAE,GACPwF,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP1F,EAAE,GACP2F,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP7F,EAAE,GACP8F,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP/F,EAAE,GACPgG,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPlG,EAAE,GACPmG,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPrG,EAAE,GACPsG,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPxG,EAAE,GACPyG,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP3G,EAAE,GACP4G,EAAW,KAALD,EACNE,GAAMF,IAAO,GACbG,GAAY,EAAP9G,EAAE,GACP+G,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAPjH,EAAE,GACPkH,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAPpH,EAAE,GACPqH,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAPvH,EAAE,GACPwH,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAP1H,EAAE,GACP2H,GAAW,KAALD,GACNE,GAAMF,KAAO,GAEjB5H,EAAIrE,SAAWoE,EAAKpE,SAAW0B,EAAI1B,SACnCqE,EAAInE,OAAS,GAEbsE,EAAKjD,KAAK6K,KAAK3D,EAAK8B,GACpBjC,EAAM/G,KAAK6K,KAAK3D,EAAK+B,GACrBlC,EAAOA,EAAM/G,KAAK6K,KAAK1D,EAAK6B,GAAQ,EACpClE,EAAK9E,KAAK6K,KAAK1D,EAAK8B,GACpB,IAAI6B,IAAQzL,EAAI4D,EAAM,KAAa,KAAN8D,IAAiB,IAAO,EACrD1H,GAAOyF,GAAMiC,IAAQ,IAAO,IAAM+D,KAAO,IAAO,EAChDA,IAAM,SAEN7H,EAAKjD,KAAK6K,KAAKxD,EAAK2B,GACpBjC,EAAM/G,KAAK6K,KAAKxD,EAAK4B,GACrBlC,EAAOA,EAAM/G,KAAK6K,KAAKvD,EAAK0B,GAAQ,EACpClE,EAAK9E,KAAK6K,KAAKvD,EAAK2B,GACpBhG,EAAMA,EAAKjD,KAAK6K,KAAK3D,EAAKiC,GAAQ,EAClCpC,EAAOA,EAAM/G,KAAK6K,KAAK3D,EAAKkC,GAAQ,EACpCrC,EAAOA,EAAM/G,KAAK6K,KAAK1D,EAAKgC,GAAQ,EACpCrE,EAAMA,EAAK9E,KAAK6K,KAAK1D,EAAKiC,GAAQ,EAClC,IAAI2B,IAAQ1L,EAAI4D,EAAM,KAAa,KAAN8D,IAAiB,IAAO,EACrD1H,GAAOyF,GAAMiC,IAAQ,IAAO,IAAMgE,KAAO,IAAO,EAChDA,IAAM,SAEN9H,EAAKjD,KAAK6K,KAAKrD,EAAKwB,GACpBjC,EAAM/G,KAAK6K,KAAKrD,EAAKyB,GACrBlC,EAAOA,EAAM/G,KAAK6K,KAAKpD,EAAKuB,GAAQ,EACpClE,EAAK9E,KAAK6K,KAAKpD,EAAKwB,GACpBhG,EAAMA,EAAKjD,KAAK6K,KAAKxD,EAAK8B,GAAQ,EAClCpC,EAAOA,EAAM/G,KAAK6K,KAAKxD,EAAK+B,GAAQ,EACpCrC,EAAOA,EAAM/G,KAAK6K,KAAKvD,EAAK6B,GAAQ,EACpCrE,EAAMA,EAAK9E,KAAK6K,KAAKvD,EAAK8B,GAAQ,EAClCnG,EAAMA,EAAKjD,KAAK6K,KAAK3D,EAAKoC,GAAQ,EAClCvC,EAAOA,EAAM/G,KAAK6K,KAAK3D,EAAKqC,GAAQ,EACpCxC,EAAOA,EAAM/G,KAAK6K,KAAK1D,EAAKmC,GAAQ,EACpCxE,EAAMA,EAAK9E,KAAK6K,KAAK1D,EAAKoC,GAAQ,EAClC,IAAIyB,IAAQ3L,EAAI4D,EAAM,KAAa,KAAN8D,IAAiB,IAAO,EACrD1H,GAAOyF,GAAMiC,IAAQ,IAAO,IAAMiE,KAAO,IAAO,EAChDA,IAAM,SAEN/H,EAAKjD,KAAK6K,KAAKlD,EAAKqB,GACpBjC,EAAM/G,KAAK6K,KAAKlD,EAAKsB,GACrBlC,EAAOA,EAAM/G,KAAK6K,KAAKjD,EAAKoB,GAAQ,EACpClE,EAAK9E,KAAK6K,KAAKjD,EAAKqB,GACpBhG,EAAMA,EAAKjD,KAAK6K,KAAKrD,EAAK2B,GAAQ,EAClCpC,EAAOA,EAAM/G,KAAK6K,KAAKrD,EAAK4B,GAAQ,EACpCrC,EAAOA,EAAM/G,KAAK6K,KAAKpD,EAAK0B,GAAQ,EACpCrE,EAAMA,EAAK9E,KAAK6K,KAAKpD,EAAK2B,GAAQ,EAClCnG,EAAMA,EAAKjD,KAAK6K,KAAKxD,EAAKiC,GAAQ,EAClCvC,EAAOA,EAAM/G,KAAK6K,KAAKxD,EAAKkC,GAAQ,EACpCxC,EAAOA,EAAM/G,KAAK6K,KAAKvD,EAAKgC,GAAQ,EACpCxE,EAAMA,EAAK9E,KAAK6K,KAAKvD,EAAKiC,GAAQ,EAClCtG,EAAMA,EAAKjD,KAAK6K,KAAK3D,EAAKuC,GAAQ,EAClC1C,EAAOA,EAAM/G,KAAK6K,KAAK3D,EAAKwC,GAAQ,EACpC3C,EAAOA,EAAM/G,KAAK6K,KAAK1D,EAAKsC,GAAQ,EACpC3E,EAAMA,EAAK9E,KAAK6K,KAAK1D,EAAKuC,GAAQ,EAClC,IAAIuB,IAAQ5L,EAAI4D,EAAM,KAAa,KAAN8D,IAAiB,IAAO,EACrD1H,GAAOyF,GAAMiC,IAAQ,IAAO,IAAMkE,KAAO,IAAO,EAChDA,IAAM,SAENhI,EAAKjD,KAAK6K,KAAK/C,EAAKkB,GACpBjC,EAAM/G,KAAK6K,KAAK/C,EAAKmB,GACrBlC,EAAOA,EAAM/G,KAAK6K,KAAK9C,EAAKiB,GAAQ,EACpClE,EAAK9E,KAAK6K,KAAK9C,EAAKkB,GACpBhG,EAAMA,EAAKjD,KAAK6K,KAAKlD,EAAKwB,GAAQ,EAClCpC,EAAOA,EAAM/G,KAAK6K,KAAKlD,EAAKyB,GAAQ,EACpCrC,EAAOA,EAAM/G,KAAK6K,KAAKjD,EAAKuB,GAAQ,EACpCrE,EAAMA,EAAK9E,KAAK6K,KAAKjD,EAAKwB,GAAQ,EAClCnG,EAAMA,EAAKjD,KAAK6K,KAAKrD,EAAK8B,GAAQ,EAClCvC,EAAOA,EAAM/G,KAAK6K,KAAKrD,EAAK+B,GAAQ,EACpCxC,EAAOA,EAAM/G,KAAK6K,KAAKpD,EAAK6B,GAAQ,EACpCxE,EAAMA,EAAK9E,KAAK6K,KAAKpD,EAAK8B,GAAQ,EAClCtG,EAAMA,EAAKjD,KAAK6K,KAAKxD,EAAKoC,GAAQ,EAClC1C,EAAOA,EAAM/G,KAAK6K,KAAKxD,EAAKqC,GAAQ,EACpC3C,EAAOA,EAAM/G,KAAK6K,KAAKvD,EAAKmC,GAAQ,EACpC3E,EAAMA,EAAK9E,KAAK6K,KAAKvD,EAAKoC,GAAQ,EAClCzG,EAAMA,EAAKjD,KAAK6K,KAAK3D,EAAK0C,GAAQ,EAClC7C,EAAOA,EAAM/G,KAAK6K,KAAK3D,EAAK2C,IAAQ,EACpC9C,EAAOA,EAAM/G,KAAK6K,KAAK1D,EAAKyC,GAAQ,EACpC9E,EAAMA,EAAK9E,KAAK6K,KAAK1D,EAAK0C,IAAQ,EAClC,IAAIqB,IAAQ7L,EAAI4D,EAAM,KAAa,KAAN8D,IAAiB,IAAO,EACrD1H,GAAOyF,GAAMiC,IAAQ,IAAO,IAAMmE,KAAO,IAAO,EAChDA,IAAM,SAENjI,EAAKjD,KAAK6K,KAAK5C,EAAKe,GACpBjC,EAAM/G,KAAK6K,KAAK5C,EAAKgB,GACrBlC,EAAOA,EAAM/G,KAAK6K,KAAK3C,EAAKc,GAAQ,EACpClE,EAAK9E,KAAK6K,KAAK3C,EAAKe,GACpBhG,EAAMA,EAAKjD,KAAK6K,KAAK/C,EAAKqB,GAAQ,EAClCpC,EAAOA,EAAM/G,KAAK6K,KAAK/C,EAAKsB,GAAQ,EACpCrC,EAAOA,EAAM/G,KAAK6K,KAAK9C,EAAKoB,GAAQ,EACpCrE,EAAMA,EAAK9E,KAAK6K,KAAK9C,EAAKqB,GAAQ,EAClCnG,EAAMA,EAAKjD,KAAK6K,KAAKlD,EAAK2B,GAAQ,EAClCvC,EAAOA,EAAM/G,KAAK6K,KAAKlD,EAAK4B,GAAQ,EACpCxC,EAAOA,EAAM/G,KAAK6K,KAAKjD,EAAK0B,GAAQ,EACpCxE,EAAMA,EAAK9E,KAAK6K,KAAKjD,EAAK2B,GAAQ,EAClCtG,EAAMA,EAAKjD,KAAK6K,KAAKrD,EAAKiC,GAAQ,EAClC1C,EAAOA,EAAM/G,KAAK6K,KAAKrD,EAAKkC,GAAQ,EACpC3C,EAAOA,EAAM/G,KAAK6K,KAAKpD,EAAKgC,GAAQ,EACpC3E,EAAMA,EAAK9E,KAAK6K,KAAKpD,EAAKiC,GAAQ,EAClCzG,EAAMA,EAAKjD,KAAK6K,KAAKxD,EAAKuC,GAAQ,EAClC7C,EAAOA,EAAM/G,KAAK6K,KAAKxD,EAAKwC,IAAQ,EACpC9C,EAAOA,EAAM/G,KAAK6K,KAAKvD,EAAKsC,GAAQ,EACpC9E,EAAMA,EAAK9E,KAAK6K,KAAKvD,EAAKuC,IAAQ,EAClC5G,EAAMA,EAAKjD,KAAK6K,KAAK3D,EAAK6C,IAAQ,EAClChD,EAAOA,EAAM/G,KAAK6K,KAAK3D,EAAK8C,IAAQ,EACpCjD,EAAOA,EAAM/G,KAAK6K,KAAK1D,EAAK4C,IAAQ,EACpCjF,EAAMA,EAAK9E,KAAK6K,KAAK1D,EAAK6C,IAAQ,EAClC,IAAImB,IAAQ9L,EAAI4D,EAAM,KAAa,KAAN8D,IAAiB,IAAO,EACrD1H,GAAOyF,GAAMiC,IAAQ,IAAO,IAAMoE,KAAO,IAAO,EAChDA,IAAM,SAENlI,EAAKjD,KAAK6K,KAAKzC,EAAKY,GACpBjC,EAAM/G,KAAK6K,KAAKzC,EAAKa,GACrBlC,EAAOA,EAAM/G,KAAK6K,KAAKxC,EAAKW,GAAQ,EACpClE,EAAK9E,KAAK6K,KAAKxC,EAAKY,GACpBhG,EAAMA,EAAKjD,KAAK6K,KAAK5C,EAAKkB,GAAQ,EAClCpC,EAAOA,EAAM/G,KAAK6K,KAAK5C,EAAKmB,GAAQ,EACpCrC,EAAOA,EAAM/G,KAAK6K,KAAK3C,EAAKiB,GAAQ,EACpCrE,EAAMA,EAAK9E,KAAK6K,KAAK3C,EAAKkB,GAAQ,EAClCnG,EAAMA,EAAKjD,KAAK6K,KAAK/C,EAAKwB,GAAQ,EAClCvC,EAAOA,EAAM/G,KAAK6K,KAAK/C,EAAKyB,GAAQ,EACpCxC,EAAOA,EAAM/G,KAAK6K,KAAK9C,EAAKuB,GAAQ,EACpCxE,EAAMA,EAAK9E,KAAK6K,KAAK9C,EAAKwB,GAAQ,EAClCtG,EAAMA,EAAKjD,KAAK6K,KAAKlD,EAAK8B,GAAQ,EAClC1C,EAAOA,EAAM/G,KAAK6K,KAAKlD,EAAK+B,GAAQ,EACpC3C,EAAOA,EAAM/G,KAAK6K,KAAKjD,EAAK6B,GAAQ,EACpC3E,EAAMA,EAAK9E,KAAK6K,KAAKjD,EAAK8B,GAAQ,EAClCzG,EAAMA,EAAKjD,KAAK6K,KAAKrD,EAAKoC,GAAQ,EAClC7C,EAAOA,EAAM/G,KAAK6K,KAAKrD,EAAKqC,IAAQ,EACpC9C,EAAOA,EAAM/G,KAAK6K,KAAKpD,EAAKmC,GAAQ,EACpC9E,EAAMA,EAAK9E,KAAK6K,KAAKpD,EAAKoC,IAAQ,EAClC5G,EAAMA,EAAKjD,KAAK6K,KAAKxD,EAAK0C,IAAQ,EAClChD,EAAOA,EAAM/G,KAAK6K,KAAKxD,EAAK2C,IAAQ,EACpCjD,EAAOA,EAAM/G,KAAK6K,KAAKvD,EAAKyC,IAAQ,EACpCjF,EAAMA,EAAK9E,KAAK6K,KAAKvD,EAAK0C,IAAQ,EAClC/G,EAAMA,EAAKjD,KAAK6K,KAAK3D,EAAKgD,IAAQ,EAClCnD,EAAOA,EAAM/G,KAAK6K,KAAK3D,EAAKiD,IAAQ,EACpCpD,EAAOA,EAAM/G,KAAK6K,KAAK1D,EAAK+C,IAAQ,EACpCpF,EAAMA,EAAK9E,KAAK6K,KAAK1D,EAAKgD,IAAQ,EAClC,IAAIiB,IAAQ/L,EAAI4D,EAAM,KAAa,KAAN8D,IAAiB,IAAO,EACrD1H,GAAOyF,GAAMiC,IAAQ,IAAO,IAAMqE,KAAO,IAAO,EAChDA,IAAM,SAENnI,EAAKjD,KAAK6K,KAAKtC,EAAKS,GACpBjC,EAAM/G,KAAK6K,KAAKtC,EAAKU,GACrBlC,EAAOA,EAAM/G,KAAK6K,KAAKrC,EAAKQ,GAAQ,EACpClE,EAAK9E,KAAK6K,KAAKrC,EAAKS,GACpBhG,EAAMA,EAAKjD,KAAK6K,KAAKzC,EAAKe,GAAQ,EAClCpC,EAAOA,EAAM/G,KAAK6K,KAAKzC,EAAKgB,GAAQ,EACpCrC,EAAOA,EAAM/G,KAAK6K,KAAKxC,EAAKc,GAAQ,EACpCrE,EAAMA,EAAK9E,KAAK6K,KAAKxC,EAAKe,GAAQ,EAClCnG,EAAMA,EAAKjD,KAAK6K,KAAK5C,EAAKqB,GAAQ,EAClCvC,EAAOA,EAAM/G,KAAK6K,KAAK5C,EAAKsB,GAAQ,EACpCxC,EAAOA,EAAM/G,KAAK6K,KAAK3C,EAAKoB,GAAQ,EACpCxE,EAAMA,EAAK9E,KAAK6K,KAAK3C,EAAKqB,GAAQ,EAClCtG,EAAMA,EAAKjD,KAAK6K,KAAK/C,EAAK2B,GAAQ,EAClC1C,EAAOA,EAAM/G,KAAK6K,KAAK/C,EAAK4B,GAAQ,EACpC3C,EAAOA,EAAM/G,KAAK6K,KAAK9C,EAAK0B,GAAQ,EACpC3E,EAAMA,EAAK9E,KAAK6K,KAAK9C,EAAK2B,GAAQ,EAClCzG,EAAMA,EAAKjD,KAAK6K,KAAKlD,EAAKiC,GAAQ,EAClC7C,EAAOA,EAAM/G,KAAK6K,KAAKlD,EAAKkC,IAAQ,EACpC9C,EAAOA,EAAM/G,KAAK6K,KAAKjD,EAAKgC,GAAQ,EACpC9E,EAAMA,EAAK9E,KAAK6K,KAAKjD,EAAKiC,IAAQ,EAClC5G,EAAMA,EAAKjD,KAAK6K,KAAKrD,EAAKuC,IAAQ,EAClChD,EAAOA,EAAM/G,KAAK6K,KAAKrD,EAAKwC,IAAQ,EACpCjD,EAAOA,EAAM/G,KAAK6K,KAAKpD,EAAKsC,IAAQ,EACpCjF,EAAMA,EAAK9E,KAAK6K,KAAKpD,EAAKuC,IAAQ,EAClC/G,EAAMA,EAAKjD,KAAK6K,KAAKxD,EAAK6C,IAAQ,EAClCnD,EAAOA,EAAM/G,KAAK6K,KAAKxD,EAAK8C,IAAQ,EACpCpD,EAAOA,EAAM/G,KAAK6K,KAAKvD,EAAK4C,IAAQ,EACpCpF,EAAMA,EAAK9E,KAAK6K,KAAKvD,EAAK6C,IAAQ,EAClClH,EAAMA,EAAKjD,KAAK6K,KAAK3D,EAAKmD,IAAQ,EAClCtD,EAAOA,EAAM/G,KAAK6K,KAAK3D,EAAKoD,IAAQ,EACpCvD,EAAOA,EAAM/G,KAAK6K,KAAK1D,EAAKkD,IAAQ,EACpCvF,EAAMA,EAAK9E,KAAK6K,KAAK1D,EAAKmD,IAAQ,EAClC,IAAIe,IAAQhM,EAAI4D,EAAM,KAAa,KAAN8D,IAAiB,IAAO,EACrD1H,GAAOyF,GAAMiC,IAAQ,IAAO,IAAMsE,KAAO,IAAO,EAChDA,IAAM,SAENpI,EAAKjD,KAAK6K,KAAKnC,EAAKM,GACpBjC,EAAM/G,KAAK6K,KAAKnC,EAAKO,GACrBlC,EAAOA,EAAM/G,KAAK6K,KAAKlC,EAAKK,GAAQ,EACpClE,EAAK9E,KAAK6K,KAAKlC,EAAKM,GACpBhG,EAAMA,EAAKjD,KAAK6K,KAAKtC,EAAKY,GAAQ,EAClCpC,EAAOA,EAAM/G,KAAK6K,KAAKtC,EAAKa,GAAQ,EACpCrC,EAAOA,EAAM/G,KAAK6K,KAAKrC,EAAKW,GAAQ,EACpCrE,EAAMA,EAAK9E,KAAK6K,KAAKrC,EAAKY,GAAQ,EAClCnG,EAAMA,EAAKjD,KAAK6K,KAAKzC,EAAKkB,GAAQ,EAClCvC,EAAOA,EAAM/G,KAAK6K,KAAKzC,EAAKmB,GAAQ,EACpCxC,EAAOA,EAAM/G,KAAK6K,KAAKxC,EAAKiB,GAAQ,EACpCxE,EAAMA,EAAK9E,KAAK6K,KAAKxC,EAAKkB,GAAQ,EAClCtG,EAAMA,EAAKjD,KAAK6K,KAAK5C,EAAKwB,GAAQ,EAClC1C,EAAOA,EAAM/G,KAAK6K,KAAK5C,EAAKyB,GAAQ,EACpC3C,EAAOA,EAAM/G,KAAK6K,KAAK3C,EAAKuB,GAAQ,EACpC3E,EAAMA,EAAK9E,KAAK6K,KAAK3C,EAAKwB,GAAQ,EAClCzG,EAAMA,EAAKjD,KAAK6K,KAAK/C,EAAK8B,GAAQ,EAClC7C,EAAOA,EAAM/G,KAAK6K,KAAK/C,EAAK+B,IAAQ,EACpC9C,EAAOA,EAAM/G,KAAK6K,KAAK9C,EAAK6B,GAAQ,EACpC9E,EAAMA,EAAK9E,KAAK6K,KAAK9C,EAAK8B,IAAQ,EAClC5G,EAAMA,EAAKjD,KAAK6K,KAAKlD,EAAKoC,IAAQ,EAClChD,EAAOA,EAAM/G,KAAK6K,KAAKlD,EAAKqC,IAAQ,EACpCjD,EAAOA,EAAM/G,KAAK6K,KAAKjD,EAAKmC,IAAQ,EACpCjF,EAAMA,EAAK9E,KAAK6K,KAAKjD,EAAKoC,IAAQ,EAClC/G,EAAMA,EAAKjD,KAAK6K,KAAKrD,EAAK0C,IAAQ,EAClCnD,EAAOA,EAAM/G,KAAK6K,KAAKrD,EAAK2C,IAAQ,EACpCpD,EAAOA,EAAM/G,KAAK6K,KAAKpD,EAAKyC,IAAQ,EACpCpF,EAAMA,EAAK9E,KAAK6K,KAAKpD,EAAK0C,IAAQ,EAClClH,EAAMA,EAAKjD,KAAK6K,KAAKxD,EAAKgD,IAAQ,EAClCtD,EAAOA,EAAM/G,KAAK6K,KAAKxD,EAAKiD,IAAQ,EACpCvD,EAAOA,EAAM/G,KAAK6K,KAAKvD,EAAK+C,IAAQ,EACpCvF,EAAMA,EAAK9E,KAAK6K,KAAKvD,EAAKgD,IAAQ,EAClCrH,EAAMA,EAAKjD,KAAK6K,KAAK3D,EAAKsD,IAAQ,EAClCzD,EAAOA,EAAM/G,KAAK6K,KAAK3D,EAAKuD,IAAQ,EACpC1D,EAAOA,EAAM/G,KAAK6K,KAAK1D,EAAKqD,IAAQ,EACpC1F,EAAMA,EAAK9E,KAAK6K,KAAK1D,EAAKsD,IAAQ,EAClC,IAAIa,IAAQjM,EAAI4D,EAAM,KAAa,KAAN8D,IAAiB,IAAO,EACrD1H,GAAOyF,GAAMiC,IAAQ,IAAO,IAAMuE,KAAO,IAAO,EAChDA,IAAM,SAENrI,EAAKjD,KAAK6K,KAAKhC,EAAKG,GACpBjC,EAAM/G,KAAK6K,KAAKhC,EAAKI,GACrBlC,EAAOA,EAAM/G,KAAK6K,KAAK/B,EAAKE,GAAQ,EACpClE,EAAK9E,KAAK6K,KAAK/B,EAAKG,GACpBhG,EAAMA,EAAKjD,KAAK6K,KAAKnC,EAAKS,GAAQ,EAClCpC,EAAOA,EAAM/G,KAAK6K,KAAKnC,EAAKU,GAAQ,EACpCrC,EAAOA,EAAM/G,KAAK6K,KAAKlC,EAAKQ,GAAQ,EACpCrE,EAAMA,EAAK9E,KAAK6K,KAAKlC,EAAKS,GAAQ,EAClCnG,EAAMA,EAAKjD,KAAK6K,KAAKtC,EAAKe,GAAQ,EAClCvC,EAAOA,EAAM/G,KAAK6K,KAAKtC,EAAKgB,GAAQ,EACpCxC,EAAOA,EAAM/G,KAAK6K,KAAKrC,EAAKc,GAAQ,EACpCxE,EAAMA,EAAK9E,KAAK6K,KAAKrC,EAAKe,GAAQ,EAClCtG,EAAMA,EAAKjD,KAAK6K,KAAKzC,EAAKqB,GAAQ,EAClC1C,EAAOA,EAAM/G,KAAK6K,KAAKzC,EAAKsB,GAAQ,EACpC3C,EAAOA,EAAM/G,KAAK6K,KAAKxC,EAAKoB,GAAQ,EACpC3E,EAAMA,EAAK9E,KAAK6K,KAAKxC,EAAKqB,GAAQ,EAClCzG,EAAMA,EAAKjD,KAAK6K,KAAK5C,EAAK2B,GAAQ,EAClC7C,EAAOA,EAAM/G,KAAK6K,KAAK5C,EAAK4B,IAAQ,EACpC9C,EAAOA,EAAM/G,KAAK6K,KAAK3C,EAAK0B,GAAQ,EACpC9E,EAAMA,EAAK9E,KAAK6K,KAAK3C,EAAK2B,IAAQ,EAClC5G,EAAMA,EAAKjD,KAAK6K,KAAK/C,EAAKiC,IAAQ,EAClChD,EAAOA,EAAM/G,KAAK6K,KAAK/C,EAAKkC,IAAQ,EACpCjD,EAAOA,EAAM/G,KAAK6K,KAAK9C,EAAKgC,IAAQ,EACpCjF,EAAMA,EAAK9E,KAAK6K,KAAK9C,EAAKiC,IAAQ,EAClC/G,EAAMA,EAAKjD,KAAK6K,KAAKlD,EAAKuC,IAAQ,EAClCnD,EAAOA,EAAM/G,KAAK6K,KAAKlD,EAAKwC,IAAQ,EACpCpD,EAAOA,EAAM/G,KAAK6K,KAAKjD,EAAKsC,IAAQ,EACpCpF,EAAMA,EAAK9E,KAAK6K,KAAKjD,EAAKuC,IAAQ,EAClClH,EAAMA,EAAKjD,KAAK6K,KAAKrD,EAAK6C,IAAQ,EAClCtD,EAAOA,EAAM/G,KAAK6K,KAAKrD,EAAK8C,IAAQ,EACpCvD,EAAOA,EAAM/G,KAAK6K,KAAKpD,EAAK4C,IAAQ,EACpCvF,EAAMA,EAAK9E,KAAK6K,KAAKpD,EAAK6C,IAAQ,EAClCrH,EAAMA,EAAKjD,KAAK6K,KAAKxD,EAAKmD,IAAQ,EAClCzD,EAAOA,EAAM/G,KAAK6K,KAAKxD,EAAKoD,IAAQ,EACpC1D,EAAOA,EAAM/G,KAAK6K,KAAKvD,EAAKkD,IAAQ,EACpC1F,EAAMA,EAAK9E,KAAK6K,KAAKvD,EAAKmD,IAAQ,EAClCxH,EAAMA,EAAKjD,KAAK6K,KAAK3D,EAAKyD,IAAQ,EAClC5D,EAAOA,EAAM/G,KAAK6K,KAAK3D,EAAK0D,IAAQ,EACpC7D,EAAOA,EAAM/G,KAAK6K,KAAK1D,EAAKwD,IAAQ,EACpC7F,EAAMA,EAAK9E,KAAK6K,KAAK1D,EAAKyD,IAAQ,EAClC,IAAIW,IAAQlM,EAAI4D,EAAM,KAAa,KAAN8D,IAAiB,IAAO,EACrD1H,GAAOyF,GAAMiC,IAAQ,IAAO,IAAMwE,KAAO,IAAO,EAChDA,IAAM,SAENtI,EAAKjD,KAAK6K,KAAKhC,EAAKM,GACpBpC,EAAM/G,KAAK6K,KAAKhC,EAAKO,GACrBrC,EAAOA,EAAM/G,KAAK6K,KAAK/B,EAAKK,GAAQ,EACpCrE,EAAK9E,KAAK6K,KAAK/B,EAAKM,GACpBnG,EAAMA,EAAKjD,KAAK6K,KAAKnC,EAAKY,GAAQ,EAClCvC,EAAOA,EAAM/G,KAAK6K,KAAKnC,EAAKa,GAAQ,EACpCxC,EAAOA,EAAM/G,KAAK6K,KAAKlC,EAAKW,GAAQ,EACpCxE,EAAMA,EAAK9E,KAAK6K,KAAKlC,EAAKY,GAAQ,EAClCtG,EAAMA,EAAKjD,KAAK6K,KAAKtC,EAAKkB,GAAQ,EAClC1C,EAAOA,EAAM/G,KAAK6K,KAAKtC,EAAKmB,GAAQ,EACpC3C,EAAOA,EAAM/G,KAAK6K,KAAKrC,EAAKiB,GAAQ,EACpC3E,EAAMA,EAAK9E,KAAK6K,KAAKrC,EAAKkB,GAAQ,EAClCzG,EAAMA,EAAKjD,KAAK6K,KAAKzC,EAAKwB,GAAQ,EAClC7C,EAAOA,EAAM/G,KAAK6K,KAAKzC,EAAKyB,IAAQ,EACpC9C,EAAOA,EAAM/G,KAAK6K,KAAKxC,EAAKuB,GAAQ,EACpC9E,EAAMA,EAAK9E,KAAK6K,KAAKxC,EAAKwB,IAAQ,EAClC5G,EAAMA,EAAKjD,KAAK6K,KAAK5C,EAAK8B,IAAQ,EAClChD,EAAOA,EAAM/G,KAAK6K,KAAK5C,EAAK+B,IAAQ,EACpCjD,EAAOA,EAAM/G,KAAK6K,KAAK3C,EAAK6B,IAAQ,EACpCjF,EAAMA,EAAK9E,KAAK6K,KAAK3C,EAAK8B,IAAQ,EAClC/G,EAAMA,EAAKjD,KAAK6K,KAAK/C,EAAKoC,IAAQ,EAClCnD,EAAOA,EAAM/G,KAAK6K,KAAK/C,EAAKqC,IAAQ,EACpCpD,EAAOA,EAAM/G,KAAK6K,KAAK9C,EAAKmC,IAAQ,EACpCpF,EAAMA,EAAK9E,KAAK6K,KAAK9C,EAAKoC,IAAQ,EAClClH,EAAMA,EAAKjD,KAAK6K,KAAKlD,EAAK0C,IAAQ,EAClCtD,EAAOA,EAAM/G,KAAK6K,KAAKlD,EAAK2C,IAAQ,EACpCvD,EAAOA,EAAM/G,KAAK6K,KAAKjD,EAAKyC,IAAQ,EACpCvF,EAAMA,EAAK9E,KAAK6K,KAAKjD,EAAK0C,IAAQ,EAClCrH,EAAMA,EAAKjD,KAAK6K,KAAKrD,EAAKgD,IAAQ,EAClCzD,EAAOA,EAAM/G,KAAK6K,KAAKrD,EAAKiD,IAAQ,EACpC1D,EAAOA,EAAM/G,KAAK6K,KAAKpD,EAAK+C,IAAQ,EACpC1F,EAAMA,EAAK9E,KAAK6K,KAAKpD,EAAKgD,IAAQ,EAClCxH,EAAMA,EAAKjD,KAAK6K,KAAKxD,EAAKsD,IAAQ,EAClC5D,EAAOA,EAAM/G,KAAK6K,KAAKxD,EAAKuD,IAAQ,EACpC7D,EAAOA,EAAM/G,KAAK6K,KAAKvD,EAAKqD,IAAQ,EACpC7F,EAAMA,EAAK9E,KAAK6K,KAAKvD,EAAKsD,IAAQ,EAClC,IAAIY,IAASnM,EAAI4D,EAAM,KAAa,KAAN8D,IAAiB,IAAO,EACtD1H,GAAOyF,GAAMiC,IAAQ,IAAO,IAAMyE,KAAQ,IAAO,EACjDA,IAAO,SAEPvI,EAAKjD,KAAK6K,KAAKhC,EAAKS,GACpBvC,EAAM/G,KAAK6K,KAAKhC,EAAKU,GACrBxC,EAAOA,EAAM/G,KAAK6K,KAAK/B,EAAKQ,GAAQ,EACpCxE,EAAK9E,KAAK6K,KAAK/B,EAAKS,GACpBtG,EAAMA,EAAKjD,KAAK6K,KAAKnC,EAAKe,GAAQ,EAClC1C,EAAOA,EAAM/G,KAAK6K,KAAKnC,EAAKgB,GAAQ,EACpC3C,EAAOA,EAAM/G,KAAK6K,KAAKlC,EAAKc,GAAQ,EACpC3E,EAAMA,EAAK9E,KAAK6K,KAAKlC,EAAKe,GAAQ,EAClCzG,EAAMA,EAAKjD,KAAK6K,KAAKtC,EAAKqB,GAAQ,EAClC7C,EAAOA,EAAM/G,KAAK6K,KAAKtC,EAAKsB,IAAQ,EACpC9C,EAAOA,EAAM/G,KAAK6K,KAAKrC,EAAKoB,GAAQ,EACpC9E,EAAMA,EAAK9E,KAAK6K,KAAKrC,EAAKqB,IAAQ,EAClC5G,EAAMA,EAAKjD,KAAK6K,KAAKzC,EAAK2B,IAAQ,EAClChD,EAAOA,EAAM/G,KAAK6K,KAAKzC,EAAK4B,IAAQ,EACpCjD,EAAOA,EAAM/G,KAAK6K,KAAKxC,EAAK0B,IAAQ,EACpCjF,EAAMA,EAAK9E,KAAK6K,KAAKxC,EAAK2B,IAAQ,EAClC/G,EAAMA,EAAKjD,KAAK6K,KAAK5C,EAAKiC,IAAQ,EAClCnD,EAAOA,EAAM/G,KAAK6K,KAAK5C,EAAKkC,IAAQ,EACpCpD,EAAOA,EAAM/G,KAAK6K,KAAK3C,EAAKgC,IAAQ,EACpCpF,EAAMA,EAAK9E,KAAK6K,KAAK3C,EAAKiC,IAAQ,EAClClH,EAAMA,EAAKjD,KAAK6K,KAAK/C,EAAKuC,IAAQ,EAClCtD,EAAOA,EAAM/G,KAAK6K,KAAK/C,EAAKwC,IAAQ,EACpCvD,EAAOA,EAAM/G,KAAK6K,KAAK9C,EAAKsC,IAAQ,EACpCvF,EAAMA,EAAK9E,KAAK6K,KAAK9C,EAAKuC,IAAQ,EAClCrH,EAAMA,EAAKjD,KAAK6K,KAAKlD,EAAK6C,IAAQ,EAClCzD,EAAOA,EAAM/G,KAAK6K,KAAKlD,EAAK8C,IAAQ,EACpC1D,EAAOA,EAAM/G,KAAK6K,KAAKjD,EAAK4C,IAAQ,EACpC1F,EAAMA,EAAK9E,KAAK6K,KAAKjD,EAAK6C,IAAQ,EAClCxH,EAAMA,EAAKjD,KAAK6K,KAAKrD,EAAKmD,IAAQ,EAClC5D,EAAOA,EAAM/G,KAAK6K,KAAKrD,EAAKoD,IAAQ,EACpC7D,EAAOA,EAAM/G,KAAK6K,KAAKpD,EAAKkD,IAAQ,EACpC7F,EAAMA,EAAK9E,KAAK6K,KAAKpD,EAAKmD,IAAQ,EAClC,IAAIa,IAASpM,EAAI4D,EAAM,KAAa,KAAN8D,IAAiB,IAAO,EACtD1H,GAAOyF,GAAMiC,IAAQ,IAAO,IAAM0E,KAAQ,IAAO,EACjDA,IAAO,SAEPxI,EAAKjD,KAAK6K,KAAKhC,EAAKY,GACpB1C,EAAM/G,KAAK6K,KAAKhC,EAAKa,GACrB3C,EAAOA,EAAM/G,KAAK6K,KAAK/B,EAAKW,GAAQ,EACpC3E,EAAK9E,KAAK6K,KAAK/B,EAAKY,GACpBzG,EAAMA,EAAKjD,KAAK6K,KAAKnC,EAAKkB,GAAQ,EAClC7C,EAAOA,EAAM/G,KAAK6K,KAAKnC,EAAKmB,IAAQ,EACpC9C,EAAOA,EAAM/G,KAAK6K,KAAKlC,EAAKiB,GAAQ,EACpC9E,EAAMA,EAAK9E,KAAK6K,KAAKlC,EAAKkB,IAAQ,EAClC5G,EAAMA,EAAKjD,KAAK6K,KAAKtC,EAAKwB,IAAQ,EAClChD,EAAOA,EAAM/G,KAAK6K,KAAKtC,EAAKyB,IAAQ,EACpCjD,EAAOA,EAAM/G,KAAK6K,KAAKrC,EAAKuB,IAAQ,EACpCjF,EAAMA,EAAK9E,KAAK6K,KAAKrC,EAAKwB,IAAQ,EAClC/G,EAAMA,EAAKjD,KAAK6K,KAAKzC,EAAK8B,IAAQ,EAClCnD,EAAOA,EAAM/G,KAAK6K,KAAKzC,EAAK+B,IAAQ,EACpCpD,EAAOA,EAAM/G,KAAK6K,KAAKxC,EAAK6B,IAAQ,EACpCpF,EAAMA,EAAK9E,KAAK6K,KAAKxC,EAAK8B,IAAQ,EAClClH,EAAMA,EAAKjD,KAAK6K,KAAK5C,EAAKoC,IAAQ,EAClCtD,EAAOA,EAAM/G,KAAK6K,KAAK5C,EAAKqC,IAAQ,EACpCvD,EAAOA,EAAM/G,KAAK6K,KAAK3C,EAAKmC,IAAQ,EACpCvF,EAAMA,EAAK9E,KAAK6K,KAAK3C,EAAKoC,IAAQ,EAClCrH,EAAMA,EAAKjD,KAAK6K,KAAK/C,EAAK0C,IAAQ,EAClCzD,EAAOA,EAAM/G,KAAK6K,KAAK/C,EAAK2C,IAAQ,EACpC1D,EAAOA,EAAM/G,KAAK6K,KAAK9C,EAAKyC,IAAQ,EACpC1F,EAAMA,EAAK9E,KAAK6K,KAAK9C,EAAK0C,IAAQ,EAClCxH,EAAMA,EAAKjD,KAAK6K,KAAKlD,EAAKgD,IAAQ,EAClC5D,EAAOA,EAAM/G,KAAK6K,KAAKlD,EAAKiD,IAAQ,EACpC7D,EAAOA,EAAM/G,KAAK6K,KAAKjD,EAAK+C,IAAQ,EACpC7F,EAAMA,EAAK9E,KAAK6K,KAAKjD,EAAKgD,IAAQ,EAClC,IAAIc,IAASrM,EAAI4D,EAAM,KAAa,KAAN8D,IAAiB,IAAO,EACtD1H,GAAOyF,GAAMiC,IAAQ,IAAO,IAAM2E,KAAQ,IAAO,EACjDA,IAAO,SAEPzI,EAAKjD,KAAK6K,KAAKhC,EAAKe,GACpB7C,EAAM/G,KAAK6K,KAAKhC,EAAKgB,IACrB9C,EAAOA,EAAM/G,KAAK6K,KAAK/B,EAAKc,GAAQ,EACpC9E,EAAK9E,KAAK6K,KAAK/B,EAAKe,IACpB5G,EAAMA,EAAKjD,KAAK6K,KAAKnC,EAAKqB,IAAQ,EAClChD,EAAOA,EAAM/G,KAAK6K,KAAKnC,EAAKsB,IAAQ,EACpCjD,EAAOA,EAAM/G,KAAK6K,KAAKlC,EAAKoB,IAAQ,EACpCjF,EAAMA,EAAK9E,KAAK6K,KAAKlC,EAAKqB,IAAQ,EAClC/G,EAAMA,EAAKjD,KAAK6K,KAAKtC,EAAK2B,IAAQ,EAClCnD,EAAOA,EAAM/G,KAAK6K,KAAKtC,EAAK4B,IAAQ,EACpCpD,EAAOA,EAAM/G,KAAK6K,KAAKrC,EAAK0B,IAAQ,EACpCpF,EAAMA,EAAK9E,KAAK6K,KAAKrC,EAAK2B,IAAQ,EAClClH,EAAMA,EAAKjD,KAAK6K,KAAKzC,EAAKiC,IAAQ,EAClCtD,EAAOA,EAAM/G,KAAK6K,KAAKzC,EAAKkC,IAAQ,EACpCvD,EAAOA,EAAM/G,KAAK6K,KAAKxC,EAAKgC,IAAQ,EACpCvF,EAAMA,EAAK9E,KAAK6K,KAAKxC,EAAKiC,IAAQ,EAClCrH,EAAMA,EAAKjD,KAAK6K,KAAK5C,EAAKuC,IAAQ,EAClCzD,EAAOA,EAAM/G,KAAK6K,KAAK5C,EAAKwC,IAAQ,EACpC1D,EAAOA,EAAM/G,KAAK6K,KAAK3C,EAAKsC,IAAQ,EACpC1F,EAAMA,EAAK9E,KAAK6K,KAAK3C,EAAKuC,IAAQ,EAClCxH,EAAMA,EAAKjD,KAAK6K,KAAK/C,EAAK6C,IAAQ,EAClC5D,EAAOA,EAAM/G,KAAK6K,KAAK/C,EAAK8C,IAAQ,EACpC7D,EAAOA,EAAM/G,KAAK6K,KAAK9C,EAAK4C,IAAQ,EACpC7F,EAAMA,EAAK9E,KAAK6K,KAAK9C,EAAK6C,IAAQ,EAClC,IAAIe,IAAStM,EAAI4D,EAAM,KAAa,KAAN8D,IAAiB,IAAO,EACtD1H,GAAOyF,GAAMiC,IAAQ,IAAO,IAAM4E,KAAQ,IAAO,EACjDA,IAAO,SAEP1I,EAAKjD,KAAK6K,KAAKhC,EAAKkB,IACpBhD,EAAM/G,KAAK6K,KAAKhC,EAAKmB,IACrBjD,EAAOA,EAAM/G,KAAK6K,KAAK/B,EAAKiB,IAAQ,EACpCjF,EAAK9E,KAAK6K,KAAK/B,EAAKkB,IACpB/G,EAAMA,EAAKjD,KAAK6K,KAAKnC,EAAKwB,IAAQ,EAClCnD,EAAOA,EAAM/G,KAAK6K,KAAKnC,EAAKyB,IAAQ,EACpCpD,EAAOA,EAAM/G,KAAK6K,KAAKlC,EAAKuB,IAAQ,EACpCpF,EAAMA,EAAK9E,KAAK6K,KAAKlC,EAAKwB,IAAQ,EAClClH,EAAMA,EAAKjD,KAAK6K,KAAKtC,EAAK8B,IAAQ,EAClCtD,EAAOA,EAAM/G,KAAK6K,KAAKtC,EAAK+B,IAAQ,EACpCvD,EAAOA,EAAM/G,KAAK6K,KAAKrC,EAAK6B,IAAQ,EACpCvF,EAAMA,EAAK9E,KAAK6K,KAAKrC,EAAK8B,IAAQ,EAClCrH,EAAMA,EAAKjD,KAAK6K,KAAKzC,EAAKoC,IAAQ,EAClCzD,EAAOA,EAAM/G,KAAK6K,KAAKzC,EAAKqC,IAAQ,EACpC1D,EAAOA,EAAM/G,KAAK6K,KAAKxC,EAAKmC,IAAQ,EACpC1F,EAAMA,EAAK9E,KAAK6K,KAAKxC,EAAKoC,IAAQ,EAClCxH,EAAMA,EAAKjD,KAAK6K,KAAK5C,EAAK0C,IAAQ,EAClC5D,EAAOA,EAAM/G,KAAK6K,KAAK5C,EAAK2C,IAAQ,EACpC7D,EAAOA,EAAM/G,KAAK6K,KAAK3C,EAAKyC,IAAQ,EACpC7F,EAAMA,EAAK9E,KAAK6K,KAAK3C,EAAK0C,IAAQ,EAClC,IAAIgB,IAASvM,EAAI4D,EAAM,KAAa,KAAN8D,IAAiB,IAAO,EACtD1H,GAAOyF,GAAMiC,IAAQ,IAAO,IAAM6E,KAAQ,IAAO,EACjDA,IAAO,SAEP3I,EAAKjD,KAAK6K,KAAKhC,EAAKqB,IACpBnD,EAAM/G,KAAK6K,KAAKhC,EAAKsB,IACrBpD,EAAOA,EAAM/G,KAAK6K,KAAK/B,EAAKoB,IAAQ,EACpCpF,EAAK9E,KAAK6K,KAAK/B,EAAKqB,IACpBlH,EAAMA,EAAKjD,KAAK6K,KAAKnC,EAAK2B,IAAQ,EAClCtD,EAAOA,EAAM/G,KAAK6K,KAAKnC,EAAK4B,IAAQ,EACpCvD,EAAOA,EAAM/G,KAAK6K,KAAKlC,EAAK0B,IAAQ,EACpCvF,EAAMA,EAAK9E,KAAK6K,KAAKlC,EAAK2B,IAAQ,EAClCrH,EAAMA,EAAKjD,KAAK6K,KAAKtC,EAAKiC,IAAQ,EAClCzD,EAAOA,EAAM/G,KAAK6K,KAAKtC,EAAKkC,IAAQ,EACpC1D,EAAOA,EAAM/G,KAAK6K,KAAKrC,EAAKgC,IAAQ,EACpC1F,EAAMA,EAAK9E,KAAK6K,KAAKrC,EAAKiC,IAAQ,EAClCxH,EAAMA,EAAKjD,KAAK6K,KAAKzC,EAAKuC,IAAQ,EAClC5D,EAAOA,EAAM/G,KAAK6K,KAAKzC,EAAKwC,IAAQ,EACpC7D,EAAOA,EAAM/G,KAAK6K,KAAKxC,EAAKsC,IAAQ,EACpC7F,EAAMA,EAAK9E,KAAK6K,KAAKxC,EAAKuC,IAAQ,EAClC,IAAIiB,IAASxM,EAAI4D,EAAM,KAAa,KAAN8D,IAAiB,IAAO,EACtD1H,GAAOyF,GAAMiC,IAAQ,IAAO,IAAM8E,KAAQ,IAAO,EACjDA,IAAO,SAEP5I,EAAKjD,KAAK6K,KAAKhC,EAAKwB,IACpBtD,EAAM/G,KAAK6K,KAAKhC,EAAKyB,IACrBvD,EAAOA,EAAM/G,KAAK6K,KAAK/B,EAAKuB,IAAQ,EACpCvF,EAAK9E,KAAK6K,KAAK/B,EAAKwB,IACpBrH,EAAMA,EAAKjD,KAAK6K,KAAKnC,EAAK8B,IAAQ,EAClCzD,EAAOA,EAAM/G,KAAK6K,KAAKnC,EAAK+B,IAAQ,EACpC1D,EAAOA,EAAM/G,KAAK6K,KAAKlC,EAAK6B,IAAQ,EACpC1F,EAAMA,EAAK9E,KAAK6K,KAAKlC,EAAK8B,IAAQ,EAClCxH,EAAMA,EAAKjD,KAAK6K,KAAKtC,EAAKoC,IAAQ,EAClC5D,EAAOA,EAAM/G,KAAK6K,KAAKtC,EAAKqC,IAAQ,EACpC7D,EAAOA,EAAM/G,KAAK6K,KAAKrC,EAAKmC,IAAQ,EACpC7F,EAAMA,EAAK9E,KAAK6K,KAAKrC,EAAKoC,IAAQ,EAClC,IAAIkB,IAASzM,EAAI4D,EAAM,KAAa,KAAN8D,IAAiB,IAAO,EACtD1H,GAAOyF,GAAMiC,IAAQ,IAAO,IAAM+E,KAAQ,IAAO,EACjDA,IAAO,SAEP7I,EAAKjD,KAAK6K,KAAKhC,EAAK2B,IACpBzD,EAAM/G,KAAK6K,KAAKhC,EAAK4B,IACrB1D,EAAOA,EAAM/G,KAAK6K,KAAK/B,EAAK0B,IAAQ,EACpC1F,EAAK9E,KAAK6K,KAAK/B,EAAK2B,IACpBxH,EAAMA,EAAKjD,KAAK6K,KAAKnC,EAAKiC,IAAQ,EAClC5D,EAAOA,EAAM/G,KAAK6K,KAAKnC,EAAKkC,IAAQ,EACpC7D,EAAOA,EAAM/G,KAAK6K,KAAKlC,EAAKgC,IAAQ,EACpC7F,EAAMA,EAAK9E,KAAK6K,KAAKlC,EAAKiC,IAAQ,EAClC,IAAImB,IAAS1M,EAAI4D,EAAM,KAAa,KAAN8D,IAAiB,IAAO,EACtD1H,GAAOyF,GAAMiC,IAAQ,IAAO,IAAMgF,KAAQ,IAAO,EACjDA,IAAO,SAEP9I,EAAKjD,KAAK6K,KAAKhC,EAAK8B,IACpB5D,EAAM/G,KAAK6K,KAAKhC,EAAK+B,IACrB7D,EAAOA,EAAM/G,KAAK6K,KAAK/B,EAAK6B,IAAQ,EACpC7F,EAAK9E,KAAK6K,KAAK/B,EAAK8B,IACpB,IAAIoB,IAAS3M,EAAI4D,EAAM,KAAa,KAAN8D,IAAiB,IAAO,EA0BtD,OAzBA1H,GAAOyF,GAAMiC,IAAQ,IAAO,IAAMiF,KAAQ,IAAO,EACjDA,IAAO,SACPhF,EAAE,GAAK8D,GACP9D,EAAE,GAAK+D,GACP/D,EAAE,GAAKgE,GACPhE,EAAE,GAAKiE,GACPjE,EAAE,GAAKkE,GACPlE,EAAE,GAAKmE,GACPnE,EAAE,GAAKoE,GACPpE,EAAE,GAAKqE,GACPrE,EAAE,GAAKsE,GACPtE,EAAE,GAAKuE,GACPvE,EAAE,IAAMwE,GACRxE,EAAE,IAAMyE,GACRzE,EAAE,IAAM0E,GACR1E,EAAE,IAAM2E,GACR3E,EAAE,IAAM4E,GACR5E,EAAE,IAAM6E,GACR7E,EAAE,IAAM8E,GACR9E,EAAE,IAAM+E,GACR/E,EAAE,IAAMgF,GACE,IAAN3M,IACF2H,EAAE,IAAM3H,EACRyD,EAAInE,UAECmE,GAQT,SAASmJ,EAAUpJ,EAAM1C,EAAK2C,GAC5BA,EAAIrE,SAAW0B,EAAI1B,SAAWoE,EAAKpE,SACnCqE,EAAInE,OAASkE,EAAKlE,OAASwB,EAAIxB,OAI/B,IAFA,IAAIuE,EAAQ,EACRgJ,EAAU,EACL/I,EAAI,EAAGA,EAAIL,EAAInE,OAAS,EAAGwE,IAAK,CAGvC,IAAIC,EAAS8I,EACbA,EAAU,EAGV,IAFA,IAAI7I,EAAgB,SAARH,EACRI,EAAOtD,KAAKC,IAAIkD,EAAGhD,EAAIxB,OAAS,GAC3BuC,EAAIlB,KAAKM,IAAI,EAAG6C,EAAIN,EAAKlE,OAAS,GAAIuC,GAAKoC,EAAMpC,IAAK,CAC7D,IAAIhB,EAAIiD,EAAIjC,EACR6B,EAAoB,EAAhBF,EAAKnE,MAAMwB,GACf8C,EAAmB,EAAf7C,EAAIzB,MAAMwC,GACdzB,EAAIsD,EAAIC,EAERC,EAAS,SAAJxD,EACT2D,EAAUA,GAAW3D,EAAI,SAAa,GAAM,EAC5CwD,EAAMA,EAAKI,EAAS,EACpBA,EAAa,SAALJ,EACRG,EAAUA,GAAUH,IAAO,IAAO,EAElCiJ,GAAW9I,IAAW,GACtBA,GAAU,SAEZN,EAAIpE,MAAMyE,GAAKE,EACfH,EAAQE,EACRA,EAAS8I,EAQX,OANc,IAAVhJ,EACFJ,EAAIpE,MAAMyE,GAAKD,EAEfJ,EAAInE,SAGCmE,EAAIzB,QAGb,SAAS8K,EAAYtJ,EAAM1C,EAAK2C,GAC9B,IAAIsJ,EAAO,IAAIC,EACf,OAAOD,EAAKE,KAAKzJ,EAAM1C,EAAK2C,GAsB9B,SAASuJ,EAAME,EAAGC,GAChBhO,KAAK+N,EAAIA,EACT/N,KAAKgO,EAAIA,EAvENxM,KAAK6K,OACR/D,EAAclE,GAiDhBzE,EAAGF,UAAUwO,MAAQ,SAAgBtM,EAAK2C,GACxC,IAAIwB,EACAvE,EAAMvB,KAAKG,OAASwB,EAAIxB,OAW5B,OATE2F,EADkB,KAAhB9F,KAAKG,QAAgC,KAAfwB,EAAIxB,OACtBmI,EAAYtI,KAAM2B,EAAK2C,GACpB/C,EAAM,GACT6C,EAAWpE,KAAM2B,EAAK2C,GACnB/C,EAAM,KACTkM,EAASzN,KAAM2B,EAAK2C,GAEpBqJ,EAAW3N,KAAM2B,EAAK2C,GAGvBwB,GAWT+H,EAAKpO,UAAUyO,QAAU,SAAkBC,GAGzC,IAFA,IAAI/H,EAAI,IAAIxE,MAAMuM,GACdC,EAAIzO,EAAGF,UAAU0G,WAAWgI,GAAK,EAC5BzM,EAAI,EAAGA,EAAIyM,EAAGzM,IACrB0E,EAAE1E,GAAK1B,KAAKqO,OAAO3M,EAAG0M,EAAGD,GAG3B,OAAO/H,GAITyH,EAAKpO,UAAU4O,OAAS,SAAiBN,EAAGK,EAAGD,GAC7C,GAAU,IAANJ,GAAWA,IAAMI,EAAI,EAAG,OAAOJ,EAGnC,IADA,IAAIO,EAAK,EACA5M,EAAI,EAAGA,EAAI0M,EAAG1M,IACrB4M,IAAW,EAAJP,IAAWK,EAAI1M,EAAI,EAC1BqM,IAAM,EAGR,OAAOO,GAKTT,EAAKpO,UAAU8O,QAAU,SAAkBC,EAAKC,EAAKC,EAAKC,EAAMC,EAAMT,GACpE,IAAK,IAAIzM,EAAI,EAAGA,EAAIyM,EAAGzM,IACrBiN,EAAKjN,GAAK+M,EAAID,EAAI9M,IAClBkN,EAAKlN,GAAKgN,EAAIF,EAAI9M,KAItBmM,EAAKpO,UAAUoP,UAAY,SAAoBJ,EAAKC,EAAKC,EAAMC,EAAMT,EAAGK,GACtExO,KAAKuO,QAAQC,EAAKC,EAAKC,EAAKC,EAAMC,EAAMT,GAExC,IAAK,IAAIW,EAAI,EAAGA,EAAIX,EAAGW,IAAM,EAM3B,IALA,IAAIV,EAAIU,GAAK,EAETC,EAAQvN,KAAKwN,IAAI,EAAIxN,KAAKyN,GAAKb,GAC/Bc,EAAQ1N,KAAK2N,IAAI,EAAI3N,KAAKyN,GAAKb,GAE1BgB,EAAI,EAAGA,EAAIjB,EAAGiB,GAAKhB,EAI1B,IAHA,IAAIiB,EAASN,EACTO,EAASJ,EAEJxM,EAAI,EAAGA,EAAIoM,EAAGpM,IAAK,CAC1B,IAAI6M,EAAKZ,EAAKS,EAAI1M,GACd8M,EAAKZ,EAAKQ,EAAI1M,GAEd+M,EAAKd,EAAKS,EAAI1M,EAAIoM,GAClBY,EAAKd,EAAKQ,EAAI1M,EAAIoM,GAElBa,EAAKN,EAASI,EAAKH,EAASI,EAEhCA,EAAKL,EAASK,EAAKJ,EAASG,EAC5BA,EAAKE,EAELhB,EAAKS,EAAI1M,GAAK6M,EAAKE,EACnBb,EAAKQ,EAAI1M,GAAK8M,EAAKE,EAEnBf,EAAKS,EAAI1M,EAAIoM,GAAKS,EAAKE,EACvBb,EAAKQ,EAAI1M,EAAIoM,GAAKU,EAAKE,EAGnBhN,IAAM0L,IACRuB,EAAKZ,EAAQM,EAASH,EAAQI,EAE9BA,EAASP,EAAQO,EAASJ,EAAQG,EAClCA,EAASM,KAOnB9B,EAAKpO,UAAUmQ,YAAc,SAAsBC,EAAGC,GACpD,IAAI3B,EAAqB,EAAjB3M,KAAKM,IAAIgO,EAAGD,GAChBE,EAAU,EAAJ5B,EACNzM,EAAI,EACR,IAAKyM,EAAIA,EAAI,EAAI,EAAGA,EAAGA,KAAU,EAC/BzM,IAGF,OAAO,GAAKA,EAAI,EAAIqO,GAGtBlC,EAAKpO,UAAUuQ,UAAY,SAAoBvB,EAAKC,EAAKP,GACvD,KAAIA,GAAK,GAET,IAAK,IAAIzM,EAAI,EAAGA,EAAIyM,EAAI,EAAGzM,IAAK,CAC9B,IAAI0E,EAAIqI,EAAI/M,GAEZ+M,EAAI/M,GAAK+M,EAAIN,EAAIzM,EAAI,GACrB+M,EAAIN,EAAIzM,EAAI,GAAK0E,EAEjBA,EAAIsI,EAAIhN,GAERgN,EAAIhN,IAAMgN,EAAIP,EAAIzM,EAAI,GACtBgN,EAAIP,EAAIzM,EAAI,IAAM0E,IAItByH,EAAKpO,UAAUwQ,aAAe,SAAuBC,EAAI/B,GAEvD,IADA,IAAIzJ,EAAQ,EACHhD,EAAI,EAAGA,EAAIyM,EAAI,EAAGzM,IAAK,CAC9B,IAAIiB,EAAoC,KAAhCnB,KAAK2O,MAAMD,EAAG,EAAIxO,EAAI,GAAKyM,GACjC3M,KAAK2O,MAAMD,EAAG,EAAIxO,GAAKyM,GACvBzJ,EAEFwL,EAAGxO,GAAS,SAAJiB,EAGN+B,EADE/B,EAAI,SACE,EAEAA,EAAI,SAAY,EAI5B,OAAOuN,GAGTrC,EAAKpO,UAAU2Q,WAAa,SAAqBF,EAAI3O,EAAKkN,EAAKN,GAE7D,IADA,IAAIzJ,EAAQ,EACHhD,EAAI,EAAGA,EAAIH,EAAKG,IACvBgD,GAAyB,EAARwL,EAAGxO,GAEpB+M,EAAI,EAAI/M,GAAa,KAARgD,EAAgBA,KAAkB,GAC/C+J,EAAI,EAAI/M,EAAI,GAAa,KAARgD,EAAgBA,KAAkB,GAIrD,IAAKhD,EAAI,EAAIH,EAAKG,EAAIyM,IAAKzM,EACzB+M,EAAI/M,GAAK,EAGX1C,EAAiB,IAAV0F,GACP1F,EAA6B,MAAb,KAAR0F,KAGVmJ,EAAKpO,UAAU4Q,KAAO,SAAelC,GAEnC,IADA,IAAImC,EAAK,IAAI1O,MAAMuM,GACVzM,EAAI,EAAGA,EAAIyM,EAAGzM,IACrB4O,EAAG5O,GAAK,EAGV,OAAO4O,GAGTzC,EAAKpO,UAAUqO,KAAO,SAAeC,EAAGC,EAAG1J,GACzC,IAAI6J,EAAI,EAAInO,KAAK4P,YAAY7B,EAAE5N,OAAQ6N,EAAE7N,QAErCqO,EAAMxO,KAAKkO,QAAQC,GAEnBoC,EAAIvQ,KAAKqQ,KAAKlC,GAEdM,EAAM,IAAI7M,MAAMuM,GAChBqC,EAAO,IAAI5O,MAAMuM,GACjBsC,EAAO,IAAI7O,MAAMuM,GAEjBuC,EAAO,IAAI9O,MAAMuM,GACjBwC,EAAQ,IAAI/O,MAAMuM,GAClByC,EAAQ,IAAIhP,MAAMuM,GAElB0C,EAAOvM,EAAIpE,MACf2Q,EAAK1Q,OAASgO,EAEdnO,KAAKoQ,WAAWrC,EAAE7N,MAAO6N,EAAE5N,OAAQsO,EAAKN,GACxCnO,KAAKoQ,WAAWpC,EAAE9N,MAAO8N,EAAE7N,OAAQuQ,EAAMvC,GAEzCnO,KAAK6O,UAAUJ,EAAK8B,EAAGC,EAAMC,EAAMtC,EAAGK,GACtCxO,KAAK6O,UAAU6B,EAAMH,EAAGI,EAAOC,EAAOzC,EAAGK,GAEzC,IAAK,IAAI9M,EAAI,EAAGA,EAAIyM,EAAGzM,IAAK,CAC1B,IAAIiO,EAAKa,EAAK9O,GAAKiP,EAAMjP,GAAK+O,EAAK/O,GAAKkP,EAAMlP,GAC9C+O,EAAK/O,GAAK8O,EAAK9O,GAAKkP,EAAMlP,GAAK+O,EAAK/O,GAAKiP,EAAMjP,GAC/C8O,EAAK9O,GAAKiO,EAUZ,OAPA3P,KAAKgQ,UAAUQ,EAAMC,EAAMtC,GAC3BnO,KAAK6O,UAAU2B,EAAMC,EAAMI,EAAMN,EAAGpC,EAAGK,GACvCxO,KAAKgQ,UAAUa,EAAMN,EAAGpC,GACxBnO,KAAKiQ,aAAaY,EAAM1C,GAExB7J,EAAIrE,SAAW8N,EAAE9N,SAAW+N,EAAE/N,SAC9BqE,EAAInE,OAAS4N,EAAE5N,OAAS6N,EAAE7N,OACnBmE,EAAIzB,SAIblD,EAAGF,UAAU6B,IAAM,SAAcK,GAC/B,IAAI2C,EAAM,IAAI3E,EAAG,MAEjB,OADA2E,EAAIpE,MAAQ,IAAI0B,MAAM5B,KAAKG,OAASwB,EAAIxB,QACjCH,KAAKiO,MAAMtM,EAAK2C,IAIzB3E,EAAGF,UAAUqR,KAAO,SAAenP,GACjC,IAAI2C,EAAM,IAAI3E,EAAG,MAEjB,OADA2E,EAAIpE,MAAQ,IAAI0B,MAAM5B,KAAKG,OAASwB,EAAIxB,QACjCwN,EAAW3N,KAAM2B,EAAK2C,IAI/B3E,EAAGF,UAAU4M,KAAO,SAAe1K,GACjC,OAAO3B,KAAKwD,QAAQyK,MAAMtM,EAAK3B,OAGjCL,EAAGF,UAAU0D,MAAQ,SAAgBxB,GACnC3C,EAAsB,kBAAR2C,GACd3C,EAAO2C,EAAM,UAIb,IADA,IAAI+C,EAAQ,EACHhD,EAAI,EAAGA,EAAI1B,KAAKG,OAAQuB,IAAK,CACpC,IAAIiB,GAAqB,EAAhB3C,KAAKE,MAAMwB,IAAUC,EAC1B8C,GAAU,SAAJ9B,IAA0B,SAAR+B,GAC5BA,IAAU,GACVA,GAAU/B,EAAI,SAAa,EAE3B+B,GAASD,IAAO,GAChBzE,KAAKE,MAAMwB,GAAU,SAAL+C,EAQlB,OALc,IAAVC,IACF1E,KAAKE,MAAMwB,GAAKgD,EAChB1E,KAAKG,UAGAH,MAGTL,EAAGF,UAAUsR,KAAO,SAAepP,GACjC,OAAO3B,KAAKwD,QAAQL,MAAMxB,IAI5BhC,EAAGF,UAAUuR,IAAM,WACjB,OAAOhR,KAAKsB,IAAItB,OAIlBL,EAAGF,UAAUwR,KAAO,WAClB,OAAOjR,KAAKqM,KAAKrM,KAAKwD,UAIxB7D,EAAGF,UAAU4D,IAAM,SAAc1B,GAC/B,IAAIgB,EAAIqB,EAAWrC,GACnB,GAAiB,IAAbgB,EAAExC,OAAc,OAAO,IAAIR,EAAG,GAIlC,IADA,IAAImG,EAAM9F,KACD0B,EAAI,EAAGA,EAAIiB,EAAExC,OAAQuB,IAAKoE,EAAMA,EAAIkL,MAC3C,GAAa,IAATrO,EAAEjB,GAAU,MAGlB,KAAMA,EAAIiB,EAAExC,OACV,IAAK,IAAI4F,EAAID,EAAIkL,MAAOtP,EAAIiB,EAAExC,OAAQuB,IAAKqE,EAAIA,EAAEiL,MAClC,IAATrO,EAAEjB,KAENoE,EAAMA,EAAIxE,IAAIyE,IAIlB,OAAOD,GAITnG,EAAGF,UAAUyR,OAAS,SAAiBC,GACrCnS,EAAuB,kBAATmS,GAAqBA,GAAQ,GAC3C,IAGIzP,EAHAT,EAAIkQ,EAAO,GACXrC,GAAKqC,EAAOlQ,GAAK,GACjBmQ,EAAa,WAAe,GAAKnQ,GAAQ,GAAKA,EAGlD,GAAU,IAANA,EAAS,CACX,IAAIyD,EAAQ,EAEZ,IAAKhD,EAAI,EAAGA,EAAI1B,KAAKG,OAAQuB,IAAK,CAChC,IAAI2P,EAAWrR,KAAKE,MAAMwB,GAAK0P,EAC3BvQ,GAAsB,EAAhBb,KAAKE,MAAMwB,IAAU2P,GAAapQ,EAC5CjB,KAAKE,MAAMwB,GAAKb,EAAI6D,EACpBA,EAAQ2M,IAAc,GAAKpQ,EAGzByD,IACF1E,KAAKE,MAAMwB,GAAKgD,EAChB1E,KAAKG,UAIT,GAAU,IAAN2O,EAAS,CACX,IAAKpN,EAAI1B,KAAKG,OAAS,EAAGuB,GAAK,EAAGA,IAChC1B,KAAKE,MAAMwB,EAAIoN,GAAK9O,KAAKE,MAAMwB,GAGjC,IAAKA,EAAI,EAAGA,EAAIoN,EAAGpN,IACjB1B,KAAKE,MAAMwB,GAAK,EAGlB1B,KAAKG,QAAU2O,EAGjB,OAAO9O,KAAK6C,SAGdlD,EAAGF,UAAU6R,MAAQ,SAAgBH,GAGnC,OADAnS,EAAyB,IAAlBgB,KAAKC,UACLD,KAAKkR,OAAOC,IAMrBxR,EAAGF,UAAUwG,OAAS,SAAiBkL,EAAMI,EAAMC,GAEjD,IAAIC,EADJzS,EAAuB,kBAATmS,GAAqBA,GAAQ,GAGzCM,EADEF,GACGA,EAAQA,EAAO,IAAO,GAEvB,EAGN,IAAItQ,EAAIkQ,EAAO,GACXrC,EAAItN,KAAKC,KAAK0P,EAAOlQ,GAAK,GAAIjB,KAAKG,QACnCuR,EAAO,SAAc,WAAczQ,GAAMA,EACzC0Q,EAAcH,EAMlB,GAJAC,GAAK3C,EACL2C,EAAIjQ,KAAKM,IAAI,EAAG2P,GAGZE,EAAa,CACf,IAAK,IAAIjQ,EAAI,EAAGA,EAAIoN,EAAGpN,IACrBiQ,EAAYzR,MAAMwB,GAAK1B,KAAKE,MAAMwB,GAEpCiQ,EAAYxR,OAAS2O,EAGvB,GAAU,IAANA,QAEG,GAAI9O,KAAKG,OAAS2O,EAEvB,IADA9O,KAAKG,QAAU2O,EACVpN,EAAI,EAAGA,EAAI1B,KAAKG,OAAQuB,IAC3B1B,KAAKE,MAAMwB,GAAK1B,KAAKE,MAAMwB,EAAIoN,QAGjC9O,KAAKE,MAAM,GAAK,EAChBF,KAAKG,OAAS,EAGhB,IAAIuE,EAAQ,EACZ,IAAKhD,EAAI1B,KAAKG,OAAS,EAAGuB,GAAK,IAAgB,IAAVgD,GAAehD,GAAK+P,GAAI/P,IAAK,CAChE,IAAIwB,EAAuB,EAAhBlD,KAAKE,MAAMwB,GACtB1B,KAAKE,MAAMwB,GAAMgD,GAAU,GAAKzD,EAAOiC,IAASjC,EAChDyD,EAAQxB,EAAOwO,EAajB,OATIC,GAAyB,IAAVjN,IACjBiN,EAAYzR,MAAMyR,EAAYxR,UAAYuE,GAGxB,IAAhB1E,KAAKG,SACPH,KAAKE,MAAM,GAAK,EAChBF,KAAKG,OAAS,GAGTH,KAAK6C,SAGdlD,EAAGF,UAAUmS,MAAQ,SAAgBT,EAAMI,EAAMC,GAG/C,OADAxS,EAAyB,IAAlBgB,KAAKC,UACLD,KAAKiG,OAAOkL,EAAMI,EAAMC,IAIjC7R,EAAGF,UAAUoS,KAAO,SAAeV,GACjC,OAAOnR,KAAKwD,QAAQ8N,MAAMH,IAG5BxR,EAAGF,UAAUqS,MAAQ,SAAgBX,GACnC,OAAOnR,KAAKwD,QAAQ0N,OAAOC,IAI7BxR,EAAGF,UAAUsS,KAAO,SAAeZ,GACjC,OAAOnR,KAAKwD,QAAQoO,MAAMT,IAG5BxR,EAAGF,UAAUuS,MAAQ,SAAgBb,GACnC,OAAOnR,KAAKwD,QAAQyC,OAAOkL,IAI7BxR,EAAGF,UAAUqH,MAAQ,SAAgB5C,GACnClF,EAAsB,kBAARkF,GAAoBA,GAAO,GACzC,IAAIjD,EAAIiD,EAAM,GACV4K,GAAK5K,EAAMjD,GAAK,GAChB8E,EAAI,GAAK9E,EAGb,GAAIjB,KAAKG,QAAU2O,EAAG,OAAO,EAG7B,IAAInM,EAAI3C,KAAKE,MAAM4O,GAEnB,SAAUnM,EAAIoD,IAIhBpG,EAAGF,UAAUwS,OAAS,SAAiBd,GACrCnS,EAAuB,kBAATmS,GAAqBA,GAAQ,GAC3C,IAAIlQ,EAAIkQ,EAAO,GACXrC,GAAKqC,EAAOlQ,GAAK,GAIrB,GAFAjC,EAAyB,IAAlBgB,KAAKC,SAAgB,2CAExBD,KAAKG,QAAU2O,EACjB,OAAO9O,KAQT,GALU,IAANiB,GACF6N,IAEF9O,KAAKG,OAASqB,KAAKC,IAAIqN,EAAG9O,KAAKG,QAErB,IAANc,EAAS,CACX,IAAIyQ,EAAO,SAAc,WAAczQ,GAAMA,EAC7CjB,KAAKE,MAAMF,KAAKG,OAAS,IAAMuR,EAGjC,OAAO1R,KAAK6C,SAIdlD,EAAGF,UAAUyS,MAAQ,SAAgBf,GACnC,OAAOnR,KAAKwD,QAAQyO,OAAOd,IAI7BxR,EAAGF,UAAUmH,MAAQ,SAAgBjF,GAGnC,OAFA3C,EAAsB,kBAAR2C,GACd3C,EAAO2C,EAAM,UACTA,EAAM,EAAU3B,KAAKmS,OAAOxQ,GAGV,IAAlB3B,KAAKC,SACa,IAAhBD,KAAKG,SAAiC,EAAhBH,KAAKE,MAAM,IAAUyB,GAC7C3B,KAAKE,MAAM,GAAKyB,GAAuB,EAAhB3B,KAAKE,MAAM,IAClCF,KAAKC,SAAW,EACTD,OAGTA,KAAKC,SAAW,EAChBD,KAAKmS,MAAMxQ,GACX3B,KAAKC,SAAW,EACTD,MAIFA,KAAKoD,OAAOzB,IAGrBhC,EAAGF,UAAU2D,OAAS,SAAiBzB,GACrC3B,KAAKE,MAAM,IAAMyB,EAGjB,IAAK,IAAID,EAAI,EAAGA,EAAI1B,KAAKG,QAAUH,KAAKE,MAAMwB,IAAM,SAAWA,IAC7D1B,KAAKE,MAAMwB,IAAM,SACbA,IAAM1B,KAAKG,OAAS,EACtBH,KAAKE,MAAMwB,EAAI,GAAK,EAEpB1B,KAAKE,MAAMwB,EAAI,KAKnB,OAFA1B,KAAKG,OAASqB,KAAKM,IAAI9B,KAAKG,OAAQuB,EAAI,GAEjC1B,MAITL,EAAGF,UAAU0S,MAAQ,SAAgBxQ,GAGnC,GAFA3C,EAAsB,kBAAR2C,GACd3C,EAAO2C,EAAM,UACTA,EAAM,EAAG,OAAO3B,KAAK4G,OAAOjF,GAEhC,GAAsB,IAAlB3B,KAAKC,SAIP,OAHAD,KAAKC,SAAW,EAChBD,KAAK4G,MAAMjF,GACX3B,KAAKC,SAAW,EACTD,KAKT,GAFAA,KAAKE,MAAM,IAAMyB,EAEG,IAAhB3B,KAAKG,QAAgBH,KAAKE,MAAM,GAAK,EACvCF,KAAKE,MAAM,IAAMF,KAAKE,MAAM,GAC5BF,KAAKC,SAAW,OAGhB,IAAK,IAAIyB,EAAI,EAAGA,EAAI1B,KAAKG,QAAUH,KAAKE,MAAMwB,GAAK,EAAGA,IACpD1B,KAAKE,MAAMwB,IAAM,SACjB1B,KAAKE,MAAMwB,EAAI,IAAM,EAIzB,OAAO1B,KAAK6C,SAGdlD,EAAGF,UAAU2S,KAAO,SAAezQ,GACjC,OAAO3B,KAAKwD,QAAQoD,MAAMjF,IAG5BhC,EAAGF,UAAU4S,KAAO,SAAe1Q,GACjC,OAAO3B,KAAKwD,QAAQ2O,MAAMxQ,IAG5BhC,EAAGF,UAAU6S,KAAO,WAGlB,OAFAtS,KAAKC,SAAW,EAETD,MAGTL,EAAGF,UAAUiH,IAAM,WACjB,OAAO1G,KAAKwD,QAAQ8O,QAGtB3S,EAAGF,UAAU8S,aAAe,SAAuB5Q,EAAKL,EAAKkR,GAC3D,IACI9Q,EAIAiB,EALApB,EAAMI,EAAIxB,OAASqS,EAGvBxS,KAAKyD,QAAQlC,GAGb,IAAImD,EAAQ,EACZ,IAAKhD,EAAI,EAAGA,EAAIC,EAAIxB,OAAQuB,IAAK,CAC/BiB,GAA6B,EAAxB3C,KAAKE,MAAMwB,EAAI8Q,IAAc9N,EAClC,IAAI1C,GAAwB,EAAfL,EAAIzB,MAAMwB,IAAUJ,EACjCqB,GAAa,SAARX,EACL0C,GAAS/B,GAAK,KAAQX,EAAQ,SAAa,GAC3ChC,KAAKE,MAAMwB,EAAI8Q,GAAa,SAAJ7P,EAE1B,KAAOjB,EAAI1B,KAAKG,OAASqS,EAAO9Q,IAC9BiB,GAA6B,EAAxB3C,KAAKE,MAAMwB,EAAI8Q,IAAc9N,EAClCA,EAAQ/B,GAAK,GACb3C,KAAKE,MAAMwB,EAAI8Q,GAAa,SAAJ7P,EAG1B,GAAc,IAAV+B,EAAa,OAAO1E,KAAK6C,QAK7B,IAFA7D,GAAkB,IAAX0F,GACPA,EAAQ,EACHhD,EAAI,EAAGA,EAAI1B,KAAKG,OAAQuB,IAC3BiB,IAAsB,EAAhB3C,KAAKE,MAAMwB,IAAUgD,EAC3BA,EAAQ/B,GAAK,GACb3C,KAAKE,MAAMwB,GAAS,SAAJiB,EAIlB,OAFA3C,KAAKC,SAAW,EAETD,KAAK6C,SAGdlD,EAAGF,UAAUgT,SAAW,SAAmB9Q,EAAK+Q,GAC9C,IAAIF,EAAQxS,KAAKG,OAASwB,EAAIxB,OAE1BoE,EAAIvE,KAAKwD,QACTgB,EAAI7C,EAGJgR,EAA8B,EAAxBnO,EAAEtE,MAAMsE,EAAErE,OAAS,GACzByS,EAAU5S,KAAKmG,WAAWwM,GAC9BH,EAAQ,GAAKI,EACC,IAAVJ,IACFhO,EAAIA,EAAEsN,MAAMU,GACZjO,EAAE2M,OAAOsB,GACTG,EAA8B,EAAxBnO,EAAEtE,MAAMsE,EAAErE,OAAS,IAI3B,IACI4F,EADA+J,EAAIvL,EAAEpE,OAASqE,EAAErE,OAGrB,GAAa,QAATuS,EAAgB,CAClB3M,EAAI,IAAIpG,EAAG,MACXoG,EAAE5F,OAAS2P,EAAI,EACf/J,EAAE7F,MAAQ,IAAI0B,MAAMmE,EAAE5F,QACtB,IAAK,IAAIuB,EAAI,EAAGA,EAAIqE,EAAE5F,OAAQuB,IAC5BqE,EAAE7F,MAAMwB,GAAK,EAIjB,IAAImR,EAAOtO,EAAEf,QAAQ+O,aAAa/N,EAAG,EAAGsL,GAClB,IAAlB+C,EAAK5S,WACPsE,EAAIsO,EACA9M,IACFA,EAAE7F,MAAM4P,GAAK,IAIjB,IAAK,IAAIpN,EAAIoN,EAAI,EAAGpN,GAAK,EAAGA,IAAK,CAC/B,IAAIoQ,EAAmC,UAAL,EAAxBvO,EAAErE,MAAMsE,EAAErE,OAASuC,KACE,EAA5B6B,EAAErE,MAAMsE,EAAErE,OAASuC,EAAI,IAI1BoQ,EAAKtR,KAAKC,IAAKqR,EAAKH,EAAO,EAAG,UAE9BpO,EAAEgO,aAAa/N,EAAGsO,EAAIpQ,GACtB,MAAsB,IAAf6B,EAAEtE,SACP6S,IACAvO,EAAEtE,SAAW,EACbsE,EAAEgO,aAAa/N,EAAG,EAAG9B,GAChB6B,EAAEW,WACLX,EAAEtE,UAAY,GAGd8F,IACFA,EAAE7F,MAAMwC,GAAKoQ,GAajB,OAVI/M,GACFA,EAAElD,QAEJ0B,EAAE1B,QAGW,QAAT6P,GAA4B,IAAVF,GACpBjO,EAAE0B,OAAOuM,GAGJ,CACLO,IAAKhN,GAAK,KACV/H,IAAKuG,IAQT5E,EAAGF,UAAUuT,OAAS,SAAiBrR,EAAK+Q,EAAMO,GAGhD,OAFAjU,GAAQ2C,EAAIuD,UAERlF,KAAKkF,SACA,CACL6N,IAAK,IAAIpT,EAAG,GACZ3B,IAAK,IAAI2B,EAAG,IAKM,IAAlBK,KAAKC,UAAmC,IAAjB0B,EAAI1B,UAC7B6F,EAAM9F,KAAKkH,MAAM8L,OAAOrR,EAAK+Q,GAEhB,QAATA,IACFK,EAAMjN,EAAIiN,IAAI7L,OAGH,QAATwL,IACF1U,EAAM8H,EAAI9H,IAAIkJ,MACV+L,GAA6B,IAAjBjV,EAAIiC,UAClBjC,EAAIkK,KAAKvG,IAIN,CACLoR,IAAKA,EACL/U,IAAKA,IAIa,IAAlBgC,KAAKC,UAAmC,IAAjB0B,EAAI1B,UAC7B6F,EAAM9F,KAAKgT,OAAOrR,EAAIuF,MAAOwL,GAEhB,QAATA,IACFK,EAAMjN,EAAIiN,IAAI7L,OAGT,CACL6L,IAAKA,EACL/U,IAAK8H,EAAI9H,MAI0B,KAAlCgC,KAAKC,SAAW0B,EAAI1B,WACvB6F,EAAM9F,KAAKkH,MAAM8L,OAAOrR,EAAIuF,MAAOwL,GAEtB,QAATA,IACF1U,EAAM8H,EAAI9H,IAAIkJ,MACV+L,GAA6B,IAAjBjV,EAAIiC,UAClBjC,EAAImK,KAAKxG,IAIN,CACLoR,IAAKjN,EAAIiN,IACT/U,IAAKA,IAOL2D,EAAIxB,OAASH,KAAKG,QAAUH,KAAKiC,IAAIN,GAAO,EACvC,CACLoR,IAAK,IAAIpT,EAAG,GACZ3B,IAAKgC,MAKU,IAAf2B,EAAIxB,OACO,QAATuS,EACK,CACLK,IAAK/S,KAAKkT,KAAKvR,EAAIzB,MAAM,IACzBlC,IAAK,MAII,QAAT0U,EACK,CACLK,IAAK,KACL/U,IAAK,IAAI2B,EAAGK,KAAKmF,KAAKxD,EAAIzB,MAAM,MAI7B,CACL6S,IAAK/S,KAAKkT,KAAKvR,EAAIzB,MAAM,IACzBlC,IAAK,IAAI2B,EAAGK,KAAKmF,KAAKxD,EAAIzB,MAAM,MAI7BF,KAAKyS,SAAS9Q,EAAK+Q,GAlF1B,IAAIK,EAAK/U,EAAK8H,GAsFhBnG,EAAGF,UAAUsT,IAAM,SAAcpR,GAC/B,OAAO3B,KAAKgT,OAAOrR,EAAK,OAAO,GAAOoR,KAIxCpT,EAAGF,UAAUzB,IAAM,SAAc2D,GAC/B,OAAO3B,KAAKgT,OAAOrR,EAAK,OAAO,GAAO3D,KAGxC2B,EAAGF,UAAU0T,KAAO,SAAexR,GACjC,OAAO3B,KAAKgT,OAAOrR,EAAK,OAAO,GAAM3D,KAIvC2B,EAAGF,UAAU2T,SAAW,SAAmBzR,GACzC,IAAI0R,EAAKrT,KAAKgT,OAAOrR,GAGrB,GAAI0R,EAAGrV,IAAIkH,SAAU,OAAOmO,EAAGN,IAE/B,IAAI/U,EAA0B,IAApBqV,EAAGN,IAAI9S,SAAiBoT,EAAGrV,IAAImK,KAAKxG,GAAO0R,EAAGrV,IAEpDsV,EAAO3R,EAAIqQ,MAAM,GACjBuB,EAAK5R,EAAIqE,MAAM,GACf/D,EAAMjE,EAAIiE,IAAIqR,GAGlB,OAAIrR,EAAM,GAAY,IAAPsR,GAAoB,IAARtR,EAAkBoR,EAAGN,IAGrB,IAApBM,EAAGN,IAAI9S,SAAiBoT,EAAGN,IAAIZ,MAAM,GAAKkB,EAAGN,IAAInM,MAAM,IAGhEjH,EAAGF,UAAU0F,KAAO,SAAexD,GACjC3C,EAAO2C,GAAO,UAId,IAHA,IAAIyN,GAAK,GAAK,IAAMzN,EAEhB6R,EAAM,EACD9R,EAAI1B,KAAKG,OAAS,EAAGuB,GAAK,EAAGA,IACpC8R,GAAOpE,EAAIoE,GAAuB,EAAhBxT,KAAKE,MAAMwB,KAAWC,EAG1C,OAAO6R,GAIT7T,EAAGF,UAAU2F,MAAQ,SAAgBzD,GACnC3C,EAAO2C,GAAO,UAGd,IADA,IAAI+C,EAAQ,EACHhD,EAAI1B,KAAKG,OAAS,EAAGuB,GAAK,EAAGA,IAAK,CACzC,IAAIiB,GAAqB,EAAhB3C,KAAKE,MAAMwB,IAAkB,SAARgD,EAC9B1E,KAAKE,MAAMwB,GAAMiB,EAAIhB,EAAO,EAC5B+C,EAAQ/B,EAAIhB,EAGd,OAAO3B,KAAK6C,SAGdlD,EAAGF,UAAUyT,KAAO,SAAevR,GACjC,OAAO3B,KAAKwD,QAAQ4B,MAAMzD,IAG5BhC,EAAGF,UAAUgU,KAAO,SAAerE,GACjCpQ,EAAsB,IAAfoQ,EAAEnP,UACTjB,GAAQoQ,EAAElK,UAEV,IAAI6I,EAAI/N,KACJgO,EAAIoB,EAAE5L,QAGRuK,EADiB,IAAfA,EAAE9N,SACA8N,EAAEoF,KAAK/D,GAEPrB,EAAEvK,QAIR,IAAIkQ,EAAI,IAAI/T,EAAG,GACXgU,EAAI,IAAIhU,EAAG,GAGXiU,EAAI,IAAIjU,EAAG,GACXkU,EAAI,IAAIlU,EAAG,GAEXmU,EAAI,EAER,MAAO/F,EAAEgG,UAAY/F,EAAE+F,SACrBhG,EAAE9H,OAAO,GACT+H,EAAE/H,OAAO,KACP6N,EAGJ,IAAIE,EAAKhG,EAAExK,QACPyQ,EAAKlG,EAAEvK,QAEX,OAAQuK,EAAE7I,SAAU,CAClB,IAAK,IAAIxD,EAAI,EAAGwS,EAAK,EAAyB,KAArBnG,EAAE7N,MAAM,GAAKgU,IAAaxS,EAAI,KAAMA,EAAGwS,IAAO,GACvE,GAAIxS,EAAI,EAAG,CACTqM,EAAE9H,OAAOvE,GACT,MAAOA,KAAM,GACPgS,EAAES,SAAWR,EAAEQ,WACjBT,EAAExL,KAAK8L,GACPL,EAAExL,KAAK8L,IAGTP,EAAEzN,OAAO,GACT0N,EAAE1N,OAAO,GAIb,IAAK,IAAIvD,EAAI,EAAG0R,EAAK,EAAyB,KAArBpG,EAAE9N,MAAM,GAAKkU,IAAa1R,EAAI,KAAMA,EAAG0R,IAAO,GACvE,GAAI1R,EAAI,EAAG,CACTsL,EAAE/H,OAAOvD,GACT,MAAOA,KAAM,GACPkR,EAAEO,SAAWN,EAAEM,WACjBP,EAAE1L,KAAK8L,GACPH,EAAE1L,KAAK8L,IAGTL,EAAE3N,OAAO,GACT4N,EAAE5N,OAAO,GAIT8H,EAAE9L,IAAI+L,IAAM,GACdD,EAAE5F,KAAK6F,GACP0F,EAAEvL,KAAKyL,GACPD,EAAExL,KAAK0L,KAEP7F,EAAE7F,KAAK4F,GACP6F,EAAEzL,KAAKuL,GACPG,EAAE1L,KAAKwL,IAIX,MAAO,CACLpP,EAAGqP,EACHpP,EAAGqP,EACHQ,IAAKrG,EAAEkD,OAAO4C,KAOlBnU,EAAGF,UAAU6U,OAAS,SAAiBlF,GACrCpQ,EAAsB,IAAfoQ,EAAEnP,UACTjB,GAAQoQ,EAAElK,UAEV,IAAIX,EAAIvE,KACJwE,EAAI4K,EAAE5L,QAGRe,EADiB,IAAfA,EAAEtE,SACAsE,EAAE4O,KAAK/D,GAEP7K,EAAEf,QAGR,IAuCIsC,EAvCAyO,EAAK,IAAI5U,EAAG,GACZ6U,EAAK,IAAI7U,EAAG,GAEZ8U,EAAQjQ,EAAEhB,QAEd,MAAOe,EAAEmQ,KAAK,GAAK,GAAKlQ,EAAEkQ,KAAK,GAAK,EAAG,CACrC,IAAK,IAAIhT,EAAI,EAAGwS,EAAK,EAAyB,KAArB3P,EAAErE,MAAM,GAAKgU,IAAaxS,EAAI,KAAMA,EAAGwS,IAAO,GACvE,GAAIxS,EAAI,EAAG,CACT6C,EAAE0B,OAAOvE,GACT,MAAOA,KAAM,EACP6S,EAAGJ,SACLI,EAAGrM,KAAKuM,GAGVF,EAAGtO,OAAO,GAId,IAAK,IAAIvD,EAAI,EAAG0R,EAAK,EAAyB,KAArB5P,EAAEtE,MAAM,GAAKkU,IAAa1R,EAAI,KAAMA,EAAG0R,IAAO,GACvE,GAAI1R,EAAI,EAAG,CACT8B,EAAEyB,OAAOvD,GACT,MAAOA,KAAM,EACP8R,EAAGL,SACLK,EAAGtM,KAAKuM,GAGVD,EAAGvO,OAAO,GAIV1B,EAAEtC,IAAIuC,IAAM,GACdD,EAAE4D,KAAK3D,GACP+P,EAAGpM,KAAKqM,KAERhQ,EAAE2D,KAAK5D,GACPiQ,EAAGrM,KAAKoM,IAeZ,OATEzO,EADgB,IAAdvB,EAAEmQ,KAAK,GACHH,EAEAC,EAGJ1O,EAAI4O,KAAK,GAAK,GAChB5O,EAAIoC,KAAKkH,GAGJtJ,GAGTnG,EAAGF,UAAU4U,IAAM,SAAc1S,GAC/B,GAAI3B,KAAKkF,SAAU,OAAOvD,EAAI+E,MAC9B,GAAI/E,EAAIuD,SAAU,OAAOlF,KAAK0G,MAE9B,IAAInC,EAAIvE,KAAKwD,QACTgB,EAAI7C,EAAI6B,QACZe,EAAEtE,SAAW,EACbuE,EAAEvE,SAAW,EAGb,IAAK,IAAIuS,EAAQ,EAAGjO,EAAEwP,UAAYvP,EAAEuP,SAAUvB,IAC5CjO,EAAE0B,OAAO,GACTzB,EAAEyB,OAAO,GAGX,EAAG,CACD,MAAO1B,EAAEwP,SACPxP,EAAE0B,OAAO,GAEX,MAAOzB,EAAEuP,SACPvP,EAAEyB,OAAO,GAGX,IAAIhF,EAAIsD,EAAEtC,IAAIuC,GACd,GAAIvD,EAAI,EAAG,CAET,IAAImF,EAAI7B,EACRA,EAAIC,EACJA,EAAI4B,OACC,GAAU,IAANnF,GAAyB,IAAduD,EAAEkQ,KAAK,GAC3B,MAGFnQ,EAAE4D,KAAK3D,SACA,GAET,OAAOA,EAAE0M,OAAOsB,IAIlB7S,EAAGF,UAAUkV,KAAO,SAAehT,GACjC,OAAO3B,KAAKyT,KAAK9R,GAAK4C,EAAE4O,KAAKxR,IAG/BhC,EAAGF,UAAUsU,OAAS,WACpB,OAA+B,KAAP,EAAhB/T,KAAKE,MAAM,KAGrBP,EAAGF,UAAU0U,MAAQ,WACnB,OAA+B,KAAP,EAAhBnU,KAAKE,MAAM,KAIrBP,EAAGF,UAAUuG,MAAQ,SAAgBrE,GACnC,OAAO3B,KAAKE,MAAM,GAAKyB,GAIzBhC,EAAGF,UAAUmV,MAAQ,SAAgB1Q,GACnClF,EAAsB,kBAARkF,GACd,IAAIjD,EAAIiD,EAAM,GACV4K,GAAK5K,EAAMjD,GAAK,GAChB8E,EAAI,GAAK9E,EAGb,GAAIjB,KAAKG,QAAU2O,EAGjB,OAFA9O,KAAKyD,QAAQqL,EAAI,GACjB9O,KAAKE,MAAM4O,IAAM/I,EACV/F,KAKT,IADA,IAAI0E,EAAQqB,EACHrE,EAAIoN,EAAa,IAAVpK,GAAehD,EAAI1B,KAAKG,OAAQuB,IAAK,CACnD,IAAIiB,EAAoB,EAAhB3C,KAAKE,MAAMwB,GACnBiB,GAAK+B,EACLA,EAAQ/B,IAAM,GACdA,GAAK,SACL3C,KAAKE,MAAMwB,GAAKiB,EAMlB,OAJc,IAAV+B,IACF1E,KAAKE,MAAMwB,GAAKgD,EAChB1E,KAAKG,UAEAH,MAGTL,EAAGF,UAAUyF,OAAS,WACpB,OAAuB,IAAhBlF,KAAKG,QAAkC,IAAlBH,KAAKE,MAAM,IAGzCP,EAAGF,UAAUiV,KAAO,SAAe/S,GACjC,IAOImE,EAPA7F,EAAW0B,EAAM,EAErB,GAAsB,IAAlB3B,KAAKC,WAAmBA,EAAU,OAAQ,EAC9C,GAAsB,IAAlBD,KAAKC,UAAkBA,EAAU,OAAO,EAK5C,GAHAD,KAAK6C,QAGD7C,KAAKG,OAAS,EAChB2F,EAAM,MACD,CACD7F,IACF0B,GAAOA,GAGT3C,EAAO2C,GAAO,SAAW,qBAEzB,IAAIgB,EAAoB,EAAhB3C,KAAKE,MAAM,GACnB4F,EAAMnD,IAAMhB,EAAM,EAAIgB,EAAIhB,GAAO,EAAI,EAEvC,OAAsB,IAAlB3B,KAAKC,SAA8B,GAAN6F,EAC1BA,GAOTnG,EAAGF,UAAUwC,IAAM,SAAcN,GAC/B,GAAsB,IAAlB3B,KAAKC,UAAmC,IAAjB0B,EAAI1B,SAAgB,OAAQ,EACvD,GAAsB,IAAlBD,KAAKC,UAAmC,IAAjB0B,EAAI1B,SAAgB,OAAO,EAEtD,IAAI6F,EAAM9F,KAAK6U,KAAKlT,GACpB,OAAsB,IAAlB3B,KAAKC,SAA8B,GAAN6F,EAC1BA,GAITnG,EAAGF,UAAUoV,KAAO,SAAelT,GAEjC,GAAI3B,KAAKG,OAASwB,EAAIxB,OAAQ,OAAO,EACrC,GAAIH,KAAKG,OAASwB,EAAIxB,OAAQ,OAAQ,EAGtC,IADA,IAAI2F,EAAM,EACDpE,EAAI1B,KAAKG,OAAS,EAAGuB,GAAK,EAAGA,IAAK,CACzC,IAAI6C,EAAoB,EAAhBvE,KAAKE,MAAMwB,GACf8C,EAAmB,EAAf7C,EAAIzB,MAAMwB,GAElB,GAAI6C,IAAMC,EAAV,CACID,EAAIC,EACNsB,GAAO,EACEvB,EAAIC,IACbsB,EAAM,GAER,OAEF,OAAOA,GAGTnG,EAAGF,UAAUqV,IAAM,SAAcnT,GAC/B,OAA0B,IAAnB3B,KAAK0U,KAAK/S,IAGnBhC,EAAGF,UAAUsV,GAAK,SAAapT,GAC7B,OAAyB,IAAlB3B,KAAKiC,IAAIN,IAGlBhC,EAAGF,UAAUuV,KAAO,SAAerT,GACjC,OAAO3B,KAAK0U,KAAK/S,IAAQ,GAG3BhC,EAAGF,UAAUwV,IAAM,SAActT,GAC/B,OAAO3B,KAAKiC,IAAIN,IAAQ,GAG1BhC,EAAGF,UAAUyV,IAAM,SAAcvT,GAC/B,OAA2B,IAApB3B,KAAK0U,KAAK/S,IAGnBhC,EAAGF,UAAU0V,GAAK,SAAaxT,GAC7B,OAA0B,IAAnB3B,KAAKiC,IAAIN,IAGlBhC,EAAGF,UAAU2V,KAAO,SAAezT,GACjC,OAAO3B,KAAK0U,KAAK/S,IAAQ,GAG3BhC,EAAGF,UAAU4V,IAAM,SAAc1T,GAC/B,OAAO3B,KAAKiC,IAAIN,IAAQ,GAG1BhC,EAAGF,UAAU6V,IAAM,SAAc3T,GAC/B,OAA0B,IAAnB3B,KAAK0U,KAAK/S,IAGnBhC,EAAGF,UAAU8V,GAAK,SAAa5T,GAC7B,OAAyB,IAAlB3B,KAAKiC,IAAIN,IAOlBhC,EAAGS,IAAM,SAAcuB,GACrB,OAAO,IAAI6T,EAAI7T,IAGjBhC,EAAGF,UAAUgW,MAAQ,SAAgBC,GAGnC,OAFA1W,GAAQgB,KAAKI,IAAK,yCAClBpB,EAAyB,IAAlBgB,KAAKC,SAAgB,iCACrByV,EAAIC,UAAU3V,MAAM4V,UAAUF,IAGvC/V,EAAGF,UAAUoW,QAAU,WAErB,OADA7W,EAAOgB,KAAKI,IAAK,wDACVJ,KAAKI,IAAI0V,YAAY9V,OAG9BL,EAAGF,UAAUmW,UAAY,SAAoBF,GAE3C,OADA1V,KAAKI,IAAMsV,EACJ1V,MAGTL,EAAGF,UAAUsW,SAAW,SAAmBL,GAEzC,OADA1W,GAAQgB,KAAKI,IAAK,yCACXJ,KAAK4V,UAAUF,IAGxB/V,EAAGF,UAAUuW,OAAS,SAAiBrU,GAErC,OADA3C,EAAOgB,KAAKI,IAAK,sCACVJ,KAAKI,IAAIgI,IAAIpI,KAAM2B,IAG5BhC,EAAGF,UAAUwW,QAAU,SAAkBtU,GAEvC,OADA3C,EAAOgB,KAAKI,IAAK,uCACVJ,KAAKI,IAAI8H,KAAKlI,KAAM2B,IAG7BhC,EAAGF,UAAUyW,OAAS,SAAiBvU,GAErC,OADA3C,EAAOgB,KAAKI,IAAK,sCACVJ,KAAKI,IAAIiI,IAAIrI,KAAM2B,IAG5BhC,EAAGF,UAAU0W,QAAU,SAAkBxU,GAEvC,OADA3C,EAAOgB,KAAKI,IAAK,uCACVJ,KAAKI,IAAI+H,KAAKnI,KAAM2B,IAG7BhC,EAAGF,UAAU2W,OAAS,SAAiBzU,GAErC,OADA3C,EAAOgB,KAAKI,IAAK,sCACVJ,KAAKI,IAAIiW,IAAIrW,KAAM2B,IAG5BhC,EAAGF,UAAU6W,OAAS,SAAiB3U,GAGrC,OAFA3C,EAAOgB,KAAKI,IAAK,sCACjBJ,KAAKI,IAAImW,SAASvW,KAAM2B,GACjB3B,KAAKI,IAAIkB,IAAItB,KAAM2B,IAG5BhC,EAAGF,UAAU+W,QAAU,SAAkB7U,GAGvC,OAFA3C,EAAOgB,KAAKI,IAAK,sCACjBJ,KAAKI,IAAImW,SAASvW,KAAM2B,GACjB3B,KAAKI,IAAIiM,KAAKrM,KAAM2B,IAG7BhC,EAAGF,UAAUgX,OAAS,WAGpB,OAFAzX,EAAOgB,KAAKI,IAAK,sCACjBJ,KAAKI,IAAIsW,SAAS1W,MACXA,KAAKI,IAAI4Q,IAAIhR,OAGtBL,EAAGF,UAAUkX,QAAU,WAGrB,OAFA3X,EAAOgB,KAAKI,IAAK,uCACjBJ,KAAKI,IAAIsW,SAAS1W,MACXA,KAAKI,IAAI6Q,KAAKjR,OAIvBL,EAAGF,UAAUmX,QAAU,WAGrB,OAFA5X,EAAOgB,KAAKI,IAAK,uCACjBJ,KAAKI,IAAIsW,SAAS1W,MACXA,KAAKI,IAAIyW,KAAK7W,OAGvBL,EAAGF,UAAUqX,QAAU,WAGrB,OAFA9X,EAAOgB,KAAKI,IAAK,uCACjBJ,KAAKI,IAAIsW,SAAS1W,MACXA,KAAKI,IAAIuU,KAAK3U,OAIvBL,EAAGF,UAAUsX,OAAS,WAGpB,OAFA/X,EAAOgB,KAAKI,IAAK,sCACjBJ,KAAKI,IAAIsW,SAAS1W,MACXA,KAAKI,IAAI8G,IAAIlH,OAGtBL,EAAGF,UAAUuX,OAAS,SAAiBrV,GAGrC,OAFA3C,EAAOgB,KAAKI,MAAQuB,EAAIvB,IAAK,qBAC7BJ,KAAKI,IAAIsW,SAAS1W,MACXA,KAAKI,IAAIiD,IAAIrD,KAAM2B,IAI5B,IAAI9D,EAAS,CACXoZ,KAAM,KACNC,KAAM,KACNC,KAAM,KACNC,OAAQ,MAIV,SAASC,EAAQC,EAAMlI,GAErBpP,KAAKsX,KAAOA,EACZtX,KAAKoP,EAAI,IAAIzP,EAAGyP,EAAG,IACnBpP,KAAK6P,EAAI7P,KAAKoP,EAAEnL,YAChBjE,KAAK2E,EAAI,IAAIhF,EAAG,GAAGuR,OAAOlR,KAAK6P,GAAG1H,KAAKnI,KAAKoP,GAE5CpP,KAAKuX,IAAMvX,KAAKwX,OAiDlB,SAASC,IACPJ,EAAOK,KACL1X,KACA,OACA,2EA+DJ,SAAS2X,IACPN,EAAOK,KACL1X,KACA,OACA,kEAIJ,SAAS4X,IACPP,EAAOK,KACL1X,KACA,OACA,yDAIJ,SAAS6X,IAEPR,EAAOK,KACL1X,KACA,QACA,uEA8CJ,SAASwV,EAAK1F,GACZ,GAAiB,kBAANA,EAAgB,CACzB,IAAI7R,EAAQ0B,EAAGmY,OAAOhI,GACtB9P,KAAK8P,EAAI7R,EAAMmR,EACfpP,KAAK/B,MAAQA,OAEbe,EAAO8Q,EAAEgF,IAAI,GAAI,kCACjB9U,KAAK8P,EAAIA,EACT9P,KAAK/B,MAAQ,KAkOjB,SAAS8Z,EAAMjI,GACb0F,EAAIkC,KAAK1X,KAAM8P,GAEf9P,KAAKwS,MAAQxS,KAAK8P,EAAE7L,YAChBjE,KAAKwS,MAAQ,KAAO,IACtBxS,KAAKwS,OAAS,GAAMxS,KAAKwS,MAAQ,IAGnCxS,KAAKiB,EAAI,IAAItB,EAAG,GAAGuR,OAAOlR,KAAKwS,OAC/BxS,KAAKuT,GAAKvT,KAAKgY,KAAKhY,KAAKiB,EAAE+P,OAC3BhR,KAAKiY,KAAOjY,KAAKiB,EAAEqT,OAAOtU,KAAK8P,GAE/B9P,KAAKkY,KAAOlY,KAAKiY,KAAK3W,IAAItB,KAAKiB,GAAGkR,MAAM,GAAGY,IAAI/S,KAAK8P,GACpD9P,KAAKkY,KAAOlY,KAAKkY,KAAK/E,KAAKnT,KAAKiB,GAChCjB,KAAKkY,KAAOlY,KAAKiB,EAAEoH,IAAIrI,KAAKkY,MA5a9Bb,EAAO5X,UAAU+X,KAAO,WACtB,IAAID,EAAM,IAAI5X,EAAG,MAEjB,OADA4X,EAAIrX,MAAQ,IAAI0B,MAAMJ,KAAKiB,KAAKzC,KAAK6P,EAAI,KAClC0H,GAGTF,EAAO5X,UAAU0Y,QAAU,SAAkBxW,GAG3C,IACIyW,EADAnX,EAAIU,EAGR,GACE3B,KAAKqY,MAAMpX,EAAGjB,KAAKuX,KACnBtW,EAAIjB,KAAKsY,MAAMrX,GACfA,EAAIA,EAAEiH,KAAKlI,KAAKuX,KAChBa,EAAOnX,EAAEgD,kBACFmU,EAAOpY,KAAK6P,GAErB,IAAI5N,EAAMmW,EAAOpY,KAAK6P,GAAK,EAAI5O,EAAE4T,KAAK7U,KAAKoP,GAgB3C,OAfY,IAARnN,GACFhB,EAAEf,MAAM,GAAK,EACbe,EAAEd,OAAS,GACF8B,EAAM,EACfhB,EAAEkH,KAAKnI,KAAKoP,QAEI1Q,IAAZuC,EAAE4B,MAEJ5B,EAAE4B,QAGF5B,EAAEsX,SAICtX,GAGToW,EAAO5X,UAAU4Y,MAAQ,SAAgBG,EAAOlU,GAC9CkU,EAAMvS,OAAOjG,KAAK6P,EAAG,EAAGvL,IAG1B+S,EAAO5X,UAAU6Y,MAAQ,SAAgB3W,GACvC,OAAOA,EAAI0K,KAAKrM,KAAK2E,IASvBvF,EAASqY,EAAMJ,GAEfI,EAAKhY,UAAU4Y,MAAQ,SAAgBG,EAAOC,GAK5C,IAHA,IAAI/G,EAAO,QAEPgH,EAASlX,KAAKC,IAAI+W,EAAMrY,OAAQ,GAC3BuB,EAAI,EAAGA,EAAIgX,EAAQhX,IAC1B+W,EAAOvY,MAAMwB,GAAK8W,EAAMtY,MAAMwB,GAIhC,GAFA+W,EAAOtY,OAASuY,EAEZF,EAAMrY,QAAU,EAGlB,OAFAqY,EAAMtY,MAAM,GAAK,OACjBsY,EAAMrY,OAAS,GAKjB,IAAIwY,EAAOH,EAAMtY,MAAM,GAGvB,IAFAuY,EAAOvY,MAAMuY,EAAOtY,UAAYwY,EAAOjH,EAElChQ,EAAI,GAAIA,EAAI8W,EAAMrY,OAAQuB,IAAK,CAClC,IAAIkX,EAAwB,EAAjBJ,EAAMtY,MAAMwB,GACvB8W,EAAMtY,MAAMwB,EAAI,KAAQkX,EAAOlH,IAAS,EAAMiH,IAAS,GACvDA,EAAOC,EAETD,KAAU,GACVH,EAAMtY,MAAMwB,EAAI,IAAMiX,EACT,IAATA,GAAcH,EAAMrY,OAAS,GAC/BqY,EAAMrY,QAAU,GAEhBqY,EAAMrY,QAAU,GAIpBsX,EAAKhY,UAAU6Y,MAAQ,SAAgB3W,GAErCA,EAAIzB,MAAMyB,EAAIxB,QAAU,EACxBwB,EAAIzB,MAAMyB,EAAIxB,OAAS,GAAK,EAC5BwB,EAAIxB,QAAU,EAId,IADA,IAAIsE,EAAK,EACA/C,EAAI,EAAGA,EAAIC,EAAIxB,OAAQuB,IAAK,CACnC,IAAIiB,EAAmB,EAAfhB,EAAIzB,MAAMwB,GAClB+C,GAAU,IAAJ9B,EACNhB,EAAIzB,MAAMwB,GAAU,SAAL+C,EACfA,EAAS,GAAJ9B,GAAa8B,EAAK,SAAa,GAUtC,OANkC,IAA9B9C,EAAIzB,MAAMyB,EAAIxB,OAAS,KACzBwB,EAAIxB,SAC8B,IAA9BwB,EAAIzB,MAAMyB,EAAIxB,OAAS,IACzBwB,EAAIxB,UAGDwB,GASTvC,EAASuY,EAAMN,GAQfjY,EAASwY,EAAMP,GASfjY,EAASyY,EAAQR,GAEjBQ,EAAOpY,UAAU6Y,MAAQ,SAAgB3W,GAGvC,IADA,IAAI+C,EAAQ,EACHhD,EAAI,EAAGA,EAAIC,EAAIxB,OAAQuB,IAAK,CACnC,IAAI4E,EAA0B,IAAL,EAAf3E,EAAIzB,MAAMwB,IAAiBgD,EACjCD,EAAU,SAAL6B,EACTA,KAAQ,GAER3E,EAAIzB,MAAMwB,GAAK+C,EACfC,EAAQ4B,EAKV,OAHc,IAAV5B,IACF/C,EAAIzB,MAAMyB,EAAIxB,UAAYuE,GAErB/C,GAIThC,EAAGmY,OAAS,SAAgBR,GAE1B,GAAIzZ,EAAOyZ,GAAO,OAAOzZ,EAAOyZ,GAEhC,IAAIrZ,EACJ,GAAa,SAATqZ,EACFrZ,EAAQ,IAAIwZ,OACP,GAAa,SAATH,EACTrZ,EAAQ,IAAI0Z,OACP,GAAa,SAATL,EACTrZ,EAAQ,IAAI2Z,MACP,IAAa,WAATN,EAGT,MAAM,IAAInY,MAAM,iBAAmBmY,GAFnCrZ,EAAQ,IAAI4Z,EAMd,OAFAha,EAAOyZ,GAAQrZ,EAERA,GAkBTuX,EAAI/V,UAAUiX,SAAW,SAAmBnS,GAC1CvF,EAAsB,IAAfuF,EAAEtE,SAAgB,iCACzBjB,EAAOuF,EAAEnE,IAAK,oCAGhBoV,EAAI/V,UAAU8W,SAAW,SAAmBhS,EAAGC,GAC7CxF,EAAqC,KAA7BuF,EAAEtE,SAAWuE,EAAEvE,UAAiB,iCACxCjB,EAAOuF,EAAEnE,KAAOmE,EAAEnE,MAAQoE,EAAEpE,IAC1B,oCAGJoV,EAAI/V,UAAUuY,KAAO,SAAezT,GAClC,OAAIvE,KAAK/B,MAAc+B,KAAK/B,MAAMka,QAAQ5T,GAAGqR,UAAU5V,MAChDuE,EAAE4O,KAAKnT,KAAK8P,GAAG8F,UAAU5V,OAGlCwV,EAAI/V,UAAUyH,IAAM,SAAc3C,GAChC,OAAIA,EAAEW,SACGX,EAAEf,QAGJxD,KAAK8P,EAAEzH,IAAI9D,GAAGqR,UAAU5V,OAGjCwV,EAAI/V,UAAU2I,IAAM,SAAc7D,EAAGC,GACnCxE,KAAKuW,SAAShS,EAAGC,GAEjB,IAAIsB,EAAMvB,EAAE6D,IAAI5D,GAIhB,OAHIsB,EAAI7D,IAAIjC,KAAK8P,IAAM,GACrBhK,EAAIqC,KAAKnI,KAAK8P,GAEThK,EAAI8P,UAAU5V,OAGvBwV,EAAI/V,UAAUyI,KAAO,SAAe3D,EAAGC,GACrCxE,KAAKuW,SAAShS,EAAGC,GAEjB,IAAIsB,EAAMvB,EAAE2D,KAAK1D,GAIjB,OAHIsB,EAAI7D,IAAIjC,KAAK8P,IAAM,GACrBhK,EAAIqC,KAAKnI,KAAK8P,GAEThK,GAGT0P,EAAI/V,UAAU4I,IAAM,SAAc9D,EAAGC,GACnCxE,KAAKuW,SAAShS,EAAGC,GAEjB,IAAIsB,EAAMvB,EAAE8D,IAAI7D,GAIhB,OAHIsB,EAAI4O,KAAK,GAAK,GAChB5O,EAAIoC,KAAKlI,KAAK8P,GAEThK,EAAI8P,UAAU5V,OAGvBwV,EAAI/V,UAAU0I,KAAO,SAAe5D,EAAGC,GACrCxE,KAAKuW,SAAShS,EAAGC,GAEjB,IAAIsB,EAAMvB,EAAE4D,KAAK3D,GAIjB,OAHIsB,EAAI4O,KAAK,GAAK,GAChB5O,EAAIoC,KAAKlI,KAAK8P,GAEThK,GAGT0P,EAAI/V,UAAU4W,IAAM,SAAc9R,EAAG5C,GAEnC,OADA3B,KAAK0W,SAASnS,GACPvE,KAAKgY,KAAKzT,EAAEuN,MAAMnQ,KAG3B6T,EAAI/V,UAAU4M,KAAO,SAAe9H,EAAGC,GAErC,OADAxE,KAAKuW,SAAShS,EAAGC,GACVxE,KAAKgY,KAAKzT,EAAE8H,KAAK7H,KAG1BgR,EAAI/V,UAAU6B,IAAM,SAAciD,EAAGC,GAEnC,OADAxE,KAAKuW,SAAShS,EAAGC,GACVxE,KAAKgY,KAAKzT,EAAEjD,IAAIkD,KAGzBgR,EAAI/V,UAAUwR,KAAO,SAAe1M,GAClC,OAAOvE,KAAKqM,KAAK9H,EAAGA,EAAEf,UAGxBgS,EAAI/V,UAAUuR,IAAM,SAAczM,GAChC,OAAOvE,KAAKsB,IAAIiD,EAAGA,IAGrBiR,EAAI/V,UAAUoX,KAAO,SAAetS,GAClC,GAAIA,EAAEW,SAAU,OAAOX,EAAEf,QAEzB,IAAIqV,EAAO7Y,KAAK8P,EAAE9J,MAAM,GAIxB,GAHAhH,EAAO6Z,EAAO,IAAM,GAGP,IAATA,EAAY,CACd,IAAIxV,EAAMrD,KAAK8P,EAAE1H,IAAI,IAAIzI,EAAG,IAAIsG,OAAO,GACvC,OAAOjG,KAAKqD,IAAIkB,EAAGlB,GAMrB,IAAI0C,EAAI/F,KAAK8P,EAAEuC,KAAK,GAChBvD,EAAI,EACR,OAAQ/I,EAAEb,UAA2B,IAAfa,EAAEC,MAAM,GAC5B8I,IACA/I,EAAEE,OAAO,GAEXjH,GAAQ+G,EAAEb,UAEV,IAAI4T,EAAM,IAAInZ,EAAG,GAAG8V,MAAMzV,MACtB+Y,EAAOD,EAAI/B,SAIXiC,EAAOhZ,KAAK8P,EAAEuC,KAAK,GAAGpM,OAAO,GAC7BgT,EAAIjZ,KAAK8P,EAAE7L,YACfgV,EAAI,IAAItZ,EAAG,EAAIsZ,EAAIA,GAAGxD,MAAMzV,MAE5B,MAAuC,IAAhCA,KAAKqD,IAAI4V,EAAGD,GAAM/W,IAAI8W,GAC3BE,EAAEhD,QAAQ8C,GAGZ,IAAIlY,EAAIb,KAAKqD,IAAI4V,EAAGlT,GAChB9E,EAAIjB,KAAKqD,IAAIkB,EAAGwB,EAAEqM,KAAK,GAAGnM,OAAO,IACjCG,EAAIpG,KAAKqD,IAAIkB,EAAGwB,GAChB+J,EAAIhB,EACR,MAAsB,IAAf1I,EAAEnE,IAAI6W,GAAY,CAEvB,IADA,IAAIvB,EAAMnR,EACD1E,EAAI,EAAoB,IAAjB6V,EAAItV,IAAI6W,GAAYpX,IAClC6V,EAAMA,EAAId,SAEZzX,EAAO0C,EAAIoO,GACX,IAAItL,EAAIxE,KAAKqD,IAAIxC,EAAG,IAAIlB,EAAG,GAAGuR,OAAOpB,EAAIpO,EAAI,IAE7CT,EAAIA,EAAEqV,OAAO9R,GACb3D,EAAI2D,EAAEiS,SACNrQ,EAAIA,EAAEkQ,OAAOzV,GACbiP,EAAIpO,EAGN,OAAOT,GAGTuU,EAAI/V,UAAUkV,KAAO,SAAepQ,GAClC,IAAI2U,EAAM3U,EAAE+P,OAAOtU,KAAK8P,GACxB,OAAqB,IAAjBoJ,EAAIjZ,UACNiZ,EAAIjZ,SAAW,EACRD,KAAKgY,KAAKkB,GAAKnC,UAEf/W,KAAKgY,KAAKkB,IAIrB1D,EAAI/V,UAAU4D,IAAM,SAAckB,EAAG5C,GACnC,GAAIA,EAAIuD,SAAU,OAAO,IAAIvF,EAAG,GAAG8V,MAAMzV,MACzC,GAAoB,IAAhB2B,EAAI+S,KAAK,GAAU,OAAOnQ,EAAEf,QAEhC,IAAI2V,EAAa,EACbC,EAAM,IAAIxX,MAAM,GAAKuX,GACzBC,EAAI,GAAK,IAAIzZ,EAAG,GAAG8V,MAAMzV,MACzBoZ,EAAI,GAAK7U,EACT,IAAK,IAAI7C,EAAI,EAAGA,EAAI0X,EAAIjZ,OAAQuB,IAC9B0X,EAAI1X,GAAK1B,KAAKsB,IAAI8X,EAAI1X,EAAI,GAAI6C,GAGhC,IAAIuB,EAAMsT,EAAI,GACVC,EAAU,EACVC,EAAa,EACblY,EAAQO,EAAIsC,YAAc,GAK9B,IAJc,IAAV7C,IACFA,EAAQ,IAGLM,EAAIC,EAAIxB,OAAS,EAAGuB,GAAK,EAAGA,IAAK,CAEpC,IADA,IAAIwB,EAAOvB,EAAIzB,MAAMwB,GACZgB,EAAItB,EAAQ,EAAGsB,GAAK,EAAGA,IAAK,CACnC,IAAIwB,EAAOhB,GAAQR,EAAK,EACpBoD,IAAQsT,EAAI,KACdtT,EAAM9F,KAAKgR,IAAIlL,IAGL,IAAR5B,GAAyB,IAAZmV,GAKjBA,IAAY,EACZA,GAAWnV,EACXoV,KACIA,IAAeH,GAAqB,IAANzX,GAAiB,IAANgB,KAE7CoD,EAAM9F,KAAKsB,IAAIwE,EAAKsT,EAAIC,IACxBC,EAAa,EACbD,EAAU,IAXRC,EAAa,EAajBlY,EAAQ,GAGV,OAAO0E,GAGT0P,EAAI/V,UAAUkW,UAAY,SAAoBhU,GAC5C,IAAIV,EAAIU,EAAIwR,KAAKnT,KAAK8P,GAEtB,OAAO7O,IAAMU,EAAMV,EAAEuC,QAAUvC,GAGjCuU,EAAI/V,UAAUqW,YAAc,SAAsBnU,GAChD,IAAImE,EAAMnE,EAAI6B,QAEd,OADAsC,EAAI1F,IAAM,KACH0F,GAOTnG,EAAG4Z,KAAO,SAAe5X,GACvB,OAAO,IAAIoW,EAAKpW,IAmBlBvC,EAAS2Y,EAAMvC,GAEfuC,EAAKtY,UAAUkW,UAAY,SAAoBhU,GAC7C,OAAO3B,KAAKgY,KAAKrW,EAAImQ,MAAM9R,KAAKwS,SAGlCuF,EAAKtY,UAAUqW,YAAc,SAAsBnU,GACjD,IAAIV,EAAIjB,KAAKgY,KAAKrW,EAAIL,IAAItB,KAAKiY,OAE/B,OADAhX,EAAEb,IAAM,KACDa,GAGT8W,EAAKtY,UAAU4M,KAAO,SAAe9H,EAAGC,GACtC,GAAID,EAAEW,UAAYV,EAAEU,SAGlB,OAFAX,EAAErE,MAAM,GAAK,EACbqE,EAAEpE,OAAS,EACJoE,EAGT,IAAI6B,EAAI7B,EAAE8H,KAAK7H,GACX3D,EAAIuF,EAAE8L,MAAMlS,KAAKwS,OAAOlR,IAAItB,KAAKkY,MAAMjG,OAAOjS,KAAKwS,OAAOlR,IAAItB,KAAK8P,GACnE0J,EAAIpT,EAAE+B,KAAKtH,GAAGoF,OAAOjG,KAAKwS,OAC1B1M,EAAM0T,EAQV,OANIA,EAAEvX,IAAIjC,KAAK8P,IAAM,EACnBhK,EAAM0T,EAAErR,KAAKnI,KAAK8P,GACT0J,EAAE9E,KAAK,GAAK,IACrB5O,EAAM0T,EAAEtR,KAAKlI,KAAK8P,IAGbhK,EAAI8P,UAAU5V,OAGvB+X,EAAKtY,UAAU6B,IAAM,SAAciD,EAAGC,GACpC,GAAID,EAAEW,UAAYV,EAAEU,SAAU,OAAO,IAAIvF,EAAG,GAAGiW,UAAU5V,MAEzD,IAAIoG,EAAI7B,EAAEjD,IAAIkD,GACV3D,EAAIuF,EAAE8L,MAAMlS,KAAKwS,OAAOlR,IAAItB,KAAKkY,MAAMjG,OAAOjS,KAAKwS,OAAOlR,IAAItB,KAAK8P,GACnE0J,EAAIpT,EAAE+B,KAAKtH,GAAGoF,OAAOjG,KAAKwS,OAC1B1M,EAAM0T,EAOV,OANIA,EAAEvX,IAAIjC,KAAK8P,IAAM,EACnBhK,EAAM0T,EAAErR,KAAKnI,KAAK8P,GACT0J,EAAE9E,KAAK,GAAK,IACrB5O,EAAM0T,EAAEtR,KAAKlI,KAAK8P,IAGbhK,EAAI8P,UAAU5V,OAGvB+X,EAAKtY,UAAUkV,KAAO,SAAepQ,GAEnC,IAAIuB,EAAM9F,KAAKgY,KAAKzT,EAAE+P,OAAOtU,KAAK8P,GAAGxO,IAAItB,KAAKuT,KAC9C,OAAOzN,EAAI8P,UAAU5V,QAn3GzB,CAq3GoCM,EAAQN,Q,gDCr3G5C,IAAIytB,EAAM,EAAQ,SACdvvB,EAAS,EAAQ,QAAeA,OAChCitB,EAAY,EAAQ,QACpB/rB,EAAW,EAAQ,QACnBk5C,EAAQ,EAAQ,QAChBzwC,EAAM,EAAQ,QACdktD,EAAS,EAAQ,QAErB,SAASqF,EAAS71D,EAAGC,GACnB,IAAIF,EAAM,EACNC,EAAEpE,SAAWqE,EAAErE,QAAQmE,IAG3B,IADA,IAAI/C,EAAMC,KAAKC,IAAI8C,EAAEpE,OAAQqE,EAAErE,QACtBuB,EAAI,EAAGA,EAAIH,IAAOG,EACzB4C,GAAQC,EAAE7C,GAAK8C,EAAE9C,GAGnB,OAAO4C,EAGT,SAAS+1D,EAAQh2D,EAAMspB,EAAI2sC,GACzB,GAAkB,KAAd3sC,EAAGxtB,OAEL,OADAkE,EAAKk2D,OAASr8D,EAAOkd,OAAO,CAACuS,EAAIzvB,EAAO0gB,KAAK,CAAC,EAAG,EAAG,EAAG,MAChD1gB,EAAOkd,OAAO,CAACuS,EAAIzvB,EAAO0gB,KAAK,CAAC,EAAG,EAAG,EAAG,MAElD,IAAI45B,EAAQ,IAAIF,EAAMgiB,GAClB/4D,EAAMosB,EAAGxtB,OACTq6D,EAAQj5D,EAAM,GAClBi3C,EAAMn+B,OAAOsT,GACT6sC,IACFA,EAAQ,GAAKA,EACbhiB,EAAMn+B,OAAOnc,EAAO6qB,MAAMyxC,EAAO,KAEnChiB,EAAMn+B,OAAOnc,EAAO6qB,MAAM,EAAG,IAC7B,IAAI0xC,EAAe,EAANl5D,EACTm/B,EAAOxiC,EAAO6qB,MAAM,GACxB2X,EAAKg6B,YAAYD,EAAQ,EAAG,GAC5BjiB,EAAMn+B,OAAOqmB,GACbr8B,EAAKk2D,OAAS/hB,EAAMhwB,MACpB,IAAIlkB,EAAMpG,EAAO0gB,KAAKva,EAAKk2D,QAE3B,OADAxF,EAAOzwD,GACAA,EAET,SAASopB,EAAchb,EAAMiU,EAAKgH,EAAI9T,GACpCsR,EAAUzT,KAAK1X,MAEf,IAAIyR,EAAIvT,EAAO6qB,MAAM,EAAG,GAExB/oB,KAAK2Z,QAAU,IAAI8T,EAAIG,IAAIjH,GAC3B,IAAI2zC,EAAKt6D,KAAK2Z,QAAQC,aAAanI,GACnCzR,KAAK26D,OAAS,IAAIriB,EAAMgiB,GACxB3sC,EAAK0sC,EAAOr6D,KAAM2tB,EAAI2sC,GAEtBt6D,KAAK6tB,MAAQ3vB,EAAO0gB,KAAK+O,GACzB3tB,KAAK8tB,OAAS5vB,EAAO8qB,YAAY,GACjChpB,KAAK+tB,UAAY7vB,EAAO8qB,YAAY,GACpChpB,KAAKguB,SAAWnU,EAChB7Z,KAAK46D,MAAQ,EACb56D,KAAKyhD,KAAO,EACZzhD,KAAKiuB,MAAQvb,EAEb1S,KAAK66D,SAAW,KAChB76D,KAAK86D,SAAU,EAGjB17D,EAASsuB,EAAcvC,GAEvBuC,EAAajuB,UAAUkb,QAAU,SAAU0S,GACzC,IAAKrtB,KAAK86D,SAAW96D,KAAK46D,MAAO,CAC/B,IAAIG,EAAO,GAAM/6D,KAAK46D,MAAQ,GAC1BG,EAAO,KACTA,EAAO78D,EAAO6qB,MAAMgyC,EAAM,GAC1B/6D,KAAK26D,OAAOtgD,OAAO0gD,IAIvB/6D,KAAK86D,SAAU,EACf,IAAIx2D,EAAMtE,KAAKiuB,MAAMxU,QAAQzZ,KAAMqtB,GAOnC,OANIrtB,KAAKguB,SACPhuB,KAAK26D,OAAOtgD,OAAOgT,GAEnBrtB,KAAK26D,OAAOtgD,OAAO/V,GAErBtE,KAAKyhD,MAAQp0B,EAAMltB,OACZmE,GAGTopB,EAAajuB,UAAUyuB,OAAS,WAC9B,GAAIluB,KAAKguB,WAAahuB,KAAK66D,SAAU,MAAM,IAAI17D,MAAM,oDAErD,IAAIsjC,EAAM56B,EAAI7H,KAAK26D,OAAO5/C,MAAmB,EAAb/a,KAAK46D,MAAuB,EAAZ56D,KAAKyhD,MAAWzhD,KAAK2Z,QAAQC,aAAa5Z,KAAKu6D,SAC/F,GAAIv6D,KAAKguB,UAAYosC,EAAQ33B,EAAKziC,KAAK66D,UAAW,MAAM,IAAI17D,MAAM,oDAElEa,KAAK66D,SAAWp4B,EAChBziC,KAAK2Z,QAAQwU,SAGfT,EAAajuB,UAAUyyD,WAAa,WAClC,GAAIlyD,KAAKguB,WAAa9vB,EAAOO,SAASuB,KAAK66D,UAAW,MAAM,IAAI17D,MAAM,mDAEtE,OAAOa,KAAK66D,UAGdntC,EAAajuB,UAAU0yD,WAAa,SAAqB1vB,GACvD,IAAKziC,KAAKguB,SAAU,MAAM,IAAI7uB,MAAM,mDAEpCa,KAAK66D,SAAWp4B,GAGlB/U,EAAajuB,UAAU2yD,OAAS,SAAiB11C,GAC/C,GAAI1c,KAAK86D,QAAS,MAAM,IAAI37D,MAAM,8CAElCa,KAAK26D,OAAOtgD,OAAOqC,GACnB1c,KAAK46D,OAASl+C,EAAIvc,QAGpBG,EAAO1B,QAAU8uB,G,kCClHjB,MAAM0tB,EAAW,EAAQ,QAAoBA,SACvCE,EAAgB,EAAQ,QAAkBA,cAC1CD,EAAgB,EAAQ,QAAkBA,cAC1Cr8C,EAAS,EAAQ,QAGjBg8D,EAAO,CACX,MAAO,QAAS,MAAO,QAAS,QAAS,OACzC,UAAW,UAAW,QAAS,OAAQ,MAAO,UAC9C,SAAU,SAAU,UAAW,SAAU,WAAY,SAAU,YAC/D,SAAU,SAAU,WAAY,SAAU,SAAU,UAAW,YAI3D9J,EAAU,CACd,MAAO,MAAO,MAAO,WAAY,WAAY,WAAY,MAAO,SAChE,MAAO,YACP91C,OAAO4/C,GAGHC,EAAY,CAChB,WAAY,aAAc,OAC1B,aAAc,eAAgB,cAC9B,cAAe,aAAc,cAAe,cAE5C,mBAAoB,aAAc,eAAgB,cAClD,cAAe,aAAc,eAG/B,SAAS7tB,EAAK9uC,EAAKovC,EAAQp2B,GACzB,MAAMkR,EAAQ,GACdxoB,KAAKwwC,WAAahoB,EAElBA,EAAMlR,KAAOA,EACbkR,EAAMlqB,IAAMA,EAEZkqB,EAAMklB,OAASA,GAAU,KACzBllB,EAAMwnC,SAAW,KAGjBxnC,EAAMia,IAAM,KACZja,EAAMxD,KAAO,KACbwD,EAAM0yC,YAAc,KACpB1yC,EAAMoxB,OAAS,KACfpxB,EAAM8wB,UAAW,EACjB9wB,EAAM4jC,KAAM,EACZ5jC,EAAM+L,KAAM,EACZ/L,EAAM0wB,IAAM,KACZ1wB,EAAM2yC,WAAa,KACnB3yC,EAAM7B,IAAM,KACZ6B,EAAM,WAAa,KACnBA,EAAMkxB,SAAW,KACjBlxB,EAAMykC,SAAW,KACjBzkC,EAAM4yC,SAAW,KAGZ5yC,EAAMklB,SACTllB,EAAMwnC,SAAW,GACjBhwD,KAAKq7D,SAGT/6D,EAAO1B,QAAUwuC,EAEjB,MAAMkuB,EAAa,CACjB,MAAO,SAAU,WAAY,MAAO,OAAQ,cAAe,SAC3D,WAAY,MAAO,MAAO,MAAO,aAAc,MAAO,UAAW,WACjE,WAAY,YAGdluB,EAAK3tC,UAAU+D,MAAQ,WACrB,MAAMglB,EAAQxoB,KAAKwwC,WACb+qB,EAAS,GACfD,EAAW90C,SAAQ,SAAS8qC,GAC1BiK,EAAOjK,GAAQ9oC,EAAM8oC,MAEvB,MAAMxrD,EAAM,IAAI9F,KAAKN,YAAY67D,EAAO7tB,QAExC,OADA5nC,EAAI0qC,WAAa+qB,EACVz1D,GAGTsnC,EAAK3tC,UAAU47D,MAAQ,WACrB,MAAM7yC,EAAQxoB,KAAKwwC,WACnB0gB,EAAQ1qC,SAAQ,SAAS46B,GACvBphD,KAAKohD,GAAU,WACb,MAAM59C,EAAQ,IAAIxD,KAAKN,YAAYM,MAEnC,OADAwoB,EAAMwnC,SAASrrC,KAAKnhB,GACbA,EAAM49C,GAAQn8B,MAAMzhB,EAAOwjB,cAEnChnB,OAGLotC,EAAK3tC,UAAUY,MAAQ,SAAcotC,GACnC,MAAMjlB,EAAQxoB,KAAKwwC,WAEnBxxC,EAAwB,OAAjBwpB,EAAMklB,QACbD,EAAK/1B,KAAK1X,MAGVwoB,EAAMwnC,SAAWxnC,EAAMwnC,SAAS5wB,QAAO,SAASo8B,GAC9C,OAAOA,EAAMhrB,WAAW9C,SAAW1tC,OAClCA,MACHhB,EAAOuc,MAAMiN,EAAMwnC,SAAS7vD,OAAQ,EAAG,sCAGzCitC,EAAK3tC,UAAUg8D,SAAW,SAAiBz2C,GACzC,MAAMwD,EAAQxoB,KAAKwwC,WAGbwf,EAAWhrC,EAAKoa,QAAO,SAAS3Y,GACpC,OAAOA,aAAezmB,KAAKN,cAC1BM,MACHglB,EAAOA,EAAKoa,QAAO,SAAS3Y,GAC1B,QAASA,aAAezmB,KAAKN,eAC5BM,MAEqB,IAApBgwD,EAAS7vD,SACXnB,EAA0B,OAAnBwpB,EAAMwnC,UACbxnC,EAAMwnC,SAAWA,EAGjBA,EAASxpC,SAAQ,SAASg1C,GACxBA,EAAMhrB,WAAW9C,OAAS1tC,OACzBA,OAEe,IAAhBglB,EAAK7kB,SACPnB,EAAsB,OAAfwpB,EAAMxD,MACbwD,EAAMxD,KAAOA,EACbwD,EAAM0yC,YAAcl2C,EAAK+C,KAAI,SAAStB,GACpC,GAAmB,kBAARA,GAAoBA,EAAI/mB,cAAgBic,OACjD,OAAO8K,EAET,MAAM3gB,EAAM,GAOZ,OANA6V,OAAOC,KAAK6K,GAAKD,SAAQ,SAASG,GAC5BA,IAAc,EAANA,KACVA,GAAO,GACT,MAAMf,EAAQa,EAAIE,GAClB7gB,EAAI8f,GAASe,KAER7gB,OASbm1D,EAAUz0C,SAAQ,SAAS46B,GACzBhU,EAAK3tC,UAAU2hD,GAAU,WACvB,MAAM54B,EAAQxoB,KAAKwwC,WACnB,MAAM,IAAIrxC,MAAMiiD,EAAS,kCAAoC54B,EAAMlqB,SAQvE08D,EAAKx0C,SAAQ,SAASic,GACpB2K,EAAK3tC,UAAUgjC,GAAO,WACpB,MAAMja,EAAQxoB,KAAKwwC,WACbxrB,EAAOpjB,MAAMnC,UAAU4nB,MAAM3P,KAAKsP,WAOxC,OALAhoB,EAAqB,OAAdwpB,EAAMia,KACbja,EAAMia,IAAMA,EAEZziC,KAAKy7D,SAASz2C,GAEPhlB,SAIXotC,EAAK3tC,UAAUy5C,IAAM,SAAa4V,GAChC9vD,EAAO8vD,GACP,MAAMtmC,EAAQxoB,KAAKwwC,WAKnB,OAHAxxC,EAAqB,OAAdwpB,EAAM0wB,KACb1wB,EAAM0wB,IAAM4V,EAEL9uD,MAGTotC,EAAK3tC,UAAU65C,SAAW,WACxB,MAAM9wB,EAAQxoB,KAAKwwC,WAInB,OAFAhoB,EAAM8wB,UAAW,EAEVt5C,MAGTotC,EAAK3tC,UAAUstD,IAAM,SAAa9tD,GAChC,MAAMupB,EAAQxoB,KAAKwwC,WAMnB,OAJAxxC,EAA4B,OAArBwpB,EAAM,YACbA,EAAM,WAAavpB,EACnBupB,EAAM8wB,UAAW,EAEVt5C,MAGTotC,EAAK3tC,UAAUi6C,SAAW,SAAkB/3C,GAC1C,MAAM6mB,EAAQxoB,KAAKwwC,WAKnB,OAHAxxC,EAA0B,OAAnBwpB,EAAMkxB,UAAwC,OAAnBlxB,EAAMykC,UACxCzkC,EAAMkxB,SAAW/3C,EAEV3B,MAGTotC,EAAK3tC,UAAUwtD,SAAW,SAAkBtrD,GAC1C,MAAM6mB,EAAQxoB,KAAKwwC,WAKnB,OAHAxxC,EAA0B,OAAnBwpB,EAAMkxB,UAAwC,OAAnBlxB,EAAMykC,UACxCzkC,EAAMykC,SAAWtrD,EAEV3B,MAGTotC,EAAK3tC,UAAU80B,IAAM,WACnB,MAAM/L,EAAQxoB,KAAKwwC,WACbxrB,EAAOpjB,MAAMnC,UAAU4nB,MAAM3P,KAAKsP,WAOxC,OALAwB,EAAM+L,KAAM,EAEQ,IAAhBvP,EAAK7kB,QACPH,KAAKy7D,SAASz2C,GAEThlB,MAGTotC,EAAK3tC,UAAUknB,IAAM,SAAa+0C,GAChC,MAAMlzC,EAAQxoB,KAAKwwC,WAKnB,OAHAxxC,EAAqB,OAAdwpB,EAAM7B,KACb6B,EAAM7B,IAAM+0C,EAEL17D,MAGTotC,EAAK3tC,UAAU2sD,IAAM,WACnB,MAAM5jC,EAAQxoB,KAAKwwC,WAInB,OAFAhoB,EAAM4jC,KAAM,EAELpsD,MAGTotC,EAAK3tC,UAAUm6C,OAAS,SAAgBrlB,GACtC,MAAM/L,EAAQxoB,KAAKwwC,WAQnB,OANAxxC,EAAwB,OAAjBwpB,EAAMoxB,QACbpxB,EAAMoxB,OAASrlB,EACfv0B,KAAKy7D,SAAS9/C,OAAOC,KAAK2Y,GAAKxM,KAAI,SAASpB,GAC1C,OAAO4N,EAAI5N,OAGN3mB,MAGTotC,EAAK3tC,UAAU27D,SAAW,SAAkBtM,GAC1C,MAAMtmC,EAAQxoB,KAAKwwC,WAKnB,OAHAxxC,EAAqB,OAAdwpB,EAAM0wB,KACb1wB,EAAM4yC,SAAWtM,EAEV9uD,MAOTotC,EAAK3tC,UAAUk8D,QAAU,SAAgBnjD,EAAOwB,GAC9C,MAAMwO,EAAQxoB,KAAKwwC,WAGnB,GAAqB,OAAjBhoB,EAAMklB,OACR,OAAOl1B,EAAMojD,WAAWpzC,EAAMwnC,SAAS,GAAG2L,QAAQnjD,EAAOwB,IAE3D,IAuCI6hD,EAvCAj3C,EAAS4D,EAAM,WACfszC,GAAU,EAEVC,EAAU,KAKd,GAJkB,OAAdvzC,EAAM7B,MACRo1C,EAAUvjD,EAAMwjD,SAASxzC,EAAM7B,MAG7B6B,EAAM8wB,SAAU,CAClB,IAAI7W,EAAM,KAQV,GAPuB,OAAnBja,EAAMkxB,SACRjX,EAAMja,EAAMkxB,SACc,OAAnBlxB,EAAMykC,SACbxqB,EAAMja,EAAMykC,SACS,OAAdzkC,EAAMia,MACbA,EAAMja,EAAMia,KAEF,OAARA,GAAiBja,EAAM4jC,KAgBzB,GAFA0P,EAAU97D,KAAKi8D,SAASzjD,EAAOiqB,EAAKja,EAAM4jC,KAEtC5zC,EAAMo9B,QAAQkmB,GAChB,OAAOA,MAjBqB,CAE9B,MAAM5M,EAAO12C,EAAM02C,OACnB,IACuB,OAAjB1mC,EAAMoxB,OACR55C,KAAKk8D,eAAe1zC,EAAMia,IAAKjqB,EAAOwB,GAEtCha,KAAKm8D,cAAc3jD,EAAOwB,GAC5B8hD,GAAU,EACV,MAAOr7D,GACPq7D,GAAU,EAEZtjD,EAAM22C,QAAQD,IAclB,GAHI1mC,EAAM+L,KAAOunC,IACfD,EAAUrjD,EAAM4jD,eAEdN,EAAS,CAEX,GAAuB,OAAnBtzC,EAAMkxB,SAAmB,CAC3B,MAAMA,EAAW15C,KAAKq8D,WAAW7jD,EAAOgQ,EAAMkxB,UAC9C,GAAIlhC,EAAMo9B,QAAQ8D,GAChB,OAAOA,EACTlhC,EAAQkhC,EAGV,MAAMt4C,EAAQoX,EAAM2E,OAGpB,GAAkB,OAAdqL,EAAM0wB,KAAiC,OAAjB1wB,EAAMoxB,OAAiB,CAC/C,IAAIsV,EACA1mC,EAAM4jC,MACR8C,EAAO12C,EAAM02C,QACf,MAAMzhB,EAAOztC,KAAKq8D,WAChB7jD,EACmB,OAAnBgQ,EAAMykC,SAAoBzkC,EAAMykC,SAAWzkC,EAAMia,IACjDja,EAAM4jC,KAER,GAAI5zC,EAAMo9B,QAAQnI,GAChB,OAAOA,EAELjlB,EAAM4jC,IACRxnC,EAASpM,EAAM+2C,IAAIL,GAEnB12C,EAAQi1B,EAkBZ,GAfIzzB,GAAWA,EAAQsiD,OAAuB,OAAd9zC,EAAMia,KACpCzoB,EAAQsiD,MAAM9jD,EAAM+E,OAAQnc,EAAOoX,EAAMrY,OAAQ,UAE/C6Z,GAAWA,EAAQsiD,OAAuB,OAAd9zC,EAAMia,KACpCzoB,EAAQsiD,MAAM9jD,EAAM+E,OAAQ/E,EAAM2E,OAAQ3E,EAAMrY,OAAQ,WAGtDqoB,EAAM4jC,MAGRxnC,EAD0B,OAAjB4D,EAAMoxB,OACN55C,KAAKk8D,eAAe1zC,EAAMia,IAAKjqB,EAAOwB,GAEtCha,KAAKm8D,cAAc3jD,EAAOwB,IAGjCxB,EAAMo9B,QAAQhxB,GAChB,OAAOA,EAYT,GATK4D,EAAM4jC,KAAwB,OAAjB5jC,EAAMoxB,QAAsC,OAAnBpxB,EAAMwnC,UAC/CxnC,EAAMwnC,SAASxpC,SAAQ,SAAwBg1C,GAG7CA,EAAMG,QAAQnjD,EAAOwB,MAKrBwO,EAAM4yC,WAA2B,WAAd5yC,EAAMia,KAAkC,WAAdja,EAAMia,KAAmB,CACxE,MAAMnoB,EAAO,IAAI+gC,EAAcz2B,GAC/BA,EAAS5kB,KAAKu8D,QAAQ/zC,EAAM4yC,SAAU5iD,EAAMi3C,eAAel7B,KACxDonC,QAAQrhD,EAAMN,IAcrB,OATIwO,EAAM+L,KAAOunC,IACfl3C,EAASpM,EAAMgkD,YAAYX,IAGX,OAAdrzC,EAAM7B,KAA4B,OAAX/B,IAA+B,IAAZk3C,EAEzB,OAAZC,GACPvjD,EAAMikD,QAAQV,GAFdvjD,EAAMkkD,SAASX,EAASvzC,EAAM7B,IAAK/B,GAI9BA,GAGTwoB,EAAK3tC,UAAUy8D,eAAiB,SAAuBz5B,EAAKjqB,EAAOwB,GACjE,MAAMwO,EAAQxoB,KAAKwwC,WAEnB,MAAY,QAAR/N,GAAyB,QAARA,EACZ,KACG,UAARA,GAA2B,UAARA,EACdziC,KAAK28D,YAAYnkD,EAAOiqB,EAAKja,EAAMxD,KAAK,GAAIhL,GAC5C,OAAO80B,KAAKrM,GACZziC,KAAK48D,WAAWpkD,EAAOiqB,EAAKzoB,GACpB,UAARyoB,GAAmBja,EAAMxD,KACzBhlB,KAAK68D,aAAarkD,EAAOgQ,EAAMxD,KAAK,GAAIwD,EAAMxD,KAAK,GAAIhL,GAC/C,UAARyoB,EACAziC,KAAK68D,aAAarkD,EAAO,KAAM,KAAMwB,GAC7B,YAARyoB,GAA6B,YAARA,EACrBziC,KAAK88D,YAAYtkD,EAAOiqB,EAAKzoB,GACrB,UAARyoB,EACAziC,KAAK+8D,YAAYvkD,EAAOwB,GAChB,SAARyoB,EACAziC,KAAKg9D,YAAYxkD,EAAOwB,GAChB,YAARyoB,EACAziC,KAAK48D,WAAWpkD,EAAOiqB,EAAKzoB,GACpB,QAARyoB,GAAyB,SAARA,EACjBziC,KAAKi9D,WAAWzkD,EAAOgQ,EAAMxD,MAAQwD,EAAMxD,KAAK,GAAIhL,GAE3C,OAAdwO,EAAM0wB,IACDl5C,KAAKu8D,QAAQ/zC,EAAM0wB,IAAK1gC,EAAMi3C,eAAel7B,KACjDonC,QAAQnjD,EAAOwB,GAEXxB,EAAM4O,MAAM,gBAAkBqb,IAIzC2K,EAAK3tC,UAAU88D,QAAU,SAAiBjvB,EAAQ/Y,GAEhD,MAAM/L,EAAQxoB,KAAKwwC,WASnB,OAPAhoB,EAAM2yC,WAAan7D,KAAKowC,KAAK9C,EAAQ/Y,GACrCv1B,EAA8C,OAAvCwpB,EAAM2yC,WAAW3qB,WAAW9C,QACnCllB,EAAM2yC,WAAa3yC,EAAM2yC,WAAW3qB,WAAWwf,SAAS,GACpDxnC,EAAMykC,WAAazkC,EAAM2yC,WAAW3qB,WAAWyc,WACjDzkC,EAAM2yC,WAAa3yC,EAAM2yC,WAAW33D,QACpCglB,EAAM2yC,WAAW3qB,WAAWyc,SAAWzkC,EAAMykC,UAExCzkC,EAAM2yC,YAGf/tB,EAAK3tC,UAAU08D,cAAgB,SAAsB3jD,EAAOwB,GAC1D,MAAMwO,EAAQxoB,KAAKwwC,WACnB,IAAI5rB,EAAS,KACT++B,GAAQ,EAmBZ,OAjBAhoC,OAAOC,KAAK4M,EAAMoxB,QAAQsjB,MAAK,SAASv2C,GACtC,MAAMuoC,EAAO12C,EAAM02C,OACbiO,EAAO30C,EAAMoxB,OAAOjzB,GAC1B,IACE,MAAMf,EAAQu3C,EAAKxB,QAAQnjD,EAAOwB,GAClC,GAAIxB,EAAMo9B,QAAQhwB,GAChB,OAAO,EAEThB,EAAS,CAAE3K,KAAM0M,EAAKf,MAAOA,GAC7B+9B,GAAQ,EACR,MAAOljD,GAEP,OADA+X,EAAM22C,QAAQD,IACP,EAET,OAAO,IACNlvD,MAEE2jD,EAGE/+B,EAFEpM,EAAM4O,MAAM,uBASvBgmB,EAAK3tC,UAAU8uC,qBAAuB,SAA6Bj0B,GACjE,OAAO,IAAIghC,EAAchhC,EAAMta,KAAK8tC,WAGtCV,EAAK3tC,UAAUyuC,QAAU,SAAgB5zB,EAAMwzB,EAAUJ,GACvD,MAAMllB,EAAQxoB,KAAKwwC,WACnB,GAAyB,OAArBhoB,EAAM,YAAuBA,EAAM,aAAelO,EACpD,OAEF,MAAMsK,EAAS5kB,KAAK0wC,aAAap2B,EAAMwzB,EAAUJ,GACjD,YAAehvC,IAAXkmB,GAGA5kB,KAAKswC,aAAa1rB,EAAQkpB,EAAUJ,QAHxC,EAMO9oB,GAGTwoB,EAAK3tC,UAAUixC,aAAe,SAAgBp2B,EAAMwzB,EAAUJ,GAC5D,MAAMllB,EAAQxoB,KAAKwwC,WAGnB,GAAqB,OAAjBhoB,EAAMklB,OACR,OAAOllB,EAAMwnC,SAAS,GAAG9hB,QAAQ5zB,EAAMwzB,GAAY,IAAIsN,GAEzD,IAAIx2B,EAAS,KAMb,GAHA5kB,KAAK8tC,SAAWA,EAGZtlB,EAAM8wB,eAAqB56C,IAAT4b,EAAoB,CACxC,GAAyB,OAArBkO,EAAM,WAGR,OAFAlO,EAAOkO,EAAM,WAMjB,IAAI4lB,EAAU,KACVR,GAAY,EAChB,GAAIplB,EAAM4jC,IAERxnC,EAAS5kB,KAAKuuC,qBAAqBj0B,QAC9B,GAAIkO,EAAMoxB,OACfh1B,EAAS5kB,KAAKo9D,cAAc9iD,EAAMwzB,QAC7B,GAAItlB,EAAM4yC,SACfhtB,EAAUpuC,KAAKu8D,QAAQ/zC,EAAM4yC,SAAU1tB,GAAQQ,QAAQ5zB,EAAMwzB,GAC7DF,GAAY,OACP,GAAIplB,EAAMwnC,SACf5hB,EAAU5lB,EAAMwnC,SAASjoC,KAAI,SAASyzC,GACpC,GAA6B,UAAzBA,EAAMhrB,WAAW/N,IACnB,OAAO+4B,EAAMttB,QAAQ,KAAMJ,EAAUxzB,GAEvC,GAA6B,OAAzBkhD,EAAMhrB,WAAW7pB,IACnB,OAAOmnB,EAAS1mB,MAAM,2BACxB,MAAM20C,EAAUjuB,EAASkuB,SAASR,EAAMhrB,WAAW7pB,KAEnD,GAAoB,kBAATrM,EACT,OAAOwzB,EAAS1mB,MAAM,2CAExB,MAAMthB,EAAM01D,EAAMttB,QAAQ5zB,EAAKkhD,EAAMhrB,WAAW7pB,KAAMmnB,EAAUxzB,GAGhE,OAFAwzB,EAAS4uB,SAASX,GAEXj2D,IACN9F,MAAMo/B,QAAO,SAASo8B,GACvB,OAAOA,KAETptB,EAAUpuC,KAAKuuC,qBAAqBH,QAEpC,GAAkB,UAAd5lB,EAAMia,KAAiC,UAAdja,EAAMia,IAAiB,CAElD,IAAMja,EAAMxD,MAA8B,IAAtBwD,EAAMxD,KAAK7kB,OAC7B,OAAO2tC,EAAS1mB,MAAM,uBAAyBoB,EAAMia,KAEvD,IAAK7gC,MAAMC,QAAQyY,GACjB,OAAOwzB,EAAS1mB,MAAM,sCAExB,MAAMo0C,EAAQx7D,KAAKwD,QACnBg4D,EAAMhrB,WAAWyc,SAAW,KAC5B7e,EAAUpuC,KAAKuuC,qBAAqBj0B,EAAKyN,KAAI,SAAS+mC,GACpD,MAAMtmC,EAAQxoB,KAAKwwC,WAEnB,OAAOxwC,KAAKu8D,QAAQ/zC,EAAMxD,KAAK,GAAI1K,GAAM4zB,QAAQ4gB,EAAMhhB,KACtD0tB,SACoB,OAAdhzC,EAAM0wB,IACft0B,EAAS5kB,KAAKu8D,QAAQ/zC,EAAM0wB,IAAKxL,GAAQQ,QAAQ5zB,EAAMwzB,IAEvDM,EAAUpuC,KAAKq9D,iBAAiB70C,EAAMia,IAAKnoB,GAC3CszB,GAAY,GAKhB,IAAKplB,EAAM4jC,KAAwB,OAAjB5jC,EAAMoxB,OAAiB,CACvC,MAAMnX,EAAyB,OAAnBja,EAAMykC,SAAoBzkC,EAAMykC,SAAWzkC,EAAMia,IACvDoL,EAAyB,OAAnBrlB,EAAMykC,SAAoB,YAAc,UAExC,OAARxqB,EACgB,OAAdja,EAAM0wB,KACRpL,EAAS1mB,MAAM,wCAEC,OAAdoB,EAAM0wB,MACRt0B,EAAS5kB,KAAKmuC,iBAAiB1L,EAAKmL,EAAWC,EAAKO,IAQ1D,OAHuB,OAAnB5lB,EAAMkxB,WACR90B,EAAS5kB,KAAKmuC,iBAAiB3lB,EAAMkxB,UAAU,EAAO,UAAW90B,IAE5DA,GAGTwoB,EAAK3tC,UAAU29D,cAAgB,SAAsB9iD,EAAMwzB,GACzD,MAAMtlB,EAAQxoB,KAAKwwC,WAEb2sB,EAAO30C,EAAMoxB,OAAOt/B,EAAKL,MAO/B,OANKkjD,GACHn+D,GACE,EACAsb,EAAKL,KAAO,iBACN2tB,KAAKsH,UAAUvzB,OAAOC,KAAK4M,EAAMoxB,UAEpCujB,EAAKjvB,QAAQ5zB,EAAKsL,MAAOkoB,IAGlCV,EAAK3tC,UAAU49D,iBAAmB,SAAyB56B,EAAKnoB,GAC9D,MAAMkO,EAAQxoB,KAAKwwC,WAEnB,GAAI,OAAO1B,KAAKrM,GACd,OAAOziC,KAAKyuC,WAAWn0B,EAAMmoB,GAC1B,GAAY,UAARA,GAAmBja,EAAMxD,KAChC,OAAOhlB,KAAK+uC,aAAaz0B,EAAMkO,EAAM0yC,YAAY,GAAI1yC,EAAMxD,KAAK,IAC7D,GAAY,UAARyd,EACP,OAAOziC,KAAK+uC,aAAaz0B,EAAM,KAAM,MAClC,GAAY,YAARmoB,GAA6B,YAARA,EAC5B,OAAOziC,KAAKsvC,YAAYh1B,EAAMmoB,GAC3B,GAAY,UAARA,EACP,OAAOziC,KAAK+vC,cACT,GAAY,QAARtN,GAAyB,SAARA,EACxB,OAAOziC,KAAKgwC,WAAW11B,EAAMkO,EAAMxD,MAAQwD,EAAM0yC,YAAY,IAC1D,GAAY,SAARz4B,EACP,OAAOziC,KAAKmwC,YAAY71B,GACrB,GAAY,YAARmoB,EACP,OAAOziC,KAAKyuC,WAAWn0B,EAAMmoB,GAE7B,MAAM,IAAItjC,MAAM,oBAAsBsjC,IAG1C2K,EAAK3tC,UAAUmvC,UAAY,SAAkBztC,GAC3C,MAAO,YAAY2tC,KAAK3tC,IAG1BisC,EAAK3tC,UAAUovC,YAAc,SAAoB1tC,GAC/C,MAAO,6BAA6B2tC,KAAK3tC,K,qBC5nB3Cb,EAAO1B,QAAU,SAAc2F,EAAGC,GAChC,IAAIjD,EAAMgD,EAAEpE,OACRuB,GAAK,EACT,QAASA,EAAIH,EACXgD,EAAE7C,IAAM8C,EAAE9C,GAEZ,OAAO6C,I,oCCNT,IAAImrD,EAAS,WAAkB,IAAIC,EAAI3vD,KAAK2qB,EAAGglC,EAAIC,MAAMjlC,GAAG,OAAOA,EAAG,MAAM,CAAComC,YAAY,aAAa,CAACpmC,EAAG,SAAS,CAAComC,YAAY,gBAAgBd,MAAM,CAAC,KAAO,UAAUroC,GAAG,CAAC,MAAQ+nC,EAAI2N,aAAa,CAAC3yC,EAAG,MAAM,CAACslC,MAAM,CAAC,IAAMx0C,EAAQ,QAA0B,IAAM,MAAMk0C,EAAIgB,GAAG,sBAAsBhmC,EAAG,gBAAgB,CAACslC,MAAM,CAAC,KAAON,EAAI4N,OAAO31C,GAAG,CAAC,aAAa+nC,EAAI6N,cAActN,MAAM,CAACtqC,MAAO+pC,EAAI8N,QAASpgD,SAAS,SAAU+yC,GAAMT,EAAI8N,QAAQrN,GAAKC,WAAW,aAAa1lC,EAAG,MAAM,CAAC+yC,IAAI,YAAYC,MAAM,CAAE,eAAgBhO,EAAIiO,SAAUC,MAAO,CAAEp3D,MAAOkpD,EAAImO,cAAeC,OAAQ,UAAY9N,MAAM,CAAC,GAAK,cAAcN,EAAIE,GAAIF,EAAIqO,WAAW,SAASC,EAAKr9D,GAAO,OAAO+pB,EAAG,MAAM,CAAChE,IAAI/lB,EAAMmwD,YAAY,cAAc,CAACpmC,EAAG,SAAS,CAAChE,IAAIs3C,EAAKhO,MAAM,CAAC,GAAK,aAAegO,KAAQtzC,EAAG,MAAM,CAAComC,YAAY,KAAK8M,MAAO,CAACK,SAAUvO,EAAIwO,SAAW,GAAK,OAAQ,CAACxO,EAAIgB,GAAGhB,EAAIiB,GAAGjB,EAAIyO,eAAiBzO,EAAI0O,SAASC,OAAS,eAAc,GAAI3O,EAAIiO,QAASjzC,EAAG,MAAM,CAAComC,YAAY,WAAW,CAACpmC,EAAG,aAAa,CAACslC,MAAM,CAAC,KAAON,EAAI4O,YAAY,MAAQ,IAAI,KAAO5O,EAAI4O,YAAc,KAAKrO,MAAM,CAACtqC,MAAO+pC,EAAI6O,KAAMnhD,SAAS,SAAU+yC,GAAMT,EAAI6O,KAAKpO,GAAKC,WAAW,UAAU1lC,EAAG,cAAc,CAAC8zC,YAAY,CAAC,aAAa,QAAQxO,MAAM,CAAC,KAAO,OAAO,MAAQ,YAAY,CAACN,EAAIgB,GAAG,eAAe,GAAGhB,EAAI9kC,MAAM,IAE/uCmmC,EAAkB,G,oECgCtB,YACA0N,0CACAjjD,UACA,OACA21C,YACAuN,qBAEA3+B,OACAziB,MACA0zC,YAEA2N,YACA3N,WAEAla,UACAka,cAEAmN,eACAnN,aAGA32C,gBACA,OACAukD,gBACAC,WACAvB,SACAE,WACAsB,iBACAC,YACAhB,aACAF,iBACAmB,aACAC,cACAb,YACAT,WACAuB,iBACAX,QACAD,cACAJ,aAGAiB,mBACA,IACA,kEACA,SACA,iBAEA,YACA,mBACA,kBAGAlO,SACAsM,yBACA,gBAIA,IAHA,wCACA,IAEA,8BAEA,iCACA6B,IACA,MAGA,wEACAC,iCAEA9+D,iBACA6+D,gBAGAtiD,eACAA,8BAEAwiD,mBACA,iBAEAjC,sBACA,iBAEAkC,kBAEA,QAEA19D,EADA,yBACAA,IAEAA,IAEA,oBAGA,iCACA,gCAEA29D,kBAEA,QACA,oBAGA,iCACA,gCAGAC,oBAAA,WACA,qCACA,aACA,OACA55C,iCAGA65C,sEAEA37C,gBACA,kBACAA,kBACAjH,0BAEA,iBACA6iD,kCACAC,2BAGA,CACA,8DACA,sBAIAC,wBACA,gBACA,+BAGAC,sBAAA,IAEA,EAFA,OAIAC,EADA,iCACAA,eACA1lD,SAIA0lD,iBAEAA,4BACA,WACA,8BACAC,iCACAljD,oBACAA,eACA,UACA,UACAA,sBACA9b,uBACA8b,eAEAkjD,gBACAvC,gBACA,kBACA3gD,yBAOA,wBACA,iBACA,wBAIAmjD,wBAAA,WAEA,OACA,yCACAL,sBACA,8CACA,qBACA,6BACA,EACAnqD,gCACAA,6BACAA,4BACAA,2BACAA,0BACA,EACA,MACA,iBACAyqD,oBAGAC,kBACAA,oBAQAA,qBACAA,8BACA,mBAEAP,uBAEAnqD,4BACA,OACA2qD,gBACAC,YAEArC,qCAaA,oBACA,8DACAsC,YAEA,gCACAj8C,uBACA,aACA,IACA,oBACAk8C,eAEA,SACAzjD,iBAEA,IACA,oBACAvc,sEAEA,SACAuc,oBAEA,KAEA,eACAuH,uBACA,qBACA,aC/RkV,I,wBCQ9U6sC,EAAY,eACd,EACAzB,EACAsB,GACA,EACA,KACA,WACA,MAIa,OAAAG,E,6CCjBf,MAAM/xD,EAAW,EAAQ,QAEnBiuC,EAAa,EAA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","file":"js/chunk-03cb5fa0.d6c585fe.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 ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\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","// Copyright 2018 The Go Authors. All rights reserved.\r\n// Use of this source code is governed by a BSD-style\r\n// license that can be found in the LICENSE file.\r\n\r\n(() => {\r\n\t// Map multiple JavaScript environments to a single common API,\r\n\t// preferring web standards over Node.js API.\r\n\t//\r\n\t// Environments considered:\r\n\t// - Browsers\r\n\t// - Node.js\r\n\t// - Electron\r\n\t// - Parcel\r\n\t// - Webpack\r\n\r\n\tif (typeof global !== \"undefined\") {\r\n\t\t// global already exists\r\n\t} else if (typeof window !== \"undefined\") {\r\n\t\twindow.global = window;\r\n\t} else if (typeof self !== \"undefined\") {\r\n\t\tself.global = self;\r\n\t} else {\r\n\t\tthrow new Error(\"cannot export Go (neither global, window nor self is defined)\");\r\n\t}\r\n\r\n\tif (!global.require && typeof require !== \"undefined\") {\r\n\t\tglobal.require = require;\r\n\t}\r\n\r\n\tif (!global.fs && global.require) {\r\n\t\tconst fs = require(\"fs\");\r\n\t\tif (typeof fs === \"object\" && fs !== null && Object.keys(fs).length !== 0) {\r\n\t\t\tglobal.fs = fs;\r\n\t\t}\r\n\t}\r\n\r\n\tconst enosys = () => {\r\n\t\tconst err = new Error(\"not implemented\");\r\n\t\terr.code = \"ENOSYS\";\r\n\t\treturn err;\r\n\t};\r\n\r\n\tif (!global.fs) {\r\n\t\tlet outputBuf = \"\";\r\n\t\tglobal.fs = {\r\n\t\t\tconstants: { O_WRONLY: -1, O_RDWR: -1, O_CREAT: -1, O_TRUNC: -1, O_APPEND: -1, O_EXCL: -1 }, // unused\r\n\t\t\twriteSync(fd, buf) {\r\n\t\t\t\toutputBuf += decoder.decode(buf);\r\n\t\t\t\tconst nl = outputBuf.lastIndexOf(\"\\n\");\r\n\t\t\t\tif (nl != -1) {\r\n\t\t\t\t\tconsole.log(outputBuf.substr(0, nl));\r\n\t\t\t\t\toutputBuf = outputBuf.substr(nl + 1);\r\n\t\t\t\t}\r\n\t\t\t\treturn buf.length;\r\n\t\t\t},\r\n\t\t\twrite(fd, buf, offset, length, position, callback) {\r\n\t\t\t\tif (offset !== 0 || length !== buf.length || position !== null) {\r\n\t\t\t\t\tcallback(enosys());\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tconst n = this.writeSync(fd, buf);\r\n\t\t\t\tcallback(null, n);\r\n\t\t\t},\r\n\t\t\tchmod(path, mode, callback) { callback(enosys()); },\r\n\t\t\tchown(path, uid, gid, callback) { callback(enosys()); },\r\n\t\t\tclose(fd, callback) { callback(enosys()); },\r\n\t\t\tfchmod(fd, mode, callback) { callback(enosys()); },\r\n\t\t\tfchown(fd, uid, gid, callback) { callback(enosys()); },\r\n\t\t\tfstat(fd, callback) { callback(enosys()); },\r\n\t\t\tfsync(fd, callback) { callback(null); },\r\n\t\t\tftruncate(fd, length, callback) { callback(enosys()); },\r\n\t\t\tlchown(path, uid, gid, callback) { callback(enosys()); },\r\n\t\t\tlink(path, link, callback) { callback(enosys()); },\r\n\t\t\tlstat(path, callback) { callback(enosys()); },\r\n\t\t\tmkdir(path, perm, callback) { callback(enosys()); },\r\n\t\t\topen(path, flags, mode, callback) { callback(enosys()); },\r\n\t\t\tread(fd, buffer, offset, length, position, callback) { callback(enosys()); },\r\n\t\t\treaddir(path, callback) { callback(enosys()); },\r\n\t\t\treadlink(path, callback) { callback(enosys()); },\r\n\t\t\trename(from, to, callback) { callback(enosys()); },\r\n\t\t\trmdir(path, callback) { callback(enosys()); },\r\n\t\t\tstat(path, callback) { callback(enosys()); },\r\n\t\t\tsymlink(path, link, callback) { callback(enosys()); },\r\n\t\t\ttruncate(path, length, callback) { callback(enosys()); },\r\n\t\t\tunlink(path, callback) { callback(enosys()); },\r\n\t\t\tutimes(path, atime, mtime, callback) { callback(enosys()); },\r\n\t\t};\r\n\t}\r\n\r\n\tif (!global.process) {\r\n\t\tglobal.process = {\r\n\t\t\tgetuid() { return -1; },\r\n\t\t\tgetgid() { return -1; },\r\n\t\t\tgeteuid() { return -1; },\r\n\t\t\tgetegid() { return -1; },\r\n\t\t\tgetgroups() { throw enosys(); },\r\n\t\t\tpid: -1,\r\n\t\t\tppid: -1,\r\n\t\t\tumask() { throw enosys(); },\r\n\t\t\tcwd() { throw enosys(); },\r\n\t\t\tchdir() { throw enosys(); },\r\n\t\t}\r\n\t}\r\n\r\n\tif (!global.crypto && global.require) {\r\n\t\tconst nodeCrypto = require(\"crypto\");\r\n\t\tglobal.crypto = {\r\n\t\t\tgetRandomValues(b) {\r\n\t\t\t\tnodeCrypto.randomFillSync(b);\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n\tif (!global.crypto) {\r\n\t\tthrow new Error(\"global.crypto is not available, polyfill required (getRandomValues only)\");\r\n\t}\r\n\r\n\tif (!global.performance) {\r\n\t\tglobal.performance = {\r\n\t\t\tnow() {\r\n\t\t\t\tconst [sec, nsec] = process.hrtime();\r\n\t\t\t\treturn sec * 1000 + nsec / 1000000;\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n\r\n\tif (!global.TextEncoder && global.require) {\r\n\t\tglobal.TextEncoder = require(\"util\").TextEncoder;\r\n\t}\r\n\tif (!global.TextEncoder) {\r\n\t\tthrow new Error(\"global.TextEncoder is not available, polyfill required\");\r\n\t}\r\n\r\n\tif (!global.TextDecoder && global.require) {\r\n\t\tglobal.TextDecoder = require(\"util\").TextDecoder;\r\n\t}\r\n\tif (!global.TextDecoder) {\r\n\t\tthrow new Error(\"global.TextDecoder is not available, polyfill required\");\r\n\t}\r\n\r\n\t// End of polyfills for common API.\r\n\r\n\tconst encoder = new TextEncoder(\"utf-8\");\r\n\tconst decoder = new TextDecoder(\"utf-8\");\r\n\r\n\tglobal.Go = class {\r\n\t\tconstructor() {\r\n\t\t\tthis.argv = [\"js\"];\r\n\t\t\tthis.env = {};\r\n\t\t\tthis.exit = (code) => {\r\n\t\t\t\tif (code !== 0) {\r\n\t\t\t\t\tconsole.warn(\"exit code:\", code);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\tthis._exitPromise = new Promise((resolve) => {\r\n\t\t\t\tthis._resolveExitPromise = resolve;\r\n\t\t\t});\r\n\t\t\tthis._pendingEvent = null;\r\n\t\t\tthis._scheduledTimeouts = new Map();\r\n\t\t\tthis._nextCallbackTimeoutID = 1;\r\n\r\n\t\t\tconst setInt64 = (addr, v) => {\r\n\t\t\t\tthis.mem.setUint32(addr + 0, v, true);\r\n\t\t\t\tthis.mem.setUint32(addr + 4, Math.floor(v / 4294967296), true);\r\n\t\t\t}\r\n\r\n\t\t\tconst getInt64 = (addr) => {\r\n\t\t\t\tconst low = this.mem.getUint32(addr + 0, true);\r\n\t\t\t\tconst high = this.mem.getInt32(addr + 4, true);\r\n\t\t\t\treturn low + high * 4294967296;\r\n\t\t\t}\r\n\r\n\t\t\tconst loadValue = (addr) => {\r\n\t\t\t\tconst f = this.mem.getFloat64(addr, true);\r\n\t\t\t\tif (f === 0) {\r\n\t\t\t\t\treturn undefined;\r\n\t\t\t\t}\r\n\t\t\t\tif (!isNaN(f)) {\r\n\t\t\t\t\treturn f;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst id = this.mem.getUint32(addr, true);\r\n\t\t\t\treturn this._values[id];\r\n\t\t\t}\r\n\r\n\t\t\tconst storeValue = (addr, v) => {\r\n\t\t\t\tconst nanHead = 0x7FF80000;\r\n\r\n\t\t\t\tif (typeof v === \"number\" && v !== 0) {\r\n\t\t\t\t\tif (isNaN(v)) {\r\n\t\t\t\t\t\tthis.mem.setUint32(addr + 4, nanHead, true);\r\n\t\t\t\t\t\tthis.mem.setUint32(addr, 0, true);\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.mem.setFloat64(addr, v, true);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (v === undefined) {\r\n\t\t\t\t\tthis.mem.setFloat64(addr, 0, true);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet id = this._ids.get(v);\r\n\t\t\t\tif (id === undefined) {\r\n\t\t\t\t\tid = this._idPool.pop();\r\n\t\t\t\t\tif (id === undefined) {\r\n\t\t\t\t\t\tid = this._values.length;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis._values[id] = v;\r\n\t\t\t\t\tthis._goRefCounts[id] = 0;\r\n\t\t\t\t\tthis._ids.set(v, id);\r\n\t\t\t\t}\r\n\t\t\t\tthis._goRefCounts[id]++;\r\n\t\t\t\tlet typeFlag = 0;\r\n\t\t\t\tswitch (typeof v) {\r\n\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\t\tif (v !== null) {\r\n\t\t\t\t\t\t\ttypeFlag = 1;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"string\":\r\n\t\t\t\t\t\ttypeFlag = 2;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"symbol\":\r\n\t\t\t\t\t\ttypeFlag = 3;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"function\":\r\n\t\t\t\t\t\ttypeFlag = 4;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tthis.mem.setUint32(addr + 4, nanHead | typeFlag, true);\r\n\t\t\t\tthis.mem.setUint32(addr, id, true);\r\n\t\t\t}\r\n\r\n\t\t\tconst loadSlice = (addr) => {\r\n\t\t\t\tconst array = getInt64(addr + 0);\r\n\t\t\t\tconst len = getInt64(addr + 8);\r\n\t\t\t\treturn new Uint8Array(this._inst.exports.mem.buffer, array, len);\r\n\t\t\t}\r\n\r\n\t\t\tconst loadSliceOfValues = (addr) => {\r\n\t\t\t\tconst array = getInt64(addr + 0);\r\n\t\t\t\tconst len = getInt64(addr + 8);\r\n\t\t\t\tconst a = new Array(len);\r\n\t\t\t\tfor (let i = 0; i < len; i++) {\r\n\t\t\t\t\ta[i] = loadValue(array + i * 8);\r\n\t\t\t\t}\r\n\t\t\t\treturn a;\r\n\t\t\t}\r\n\r\n\t\t\tconst loadString = (addr) => {\r\n\t\t\t\tconst saddr = getInt64(addr + 0);\r\n\t\t\t\tconst len = getInt64(addr + 8);\r\n\t\t\t\treturn decoder.decode(new DataView(this._inst.exports.mem.buffer, saddr, len));\r\n\t\t\t}\r\n\r\n\t\t\tconst timeOrigin = Date.now() - performance.now();\r\n\t\t\tthis.importObject = {\r\n\t\t\t\tgo: {\r\n\t\t\t\t\t// Go's SP does not change as long as no Go code is running. Some operations (e.g. calls, getters and setters)\r\n\t\t\t\t\t// may synchronously trigger a Go event handler. This makes Go code get executed in the middle of the imported\r\n\t\t\t\t\t// function. A goroutine can switch to a new stack if the current stack is too small (see morestack function).\r\n\t\t\t\t\t// This changes the SP, thus we have to update the SP used by the imported function.\r\n\r\n\t\t\t\t\t// func wasmExit(code int32)\r\n\t\t\t\t\t\"runtime.wasmExit\": (sp) => {\r\n\t\t\t\t\t\tsp >>>= 0;\r\n\t\t\t\t\t\tconst code = this.mem.getInt32(sp + 8, true);\r\n\t\t\t\t\t\tthis.exited = true;\r\n\t\t\t\t\t\tdelete this._inst;\r\n\t\t\t\t\t\tdelete this._values;\r\n\t\t\t\t\t\tdelete this._goRefCounts;\r\n\t\t\t\t\t\tdelete this._ids;\r\n\t\t\t\t\t\tdelete this._idPool;\r\n\t\t\t\t\t\tthis.exit(code);\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t// func wasmWrite(fd uintptr, p unsafe.Pointer, n int32)\r\n\t\t\t\t\t\"runtime.wasmWrite\": (sp) => {\r\n\t\t\t\t\t\tsp >>>= 0;\r\n\t\t\t\t\t\tconst fd = getInt64(sp + 8);\r\n\t\t\t\t\t\tconst p = getInt64(sp + 16);\r\n\t\t\t\t\t\tconst n = this.mem.getInt32(sp + 24, true);\r\n\t\t\t\t\t\tfs.writeSync(fd, new Uint8Array(this._inst.exports.mem.buffer, p, n));\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t// func resetMemoryDataView()\r\n\t\t\t\t\t\"runtime.resetMemoryDataView\": (sp) => {\r\n\t\t\t\t\t\tsp >>>= 0;\r\n\t\t\t\t\t\tthis.mem = new DataView(this._inst.exports.mem.buffer);\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t// func nanotime1() int64\r\n\t\t\t\t\t\"runtime.nanotime1\": (sp) => {\r\n\t\t\t\t\t\tsp >>>= 0;\r\n\t\t\t\t\t\tsetInt64(sp + 8, (timeOrigin + performance.now()) * 1000000);\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t// func walltime() (sec int64, nsec int32)\r\n\t\t\t\t\t\"runtime.walltime\": (sp) => {\r\n\t\t\t\t\t\tsp >>>= 0;\r\n\t\t\t\t\t\tconst msec = (new Date).getTime();\r\n\t\t\t\t\t\tsetInt64(sp + 8, msec / 1000);\r\n\t\t\t\t\t\tthis.mem.setInt32(sp + 16, (msec % 1000) * 1000000, true);\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t// func scheduleTimeoutEvent(delay int64) int32\r\n\t\t\t\t\t\"runtime.scheduleTimeoutEvent\": (sp) => {\r\n\t\t\t\t\t\tsp >>>= 0;\r\n\t\t\t\t\t\tconst id = this._nextCallbackTimeoutID;\r\n\t\t\t\t\t\tthis._nextCallbackTimeoutID++;\r\n\t\t\t\t\t\tthis._scheduledTimeouts.set(id, setTimeout(\r\n\t\t\t\t\t\t\t() => {\r\n\t\t\t\t\t\t\t\tthis._resume();\r\n\t\t\t\t\t\t\t\twhile (this._scheduledTimeouts.has(id)) {\r\n\t\t\t\t\t\t\t\t\t// for some reason Go failed to register the timeout event, log and try again\r\n\t\t\t\t\t\t\t\t\t// (temporary workaround for https://github.com/golang/go/issues/28975)\r\n\t\t\t\t\t\t\t\t\tconsole.warn(\"scheduleTimeoutEvent: missed timeout event\");\r\n\t\t\t\t\t\t\t\t\tthis._resume();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tgetInt64(sp + 8) + 1, // setTimeout has been seen to fire up to 1 millisecond early\r\n\t\t\t\t\t\t));\r\n\t\t\t\t\t\tthis.mem.setInt32(sp + 16, id, true);\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t// func clearTimeoutEvent(id int32)\r\n\t\t\t\t\t\"runtime.clearTimeoutEvent\": (sp) => {\r\n\t\t\t\t\t\tsp >>>= 0;\r\n\t\t\t\t\t\tconst id = this.mem.getInt32(sp + 8, true);\r\n\t\t\t\t\t\tclearTimeout(this._scheduledTimeouts.get(id));\r\n\t\t\t\t\t\tthis._scheduledTimeouts.delete(id);\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t// func getRandomData(r []byte)\r\n\t\t\t\t\t\"runtime.getRandomData\": (sp) => {\r\n\t\t\t\t\t\tsp >>>= 0;\r\n\t\t\t\t\t\tcrypto.getRandomValues(loadSlice(sp + 8));\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t// func finalizeRef(v ref)\r\n\t\t\t\t\t\"syscall/js.finalizeRef\": (sp) => {\r\n\t\t\t\t\t\tsp >>>= 0;\r\n\t\t\t\t\t\tconst id = this.mem.getUint32(sp + 8, true);\r\n\t\t\t\t\t\tthis._goRefCounts[id]--;\r\n\t\t\t\t\t\tif (this._goRefCounts[id] === 0) {\r\n\t\t\t\t\t\t\tconst v = this._values[id];\r\n\t\t\t\t\t\t\tthis._values[id] = null;\r\n\t\t\t\t\t\t\tthis._ids.delete(v);\r\n\t\t\t\t\t\t\tthis._idPool.push(id);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t// func stringVal(value string) ref\r\n\t\t\t\t\t\"syscall/js.stringVal\": (sp) => {\r\n\t\t\t\t\t\tsp >>>= 0;\r\n\t\t\t\t\t\tstoreValue(sp + 24, loadString(sp + 8));\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t// func valueGet(v ref, p string) ref\r\n\t\t\t\t\t\"syscall/js.valueGet\": (sp) => {\r\n\t\t\t\t\t\tsp >>>= 0;\r\n\t\t\t\t\t\tconst result = Reflect.get(loadValue(sp + 8), loadString(sp + 16));\r\n\t\t\t\t\t\tsp = this._inst.exports.getsp() >>> 0; // see comment above\r\n\t\t\t\t\t\tstoreValue(sp + 32, result);\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t// func valueSet(v ref, p string, x ref)\r\n\t\t\t\t\t\"syscall/js.valueSet\": (sp) => {\r\n\t\t\t\t\t\tsp >>>= 0;\r\n\t\t\t\t\t\tReflect.set(loadValue(sp + 8), loadString(sp + 16), loadValue(sp + 32));\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t// func valueDelete(v ref, p string)\r\n\t\t\t\t\t\"syscall/js.valueDelete\": (sp) => {\r\n\t\t\t\t\t\tsp >>>= 0;\r\n\t\t\t\t\t\tReflect.deleteProperty(loadValue(sp + 8), loadString(sp + 16));\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t// func valueIndex(v ref, i int) ref\r\n\t\t\t\t\t\"syscall/js.valueIndex\": (sp) => {\r\n\t\t\t\t\t\tsp >>>= 0;\r\n\t\t\t\t\t\tstoreValue(sp + 24, Reflect.get(loadValue(sp + 8), getInt64(sp + 16)));\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t// valueSetIndex(v ref, i int, x ref)\r\n\t\t\t\t\t\"syscall/js.valueSetIndex\": (sp) => {\r\n\t\t\t\t\t\tsp >>>= 0;\r\n\t\t\t\t\t\tReflect.set(loadValue(sp + 8), getInt64(sp + 16), loadValue(sp + 24));\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t// func valueCall(v ref, m string, args []ref) (ref, bool)\r\n\t\t\t\t\t\"syscall/js.valueCall\": (sp) => {\r\n\t\t\t\t\t\tsp >>>= 0;\r\n\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\tconst v = loadValue(sp + 8);\r\n\t\t\t\t\t\t\tconst m = Reflect.get(v, loadString(sp + 16));\r\n\t\t\t\t\t\t\tconst args = loadSliceOfValues(sp + 32);\r\n\t\t\t\t\t\t\tconst result = Reflect.apply(m, v, args);\r\n\t\t\t\t\t\t\tsp = this._inst.exports.getsp() >>> 0; // see comment above\r\n\t\t\t\t\t\t\tstoreValue(sp + 56, result);\r\n\t\t\t\t\t\t\tthis.mem.setUint8(sp + 64, 1);\r\n\t\t\t\t\t\t} catch (err) {\r\n\t\t\t\t\t\t\tsp = this._inst.exports.getsp() >>> 0; // see comment above\r\n\t\t\t\t\t\t\tstoreValue(sp + 56, err);\r\n\t\t\t\t\t\t\tthis.mem.setUint8(sp + 64, 0);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t// func valueInvoke(v ref, args []ref) (ref, bool)\r\n\t\t\t\t\t\"syscall/js.valueInvoke\": (sp) => {\r\n\t\t\t\t\t\tsp >>>= 0;\r\n\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\tconst v = loadValue(sp + 8);\r\n\t\t\t\t\t\t\tconst args = loadSliceOfValues(sp + 16);\r\n\t\t\t\t\t\t\tconst result = Reflect.apply(v, undefined, args);\r\n\t\t\t\t\t\t\tsp = this._inst.exports.getsp() >>> 0; // see comment above\r\n\t\t\t\t\t\t\tstoreValue(sp + 40, result);\r\n\t\t\t\t\t\t\tthis.mem.setUint8(sp + 48, 1);\r\n\t\t\t\t\t\t} catch (err) {\r\n\t\t\t\t\t\t\tsp = this._inst.exports.getsp() >>> 0; // see comment above\r\n\t\t\t\t\t\t\tstoreValue(sp + 40, err);\r\n\t\t\t\t\t\t\tthis.mem.setUint8(sp + 48, 0);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t// func valueNew(v ref, args []ref) (ref, bool)\r\n\t\t\t\t\t\"syscall/js.valueNew\": (sp) => {\r\n\t\t\t\t\t\tsp >>>= 0;\r\n\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\tconst v = loadValue(sp + 8);\r\n\t\t\t\t\t\t\tconst args = loadSliceOfValues(sp + 16);\r\n\t\t\t\t\t\t\tconst result = Reflect.construct(v, args);\r\n\t\t\t\t\t\t\tsp = this._inst.exports.getsp() >>> 0; // see comment above\r\n\t\t\t\t\t\t\tstoreValue(sp + 40, result);\r\n\t\t\t\t\t\t\tthis.mem.setUint8(sp + 48, 1);\r\n\t\t\t\t\t\t} catch (err) {\r\n\t\t\t\t\t\t\tsp = this._inst.exports.getsp() >>> 0; // see comment above\r\n\t\t\t\t\t\t\tstoreValue(sp + 40, err);\r\n\t\t\t\t\t\t\tthis.mem.setUint8(sp + 48, 0);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t// func valueLength(v ref) int\r\n\t\t\t\t\t\"syscall/js.valueLength\": (sp) => {\r\n\t\t\t\t\t\tsp >>>= 0;\r\n\t\t\t\t\t\tsetInt64(sp + 16, parseInt(loadValue(sp + 8).length));\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t// valuePrepareString(v ref) (ref, int)\r\n\t\t\t\t\t\"syscall/js.valuePrepareString\": (sp) => {\r\n\t\t\t\t\t\tsp >>>= 0;\r\n\t\t\t\t\t\tconst str = encoder.encode(String(loadValue(sp + 8)));\r\n\t\t\t\t\t\tstoreValue(sp + 16, str);\r\n\t\t\t\t\t\tsetInt64(sp + 24, str.length);\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t// valueLoadString(v ref, b []byte)\r\n\t\t\t\t\t\"syscall/js.valueLoadString\": (sp) => {\r\n\t\t\t\t\t\tsp >>>= 0;\r\n\t\t\t\t\t\tconst str = loadValue(sp + 8);\r\n\t\t\t\t\t\tloadSlice(sp + 16).set(str);\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t// func valueInstanceOf(v ref, t ref) bool\r\n\t\t\t\t\t\"syscall/js.valueInstanceOf\": (sp) => {\r\n\t\t\t\t\t\tsp >>>= 0;\r\n\t\t\t\t\t\tthis.mem.setUint8(sp + 24, (loadValue(sp + 8) instanceof loadValue(sp + 16)) ? 1 : 0);\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t// func copyBytesToGo(dst []byte, src ref) (int, bool)\r\n\t\t\t\t\t\"syscall/js.copyBytesToGo\": (sp) => {\r\n\t\t\t\t\t\tsp >>>= 0;\r\n\t\t\t\t\t\tconst dst = loadSlice(sp + 8);\r\n\t\t\t\t\t\tconst src = loadValue(sp + 32);\r\n\t\t\t\t\t\tif (!(src instanceof Uint8Array || src instanceof Uint8ClampedArray)) {\r\n\t\t\t\t\t\t\tthis.mem.setUint8(sp + 48, 0);\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tconst toCopy = src.subarray(0, dst.length);\r\n\t\t\t\t\t\tdst.set(toCopy);\r\n\t\t\t\t\t\tsetInt64(sp + 40, toCopy.length);\r\n\t\t\t\t\t\tthis.mem.setUint8(sp + 48, 1);\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t// func copyBytesToJS(dst ref, src []byte) (int, bool)\r\n\t\t\t\t\t\"syscall/js.copyBytesToJS\": (sp) => {\r\n\t\t\t\t\t\tsp >>>= 0;\r\n\t\t\t\t\t\tconst dst = loadValue(sp + 8);\r\n\t\t\t\t\t\tconst src = loadSlice(sp + 16);\r\n\t\t\t\t\t\tif (!(dst instanceof Uint8Array || dst instanceof Uint8ClampedArray)) {\r\n\t\t\t\t\t\t\tthis.mem.setUint8(sp + 48, 0);\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tconst toCopy = src.subarray(0, dst.length);\r\n\t\t\t\t\t\tdst.set(toCopy);\r\n\t\t\t\t\t\tsetInt64(sp + 40, toCopy.length);\r\n\t\t\t\t\t\tthis.mem.setUint8(sp + 48, 1);\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t\"debug\": (value) => {\r\n\t\t\t\t\t\tconsole.log(value);\r\n\t\t\t\t\t},\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tasync run(instance) {\r\n\t\t\tif (!(instance instanceof WebAssembly.Instance)) {\r\n\t\t\t\tthrow new Error(\"Go.run: WebAssembly.Instance expected\");\r\n\t\t\t}\r\n\t\t\tthis._inst = instance;\r\n\t\t\tthis.mem = new DataView(this._inst.exports.mem.buffer);\r\n\t\t\tthis._values = [ // JS values that Go currently has references to, indexed by reference id\r\n\t\t\t\tNaN,\r\n\t\t\t\t0,\r\n\t\t\t\tnull,\r\n\t\t\t\ttrue,\r\n\t\t\t\tfalse,\r\n\t\t\t\tglobal,\r\n\t\t\t\tthis,\r\n\t\t\t];\r\n\t\t\tthis._goRefCounts = new Array(this._values.length).fill(Infinity); // number of references that Go has to a JS value, indexed by reference id\r\n\t\t\tthis._ids = new Map([ // mapping from JS values to reference ids\r\n\t\t\t\t[0, 1],\r\n\t\t\t\t[null, 2],\r\n\t\t\t\t[true, 3],\r\n\t\t\t\t[false, 4],\r\n\t\t\t\t[global, 5],\r\n\t\t\t\t[this, 6],\r\n\t\t\t]);\r\n\t\t\tthis._idPool = []; // unused ids that have been garbage collected\r\n\t\t\tthis.exited = false; // whether the Go program has exited\r\n\r\n\t\t\t// Pass command line arguments and environment variables to WebAssembly by writing them to the linear memory.\r\n\t\t\tlet offset = 4096;\r\n\r\n\t\t\tconst strPtr = (str) => {\r\n\t\t\t\tconst ptr = offset;\r\n\t\t\t\tconst bytes = encoder.encode(str + \"\\0\");\r\n\t\t\t\tnew Uint8Array(this.mem.buffer, offset, bytes.length).set(bytes);\r\n\t\t\t\toffset += bytes.length;\r\n\t\t\t\tif (offset % 8 !== 0) {\r\n\t\t\t\t\toffset += 8 - (offset % 8);\r\n\t\t\t\t}\r\n\t\t\t\treturn ptr;\r\n\t\t\t};\r\n\r\n\t\t\tconst argc = this.argv.length;\r\n\r\n\t\t\tconst argvPtrs = [];\r\n\t\t\tthis.argv.forEach((arg) => {\r\n\t\t\t\targvPtrs.push(strPtr(arg));\r\n\t\t\t});\r\n\t\t\targvPtrs.push(0);\r\n\r\n\t\t\tconst keys = Object.keys(this.env).sort();\r\n\t\t\tkeys.forEach((key) => {\r\n\t\t\t\targvPtrs.push(strPtr(`${key}=${this.env[key]}`));\r\n\t\t\t});\r\n\t\t\targvPtrs.push(0);\r\n\r\n\t\t\tconst argv = offset;\r\n\t\t\targvPtrs.forEach((ptr) => {\r\n\t\t\t\tthis.mem.setUint32(offset, ptr, true);\r\n\t\t\t\tthis.mem.setUint32(offset + 4, 0, true);\r\n\t\t\t\toffset += 8;\r\n\t\t\t});\r\n\r\n\t\t\t// The linker guarantees global data starts from at least wasmMinDataAddr.\r\n\t\t\t// Keep in sync with cmd/link/internal/ld/data.go:wasmMinDataAddr.\r\n\t\t\tconst wasmMinDataAddr = 4096 + 8192;\r\n\t\t\tif (offset >= wasmMinDataAddr) {\r\n\t\t\t\tthrow new Error(\"total length of command line and environment variables exceeds limit\");\r\n\t\t\t}\r\n\r\n\t\t\tthis._inst.exports.run(argc, argv);\r\n\t\t\tif (this.exited) {\r\n\t\t\t\tthis._resolveExitPromise();\r\n\t\t\t}\r\n\t\t\tawait this._exitPromise;\r\n\t\t}\r\n\r\n\t\t_resume() {\r\n\t\t\tif (this.exited) {\r\n\t\t\t\tthrow new Error(\"Go program has already exited\");\r\n\t\t\t}\r\n\t\t\tthis._inst.exports.resume();\r\n\t\t\tif (this.exited) {\r\n\t\t\t\tthis._resolveExitPromise();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t_makeFuncWrapper(id) {\r\n\t\t\tconst go = this;\r\n\t\t\treturn function () {\r\n\t\t\t\tconst event = { id: id, this: this, args: arguments };\r\n\t\t\t\tgo._pendingEvent = event;\r\n\t\t\t\tgo._resume();\r\n\t\t\t\treturn event.result;\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tif (\r\n\t\ttypeof module !== \"undefined\" &&\r\n\t\tglobal.require &&\r\n\t\tglobal.require.main === module &&\r\n\t\tglobal.process &&\r\n\t\tglobal.process.versions &&\r\n\t\t!global.process.versions.electron\r\n\t) {\r\n\t\tif (process.argv.length < 3) {\r\n\t\t\tconsole.error(\"usage: go_js_wasm_exec [wasm binary] [arguments]\");\r\n\t\t\tprocess.exit(1);\r\n\t\t}\r\n\r\n\t\tconst go = new Go();\r\n\t\tgo.argv = process.argv.slice(2);\r\n\t\tgo.env = Object.assign({ TMPDIR: require(\"os\").tmpdir() }, process.env);\r\n\t\tgo.exit = process.exit;\r\n\t\tWebAssembly.instantiate(fs.readFileSync(process.argv[2]), go.importObject).then((result) => {\r\n\t\t\tprocess.on(\"exit\", (code) => { // Node.js exits if no event handler is pending\r\n\t\t\t\tif (code === 0 && !go.exited) {\r\n\t\t\t\t\t// deadlock, make Go print error and stack traces\r\n\t\t\t\t\tgo._pendingEvent = { id: 0 };\r\n\t\t\t\t\tgo._resume();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\treturn go.run(result.instance);\r\n\t\t}).catch((err) => {\r\n\t\t\tconsole.error(err);\r\n\t\t\tprocess.exit(1);\r\n\t\t});\r\n\t}\r\n})();\r\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};","/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\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","// https://tc39.github.io/ecma262/#sec-toindex\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toInteger(it);\n var length = toLength(number);\n if (number !== length) throw RangeError('Wrong length!');\n return length;\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};","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","var global = require('./_global');\nvar hide = require('./_hide');\nvar uid = require('./_uid');\nvar TYPED = uid('typed_array');\nvar VIEW = uid('view');\nvar ABV = !!(global.ArrayBuffer && global.DataView);\nvar CONSTR = ABV;\nvar i = 0;\nvar l = 9;\nvar Typed;\n\nvar TypedArrayConstructors = (\n 'Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array'\n).split(',');\n\nwhile (i < l) {\n if (Typed = global[TypedArrayConstructors[i++]]) {\n hide(Typed.prototype, TYPED, true);\n hide(Typed.prototype, VIEW, true);\n } else CONSTR = false;\n}\n\nmodule.exports = {\n ABV: ABV,\n CONSTR: CONSTR,\n TYPED: TYPED,\n VIEW: VIEW\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","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, 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} else {\n // old school shim for old browsers\n module.exports = 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","// 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/* <replacement> */\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/* </replacement> */\n\n/*<replacement>*/\n\n\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n/*<replacement>*/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\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","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\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","function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = function() { return []; };\nwebpackEmptyContext.resolve = webpackEmptyContext;\nmodule.exports = webpackEmptyContext;\nwebpackEmptyContext.id = \"1fd5\";","'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}();","// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])\nvar $export = require('./_export');\nvar create = require('./_object-create');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar bind = require('./_bind');\nvar rConstruct = (require('./_global').Reflect || {}).construct;\n\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(rConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\nvar ARGS_BUG = !fails(function () {\n rConstruct(function () { /* empty */ });\n});\n\n$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', {\n construct: function construct(Target, args /* , newTarget */) {\n aFunction(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n $args.push.apply($args, args);\n return new (bind.apply(Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : Object.prototype);\n var result = Function.apply.call(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n","var $export = require('./_export');\n$export($export.G + $export.W + $export.F * !require('./_typed').ABV, {\n DataView: require('./_typed-buffer').DataView\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 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/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\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 '<EC Point Infinity>';\n return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +\n ' y: ' + this.y.fromRed().toString(16, 2) + '>';\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 '<EC JPoint Infinity>';\n return '<EC JPoint x: ' + this.x.toString(16, 2) +\n ' y: ' + this.y.toString(16, 2) +\n ' z: ' + this.z.toString(16, 2) + '>';\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","require('./_typed-array')('Uint8', 1, function (init) {\n return function Uint8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\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","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var aLen = arguments.length;\n var index = toAbsoluteIndex(aLen > 1 ? arguments[1] : undefined, length);\n var end = aLen > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\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 ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\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<Byte>} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array<Byte>} [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 ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\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 <https://feross.org/opensource> */\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 = require('buffer').Buffer.isBuffer;\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n","exports.endianness = function () { return 'LE' };\n\nexports.hostname = function () {\n if (typeof location !== 'undefined') {\n return location.hostname\n }\n else return '';\n};\n\nexports.loadavg = function () { return [] };\n\nexports.uptime = function () { return 0 };\n\nexports.freemem = function () {\n return Number.MAX_VALUE;\n};\n\nexports.totalmem = function () {\n return Number.MAX_VALUE;\n};\n\nexports.cpus = function () { return [] };\n\nexports.type = function () { return 'Browser' };\n\nexports.release = function () {\n if (typeof navigator !== 'undefined') {\n return navigator.appVersion;\n }\n return '';\n};\n\nexports.networkInterfaces\n= exports.getNetworkInterfaces\n= function () { return {} };\n\nexports.arch = function () { return 'javascript' };\n\nexports.platform = function () { return 'browser' };\n\nexports.tmpdir = exports.tmpDir = function () {\n return '/tmp';\n};\n\nexports.EOL = '\\n';\n\nexports.homedir = function () {\n\treturn '/'\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 '<EC Point Infinity>';\n return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +\n ' y: ' + this.y.fromRed().toString(16, 2) +\n ' z: ' + this.z.fromRed().toString(16, 2) + '>';\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/*<replacement>*/\n\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n/*<replacement>*/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\n\n\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\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/*<replacement>*/\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/*</replacement>*/\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<Bytes>|Object} sig -\n* @param {Array<Bytes>|Point} [sig.R] - R point as Point or bytes\n* @param {Array<Bytes>|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array<Bytes>} [sig.Rencoded] - R point encoded\n* @param {Array<Bytes>} [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/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\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 ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\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/* <replacement> */\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/* </replacement> */\n\n/*<replacement>*/\n\n\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n/*<replacement>*/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\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};","// 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","'use strict';\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar fails = require('./_fails');\nvar $sort = [].sort;\nvar test = [1, 2, 3];\n\n$export($export.P + $export.F * (fails(function () {\n // IE8-\n test.sort(undefined);\n}) || !fails(function () {\n // V8 bug\n test.sort(null);\n // Old WebKit\n}) || !require('./_strict-method')($sort)), 'Array', {\n // 22.1.3.25 Array.prototype.sort(comparefn)\n sort: function sort(comparefn) {\n return comparefn === undefined\n ? $sort.call(toObject(this))\n : $sort.call(toObject(this), aFunction(comparefn));\n }\n});\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';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\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/*<replacement>*/\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/*</replacement>*/\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});","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pdf-view.vue?vue&type=style&index=0&id=6a5ecb68&prod&scoped=true&lang=css&\"","'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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_vm._l((_vm.list),function(item,index){return [(item[_vm.replaceFields.children] && item[_vm.replaceFields.children].length > 0)?_c('van-collapse',{attrs:{\"border\":false},model:{value:(_vm.collapseActive),callback:function ($$v) {_vm.collapseActive=$$v},expression:\"collapseActive\"}},[_c('van-collapse-item',{attrs:{\"name\":index},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('a',{on:{\"click\":function($event){$event.stopPropagation();return _vm.menuClick(item[_vm.replaceFields.value])}}},[_vm._v(_vm._s(item[_vm.replaceFields.title]))])]},proxy:true}],null,true)},[_c('pdf-catalogue-menu',{attrs:{\"list\":item[_vm.replaceFields.children]},on:{\"click-menu\":_vm.menuClick}})],1)],1):_c('div',{staticClass:\"menu\",on:{\"click\":function($event){return _vm.menuClick(item[_vm.replaceFields.value])}}},[_vm._v(\"\\n \"+_vm._s(item[_vm.replaceFields.title])+\"\\n \")])]})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div>\r\n <template v-for=\"(item, index) in list\">\r\n <van-collapse v-model=\"collapseActive\" :border=\"false\" v-if=\"item[replaceFields.children] && item[replaceFields.children].length > 0\">\r\n <van-collapse-item :name=\"index\">\r\n <template #title>\r\n <a @click.stop=\"menuClick(item[replaceFields.value])\">{{ item[replaceFields.title] }}</a>\r\n </template>\r\n <pdf-catalogue-menu :list=\"item[replaceFields.children]\" @click-menu=\"menuClick\"/>\r\n </van-collapse-item>\r\n </van-collapse>\r\n <div class=\"menu\" @click=\"menuClick(item[replaceFields.value])\" v-else>\r\n {{ item[replaceFields.title] }}\r\n </div>\r\n </template>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n\r\nexport default {\r\n name: 'pdf-catalogue-menu',\r\n props: {\r\n list: {\r\n default: () => []\r\n },\r\n replaceFields: {\r\n default: () => ({\r\n children: 'items',\r\n title: 'title',\r\n key: 'title',\r\n value: 'dest',\r\n }),\r\n },\r\n },\r\n data() {\r\n return {\r\n collapseActive: [],\r\n }\r\n },\r\n methods: {\r\n menuClick(item) {\r\n this.$emit('click-menu', item);\r\n },\r\n },\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n\r\n.menu {\r\n width: 100%;\r\n color: #222222;\r\n font-size: 13px;\r\n line-height: 24px;\r\n padding: 10px 16px 10px 20px;\r\n box-sizing: border-box;\r\n border-bottom: 1px solid #F6F6F6;\r\n position: relative;\r\n}\r\n\r\n.van-collapse-item {\r\n border-bottom: 1px solid #F6F6F6;\r\n /*padding-left: 10px;*/\r\n}\r\n\r\n.van-collapse-item >>> .van-collapse-item__title {\r\n color: #222222 !important;\r\n font-size: 13px;\r\n padding-left: 20px;\r\n}\r\n\r\n.van-collapse-item.active >>> .van-collapse-item__title {\r\n color: #FF1010 !important;\r\n}\r\n\r\n.van-collapse-item--border::after {\r\n display: none;\r\n}\r\n\r\n.van-collapse-item >>> .van-cell__right-icon {\r\n width: 12px;\r\n height: 12px;\r\n position: absolute;\r\n top: calc(50% - 6px);\r\n left: 0px;\r\n font-size: 12px;\r\n transform: rotate(-90deg);\r\n margin: 0;\r\n}\r\n\r\n.van-collapse-item >>> .van-collapse-item__title--expanded .van-cell__right-icon::before {\r\n transform: rotate(180deg);\r\n}\r\n\r\n.van-collapse-item >>> .van-collapse-item__content {\r\n padding-bottom: 0;\r\n padding-top: 0;\r\n}\r\n\r\n</style>\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pdf-catalogue-menu.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pdf-catalogue-menu.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./pdf-catalogue-menu.vue?vue&type=template&id=4911e6b7&scoped=true&\"\nimport script from \"./pdf-catalogue-menu.vue?vue&type=script&lang=js&\"\nexport * from \"./pdf-catalogue-menu.vue?vue&type=script&lang=js&\"\nimport style0 from \"./pdf-catalogue-menu.vue?vue&type=style&index=0&id=4911e6b7&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4911e6b7\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('van-popup',{attrs:{\"position\":\"left\"},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}},[_c('div',{staticClass:\"sidebar-window\"},[_c('p',{staticClass:\"sidebar-window-label\"},[_vm._v(\"目录\")]),_c('pdf-catalogue-menu',{attrs:{\"list\":_vm.list},on:{\"click-menu\":_vm.menuClick}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <van-popup v-model=\"value\" position=\"left\">\r\n <div class=\"sidebar-window\">\r\n <p class=\"sidebar-window-label\">目录</p>\r\n <pdf-catalogue-menu :list=\"list\" @click-menu=\"menuClick\"/>\r\n </div>\r\n </van-popup>\r\n</template>\r\n\r\n<script>\r\n\r\nimport PdfCatalogueMenu from \"@/components/pdf-catalogue-menu.vue\";\r\n\r\nexport default {\r\n components: {PdfCatalogueMenu},\r\n model: {\r\n prop: \"show\",\r\n event: \"show\"\r\n },\r\n props: {\r\n show: {\r\n default: false,\r\n },\r\n list: {\r\n default: () => [],\r\n },\r\n },\r\n computed: {\r\n value: {\r\n get() {\r\n return this.show;\r\n },\r\n set(val) {\r\n this.$emit(\"show\", val);\r\n }\r\n },\r\n },\r\n data() {\r\n return {\r\n }\r\n },\r\n methods: {\r\n menuClick(val) {\r\n this.$emit('click-menu', val);\r\n },\r\n },\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n\r\n.sidebar-window {\r\n width: calc(100vw - 65px);\r\n height: 100vh;\r\n z-index: 999;\r\n background-color: #FFFFFF;\r\n}\r\n\r\n.sidebar-window-label {\r\n width: 100%;\r\n height: 88px;\r\n display: flex;\r\n justify-content: center;\r\n align-items: flex-end;\r\n padding-bottom: 10px;\r\n border-bottom: 1px solid #F6F6F6;\r\n box-sizing: border-box;\r\n color: #222222;\r\n font-size: 16px;\r\n font-weight: bold;\r\n}\r\n\r\n</style>\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pdf-catalogue.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pdf-catalogue.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./pdf-catalogue.vue?vue&type=template&id=6757c916&scoped=true&\"\nimport script from \"./pdf-catalogue.vue?vue&type=script&lang=js&\"\nexport * from \"./pdf-catalogue.vue?vue&type=script&lang=js&\"\nimport style0 from \"./pdf-catalogue.vue?vue&type=style&index=0&id=6757c916&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6757c916\",\n null\n \n)\n\nexport default component.exports","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 '<EC Point Infinity>';\n return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +\n ' z: ' + this.z.fromRed().toString(16, 2) + '>';\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 META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\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","require('./_typed-array')('Uint8', 1, function (init) {\n return function Uint8ClampedArray(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n}, true);\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","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\nvar $export = require('./_export');\n\n$export($export.P, 'Array', { fill: require('./_array-fill') });\n\nrequire('./_add-to-unscopables')('fill');\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","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pdf-catalogue-menu.vue?vue&type=style&index=0&id=4911e6b7&prod&scoped=true&lang=css&\"","// 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/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\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};","// 20.3.3.1 / 15.9.4.4 Date.now()\nvar $export = require('./_export');\n\n$export($export.S, 'Date', { now: function () { return new Date().getTime(); } });\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","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/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\n/*</replacement>*/\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 ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"home_wrap\"},[_c('button',{staticClass:\"catalogue-btn\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.showDrawer}},[_c('img',{attrs:{\"src\":require(\"../assets/icon-128.png\"),\"alt\":\"\"}}),_vm._v(\"\\n\\t\\t\\t目录\\n\\t\\t\")]),_c('pdf-catalogue',{attrs:{\"list\":_vm.gData},on:{\"click-menu\":_vm.handleSelect},model:{value:(_vm.visible),callback:function ($$v) {_vm.visible=$$v},expression:\"visible\"}}),_c('div',{ref:\"getheight\",class:{ 'loading-hide': _vm.loading },style:({ width: _vm.pdf_div_width, margin: '0 auto' }),attrs:{\"id\":\"scrollBox\"}},_vm._l((_vm.pdf_pages),function(page,index){return _c('div',{key:index,staticClass:\"canvas-box\"},[_c('canvas',{key:page,attrs:{\"id\":'the_canvas' + page}}),_c('div',{staticClass:\"ws\",style:({fontSize: _vm.maxWidth / 40 + 'px'})},[_vm._v(_vm._s(_vm.watermarkText || _vm.userInfo.phone || '搞一下'))])])}),0),(_vm.loading)?_c('div',{staticClass:\"loading\"},[_c('van-circle',{attrs:{\"rate\":_vm.currentRate,\"speed\":100,\"text\":_vm.currentRate + '%'},model:{value:(_vm.rate),callback:function ($$v) {_vm.rate=$$v},expression:\"rate\"}}),_c('van-loading',{staticStyle:{\"margin-top\":\"10px\"},attrs:{\"size\":\"24px\",\"color\":\"#0094ff\"}},[_vm._v(\"数据加载中...\")])],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n\t<div class=\"home_wrap\">\r\n\t\t<!-- <button class=\"show-catalogue\" @click=\"showDrawer\">目录</button> -->\r\n\t\t<button type=\"button\" class=\"catalogue-btn\" @click=\"showDrawer\">\r\n\t\t\t<img src=\"../assets/icon-128.png\" alt=\"\">\r\n\t\t\t目录\r\n\t\t</button>\r\n\t\t<pdf-catalogue v-model=\"visible\" :list=\"gData\" @click-menu=\"handleSelect\" />\r\n\r\n\t\t<div ref=\"getheight\" id=\"scrollBox\" :class=\"{ 'loading-hide': loading }\"\r\n\t\t\t:style=\"{ width: pdf_div_width, margin: '0 auto' }\">\r\n <div v-for=\"(page, index) in pdf_pages\" :key=\"index\" class=\"canvas-box\">\r\n <canvas :id=\"'the_canvas' + page\" :key=\"page\"></canvas>\r\n <div class=\"ws\" :style=\"{fontSize: maxWidth / 40 + 'px'}\">{{ watermarkText || userInfo.phone || '搞一下' }}</div>\r\n </div>\r\n\t\t</div>\r\n\r\n\t\t<div class=\"loading\" v-if=\"loading\">\r\n\t\t\t<van-circle v-model=\"rate\" :rate=\"currentRate\" :speed=\"100\" :text=\"currentRate + '%'\" />\r\n\t\t\t<van-loading size=\"24px\" color=\"#0094ff\" style=\"margin-top: 10px\">数据加载中...</van-loading>\r\n\t\t</div>\r\n\t</div>\r\n</template>\r\n\r\n<script>\r\n\timport PdfCatalogue from \"@/components/pdf-catalogue.vue\";\r\n\timport watermark from \"@/common/watermark\";\r\n\timport {\r\n\t\tToast\r\n\t} from \"vant\";\r\n\timport VConsole from \"vconsole\";\r\n\timport Vue from \"vue\";\r\n\timport {OSS_URL} from \"@/common/config\";\r\n\r\n\tlet PDFJS = require(\"pdfjs-dist\");\r\n\tPDFJS.GlobalWorkerOptions.workerSrc = require(\"pdfjs-dist/build/pdf.worker.entry.js\");\r\n\trequire(\"../wasm/wasm_exec.js\");\r\n\texport default {\r\n\t\tcomponents: {\r\n\t\t\tPdfCatalogue\r\n\t\t},\r\n\t\tprops: {\r\n\t\t\tpath: {\r\n\t\t\t\tdefault: '',\r\n\t\t\t},\r\n\t\t\tis_encrypt: {\r\n\t\t\t\tdefault: 1,\r\n\t\t\t},\r\n platform: {\r\n default: 'h5',\r\n },\r\n watermarkText: {\r\n default: '',\r\n },\r\n\t\t},\r\n\t\tdata() {\r\n\t\t\treturn {\r\n\t\t\t\texpandedKeys: [],\r\n\t\t\t\tpageArr: [],\r\n\t\t\t\tgData: [],\r\n\t\t\t\tvisible: false,\r\n\t\t\t\tplacement: \"left\",\r\n\t\t\t\tpdf_scale: 1.0, //pdf放大系数\r\n\t\t\t\tpdf_pages: [],\r\n\t\t\t\tpdf_div_width: \"\",\r\n\t\t\t\tpdf_src: null,\r\n\t\t\t\tpdf_data: null,\r\n\t\t\t\tuserInfo: {},\r\n\t\t\t\tloading: true,\r\n\t\t\t\tloadingEndSize: 0,\r\n\t\t\t\trate: 10,\r\n\t\t\t\tcurrentRate: 0,\r\n maxWidth: 0,\r\n\t\t\t};\r\n\t\t},\r\n\t\tmounted() {\r\n\t\t\ttry {\r\n\t\t\t\tthis.userInfo = JSON.parse(localStorage.getItem('user_info') || `{}`);\r\n\t\t\t} catch (e) {\r\n\t\t\t\tthis.userInfo = {};\r\n\t\t\t}\r\n\t\t\tif (this.path) {\r\n\t\t\t\tthis.currentRate = 5;\r\n\t\t\t\tthis.waitWasm();\r\n\t\t\t}\r\n\t\t},\r\n\t\tmethods: {\r\n\t\t\thandleSelect(b) {\r\n\t\t\t\tthis.visible = false;\r\n\t\t\t\tlet height = this.$refs.getheight.offsetHeight;\r\n\t\t\t\tlet top = 0;\r\n\t\t\t\t// console.log(this.pageArr);\r\n\t\t\t\tfor (let index = 1; index < this.pageArr.length; index++) {\r\n\t\t\t\t\t// console.log(this.pageArr[index].num , b.selectedNodes[0].data.props.dest[0].num);\r\n\t\t\t\t\tif (this.pageArr[index].num > b[0].num) {\r\n\t\t\t\t\t\ttop = index;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tlet offsetHeight = top * this.$refs.getheight.children[0].getBoundingClientRect().height;\r\n\t\t\t\toffsetHeight = (offsetHeight * b[0].num) / this.pageArr[top].num;\r\n\r\n\t\t\t\twindow.scrollTo({\r\n\t\t\t\t\ttop: offsetHeight + 2 * (top - 1),\r\n\t\t\t\t\t// behavior: 'smooth' // 滚动行为:smooth平滑滚动,instant瞬间滚动,默认值auto,等同于instant\r\n\t\t\t\t});\r\n\t\t\t\tconsole.log(height);\r\n\t\t\t\tconsole.log(this.pageArr[0]);\r\n\t\t\t},\r\n\t\t\tonClose() {\r\n\t\t\t\tthis.visible = false;\r\n\t\t\t},\r\n\t\t\tshowDrawer() {\r\n\t\t\t\tthis.visible = true;\r\n\t\t\t},\r\n\t\t\tscaleD() {\r\n\t\t\t\t//放大\r\n\t\t\t\tlet max = 0;\r\n\t\t\t\tif (window.screen.width > 1440) {\r\n\t\t\t\t\tmax = 1.4;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tmax = 1.2;\r\n\t\t\t\t}\r\n\t\t\t\tif (this.pdf_scale >= max) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tthis.pdf_scale = this.pdf_scale + 0.1;\r\n\t\t\t\tthis._loadFile(this.pdf_data);\r\n\t\t\t},\r\n\t\t\tscaleX() {\r\n\t\t\t\t//缩小\r\n\t\t\t\tlet min = 1.0;\r\n\t\t\t\tif (this.pdf_scale <= min) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tthis.pdf_scale = this.pdf_scale - 0.1;\r\n\t\t\t\tthis._loadFile(this.pdf_data);\r\n\t\t\t},\r\n\t\t\t// 加载wasm\r\n\t\t\twaitWasm() {\r\n\t\t\t\tif (parseInt(this.is_encrypt || 0) === 1) {\r\n\t\t\t\t\tconst go = new Go();\r\n\t\t\t\t\tconst that = this;\r\n\t\t\t\t\tWebAssembly.instantiateStreaming(\r\n\t\t\t\t\t\t\t// fetch(\"wasm/libgetpdf.wasm\"),\r\n\t\t\t\t\t\t\t// fetch('https://gaoyixia.oss-cn-hangzhou.aliyuncs.com/wenjian/libgetpdf.wasm'),\r\n\t\t\t\t\t\t\tfetch('https://gaoyixia.oss-cn-hangzhou.aliyuncs.com/libgetpdf.wasm'),\r\n\r\n\t\t\t\t\t\t\tgo.importObject\r\n\t\t\t\t\t).then((result) => {\r\n\t\t\t\t\t\tgo.run(result.instance);\r\n\t\t\t\t\t\tconsole.log(GetVersion());\r\n\r\n\t\t\t\t\t\tthis.currentRate = 30;\r\n\t\t\t\t\t\tReadPdf(this.path).then((pd) => {\r\n\t\t\t\t\t\t\tthat.readPdfData(pd);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconst path = this.path.indexOf('http') > -1 ? this.path : OSS_URL + this.path;\r\n\t\t\t\t\tthis.readPdfData(path);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\treadPdfData(pdf_data) {\r\n\t\t\t\tthis.pdf_data = pdf_data;\r\n\t\t\t\tthis._loadFile(this.pdf_data);\r\n\t\t\t},\r\n\r\n\t\t\t_loadFile(pdf_data) {\r\n\t\t\t\t//初始化pdf\r\n\t\t\t\tlet loadingTask;\r\n\t\t\t\tif (parseInt(this.is_encrypt || 0) === 1) {\r\n\t\t\t\t\tloadingTask = PDFJS.getDocument({\r\n\t\t\t\t\t\tdata: pdf_data\r\n\t\t\t\t\t})\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// 未加密\r\n\t\t\t\t\tloadingTask = PDFJS.getDocument(pdf_data);\r\n\t\t\t\t}\r\n\t\t\t\tloadingTask.promise.then((pdf) => {\r\n\t\t\t\t\tthis.pdfDoc = pdf;\r\n\t\t\t\t\tthis.pdf_pages = this.pdfDoc.numPages;\r\n\t\t\t\t\tpdf.getOutline().then((r) => {\r\n\t\t\t\t\t\tconsole.log(\"dddd\");\r\n\t\t\t\t\t\tconsole.log(r);\r\n\t\t\t\t\t\tthis.gData = r;\r\n\t\t\t\t\t\tif (r != null) {\r\n\t\t\t\t\t\t\tconsole.log(\"888888\");\r\n\t\t\t\t\t\t\tr.forEach((it) => {\r\n\t\t\t\t\t\t\t\tconsole.log(it);\r\n\r\n\t\t\t\t\t\t\t\tpdf.getPageIndex({\r\n\t\t\t\t\t\t\t\t\tref: it.dest[0]\r\n\t\t\t\t\t\t\t\t}).then((vvv) => {\r\n\t\t\t\t\t\t\t\t\tconsole.log(vvv);\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t// $(\"#div\").html(it.title)\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t//debugger\r\n\t\t\t\t\tthis.$nextTick(() => {\r\n\t\t\t\t\t\tthis.currentRate = 50;\r\n\t\t\t\t\t\tthis._renderPage(1);\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t\t_renderPage(num) {\r\n\t\t\t\t//渲染pdf页\r\n\t\t\t\tconst that = this;\r\n\t\t\t\tthis.pdfDoc.getPage(num).then((page) => {\r\n\t\t\t\t\tthat.pageArr.push(page.ref);\r\n\t\t\t\t\tlet canvas = document.getElementById(\"the_canvas\" + num);\r\n\t\t\t\t\tlet ctx = canvas.getContext(\"2d\");\r\n\t\t\t\t\tlet dpr = window.devicePixelRatio || 1;\r\n\t\t\t\t\tlet bsr =\r\n\t\t\t\t\t\tctx.webkitBackingStorePixelRatio ||\r\n\t\t\t\t\t\tctx.mozBackingStorePixelRatio ||\r\n\t\t\t\t\t\tctx.msBackingStorePixelRatio ||\r\n\t\t\t\t\t\tctx.oBackingStorePixelRatio ||\r\n\t\t\t\t\t\tctx.backingStorePixelRatio ||\r\n\t\t\t\t\t\t1;\r\n\t\t\t\t\tlet ratio = dpr / bsr;\r\n\t\t\t\t\tlet viewport = page.getViewport({\r\n\t\t\t\t\t\tscale: this.pdf_scale\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tcanvas.width = viewport.width * ratio;\r\n\t\t\t\t\tcanvas.height = viewport.height * ratio;\r\n\r\n\t\t\t\t\t// canvas.style.width = viewport.width + \"px\";\r\n\r\n\t\t\t\t\t// that.pdf_div_width = viewport.width + \"px\";\r\n\r\n\t\t\t\t\t// canvas.style.height = viewport.height + \"px\";\r\n\r\n\t\t\t\t\tcanvas.style.width = '100%';\r\n\t\t\t\t\tcanvas.style.maxWidth = viewport.width + 'px';\r\n this.maxWidth = viewport.width;\r\n\r\n\t\t\t\t\tthat.pdf_div_width = '100%';\r\n\r\n\t\t\t\t\tctx.setTransform(ratio, 0, 0, ratio, 0, 0);\r\n\t\t\t\t\tlet renderContext = {\r\n\t\t\t\t\t\tcanvasContext: ctx,\r\n\t\t\t\t\t\tviewport: viewport,\r\n\t\t\t\t\t};\r\n\t\t\t\t\tpage.render(renderContext).promise.then(() => {\r\n\t\t\t\t\t\t// 添加水印\r\n\t\t\t\t\t\t// ctx.rotate(-20 * Math.PI / 180); // 逆时针旋转π/9\r\n\t\t\t\t\t\t// ctx.font = `${20 * ratio}px Vedana`; // 设置字体\r\n\t\t\t\t\t\t// ctx.fillStyle = 'rgba(0, 0, 0, 0.20)'; // 设置字体的颜色\r\n\t\t\t\t\t\t// ctx.textAlign = 'center'; // 文本对齐方式\r\n\t\t\t\t\t\t// ctx.textBaseline = 'Middle'; // 文本基线\r\n\t\t\t\t\t\t// ctx.fillText(\r\n // `${this.watermarkText || this.userInfo.phone || '搞一下'}`,\r\n // 60 * ratio,\r\n // viewport.height * ratio / 3\r\n // ); // 绘制文字\r\n\t\t\t\t\t\t// 绘制加载进度\r\n\t\t\t\t\t\tthis.loadingEndSize += 1;\r\n\t\t\t\t\t\tthis.currentRate = 50 + parseFloat((this.loadingEndSize / this.pdf_pages * 30)\r\n\t\t\t\t\t\t\t.toFixed(0));\r\n\t\t\t\t\t\t// console.log(this.loadingEndSize, this.pdf_pages, this.currentRate, new Date().getTime())\r\n\t\t\t\t\t\tif (this.loadingEndSize === this.pdf_pages) {\r\n\t\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\t\tthis.loading = false;\r\n try {\r\n if (this.platform === 'ios') {\r\n loadFinished();\r\n }\r\n } catch (e) {\r\n console.error(e)\r\n }\r\n try {\r\n if (this.platform === 'ios') {\r\n window.webkit.messageHandlers.loadFinished.postMessage('h5_pdf_view');\r\n }\r\n } catch (e) {\r\n console.error(e)\r\n }\r\n\t\t\t\t\t\t\t}, 300);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (this.pdf_pages > num) {\r\n\t\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\t\tthis._renderPage(num + 1);\r\n\t\t\t\t\t\t\t}, 10);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t},\r\n\t};\r\n</script>\r\n<style scoped>\r\n\t.home_wrap {\r\n\t\twidth: 100%;\r\n min-height: 50vh;\r\n position: relative;\r\n\t}\r\n\r\n\t.home_wrap .show-catalogue {\r\n\t\tposition: fixed !important;\r\n\t\tright: 0 !important;\r\n\t\ttop: 20% !important;\r\n\t\tz-index: 99999999 !important;\r\n\r\n\t\theight: 20px;\r\n\t\tfont-size: 14px;\r\n\t\tcolor: #FFFFFF;\r\n\t\tbackground: rgba(0, 0, 0, .5);\r\n\t\tdisplay: flex;\r\n\t\talign-items: center;\r\n\t\tpadding: 5px 10px;\r\n\t}\r\n\r\n\t.home_wrap .pdf_down {\r\n\t\tposition: absolute;\r\n\t\tdisplay: flex;\r\n\t\tz-index: 20;\r\n\t\tright: 26px;\r\n\t\tbottom: 7%;\r\n\t}\r\n\r\n\t.home_wrap .pdf_down .pdf_set_left {\r\n\t\twidth: 30px;\r\n\t\theight: 40px;\r\n\t\tcolor: #408fff;\r\n\t\tfont-size: 11px;\r\n\t\tpadding-top: 25px;\r\n\t\ttext-align: center;\r\n\t\tmargin-right: 5px;\r\n\t\tcursor: pointer;\r\n\t}\r\n\r\n\t.home_wrap .pdf_down .pdf_set_middle {\r\n\t\twidth: 30px;\r\n\t\theight: 40px;\r\n\t\tcolor: #408fff;\r\n\t\tfont-size: 11px;\r\n\t\tpadding-top: 25px;\r\n\t\ttext-align: center;\r\n\t\tmargin-right: 5px;\r\n\t\tcursor: pointer;\r\n\t}\r\n\r\n\t.position-phone {\r\n\t\tdisplay: flex;\r\n\t\talign-items: center;\r\n\t\tposition: fixed;\r\n\t\ttop: 50%;\r\n\t\tleft: 66.666666%;\r\n\t\tcolor: #FFFFFF;\r\n\t\tbackground: rgba(0, 0, 0, 0.5);\r\n\t\tborder-radius: 2.5vw;\r\n\t\theight: 5vw;\r\n\t\tpadding: 0 2vw;\r\n\t\topacity: 0.8;\r\n\t\tfont-size: 2.5vw;\r\n\t}\r\n\r\n\t#scrollBox {\r\n\t\tdisplay: flex;\r\n\t\tflex-direction: column;\r\n\t\talign-items: center;\r\n\t}\r\n\r\n\t.loading {\r\n\t\twidth: 100%;\r\n\t\theight: 100%;\r\n\t\tbackground: #FFFFFF;\r\n\t\tposition: absolute;\r\n\t\ttop: 0;\r\n\t\tleft: 0;\r\n\t\tz-index: 99;\r\n\t\tdisplay: flex;\r\n\t\tflex-direction: column;\r\n\t\tjustify-content: center;\r\n\t\talign-items: center;\r\n\t}\r\n\r\n\t.loading-hide {\r\n\t\tposition: fixed;\r\n\t\tleft: 200vw;\r\n\t\ttop: 200vh;\r\n\t\topacity: 0;\r\n\t}\r\n\r\n\t.catalogue-btn {\r\n\t\tcolor: #FFFFFF;\r\n\t\tfont-size: 13px;\r\n\t\tfont-weight: bold;\r\n\t\twidth: 72px;\r\n\t\theight: 28px;\r\n\t\tbackground-color: #2A63F3;\r\n\t\tborder-radius: 40px;\r\n\t\tdisplay: flex;\r\n\t\tjustify-content: center;\r\n\t\talign-items: center;\r\n\t\tposition: fixed;\r\n\t\ttop: 70%;\r\n\t\tleft: 12px;\r\n\t\tz-index: 999;\r\n\t}\r\n\r\n\t.catalogue-btn>img {\r\n\t\twidth: 14px;\r\n\t\tmargin-right: 3px;\r\n\t}\r\n\r\n .canvas-box {\r\n position: relative;\r\n }\r\n .ws {\r\n width: max-content;\r\n transform: translateX(-50%) rotateZ(315deg);\r\n color: rgba(0, 0, 0, 0.20);\r\n font-weight: bold;\r\n pointer-events: none;\r\n position: absolute;\r\n z-index: 9;\r\n top: 50%;\r\n left: 50%;\r\n }\r\n\r\n /*const fontSize = parseInt(canvasWrapper.style.width) / 12;*/\r\n /*var cover = document.createElement('div');*/\r\n /*cover.className = \"cover\";*/\r\n /*cover.style.height = fontSize + 'px';*/\r\n /*cover.style.lineHeight = fontSize + 'px';*/\r\n /*cover.style.position = 'absolute';*/\r\n /*cover.style.left = '50%';*/\r\n /*cover.style.top = `calc(50% - ${fontSize}px)`;*/\r\n /*cover.style.display = 'flex';*/\r\n /*cover.style.alignItems = 'center';*/\r\n /*cover.style.justifyContent = 'center';*/\r\n /*cover.style.transform = 'translateX(-50%)';*/\r\n /*cover.style.pointerEvents = 'none' // 取消所有事件*/\r\n /* let c = document.createElement('div')*/\r\n /*c.className = \"cover\"*/\r\n /*c.style.width = 'max-content';*/\r\n /*c.style.fontSize = fontSize + 'px';*/\r\n /*c.style.transform = \"rotateZ(315deg)\";*/\r\n /*c.style.color = \"rgba(0, 0, 0, 0.20)\";*/\r\n /*c.style.fontWeight = 'bold';*/\r\n /*c.innerText = watermarkText;*/\r\n /*c.style.pointerEvents = 'none' // 取消所有事件*/\r\n /* cover.appendChild(c);*/\r\n /*if (this.annotationLayer?.div) {*/\r\n /* div.insertBefore(textLayerDiv, this.annotationLayer.div);*/\r\n /* div.appendChild(cover);*/\r\n /*} else {*/\r\n /* div.appendChild(textLayerDiv);*/\r\n /* div.appendChild(cover);*/\r\n /* }*/\r\n</style>\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pdf-view.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pdf-view.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./pdf-view.vue?vue&type=template&id=6a5ecb68&scoped=true&\"\nimport script from \"./pdf-view.vue?vue&type=script&lang=js&\"\nexport * from \"./pdf-view.vue?vue&type=script&lang=js&\"\nimport style0 from \"./pdf-view.vue?vue&type=style&index=0&id=6a5ecb68&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6a5ecb68\",\n null\n \n)\n\nexport default component.exports","'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","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\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","// 26.1.13 Reflect.set(target, propertyKey, V [, receiver])\nvar dP = require('./_object-dp');\nvar gOPD = require('./_object-gopd');\nvar getPrototypeOf = require('./_object-gpo');\nvar has = require('./_has');\nvar $export = require('./_export');\nvar createDesc = require('./_property-desc');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\n\nfunction set(target, propertyKey, V /* , receiver */) {\n var receiver = arguments.length < 4 ? target : arguments[3];\n var ownDesc = gOPD.f(anObject(target), propertyKey);\n var existingDescriptor, proto;\n if (!ownDesc) {\n if (isObject(proto = getPrototypeOf(target))) {\n return set(proto, propertyKey, V, receiver);\n }\n ownDesc = createDesc(0);\n }\n if (has(ownDesc, 'value')) {\n if (ownDesc.writable === false || !isObject(receiver)) return false;\n if (existingDescriptor = gOPD.f(receiver, propertyKey)) {\n if (existingDescriptor.get || existingDescriptor.set || existingDescriptor.writable === false) return false;\n existingDescriptor.value = V;\n dP.f(receiver, propertyKey, existingDescriptor);\n } else dP.f(receiver, propertyKey, createDesc(0, V));\n return true;\n }\n return ownDesc.set === undefined ? false : (ownDesc.set.call(receiver, V), true);\n}\n\n$export($export.S, 'Reflect', { set: set });\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}();","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; };\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n defineProperty(generator, \"_invoke\", { value: makeInvokeMethod(innerFn, self, context) });\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n defineProperty(Gp, \"constructor\", { value: GeneratorFunctionPrototype, configurable: true });\n defineProperty(\n GeneratorFunctionPrototype,\n \"constructor\",\n { value: GeneratorFunction, configurable: true }\n );\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n defineProperty(this, \"_invoke\", { value: enqueue });\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method;\n var method = delegate.iterator[methodName];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method, or a missing .next mehtod, always terminate the\n // yield* loop.\n context.delegate = null;\n\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (methodName === \"throw\" && delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n if (methodName !== \"return\") {\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a '\" + methodName + \"' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(val) {\n var object = Object(val);\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\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 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","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/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\nmodule.exports = Readable;\n\n/*<replacement>*/\nvar isArray = require('isarray');\n/*</replacement>*/\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n\n/*<replacement>*/\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function (emitter, type) {\n return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n/*<replacement>*/\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/*</replacement>*/\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\n/*<replacement>*/\nvar debugUtil = require('util');\nvar debug = void 0;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function () {};\n}\n/*</replacement>*/\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","// 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/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\n/*<replacement>*/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n keys.push(key);\n }return keys;\n};\n/*</replacement>*/\n\nmodule.exports = Duplex;\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\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};","var isObject = require('./_is-object');\nmodule.exports = function (it, TYPE) {\n if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n return it;\n};\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};","// 26.1.4 Reflect.deleteProperty(target, propertyKey)\nvar $export = require('./_export');\nvar gOPD = require('./_object-gopd').f;\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n deleteProperty: function deleteProperty(target, propertyKey) {\n var desc = gOPD(anObject(target), propertyKey);\n return desc && !desc.configurable ? false : delete target[propertyKey];\n }\n});\n","// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\n\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var to = toAbsoluteIndex(target, len);\n var from = toAbsoluteIndex(start, len);\n var end = arguments.length > 2 ? arguments[2] : undefined;\n var count = Math.min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n var inc = 1;\n if (from < to && to < from + count) {\n inc = -1;\n from += count - 1;\n to += count - 1;\n }\n while (count-- > 0) {\n if (from in O) O[to] = O[from];\n else delete O[to];\n to += inc;\n from += inc;\n } return O;\n};\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 '<Key priv: ' + (this.priv && this.priv.toString(16, 2)) +\n ' pub: ' + (this.pub && this.pub.inspect()) + ' >';\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 ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\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","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\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","'use strict';\nvar dP = require('./_object-dp').f;\nvar create = require('./_object-create');\nvar redefineAll = require('./_redefine-all');\nvar ctx = require('./_ctx');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar $iterDefine = require('./_iter-define');\nvar step = require('./_iter-step');\nvar setSpecies = require('./_set-species');\nvar DESCRIPTORS = require('./_descriptors');\nvar fastKey = require('./_meta').fastKey;\nvar validate = require('./_validate-collection');\nvar SIZE = DESCRIPTORS ? '_s' : 'size';\n\nvar getEntry = function (that, key) {\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return that._i[index];\n // frozen object case\n for (entry = that._f; entry; entry = entry.n) {\n if (entry.k == key) return entry;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = create(null); // index\n that._f = undefined; // first entry\n that._l = undefined; // last entry\n that[SIZE] = 0; // size\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {\n entry.r = true;\n if (entry.p) entry.p = entry.p.n = undefined;\n delete data[entry.i];\n }\n that._f = that._l = undefined;\n that[SIZE] = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = validate(this, NAME);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.n;\n var prev = entry.p;\n delete that._i[entry.i];\n entry.r = true;\n if (prev) prev.n = next;\n if (next) next.p = prev;\n if (that._f == entry) that._f = next;\n if (that._l == entry) that._l = prev;\n that[SIZE]--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n validate(this, NAME);\n var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.n : this._f) {\n f(entry.v, entry.k, this);\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(validate(this, NAME), key);\n }\n });\n if (DESCRIPTORS) dP(C.prototype, 'size', {\n get: function () {\n return validate(this, NAME)[SIZE];\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var entry = getEntry(that, key);\n var prev, index;\n // change existing entry\n if (entry) {\n entry.v = value;\n // create new entry\n } else {\n that._l = entry = {\n i: index = fastKey(key, true), // <- index\n k: key, // <- key\n v: value, // <- value\n p: prev = that._l, // <- previous entry\n n: undefined, // <- next entry\n r: false // <- removed\n };\n if (!that._f) that._f = entry;\n if (prev) prev.n = entry;\n that[SIZE]++;\n // add to index\n if (index !== 'F') that._i[index] = entry;\n } return that;\n },\n getEntry: getEntry,\n setStrong: function (C, NAME, IS_MAP) {\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n $iterDefine(C, NAME, function (iterated, kind) {\n this._t = validate(iterated, NAME); // target\n this._k = kind; // kind\n this._l = undefined; // previous\n }, function () {\n var that = this;\n var kind = that._k;\n var entry = that._l;\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n // get next entry\n if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {\n // or finish the iteration\n that._t = undefined;\n return step(1);\n }\n // return step by kind\n if (kind == 'keys') return step(0, entry.k);\n if (kind == 'values') return step(0, entry.v);\n return step(0, [entry.k, entry.v]);\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(NAME);\n }\n};\n","module.exports = require('./readable').PassThrough\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","/* eslint-disable node/no-deprecated-api */\n\n'use strict'\n\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\nvar safer = {}\n\nvar key\n\nfor (key in buffer) {\n if (!buffer.hasOwnProperty(key)) continue\n if (key === 'SlowBuffer' || key === 'Buffer') continue\n safer[key] = buffer[key]\n}\n\nvar Safer = safer.Buffer = {}\nfor (key in Buffer) {\n if (!Buffer.hasOwnProperty(key)) continue\n if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue\n Safer[key] = Buffer[key]\n}\n\nsafer.Buffer.prototype = Buffer.prototype\n\nif (!Safer.from || Safer.from === Uint8Array.from) {\n Safer.from = function (value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('The \"value\" argument must not be of type number. Received type ' + typeof value)\n }\n if (value && typeof value.length === 'undefined') {\n throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value)\n }\n return Buffer(value, encodingOrOffset, length)\n }\n}\n\nif (!Safer.alloc) {\n Safer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('The \"size\" argument must be of type number. Received type ' + typeof size)\n }\n if (size < 0 || size >= 2 * (1 << 30)) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n var buf = Buffer(size)\n if (!fill || fill.length === 0) {\n buf.fill(0)\n } else if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n return buf\n }\n}\n\nif (!safer.kStringMaxLength) {\n try {\n safer.kStringMaxLength = process.binding('buffer').kStringMaxLength\n } catch (e) {\n // we can't determine kStringMaxLength in environments where process.binding\n // is unsupported, so let's not set it\n }\n}\n\nif (!safer.constants) {\n safer.constants = {\n MAX_LENGTH: safer.kMaxLength\n }\n if (safer.kStringMaxLength) {\n safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength\n }\n}\n\nmodule.exports = safer\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/*<replacement>*/\n\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n/*<replacement>*/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\n\n\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\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/*<replacement>*/\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/*</replacement>*/\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}","'use strict';\n\nconst inherits = require('inherits');\n\nconst bignum = require('bn.js');\nconst DecoderBuffer = require('../base/buffer').DecoderBuffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DERDecoder(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 = DERDecoder;\n\nDERDecoder.prototype.decode = function decode(data, options) {\n if (!DecoderBuffer.isDecoderBuffer(data)) {\n data = new DecoderBuffer(data, options);\n }\n\n return this.tree._decode(data, options);\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._peekTag = function peekTag(buffer, tag, any) {\n if (buffer.isEmpty())\n return false;\n\n const state = buffer.save();\n const decodedTag = derDecodeTag(buffer, 'Failed to peek tag: \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n buffer.restore(state);\n\n return decodedTag.tag === tag || decodedTag.tagStr === tag ||\n (decodedTag.tagStr + 'of') === tag || any;\n};\n\nDERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) {\n const decodedTag = derDecodeTag(buffer,\n 'Failed to decode tag of \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n let len = derDecodeLen(buffer,\n decodedTag.primitive,\n 'Failed to get length of \"' + tag + '\"');\n\n // Failure\n if (buffer.isError(len))\n return len;\n\n if (!any &&\n decodedTag.tag !== tag &&\n decodedTag.tagStr !== tag &&\n decodedTag.tagStr + 'of' !== tag) {\n return buffer.error('Failed to match tag: \"' + tag + '\"');\n }\n\n if (decodedTag.primitive || len !== null)\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n\n // Indefinite length... find END tag\n const state = buffer.save();\n const res = this._skipUntilEnd(\n buffer,\n 'Failed to skip indefinite length body: \"' + this.tag + '\"');\n if (buffer.isError(res))\n return res;\n\n len = buffer.offset - state.offset;\n buffer.restore(state);\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n};\n\nDERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) {\n for (;;) {\n const tag = derDecodeTag(buffer, fail);\n if (buffer.isError(tag))\n return tag;\n const len = derDecodeLen(buffer, tag.primitive, fail);\n if (buffer.isError(len))\n return len;\n\n let res;\n if (tag.primitive || len !== null)\n res = buffer.skip(len);\n else\n res = this._skipUntilEnd(buffer, fail);\n\n // Failure\n if (buffer.isError(res))\n return res;\n\n if (tag.tagStr === 'end')\n break;\n }\n};\n\nDERNode.prototype._decodeList = function decodeList(buffer, tag, decoder,\n options) {\n const result = [];\n while (!buffer.isEmpty()) {\n const possibleEnd = this._peekTag(buffer, 'end');\n if (buffer.isError(possibleEnd))\n return possibleEnd;\n\n const res = decoder.decode(buffer, 'der', options);\n if (buffer.isError(res) && possibleEnd)\n break;\n result.push(res);\n }\n return result;\n};\n\nDERNode.prototype._decodeStr = function decodeStr(buffer, tag) {\n if (tag === 'bitstr') {\n const unused = buffer.readUInt8();\n if (buffer.isError(unused))\n return unused;\n return { unused: unused, data: buffer.raw() };\n } else if (tag === 'bmpstr') {\n const raw = buffer.raw();\n if (raw.length % 2 === 1)\n return buffer.error('Decoding of string type: bmpstr length mismatch');\n\n let str = '';\n for (let i = 0; i < raw.length / 2; i++) {\n str += String.fromCharCode(raw.readUInt16BE(i * 2));\n }\n return str;\n } else if (tag === 'numstr') {\n const numstr = buffer.raw().toString('ascii');\n if (!this._isNumstr(numstr)) {\n return buffer.error('Decoding of string type: ' +\n 'numstr unsupported characters');\n }\n return numstr;\n } else if (tag === 'octstr') {\n return buffer.raw();\n } else if (tag === 'objDesc') {\n return buffer.raw();\n } else if (tag === 'printstr') {\n const printstr = buffer.raw().toString('ascii');\n if (!this._isPrintstr(printstr)) {\n return buffer.error('Decoding of string type: ' +\n 'printstr unsupported characters');\n }\n return printstr;\n } else if (/str$/.test(tag)) {\n return buffer.raw().toString();\n } else {\n return buffer.error('Decoding of string type: ' + tag + ' unsupported');\n }\n};\n\nDERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) {\n let result;\n const identifiers = [];\n let ident = 0;\n let subident = 0;\n while (!buffer.isEmpty()) {\n subident = buffer.readUInt8();\n ident <<= 7;\n ident |= subident & 0x7f;\n if ((subident & 0x80) === 0) {\n identifiers.push(ident);\n ident = 0;\n }\n }\n if (subident & 0x80)\n identifiers.push(ident);\n\n const first = (identifiers[0] / 40) | 0;\n const second = identifiers[0] % 40;\n\n if (relative)\n result = identifiers;\n else\n result = [first, second].concat(identifiers.slice(1));\n\n if (values) {\n let tmp = values[result.join(' ')];\n if (tmp === undefined)\n tmp = values[result.join('.')];\n if (tmp !== undefined)\n result = tmp;\n }\n\n return result;\n};\n\nDERNode.prototype._decodeTime = function decodeTime(buffer, tag) {\n const str = buffer.raw().toString();\n\n let year;\n let mon;\n let day;\n let hour;\n let min;\n let sec;\n if (tag === 'gentime') {\n year = str.slice(0, 4) | 0;\n mon = str.slice(4, 6) | 0;\n day = str.slice(6, 8) | 0;\n hour = str.slice(8, 10) | 0;\n min = str.slice(10, 12) | 0;\n sec = str.slice(12, 14) | 0;\n } else if (tag === 'utctime') {\n year = str.slice(0, 2) | 0;\n mon = str.slice(2, 4) | 0;\n day = str.slice(4, 6) | 0;\n hour = str.slice(6, 8) | 0;\n min = str.slice(8, 10) | 0;\n sec = str.slice(10, 12) | 0;\n if (year < 70)\n year = 2000 + year;\n else\n year = 1900 + year;\n } else {\n return buffer.error('Decoding ' + tag + ' time is not supported yet');\n }\n\n return Date.UTC(year, mon - 1, day, hour, min, sec, 0);\n};\n\nDERNode.prototype._decodeNull = function decodeNull() {\n return null;\n};\n\nDERNode.prototype._decodeBool = function decodeBool(buffer) {\n const res = buffer.readUInt8();\n if (buffer.isError(res))\n return res;\n else\n return res !== 0;\n};\n\nDERNode.prototype._decodeInt = function decodeInt(buffer, values) {\n // Bigint, return as it is (assume big endian)\n const raw = buffer.raw();\n let res = new bignum(raw);\n\n if (values)\n res = values[res.toString(10)] || res;\n\n return res;\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getDecoder('der').tree;\n};\n\n// Utility methods\n\nfunction derDecodeTag(buf, fail) {\n let tag = buf.readUInt8(fail);\n if (buf.isError(tag))\n return tag;\n\n const cls = der.tagClass[tag >> 6];\n const primitive = (tag & 0x20) === 0;\n\n // Multi-octet tag - load\n if ((tag & 0x1f) === 0x1f) {\n let oct = tag;\n tag = 0;\n while ((oct & 0x80) === 0x80) {\n oct = buf.readUInt8(fail);\n if (buf.isError(oct))\n return oct;\n\n tag <<= 7;\n tag |= oct & 0x7f;\n }\n } else {\n tag &= 0x1f;\n }\n const tagStr = der.tag[tag];\n\n return {\n cls: cls,\n primitive: primitive,\n tag: tag,\n tagStr: tagStr\n };\n}\n\nfunction derDecodeLen(buf, primitive, fail) {\n let len = buf.readUInt8(fail);\n if (buf.isError(len))\n return len;\n\n // Indefinite form\n if (!primitive && len === 0x80)\n return null;\n\n // Definite form\n if ((len & 0x80) === 0) {\n // Short form\n return len;\n }\n\n // Long form\n const num = len & 0x7f;\n if (num > 4)\n return buf.error('length octect is too long');\n\n len = 0;\n for (let i = 0; i < num; i++) {\n len <<= 8;\n const j = buf.readUInt8(fail);\n if (buf.isError(j))\n return j;\n len |= j;\n }\n\n return len;\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 ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\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\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","module.exports = require('./readable').Transform\n","// 26.1.6 Reflect.get(target, propertyKey [, receiver])\nvar gOPD = require('./_object-gopd');\nvar getPrototypeOf = require('./_object-gpo');\nvar has = require('./_has');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\n\nfunction get(target, propertyKey /* , receiver */) {\n var receiver = arguments.length < 3 ? target : arguments[2];\n var desc, proto;\n if (anObject(target) === receiver) return target[propertyKey];\n if (desc = gOPD.f(target, propertyKey)) return has(desc, 'value')\n ? desc.value\n : desc.get !== undefined\n ? desc.get.call(receiver)\n : undefined;\n if (isObject(proto = getPrototypeOf(target))) return get(proto, propertyKey, receiver);\n}\n\n$export($export.S, 'Reflect', { get: get });\n","'use strict';\n\nconst inherits = require('inherits');\n\nfunction Reporter(options) {\n this._reporterState = {\n obj: null,\n path: [],\n options: options || {},\n errors: []\n };\n}\nexports.Reporter = Reporter;\n\nReporter.prototype.isError = function isError(obj) {\n return obj instanceof ReporterError;\n};\n\nReporter.prototype.save = function save() {\n const state = this._reporterState;\n\n return { obj: state.obj, pathLen: state.path.length };\n};\n\nReporter.prototype.restore = function restore(data) {\n const state = this._reporterState;\n\n state.obj = data.obj;\n state.path = state.path.slice(0, data.pathLen);\n};\n\nReporter.prototype.enterKey = function enterKey(key) {\n return this._reporterState.path.push(key);\n};\n\nReporter.prototype.exitKey = function exitKey(index) {\n const state = this._reporterState;\n\n state.path = state.path.slice(0, index - 1);\n};\n\nReporter.prototype.leaveKey = function leaveKey(index, key, value) {\n const state = this._reporterState;\n\n this.exitKey(index);\n if (state.obj !== null)\n state.obj[key] = value;\n};\n\nReporter.prototype.path = function path() {\n return this._reporterState.path.join('/');\n};\n\nReporter.prototype.enterObject = function enterObject() {\n const state = this._reporterState;\n\n const prev = state.obj;\n state.obj = {};\n return prev;\n};\n\nReporter.prototype.leaveObject = function leaveObject(prev) {\n const state = this._reporterState;\n\n const now = state.obj;\n state.obj = prev;\n return now;\n};\n\nReporter.prototype.error = function error(msg) {\n let err;\n const state = this._reporterState;\n\n const inherited = msg instanceof ReporterError;\n if (inherited) {\n err = msg;\n } else {\n err = new ReporterError(state.path.map(function(elem) {\n return '[' + JSON.stringify(elem) + ']';\n }).join(''), msg.message || msg, msg.stack);\n }\n\n if (!state.options.partial)\n throw err;\n\n if (!inherited)\n state.errors.push(err);\n\n return err;\n};\n\nReporter.prototype.wrapResult = function wrapResult(result) {\n const state = this._reporterState;\n if (!state.options.partial)\n return result;\n\n return {\n result: this.isError(result) ? null : result,\n errors: state.errors\n };\n};\n\nfunction ReporterError(path, msg) {\n this.path = path;\n this.rethrow(msg);\n}\ninherits(ReporterError, Error);\n\nReporterError.prototype.rethrow = function rethrow(msg) {\n this.message = msg + ' at: ' + (this.path || '(shallow)');\n if (Error.captureStackTrace)\n Error.captureStackTrace(this, ReporterError);\n\n if (!this.stack) {\n try {\n // IE only adds stack when thrown\n throw new Error(this.message);\n } catch (e) {\n this.stack = e.stack;\n }\n }\n return this;\n};\n","'use strict'\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar Base = require('cipher-base')\n\nvar ZEROS = Buffer.alloc(128)\nvar blocksize = 64\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n this._alg = alg\n this._key = key\n\n if (key.length > blocksize) {\n key = alg(key)\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\n this._hash = [ipad]\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.push(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._alg(Buffer.concat(this._hash))\n return this._alg(Buffer.concat([this._opad, h]))\n}\nmodule.exports = Hmac\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\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/readable.js');\nStream.Writable = require('readable-stream/writable.js');\nStream.Duplex = require('readable-stream/duplex.js');\nStream.Transform = require('readable-stream/transform.js');\nStream.PassThrough = require('readable-stream/passthrough.js');\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n dest.end();\n }\n\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (EE.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n\n dest.removeListener('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n\n dest.on('close', cleanup);\n\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n};\n","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pdf-catalogue.vue?vue&type=style&index=0&id=6757c916&prod&scoped=true&lang=css&\"","// 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 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\n'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\nmodule.exports = Writable;\n\n/* <replacement> */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* </replacement> */\n\n/*<replacement>*/\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;\n/*</replacement>*/\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\n/*<replacement>*/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n/*<replacement>*/\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/*</replacement>*/\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(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 to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // 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 var hwm = options.highWaterMark;\n var writableHwm = options.writableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // 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 var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\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 // 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 this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // 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 this.sync = true;\n\n // 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 this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function () {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\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 (object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function (object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // 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\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 if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n return new Writable(options);\n }\n\n this._writableState = new WritableState(options, this);\n\n // legacy.\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n\n if (typeof options.writev === 'function') this._writev = options.writev;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new Error('write after end');\n // TODO: defer error events consistently everywhere, not just the cb\n stream.emit('error', er);\n pna.nextTick(cb, er);\n}\n\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.\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n var er = false;\n\n if (chunk === null) {\n er = new TypeError('May not write null values to stream');\n } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n if (er) {\n stream.emit('error', er);\n pna.nextTick(cb, er);\n valid = false;\n }\n return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\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\n if (typeof cb !== 'function') cb = nop;\n\n if (state.ended) 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\n return ret;\n};\n\nWritable.prototype.cork = function () {\n var state = this._writableState;\n\n state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n\n if (!state.writing && !state.corked && !state.finished && !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 TypeError('Unknown encoding: ' + encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\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 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 () {\n return this._writableState.highWaterMark;\n }\n});\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.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n\n state.length += len;\n\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\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 if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\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 (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 pna.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n pna.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n stream.emit('error', 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 stream.emit('error', er);\n // this can emit finish, but finish must\n // always follow error\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\n onwriteStateUpdate(state);\n\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);\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n /*<replacement>*/\n asyncWrite(afterWrite, stream, state, finished, cb);\n /*</replacement>*/\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}\n\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.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\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\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\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\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // 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 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 Error('_write() is not implemented'));\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);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending && !state.finished) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n stream.emit('error', err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function') {\n state.pendingcb++;\n state.finalCalled = true;\n pna.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 if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n }\n }\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);\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 while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n if (state.corkedRequestsFree) {\n state.corkedRequestsFree.next = corkReq;\n } else {\n state.corkedRequestsFree = corkReq;\n }\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n get: function () {\n if (this._writableState === undefined) {\n return false;\n }\n return 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._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\n\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n this.end();\n cb(err);\n};","'use strict'\r\n\r\nconst watermark = {}\r\n\r\n/**\r\n *\r\n * @param {string} str 要设置的水印的内容\r\n * @param container 需要设置水印的容器\r\n */\r\nconst setWatermark = (str, container) => {\r\n const id = '1.23452384164.123412415'\r\n\r\n if (container === undefined) {\r\n return\r\n }\r\n\r\n // 查看页面上有没有,如果有则删除\r\n if (document.getElementById(id) !== null) {\r\n const childelement = document.getElementById(id)\r\n childelement.parentNode.removeChild(childelement)\r\n }\r\n\r\n var containerWidth = container.offsetWidth // 获取父容器宽\r\n var containerHeight = container.offsetHeight // 获取父容器高\r\n container.style.position = 'relative' // 设置布局为相对布局\r\n\r\n // 创建canvas元素(先制作一块背景图)\r\n const can = document.createElement('canvas')\r\n can.width = 120 // 设置每一块的宽度\r\n can.height = 120 // 高度\r\n const cans = can.getContext('2d') // 获取canvas画布\r\n cans.rotate(-20 * Math.PI / 180) // 逆时针旋转π/9 cans.font = '20px Vedana' // 设置字体\r\n cans.fillStyle = 'rgba(0, 0, 0, 0.20)' // 设置字体的颜色\r\n cans.textAlign = 'left' // 文本对齐方式\r\n cans.textBaseline = 'Middle' // 文本基线\r\n cans.fillText(str, 0, 4 * can.height / 5) // 绘制文字\r\n\r\n // 创建一个div元素\r\n const div = document.createElement('div')\r\n div.id = id // 设置id\r\n div.style.pointerEvents = 'none' // 取消所有事件\r\n div.style.top = '0px'\r\n div.style.left = '0px'\r\n div.style.position = 'absolute'\r\n div.style.zIndex = '100000'\r\n div.style.width = containerWidth + 'px'\r\n div.style.height = containerHeight + 'px'\r\n div.style.background = 'url(' + can.toDataURL('image/png') + ') left top repeat'\r\n container.appendChild(div) // 追加到页面\r\n\r\n return id\r\n}\r\n\r\n// 该方法只允许调用一次\r\nwatermark.set = (str, container) => {\r\n let id = setWatermark(str, container)\r\n setInterval(() => {\r\n if (document.getElementById(id) === null) {\r\n id = setWatermark(str, container)\r\n }\r\n }, 500)\r\n // 监听页面大小的变化\r\n window.onresize = () => {\r\n setWatermark(str, container)\r\n }\r\n}\r\n\r\nexport default watermark","module.exports = function(originalModule) {\n\tif (!originalModule.webpackPolyfill) {\n\t\tvar module = Object.create(originalModule);\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"exports\", {\n\t\t\tenumerable: true\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","// 26.1.1 Reflect.apply(target, thisArgument, argumentsList)\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar rApply = (require('./_global').Reflect || {}).apply;\nvar fApply = Function.apply;\n// MS Edge argumentsList argument is optional\n$export($export.S + $export.F * !require('./_fails')(function () {\n rApply(function () { /* empty */ });\n}), 'Reflect', {\n apply: function apply(target, thisArgument, argumentsList) {\n var T = aFunction(target);\n var L = anObject(argumentsList);\n return rApply ? rApply(T, thisArgument, L) : fApply.call(T, thisArgument, L);\n }\n});\n","var md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar toBuffer = require('./to-buffer')\n\nvar ZEROS = Buffer.alloc(128)\nvar sizes = {\n md5: 16,\n sha1: 20,\n sha224: 28,\n sha256: 32,\n sha384: 48,\n sha512: 64,\n rmd160: 20,\n ripemd160: 20\n}\n\nfunction Hmac (alg, key, saltLen) {\n var hash = getDigest(alg)\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n if (key.length > blocksize) {\n key = hash(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = Buffer.allocUnsafe(blocksize + sizes[alg])\n var opad = Buffer.allocUnsafe(blocksize + sizes[alg])\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4)\n ipad.copy(ipad1, 0, 0, blocksize)\n this.ipad1 = ipad1\n this.ipad2 = ipad\n this.opad = opad\n this.alg = alg\n this.blocksize = blocksize\n this.hash = hash\n this.size = sizes[alg]\n}\n\nHmac.prototype.run = function (data, ipad) {\n data.copy(ipad, this.blocksize)\n var h = this.hash(ipad)\n h.copy(this.opad, this.blocksize)\n return this.hash(this.opad)\n}\n\nfunction getDigest (alg) {\n function shaFunc (data) {\n return sha(alg).update(data).digest()\n }\n function rmd160Func (data) {\n return new RIPEMD160().update(data).digest()\n }\n\n if (alg === 'rmd160' || alg === 'ripemd160') return rmd160Func\n if (alg === 'md5') return md5\n return shaFunc\n}\n\nfunction pbkdf2 (password, salt, iterations, keylen, digest) {\n checkParameters(iterations, keylen)\n password = toBuffer(password, defaultEncoding, 'Password')\n salt = toBuffer(salt, defaultEncoding, 'Salt')\n\n digest = digest || 'sha1'\n\n var hmac = new Hmac(digest, password, salt.length)\n\n var DK = Buffer.allocUnsafe(keylen)\n var block1 = Buffer.allocUnsafe(salt.length + 4)\n salt.copy(block1, 0, 0, salt.length)\n\n var destPos = 0\n var hLen = sizes[digest]\n var l = Math.ceil(keylen / hLen)\n\n for (var i = 1; i <= l; i++) {\n block1.writeUInt32BE(i, salt.length)\n\n var T = hmac.run(block1, hmac.ipad1)\n var U = T\n\n for (var j = 1; j < iterations; j++) {\n U = hmac.run(U, hmac.ipad2)\n for (var k = 0; k < hLen; k++) T[k] ^= U[k]\n }\n\n T.copy(DK, destPos)\n destPos += hLen\n }\n\n return DK\n}\n\nmodule.exports = pbkdf2\n","'use strict';\nvar global = require('./_global');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar redefineAll = require('./_redefine-all');\nvar meta = require('./_meta');\nvar forOf = require('./_for-of');\nvar anInstance = require('./_an-instance');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar $iterDetect = require('./_iter-detect');\nvar setToStringTag = require('./_set-to-string-tag');\nvar inheritIfRequired = require('./_inherit-if-required');\n\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n var Base = global[NAME];\n var C = Base;\n var ADDER = IS_MAP ? 'set' : 'add';\n var proto = C && C.prototype;\n var O = {};\n var fixMethod = function (KEY) {\n var fn = proto[KEY];\n redefine(proto, KEY,\n KEY == 'delete' ? function (a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'has' ? function has(a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'get' ? function get(a) {\n return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; }\n : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; }\n );\n };\n if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n new C().entries().next();\n }))) {\n // create collection constructor\n C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n redefineAll(C.prototype, methods);\n meta.NEED = true;\n } else {\n var instance = new C();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new C();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n if (!ACCEPT_ITERABLES) {\n C = wrapper(function (target, iterable) {\n anInstance(target, C, NAME);\n var that = inheritIfRequired(new Base(), target, C);\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n return that;\n });\n C.prototype = proto;\n proto.constructor = C;\n }\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n // weak collections should not contains .clear method\n if (IS_WEAK && proto.clear) delete proto.clear;\n }\n\n setToStringTag(C, NAME);\n\n O[NAME] = C;\n $export($export.G + $export.W + $export.F * (C != Base), O);\n\n if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n\n return C;\n};\n","var elliptic = require('elliptic')\nvar BN = require('bn.js')\n\nmodule.exports = function createECDH (curve) {\n return new ECDH(curve)\n}\n\nvar aliases = {\n secp256k1: {\n name: 'secp256k1',\n byteLength: 32\n },\n secp224r1: {\n name: 'p224',\n byteLength: 28\n },\n prime256v1: {\n name: 'p256',\n byteLength: 32\n },\n prime192v1: {\n name: 'p192',\n byteLength: 24\n },\n ed25519: {\n name: 'ed25519',\n byteLength: 32\n },\n secp384r1: {\n name: 'p384',\n byteLength: 48\n },\n secp521r1: {\n name: 'p521',\n byteLength: 66\n }\n}\n\naliases.p224 = aliases.secp224r1\naliases.p256 = aliases.secp256r1 = aliases.prime256v1\naliases.p192 = aliases.secp192r1 = aliases.prime192v1\naliases.p384 = aliases.secp384r1\naliases.p521 = aliases.secp521r1\n\nfunction ECDH (curve) {\n this.curveType = aliases[curve]\n if (!this.curveType) {\n this.curveType = {\n name: curve\n }\n }\n this.curve = new elliptic.ec(this.curveType.name) // eslint-disable-line new-cap\n this.keys = void 0\n}\n\nECDH.prototype.generateKeys = function (enc, format) {\n this.keys = this.curve.genKeyPair()\n return this.getPublicKey(enc, format)\n}\n\nECDH.prototype.computeSecret = function (other, inenc, enc) {\n inenc = inenc || 'utf8'\n if (!Buffer.isBuffer(other)) {\n other = new Buffer(other, inenc)\n }\n var otherPub = this.curve.keyFromPublic(other).getPublic()\n var out = otherPub.mul(this.keys.getPrivate()).getX()\n return formatReturnValue(out, enc, this.curveType.byteLength)\n}\n\nECDH.prototype.getPublicKey = function (enc, format) {\n var key = this.keys.getPublic(format === 'compressed', true)\n if (format === 'hybrid') {\n if (key[key.length - 1] % 2) {\n key[0] = 7\n } else {\n key[0] = 6\n }\n }\n return formatReturnValue(key, enc)\n}\n\nECDH.prototype.getPrivateKey = function (enc) {\n return formatReturnValue(this.keys.getPrivate(), enc)\n}\n\nECDH.prototype.setPublicKey = function (pub, enc) {\n enc = enc || 'utf8'\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc)\n }\n this.keys._importPublic(pub)\n return this\n}\n\nECDH.prototype.setPrivateKey = function (priv, enc) {\n enc = enc || 'utf8'\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc)\n }\n\n var _priv = new BN(priv)\n _priv = _priv.toString(16)\n this.keys = this.curve.genKeyPair()\n this.keys._importPrivate(_priv)\n return this\n}\n\nfunction formatReturnValue (bn, enc, len) {\n if (!Array.isArray(bn)) {\n bn = bn.toArray()\n }\n var buf = new Buffer(bn)\n if (len && buf.length < len) {\n var zeros = new Buffer(len - buf.length)\n zeros.fill(0)\n buf = Buffer.concat([zeros, buf])\n }\n if (!enc) {\n return buf\n } else {\n return buf.toString(enc)\n }\n}\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');\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/*<replacement>*/\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/*</replacement>*/\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\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n","'use strict';\nif (require('./_descriptors')) {\n var LIBRARY = require('./_library');\n var global = require('./_global');\n var fails = require('./_fails');\n var $export = require('./_export');\n var $typed = require('./_typed');\n var $buffer = require('./_typed-buffer');\n var ctx = require('./_ctx');\n var anInstance = require('./_an-instance');\n var propertyDesc = require('./_property-desc');\n var hide = require('./_hide');\n var redefineAll = require('./_redefine-all');\n var toInteger = require('./_to-integer');\n var toLength = require('./_to-length');\n var toIndex = require('./_to-index');\n var toAbsoluteIndex = require('./_to-absolute-index');\n var toPrimitive = require('./_to-primitive');\n var has = require('./_has');\n var classof = require('./_classof');\n var isObject = require('./_is-object');\n var toObject = require('./_to-object');\n var isArrayIter = require('./_is-array-iter');\n var create = require('./_object-create');\n var getPrototypeOf = require('./_object-gpo');\n var gOPN = require('./_object-gopn').f;\n var getIterFn = require('./core.get-iterator-method');\n var uid = require('./_uid');\n var wks = require('./_wks');\n var createArrayMethod = require('./_array-methods');\n var createArrayIncludes = require('./_array-includes');\n var speciesConstructor = require('./_species-constructor');\n var ArrayIterators = require('./es6.array.iterator');\n var Iterators = require('./_iterators');\n var $iterDetect = require('./_iter-detect');\n var setSpecies = require('./_set-species');\n var arrayFill = require('./_array-fill');\n var arrayCopyWithin = require('./_array-copy-within');\n var $DP = require('./_object-dp');\n var $GOPD = require('./_object-gopd');\n var dP = $DP.f;\n var gOPD = $GOPD.f;\n var RangeError = global.RangeError;\n var TypeError = global.TypeError;\n var Uint8Array = global.Uint8Array;\n var ARRAY_BUFFER = 'ArrayBuffer';\n var SHARED_BUFFER = 'Shared' + ARRAY_BUFFER;\n var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\n var PROTOTYPE = 'prototype';\n var ArrayProto = Array[PROTOTYPE];\n var $ArrayBuffer = $buffer.ArrayBuffer;\n var $DataView = $buffer.DataView;\n var arrayForEach = createArrayMethod(0);\n var arrayFilter = createArrayMethod(2);\n var arraySome = createArrayMethod(3);\n var arrayEvery = createArrayMethod(4);\n var arrayFind = createArrayMethod(5);\n var arrayFindIndex = createArrayMethod(6);\n var arrayIncludes = createArrayIncludes(true);\n var arrayIndexOf = createArrayIncludes(false);\n var arrayValues = ArrayIterators.values;\n var arrayKeys = ArrayIterators.keys;\n var arrayEntries = ArrayIterators.entries;\n var arrayLastIndexOf = ArrayProto.lastIndexOf;\n var arrayReduce = ArrayProto.reduce;\n var arrayReduceRight = ArrayProto.reduceRight;\n var arrayJoin = ArrayProto.join;\n var arraySort = ArrayProto.sort;\n var arraySlice = ArrayProto.slice;\n var arrayToString = ArrayProto.toString;\n var arrayToLocaleString = ArrayProto.toLocaleString;\n var ITERATOR = wks('iterator');\n var TAG = wks('toStringTag');\n var TYPED_CONSTRUCTOR = uid('typed_constructor');\n var DEF_CONSTRUCTOR = uid('def_constructor');\n var ALL_CONSTRUCTORS = $typed.CONSTR;\n var TYPED_ARRAY = $typed.TYPED;\n var VIEW = $typed.VIEW;\n var WRONG_LENGTH = 'Wrong length!';\n\n var $map = createArrayMethod(1, function (O, length) {\n return allocate(speciesConstructor(O, O[DEF_CONSTRUCTOR]), length);\n });\n\n var LITTLE_ENDIAN = fails(function () {\n // eslint-disable-next-line no-undef\n return new Uint8Array(new Uint16Array([1]).buffer)[0] === 1;\n });\n\n var FORCED_SET = !!Uint8Array && !!Uint8Array[PROTOTYPE].set && fails(function () {\n new Uint8Array(1).set({});\n });\n\n var toOffset = function (it, BYTES) {\n var offset = toInteger(it);\n if (offset < 0 || offset % BYTES) throw RangeError('Wrong offset!');\n return offset;\n };\n\n var validate = function (it) {\n if (isObject(it) && TYPED_ARRAY in it) return it;\n throw TypeError(it + ' is not a typed array!');\n };\n\n var allocate = function (C, length) {\n if (!(isObject(C) && TYPED_CONSTRUCTOR in C)) {\n throw TypeError('It is not a typed array constructor!');\n } return new C(length);\n };\n\n var speciesFromList = function (O, list) {\n return fromList(speciesConstructor(O, O[DEF_CONSTRUCTOR]), list);\n };\n\n var fromList = function (C, list) {\n var index = 0;\n var length = list.length;\n var result = allocate(C, length);\n while (length > index) result[index] = list[index++];\n return result;\n };\n\n var addGetter = function (it, key, internal) {\n dP(it, key, { get: function () { return this._d[internal]; } });\n };\n\n var $from = function from(source /* , mapfn, thisArg */) {\n var O = toObject(source);\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iterFn = getIterFn(O);\n var i, length, values, result, step, iterator;\n if (iterFn != undefined && !isArrayIter(iterFn)) {\n for (iterator = iterFn.call(O), values = [], i = 0; !(step = iterator.next()).done; i++) {\n values.push(step.value);\n } O = values;\n }\n if (mapping && aLen > 2) mapfn = ctx(mapfn, arguments[2], 2);\n for (i = 0, length = toLength(O.length), result = allocate(this, length); length > i; i++) {\n result[i] = mapping ? mapfn(O[i], i) : O[i];\n }\n return result;\n };\n\n var $of = function of(/* ...items */) {\n var index = 0;\n var length = arguments.length;\n var result = allocate(this, length);\n while (length > index) result[index] = arguments[index++];\n return result;\n };\n\n // iOS Safari 6.x fails here\n var TO_LOCALE_BUG = !!Uint8Array && fails(function () { arrayToLocaleString.call(new Uint8Array(1)); });\n\n var $toLocaleString = function toLocaleString() {\n return arrayToLocaleString.apply(TO_LOCALE_BUG ? arraySlice.call(validate(this)) : validate(this), arguments);\n };\n\n var proto = {\n copyWithin: function copyWithin(target, start /* , end */) {\n return arrayCopyWithin.call(validate(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n },\n every: function every(callbackfn /* , thisArg */) {\n return arrayEvery(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n fill: function fill(value /* , start, end */) { // eslint-disable-line no-unused-vars\n return arrayFill.apply(validate(this), arguments);\n },\n filter: function filter(callbackfn /* , thisArg */) {\n return speciesFromList(this, arrayFilter(validate(this), callbackfn,\n arguments.length > 1 ? arguments[1] : undefined));\n },\n find: function find(predicate /* , thisArg */) {\n return arrayFind(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n },\n findIndex: function findIndex(predicate /* , thisArg */) {\n return arrayFindIndex(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n },\n forEach: function forEach(callbackfn /* , thisArg */) {\n arrayForEach(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n indexOf: function indexOf(searchElement /* , fromIndex */) {\n return arrayIndexOf(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n },\n includes: function includes(searchElement /* , fromIndex */) {\n return arrayIncludes(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n },\n join: function join(separator) { // eslint-disable-line no-unused-vars\n return arrayJoin.apply(validate(this), arguments);\n },\n lastIndexOf: function lastIndexOf(searchElement /* , fromIndex */) { // eslint-disable-line no-unused-vars\n return arrayLastIndexOf.apply(validate(this), arguments);\n },\n map: function map(mapfn /* , thisArg */) {\n return $map(validate(this), mapfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n reduce: function reduce(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n return arrayReduce.apply(validate(this), arguments);\n },\n reduceRight: function reduceRight(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n return arrayReduceRight.apply(validate(this), arguments);\n },\n reverse: function reverse() {\n var that = this;\n var length = validate(that).length;\n var middle = Math.floor(length / 2);\n var index = 0;\n var value;\n while (index < middle) {\n value = that[index];\n that[index++] = that[--length];\n that[length] = value;\n } return that;\n },\n some: function some(callbackfn /* , thisArg */) {\n return arraySome(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n sort: function sort(comparefn) {\n return arraySort.call(validate(this), comparefn);\n },\n subarray: function subarray(begin, end) {\n var O = validate(this);\n var length = O.length;\n var $begin = toAbsoluteIndex(begin, length);\n return new (speciesConstructor(O, O[DEF_CONSTRUCTOR]))(\n O.buffer,\n O.byteOffset + $begin * O.BYTES_PER_ELEMENT,\n toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - $begin)\n );\n }\n };\n\n var $slice = function slice(start, end) {\n return speciesFromList(this, arraySlice.call(validate(this), start, end));\n };\n\n var $set = function set(arrayLike /* , offset */) {\n validate(this);\n var offset = toOffset(arguments[1], 1);\n var length = this.length;\n var src = toObject(arrayLike);\n var len = toLength(src.length);\n var index = 0;\n if (len + offset > length) throw RangeError(WRONG_LENGTH);\n while (index < len) this[offset + index] = src[index++];\n };\n\n var $iterators = {\n entries: function entries() {\n return arrayEntries.call(validate(this));\n },\n keys: function keys() {\n return arrayKeys.call(validate(this));\n },\n values: function values() {\n return arrayValues.call(validate(this));\n }\n };\n\n var isTAIndex = function (target, key) {\n return isObject(target)\n && target[TYPED_ARRAY]\n && typeof key != 'symbol'\n && key in target\n && String(+key) == String(key);\n };\n var $getDesc = function getOwnPropertyDescriptor(target, key) {\n return isTAIndex(target, key = toPrimitive(key, true))\n ? propertyDesc(2, target[key])\n : gOPD(target, key);\n };\n var $setDesc = function defineProperty(target, key, desc) {\n if (isTAIndex(target, key = toPrimitive(key, true))\n && isObject(desc)\n && has(desc, 'value')\n && !has(desc, 'get')\n && !has(desc, 'set')\n // TODO: add validation descriptor w/o calling accessors\n && !desc.configurable\n && (!has(desc, 'writable') || desc.writable)\n && (!has(desc, 'enumerable') || desc.enumerable)\n ) {\n target[key] = desc.value;\n return target;\n } return dP(target, key, desc);\n };\n\n if (!ALL_CONSTRUCTORS) {\n $GOPD.f = $getDesc;\n $DP.f = $setDesc;\n }\n\n $export($export.S + $export.F * !ALL_CONSTRUCTORS, 'Object', {\n getOwnPropertyDescriptor: $getDesc,\n defineProperty: $setDesc\n });\n\n if (fails(function () { arrayToString.call({}); })) {\n arrayToString = arrayToLocaleString = function toString() {\n return arrayJoin.call(this);\n };\n }\n\n var $TypedArrayPrototype$ = redefineAll({}, proto);\n redefineAll($TypedArrayPrototype$, $iterators);\n hide($TypedArrayPrototype$, ITERATOR, $iterators.values);\n redefineAll($TypedArrayPrototype$, {\n slice: $slice,\n set: $set,\n constructor: function () { /* noop */ },\n toString: arrayToString,\n toLocaleString: $toLocaleString\n });\n addGetter($TypedArrayPrototype$, 'buffer', 'b');\n addGetter($TypedArrayPrototype$, 'byteOffset', 'o');\n addGetter($TypedArrayPrototype$, 'byteLength', 'l');\n addGetter($TypedArrayPrototype$, 'length', 'e');\n dP($TypedArrayPrototype$, TAG, {\n get: function () { return this[TYPED_ARRAY]; }\n });\n\n // eslint-disable-next-line max-statements\n module.exports = function (KEY, BYTES, wrapper, CLAMPED) {\n CLAMPED = !!CLAMPED;\n var NAME = KEY + (CLAMPED ? 'Clamped' : '') + 'Array';\n var GETTER = 'get' + KEY;\n var SETTER = 'set' + KEY;\n var TypedArray = global[NAME];\n var Base = TypedArray || {};\n var TAC = TypedArray && getPrototypeOf(TypedArray);\n var FORCED = !TypedArray || !$typed.ABV;\n var O = {};\n var TypedArrayPrototype = TypedArray && TypedArray[PROTOTYPE];\n var getter = function (that, index) {\n var data = that._d;\n return data.v[GETTER](index * BYTES + data.o, LITTLE_ENDIAN);\n };\n var setter = function (that, index, value) {\n var data = that._d;\n if (CLAMPED) value = (value = Math.round(value)) < 0 ? 0 : value > 0xff ? 0xff : value & 0xff;\n data.v[SETTER](index * BYTES + data.o, value, LITTLE_ENDIAN);\n };\n var addElement = function (that, index) {\n dP(that, index, {\n get: function () {\n return getter(this, index);\n },\n set: function (value) {\n return setter(this, index, value);\n },\n enumerable: true\n });\n };\n if (FORCED) {\n TypedArray = wrapper(function (that, data, $offset, $length) {\n anInstance(that, TypedArray, NAME, '_d');\n var index = 0;\n var offset = 0;\n var buffer, byteLength, length, klass;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new $ArrayBuffer(byteLength);\n } else if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n buffer = data;\n offset = toOffset($offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n byteLength = $len - offset;\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + offset > $len) throw RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (TYPED_ARRAY in data) {\n return fromList(TypedArray, data);\n } else {\n return $from.call(TypedArray, data);\n }\n hide(that, '_d', {\n b: buffer,\n o: offset,\n l: byteLength,\n e: length,\n v: new $DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n TypedArrayPrototype = TypedArray[PROTOTYPE] = create($TypedArrayPrototype$);\n hide(TypedArrayPrototype, 'constructor', TypedArray);\n } else if (!fails(function () {\n TypedArray(1);\n }) || !fails(function () {\n new TypedArray(-1); // eslint-disable-line no-new\n }) || !$iterDetect(function (iter) {\n new TypedArray(); // eslint-disable-line no-new\n new TypedArray(null); // eslint-disable-line no-new\n new TypedArray(1.5); // eslint-disable-line no-new\n new TypedArray(iter); // eslint-disable-line no-new\n }, true)) {\n TypedArray = wrapper(function (that, data, $offset, $length) {\n anInstance(that, TypedArray, NAME);\n var klass;\n // `ws` module bug, temporarily remove validation length for Uint8Array\n // https://github.com/websockets/ws/pull/645\n if (!isObject(data)) return new Base(toIndex(data));\n if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n return $length !== undefined\n ? new Base(data, toOffset($offset, BYTES), $length)\n : $offset !== undefined\n ? new Base(data, toOffset($offset, BYTES))\n : new Base(data);\n }\n if (TYPED_ARRAY in data) return fromList(TypedArray, data);\n return $from.call(TypedArray, data);\n });\n arrayForEach(TAC !== Function.prototype ? gOPN(Base).concat(gOPN(TAC)) : gOPN(Base), function (key) {\n if (!(key in TypedArray)) hide(TypedArray, key, Base[key]);\n });\n TypedArray[PROTOTYPE] = TypedArrayPrototype;\n if (!LIBRARY) TypedArrayPrototype.constructor = TypedArray;\n }\n var $nativeIterator = TypedArrayPrototype[ITERATOR];\n var CORRECT_ITER_NAME = !!$nativeIterator\n && ($nativeIterator.name == 'values' || $nativeIterator.name == undefined);\n var $iterator = $iterators.values;\n hide(TypedArray, TYPED_CONSTRUCTOR, true);\n hide(TypedArrayPrototype, TYPED_ARRAY, NAME);\n hide(TypedArrayPrototype, VIEW, true);\n hide(TypedArrayPrototype, DEF_CONSTRUCTOR, TypedArray);\n\n if (CLAMPED ? new TypedArray(1)[TAG] != NAME : !(TAG in TypedArrayPrototype)) {\n dP(TypedArrayPrototype, TAG, {\n get: function () { return NAME; }\n });\n }\n\n O[NAME] = TypedArray;\n\n $export($export.G + $export.W + $export.F * (TypedArray != Base), O);\n\n $export($export.S, NAME, {\n BYTES_PER_ELEMENT: BYTES\n });\n\n $export($export.S + $export.F * fails(function () { Base.of.call(TypedArray, 1); }), NAME, {\n from: $from,\n of: $of\n });\n\n if (!(BYTES_PER_ELEMENT in TypedArrayPrototype)) hide(TypedArrayPrototype, BYTES_PER_ELEMENT, BYTES);\n\n $export($export.P, NAME, proto);\n\n setSpecies(NAME);\n\n $export($export.P + $export.F * FORCED_SET, NAME, { set: $set });\n\n $export($export.P + $export.F * !CORRECT_ITER_NAME, NAME, $iterators);\n\n if (!LIBRARY && TypedArrayPrototype.toString != arrayToString) TypedArrayPrototype.toString = arrayToString;\n\n $export($export.P + $export.F * fails(function () {\n new TypedArray(1).slice();\n }), NAME, { slice: $slice });\n\n $export($export.P + $export.F * (fails(function () {\n return [1, 2].toLocaleString() != new TypedArray([1, 2]).toLocaleString();\n }) || !fails(function () {\n TypedArrayPrototype.toLocaleString.call([1, 2]);\n })), NAME, { toLocaleString: $toLocaleString });\n\n Iterators[NAME] = CORRECT_ITER_NAME ? $nativeIterator : $iterator;\n if (!LIBRARY && !CORRECT_ITER_NAME) hide(TypedArrayPrototype, ITERATOR, $iterator);\n };\n} else module.exports = function () { /* empty */ };\n","'use strict';\nvar global = require('./_global');\nvar DESCRIPTORS = require('./_descriptors');\nvar LIBRARY = require('./_library');\nvar $typed = require('./_typed');\nvar hide = require('./_hide');\nvar redefineAll = require('./_redefine-all');\nvar fails = require('./_fails');\nvar anInstance = require('./_an-instance');\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nvar toIndex = require('./_to-index');\nvar gOPN = require('./_object-gopn').f;\nvar dP = require('./_object-dp').f;\nvar arrayFill = require('./_array-fill');\nvar setToStringTag = require('./_set-to-string-tag');\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length!';\nvar WRONG_INDEX = 'Wrong index!';\nvar $ArrayBuffer = global[ARRAY_BUFFER];\nvar $DataView = global[DATA_VIEW];\nvar Math = global.Math;\nvar RangeError = global.RangeError;\n// eslint-disable-next-line no-shadow-restricted-names\nvar Infinity = global.Infinity;\nvar BaseBuffer = $ArrayBuffer;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\nvar BUFFER = 'buffer';\nvar BYTE_LENGTH = 'byteLength';\nvar BYTE_OFFSET = 'byteOffset';\nvar $BUFFER = DESCRIPTORS ? '_b' : BUFFER;\nvar $LENGTH = DESCRIPTORS ? '_l' : BYTE_LENGTH;\nvar $OFFSET = DESCRIPTORS ? '_o' : BYTE_OFFSET;\n\n// IEEE754 conversions based on https://github.com/feross/ieee754\nfunction packIEEE754(value, mLen, nBytes) {\n var buffer = new Array(nBytes);\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = mLen === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var i = 0;\n var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n var e, m, c;\n value = abs(value);\n // eslint-disable-next-line no-self-compare\n if (value != value || value === Infinity) {\n // eslint-disable-next-line no-self-compare\n m = value != value ? 1 : 0;\n e = eMax;\n } else {\n e = floor(log(value) / LN2);\n if (value * (c = pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * pow(2, 1 - eBias);\n }\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * pow(2, eBias - 1) * pow(2, mLen);\n e = 0;\n }\n }\n for (; mLen >= 8; buffer[i++] = m & 255, m /= 256, mLen -= 8);\n e = e << mLen | m;\n eLen += mLen;\n for (; eLen > 0; buffer[i++] = e & 255, e /= 256, eLen -= 8);\n buffer[--i] |= s * 128;\n return buffer;\n}\nfunction unpackIEEE754(buffer, mLen, nBytes) {\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = eLen - 7;\n var i = nBytes - 1;\n var s = buffer[i--];\n var e = s & 127;\n var m;\n s >>= 7;\n for (; nBits > 0; e = e * 256 + buffer[i], i--, nBits -= 8);\n m = e & (1 << -nBits) - 1;\n e >>= -nBits;\n nBits += mLen;\n for (; nBits > 0; m = m * 256 + buffer[i], i--, nBits -= 8);\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : s ? -Infinity : Infinity;\n } else {\n m = m + pow(2, mLen);\n e = e - eBias;\n } return (s ? -1 : 1) * m * pow(2, e - mLen);\n}\n\nfunction unpackI32(bytes) {\n return bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0];\n}\nfunction packI8(it) {\n return [it & 0xff];\n}\nfunction packI16(it) {\n return [it & 0xff, it >> 8 & 0xff];\n}\nfunction packI32(it) {\n return [it & 0xff, it >> 8 & 0xff, it >> 16 & 0xff, it >> 24 & 0xff];\n}\nfunction packF64(it) {\n return packIEEE754(it, 52, 8);\n}\nfunction packF32(it) {\n return packIEEE754(it, 23, 4);\n}\n\nfunction addGetter(C, key, internal) {\n dP(C[PROTOTYPE], key, { get: function () { return this[internal]; } });\n}\n\nfunction get(view, bytes, index, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = store.slice(start, start + bytes);\n return isLittleEndian ? pack : pack.reverse();\n}\nfunction set(view, bytes, index, conversion, value, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = conversion(+value);\n for (var i = 0; i < bytes; i++) store[start + i] = pack[isLittleEndian ? i : bytes - i - 1];\n}\n\nif (!$typed.ABV) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n var byteLength = toIndex(length);\n this._b = arrayFill.call(new Array(byteLength), 0);\n this[$LENGTH] = byteLength;\n };\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, $DataView, DATA_VIEW);\n anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n var bufferLength = buffer[$LENGTH];\n var offset = toInteger(byteOffset);\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset!');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n this[$BUFFER] = buffer;\n this[$OFFSET] = offset;\n this[$LENGTH] = byteLength;\n };\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, BYTE_LENGTH, '_l');\n addGetter($DataView, BUFFER, '_b');\n addGetter($DataView, BYTE_LENGTH, '_l');\n addGetter($DataView, BYTE_OFFSET, '_o');\n }\n\n redefineAll($DataView[PROTOTYPE], {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1]));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1])) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments[1]), 23, 4);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments[1]), 52, 8);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packF32, value, arguments[2]);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packF64, value, arguments[2]);\n }\n });\n} else {\n if (!fails(function () {\n $ArrayBuffer(1);\n }) || !fails(function () {\n new $ArrayBuffer(-1); // eslint-disable-line no-new\n }) || fails(function () {\n new $ArrayBuffer(); // eslint-disable-line no-new\n new $ArrayBuffer(1.5); // eslint-disable-line no-new\n new $ArrayBuffer(NaN); // eslint-disable-line no-new\n return $ArrayBuffer.name != ARRAY_BUFFER;\n })) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer);\n return new BaseBuffer(toIndex(length));\n };\n var ArrayBufferProto = $ArrayBuffer[PROTOTYPE] = BaseBuffer[PROTOTYPE];\n for (var keys = gOPN(BaseBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) hide($ArrayBuffer, key, BaseBuffer[key]);\n }\n if (!LIBRARY) ArrayBufferProto.constructor = $ArrayBuffer;\n }\n // iOS Safari 7.x bug\n var view = new $DataView(new $ArrayBuffer(2));\n var $setInt8 = $DataView[PROTOTYPE].setInt8;\n view.setInt8(0, 2147483648);\n view.setInt8(1, 2147483649);\n if (view.getInt8(0) || !view.getInt8(1)) redefineAll($DataView[PROTOTYPE], {\n setInt8: function setInt8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n }\n }, true);\n}\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\nhide($DataView[PROTOTYPE], $typed.VIEW, true);\nexports[ARRAY_BUFFER] = $ArrayBuffer;\nexports[DATA_VIEW] = $DataView;\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","// 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;","// 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\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\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()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\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 isObject(re) && 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 isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (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 = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { process.nextTick(cb, null, ret) },\n function(rej) { process.nextTick(callbackifyOnRejected, rej, cb) });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified,\n getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;\n","'use strict';\n\nconst encoders = require('./encoders');\nconst decoders = require('./decoders');\nconst inherits = require('inherits');\n\nconst api = exports;\n\napi.define = function define(name, body) {\n return new Entity(name, body);\n};\n\nfunction Entity(name, body) {\n this.name = name;\n this.body = body;\n\n this.decoders = {};\n this.encoders = {};\n}\n\nEntity.prototype._createNamed = function createNamed(Base) {\n const name = this.name;\n\n function Generated(entity) {\n this._initNamed(entity, name);\n }\n inherits(Generated, Base);\n Generated.prototype._initNamed = function _initNamed(entity, name) {\n Base.call(this, entity, name);\n };\n\n return new Generated(this);\n};\n\nEntity.prototype._getDecoder = function _getDecoder(enc) {\n enc = enc || 'der';\n // Lazily create decoder\n if (!this.decoders.hasOwnProperty(enc))\n this.decoders[enc] = this._createNamed(decoders[enc]);\n return this.decoders[enc];\n};\n\nEntity.prototype.decode = function decode(data, enc, options) {\n return this._getDecoder(enc).decode(data, options);\n};\n\nEntity.prototype._getEncoder = function _getEncoder(enc) {\n enc = enc || 'der';\n // Lazily create encoder\n if (!this.encoders.hasOwnProperty(enc))\n this.encoders[enc] = this._createNamed(encoders[enc]);\n return this.encoders[enc];\n};\n\nEntity.prototype.encode = function encode(data, enc, /* internal */ reporter) {\n return this._getEncoder(enc).encode(data, reporter);\n};\n","'use strict';\nvar aFunction = require('./_a-function');\nvar isObject = require('./_is-object');\nvar invoke = require('./_invoke');\nvar arraySlice = [].slice;\nvar factories = {};\n\nvar construct = function (F, len, args) {\n if (!(len in factories)) {\n for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func\n factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');\n } return factories[len](F, args);\n};\n\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = arraySlice.call(arguments, 1);\n var bound = function (/* args... */) {\n var args = partArgs.concat(arraySlice.call(arguments));\n return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);\n };\n if (isObject(fn.prototype)) bound.prototype = fn.prototype;\n return bound;\n};\n","module.exports = require('events').EventEmitter;\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}","'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\nvar minAssert = require('minimalistic-assert');\nvar minUtils = require('minimalistic-crypto-utils');\n\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar MAP = 'Map';\n\n// 23.1 Map Objects\nmodule.exports = require('./_collection')(MAP, function (get) {\n return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = strong.getEntry(validate(this, MAP), key);\n return entry && entry.v;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);\n }\n}, strong, true);\n","var createHash = require('create-hash')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (seed, len) {\n var t = Buffer.alloc(0)\n var i = 0\n var c\n while (t.length < len) {\n c = i2ops(i++)\n t = Buffer.concat([t, createHash('sha1').update(seed).update(c).digest()])\n }\n return t.slice(0, len)\n}\n\nfunction i2ops (c) {\n var out = Buffer.allocUnsafe(4)\n out.writeUInt32BE(c, 0)\n return out\n}\n","'use strict'\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\nvar Buffer = require('safe-buffer').Buffer\n\nvar ARRAY16 = new Array(16)\n\nfunction MD5 () {\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}\n\ninherits(MD5, HashBase)\n\nMD5.prototype._update = function () {\n var M = ARRAY16\n for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4)\n\n var a = this._a\n var b = this._b\n var c = this._c\n var d = this._d\n\n a = fnF(a, b, c, d, M[0], 0xd76aa478, 7)\n d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12)\n c = fnF(c, d, a, b, M[2], 0x242070db, 17)\n b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22)\n a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7)\n d = fnF(d, a, b, c, M[5], 0x4787c62a, 12)\n c = fnF(c, d, a, b, M[6], 0xa8304613, 17)\n b = fnF(b, c, d, a, M[7], 0xfd469501, 22)\n a = fnF(a, b, c, d, M[8], 0x698098d8, 7)\n d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12)\n c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17)\n b = fnF(b, c, d, a, M[11], 0x895cd7be, 22)\n a = fnF(a, b, c, d, M[12], 0x6b901122, 7)\n d = fnF(d, a, b, c, M[13], 0xfd987193, 12)\n c = fnF(c, d, a, b, M[14], 0xa679438e, 17)\n b = fnF(b, c, d, a, M[15], 0x49b40821, 22)\n\n a = fnG(a, b, c, d, M[1], 0xf61e2562, 5)\n d = fnG(d, a, b, c, M[6], 0xc040b340, 9)\n c = fnG(c, d, a, b, M[11], 0x265e5a51, 14)\n b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20)\n a = fnG(a, b, c, d, M[5], 0xd62f105d, 5)\n d = fnG(d, a, b, c, M[10], 0x02441453, 9)\n c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14)\n b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20)\n a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5)\n d = fnG(d, a, b, c, M[14], 0xc33707d6, 9)\n c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14)\n b = fnG(b, c, d, a, M[8], 0x455a14ed, 20)\n a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5)\n d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9)\n c = fnG(c, d, a, b, M[7], 0x676f02d9, 14)\n b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20)\n\n a = fnH(a, b, c, d, M[5], 0xfffa3942, 4)\n d = fnH(d, a, b, c, M[8], 0x8771f681, 11)\n c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16)\n b = fnH(b, c, d, a, M[14], 0xfde5380c, 23)\n a = fnH(a, b, c, d, M[1], 0xa4beea44, 4)\n d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11)\n c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16)\n b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23)\n a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4)\n d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11)\n c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16)\n b = fnH(b, c, d, a, M[6], 0x04881d05, 23)\n a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4)\n d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11)\n c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16)\n b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23)\n\n a = fnI(a, b, c, d, M[0], 0xf4292244, 6)\n d = fnI(d, a, b, c, M[7], 0x432aff97, 10)\n c = fnI(c, d, a, b, M[14], 0xab9423a7, 15)\n b = fnI(b, c, d, a, M[5], 0xfc93a039, 21)\n a = fnI(a, b, c, d, M[12], 0x655b59c3, 6)\n d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10)\n c = fnI(c, d, a, b, M[10], 0xffeff47d, 15)\n b = fnI(b, c, d, a, M[1], 0x85845dd1, 21)\n a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6)\n d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10)\n c = fnI(c, d, a, b, M[6], 0xa3014314, 15)\n b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21)\n a = fnI(a, b, c, d, M[4], 0xf7537e82, 6)\n d = fnI(d, a, b, c, M[11], 0xbd3af235, 10)\n c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15)\n b = fnI(b, c, d, a, M[9], 0xeb86d391, 21)\n\n this._a = (this._a + a) | 0\n this._b = (this._b + b) | 0\n this._c = (this._c + c) | 0\n this._d = (this._d + d) | 0\n}\n\nMD5.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.allocUnsafe(16)\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 return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fnF (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnG (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnH (a, b, c, d, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnI (a, b, c, d, m, k, s) {\n return (rotl((a + ((c ^ (b | (~d)))) + m + k) | 0, s) + b) | 0\n}\n\nmodule.exports = MD5\n","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\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\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\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 ciphers = require('./encrypter')\nvar deciphers = require('./decrypter')\nvar modes = require('./modes/list.json')\n\nfunction getCiphers () {\n return Object.keys(modes)\n}\n\nexports.createCipher = exports.Cipher = ciphers.createCipher\nexports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv\nexports.createDecipher = exports.Decipher = deciphers.createDecipher\nexports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n","var r;\n\nmodule.exports = function rand(len) {\n if (!r)\n r = new Rand(null);\n\n return r.generate(len);\n};\n\nfunction Rand(rand) {\n this.rand = rand;\n}\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes)\n return this.rand.getBytes(n);\n\n var res = new Uint8Array(n);\n for (var i = 0; i < res.length; i++)\n res[i] = this.rand.getByte();\n return res;\n};\n\nif (typeof self === 'object') {\n if (self.crypto && self.crypto.getRandomValues) {\n // Modern browsers\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.crypto.getRandomValues(arr);\n return arr;\n };\n } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n // IE\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.msCrypto.getRandomValues(arr);\n return arr;\n };\n\n // Safari's WebWorkers do not have `crypto`\n } else if (typeof window === 'object') {\n // Old junk\n Rand.prototype._rand = function() {\n throw new Error('Not implemented yet');\n };\n }\n} else {\n // Node.js or Web worker with no crypto support\n try {\n var crypto = require('crypto');\n if (typeof crypto.randomBytes !== 'function')\n throw new Error('Not supported');\n\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {\n }\n}\n"],"sourceRoot":""}