{"version":3,"sources":["webpack:///./node_modules/browserify-aes/modes/ecb.js","webpack:///./node_modules/@peertube/embed-api/dist/events.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/browserify-aes/streamCipher.js","webpack:///./node_modules/axios/lib/core/Axios.js","webpack:///./node_modules/browserify-des/modes.js","webpack:///./node_modules/axios/lib/helpers/spread.js","webpack:///./node_modules/browserify-sign/algos.js","webpack:///./node_modules/axios/lib/helpers/bind.js","webpack:///./node_modules/browserify-des/index.js","webpack:///./node_modules/base64-js/index.js","webpack:///./node_modules/asn1.js/lib/asn1/decoders/index.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack:///./node_modules/axios/lib/defaults.js","webpack:///./node_modules/axios/lib/core/createError.js","webpack:///./node_modules/axios/lib/cancel/isCancel.js","webpack:///./node_modules/axios/lib/helpers/buildURL.js","webpack:///./node_modules/asn1.js/lib/asn1/encoders/index.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/readable-browser.js","webpack:///./node_modules/browserify-aes/modes/cfb.js","webpack:///./node_modules/asn1.js/lib/asn1/encoders/der.js","webpack:///./node_modules/axios/lib/core/enhanceError.js","webpack:///./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///./node_modules/bn.js/lib/bn.js","webpack:///./node_modules/browserify-aes/aes.js","webpack:///./node_modules/browserify-aes/ghash.js","webpack:///./node_modules/asn1.js/lib/asn1/base/index.js","webpack:///./node_modules/browserify-aes/decrypter.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack:///./node_modules/axios/lib/core/settle.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_writable.js","webpack:///./node_modules/axios/lib/core/mergeConfig.js","webpack:///./node_modules/browserify-aes/modes/ofb.js","webpack:///./node_modules/browserify-aes/modes/cfb1.js","webpack:///./node_modules/axios/lib/core/dispatchRequest.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/async_iterator.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_duplex.js","webpack:///./node_modules/axios/lib/helpers/isAxiosError.js","webpack:///./node_modules/asn1.js/lib/asn1/base/buffer.js","webpack:///./node_modules/browserify-aes/modes/cfb8.js","webpack:///./node_modules/browserify-aes/modes/ctr.js","webpack:///./node_modules/browserify-sign/browser/sign.js","webpack:///./node_modules/axios/lib/cancel/Cancel.js","webpack:///./node_modules/axios/lib/helpers/cookies.js","webpack:///./node_modules/asn1.js/lib/asn1.js","webpack:///./node_modules/browserify-aes/authCipher.js","webpack:///./node_modules/asn1.js/lib/asn1/base/node.js","webpack:///./node_modules/axios/lib/core/buildFullPath.js","webpack:///./node_modules/axios/lib/helpers/validator.js","webpack:///./node_modules/asn1.js/lib/asn1/encoders/pem.js","webpack:///./node_modules/browserify-aes/encrypter.js","webpack:///./node_modules/asn1.js/lib/asn1/constants/der.js","webpack:///./node_modules/buffer-xor/index.js","webpack:///./node_modules/axios/lib/cancel/CancelToken.js","webpack:///./node_modules/asn1.js/lib/asn1/decoders/pem.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/destroy.js","webpack:///./node_modules/browserify-cipher/browser.js","webpack:///./node_modules/browserify-sign/browser/verify.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_passthrough.js","webpack:///./node_modules/@peertube/embed-api/dist/player.js","webpack:///./node_modules/browserify-rsa/node_modules/bn.js/lib/bn.js","webpack:///./node_modules/browserify-rsa/index.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack:///./node_modules/axios/lib/adapters/xhr.js","webpack:///./node_modules/buffer/index.js","webpack:///./node_modules/browserify-sign/browser/index.js","webpack:///./node_modules/browserify-aes/modes/index.js","webpack:///./node_modules/browserify-sign/node_modules/bn.js/lib/bn.js","webpack:///./node_modules/axios/index.js","webpack:///./node_modules/browserify-aes/incr32.js","webpack:///./node_modules/browserify-aes/modes/cbc.js","webpack:///./node_modules/axios/lib/helpers/parseHeaders.js","webpack:///./node_modules/axios/lib/core/transformData.js","webpack:///./node_modules/axios/lib/utils.js","webpack:///./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack:///./node_modules/axios/lib/axios.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/browserify-sign/node_modules/readable-stream/errors-browser.js","webpack:///./node_modules/asn1.js/lib/asn1/base/reporter.js","webpack:///./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///./node_modules/axios/lib/helpers/combineURLs.js","webpack:///./node_modules/asn1.js/lib/asn1/api.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_transform.js","webpack:///./node_modules/axios/lib/core/InterceptorManager.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/from-browser.js","webpack:///./node_modules/browserify-aes/browser.js","webpack:///./node_modules/brorand/index.js"],"names":["exports","encrypt","self","block","_cipher","encryptBlock","decrypt","decryptBlock","Object","defineProperty","value","EventRegistrar","this","eventRegistrations","prototype","bindToChannel","channel","_this","_loop_1","name_1","bind","txn","params","fire","_i","_a","keys","length","registerTypes","names","names_1","name_2","registrations","name","event","forEach","x","addListener","handler","push","console","warn","removeListener","filter","constants","_reverse","map","res","key","der","ERR_INVALID_OPT_VALUE","codes","highWaterMarkFrom","options","isDuplex","duplexKey","highWaterMark","getHighWaterMark","state","hwm","isFinite","Math","floor","objectMode","module","aes","Buffer","Transform","inherits","StreamCipher","mode","iv","call","AES","_prev","from","_cache","allocUnsafe","_secCache","_decrypt","_mode","_update","chunk","_final","scrub","utils","buildURL","InterceptorManager","dispatchRequest","mergeConfig","validator","validators","Axios","instanceConfig","defaults","interceptors","request","response","config","arguments","url","method","toLowerCase","transitional","undefined","assertOptions","silentJSONParsing","boolean","forcedJSONParsing","clarifyTimeoutError","requestInterceptorChain","synchronousRequestInterceptors","interceptor","runWhen","synchronous","unshift","fulfilled","rejected","promise","responseInterceptorChain","chain","Array","apply","concat","Promise","resolve","then","shift","newConfig","onFulfilled","onRejected","error","reject","getUri","paramsSerializer","replace","data","des","des3","callback","arr","fn","thisArg","args","i","CipherBase","modes","CBC","instantiate","EDE","DES","opts","type","modeName","isBuffer","slice","_des","create","update","final","byteLength","toByteArray","fromByteArray","lookup","revLookup","Arr","Uint8Array","code","len","charCodeAt","getLens","b64","Error","validLen","indexOf","placeHoldersLen","lens","_byteLength","tmp","curByte","tripletToBase64","num","encodeChunk","uint8","start","end","output","join","extraBytes","parts","maxChunkLength","len2","decoders","pem","ownKeys","object","enumerableOnly","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","enumerable","_objectSpread","target","source","_defineProperty","getOwnPropertyDescriptors","defineProperties","obj","_toPropertyKey","configurable","writable","_classCallCheck","instance","Constructor","TypeError","_defineProperties","props","descriptor","_createClass","protoProps","staticProps","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","Number","_require","_require2","inspect","custom","copyBuffer","src","offset","copy","BufferList","head","tail","v","entry","next","ret","s","p","n","alloc","hasStrings","_getString","_getBuffer","c","str","nb","buf","_","depth","customInspect","normalizeHeaderName","enhanceError","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","headers","isUndefined","getDefaultAdapter","adapter","XMLHttpRequest","process","toString","stringifySafely","rawValue","parser","encoder","isString","JSON","parse","trim","e","stringify","transformRequest","isFormData","isArrayBuffer","isStream","isFile","isBlob","isArrayBufferView","buffer","isURLSearchParams","isObject","transformResponse","strictJSONParsing","responseType","timeout","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","status","common","merge","message","__CANCEL__","encode","val","encodeURIComponent","serializedParams","isArray","isDate","toISOString","hashmarkIndex","encoders","Stream","Readable","Writable","Duplex","PassThrough","finished","pipeline","xor","encryptStart","out","Node","DEREncoder","entity","enc","tree","DERNode","_init","body","parent","two","encodeTag","tag","primitive","cls","reporter","tagByName","hasOwnProperty","tagClassByName","_encode","_encodeComposite","content","encodedTag","header","_createEncoderBuffer","lenOctets","j","_encodeStr","unused","writeUInt16BE","_isNumstr","_isPrintstr","test","_encodeObjid","id","values","relative","split","splice","size","ident","objid","_encodeTime","time","date","Date","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","_encodeNull","_encodeInt","numArray","toArray","sign","_encodeBool","_use","_getEncoder","_skipDefault","dataBuffer","_baseState","defaultBuffer","_encodeValue","isAxiosError","toJSON","description","number","fileName","lineNumber","columnNumber","stack","isStandardBrowserEnv","originURL","msie","navigator","userAgent","urlParsingNode","document","createElement","resolveURL","href","setAttribute","protocol","host","search","hash","hostname","port","pathname","charAt","window","location","requestURL","parsed","assert","msg","ctor","superCtor","super_","TempCtor","constructor","BN","base","endian","isBN","negative","words","red","wordSize","parseHex4Bits","string","index","parseHexByte","lowerBound","r","parseBase","mul","min","max","left","right","cmp","_initNumber","_initArray","_parseHex","_parseBase","ceil","w","off","strip","parseLength","limbLen","limbPow","total","mod","word","imuln","_iaddn","pow","dest","clone","_expand","_normSign","zeros","groupSizes","groupBases","toBitArray","bitLength","bit","wbit","smallMulTo","a","b","lo","carry","k","ncarry","rword","maxJ","padding","groupSize","groupBase","isZero","modn","idivn","toNumber","toBuffer","toArrayLike","ArrayType","reqLength","littleEndian","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","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","y","mulTo","makeRBT","N","l","revBin","rb","permute","rbt","rws","iws","rtws","itws","transform","rtwdf","cos","PI","itwdf","sin","rtwdf_","itwdf_","re","ie","ro","io","rx","guessLen13b","m","odd","conjugate","normalize13b","ws","round","convert13b","stub","ph","rwst","iwst","nrws","nrwst","niwst","rmws","mulf","muln","sqr","isqr","iushln","bits","carryMask","newCarry","ishln","extended","h","mask","maskedWords","ishrn","shln","ushln","shrn","ushrn","imaskn","maskn","isubn","addn","subn","iabs","_ishlnsubmul","_wordDiv","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","primes","k256","p224","p192","p25519","MPrime","_tmp","K256","P224","P192","P25519","prime","_prime","Mont","imod","rinv","minv","ireduce","rlen","imulK","_strip","outLen","prev","mod3","one","nOne","lpow","z","inv","windowSize","wnd","current","currentLen","mont","u","asUInt32Array","readUInt32BE","scrubVec","cryptBlock","M","keySchedule","SUB_MIX","SBOX","nRounds","t0","t1","t2","t3","SUB_MIX0","SUB_MIX1","SUB_MIX2","SUB_MIX3","s0","s1","s2","s3","ksRow","RCON","G","d","INV_SBOX","INV_SUB_MIX","xi","sx","x4","x8","_key","_reset","blockSize","keySize","keyWords","ksRows","invKeySchedule","ik","ksR","tt","_nRounds","_keySchedule","_invKeySchedule","encryptBlockRaw","writeUInt32BE","m1","ZEROES","fromArray","GHASH","cache","ghash","_multiply","lsbVi","Vi","Zi","abl","bl","Reporter","DecoderBuffer","EncoderBuffer","AuthCipher","MODES","ebtk","Decipher","Splitter","_last","_autopadding","unpad","last","padded","createDecipheriv","suite","password","createDecipher","thing","get","flush","setAutoPadding","setTo","autoPadding","ERR_STREAM_PREMATURE_CLOSE","once","called","_len","noop","isRequest","stream","setHeader","abort","eos","readable","onlegacyfinish","onfinish","writableEnded","_writableState","readableEnded","_readableState","endEmitted","onend","onerror","err","onclose","ended","onrequest","req","on","createError","CorkedRequest","finish","onCorkedFinish","WritableState","internalUtil","deprecate","OurUint8Array","global","_uint8ArrayToBuffer","_isUint8Array","realHasInstance","destroyImpl","_require$codes","ERR_INVALID_ARG_TYPE","ERR_METHOD_NOT_IMPLEMENTED","ERR_MULTIPLE_CALLBACK","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","destroyed","noDecode","decodeStrings","defaultEncoding","writing","corked","sync","bufferProcessing","onwrite","er","writecb","writelen","bufferedRequest","lastBufferedRequest","pendingcb","prefinished","errorEmitted","emitClose","autoDestroy","bufferedRequestCount","corkedRequestsFree","write","_write","writev","_writev","destroy","_destroy","writeAfterEnd","cb","nextTick","validChunk","decodeChunk","encoding","writeOrBuffer","isBuf","newChunk","doWrite","onwriteError","finishMaybe","onwriteStateUpdate","needFinish","clearBuffer","afterWrite","onwriteDrain","emit","holder","count","allBuffers","callFinal","prefinish","need","rState","endWritable","corkReq","getBuffer","hasInstance","Function","pipe","cork","uncork","setDefaultEncoding","set","_undestroy","undestroy","config1","config2","valueFromConfig2Keys","mergeDeepPropertiesKeys","defaultToConfig2Keys","directMergeKeys","getMergedValue","isPlainObject","mergeDeepProperties","prop","axiosKeys","otherKeys","getBlock","pad","encryptByte","byteParam","shiftIn","transformData","isCancel","throwIfCancellationRequested","cancelToken","throwIfRequested","reason","_Object$setPrototypeO","kLastResolve","kLastReject","kError","kEnded","kLastPromise","kHandlePromise","kStream","createIterResult","done","readAndResolve","iter","read","onReadable","wrapForNext","lastPromise","AsyncIteratorPrototype","getPrototypeOf","ReadableStreamAsyncIteratorPrototype","setPrototypeOf","asyncIterator","_this2","createReadableStreamAsyncIterator","_Object$create","iterator","objectKeys","allowHalfOpen","onEndNT","payload","item","isEncoderBuffer","isDecoderBuffer","isCompatible","save","restore","isEmpty","readUInt8","skip","raw","fail","bytes","_reporterState","incr32","chunkNum","createHmac","crt","EC","ec","parseKeys","curves","RSA_PKCS1_PADDING","hashType","signType","priv","curve","ecSign","dsaSign","modulus","curveId","keyFromPrivate","privateKey","toDER","algo","priv_key","H","bits2int","kv","getKey","makeKey","makeR","hlen","hbits","bits2octets","fill","digest","obits","Cancel","expires","path","domain","secure","cookie","isNumber","toGMTString","match","RegExp","decodeURIComponent","remove","now","asn1","bignum","define","xorTest","calcIv","ck","_finID","toPad","ivBits","writeUIntBE","_ghash","_alen","_authTag","_called","rump","getAuthTag","setAuthTag","setAAD","tags","methods","overrided","children","reverseArgs","choice","optional","any","use","useDecoder","explicit","implicit","contains","_wrap","stateProps","cstate","child","equal","_useArgs","def","newKey","_decode","wrapResult","prevObj","result","present","prevKey","enterKey","_peekTag","isError","_decodeGeneric","_decodeChoice","enterObject","_decodeTag","track","_getUse","leaveObject","exitKey","leaveKey","_decodeList","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeBool","_decodeInt","some","node","_encodeChoice","_encodePrimitive","isAbsoluteURL","combineURLs","baseURL","requestedURL","pkg","deprecatedWarnings","currentVerArr","version","isOlderVersion","thanVersion","pkgVersionArr","destVer","schema","allowUnknown","opt","isDeprecated","formatMessage","desc","PEMEncoder","label","Cipher","PADDING","createCipheriv","createCipher","equals","padBuff","writeUInt8","reverse","tagClass","0","1","2","3","CancelToken","executor","resolvePromise","token","cancel","DERDecoder","PEMDecoder","decode","lines","toUpperCase","base64","readableDestroyed","writableDestroyed","emitErrorNT","emitCloseNT","emitErrorAndCloseNT","reading","wState","aesModes","desModes","keyLen","ivLen","getCiphers","Cipheriv","Decipheriv","listCiphers","verify","sig","pub","ecVerify","dsaVerify","padNum","publicExponent","algorithm","pubkey","subjectPrivateKey","pub_key","unpacked","signature","checkValue","montp","_transform","__awaiter","_arguments","P","generator","adopt","step","__generator","f","sent","trys","ops","verb","op","pop","Channel","events_1","PASSTHROUGH_EVENTS","PeerTubePlayer","embedElement","scope","eventRegistrar","constructChannel","prepareToBeReady","addEventListener","removeEventListener","readyPromise","play","sendMessage","pause","setVolume","getVolume","seek","seconds","setResolution","resolutionId","getResolutions","getPlaybackRates","getPlaybackRate","setPlaybackRate","rate","build","contentWindow","origin","readyResolve","readyReject","rej","success","isReady","move","_move","for","modrn","allocate","postfix","_toArrayLikeLE","position","_toArrayLikeBE","isNegNum","randomBytes","blind","getr","blinder","unblinder","prime1","prime2","blinds","blinded","c1","c2","qinv","coefficient","exponent1","m2","exponent2","ERR_MISSING_ARGS","destroyer","closed","to","popCallback","streams","destroys","reduce","settle","cookies","buildFullPath","parseHeaders","isURLSameOrigin","requestData","requestHeaders","auth","username","unescape","Authorization","btoa","fullPath","onloadend","responseHeaders","getAllResponseHeaders","responseData","responseText","statusText","open","onreadystatechange","readyState","responseURL","setTimeout","onabort","ontimeout","timeoutErrorMessage","xsrfValue","withCredentials","setRequestHeader","onDownloadProgress","onUploadProgress","upload","send","ieee754","typedArraySupport","__proto__","foo","subarray","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","that","RangeError","encodingOrOffset","ArrayBuffer","fromArrayBuffer","fromString","fromObject","assertSize","checked","isEncoding","actual","fromArrayLike","array","byteOffset","isnan","SlowBuffer","isView","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","dir","isNaN","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","readUInt16BE","foundIndex","found","hexWrite","remaining","strLen","parseInt","substr","utf8Write","blitBuffer","asciiWrite","asciiToBytes","latin1Write","base64Write","ucs2Write","utf16leToBytes","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","decodeCodePointsArray","INSPECT_MAX_BYTES","poolSize","_augment","species","allocUnsafeSlow","_isBuffer","compare","list","pos","swap16","swap32","swap64","thisStart","thisEnd","thisCopy","targetCopy","includes","_arr","MAX_ARGUMENTS_LENGTH","codePoints","fromCharCode","toHex","checkOffset","ext","checkInt","objectWriteUInt16","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","readUIntBE","readUInt16LE","readUInt32LE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","maxBytes","writeUInt16LE","writeUInt32LE","writeIntLE","limit","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","base64clean","stringtrim","units","Infinity","leadSurrogate","byteArray","dst","createHash","algorithms","Sign","_hashType","_hash","_tag","_signType","Verify","createSign","createVerify","sigBuffer","modeModules","ECB","CFB","CFB8","CFB1","OFB","CTR","GCM","ignoreDuplicateOf","line","fns","context","FormData","isFunction","URLSearchParams","product","assignValue","extend","stripBOM","normalizedName","createInstance","defaultConfig","axios","all","promises","spread","default","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","needReadable","emittedReadable","readableListening","resumeScheduled","paused","awaitDrain","readingMore","decoder","_read","readableAddChunk","addToFront","skipChunkCheck","onEofChunk","chunkInvalid","addChunk","maybeReadMore","emitReadable","isPaused","setEncoding","clear","MAX_HWM","computeNewHighWaterMark","howMuchToRead","emitReadable_","flow","maybeReadMore_","pipeOnDrain","updateReadableListening","listenerCount","resume","nReadingNextTick","resume_","fromList","first","consume","endReadable","endReadableNT","xs","nOrig","doRead","pipeOpts","doEnd","stdout","stderr","endFn","unpipe","onunpipe","unpipeInfo","hasUnpiped","cleanup","ondrain","cleanedUp","ondata","dests","ev","removeAllListeners","wrap","_fromList","iterable","derDecodeTag","oct","tagStr","derDecodeLen","decodedTag","_skipUntilEnd","possibleEnd","numstr","printstr","identifiers","subident","second","year","mon","day","hour","sec","UTC","_getDecoder","_inheritsLoose","subClass","superClass","createErrorType","Base","getMessage","arg1","arg2","arg3","NodeError","_Base","oneOf","expected","startsWith","endsWith","this_len","substring","determiner","errors","ReporterError","rethrow","pathLen","inherited","elem","partial","captureStackTrace","relativeURL","api","Entity","_createNamed","Generated","_initNamed","ERR_TRANSFORM_ALREADY_TRANSFORMING","ERR_TRANSFORM_WITH_LENGTH_0","afterTransform","ts","_transformState","transforming","writechunk","rs","needTransform","writeencoding","_flush","err2","handlers","eject","ciphers","deciphers","Rand","rand","generate","_rand","getBytes","getByte","crypto","getRandomValues","msCrypto"],"mappings":"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","file":"js/chunk-vendors~253ae210.c7ebdef7.js","sourcesContent":["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\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar EventRegistrar = (function () {\n function EventRegistrar() {\n this.eventRegistrations = {};\n }\n EventRegistrar.prototype.bindToChannel = function (channel) {\n var _this = this;\n var _loop_1 = function (name_1) {\n channel.bind(name_1, function (txn, params) { return _this.fire(name_1, params); });\n };\n for (var _i = 0, _a = Object.keys(this.eventRegistrations); _i < _a.length; _i++) {\n var name_1 = _a[_i];\n _loop_1(name_1);\n }\n };\n EventRegistrar.prototype.registerTypes = function (names) {\n for (var _i = 0, names_1 = names; _i < names_1.length; _i++) {\n var name_2 = names_1[_i];\n this.eventRegistrations[name_2] = { registrations: [] };\n }\n };\n EventRegistrar.prototype.fire = function (name, event) {\n this.eventRegistrations[name].registrations.forEach(function (x) { return x(event); });\n };\n EventRegistrar.prototype.addListener = function (name, handler) {\n if (!this.eventRegistrations[name]) {\n console.warn(\"PeerTube: addEventListener(): The event '\" + name + \"' is not supported\");\n return false;\n }\n this.eventRegistrations[name].registrations.push(handler);\n return true;\n };\n EventRegistrar.prototype.removeListener = function (name, handler) {\n if (!this.eventRegistrations[name])\n return false;\n this.eventRegistrations[name].registrations = this.eventRegistrations[name].registrations.filter(function (x) { return x === handler; });\n return true;\n };\n return EventRegistrar;\n}());\nexports.EventRegistrar = EventRegistrar;\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;\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\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 return Math.floor(hwm);\n }\n\n // Default value\n return state.objectMode ? 16 : 16 * 1024;\n}\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\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","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n forcedJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n clarifyTimeoutError: validators.transitional(validators.boolean, '1.0.0')\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\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\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nmodule.exports = require('./browser/algorithms.json');\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\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","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","'use strict';\n\nconst decoders = exports;\n\ndecoders.der = require('./der');\ndecoders.pem = require('./pem');\n","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\nvar _require2 = require('util'),\n inspect = _require2.inspect;\nvar custom = inspect && inspect.custom || 'inspect';\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\nmodule.exports = /*#__PURE__*/function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n this.head = null;\n this.tail = null;\n this.length = 0;\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 while (p = p.next) ret += s + p.data;\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 while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n }\n\n // Consumes a specified amount of bytes or characters from the buffered data.\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\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 return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n }\n\n // Consumes a specified amount of characters from the buffered data.\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 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) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Consumes a specified amount of bytes from the buffered data.\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 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) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Make sure the linked list only shows the minimal necessary information.\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread(_objectSpread({}, options), {}, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n return BufferList;\n}();","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\nvar enhanceError = require('./core/enhanceError');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n },\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw enhanceError(e, this, 'E_JSON_PARSE');\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\nconst encoders = exports;\n\nencoders.der = require('./der');\nencoders.pem = require('./pem');\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","var Buffer = require('safe-buffer').Buffer\nvar xor = require('buffer-xor')\n\nfunction encryptStart (self, data, decrypt) {\n var len = data.length\n var out = xor(data, self._cache)\n self._cache = self._cache.slice(len)\n self._prev = Buffer.concat([self._prev, decrypt ? data : out])\n return out\n}\n\nexports.encrypt = function (self, data, decrypt) {\n var out = Buffer.allocUnsafe(0)\n var len\n\n while (data.length) {\n if (self._cache.length === 0) {\n self._cache = self._cipher.encryptBlock(self._prev)\n self._prev = Buffer.allocUnsafe(0)\n }\n\n if (self._cache.length <= data.length) {\n len = self._cache.length\n out = Buffer.concat([out, encryptStart(self, data.slice(0, len), decrypt)])\n data = data.slice(len)\n } else {\n out = Buffer.concat([out, encryptStart(self, data, decrypt)])\n break\n }\n }\n\n return out\n}\n","'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DEREncoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\nmodule.exports = DEREncoder;\n\nDEREncoder.prototype.encode = function encode(data, reporter) {\n return this.tree._encode(data, reporter).join();\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._encodeComposite = function encodeComposite(tag,\n primitive,\n cls,\n content) {\n const encodedTag = encodeTag(tag, primitive, cls, this.reporter);\n\n // Short form\n if (content.length < 0x80) {\n const header = Buffer.alloc(2);\n header[0] = encodedTag;\n header[1] = content.length;\n return this._createEncoderBuffer([ header, content ]);\n }\n\n // Long form\n // Count octets required to store length\n let lenOctets = 1;\n for (let i = content.length; i >= 0x100; i >>= 8)\n lenOctets++;\n\n const header = Buffer.alloc(1 + 1 + lenOctets);\n header[0] = encodedTag;\n header[1] = 0x80 | lenOctets;\n\n for (let i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8)\n header[i] = j & 0xff;\n\n return this._createEncoderBuffer([ header, content ]);\n};\n\nDERNode.prototype._encodeStr = function encodeStr(str, tag) {\n if (tag === 'bitstr') {\n return this._createEncoderBuffer([ str.unused | 0, str.data ]);\n } else if (tag === 'bmpstr') {\n const buf = Buffer.alloc(str.length * 2);\n for (let i = 0; i < str.length; i++) {\n buf.writeUInt16BE(str.charCodeAt(i), i * 2);\n }\n return this._createEncoderBuffer(buf);\n } else if (tag === 'numstr') {\n if (!this._isNumstr(str)) {\n return this.reporter.error('Encoding of string type: numstr supports ' +\n 'only digits and space');\n }\n return this._createEncoderBuffer(str);\n } else if (tag === 'printstr') {\n if (!this._isPrintstr(str)) {\n return this.reporter.error('Encoding of string type: printstr supports ' +\n 'only latin upper and lower case letters, ' +\n 'digits, space, apostrophe, left and rigth ' +\n 'parenthesis, plus sign, comma, hyphen, ' +\n 'dot, slash, colon, equal sign, ' +\n 'question mark');\n }\n return this._createEncoderBuffer(str);\n } else if (/str$/.test(tag)) {\n return this._createEncoderBuffer(str);\n } else if (tag === 'objDesc') {\n return this._createEncoderBuffer(str);\n } else {\n return this.reporter.error('Encoding of string type: ' + tag +\n ' unsupported');\n }\n};\n\nDERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {\n if (typeof id === 'string') {\n if (!values)\n return this.reporter.error('string objid given, but no values map found');\n if (!values.hasOwnProperty(id))\n return this.reporter.error('objid not found in values map');\n id = values[id].split(/[\\s.]+/g);\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n } else if (Array.isArray(id)) {\n id = id.slice();\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n }\n\n if (!Array.isArray(id)) {\n return this.reporter.error('objid() should be either array or string, ' +\n 'got: ' + JSON.stringify(id));\n }\n\n if (!relative) {\n if (id[1] >= 40)\n return this.reporter.error('Second objid identifier OOB');\n id.splice(0, 2, id[0] * 40 + id[1]);\n }\n\n // Count number of octets\n let size = 0;\n for (let i = 0; i < id.length; i++) {\n let ident = id[i];\n for (size++; ident >= 0x80; ident >>= 7)\n size++;\n }\n\n const objid = Buffer.alloc(size);\n let offset = objid.length - 1;\n for (let i = id.length - 1; i >= 0; i--) {\n let ident = id[i];\n objid[offset--] = ident & 0x7f;\n while ((ident >>= 7) > 0)\n objid[offset--] = 0x80 | (ident & 0x7f);\n }\n\n return this._createEncoderBuffer(objid);\n};\n\nfunction two(num) {\n if (num < 10)\n return '0' + num;\n else\n return num;\n}\n\nDERNode.prototype._encodeTime = function encodeTime(time, tag) {\n let str;\n const date = new Date(time);\n\n if (tag === 'gentime') {\n str = [\n two(date.getUTCFullYear()),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else if (tag === 'utctime') {\n str = [\n two(date.getUTCFullYear() % 100),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else {\n this.reporter.error('Encoding ' + tag + ' time is not supported yet');\n }\n\n return this._encodeStr(str, 'octstr');\n};\n\nDERNode.prototype._encodeNull = function encodeNull() {\n return this._createEncoderBuffer('');\n};\n\nDERNode.prototype._encodeInt = function encodeInt(num, values) {\n if (typeof num === 'string') {\n if (!values)\n return this.reporter.error('String int or enum given, but no values map');\n if (!values.hasOwnProperty(num)) {\n return this.reporter.error('Values map doesn\\'t contain: ' +\n JSON.stringify(num));\n }\n num = values[num];\n }\n\n // Bignum, assume big endian\n if (typeof num !== 'number' && !Buffer.isBuffer(num)) {\n const numArray = num.toArray();\n if (!num.sign && numArray[0] & 0x80) {\n numArray.unshift(0);\n }\n num = Buffer.from(numArray);\n }\n\n if (Buffer.isBuffer(num)) {\n let size = num.length;\n if (num.length === 0)\n size++;\n\n const out = Buffer.alloc(size);\n num.copy(out);\n if (num.length === 0)\n out[0] = 0;\n return this._createEncoderBuffer(out);\n }\n\n if (num < 0x80)\n return this._createEncoderBuffer(num);\n\n if (num < 0x100)\n return this._createEncoderBuffer([0, num]);\n\n let size = 1;\n for (let i = num; i >= 0x100; i >>= 8)\n size++;\n\n const out = new Array(size);\n for (let i = out.length - 1; i >= 0; i--) {\n out[i] = num & 0xff;\n num >>= 8;\n }\n if(out[0] & 0x80) {\n out.unshift(0);\n }\n\n return this._createEncoderBuffer(Buffer.from(out));\n};\n\nDERNode.prototype._encodeBool = function encodeBool(value) {\n return this._createEncoderBuffer(value ? 0xff : 0);\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getEncoder('der').tree;\n};\n\nDERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {\n const state = this._baseState;\n let i;\n if (state['default'] === null)\n return false;\n\n const data = dataBuffer.join();\n if (state.defaultBuffer === undefined)\n state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join();\n\n if (data.length !== state.defaultBuffer.length)\n return false;\n\n for (i=0; i < data.length; i++)\n if (data[i] !== state.defaultBuffer[i])\n return false;\n\n return true;\n};\n\n// Utility methods\n\nfunction encodeTag(tag, primitive, cls, reporter) {\n let res;\n\n if (tag === 'seqof')\n tag = 'seq';\n else if (tag === 'setof')\n tag = 'set';\n\n if (der.tagByName.hasOwnProperty(tag))\n res = der.tagByName[tag];\n else if (typeof tag === 'number' && (tag | 0) === tag)\n res = tag;\n else\n return reporter.error('Unknown tag: ' + tag);\n\n if (res >= 0x1f)\n return reporter.error('Multi-octet tag encoding unsupported');\n\n if (!primitive)\n res |= 0x20;\n\n res |= (der.tagClassByName[cls || 'universal'] << 6);\n\n return res;\n}\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","// 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","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","'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","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n callback.apply(this, args);\n };\n}\nfunction noop() {}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\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 var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n var writableEnded = stream._writableState && stream._writableState.finished;\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n var onclose = function onclose() {\n var err;\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 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 var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\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 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}\nmodule.exports = eos;","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\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// 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\nmodule.exports = Writable;\n\n/* */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\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 this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\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;\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nrequire('inherits')(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\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 // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n if (typeof isDuplex !== 'boolean') 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 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 this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex);\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 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 // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'finish' (and potentially 'end')\n this.autoDestroy = !!options.autoDestroy;\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}\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(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})();\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 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}\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\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\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);\n\n // legacy.\n this.writable = true;\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 Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END();\n // TODO: defer error events consistently everywhere, not just the cb\n errorOrDestroy(stream, er);\n process.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 er;\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 if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n return true;\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 if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\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};\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\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};\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});\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}\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});\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 state.length += len;\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 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 return ret;\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}\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\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);\n // this can emit finish, and it will always happen\n // after error\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);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\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 if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\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 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 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 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 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 if (entry === null) state.lastBufferedRequest = null;\n }\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\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 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) endWritable(this, state, cb);\n return this;\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});\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 errorOrDestroy(stream, 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' && !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}\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 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 if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n return need;\n}\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\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\n // reuse the free corkReq.\n state.corkedRequestsFree.next = corkReq;\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 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 }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n var defaultToConfig2Keys = [\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n ];\n var directMergeKeys = ['validateStatus'];\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n }\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n utils.forEach(directMergeKeys, function merge(prop) {\n if (prop in config2) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys)\n .concat(directMergeKeys);\n\n var otherKeys = Object\n .keys(config1)\n .concat(Object.keys(config2))\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, mergeDeepProperties);\n\n return config;\n};\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","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar _Object$setPrototypeO;\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar finished = require('./end-of-stream');\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');\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n if (resolve !== null) {\n var data = iter[kStream].read();\n // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\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}\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 iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n next: function next() {\n var _this = this;\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n if (error !== null) {\n return Promise.reject(error);\n }\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\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 }\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 var lastPromise = this[kLastPromise];\n var promise;\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 if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n promise = new Promise(this[kHandlePromise]);\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 // 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 resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\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 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];\n // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n iterator[kError] = err;\n return;\n }\n var resolve = iterator[kLastResolve];\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\nmodule.exports = createReadableStreamAsyncIterator;","// 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/**/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n};\n/**/\n\nmodule.exports = Duplex;\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\nrequire('inherits')(Duplex, Readable);\n{\n // Allow the keys array to be GC'ed.\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}\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 if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\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});\n\n// the no-half-open enforcer\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n process.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n self.end();\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 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 }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});","'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return (typeof payload === 'object') && (payload.isAxiosError === true);\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 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 xor = require('buffer-xor')\nvar Buffer = require('safe-buffer').Buffer\nvar incr32 = require('../incr32')\n\nfunction getBlock (self) {\n var out = self._cipher.encryptBlockRaw(self._prev)\n incr32(self._prev)\n return out\n}\n\nvar blockSize = 16\nexports.encrypt = function (self, chunk) {\n var chunkNum = Math.ceil(chunk.length / blockSize)\n var start = self._cache.length\n self._cache = Buffer.concat([\n self._cache,\n Buffer.allocUnsafe(chunkNum * blockSize)\n ])\n for (var i = 0; i < chunkNum; i++) {\n var out = getBlock(self)\n var offset = start + i * blockSize\n self._cache.writeUInt32BE(out[0], offset + 0)\n self._cache.writeUInt32BE(out[1], offset + 4)\n self._cache.writeUInt32BE(out[2], offset + 8)\n self._cache.writeUInt32BE(out[3], offset + 12)\n }\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n","'use strict';\n\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\nvar RSA_PKCS1_PADDING = 1;\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 }\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') { throw new Error('wrong private key type'); }\n if (key.padding !== undefined && key.padding !== RSA_PKCS1_PADDING) { throw new Error('illegal or unsupported padding mode'); }\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 = [\n 0x30, total, 0x02, r.length\n ];\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","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\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","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","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar pkg = require('./../../package.json');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\nvar currentVerArr = pkg.version.split('.');\n\n/**\n * Compare package versions\n * @param {string} version\n * @param {string?} thanVersion\n * @returns {boolean}\n */\nfunction isOlderVersion(version, thanVersion) {\n var pkgVersionArr = thanVersion ? thanVersion.split('.') : currentVerArr;\n var destVer = version.split('.');\n for (var i = 0; i < 3; i++) {\n if (pkgVersionArr[i] > destVer[i]) {\n return true;\n } else if (pkgVersionArr[i] < destVer[i]) {\n return false;\n }\n }\n return false;\n}\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator\n * @param {string?} version\n * @param {string} message\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n var isDeprecated = version && isOlderVersion(version);\n\n function formatMessage(opt, desc) {\n return '[Axios v' + pkg.version + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new Error(formatMessage(opt, ' has been removed in ' + version));\n }\n\n if (isDeprecated && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new TypeError('option ' + opt + ' must be ' + result);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw Error('Unknown option ' + opt);\n }\n }\n}\n\nmodule.exports = {\n isOlderVersion: isOlderVersion,\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nconst inherits = require('inherits');\n\nconst DEREncoder = require('./der');\n\nfunction PEMEncoder(entity) {\n DEREncoder.call(this, entity);\n this.enc = 'pem';\n}\ninherits(PEMEncoder, DEREncoder);\nmodule.exports = PEMEncoder;\n\nPEMEncoder.prototype.encode = function encode(data, options) {\n const buf = DEREncoder.prototype.encode.call(this, data);\n\n const p = buf.toString('base64');\n const out = [ '-----BEGIN ' + options.label + '-----' ];\n for (let i = 0; i < p.length; i += 64)\n out.push(p.slice(i, i + 64));\n out.push('-----END ' + options.label + '-----');\n return out.join('\\n');\n};\n","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","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\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\n\nconst DERDecoder = require('./der');\n\nfunction PEMDecoder(entity) {\n DERDecoder.call(this, entity);\n this.enc = 'pem';\n}\ninherits(PEMDecoder, DERDecoder);\nmodule.exports = PEMDecoder;\n\nPEMDecoder.prototype.decode = function decode(data, options) {\n const lines = data.toString().split(/[\\r\\n]+/g);\n\n const label = options.label.toUpperCase();\n\n const re = /^-----(BEGIN|END) ([^-]+)-----$/;\n let start = -1;\n let end = -1;\n for (let i = 0; i < lines.length; i++) {\n const match = lines[i].match(re);\n if (match === null)\n continue;\n\n if (match[2] !== label)\n continue;\n\n if (start === -1) {\n if (match[1] !== 'BEGIN')\n break;\n start = i;\n } else {\n if (match[1] !== 'END')\n break;\n end = i;\n break;\n }\n }\n if (start === -1 || end === -1)\n throw new Error('PEM section not found for: ' + label);\n\n const base64 = lines.slice(start + 1, end).join('');\n // Remove excessive symbols\n base64.replace(/[^a-z0-9+/=]+/gi, '');\n\n const input = Buffer.from(base64, 'base64');\n return DERDecoder.prototype.decode.call(this, input, options);\n};\n","'use strict';\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\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 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 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 return this;\n}\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\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}\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 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}\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\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\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}\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\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\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 }\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 += 1;\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) >= 0) { throw new Error('invalid sig'); }\n}\n\nmodule.exports = verify;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\nvar Transform = require('./_stream_transform');\nrequire('inherits')(PassThrough, Transform);\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Channel = require(\"jschannel\");\nvar events_1 = require(\"./events\");\nvar PASSTHROUGH_EVENTS = [\n 'pause',\n 'play',\n 'playbackStatusUpdate',\n 'playbackStatusChange',\n 'resolutionUpdate',\n 'volumeChange'\n];\nvar PeerTubePlayer = (function () {\n function PeerTubePlayer(embedElement, scope) {\n this.embedElement = embedElement;\n this.scope = scope;\n this.eventRegistrar = new events_1.EventRegistrar();\n this.eventRegistrar.registerTypes(PASSTHROUGH_EVENTS);\n this.constructChannel();\n this.prepareToBeReady();\n }\n PeerTubePlayer.prototype.destroy = function () {\n this.embedElement.remove();\n };\n PeerTubePlayer.prototype.addEventListener = function (event, handler) {\n return this.eventRegistrar.addListener(event, handler);\n };\n PeerTubePlayer.prototype.removeEventListener = function (event, handler) {\n return this.eventRegistrar.removeListener(event, handler);\n };\n Object.defineProperty(PeerTubePlayer.prototype, \"ready\", {\n get: function () {\n return this.readyPromise;\n },\n enumerable: true,\n configurable: true\n });\n PeerTubePlayer.prototype.play = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4, this.sendMessage('play')];\n case 1:\n _a.sent();\n return [2];\n }\n });\n });\n };\n PeerTubePlayer.prototype.pause = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4, this.sendMessage('pause')];\n case 1:\n _a.sent();\n return [2];\n }\n });\n });\n };\n PeerTubePlayer.prototype.setVolume = function (value) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4, this.sendMessage('setVolume', value)];\n case 1:\n _a.sent();\n return [2];\n }\n });\n });\n };\n PeerTubePlayer.prototype.getVolume = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2, this.sendMessage('getVolume')];\n });\n });\n };\n PeerTubePlayer.prototype.seek = function (seconds) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4, this.sendMessage('seek', seconds)];\n case 1:\n _a.sent();\n return [2];\n }\n });\n });\n };\n PeerTubePlayer.prototype.setResolution = function (resolutionId) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4, this.sendMessage('setResolution', resolutionId)];\n case 1:\n _a.sent();\n return [2];\n }\n });\n });\n };\n PeerTubePlayer.prototype.getResolutions = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2, this.sendMessage('getResolutions')];\n });\n });\n };\n PeerTubePlayer.prototype.getPlaybackRates = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2, this.sendMessage('getPlaybackRates')];\n });\n });\n };\n PeerTubePlayer.prototype.getPlaybackRate = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2, this.sendMessage('getPlaybackRate')];\n });\n });\n };\n PeerTubePlayer.prototype.setPlaybackRate = function (rate) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4, this.sendMessage('setPlaybackRate', rate)];\n case 1:\n _a.sent();\n return [2];\n }\n });\n });\n };\n PeerTubePlayer.prototype.constructChannel = function () {\n this.channel = Channel.build({\n window: this.embedElement.contentWindow,\n origin: '*',\n scope: this.scope || 'peertube'\n });\n this.eventRegistrar.bindToChannel(this.channel);\n };\n PeerTubePlayer.prototype.prepareToBeReady = function () {\n var readyResolve;\n var readyReject;\n this.readyPromise = new Promise(function (res, rej) {\n readyResolve = res;\n readyReject = rej;\n });\n this.channel.bind('ready', function (success) { return success ? readyResolve() : readyReject(); });\n this.channel.call({\n method: 'isReady',\n success: function (isReady) { return isReady ? readyResolve() : null; }\n });\n };\n PeerTubePlayer.prototype.sendMessage = function (method, params) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n _this.channel.call({\n method: method, params: params,\n success: function (result) { return resolve(result); },\n error: function (error) { return reject(error); }\n });\n });\n };\n return PeerTubePlayer;\n}());\nexports.PeerTubePlayer = PeerTubePlayer;\nwindow['PeerTubePlayer'] = PeerTubePlayer;\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","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","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar eos;\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}\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\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;\n\n // request.destroy just do .end - .abort is what we want\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}\nfunction call(fn) {\n fn();\n}\nfunction pipe(from, to) {\n return from.pipe(to);\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}\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\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}\nmodule.exports = pipeline;","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(\n timeoutErrorMessage,\n config,\n config.transitional && config.transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","'use strict';\n\nvar 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 this._hash.update(typeof data === 'string' ? Buffer.from(data, enc) : data);\n\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 this._hash.update(typeof data === 'string' ? Buffer.from(data, enc) : data);\n\n return this;\n};\n\nVerify.prototype.verify = function verifyMethod(key, sig, enc) {\n var sigBuffer = typeof sig === 'string' ? Buffer.from(sig, enc) : sig;\n\n this.end();\n var hash = this._hash.digest();\n return verify(sigBuffer, 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","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","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","module.exports = require('./lib/axios');","function incr32 (iv) {\n var len = iv.length\n var item\n while (len--) {\n item = iv.readUInt8(len)\n if (item === 255) {\n iv.writeUInt8(0, len)\n } else {\n item++\n iv.writeUInt8(item, len)\n break\n }\n }\n}\nmodule.exports = incr32\n","var xor = require('buffer-xor')\n\nexports.encrypt = function (self, block) {\n var data = xor(block, self._prev)\n\n self._prev = self._cipher.encryptBlock(data)\n return self._prev\n}\n\nexports.decrypt = function (self, block) {\n var pad = self._prev\n\n self._prev = block\n var out = self._cipher.decryptBlock(block)\n\n return xor(out, pad)\n}\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('./../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\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\nmodule.exports = Readable;\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).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/**/\nvar debugUtil = require('util');\nvar debug;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/buffer_list');\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\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;\n\n// Lazy loaded to improve the startup performance.\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\nrequire('inherits')(Readable, Stream);\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\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 (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\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 if (typeof isDuplex !== 'boolean') 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 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 this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex);\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 this.paused = true;\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'end' (and potentially 'finish')\n this.autoDestroy = !!options.autoDestroy;\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 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}\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options);\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex);\n\n // legacy\n this.readable = true;\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 Stream.call(this);\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 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 }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\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 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 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};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\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 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 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 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 }\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 return !state.ended && (state.length < state.highWaterMark || state.length === 0);\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 maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n var er;\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 return er;\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 var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder;\n // If setEncoding(null), decoder.encoding equals utf8\n this._readableState.encoding = this._readableState.decoder.encoding;\n\n // Iterate over current buffer to convert already stored Buffers:\n var p = this._readableState.buffer.head;\n var content = '';\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n this._readableState.buffer.clear();\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n};\n\n// Don't raise the hwm > 1GB\nvar MAX_HWM = 0x40000000;\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 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 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.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 = 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 var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\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 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 if (ret !== null) this.emit('data', ret);\n return ret;\n};\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\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 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 if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\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 debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n }\n\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 state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\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 process.nextTick(maybeReadMore_, stream, state);\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)\n // didn't get any data, stop spinning.\n break;\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 errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\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 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 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 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 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 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 src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\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 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) errorOrDestroy(dest, 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 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 return dest;\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 if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n };\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 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 for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\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 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};\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 var state = this._readableState;\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;\n\n // Try start flowing on next tick if stream isn't explicitly paused\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 if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\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 return res;\n};\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\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 return res;\n};\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\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;\n\n // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\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 // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n state.paused = false;\n return this;\n};\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n if (!state.reading) {\n stream.read(0);\n }\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n this._readableState.paused = true;\n return this;\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 var state = this._readableState;\n var paused = false;\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 _this.push(null);\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 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 methodWrap(method) {\n return function methodWrapReturnFunction() {\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 return this;\n};\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n return createReadableStreamAsyncIterator(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 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});\n\n// exposed for testing purposes only.\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});\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 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}\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length);\n\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 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 if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\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 return from(Readable, iterable, opts);\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}","'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","'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","'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';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\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","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\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;\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;\nvar Duplex = require('./_stream_duplex');\nrequire('inherits')(Transform, Duplex);\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null)\n // 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 if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\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 };\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 if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\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}\nfunction prefinish() {\n var _this = this;\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}\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 cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\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 if (ts.writechunk !== null && !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};\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null)\n // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // 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 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 = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n","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":""}