{"version":3,"sources":["ethers.min.js"],"names":["f","exports","module","define","amd","window","global","self","this","ethers","r","e","n","t","o","i","c","require","u","a","Error","code","p","call","length","1","Object","defineProperty","value","version","2","__importStar","mod","__esModule","result","k","hasOwnProperty","interface_1","abi_coder_1","address_1","bignumber_1","bytes_1","constants_1","properties_1","web_1","errors","abstract_provider_1","abstract_signer_1","allowedTransactionKeys","data","from","gasLimit","gasPrice","nonce","to","runMethod","contract","functionName","estimateOnly","method","interface","functions","params","_i","arguments","tx","inputs","key","shallowCopy","pop","forEach","throwError","UNSUPPORTED_OPERATION","operation","addressPromise","resolveAddresses","provider","paramType","Array","isArray","promises","index","v","name","push","Promise","all","type","resolveName","components","isArrayMatch","match","subParamType","resolve","then","encode","Zero","signer","getAddress","hexDataLength","hexDataSlice","reason","defaultAbiCoder","decode","CALL_EXCEPTION","address","args","signature","errorSignature","errorArgs","transaction","outputs","error","estimateGas","gas","bigNumberify","add","sendTransaction","getEventTag","filter","topics","join","Contract","addressOrName","contractInterface","signerOrProvider","_this","checkNew","Interface","isInterface","defineReadOnly","Signer","isSigner","Provider","isProvider","INVALID_ARGUMENT","arg","keys","events","eventName","event","filters","encodeTopics","_events","catch","console","log","argument","run","estimate","prototype","deployed","deployTransaction","wait","poll","getCode","onceBlock","fallback","overrides","connect","attach","deploy","bytecode","isHexString","deployFunction","checkArgumentCount","getContractAddress","isIndexed","_getEventFilter","parseLog","eventTag","indexOf","formatSignature","parseSignature","event_1","argumnet","filter_1","topic","toLowerCase","_addEventListener","eventFilter","listener","once","wrappedListener","decoded","slice","jsonCopy","eventSignature","removeListener","getBlock","blockHash","getTransaction","getTransactionReceipt","transactionHash","emit","apply","concat","on","addEventLisener","setTimeout","listenerCount","listeners","map","removeAllListeners","found","../providers/abstract-provider","../utils/abi-coder","../utils/address","../utils/bignumber","../utils/bytes","../utils/constants","../utils/errors","../utils/properties","../utils/web","../wallet/abstract-signer","./interface","3","contract_1","./contract","4","extendStatics","__extends","setPrototypeOf","__proto__","d","b","__","constructor","create","hash_1","keccak256_1","_Indexed","hash","setType","Description","info","BigNumber","isBigNumber","defineFrozen","_DeployDescription","_super","substring","_FunctionDescription","sighash","arrayify","errorArg","errorValue","Result","_EventDescription","UNEXPECTED_ARGUMENT","maxCount","expectedCount","anonymous","param","indexed","id","keccak256","NOT_IMPLEMENTED","hexZeroPad","hexlify","inputIndexed","inputNonIndexed","inputDynamic","resultIndexed","resultNonIndexed","nonIndexedIndex","indexedIndex","input","_TransactionDescription","_LogDescription","addMethod","description","payable","replace","abi","JSON","parse","errorMessage","message","_abi","fragment","parseTransaction","func","values","isType","../utils/hash","../utils/keccak256","5","contracts_1","providers","wallet_1","HDNode","SigningKey","Wallet","AbiCoder","constants","utils","types","wordlists","shims_1","platform","_version_1","getDefaultProvider","network","FallbackProvider","InfuraProvider","EtherscanProvider","./_version","./contracts","./providers","./types","./utils","./utils/abi-coder","./utils/bignumber","./utils/constants","./utils/errors","./utils/shims","./wallet","./wordlists","6","m","__export","./ethers","7","root","checkInt","parseInt","checkInts","arrayish","coerceArray","copy","buffer","ArrayBuffer","isView","Uint8Array","createArray","copyArray","sourceArray","targetArray","targetStart","sourceStart","sourceEnd","set","Hex","convertUtf8","toBytes","text","encodeURI","charCodeAt","substr","fromBytes","bytes","String","fromCharCode","convertHex","numberOfRounds","16","24","32","rcon","S","Si","T1","T2","T3","T4","T5","T6","T7","T8","U1","U2","U3","U4","convertToInt32","AES","_prepare","rounds","_Ke","_Kd","roundKeyCount","KC","tk","tt","rconpointer","encrypt","plaintext","decrypt","ciphertext","ModeOfOperationECB","_aes","block","ModeOfOperationCBC","iv","_lastCipherblock","j","ModeOfOperationCFB","segmentSize","_shiftRegister","xorSegment","encrypted","ModeOfOperationOFB","_lastPrecipher","_lastPrecipherIndex","Counter","initialValue","_counter","setValue","setBytes","increment","ModeOfOperationCTR","counter","_remainingCounter","_remainingCounterIndex","aesjs","ModeOfOperation","ecb","cbc","cfb","ofb","ctr","hex","utf8","padding","pkcs7","pad","padder","strip","_arrayTest","_aesjs","8","assert","val","msg","inherits","ctor","superCtor","super_","TempCtor","BN","number","base","endian","isBN","negative","words","red","_init","Buffer","wordSize","parseHex","str","start","end","len","Math","min","parseBase","mul","num","max","left","right","cmp","_initNumber","_initArray","toString","_parseHex","_parseBase","toArray","ceil","w","off","limbLen","limbPow","total","word","imuln","_iaddn","pow","dest","clone","_expand","size","_normSign","inspect","zeros","groupSizes","groupBases","smallMulTo","out","lo","carry","ncarry","rword","maxJ","groupSize","groupBase","isZero","modn","idivn","toNumber","ret","toJSON","toBuffer","toArrayLike","ArrayType","byteLength","reqLength","littleEndian","res","q","andln","iushrn","_countBits","clz32","_zeroBits","bitLength","hi","zeroBits","toTwos","width","abs","inotn","iaddn","fromTwos","testn","notn","ineg","isNeg","neg","iuor","ior","or","uor","iuand","iand","and","uand","iuxor","ixor","xor","uxor","bytesNeeded","bitsLeft","setn","bit","wbit","iadd","isub","sub","comb10MulTo","mid","a0","al0","ah0","a1","al1","ah1","a2","al2","ah2","a3","al3","ah3","a4","al4","ah4","a5","al5","ah5","a6","al6","ah6","a7","al7","ah7","a8","al8","ah8","a9","al9","ah9","b0","bl0","bh0","b1","bl1","bh1","b2","bl2","bh2","b3","bl3","bh3","b4","bl4","bh4","b5","bl5","bh5","b6","bl6","bh6","b7","bl7","bh7","b8","bl8","bh8","b9","bl9","bh9","w0","imul","w1","w2","w3","w4","w5","w6","w7","w8","w9","w10","w11","w12","w13","w14","w15","w16","w17","w18","jumboMulTo","FFTM","mulp","x","y","mulTo","hncarry","bigMulTo","makeRBT","N","l","revBin","rb","permute","rbt","rws","iws","rtws","itws","transform","s","rtwdf","cos","PI","itwdf","sin","rtwdf_","itwdf_","re","ie","ro","io","rx","guessLen13b","odd","conjugate","normalize13b","ws","round","convert13b","stub","ph","_","rwst","iwst","nrws","nrwst","niwst","rmws","mulf","muln","sqr","isqr","toBitArray","iushln","bits","carryMask","newCarry","ishln","hint","extended","h","mask","maskedWords","ishrn","shln","ushln","shrn","ushrn","imaskn","maskn","isubn","addn","subn","iabs","_ishlnsubmul","shift","_wordDiv","mode","bhi","diff","qj","div","divmod","positive","divn","umod","divRound","dm","half","r2","acc","egcd","A","B","C","D","g","isEven","yp","xp","im","isOdd","jm","gcd","_invmp","x1","x2","delta","cmpn","invm","bincn","ucmp","gtn","gt","gten","gte","ltn","lt","lten","lte","eqn","eq","Red","toRed","ctx","convertTo","_forceRed","fromRed","convertFrom","forceRed","redAdd","redIAdd","redSub","redISub","redShl","shl","redMul","_verify2","redIMul","redSqr","_verify1","redISqr","redSqrt","sqrt","redInvm","redNeg","redPow","primes","k256","p224","p192","p25519","MPrime","tmp","_tmp","K256","P224","P192","P25519","prime","_prime","Mont","imod","rinv","minv","ireduce","rlen","split","imulK","output","outLen","prev","next","mod3","one","nOne","lpow","z","inv","wnd","current","currentLen","mont","9","crypto","msCrypto","getRandomValues","10","11","elliptic","rand","hmacDRBG","curve","curves","ec","eddsa","../package.json","./elliptic/curve","./elliptic/curves","./elliptic/ec","./elliptic/eddsa","./elliptic/hmac-drbg","./elliptic/utils","brorand","12","getNAF","getJSF","BaseCurve","conf","zero","two","pointFromJSON","gRed","_wnafT1","_wnafT2","_wnafT3","_wnafT4","adjustCount","redN","_maxwellTrick","BasePoint","precomputed","point","validate","_fixedNafMul","doubles","_getDoubles","naf","I","step","repr","nafW","jpoint","mixedAdd","points","toP","_wnafMul","nafPoints","_getNAFPoints","dblp","_wnafMulAdd","defW","coeffs","jacobianResult","wndWidth","comb","toJ","jsf","ja","jb","decodePoint","enc","pointFromX","encodeCompressed","_encode","compact","getX","getY","precompute","power","beta","_getBeta","_hasDoubles","dbl","../../elliptic","bn.js","13","14","short","edwards","./base","./edwards","./mont","./short","15","dup","Base","ShortCurve","tinv","zeroA","threeA","endo","_getEndomorphism","_endoWnafT1","_endoWnafT2","Point","isRed","inf","JPoint","zOne","lambda","betas","_getEndoRoots","lambdas","basis","vec","_getEndoBasis","ntinv","prevR","aprxSqrt","floor","y1","y2","len1","_endoSplit","v1","v2","c1","c2","p1","p2","q1","q2","k1","k2","ax","rhs","_endoWnafMulAdd","npoints","ncoeffs","obj","fromJSON","pre","endoMul","obj2point","isInfinity","nx","ny","ys1","dyinv","mulAdd","jmulAdd","_precompute","negate","zinv","zinv2","ay","pz2","z2","u1","u2","s1","s2","h2","h3","nz","jx","jy","jz","jz4","jyd","jx2","jyd2","jyd4","t1","t2","dny","_zeroDbl","_threeDbl","_dbl","xx","yy","yyyy","yyyy8","c8","gamma","alpha","beta4","beta8","ggamma8","jy2","jxd4","jyd8","trpl","zz","mm","ee","yyu4","kbase","z3","pz3","eqXToP","zs","xc","../curve","17","PresetCurve","options","defineCurve","configurable","enumerable","get","sha256","sha384","sha512","undefined","../elliptic","./precomputed/secp256k1","hash.js","18","KeyPair","Signature","EC","nh","keyPair","keyFromPrivate","priv","fromPrivate","keyFromPublic","pub","fromPublic","genKeyPair","drbg","pers","entropy","hmacStrength","ns2","generate","_truncateToN","truncOnly","sign","bkey","getPrivate","persEnc","ns1","iter","kp","kpX","recoveryParam","canonical","verify","sinv","getPublic","recoverPubKey","isYOdd","isSecondKey","rInv","getKeyRecoveryParam","Q","Qprime","./key","./signature","19","_importPrivate","privEnc","_importPublic","pubEnc","derive","20","_importDER","Position","place","getLength","buf","initial","octetLen","rmPadding","constructLength","arr","octets","LN2","slen","toDER","backHalf","21","22","HmacDRBG","predResist","outSize","minEntropy","reseed","reseedInterval","K","V","entropyEnc","nonceEnc","seed","_update","_hmac","hmac","kmac","update","digest","addEnc","temp","23","zero2","toHex","d1","d2","m8","m14","m24","cachedProperty","computer","parseBytes","intFromLE","25","26","common","sha","ripemd","sha1","sha224","ripemd160","./hash/common","./hash/hmac","./hash/ripemd","./hash/sha","./hash/utils","27","BlockHash","pending","pendingTotal","blockSize","padLength","_delta8","_delta32","join32","_pad","_digest","minimalistic-assert","28","Hmac","Hash","inner","outer","29","30","./sha/1","./sha/224","./sha/256","./sha/384","./sha/512","31","33","shaCommon","sum32","sum32_4","sum32_5","ch32","maj32","s0_256","s1_256","g0_256","g1_256","sha256_K","SHA256","W","toHex32","split32","../common","../utils","./common","34","35","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","sha512_K","SHA512","ch64_hi","xh","xl","yh","yl","zh","ch64_lo","zl","maj64_hi","maj64_lo","s0_512_hi","s0_512_lo","s1_512_hi","s1_512_lo","g0_512_hi","g0_512_lo","g1_512_hi","g1_512_lo","_prepareBlock","c0_hi","c0_lo","c1_hi","c1_lo","c2_hi","c2_lo","c3_hi","c3_lo","ah","al","bh","bl","ch","cl","dh","dl","eh","el","fh","fl","gh","gl","hh","hl","c4_hi","c4_lo","T1_hi","T1_lo","T2_hi","T2_lo","36","rotr32","p32","ft_1","37","htonl","zero8","rotl32","sum32_3","pos","38","writable","39","process","JS_SHA3_NO_NODE_JS","versions","node","COMMON_JS","JS_SHA3_NO_COMMON_JS","HEX_CHARS","SHIFT","RC","BITS","OUTPUT_TYPES","createOutputMethod","outputType","Keccak","createShakeOutputMethod","outputBits","createMethod","algorithms","methods","methodNames","algorithm","methodName","blocks","reset","blockCount","byteCount","outputBlocks","extraBytes","notString","lastByteIndex","finalize","arrayBuffer","array","Uint32Array","offset","c0","c3","c4","c5","c6","c7","c9","b10","b11","b12","b13","b14","b15","b16","b17","b18","b19","b20","b21","b22","b23","b24","b25","b26","b27","b28","b29","b30","b31","b32","b33","b34","b35","b36","b37","b38","b39","b40","b41","b42","b43","b44","b45","b46","b47","b48","b49","_process","40","equal","41","browser","42","setImmediate","MAX_VALUE","h0","h1","h4","h5","h6","h7","bytesLeft","bitLenHi","bitLenLo","numZeros","PBKDF2_HMAC_SHA256_OneIter","password","salt","dkLen","innerLen","outerKey","dk","incrementCounter","blockmix_salsa8","BY","Yi","_X","arraycopy","blockxor","salsa20_8","R","src","srcPos","destPos","checkBufferish","ensureInteger","intValue","scrypt","callback","i1","Bi","XY","totalOps","currentOp","lastPercent10","stop","state","i0","limit","nextTick","incrementalSMix","steps","percent10","derivedKey","_scrypt","timers","43","html","channel","messagePrefix","onGlobalMessage","nextHandle","tasksByHandle","currentlyRunningATask","doc","document","attachTo","getPrototypeOf","handle","addFromSetImmediateArguments","partiallyApplied","runIfPresent","postMessage","importScripts","postMessageIsAsynchronous","oldOnMessage","onmessage","canUsePostMessage","MessageChannel","port1","port2","createElement","documentElement","script","onreadystatechange","removeChild","appendChild","random","source","addEventListener","attachEvent","clearImmediate","handler","Function","task","44","45","rng","_rnds8","_rnds","46","_rng","_byteToHex","_hexToByte","unparse","bth","_seedBytes","_nodeId","_clockseq","_lastMSecs","_lastNSecs","v4","rnds","ii","uuid","clockseq","msecs","Date","getTime","nsecs","dt","tl","tmh","oct","./rng","47","XMLHttpRequest","48","49","networks_1","rlp_1","transaction_1","utf8_1","check","format","object","checkKey","checkValue","allowNull","nullValue","arrayOf","checkHash","checkNumber","checkUint256","uint256","checkBlockTag","blockTag","hexStripZeros","formatBlock","parentHash","timestamp","difficulty","gasUsed","miner","extraData","transactions","checkBlock","author","formatTransaction","blockNumber","transactionIndex","creates","raw","formatTransactionRequest","checkTransactionRequest","formatTransactionReceiptLog","transactionLogIndex","logIndex","formatTransactionReceipt","contractAddress","logsBloom","logs","cumulativeGasUsed","status","formatFilter","fromBlock","toBlock","checkTopics","replaceValue","formatLog","removed","checkLog","serializeTopics","BaseProvider","knownNetwork","getNetwork","_network","_lastBlockNumber","_balances","_pollingInterval","_emitted","_doPoll","getBlockNumber","newBalances","comps","tag","hash_2","receipt","address_2","getBalance","balance","lastBalance","getLogs","doPoll","resetEventsBlock","ready","_poller","setInterval","bind","pollingInterval","clearInterval","waitForTransaction","timeout","perform","getGasPrice","resolveProperties","_a","getTransactionCount","getStorageAt","position","signedTransaction","_wrapTransaction","UNKNOWN_ERROR","expectedHash","returnedHash","_resolveNames","blockHashOrBlockTag","blockNumber_1","blockTag_1","checkTransactionResponse","transactionReceipt","entry","byzantium","getEtherPrice","_getResolver","ensAddress","namehash","nodeHash","resolverAddress","lookupAddress","nodehash","toUtf8String","addr","stripZeros","networkId","_startPending","_stopPending","polling","inheritable","../utils/networks","../utils/rlp","../utils/transaction","../utils/utf8","./abstract-provider","50","base_provider_1","getTransactionString","getResult","stringify","getJsonResult","jsonrpc","checkLogTag","apiKey","baseUrl","url","fetchJson","responseText","INSUFFICIENT_FUNDS","NONCE_EXPIRED","REPLACEMENT_UNDERPRICED","topic0","reject","txs","seq","parseFloat","ethusd","getHistory","startBlock","endBlock","item","timeStamp","./base-provider","51","checkNetworks","networks","chainId","ready_1","_providers","firstError","52","etherscan_provider_1","fallback_provider_1","ipc_provider_1","IpcProvider","infura_provider_1","json_rpc_provider_1","JsonRpcProvider","JsonRpcSigner","web3_provider_1","Web3Provider","./etherscan-provider","./fallback-provider","./infura-provider","./ipc-provider","./json-rpc-provider","./web3-provider","53","apiAccessToken","host","getSigner","listAccounts","54","55","payload","getLowerCase","_constructorGuard","constructorGuard","addressOrIndex","_address","send","accounts","_index","hexlifyTransaction","signMessage","toUtf8Bytes","unlock","connection","request","_pendingFilter","pendingFilter","filterId","hashes","56","web3Provider","path","sendAsync","_sendAsync","_web3Provider","isMetaMask","57","hmac_1","SupportedAlgorithms","UnicodeNormalizationForm","wordlist_1","Wordlist","./providers/abstract-provider","./utils/hmac","./utils/utf8","./wallet/abstract-signer","./wordlists/wordlist","58","paramTypeBytes","RegExp","paramTypeNumber","paramTypeArray","defaultCoerceFunc","regexParen","regexIdentifier","verifyType","parseParam","allowIndexed","parent","allowType","allowParams","child","allowName","allowArray","sibling","readArray","formatParamType","getParamCoder","parseParamType","trim","splitNesting","modifier","parseSignatureEvent","constant","stateMutability","parseSignatureFunction","Coder","coerceFunc","localName","dynamic","CoderAnonymous","coder","CoderNull","consumed","CoderNumber","signed","bounds","MaxUint256","One","NegativeOne","padZeros","coderType","junkLength","uint256Coder","CoderBoolean","CoderFixedBytes","CoderAddress","_encodeDynamicBytes","dataLength","_decodeDynamicBytes","CoderDynamicBytes","CoderString","alignSize","pack","coders","arrayValues","parts","staticSize","dynamicSize","part","dynamicOffset","unpack","baseOffset","CoderArray","count","decodedLength","CoderTuple","accum","depth","paramTypeSimple","bool","string","component","getTupleParamCoder","typeObject","./address","./bignumber","./bytes","./errors","./properties","./utf8","59","__importDefault","default","bn_js_1","getChecksumAddress","chars","hashed","i_1","toUpperCase","ibanLookup","safeDigits","log10","LN10","ibanChecksum","expanded","checksum","getIcapAddress","base36","./keccak256","./rlp","60","textData","atob","btoa","61","BN_1","bn","toBN","_bnify","toBigNumber","_hex","NUMERIC_FAULT","fault","outputValue","details","toHexString","isArrayish","other","62","isHexable","addSlice","objects","arrays","HexCharacters","splitSignature","joinSignature","63","AddressZero","HashZero","EtherSymbol","Two","WeiPerEther","64","MISSING_NEW","MISSING_ARGUMENT","_permanentCensorErrors","_censorErrors","messageDetails","kind","suffix","setCensorship","censorship","permanent","65","Zeros","Partition","UseSTD3ASCIIRules","partition","label","hashMessage","66","computeHmac","67","base64","json_wallet_1","getJsonWalletAddress","sha2_1","solidity_1","solidityKeccak256","solidityPack","soliditySha256","random_bytes_1","randomBytes","RLP","secp256k1_1","computePublicKey","verifyMessage","serializeTransaction","serialize","units_1","formatEther","parseEther","formatUnits","parseUnits","./abi-coder","./base64","./hash","./json-wallet","./networks","./random-bytes","./secp256k1","./sha2","./solidity","./transaction","./units","./web","68","isCrowdsaleWallet","json","encseed","ethaddr","isSecretStorageWallet","69","sha3","keccak_256","js-sha3","70","homestead","ropsten","unspecified","mainnet","morden","testnet","rinkeby","kovan","classic","n_1","n_2","71","pbkdf2","iterations","keylen","hashAlgorithm","hLen","T","DK","block1","U","./hmac","72","frozen","_ethersType","73","trunc","_weakCrypto","74","arrayifyInteger","unshift","unarrayifyInteger","_decodeChildren","childOffset","_decode","lengthLength","75","elliptic_1","_curve","getCurve","privateKey","recoverPublicKey","sig","compressed","compressedPublicKey","publicKey","recoverAddress","computeAddress","76","hash_js_1","77","setimmediate","78","regexBytes","regexNumber","regexArray","tight","_pack","baseType","79","handleNumber","transactionFields","maxLength","fieldInfo","unsignedTransaction","rawTransaction","./constants","80","unitInfos","_getUnitInfo","decimals","tenPower","getUnitInfo","unitType","unitInfo","fraction","whole","commify","wholeValue","fractionValue","wei","ether","81","form","normalize","extraLength","nextChar","82","xmlhttprequest_1","base64_1","processFunc","headers","user","allowInsecure","authorization","open","header","setRequestHeader","readyState","jsonError","orginialError","body","statusCode","onerror","connectionError","ceiling","interval","timer","done","cancel","clearTimeout","attempt","xmlhttprequest","83","84","lang_en_1","pbkdf2_1","MasterSecret","HardenedBit","getUpperMask","defaultPath","chainCode","mnemonic","_derive","publicKeyBytes","IL","IR","ki","derivePath","isHDNode","_fromSeed","seedArray","mnemonicToSeed","NFKD","mnemonicToEntropy","wordlist","langEn","getWordIndex","entropyBits","checksumMask","fromMnemonic","fromSeed","entropyToMnemonic","indices","remainingBits","checksumBits","getWord","isValidMnemonic","../utils/hmac","../utils/pbkdf2","../utils/secp256k1","../utils/sha2","../wordlists/lang-en","85","signing_key_1","./hdnode","./signing-key","86","aes_js_1","scrypt_js_1","uuid_1","looseArrayify","hexString","zpad","getPassword","NFKC","searchPath","currentChild","matchingChild","decryptCrowdsale","encryptedSeed","aesCbc","seedHex","seedHexBytes","signingKey","progressCallback","passwordBytes","getSigningKey","derivedHalf","aesCtr","mnemonicKey","mnemonicCiphertext","mnemonicIv","mnemonicCounter","mnemonicAesCtr","kdf","progress","prfFunc","prf","privateKeyBytes","isSigningKey","client","uuidRandom","macPrefix","mac","Crypto","cipher","cipherparams","kdfparams","dklen","now","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","gethFilename","../utils/random-bytes","aes-js","scrypt-js","87","hdnode_1","signDigest","88","secretStorage","rawTx","createRandom","extraEntropy","locale","fromEncryptedJson","../utils/json-wallet","./abstract-signer","./secret-storage","89","en","90","loadWords","lang","LangEn","register","./wordlist","91"],"mappings":"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AAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAC//CC,EAAI,CAAC,GAAM,EAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,EAAM,IAAM,IAAM,IAAM,EAAM,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,EAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,GAAM,KAG//CC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAC1/FC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,EAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAC1/FC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAC1/FC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAG1/FC,EAAK,CAAC,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,EAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,EAAK,CAAC,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,SAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,YAG1/FC,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WA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","file":"ethers.min.js","sourcesContent":["(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.ethers = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i 0) {\n errors.throwError('call exception', errors.CALL_EXCEPTION, {\n address: contract.address,\n method: method.signature,\n args: params\n });\n }\n throw error;\n }\n });\n }\n else if (method.type === 'transaction') {\n // Only computing the transaction estimate\n if (estimateOnly) {\n if (!contract.provider) {\n errors.throwError('estimate gas require a provider or a signer with a provider', errors.UNSUPPORTED_OPERATION, { operation: 'estimateGas' });\n }\n if (tx.from == null && contract.signer) {\n tx.from = contract.signer.getAddress();\n }\n return contract.provider.estimateGas(tx);\n }\n if (tx.gasLimit == null && method.gas != null) {\n tx.gasLimit = bignumber_1.bigNumberify(method.gas).add(21000);\n }\n if (!contract.signer) {\n errors.throwError('sending a transaction require a signer', errors.UNSUPPORTED_OPERATION, { operation: 'sendTransaction' });\n }\n // Make sure they aren't overriding something they shouldn't\n if (tx.from != null) {\n errors.throwError('cannot override from in a transaction', errors.UNSUPPORTED_OPERATION, { operation: 'sendTransaction' });\n }\n return contract.signer.sendTransaction(tx);\n }\n throw new Error('invalid type - ' + method.type);\n return null;\n });\n };\n}\nfunction getEventTag(filter) {\n return (filter.address || '') + (filter.topics ? filter.topics.join(':') : '');\n}\nvar Contract = /** @class */ (function () {\n // https://github.com/Microsoft/TypeScript/issues/5453\n // Once this issue is resolved (there are open PR) we can do this nicer\n // by making addressOrName default to null for 2 operand calls. :)\n function Contract(addressOrName, contractInterface, signerOrProvider) {\n var _this = this;\n errors.checkNew(this, Contract);\n // @TODO: Maybe still check the addressOrName looks like a valid address or name?\n //address = getAddress(address);\n if (interface_1.Interface.isInterface(contractInterface)) {\n properties_1.defineReadOnly(this, 'interface', contractInterface);\n }\n else {\n properties_1.defineReadOnly(this, 'interface', new interface_1.Interface(contractInterface));\n }\n if (abstract_signer_1.Signer.isSigner(signerOrProvider)) {\n properties_1.defineReadOnly(this, 'provider', signerOrProvider.provider);\n properties_1.defineReadOnly(this, 'signer', signerOrProvider);\n }\n else if (abstract_provider_1.Provider.isProvider(signerOrProvider)) {\n properties_1.defineReadOnly(this, 'provider', signerOrProvider);\n properties_1.defineReadOnly(this, 'signer', null);\n }\n else {\n errors.throwError('invalid signer or provider', errors.INVALID_ARGUMENT, { arg: 'signerOrProvider', value: signerOrProvider });\n }\n properties_1.defineReadOnly(this, 'estimate', {});\n properties_1.defineReadOnly(this, 'functions', {});\n properties_1.defineReadOnly(this, 'filters', {});\n Object.keys(this.interface.events).forEach(function (eventName) {\n var event = _this.interface.events[eventName];\n properties_1.defineReadOnly(_this.filters, eventName, function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return {\n address: _this.address,\n topics: event.encodeTopics(args)\n };\n });\n });\n // Not connected to an on-chain instance, so do not connect functions and events\n if (!addressOrName) {\n properties_1.defineReadOnly(this, 'address', null);\n properties_1.defineReadOnly(this, 'addressPromise', Promise.resolve(null));\n return;\n }\n this._events = [];\n properties_1.defineReadOnly(this, 'address', addressOrName);\n if (this.provider) {\n properties_1.defineReadOnly(this, 'addressPromise', this.provider.resolveName(addressOrName).then(function (address) {\n if (address == null) {\n throw new Error('name not found');\n }\n return address;\n }).catch(function (error) {\n console.log('ERROR: Cannot find Contract - ' + addressOrName);\n throw error;\n }));\n }\n else {\n try {\n properties_1.defineReadOnly(this, 'addressPromise', Promise.resolve(address_1.getAddress(addressOrName)));\n }\n catch (error) {\n errors.throwError('provider is required to use non-address contract address', errors.INVALID_ARGUMENT, { argument: 'addressOrName', value: addressOrName });\n }\n }\n Object.keys(this.interface.functions).forEach(function (name) {\n var run = runMethod(_this, name, false);\n if (_this[name] == null) {\n properties_1.defineReadOnly(_this, name, run);\n }\n else {\n console.log('WARNING: Multiple definitions for ' + name);\n }\n if (_this.functions[name] == null) {\n properties_1.defineReadOnly(_this.functions, name, run);\n properties_1.defineReadOnly(_this.estimate, name, runMethod(_this, name, true));\n }\n });\n }\n // @TODO: Allow timeout?\n Contract.prototype.deployed = function () {\n var _this = this;\n // If we were just deployed, we know the transaction we should occur in\n if (this.deployTransaction) {\n return this.deployTransaction.wait().then(function () {\n return _this;\n });\n }\n // Otherwise, poll for our code to be deployed\n return web_1.poll(function () {\n return _this.provider.getCode(_this.address).then(function (code) {\n if (code === '0x') {\n return undefined;\n }\n return _this;\n });\n }, { onceBlock: this.provider });\n };\n // @TODO:\n // estimateFallback(overrides?: TransactionRequest): Promise\n // @TODO:\n // estimateDeploy(bytecode: string, ...args): Promise\n Contract.prototype.fallback = function (overrides) {\n if (!this.signer) {\n errors.throwError('sending a transaction require a signer', errors.UNSUPPORTED_OPERATION, { operation: 'sendTransaction(fallback)' });\n }\n var tx = properties_1.shallowCopy(overrides || {});\n ['from', 'to'].forEach(function (key) {\n if (tx[key] == null) {\n return;\n }\n errors.throwError('cannot override ' + key, errors.UNSUPPORTED_OPERATION, { operation: key });\n });\n tx.to = this.addressPromise;\n return this.signer.sendTransaction(tx);\n };\n // Reconnect to a different signer or provider\n Contract.prototype.connect = function (signerOrProvider) {\n return new Contract(this.address, this.interface, signerOrProvider);\n };\n // Re-attach to a different on=chain instance of this contract\n Contract.prototype.attach = function (addressOrName) {\n return new Contract(addressOrName, this.interface, this.signer || this.provider);\n };\n // Deploy the contract with the bytecode, resolving to the deployed address.\n // Use contract.deployTransaction.wait() to wait until the contract has\n // been mined.\n Contract.prototype.deploy = function (bytecode) {\n var _this = this;\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (this.signer == null) {\n throw new Error('missing signer'); // @TODO: errors.throwError\n }\n // A lot of common tools do not prefix bytecode with a 0x\n if (typeof (bytecode) === 'string' && bytecode.match(/^[0-9a-f]*$/i) && (bytecode.length % 2) == 0) {\n bytecode = '0x' + bytecode;\n }\n if (!bytes_1.isHexString(bytecode)) {\n errors.throwError('bytecode must be a valid hex string', errors.INVALID_ARGUMENT, { arg: 'bytecode', value: bytecode });\n }\n if ((bytecode.length % 2) !== 0) {\n errors.throwError('bytecode must be valid data (even length)', errors.INVALID_ARGUMENT, { arg: 'bytecode', value: bytecode });\n }\n var tx = {};\n if (args.length === this.interface.deployFunction.inputs.length + 1) {\n tx = properties_1.shallowCopy(args.pop());\n for (var key in tx) {\n if (!allowedTransactionKeys[key]) {\n throw new Error('unknown transaction override ' + key);\n }\n }\n }\n ['data', 'from', 'to'].forEach(function (key) {\n if (tx[key] == null) {\n return;\n }\n errors.throwError('cannot override ' + key, errors.UNSUPPORTED_OPERATION, { operation: key });\n });\n tx.data = this.interface.deployFunction.encode(bytecode, args);\n errors.checkArgumentCount(args.length, this.interface.deployFunction.inputs.length, 'in Contract constructor');\n // @TODO: overrides of args.length = this.interface.deployFunction.inputs.length + 1\n return this.signer.sendTransaction(tx).then(function (tx) {\n var contract = new Contract(address_1.getContractAddress(tx), _this.interface, _this.signer || _this.provider);\n properties_1.defineReadOnly(contract, 'deployTransaction', tx);\n return contract;\n });\n };\n Contract.isIndexed = function (value) {\n return interface_1.Interface.isIndexed(value);\n };\n Contract.prototype._getEventFilter = function (eventName) {\n var _this = this;\n if (typeof (eventName) === 'string') {\n // Listen for any event\n if (eventName === '*') {\n return {\n decode: function (log) {\n return [_this.interface.parseLog(log)];\n },\n eventTag: '*',\n filter: { address: this.address },\n };\n }\n // Normalize the eventName\n if (eventName.indexOf('(') !== -1) {\n eventName = abi_coder_1.formatSignature(abi_coder_1.parseSignature('event ' + eventName));\n }\n var event_1 = this.interface.events[eventName];\n if (!event_1) {\n errors.throwError('unknown event - ' + eventName, errors.INVALID_ARGUMENT, { argumnet: 'eventName', value: eventName });\n }\n var filter_1 = {\n address: this.address,\n topics: [event_1.topic]\n };\n return {\n decode: function (log) {\n return event_1.decode(log.data, log.topics);\n },\n event: event_1,\n eventTag: getEventTag(filter_1),\n filter: filter_1\n };\n }\n var filter = {\n address: this.address\n };\n // Find the matching event in the ABI; if none, we still allow filtering\n // since it may be a filter for an otherwise unknown event\n var event = null;\n if (eventName.topics && eventName.topics[0]) {\n filter.topics = eventName.topics;\n for (var name in this.interface.events) {\n if (name.indexOf('(') === -1) {\n continue;\n }\n var e = this.interface.events[name];\n if (e.topic === eventName.topics[0].toLowerCase()) {\n event = e;\n break;\n }\n }\n }\n return {\n decode: function (log) {\n if (event) {\n return event.decode(log.data, log.topics);\n }\n return [log];\n },\n event: event,\n eventTag: getEventTag(filter),\n filter: filter\n };\n };\n Contract.prototype._addEventListener = function (eventFilter, listener, once) {\n var _this = this;\n if (!this.provider) {\n errors.throwError('events require a provider or a signer with a provider', errors.UNSUPPORTED_OPERATION, { operation: 'once' });\n }\n var wrappedListener = function (log) {\n var decoded = Array.prototype.slice.call(eventFilter.decode(log));\n var event = properties_1.jsonCopy(log);\n event.args = decoded;\n event.decode = eventFilter.event.decode;\n event.event = eventFilter.event.name;\n event.eventSignature = eventFilter.event.signature;\n event.removeListener = function () { _this.removeListener(eventFilter.filter, listener); };\n event.getBlock = function () { return _this.provider.getBlock(log.blockHash); };\n event.getTransaction = function () { return _this.provider.getTransactionReceipt(log.transactionHash); };\n event.getTransactionReceipt = function () { return _this.provider.getTransactionReceipt(log.transactionHash); };\n decoded.push(event);\n _this.emit.apply(_this, [eventFilter.filter].concat(decoded));\n };\n this.provider.on(eventFilter.filter, wrappedListener);\n this._events.push({ eventFilter: eventFilter, listener: listener, wrappedListener: wrappedListener, once: once });\n };\n Contract.prototype.on = function (event, listener) {\n this._addEventListener(this._getEventFilter(event), listener, false);\n return this;\n };\n Contract.prototype.once = function (event, listener) {\n this._addEventListener(this._getEventFilter(event), listener, true);\n return this;\n };\n Contract.prototype.addEventLisener = function (eventName, listener) {\n return this.on(eventName, listener);\n };\n Contract.prototype.emit = function (eventName) {\n var _this = this;\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (!this.provider) {\n return false;\n }\n var result = false;\n var eventFilter = this._getEventFilter(eventName);\n this._events = this._events.filter(function (event) {\n if (event.eventFilter.eventTag !== eventFilter.eventTag) {\n return true;\n }\n setTimeout(function () {\n event.listener.apply(_this, args);\n }, 0);\n result = true;\n return !(event.once);\n });\n return result;\n };\n Contract.prototype.listenerCount = function (eventName) {\n if (!this.provider) {\n return 0;\n }\n var eventFilter = this._getEventFilter(eventName);\n return this._events.filter(function (event) {\n return event.eventFilter.eventTag === eventFilter.eventTag;\n }).length;\n };\n Contract.prototype.listeners = function (eventName) {\n if (!this.provider) {\n return [];\n }\n var eventFilter = this._getEventFilter(eventName);\n return this._events.filter(function (event) {\n return event.eventFilter.eventTag === eventFilter.eventTag;\n }).map(function (event) { return event.listener; });\n };\n Contract.prototype.removeAllListeners = function (eventName) {\n if (!this.provider) {\n return this;\n }\n var eventFilter = this._getEventFilter(eventName);\n this._events = this._events.filter(function (event) {\n return event.eventFilter.eventTag !== eventFilter.eventTag;\n });\n return this;\n };\n Contract.prototype.removeListener = function (eventName, listener) {\n var _this = this;\n if (!this.provider) {\n return this;\n }\n var found = false;\n var eventFilter = this._getEventFilter(eventName);\n this._events = this._events.filter(function (event) {\n // Make sure this event and listener match\n if (event.eventFilter.eventTag !== eventFilter.eventTag) {\n return true;\n }\n if (event.listener !== listener) {\n return true;\n }\n _this.provider.removeListener(event.eventFilter.filter, event.wrappedListener);\n // Already found a matching event in a previous loop\n if (found) {\n return true;\n }\n // REmove this event (returning false filters us out)\n found = true;\n return false;\n });\n return this;\n };\n return Contract;\n}());\nexports.Contract = Contract;\n\n},{\"../providers/abstract-provider\":48,\"../utils/abi-coder\":58,\"../utils/address\":59,\"../utils/bignumber\":61,\"../utils/bytes\":62,\"../utils/constants\":63,\"../utils/errors\":64,\"../utils/properties\":72,\"../utils/web\":82,\"../wallet/abstract-signer\":83,\"./interface\":4}],3:[function(require,module,exports){\n'use strict';\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar contract_1 = require(\"./contract\");\nexports.Contract = contract_1.Contract;\nvar interface_1 = require(\"./interface\");\nexports.Interface = interface_1.Interface;\n\n},{\"./contract\":2,\"./interface\":4}],4:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// See: https://github.com/ethereum/wiki/wiki/Ethereum-Contract-ABI\nvar address_1 = require(\"../utils/address\");\nvar abi_coder_1 = require(\"../utils/abi-coder\");\nvar bignumber_1 = require(\"../utils/bignumber\");\nvar bytes_1 = require(\"../utils/bytes\");\nvar hash_1 = require(\"../utils/hash\");\nvar keccak256_1 = require(\"../utils/keccak256\");\nvar properties_1 = require(\"../utils/properties\");\nvar errors = __importStar(require(\"../utils/errors\"));\n///////////////////////////////\nvar _Indexed = /** @class */ (function () {\n function _Indexed(hash) {\n properties_1.setType(this, 'Indexed');\n properties_1.defineReadOnly(this, 'hash', hash);\n }\n return _Indexed;\n}());\nvar Description = /** @class */ (function () {\n function Description(info) {\n for (var key in info) {\n var value = info[key];\n if (value != null && typeof (value) === 'object') {\n if (bignumber_1.BigNumber.isBigNumber(value)) {\n properties_1.defineReadOnly(this, key, value);\n }\n else {\n properties_1.defineFrozen(this, key, value);\n }\n }\n else {\n properties_1.defineReadOnly(this, key, value);\n }\n }\n }\n return Description;\n}());\nvar _DeployDescription = /** @class */ (function (_super) {\n __extends(_DeployDescription, _super);\n function _DeployDescription() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n _DeployDescription.prototype.encode = function (bytecode, params) {\n if (!bytes_1.isHexString(bytecode)) {\n errors.throwError('invalid contract bytecode', errors.INVALID_ARGUMENT, {\n arg: 'bytecode',\n value: bytecode\n });\n }\n errors.checkArgumentCount(params.length, this.inputs.length, 'in Interface constructor');\n try {\n return (bytecode + abi_coder_1.defaultAbiCoder.encode(this.inputs, params).substring(2));\n }\n catch (error) {\n errors.throwError('invalid constructor argument', errors.INVALID_ARGUMENT, {\n arg: error.arg,\n reason: error.reason,\n value: error.value\n });\n }\n return null;\n };\n return _DeployDescription;\n}(Description));\nvar _FunctionDescription = /** @class */ (function (_super) {\n __extends(_FunctionDescription, _super);\n function _FunctionDescription() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n _FunctionDescription.prototype.encode = function (params) {\n errors.checkArgumentCount(params.length, this.inputs.length, 'in interface function ' + this.name);\n try {\n return this.sighash + abi_coder_1.defaultAbiCoder.encode(this.inputs, params).substring(2);\n }\n catch (error) {\n errors.throwError('invalid input argument', errors.INVALID_ARGUMENT, {\n arg: error.arg,\n reason: error.reason,\n value: error.value\n });\n }\n return null;\n };\n _FunctionDescription.prototype.decode = function (data) {\n try {\n return abi_coder_1.defaultAbiCoder.decode(this.outputs, bytes_1.arrayify(data));\n }\n catch (error) {\n errors.throwError('invalid data for function output', errors.INVALID_ARGUMENT, {\n arg: 'data',\n errorArg: error.arg,\n errorValue: error.value,\n value: data,\n reason: error.reason\n });\n }\n };\n return _FunctionDescription;\n}(Description));\nvar Result = /** @class */ (function (_super) {\n __extends(Result, _super);\n function Result() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return Result;\n}(Description));\nvar _EventDescription = /** @class */ (function (_super) {\n __extends(_EventDescription, _super);\n function _EventDescription() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n _EventDescription.prototype.encodeTopics = function (params) {\n var _this = this;\n if (params.length > this.inputs.length) {\n errors.throwError('too many arguments for ' + this.name, errors.UNEXPECTED_ARGUMENT, { maxCount: params.length, expectedCount: this.inputs.length });\n }\n var topics = [];\n if (!this.anonymous) {\n topics.push(this.topic);\n }\n params.forEach(function (arg, index) {\n if (arg === null) {\n topics.push(null);\n return;\n }\n var param = _this.inputs[index];\n if (!param.indexed) {\n errors.throwError('cannot filter non-indexed parameters; must be null', errors.INVALID_ARGUMENT, { argument: (param.name || index), value: arg });\n }\n if (param.type === 'string') {\n topics.push(hash_1.id(arg));\n }\n else if (param.type === 'bytes') {\n topics.push(keccak256_1.keccak256(arg));\n }\n else if (param.type.indexOf('[') !== -1 || param.type.substring(0, 5) === 'tuple') {\n errors.throwError('filtering with tuples or arrays not implemented yet; bug us on GitHub', errors.NOT_IMPLEMENTED, { operation: 'filter(array|tuple)' });\n }\n else {\n if (param.type === 'address') {\n address_1.getAddress(arg);\n }\n topics.push(bytes_1.hexZeroPad(bytes_1.hexlify(arg), 32).toLowerCase());\n }\n });\n // Trim off trailing nulls\n while (topics.length && topics[topics.length - 1] === null) {\n topics.pop();\n }\n return topics;\n };\n _EventDescription.prototype.decode = function (data, topics) {\n // Strip the signature off of non-anonymous topics\n if (topics != null && !this.anonymous) {\n topics = topics.slice(1);\n }\n var inputIndexed = [];\n var inputNonIndexed = [];\n var inputDynamic = [];\n this.inputs.forEach(function (param, index) {\n if (param.indexed) {\n if (param.type === 'string' || param.type === 'bytes' || param.type.indexOf('[') >= 0 || param.type.substring(0, 5) === 'tuple') {\n inputIndexed.push({ type: 'bytes32', name: (param.name || '') });\n inputDynamic.push(true);\n }\n else {\n inputIndexed.push(param);\n inputDynamic.push(false);\n }\n }\n else {\n inputNonIndexed.push(param);\n inputDynamic.push(false);\n }\n });\n if (topics != null) {\n var resultIndexed = abi_coder_1.defaultAbiCoder.decode(inputIndexed, bytes_1.concat(topics));\n }\n var resultNonIndexed = abi_coder_1.defaultAbiCoder.decode(inputNonIndexed, bytes_1.arrayify(data));\n var result = new Result({});\n var nonIndexedIndex = 0, indexedIndex = 0;\n this.inputs.forEach(function (input, index) {\n if (input.indexed) {\n if (topics == null) {\n result[index] = new _Indexed(null);\n }\n else if (inputDynamic[index]) {\n result[index] = new _Indexed(resultIndexed[indexedIndex++]);\n }\n else {\n result[index] = resultIndexed[indexedIndex++];\n }\n }\n else {\n result[index] = resultNonIndexed[nonIndexedIndex++];\n }\n if (input.name) {\n result[input.name] = result[index];\n }\n });\n result.length = this.inputs.length;\n return result;\n };\n return _EventDescription;\n}(Description));\nvar _TransactionDescription = /** @class */ (function (_super) {\n __extends(_TransactionDescription, _super);\n function _TransactionDescription() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return _TransactionDescription;\n}(Description));\nvar _LogDescription = /** @class */ (function (_super) {\n __extends(_LogDescription, _super);\n function _LogDescription() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return _LogDescription;\n}(Description));\nfunction addMethod(method) {\n switch (method.type) {\n case 'constructor': {\n var description = new _DeployDescription({\n inputs: method.inputs,\n payable: (method.payable == null || !!method.payable)\n });\n if (!this.deployFunction) {\n this.deployFunction = description;\n }\n break;\n }\n case 'function': {\n var signature = abi_coder_1.formatSignature(method).replace(/tuple/g, '');\n var sighash = hash_1.id(signature).substring(0, 10);\n var description = new _FunctionDescription({\n inputs: method.inputs,\n outputs: method.outputs,\n gas: method.gas,\n payable: (method.payable == null || !!method.payable),\n type: ((method.constant) ? 'call' : 'transaction'),\n signature: signature,\n sighash: sighash,\n });\n // Expose the first (and hopefully unique named function\n if (method.name && this.functions[method.name] == null) {\n properties_1.defineReadOnly(this.functions, method.name, description);\n }\n // Expose all methods by their signature, for overloaded functions\n if (this.functions[description.signature] == null) {\n properties_1.defineReadOnly(this.functions, description.signature, description);\n }\n break;\n }\n case 'event': {\n var signature = abi_coder_1.formatSignature(method).replace(/tuple/g, '');\n var description = new _EventDescription({\n name: method.name,\n signature: signature,\n inputs: method.inputs,\n topic: hash_1.id(signature),\n anonymous: (!!method.anonymous)\n });\n // Expose the first (and hopefully unique) event name\n if (method.name && this.events[method.name] == null) {\n properties_1.defineReadOnly(this.events, method.name, description);\n }\n // Expose all events by their signature, for overloaded functions\n if (this.events[description.signature] == null) {\n properties_1.defineReadOnly(this.events, description.signature, description);\n }\n break;\n }\n case 'fallback':\n // Nothing to do for fallback\n break;\n default:\n console.log('WARNING: unsupported ABI type - ' + method.type);\n break;\n }\n}\nvar Interface = /** @class */ (function () {\n function Interface(abi) {\n errors.checkNew(this, Interface);\n if (typeof (abi) === 'string') {\n try {\n abi = JSON.parse(abi);\n }\n catch (error) {\n errors.throwError('could not parse ABI JSON', errors.INVALID_ARGUMENT, {\n arg: 'abi',\n errorMessage: error.message,\n value: abi\n });\n }\n if (!Array.isArray(abi)) {\n errors.throwError('invalid abi', errors.INVALID_ARGUMENT, { arg: 'abi', value: abi });\n return null;\n }\n }\n properties_1.defineReadOnly(this, 'functions', {});\n properties_1.defineReadOnly(this, 'events', {});\n // Convert any supported ABI format into a standard ABI format\n var _abi = [];\n abi.forEach(function (fragment) {\n if (typeof (fragment) === 'string') {\n fragment = abi_coder_1.parseSignature(fragment);\n }\n // @TODO: We should probable do some validation; create abiCoder.formatSignature for checking\n _abi.push(fragment);\n });\n properties_1.defineFrozen(this, 'abi', _abi);\n _abi.forEach(addMethod, this);\n // If there wasn't a constructor, create the default constructor\n if (!this.deployFunction) {\n addMethod.call(this, { type: 'constructor', inputs: [] });\n }\n properties_1.setType(this, 'Interface');\n }\n Interface.prototype.parseTransaction = function (tx) {\n var sighash = tx.data.substring(0, 10).toLowerCase();\n for (var name in this.functions) {\n if (name.indexOf('(') === -1) {\n continue;\n }\n var func = this.functions[name];\n if (func.sighash === sighash) {\n var result = abi_coder_1.defaultAbiCoder.decode(func.inputs, '0x' + tx.data.substring(10));\n return new _TransactionDescription({\n args: result,\n decode: func.decode,\n name: name,\n signature: func.signature,\n sighash: func.sighash,\n value: bignumber_1.bigNumberify(tx.value || null),\n });\n }\n }\n return null;\n };\n Interface.prototype.parseLog = function (log) {\n for (var name in this.events) {\n if (name.indexOf('(') === -1) {\n continue;\n }\n var event = this.events[name];\n if (event.anonymous) {\n continue;\n }\n if (event.topic !== log.topics[0]) {\n continue;\n }\n // @TODO: If anonymous, and the only method, and the input count matches, should we parse and return it?\n return new _LogDescription({\n decode: event.decode,\n name: event.name,\n signature: event.signature,\n topic: event.topic,\n values: event.decode(log.data, log.topics)\n });\n }\n return null;\n };\n Interface.isInterface = function (value) {\n return properties_1.isType(value, 'Interface');\n };\n Interface.isIndexed = function (value) {\n return properties_1.isType(value, 'Indexed');\n };\n return Interface;\n}());\nexports.Interface = Interface;\n\n},{\"../utils/abi-coder\":58,\"../utils/address\":59,\"../utils/bignumber\":61,\"../utils/bytes\":62,\"../utils/errors\":64,\"../utils/hash\":65,\"../utils/keccak256\":69,\"../utils/properties\":72}],5:[function(require,module,exports){\n'use strict';\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar contracts_1 = require(\"./contracts\");\nexports.Contract = contracts_1.Contract;\nexports.Interface = contracts_1.Interface;\nvar providers = __importStar(require(\"./providers\"));\nexports.providers = providers;\nvar wallet_1 = require(\"./wallet\");\nexports.HDNode = wallet_1.HDNode;\nexports.SigningKey = wallet_1.SigningKey;\nexports.Wallet = wallet_1.Wallet;\nvar abi_coder_1 = require(\"./utils/abi-coder\");\nexports.AbiCoder = abi_coder_1.AbiCoder;\nvar bignumber_1 = require(\"./utils/bignumber\");\nexports.BigNumber = bignumber_1.BigNumber;\nvar constants = __importStar(require(\"./utils/constants\"));\nexports.constants = constants;\nvar errors = __importStar(require(\"./utils/errors\"));\nexports.errors = errors;\nvar utils = __importStar(require(\"./utils\"));\nexports.utils = utils;\nvar types = __importStar(require(\"./types\"));\nexports.types = types;\nvar wordlists = __importStar(require(\"./wordlists\"));\nexports.wordlists = wordlists;\n// This is empty in node, and used by browserify to inject extra goodies\nvar shims_1 = require(\"./utils/shims\");\nexports.platform = shims_1.platform;\n// This is generated by \"npm run dist\"\nvar _version_1 = require(\"./_version\");\nexports.version = _version_1.version;\nfunction getDefaultProvider(network) {\n return new providers.FallbackProvider([\n new providers.InfuraProvider(network),\n new providers.EtherscanProvider(network),\n ]);\n}\nexports.getDefaultProvider = getDefaultProvider;\n\n},{\"./_version\":1,\"./contracts\":3,\"./providers\":52,\"./types\":57,\"./utils\":67,\"./utils/abi-coder\":58,\"./utils/bignumber\":61,\"./utils/constants\":63,\"./utils/errors\":64,\"./utils/shims\":77,\"./wallet\":85,\"./wordlists\":89}],6:[function(require,module,exports){\n\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ethers = __importStar(require(\"./ethers\"));\nexports.ethers = ethers;\n__export(require(\"./ethers\"));\n\n},{\"./ethers\":5}],7:[function(require,module,exports){\n\"use strict\";\n\n(function(root) {\n\n function checkInt(value) {\n return (parseInt(value) === value);\n }\n\n function checkInts(arrayish) {\n if (!checkInt(arrayish.length)) { return false; }\n\n for (var i = 0; i < arrayish.length; i++) {\n if (!checkInt(arrayish[i]) || arrayish[i] < 0 || arrayish[i] > 255) {\n return false;\n }\n }\n\n return true;\n }\n\n function coerceArray(arg, copy) {\n\n // ArrayBuffer view\n if (arg.buffer && ArrayBuffer.isView(arg) && arg.name === 'Uint8Array') {\n\n if (copy) {\n if (arg.slice) {\n arg = arg.slice();\n } else {\n arg = Array.prototype.slice.call(arg);\n }\n }\n\n return arg;\n }\n\n // It's an array; check it is a valid representation of a byte\n if (Array.isArray(arg)) {\n if (!checkInts(arg)) {\n throw new Error('Array contains invalid value: ' + arg);\n }\n\n return new Uint8Array(arg);\n }\n\n // Something else, but behaves like an array (maybe a Buffer? Arguments?)\n if (checkInt(arg.length) && checkInts(arg)) {\n return new Uint8Array(arg);\n }\n\n throw new Error('unsupported array-like object');\n }\n\n function createArray(length) {\n return new Uint8Array(length);\n }\n\n function copyArray(sourceArray, targetArray, targetStart, sourceStart, sourceEnd) {\n if (sourceStart != null || sourceEnd != null) {\n if (sourceArray.slice) {\n sourceArray = sourceArray.slice(sourceStart, sourceEnd);\n } else {\n sourceArray = Array.prototype.slice.call(sourceArray, sourceStart, sourceEnd);\n }\n }\n targetArray.set(sourceArray, targetStart);\n }\n\n\n\n var convertUtf8 = (function() {\n function toBytes(text) {\n var result = [], i = 0;\n text = encodeURI(text);\n while (i < text.length) {\n var c = text.charCodeAt(i++);\n\n // if it is a % sign, encode the following 2 bytes as a hex value\n if (c === 37) {\n result.push(parseInt(text.substr(i, 2), 16))\n i += 2;\n\n // otherwise, just the actual byte\n } else {\n result.push(c)\n }\n }\n\n return coerceArray(result);\n }\n\n function fromBytes(bytes) {\n var result = [], i = 0;\n\n while (i < bytes.length) {\n var c = bytes[i];\n\n if (c < 128) {\n result.push(String.fromCharCode(c));\n i++;\n } else if (c > 191 && c < 224) {\n result.push(String.fromCharCode(((c & 0x1f) << 6) | (bytes[i + 1] & 0x3f)));\n i += 2;\n } else {\n result.push(String.fromCharCode(((c & 0x0f) << 12) | ((bytes[i + 1] & 0x3f) << 6) | (bytes[i + 2] & 0x3f)));\n i += 3;\n }\n }\n\n return result.join('');\n }\n\n return {\n toBytes: toBytes,\n fromBytes: fromBytes,\n }\n })();\n\n var convertHex = (function() {\n function toBytes(text) {\n var result = [];\n for (var i = 0; i < text.length; i += 2) {\n result.push(parseInt(text.substr(i, 2), 16));\n }\n\n return result;\n }\n\n // http://ixti.net/development/javascript/2011/11/11/base64-encodedecode-of-utf8-in-browser-with-js.html\n var Hex = '0123456789abcdef';\n\n function fromBytes(bytes) {\n var result = [];\n for (var i = 0; i < bytes.length; i++) {\n var v = bytes[i];\n result.push(Hex[(v & 0xf0) >> 4] + Hex[v & 0x0f]);\n }\n return result.join('');\n }\n\n return {\n toBytes: toBytes,\n fromBytes: fromBytes,\n }\n })();\n\n\n // Number of rounds by keysize\n var numberOfRounds = {16: 10, 24: 12, 32: 14}\n\n // Round constant words\n var rcon = [0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91];\n\n // S-box and Inverse S-box (S is for Substitution)\n var S = [0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16];\n var Si =[0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d];\n\n // Transformations for encryption\n var T1 = [0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d, 0xfff2f20d, 0xd66b6bbd, 0xde6f6fb1, 0x91c5c554, 0x60303050, 0x02010103, 0xce6767a9, 0x562b2b7d, 0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a, 0x8fcaca45, 0x1f82829d, 0x89c9c940, 0xfa7d7d87, 0xeffafa15, 0xb25959eb, 0x8e4747c9, 0xfbf0f00b, 0x41adadec, 0xb3d4d467, 0x5fa2a2fd, 0x45afafea, 0x239c9cbf, 0x53a4a4f7, 0xe4727296, 0x9bc0c05b, 0x75b7b7c2, 0xe1fdfd1c, 0x3d9393ae, 0x4c26266a, 0x6c36365a, 0x7e3f3f41, 0xf5f7f702, 0x83cccc4f, 0x6834345c, 0x51a5a5f4, 0xd1e5e534, 0xf9f1f108, 0xe2717193, 0xabd8d873, 0x62313153, 0x2a15153f, 0x0804040c, 0x95c7c752, 0x46232365, 0x9dc3c35e, 0x30181828, 0x379696a1, 0x0a05050f, 0x2f9a9ab5, 0x0e070709, 0x24121236, 0x1b80809b, 0xdfe2e23d, 0xcdebeb26, 0x4e272769, 0x7fb2b2cd, 0xea75759f, 0x1209091b, 0x1d83839e, 0x582c2c74, 0x341a1a2e, 0x361b1b2d, 0xdc6e6eb2, 0xb45a5aee, 0x5ba0a0fb, 0xa45252f6, 0x763b3b4d, 0xb7d6d661, 0x7db3b3ce, 0x5229297b, 0xdde3e33e, 0x5e2f2f71, 0x13848497, 0xa65353f5, 0xb9d1d168, 0x00000000, 0xc1eded2c, 0x40202060, 0xe3fcfc1f, 0x79b1b1c8, 0xb65b5bed, 0xd46a6abe, 0x8dcbcb46, 0x67bebed9, 0x7239394b, 0x944a4ade, 0x984c4cd4, 0xb05858e8, 0x85cfcf4a, 0xbbd0d06b, 0xc5efef2a, 0x4faaaae5, 0xedfbfb16, 0x864343c5, 0x9a4d4dd7, 0x66333355, 0x11858594, 0x8a4545cf, 0xe9f9f910, 0x04020206, 0xfe7f7f81, 0xa05050f0, 0x783c3c44, 0x259f9fba, 0x4ba8a8e3, 0xa25151f3, 0x5da3a3fe, 0x804040c0, 0x058f8f8a, 0x3f9292ad, 0x219d9dbc, 0x70383848, 0xf1f5f504, 0x63bcbcdf, 0x77b6b6c1, 0xafdada75, 0x42212163, 0x20101030, 0xe5ffff1a, 0xfdf3f30e, 0xbfd2d26d, 0x81cdcd4c, 0x180c0c14, 0x26131335, 0xc3ecec2f, 0xbe5f5fe1, 0x359797a2, 0x884444cc, 0x2e171739, 0x93c4c457, 0x55a7a7f2, 0xfc7e7e82, 0x7a3d3d47, 0xc86464ac, 0xba5d5de7, 0x3219192b, 0xe6737395, 0xc06060a0, 0x19818198, 0x9e4f4fd1, 0xa3dcdc7f, 0x44222266, 0x542a2a7e, 0x3b9090ab, 0x0b888883, 0x8c4646ca, 0xc7eeee29, 0x6bb8b8d3, 0x2814143c, 0xa7dede79, 0xbc5e5ee2, 0x160b0b1d, 0xaddbdb76, 0xdbe0e03b, 0x64323256, 0x743a3a4e, 0x140a0a1e, 0x924949db, 0x0c06060a, 0x4824246c, 0xb85c5ce4, 0x9fc2c25d, 0xbdd3d36e, 0x43acacef, 0xc46262a6, 0x399191a8, 0x319595a4, 0xd3e4e437, 0xf279798b, 0xd5e7e732, 0x8bc8c843, 0x6e373759, 0xda6d6db7, 0x018d8d8c, 0xb1d5d564, 0x9c4e4ed2, 0x49a9a9e0, 0xd86c6cb4, 0xac5656fa, 0xf3f4f407, 0xcfeaea25, 0xca6565af, 0xf47a7a8e, 0x47aeaee9, 0x10080818, 0x6fbabad5, 0xf0787888, 0x4a25256f, 0x5c2e2e72, 0x381c1c24, 0x57a6a6f1, 0x73b4b4c7, 0x97c6c651, 0xcbe8e823, 0xa1dddd7c, 0xe874749c, 0x3e1f1f21, 0x964b4bdd, 0x61bdbddc, 0x0d8b8b86, 0x0f8a8a85, 0xe0707090, 0x7c3e3e42, 0x71b5b5c4, 0xcc6666aa, 0x904848d8, 0x06030305, 0xf7f6f601, 0x1c0e0e12, 0xc26161a3, 0x6a35355f, 0xae5757f9, 0x69b9b9d0, 0x17868691, 0x99c1c158, 0x3a1d1d27, 0x279e9eb9, 0xd9e1e138, 0xebf8f813, 0x2b9898b3, 0x22111133, 0xd26969bb, 0xa9d9d970, 0x078e8e89, 0x339494a7, 0x2d9b9bb6, 0x3c1e1e22, 0x15878792, 0xc9e9e920, 0x87cece49, 0xaa5555ff, 0x50282878, 0xa5dfdf7a, 0x038c8c8f, 0x59a1a1f8, 0x09898980, 0x1a0d0d17, 0x65bfbfda, 0xd7e6e631, 0x844242c6, 0xd06868b8, 0x824141c3, 0x299999b0, 0x5a2d2d77, 0x1e0f0f11, 0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a];\n var T2 = [0xa5c66363, 0x84f87c7c, 0x99ee7777, 0x8df67b7b, 0x0dfff2f2, 0xbdd66b6b, 0xb1de6f6f, 0x5491c5c5, 0x50603030, 0x03020101, 0xa9ce6767, 0x7d562b2b, 0x19e7fefe, 0x62b5d7d7, 0xe64dabab, 0x9aec7676, 0x458fcaca, 0x9d1f8282, 0x4089c9c9, 0x87fa7d7d, 0x15effafa, 0xebb25959, 0xc98e4747, 0x0bfbf0f0, 0xec41adad, 0x67b3d4d4, 0xfd5fa2a2, 0xea45afaf, 0xbf239c9c, 0xf753a4a4, 0x96e47272, 0x5b9bc0c0, 0xc275b7b7, 0x1ce1fdfd, 0xae3d9393, 0x6a4c2626, 0x5a6c3636, 0x417e3f3f, 0x02f5f7f7, 0x4f83cccc, 0x5c683434, 0xf451a5a5, 0x34d1e5e5, 0x08f9f1f1, 0x93e27171, 0x73abd8d8, 0x53623131, 0x3f2a1515, 0x0c080404, 0x5295c7c7, 0x65462323, 0x5e9dc3c3, 0x28301818, 0xa1379696, 0x0f0a0505, 0xb52f9a9a, 0x090e0707, 0x36241212, 0x9b1b8080, 0x3ddfe2e2, 0x26cdebeb, 0x694e2727, 0xcd7fb2b2, 0x9fea7575, 0x1b120909, 0x9e1d8383, 0x74582c2c, 0x2e341a1a, 0x2d361b1b, 0xb2dc6e6e, 0xeeb45a5a, 0xfb5ba0a0, 0xf6a45252, 0x4d763b3b, 0x61b7d6d6, 0xce7db3b3, 0x7b522929, 0x3edde3e3, 0x715e2f2f, 0x97138484, 0xf5a65353, 0x68b9d1d1, 0x00000000, 0x2cc1eded, 0x60402020, 0x1fe3fcfc, 0xc879b1b1, 0xedb65b5b, 0xbed46a6a, 0x468dcbcb, 0xd967bebe, 0x4b723939, 0xde944a4a, 0xd4984c4c, 0xe8b05858, 0x4a85cfcf, 0x6bbbd0d0, 0x2ac5efef, 0xe54faaaa, 0x16edfbfb, 0xc5864343, 0xd79a4d4d, 0x55663333, 0x94118585, 0xcf8a4545, 0x10e9f9f9, 0x06040202, 0x81fe7f7f, 0xf0a05050, 0x44783c3c, 0xba259f9f, 0xe34ba8a8, 0xf3a25151, 0xfe5da3a3, 0xc0804040, 0x8a058f8f, 0xad3f9292, 0xbc219d9d, 0x48703838, 0x04f1f5f5, 0xdf63bcbc, 0xc177b6b6, 0x75afdada, 0x63422121, 0x30201010, 0x1ae5ffff, 0x0efdf3f3, 0x6dbfd2d2, 0x4c81cdcd, 0x14180c0c, 0x35261313, 0x2fc3ecec, 0xe1be5f5f, 0xa2359797, 0xcc884444, 0x392e1717, 0x5793c4c4, 0xf255a7a7, 0x82fc7e7e, 0x477a3d3d, 0xacc86464, 0xe7ba5d5d, 0x2b321919, 0x95e67373, 0xa0c06060, 0x98198181, 0xd19e4f4f, 0x7fa3dcdc, 0x66442222, 0x7e542a2a, 0xab3b9090, 0x830b8888, 0xca8c4646, 0x29c7eeee, 0xd36bb8b8, 0x3c281414, 0x79a7dede, 0xe2bc5e5e, 0x1d160b0b, 0x76addbdb, 0x3bdbe0e0, 0x56643232, 0x4e743a3a, 0x1e140a0a, 0xdb924949, 0x0a0c0606, 0x6c482424, 0xe4b85c5c, 0x5d9fc2c2, 0x6ebdd3d3, 0xef43acac, 0xa6c46262, 0xa8399191, 0xa4319595, 0x37d3e4e4, 0x8bf27979, 0x32d5e7e7, 0x438bc8c8, 0x596e3737, 0xb7da6d6d, 0x8c018d8d, 0x64b1d5d5, 0xd29c4e4e, 0xe049a9a9, 0xb4d86c6c, 0xfaac5656, 0x07f3f4f4, 0x25cfeaea, 0xafca6565, 0x8ef47a7a, 0xe947aeae, 0x18100808, 0xd56fbaba, 0x88f07878, 0x6f4a2525, 0x725c2e2e, 0x24381c1c, 0xf157a6a6, 0xc773b4b4, 0x5197c6c6, 0x23cbe8e8, 0x7ca1dddd, 0x9ce87474, 0x213e1f1f, 0xdd964b4b, 0xdc61bdbd, 0x860d8b8b, 0x850f8a8a, 0x90e07070, 0x427c3e3e, 0xc471b5b5, 0xaacc6666, 0xd8904848, 0x05060303, 0x01f7f6f6, 0x121c0e0e, 0xa3c26161, 0x5f6a3535, 0xf9ae5757, 0xd069b9b9, 0x91178686, 0x5899c1c1, 0x273a1d1d, 0xb9279e9e, 0x38d9e1e1, 0x13ebf8f8, 0xb32b9898, 0x33221111, 0xbbd26969, 0x70a9d9d9, 0x89078e8e, 0xa7339494, 0xb62d9b9b, 0x223c1e1e, 0x92158787, 0x20c9e9e9, 0x4987cece, 0xffaa5555, 0x78502828, 0x7aa5dfdf, 0x8f038c8c, 0xf859a1a1, 0x80098989, 0x171a0d0d, 0xda65bfbf, 0x31d7e6e6, 0xc6844242, 0xb8d06868, 0xc3824141, 0xb0299999, 0x775a2d2d, 0x111e0f0f, 0xcb7bb0b0, 0xfca85454, 0xd66dbbbb, 0x3a2c1616];\n var T3 = [0x63a5c663, 0x7c84f87c, 0x7799ee77, 0x7b8df67b, 0xf20dfff2, 0x6bbdd66b, 0x6fb1de6f, 0xc55491c5, 0x30506030, 0x01030201, 0x67a9ce67, 0x2b7d562b, 0xfe19e7fe, 0xd762b5d7, 0xabe64dab, 0x769aec76, 0xca458fca, 0x829d1f82, 0xc94089c9, 0x7d87fa7d, 0xfa15effa, 0x59ebb259, 0x47c98e47, 0xf00bfbf0, 0xadec41ad, 0xd467b3d4, 0xa2fd5fa2, 0xafea45af, 0x9cbf239c, 0xa4f753a4, 0x7296e472, 0xc05b9bc0, 0xb7c275b7, 0xfd1ce1fd, 0x93ae3d93, 0x266a4c26, 0x365a6c36, 0x3f417e3f, 0xf702f5f7, 0xcc4f83cc, 0x345c6834, 0xa5f451a5, 0xe534d1e5, 0xf108f9f1, 0x7193e271, 0xd873abd8, 0x31536231, 0x153f2a15, 0x040c0804, 0xc75295c7, 0x23654623, 0xc35e9dc3, 0x18283018, 0x96a13796, 0x050f0a05, 0x9ab52f9a, 0x07090e07, 0x12362412, 0x809b1b80, 0xe23ddfe2, 0xeb26cdeb, 0x27694e27, 0xb2cd7fb2, 0x759fea75, 0x091b1209, 0x839e1d83, 0x2c74582c, 0x1a2e341a, 0x1b2d361b, 0x6eb2dc6e, 0x5aeeb45a, 0xa0fb5ba0, 0x52f6a452, 0x3b4d763b, 0xd661b7d6, 0xb3ce7db3, 0x297b5229, 0xe33edde3, 0x2f715e2f, 0x84971384, 0x53f5a653, 0xd168b9d1, 0x00000000, 0xed2cc1ed, 0x20604020, 0xfc1fe3fc, 0xb1c879b1, 0x5bedb65b, 0x6abed46a, 0xcb468dcb, 0xbed967be, 0x394b7239, 0x4ade944a, 0x4cd4984c, 0x58e8b058, 0xcf4a85cf, 0xd06bbbd0, 0xef2ac5ef, 0xaae54faa, 0xfb16edfb, 0x43c58643, 0x4dd79a4d, 0x33556633, 0x85941185, 0x45cf8a45, 0xf910e9f9, 0x02060402, 0x7f81fe7f, 0x50f0a050, 0x3c44783c, 0x9fba259f, 0xa8e34ba8, 0x51f3a251, 0xa3fe5da3, 0x40c08040, 0x8f8a058f, 0x92ad3f92, 0x9dbc219d, 0x38487038, 0xf504f1f5, 0xbcdf63bc, 0xb6c177b6, 0xda75afda, 0x21634221, 0x10302010, 0xff1ae5ff, 0xf30efdf3, 0xd26dbfd2, 0xcd4c81cd, 0x0c14180c, 0x13352613, 0xec2fc3ec, 0x5fe1be5f, 0x97a23597, 0x44cc8844, 0x17392e17, 0xc45793c4, 0xa7f255a7, 0x7e82fc7e, 0x3d477a3d, 0x64acc864, 0x5de7ba5d, 0x192b3219, 0x7395e673, 0x60a0c060, 0x81981981, 0x4fd19e4f, 0xdc7fa3dc, 0x22664422, 0x2a7e542a, 0x90ab3b90, 0x88830b88, 0x46ca8c46, 0xee29c7ee, 0xb8d36bb8, 0x143c2814, 0xde79a7de, 0x5ee2bc5e, 0x0b1d160b, 0xdb76addb, 0xe03bdbe0, 0x32566432, 0x3a4e743a, 0x0a1e140a, 0x49db9249, 0x060a0c06, 0x246c4824, 0x5ce4b85c, 0xc25d9fc2, 0xd36ebdd3, 0xacef43ac, 0x62a6c462, 0x91a83991, 0x95a43195, 0xe437d3e4, 0x798bf279, 0xe732d5e7, 0xc8438bc8, 0x37596e37, 0x6db7da6d, 0x8d8c018d, 0xd564b1d5, 0x4ed29c4e, 0xa9e049a9, 0x6cb4d86c, 0x56faac56, 0xf407f3f4, 0xea25cfea, 0x65afca65, 0x7a8ef47a, 0xaee947ae, 0x08181008, 0xbad56fba, 0x7888f078, 0x256f4a25, 0x2e725c2e, 0x1c24381c, 0xa6f157a6, 0xb4c773b4, 0xc65197c6, 0xe823cbe8, 0xdd7ca1dd, 0x749ce874, 0x1f213e1f, 0x4bdd964b, 0xbddc61bd, 0x8b860d8b, 0x8a850f8a, 0x7090e070, 0x3e427c3e, 0xb5c471b5, 0x66aacc66, 0x48d89048, 0x03050603, 0xf601f7f6, 0x0e121c0e, 0x61a3c261, 0x355f6a35, 0x57f9ae57, 0xb9d069b9, 0x86911786, 0xc15899c1, 0x1d273a1d, 0x9eb9279e, 0xe138d9e1, 0xf813ebf8, 0x98b32b98, 0x11332211, 0x69bbd269, 0xd970a9d9, 0x8e89078e, 0x94a73394, 0x9bb62d9b, 0x1e223c1e, 0x87921587, 0xe920c9e9, 0xce4987ce, 0x55ffaa55, 0x28785028, 0xdf7aa5df, 0x8c8f038c, 0xa1f859a1, 0x89800989, 0x0d171a0d, 0xbfda65bf, 0xe631d7e6, 0x42c68442, 0x68b8d068, 0x41c38241, 0x99b02999, 0x2d775a2d, 0x0f111e0f, 0xb0cb7bb0, 0x54fca854, 0xbbd66dbb, 0x163a2c16];\n var T4 = [0x6363a5c6, 0x7c7c84f8, 0x777799ee, 0x7b7b8df6, 0xf2f20dff, 0x6b6bbdd6, 0x6f6fb1de, 0xc5c55491, 0x30305060, 0x01010302, 0x6767a9ce, 0x2b2b7d56, 0xfefe19e7, 0xd7d762b5, 0xababe64d, 0x76769aec, 0xcaca458f, 0x82829d1f, 0xc9c94089, 0x7d7d87fa, 0xfafa15ef, 0x5959ebb2, 0x4747c98e, 0xf0f00bfb, 0xadadec41, 0xd4d467b3, 0xa2a2fd5f, 0xafafea45, 0x9c9cbf23, 0xa4a4f753, 0x727296e4, 0xc0c05b9b, 0xb7b7c275, 0xfdfd1ce1, 0x9393ae3d, 0x26266a4c, 0x36365a6c, 0x3f3f417e, 0xf7f702f5, 0xcccc4f83, 0x34345c68, 0xa5a5f451, 0xe5e534d1, 0xf1f108f9, 0x717193e2, 0xd8d873ab, 0x31315362, 0x15153f2a, 0x04040c08, 0xc7c75295, 0x23236546, 0xc3c35e9d, 0x18182830, 0x9696a137, 0x05050f0a, 0x9a9ab52f, 0x0707090e, 0x12123624, 0x80809b1b, 0xe2e23ddf, 0xebeb26cd, 0x2727694e, 0xb2b2cd7f, 0x75759fea, 0x09091b12, 0x83839e1d, 0x2c2c7458, 0x1a1a2e34, 0x1b1b2d36, 0x6e6eb2dc, 0x5a5aeeb4, 0xa0a0fb5b, 0x5252f6a4, 0x3b3b4d76, 0xd6d661b7, 0xb3b3ce7d, 0x29297b52, 0xe3e33edd, 0x2f2f715e, 0x84849713, 0x5353f5a6, 0xd1d168b9, 0x00000000, 0xeded2cc1, 0x20206040, 0xfcfc1fe3, 0xb1b1c879, 0x5b5bedb6, 0x6a6abed4, 0xcbcb468d, 0xbebed967, 0x39394b72, 0x4a4ade94, 0x4c4cd498, 0x5858e8b0, 0xcfcf4a85, 0xd0d06bbb, 0xefef2ac5, 0xaaaae54f, 0xfbfb16ed, 0x4343c586, 0x4d4dd79a, 0x33335566, 0x85859411, 0x4545cf8a, 0xf9f910e9, 0x02020604, 0x7f7f81fe, 0x5050f0a0, 0x3c3c4478, 0x9f9fba25, 0xa8a8e34b, 0x5151f3a2, 0xa3a3fe5d, 0x4040c080, 0x8f8f8a05, 0x9292ad3f, 0x9d9dbc21, 0x38384870, 0xf5f504f1, 0xbcbcdf63, 0xb6b6c177, 0xdada75af, 0x21216342, 0x10103020, 0xffff1ae5, 0xf3f30efd, 0xd2d26dbf, 0xcdcd4c81, 0x0c0c1418, 0x13133526, 0xecec2fc3, 0x5f5fe1be, 0x9797a235, 0x4444cc88, 0x1717392e, 0xc4c45793, 0xa7a7f255, 0x7e7e82fc, 0x3d3d477a, 0x6464acc8, 0x5d5de7ba, 0x19192b32, 0x737395e6, 0x6060a0c0, 0x81819819, 0x4f4fd19e, 0xdcdc7fa3, 0x22226644, 0x2a2a7e54, 0x9090ab3b, 0x8888830b, 0x4646ca8c, 0xeeee29c7, 0xb8b8d36b, 0x14143c28, 0xdede79a7, 0x5e5ee2bc, 0x0b0b1d16, 0xdbdb76ad, 0xe0e03bdb, 0x32325664, 0x3a3a4e74, 0x0a0a1e14, 0x4949db92, 0x06060a0c, 0x24246c48, 0x5c5ce4b8, 0xc2c25d9f, 0xd3d36ebd, 0xacacef43, 0x6262a6c4, 0x9191a839, 0x9595a431, 0xe4e437d3, 0x79798bf2, 0xe7e732d5, 0xc8c8438b, 0x3737596e, 0x6d6db7da, 0x8d8d8c01, 0xd5d564b1, 0x4e4ed29c, 0xa9a9e049, 0x6c6cb4d8, 0x5656faac, 0xf4f407f3, 0xeaea25cf, 0x6565afca, 0x7a7a8ef4, 0xaeaee947, 0x08081810, 0xbabad56f, 0x787888f0, 0x25256f4a, 0x2e2e725c, 0x1c1c2438, 0xa6a6f157, 0xb4b4c773, 0xc6c65197, 0xe8e823cb, 0xdddd7ca1, 0x74749ce8, 0x1f1f213e, 0x4b4bdd96, 0xbdbddc61, 0x8b8b860d, 0x8a8a850f, 0x707090e0, 0x3e3e427c, 0xb5b5c471, 0x6666aacc, 0x4848d890, 0x03030506, 0xf6f601f7, 0x0e0e121c, 0x6161a3c2, 0x35355f6a, 0x5757f9ae, 0xb9b9d069, 0x86869117, 0xc1c15899, 0x1d1d273a, 0x9e9eb927, 0xe1e138d9, 0xf8f813eb, 0x9898b32b, 0x11113322, 0x6969bbd2, 0xd9d970a9, 0x8e8e8907, 0x9494a733, 0x9b9bb62d, 0x1e1e223c, 0x87879215, 0xe9e920c9, 0xcece4987, 0x5555ffaa, 0x28287850, 0xdfdf7aa5, 0x8c8c8f03, 0xa1a1f859, 0x89898009, 0x0d0d171a, 0xbfbfda65, 0xe6e631d7, 0x4242c684, 0x6868b8d0, 0x4141c382, 0x9999b029, 0x2d2d775a, 0x0f0f111e, 0xb0b0cb7b, 0x5454fca8, 0xbbbbd66d, 0x16163a2c];\n\n // Transformations for decryption\n var T5 = [0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96, 0x3bab6bcb, 0x1f9d45f1, 0xacfa58ab, 0x4be30393, 0x2030fa55, 0xad766df6, 0x88cc7691, 0xf5024c25, 0x4fe5d7fc, 0xc52acbd7, 0x26354480, 0xb562a38f, 0xdeb15a49, 0x25ba1b67, 0x45ea0e98, 0x5dfec0e1, 0xc32f7502, 0x814cf012, 0x8d4697a3, 0x6bd3f9c6, 0x038f5fe7, 0x15929c95, 0xbf6d7aeb, 0x955259da, 0xd4be832d, 0x587421d3, 0x49e06929, 0x8ec9c844, 0x75c2896a, 0xf48e7978, 0x99583e6b, 0x27b971dd, 0xbee14fb6, 0xf088ad17, 0xc920ac66, 0x7dce3ab4, 0x63df4a18, 0xe51a3182, 0x97513360, 0x62537f45, 0xb16477e0, 0xbb6bae84, 0xfe81a01c, 0xf9082b94, 0x70486858, 0x8f45fd19, 0x94de6c87, 0x527bf8b7, 0xab73d323, 0x724b02e2, 0xe31f8f57, 0x6655ab2a, 0xb2eb2807, 0x2fb5c203, 0x86c57b9a, 0xd33708a5, 0x302887f2, 0x23bfa5b2, 0x02036aba, 0xed16825c, 0x8acf1c2b, 0xa779b492, 0xf307f2f0, 0x4e69e2a1, 0x65daf4cd, 0x0605bed5, 0xd134621f, 0xc4a6fe8a, 0x342e539d, 0xa2f355a0, 0x058ae132, 0xa4f6eb75, 0x0b83ec39, 0x4060efaa, 0x5e719f06, 0xbd6e1051, 0x3e218af9, 0x96dd063d, 0xdd3e05ae, 0x4de6bd46, 0x91548db5, 0x71c45d05, 0x0406d46f, 0x605015ff, 0x1998fb24, 0xd6bde997, 0x894043cc, 0x67d99e77, 0xb0e842bd, 0x07898b88, 0xe7195b38, 0x79c8eedb, 0xa17c0a47, 0x7c420fe9, 0xf8841ec9, 0x00000000, 0x09808683, 0x322bed48, 0x1e1170ac, 0x6c5a724e, 0xfd0efffb, 0x0f853856, 0x3daed51e, 0x362d3927, 0x0a0fd964, 0x685ca621, 0x9b5b54d1, 0x24362e3a, 0x0c0a67b1, 0x9357e70f, 0xb4ee96d2, 0x1b9b919e, 0x80c0c54f, 0x61dc20a2, 0x5a774b69, 0x1c121a16, 0xe293ba0a, 0xc0a02ae5, 0x3c22e043, 0x121b171d, 0x0e090d0b, 0xf28bc7ad, 0x2db6a8b9, 0x141ea9c8, 0x57f11985, 0xaf75074c, 0xee99ddbb, 0xa37f60fd, 0xf701269f, 0x5c72f5bc, 0x44663bc5, 0x5bfb7e34, 0x8b432976, 0xcb23c6dc, 0xb6edfc68, 0xb8e4f163, 0xd731dcca, 0x42638510, 0x13972240, 0x84c61120, 0x854a247d, 0xd2bb3df8, 0xaef93211, 0xc729a16d, 0x1d9e2f4b, 0xdcb230f3, 0x0d8652ec, 0x77c1e3d0, 0x2bb3166c, 0xa970b999, 0x119448fa, 0x47e96422, 0xa8fc8cc4, 0xa0f03f1a, 0x567d2cd8, 0x223390ef, 0x87494ec7, 0xd938d1c1, 0x8ccaa2fe, 0x98d40b36, 0xa6f581cf, 0xa57ade28, 0xdab78e26, 0x3fadbfa4, 0x2c3a9de4, 0x5078920d, 0x6a5fcc9b, 0x547e4662, 0xf68d13c2, 0x90d8b8e8, 0x2e39f75e, 0x82c3aff5, 0x9f5d80be, 0x69d0937c, 0x6fd52da9, 0xcf2512b3, 0xc8ac993b, 0x10187da7, 0xe89c636e, 0xdb3bbb7b, 0xcd267809, 0x6e5918f4, 0xec9ab701, 0x834f9aa8, 0xe6956e65, 0xaaffe67e, 0x21bccf08, 0xef15e8e6, 0xbae79bd9, 0x4a6f36ce, 0xea9f09d4, 0x29b07cd6, 0x31a4b2af, 0x2a3f2331, 0xc6a59430, 0x35a266c0, 0x744ebc37, 0xfc82caa6, 0xe090d0b0, 0x33a7d815, 0xf104984a, 0x41ecdaf7, 0x7fcd500e, 0x1791f62f, 0x764dd68d, 0x43efb04d, 0xccaa4d54, 0xe49604df, 0x9ed1b5e3, 0x4c6a881b, 0xc12c1fb8, 0x4665517f, 0x9d5eea04, 0x018c355d, 0xfa877473, 0xfb0b412e, 0xb3671d5a, 0x92dbd252, 0xe9105633, 0x6dd64713, 0x9ad7618c, 0x37a10c7a, 0x59f8148e, 0xeb133c89, 0xcea927ee, 0xb761c935, 0xe11ce5ed, 0x7a47b13c, 0x9cd2df59, 0x55f2733f, 0x1814ce79, 0x73c737bf, 0x53f7cdea, 0x5ffdaa5b, 0xdf3d6f14, 0x7844db86, 0xcaaff381, 0xb968c43e, 0x3824342c, 0xc2a3405f, 0x161dc372, 0xbce2250c, 0x283c498b, 0xff0d9541, 0x39a80171, 0x080cb3de, 0xd8b4e49c, 0x6456c190, 0x7bcb8461, 0xd532b670, 0x486c5c74, 0xd0b85742];\n var T6 = [0x5051f4a7, 0x537e4165, 0xc31a17a4, 0x963a275e, 0xcb3bab6b, 0xf11f9d45, 0xabacfa58, 0x934be303, 0x552030fa, 0xf6ad766d, 0x9188cc76, 0x25f5024c, 0xfc4fe5d7, 0xd7c52acb, 0x80263544, 0x8fb562a3, 0x49deb15a, 0x6725ba1b, 0x9845ea0e, 0xe15dfec0, 0x02c32f75, 0x12814cf0, 0xa38d4697, 0xc66bd3f9, 0xe7038f5f, 0x9515929c, 0xebbf6d7a, 0xda955259, 0x2dd4be83, 0xd3587421, 0x2949e069, 0x448ec9c8, 0x6a75c289, 0x78f48e79, 0x6b99583e, 0xdd27b971, 0xb6bee14f, 0x17f088ad, 0x66c920ac, 0xb47dce3a, 0x1863df4a, 0x82e51a31, 0x60975133, 0x4562537f, 0xe0b16477, 0x84bb6bae, 0x1cfe81a0, 0x94f9082b, 0x58704868, 0x198f45fd, 0x8794de6c, 0xb7527bf8, 0x23ab73d3, 0xe2724b02, 0x57e31f8f, 0x2a6655ab, 0x07b2eb28, 0x032fb5c2, 0x9a86c57b, 0xa5d33708, 0xf2302887, 0xb223bfa5, 0xba02036a, 0x5ced1682, 0x2b8acf1c, 0x92a779b4, 0xf0f307f2, 0xa14e69e2, 0xcd65daf4, 0xd50605be, 0x1fd13462, 0x8ac4a6fe, 0x9d342e53, 0xa0a2f355, 0x32058ae1, 0x75a4f6eb, 0x390b83ec, 0xaa4060ef, 0x065e719f, 0x51bd6e10, 0xf93e218a, 0x3d96dd06, 0xaedd3e05, 0x464de6bd, 0xb591548d, 0x0571c45d, 0x6f0406d4, 0xff605015, 0x241998fb, 0x97d6bde9, 0xcc894043, 0x7767d99e, 0xbdb0e842, 0x8807898b, 0x38e7195b, 0xdb79c8ee, 0x47a17c0a, 0xe97c420f, 0xc9f8841e, 0x00000000, 0x83098086, 0x48322bed, 0xac1e1170, 0x4e6c5a72, 0xfbfd0eff, 0x560f8538, 0x1e3daed5, 0x27362d39, 0x640a0fd9, 0x21685ca6, 0xd19b5b54, 0x3a24362e, 0xb10c0a67, 0x0f9357e7, 0xd2b4ee96, 0x9e1b9b91, 0x4f80c0c5, 0xa261dc20, 0x695a774b, 0x161c121a, 0x0ae293ba, 0xe5c0a02a, 0x433c22e0, 0x1d121b17, 0x0b0e090d, 0xadf28bc7, 0xb92db6a8, 0xc8141ea9, 0x8557f119, 0x4caf7507, 0xbbee99dd, 0xfda37f60, 0x9ff70126, 0xbc5c72f5, 0xc544663b, 0x345bfb7e, 0x768b4329, 0xdccb23c6, 0x68b6edfc, 0x63b8e4f1, 0xcad731dc, 0x10426385, 0x40139722, 0x2084c611, 0x7d854a24, 0xf8d2bb3d, 0x11aef932, 0x6dc729a1, 0x4b1d9e2f, 0xf3dcb230, 0xec0d8652, 0xd077c1e3, 0x6c2bb316, 0x99a970b9, 0xfa119448, 0x2247e964, 0xc4a8fc8c, 0x1aa0f03f, 0xd8567d2c, 0xef223390, 0xc787494e, 0xc1d938d1, 0xfe8ccaa2, 0x3698d40b, 0xcfa6f581, 0x28a57ade, 0x26dab78e, 0xa43fadbf, 0xe42c3a9d, 0x0d507892, 0x9b6a5fcc, 0x62547e46, 0xc2f68d13, 0xe890d8b8, 0x5e2e39f7, 0xf582c3af, 0xbe9f5d80, 0x7c69d093, 0xa96fd52d, 0xb3cf2512, 0x3bc8ac99, 0xa710187d, 0x6ee89c63, 0x7bdb3bbb, 0x09cd2678, 0xf46e5918, 0x01ec9ab7, 0xa8834f9a, 0x65e6956e, 0x7eaaffe6, 0x0821bccf, 0xe6ef15e8, 0xd9bae79b, 0xce4a6f36, 0xd4ea9f09, 0xd629b07c, 0xaf31a4b2, 0x312a3f23, 0x30c6a594, 0xc035a266, 0x37744ebc, 0xa6fc82ca, 0xb0e090d0, 0x1533a7d8, 0x4af10498, 0xf741ecda, 0x0e7fcd50, 0x2f1791f6, 0x8d764dd6, 0x4d43efb0, 0x54ccaa4d, 0xdfe49604, 0xe39ed1b5, 0x1b4c6a88, 0xb8c12c1f, 0x7f466551, 0x049d5eea, 0x5d018c35, 0x73fa8774, 0x2efb0b41, 0x5ab3671d, 0x5292dbd2, 0x33e91056, 0x136dd647, 0x8c9ad761, 0x7a37a10c, 0x8e59f814, 0x89eb133c, 0xeecea927, 0x35b761c9, 0xede11ce5, 0x3c7a47b1, 0x599cd2df, 0x3f55f273, 0x791814ce, 0xbf73c737, 0xea53f7cd, 0x5b5ffdaa, 0x14df3d6f, 0x867844db, 0x81caaff3, 0x3eb968c4, 0x2c382434, 0x5fc2a340, 0x72161dc3, 0x0cbce225, 0x8b283c49, 0x41ff0d95, 0x7139a801, 0xde080cb3, 0x9cd8b4e4, 0x906456c1, 0x617bcb84, 0x70d532b6, 0x74486c5c, 0x42d0b857];\n var T7 = [0xa75051f4, 0x65537e41, 0xa4c31a17, 0x5e963a27, 0x6bcb3bab, 0x45f11f9d, 0x58abacfa, 0x03934be3, 0xfa552030, 0x6df6ad76, 0x769188cc, 0x4c25f502, 0xd7fc4fe5, 0xcbd7c52a, 0x44802635, 0xa38fb562, 0x5a49deb1, 0x1b6725ba, 0x0e9845ea, 0xc0e15dfe, 0x7502c32f, 0xf012814c, 0x97a38d46, 0xf9c66bd3, 0x5fe7038f, 0x9c951592, 0x7aebbf6d, 0x59da9552, 0x832dd4be, 0x21d35874, 0x692949e0, 0xc8448ec9, 0x896a75c2, 0x7978f48e, 0x3e6b9958, 0x71dd27b9, 0x4fb6bee1, 0xad17f088, 0xac66c920, 0x3ab47dce, 0x4a1863df, 0x3182e51a, 0x33609751, 0x7f456253, 0x77e0b164, 0xae84bb6b, 0xa01cfe81, 0x2b94f908, 0x68587048, 0xfd198f45, 0x6c8794de, 0xf8b7527b, 0xd323ab73, 0x02e2724b, 0x8f57e31f, 0xab2a6655, 0x2807b2eb, 0xc2032fb5, 0x7b9a86c5, 0x08a5d337, 0x87f23028, 0xa5b223bf, 0x6aba0203, 0x825ced16, 0x1c2b8acf, 0xb492a779, 0xf2f0f307, 0xe2a14e69, 0xf4cd65da, 0xbed50605, 0x621fd134, 0xfe8ac4a6, 0x539d342e, 0x55a0a2f3, 0xe132058a, 0xeb75a4f6, 0xec390b83, 0xefaa4060, 0x9f065e71, 0x1051bd6e, 0x8af93e21, 0x063d96dd, 0x05aedd3e, 0xbd464de6, 0x8db59154, 0x5d0571c4, 0xd46f0406, 0x15ff6050, 0xfb241998, 0xe997d6bd, 0x43cc8940, 0x9e7767d9, 0x42bdb0e8, 0x8b880789, 0x5b38e719, 0xeedb79c8, 0x0a47a17c, 0x0fe97c42, 0x1ec9f884, 0x00000000, 0x86830980, 0xed48322b, 0x70ac1e11, 0x724e6c5a, 0xfffbfd0e, 0x38560f85, 0xd51e3dae, 0x3927362d, 0xd9640a0f, 0xa621685c, 0x54d19b5b, 0x2e3a2436, 0x67b10c0a, 0xe70f9357, 0x96d2b4ee, 0x919e1b9b, 0xc54f80c0, 0x20a261dc, 0x4b695a77, 0x1a161c12, 0xba0ae293, 0x2ae5c0a0, 0xe0433c22, 0x171d121b, 0x0d0b0e09, 0xc7adf28b, 0xa8b92db6, 0xa9c8141e, 0x198557f1, 0x074caf75, 0xddbbee99, 0x60fda37f, 0x269ff701, 0xf5bc5c72, 0x3bc54466, 0x7e345bfb, 0x29768b43, 0xc6dccb23, 0xfc68b6ed, 0xf163b8e4, 0xdccad731, 0x85104263, 0x22401397, 0x112084c6, 0x247d854a, 0x3df8d2bb, 0x3211aef9, 0xa16dc729, 0x2f4b1d9e, 0x30f3dcb2, 0x52ec0d86, 0xe3d077c1, 0x166c2bb3, 0xb999a970, 0x48fa1194, 0x642247e9, 0x8cc4a8fc, 0x3f1aa0f0, 0x2cd8567d, 0x90ef2233, 0x4ec78749, 0xd1c1d938, 0xa2fe8cca, 0x0b3698d4, 0x81cfa6f5, 0xde28a57a, 0x8e26dab7, 0xbfa43fad, 0x9de42c3a, 0x920d5078, 0xcc9b6a5f, 0x4662547e, 0x13c2f68d, 0xb8e890d8, 0xf75e2e39, 0xaff582c3, 0x80be9f5d, 0x937c69d0, 0x2da96fd5, 0x12b3cf25, 0x993bc8ac, 0x7da71018, 0x636ee89c, 0xbb7bdb3b, 0x7809cd26, 0x18f46e59, 0xb701ec9a, 0x9aa8834f, 0x6e65e695, 0xe67eaaff, 0xcf0821bc, 0xe8e6ef15, 0x9bd9bae7, 0x36ce4a6f, 0x09d4ea9f, 0x7cd629b0, 0xb2af31a4, 0x23312a3f, 0x9430c6a5, 0x66c035a2, 0xbc37744e, 0xcaa6fc82, 0xd0b0e090, 0xd81533a7, 0x984af104, 0xdaf741ec, 0x500e7fcd, 0xf62f1791, 0xd68d764d, 0xb04d43ef, 0x4d54ccaa, 0x04dfe496, 0xb5e39ed1, 0x881b4c6a, 0x1fb8c12c, 0x517f4665, 0xea049d5e, 0x355d018c, 0x7473fa87, 0x412efb0b, 0x1d5ab367, 0xd25292db, 0x5633e910, 0x47136dd6, 0x618c9ad7, 0x0c7a37a1, 0x148e59f8, 0x3c89eb13, 0x27eecea9, 0xc935b761, 0xe5ede11c, 0xb13c7a47, 0xdf599cd2, 0x733f55f2, 0xce791814, 0x37bf73c7, 0xcdea53f7, 0xaa5b5ffd, 0x6f14df3d, 0xdb867844, 0xf381caaf, 0xc43eb968, 0x342c3824, 0x405fc2a3, 0xc372161d, 0x250cbce2, 0x498b283c, 0x9541ff0d, 0x017139a8, 0xb3de080c, 0xe49cd8b4, 0xc1906456, 0x84617bcb, 0xb670d532, 0x5c74486c, 0x5742d0b8];\n var T8 = [0xf4a75051, 0x4165537e, 0x17a4c31a, 0x275e963a, 0xab6bcb3b, 0x9d45f11f, 0xfa58abac, 0xe303934b, 0x30fa5520, 0x766df6ad, 0xcc769188, 0x024c25f5, 0xe5d7fc4f, 0x2acbd7c5, 0x35448026, 0x62a38fb5, 0xb15a49de, 0xba1b6725, 0xea0e9845, 0xfec0e15d, 0x2f7502c3, 0x4cf01281, 0x4697a38d, 0xd3f9c66b, 0x8f5fe703, 0x929c9515, 0x6d7aebbf, 0x5259da95, 0xbe832dd4, 0x7421d358, 0xe0692949, 0xc9c8448e, 0xc2896a75, 0x8e7978f4, 0x583e6b99, 0xb971dd27, 0xe14fb6be, 0x88ad17f0, 0x20ac66c9, 0xce3ab47d, 0xdf4a1863, 0x1a3182e5, 0x51336097, 0x537f4562, 0x6477e0b1, 0x6bae84bb, 0x81a01cfe, 0x082b94f9, 0x48685870, 0x45fd198f, 0xde6c8794, 0x7bf8b752, 0x73d323ab, 0x4b02e272, 0x1f8f57e3, 0x55ab2a66, 0xeb2807b2, 0xb5c2032f, 0xc57b9a86, 0x3708a5d3, 0x2887f230, 0xbfa5b223, 0x036aba02, 0x16825ced, 0xcf1c2b8a, 0x79b492a7, 0x07f2f0f3, 0x69e2a14e, 0xdaf4cd65, 0x05bed506, 0x34621fd1, 0xa6fe8ac4, 0x2e539d34, 0xf355a0a2, 0x8ae13205, 0xf6eb75a4, 0x83ec390b, 0x60efaa40, 0x719f065e, 0x6e1051bd, 0x218af93e, 0xdd063d96, 0x3e05aedd, 0xe6bd464d, 0x548db591, 0xc45d0571, 0x06d46f04, 0x5015ff60, 0x98fb2419, 0xbde997d6, 0x4043cc89, 0xd99e7767, 0xe842bdb0, 0x898b8807, 0x195b38e7, 0xc8eedb79, 0x7c0a47a1, 0x420fe97c, 0x841ec9f8, 0x00000000, 0x80868309, 0x2bed4832, 0x1170ac1e, 0x5a724e6c, 0x0efffbfd, 0x8538560f, 0xaed51e3d, 0x2d392736, 0x0fd9640a, 0x5ca62168, 0x5b54d19b, 0x362e3a24, 0x0a67b10c, 0x57e70f93, 0xee96d2b4, 0x9b919e1b, 0xc0c54f80, 0xdc20a261, 0x774b695a, 0x121a161c, 0x93ba0ae2, 0xa02ae5c0, 0x22e0433c, 0x1b171d12, 0x090d0b0e, 0x8bc7adf2, 0xb6a8b92d, 0x1ea9c814, 0xf1198557, 0x75074caf, 0x99ddbbee, 0x7f60fda3, 0x01269ff7, 0x72f5bc5c, 0x663bc544, 0xfb7e345b, 0x4329768b, 0x23c6dccb, 0xedfc68b6, 0xe4f163b8, 0x31dccad7, 0x63851042, 0x97224013, 0xc6112084, 0x4a247d85, 0xbb3df8d2, 0xf93211ae, 0x29a16dc7, 0x9e2f4b1d, 0xb230f3dc, 0x8652ec0d, 0xc1e3d077, 0xb3166c2b, 0x70b999a9, 0x9448fa11, 0xe9642247, 0xfc8cc4a8, 0xf03f1aa0, 0x7d2cd856, 0x3390ef22, 0x494ec787, 0x38d1c1d9, 0xcaa2fe8c, 0xd40b3698, 0xf581cfa6, 0x7ade28a5, 0xb78e26da, 0xadbfa43f, 0x3a9de42c, 0x78920d50, 0x5fcc9b6a, 0x7e466254, 0x8d13c2f6, 0xd8b8e890, 0x39f75e2e, 0xc3aff582, 0x5d80be9f, 0xd0937c69, 0xd52da96f, 0x2512b3cf, 0xac993bc8, 0x187da710, 0x9c636ee8, 0x3bbb7bdb, 0x267809cd, 0x5918f46e, 0x9ab701ec, 0x4f9aa883, 0x956e65e6, 0xffe67eaa, 0xbccf0821, 0x15e8e6ef, 0xe79bd9ba, 0x6f36ce4a, 0x9f09d4ea, 0xb07cd629, 0xa4b2af31, 0x3f23312a, 0xa59430c6, 0xa266c035, 0x4ebc3774, 0x82caa6fc, 0x90d0b0e0, 0xa7d81533, 0x04984af1, 0xecdaf741, 0xcd500e7f, 0x91f62f17, 0x4dd68d76, 0xefb04d43, 0xaa4d54cc, 0x9604dfe4, 0xd1b5e39e, 0x6a881b4c, 0x2c1fb8c1, 0x65517f46, 0x5eea049d, 0x8c355d01, 0x877473fa, 0x0b412efb, 0x671d5ab3, 0xdbd25292, 0x105633e9, 0xd647136d, 0xd7618c9a, 0xa10c7a37, 0xf8148e59, 0x133c89eb, 0xa927eece, 0x61c935b7, 0x1ce5ede1, 0x47b13c7a, 0xd2df599c, 0xf2733f55, 0x14ce7918, 0xc737bf73, 0xf7cdea53, 0xfdaa5b5f, 0x3d6f14df, 0x44db8678, 0xaff381ca, 0x68c43eb9, 0x24342c38, 0xa3405fc2, 0x1dc37216, 0xe2250cbc, 0x3c498b28, 0x0d9541ff, 0xa8017139, 0x0cb3de08, 0xb4e49cd8, 0x56c19064, 0xcb84617b, 0x32b670d5, 0x6c5c7448, 0xb85742d0];\n\n // Transformations for decryption key expansion\n var U1 = [0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3];\n var U2 = [0x00000000, 0x0b0e090d, 0x161c121a, 0x1d121b17, 0x2c382434, 0x27362d39, 0x3a24362e, 0x312a3f23, 0x58704868, 0x537e4165, 0x4e6c5a72, 0x4562537f, 0x74486c5c, 0x7f466551, 0x62547e46, 0x695a774b, 0xb0e090d0, 0xbbee99dd, 0xa6fc82ca, 0xadf28bc7, 0x9cd8b4e4, 0x97d6bde9, 0x8ac4a6fe, 0x81caaff3, 0xe890d8b8, 0xe39ed1b5, 0xfe8ccaa2, 0xf582c3af, 0xc4a8fc8c, 0xcfa6f581, 0xd2b4ee96, 0xd9bae79b, 0x7bdb3bbb, 0x70d532b6, 0x6dc729a1, 0x66c920ac, 0x57e31f8f, 0x5ced1682, 0x41ff0d95, 0x4af10498, 0x23ab73d3, 0x28a57ade, 0x35b761c9, 0x3eb968c4, 0x0f9357e7, 0x049d5eea, 0x198f45fd, 0x12814cf0, 0xcb3bab6b, 0xc035a266, 0xdd27b971, 0xd629b07c, 0xe7038f5f, 0xec0d8652, 0xf11f9d45, 0xfa119448, 0x934be303, 0x9845ea0e, 0x8557f119, 0x8e59f814, 0xbf73c737, 0xb47dce3a, 0xa96fd52d, 0xa261dc20, 0xf6ad766d, 0xfda37f60, 0xe0b16477, 0xebbf6d7a, 0xda955259, 0xd19b5b54, 0xcc894043, 0xc787494e, 0xaedd3e05, 0xa5d33708, 0xb8c12c1f, 0xb3cf2512, 0x82e51a31, 0x89eb133c, 0x94f9082b, 0x9ff70126, 0x464de6bd, 0x4d43efb0, 0x5051f4a7, 0x5b5ffdaa, 0x6a75c289, 0x617bcb84, 0x7c69d093, 0x7767d99e, 0x1e3daed5, 0x1533a7d8, 0x0821bccf, 0x032fb5c2, 0x32058ae1, 0x390b83ec, 0x241998fb, 0x2f1791f6, 0x8d764dd6, 0x867844db, 0x9b6a5fcc, 0x906456c1, 0xa14e69e2, 0xaa4060ef, 0xb7527bf8, 0xbc5c72f5, 0xd50605be, 0xde080cb3, 0xc31a17a4, 0xc8141ea9, 0xf93e218a, 0xf2302887, 0xef223390, 0xe42c3a9d, 0x3d96dd06, 0x3698d40b, 0x2b8acf1c, 0x2084c611, 0x11aef932, 0x1aa0f03f, 0x07b2eb28, 0x0cbce225, 0x65e6956e, 0x6ee89c63, 0x73fa8774, 0x78f48e79, 0x49deb15a, 0x42d0b857, 0x5fc2a340, 0x54ccaa4d, 0xf741ecda, 0xfc4fe5d7, 0xe15dfec0, 0xea53f7cd, 0xdb79c8ee, 0xd077c1e3, 0xcd65daf4, 0xc66bd3f9, 0xaf31a4b2, 0xa43fadbf, 0xb92db6a8, 0xb223bfa5, 0x83098086, 0x8807898b, 0x9515929c, 0x9e1b9b91, 0x47a17c0a, 0x4caf7507, 0x51bd6e10, 0x5ab3671d, 0x6b99583e, 0x60975133, 0x7d854a24, 0x768b4329, 0x1fd13462, 0x14df3d6f, 0x09cd2678, 0x02c32f75, 0x33e91056, 0x38e7195b, 0x25f5024c, 0x2efb0b41, 0x8c9ad761, 0x8794de6c, 0x9a86c57b, 0x9188cc76, 0xa0a2f355, 0xabacfa58, 0xb6bee14f, 0xbdb0e842, 0xd4ea9f09, 0xdfe49604, 0xc2f68d13, 0xc9f8841e, 0xf8d2bb3d, 0xf3dcb230, 0xeecea927, 0xe5c0a02a, 0x3c7a47b1, 0x37744ebc, 0x2a6655ab, 0x21685ca6, 0x10426385, 0x1b4c6a88, 0x065e719f, 0x0d507892, 0x640a0fd9, 0x6f0406d4, 0x72161dc3, 0x791814ce, 0x48322bed, 0x433c22e0, 0x5e2e39f7, 0x552030fa, 0x01ec9ab7, 0x0ae293ba, 0x17f088ad, 0x1cfe81a0, 0x2dd4be83, 0x26dab78e, 0x3bc8ac99, 0x30c6a594, 0x599cd2df, 0x5292dbd2, 0x4f80c0c5, 0x448ec9c8, 0x75a4f6eb, 0x7eaaffe6, 0x63b8e4f1, 0x68b6edfc, 0xb10c0a67, 0xba02036a, 0xa710187d, 0xac1e1170, 0x9d342e53, 0x963a275e, 0x8b283c49, 0x80263544, 0xe97c420f, 0xe2724b02, 0xff605015, 0xf46e5918, 0xc544663b, 0xce4a6f36, 0xd3587421, 0xd8567d2c, 0x7a37a10c, 0x7139a801, 0x6c2bb316, 0x6725ba1b, 0x560f8538, 0x5d018c35, 0x40139722, 0x4b1d9e2f, 0x2247e964, 0x2949e069, 0x345bfb7e, 0x3f55f273, 0x0e7fcd50, 0x0571c45d, 0x1863df4a, 0x136dd647, 0xcad731dc, 0xc1d938d1, 0xdccb23c6, 0xd7c52acb, 0xe6ef15e8, 0xede11ce5, 0xf0f307f2, 0xfbfd0eff, 0x92a779b4, 0x99a970b9, 0x84bb6bae, 0x8fb562a3, 0xbe9f5d80, 0xb591548d, 0xa8834f9a, 0xa38d4697];\n var U3 = [0x00000000, 0x0d0b0e09, 0x1a161c12, 0x171d121b, 0x342c3824, 0x3927362d, 0x2e3a2436, 0x23312a3f, 0x68587048, 0x65537e41, 0x724e6c5a, 0x7f456253, 0x5c74486c, 0x517f4665, 0x4662547e, 0x4b695a77, 0xd0b0e090, 0xddbbee99, 0xcaa6fc82, 0xc7adf28b, 0xe49cd8b4, 0xe997d6bd, 0xfe8ac4a6, 0xf381caaf, 0xb8e890d8, 0xb5e39ed1, 0xa2fe8cca, 0xaff582c3, 0x8cc4a8fc, 0x81cfa6f5, 0x96d2b4ee, 0x9bd9bae7, 0xbb7bdb3b, 0xb670d532, 0xa16dc729, 0xac66c920, 0x8f57e31f, 0x825ced16, 0x9541ff0d, 0x984af104, 0xd323ab73, 0xde28a57a, 0xc935b761, 0xc43eb968, 0xe70f9357, 0xea049d5e, 0xfd198f45, 0xf012814c, 0x6bcb3bab, 0x66c035a2, 0x71dd27b9, 0x7cd629b0, 0x5fe7038f, 0x52ec0d86, 0x45f11f9d, 0x48fa1194, 0x03934be3, 0x0e9845ea, 0x198557f1, 0x148e59f8, 0x37bf73c7, 0x3ab47dce, 0x2da96fd5, 0x20a261dc, 0x6df6ad76, 0x60fda37f, 0x77e0b164, 0x7aebbf6d, 0x59da9552, 0x54d19b5b, 0x43cc8940, 0x4ec78749, 0x05aedd3e, 0x08a5d337, 0x1fb8c12c, 0x12b3cf25, 0x3182e51a, 0x3c89eb13, 0x2b94f908, 0x269ff701, 0xbd464de6, 0xb04d43ef, 0xa75051f4, 0xaa5b5ffd, 0x896a75c2, 0x84617bcb, 0x937c69d0, 0x9e7767d9, 0xd51e3dae, 0xd81533a7, 0xcf0821bc, 0xc2032fb5, 0xe132058a, 0xec390b83, 0xfb241998, 0xf62f1791, 0xd68d764d, 0xdb867844, 0xcc9b6a5f, 0xc1906456, 0xe2a14e69, 0xefaa4060, 0xf8b7527b, 0xf5bc5c72, 0xbed50605, 0xb3de080c, 0xa4c31a17, 0xa9c8141e, 0x8af93e21, 0x87f23028, 0x90ef2233, 0x9de42c3a, 0x063d96dd, 0x0b3698d4, 0x1c2b8acf, 0x112084c6, 0x3211aef9, 0x3f1aa0f0, 0x2807b2eb, 0x250cbce2, 0x6e65e695, 0x636ee89c, 0x7473fa87, 0x7978f48e, 0x5a49deb1, 0x5742d0b8, 0x405fc2a3, 0x4d54ccaa, 0xdaf741ec, 0xd7fc4fe5, 0xc0e15dfe, 0xcdea53f7, 0xeedb79c8, 0xe3d077c1, 0xf4cd65da, 0xf9c66bd3, 0xb2af31a4, 0xbfa43fad, 0xa8b92db6, 0xa5b223bf, 0x86830980, 0x8b880789, 0x9c951592, 0x919e1b9b, 0x0a47a17c, 0x074caf75, 0x1051bd6e, 0x1d5ab367, 0x3e6b9958, 0x33609751, 0x247d854a, 0x29768b43, 0x621fd134, 0x6f14df3d, 0x7809cd26, 0x7502c32f, 0x5633e910, 0x5b38e719, 0x4c25f502, 0x412efb0b, 0x618c9ad7, 0x6c8794de, 0x7b9a86c5, 0x769188cc, 0x55a0a2f3, 0x58abacfa, 0x4fb6bee1, 0x42bdb0e8, 0x09d4ea9f, 0x04dfe496, 0x13c2f68d, 0x1ec9f884, 0x3df8d2bb, 0x30f3dcb2, 0x27eecea9, 0x2ae5c0a0, 0xb13c7a47, 0xbc37744e, 0xab2a6655, 0xa621685c, 0x85104263, 0x881b4c6a, 0x9f065e71, 0x920d5078, 0xd9640a0f, 0xd46f0406, 0xc372161d, 0xce791814, 0xed48322b, 0xe0433c22, 0xf75e2e39, 0xfa552030, 0xb701ec9a, 0xba0ae293, 0xad17f088, 0xa01cfe81, 0x832dd4be, 0x8e26dab7, 0x993bc8ac, 0x9430c6a5, 0xdf599cd2, 0xd25292db, 0xc54f80c0, 0xc8448ec9, 0xeb75a4f6, 0xe67eaaff, 0xf163b8e4, 0xfc68b6ed, 0x67b10c0a, 0x6aba0203, 0x7da71018, 0x70ac1e11, 0x539d342e, 0x5e963a27, 0x498b283c, 0x44802635, 0x0fe97c42, 0x02e2724b, 0x15ff6050, 0x18f46e59, 0x3bc54466, 0x36ce4a6f, 0x21d35874, 0x2cd8567d, 0x0c7a37a1, 0x017139a8, 0x166c2bb3, 0x1b6725ba, 0x38560f85, 0x355d018c, 0x22401397, 0x2f4b1d9e, 0x642247e9, 0x692949e0, 0x7e345bfb, 0x733f55f2, 0x500e7fcd, 0x5d0571c4, 0x4a1863df, 0x47136dd6, 0xdccad731, 0xd1c1d938, 0xc6dccb23, 0xcbd7c52a, 0xe8e6ef15, 0xe5ede11c, 0xf2f0f307, 0xfffbfd0e, 0xb492a779, 0xb999a970, 0xae84bb6b, 0xa38fb562, 0x80be9f5d, 0x8db59154, 0x9aa8834f, 0x97a38d46];\n var U4 = [0x00000000, 0x090d0b0e, 0x121a161c, 0x1b171d12, 0x24342c38, 0x2d392736, 0x362e3a24, 0x3f23312a, 0x48685870, 0x4165537e, 0x5a724e6c, 0x537f4562, 0x6c5c7448, 0x65517f46, 0x7e466254, 0x774b695a, 0x90d0b0e0, 0x99ddbbee, 0x82caa6fc, 0x8bc7adf2, 0xb4e49cd8, 0xbde997d6, 0xa6fe8ac4, 0xaff381ca, 0xd8b8e890, 0xd1b5e39e, 0xcaa2fe8c, 0xc3aff582, 0xfc8cc4a8, 0xf581cfa6, 0xee96d2b4, 0xe79bd9ba, 0x3bbb7bdb, 0x32b670d5, 0x29a16dc7, 0x20ac66c9, 0x1f8f57e3, 0x16825ced, 0x0d9541ff, 0x04984af1, 0x73d323ab, 0x7ade28a5, 0x61c935b7, 0x68c43eb9, 0x57e70f93, 0x5eea049d, 0x45fd198f, 0x4cf01281, 0xab6bcb3b, 0xa266c035, 0xb971dd27, 0xb07cd629, 0x8f5fe703, 0x8652ec0d, 0x9d45f11f, 0x9448fa11, 0xe303934b, 0xea0e9845, 0xf1198557, 0xf8148e59, 0xc737bf73, 0xce3ab47d, 0xd52da96f, 0xdc20a261, 0x766df6ad, 0x7f60fda3, 0x6477e0b1, 0x6d7aebbf, 0x5259da95, 0x5b54d19b, 0x4043cc89, 0x494ec787, 0x3e05aedd, 0x3708a5d3, 0x2c1fb8c1, 0x2512b3cf, 0x1a3182e5, 0x133c89eb, 0x082b94f9, 0x01269ff7, 0xe6bd464d, 0xefb04d43, 0xf4a75051, 0xfdaa5b5f, 0xc2896a75, 0xcb84617b, 0xd0937c69, 0xd99e7767, 0xaed51e3d, 0xa7d81533, 0xbccf0821, 0xb5c2032f, 0x8ae13205, 0x83ec390b, 0x98fb2419, 0x91f62f17, 0x4dd68d76, 0x44db8678, 0x5fcc9b6a, 0x56c19064, 0x69e2a14e, 0x60efaa40, 0x7bf8b752, 0x72f5bc5c, 0x05bed506, 0x0cb3de08, 0x17a4c31a, 0x1ea9c814, 0x218af93e, 0x2887f230, 0x3390ef22, 0x3a9de42c, 0xdd063d96, 0xd40b3698, 0xcf1c2b8a, 0xc6112084, 0xf93211ae, 0xf03f1aa0, 0xeb2807b2, 0xe2250cbc, 0x956e65e6, 0x9c636ee8, 0x877473fa, 0x8e7978f4, 0xb15a49de, 0xb85742d0, 0xa3405fc2, 0xaa4d54cc, 0xecdaf741, 0xe5d7fc4f, 0xfec0e15d, 0xf7cdea53, 0xc8eedb79, 0xc1e3d077, 0xdaf4cd65, 0xd3f9c66b, 0xa4b2af31, 0xadbfa43f, 0xb6a8b92d, 0xbfa5b223, 0x80868309, 0x898b8807, 0x929c9515, 0x9b919e1b, 0x7c0a47a1, 0x75074caf, 0x6e1051bd, 0x671d5ab3, 0x583e6b99, 0x51336097, 0x4a247d85, 0x4329768b, 0x34621fd1, 0x3d6f14df, 0x267809cd, 0x2f7502c3, 0x105633e9, 0x195b38e7, 0x024c25f5, 0x0b412efb, 0xd7618c9a, 0xde6c8794, 0xc57b9a86, 0xcc769188, 0xf355a0a2, 0xfa58abac, 0xe14fb6be, 0xe842bdb0, 0x9f09d4ea, 0x9604dfe4, 0x8d13c2f6, 0x841ec9f8, 0xbb3df8d2, 0xb230f3dc, 0xa927eece, 0xa02ae5c0, 0x47b13c7a, 0x4ebc3774, 0x55ab2a66, 0x5ca62168, 0x63851042, 0x6a881b4c, 0x719f065e, 0x78920d50, 0x0fd9640a, 0x06d46f04, 0x1dc37216, 0x14ce7918, 0x2bed4832, 0x22e0433c, 0x39f75e2e, 0x30fa5520, 0x9ab701ec, 0x93ba0ae2, 0x88ad17f0, 0x81a01cfe, 0xbe832dd4, 0xb78e26da, 0xac993bc8, 0xa59430c6, 0xd2df599c, 0xdbd25292, 0xc0c54f80, 0xc9c8448e, 0xf6eb75a4, 0xffe67eaa, 0xe4f163b8, 0xedfc68b6, 0x0a67b10c, 0x036aba02, 0x187da710, 0x1170ac1e, 0x2e539d34, 0x275e963a, 0x3c498b28, 0x35448026, 0x420fe97c, 0x4b02e272, 0x5015ff60, 0x5918f46e, 0x663bc544, 0x6f36ce4a, 0x7421d358, 0x7d2cd856, 0xa10c7a37, 0xa8017139, 0xb3166c2b, 0xba1b6725, 0x8538560f, 0x8c355d01, 0x97224013, 0x9e2f4b1d, 0xe9642247, 0xe0692949, 0xfb7e345b, 0xf2733f55, 0xcd500e7f, 0xc45d0571, 0xdf4a1863, 0xd647136d, 0x31dccad7, 0x38d1c1d9, 0x23c6dccb, 0x2acbd7c5, 0x15e8e6ef, 0x1ce5ede1, 0x07f2f0f3, 0x0efffbfd, 0x79b492a7, 0x70b999a9, 0x6bae84bb, 0x62a38fb5, 0x5d80be9f, 0x548db591, 0x4f9aa883, 0x4697a38d];\n\n function convertToInt32(bytes) {\n var result = [];\n for (var i = 0; i < bytes.length; i += 4) {\n result.push(\n (bytes[i ] << 24) |\n (bytes[i + 1] << 16) |\n (bytes[i + 2] << 8) |\n bytes[i + 3]\n );\n }\n return result;\n }\n\n var AES = function(key) {\n if (!(this instanceof AES)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n Object.defineProperty(this, 'key', {\n value: coerceArray(key, true)\n });\n\n this._prepare();\n }\n\n\n AES.prototype._prepare = function() {\n\n var rounds = numberOfRounds[this.key.length];\n if (rounds == null) {\n throw new Error('invalid key size (must be 16, 24 or 32 bytes)');\n }\n\n // encryption round keys\n this._Ke = [];\n\n // decryption round keys\n this._Kd = [];\n\n for (var i = 0; i <= rounds; i++) {\n this._Ke.push([0, 0, 0, 0]);\n this._Kd.push([0, 0, 0, 0]);\n }\n\n var roundKeyCount = (rounds + 1) * 4;\n var KC = this.key.length / 4;\n\n // convert the key into ints\n var tk = convertToInt32(this.key);\n\n // copy values into round key arrays\n var index;\n for (var i = 0; i < KC; i++) {\n index = i >> 2;\n this._Ke[index][i % 4] = tk[i];\n this._Kd[rounds - index][i % 4] = tk[i];\n }\n\n // key expansion (fips-197 section 5.2)\n var rconpointer = 0;\n var t = KC, tt;\n while (t < roundKeyCount) {\n tt = tk[KC - 1];\n tk[0] ^= ((S[(tt >> 16) & 0xFF] << 24) ^\n (S[(tt >> 8) & 0xFF] << 16) ^\n (S[ tt & 0xFF] << 8) ^\n S[(tt >> 24) & 0xFF] ^\n (rcon[rconpointer] << 24));\n rconpointer += 1;\n\n // key expansion (for non-256 bit)\n if (KC != 8) {\n for (var i = 1; i < KC; i++) {\n tk[i] ^= tk[i - 1];\n }\n\n // key expansion for 256-bit keys is \"slightly different\" (fips-197)\n } else {\n for (var i = 1; i < (KC / 2); i++) {\n tk[i] ^= tk[i - 1];\n }\n tt = tk[(KC / 2) - 1];\n\n tk[KC / 2] ^= (S[ tt & 0xFF] ^\n (S[(tt >> 8) & 0xFF] << 8) ^\n (S[(tt >> 16) & 0xFF] << 16) ^\n (S[(tt >> 24) & 0xFF] << 24));\n\n for (var i = (KC / 2) + 1; i < KC; i++) {\n tk[i] ^= tk[i - 1];\n }\n }\n\n // copy values into round key arrays\n var i = 0, r, c;\n while (i < KC && t < roundKeyCount) {\n r = t >> 2;\n c = t % 4;\n this._Ke[r][c] = tk[i];\n this._Kd[rounds - r][c] = tk[i++];\n t++;\n }\n }\n\n // inverse-cipher-ify the decryption round key (fips-197 section 5.3)\n for (var r = 1; r < rounds; r++) {\n for (var c = 0; c < 4; c++) {\n tt = this._Kd[r][c];\n this._Kd[r][c] = (U1[(tt >> 24) & 0xFF] ^\n U2[(tt >> 16) & 0xFF] ^\n U3[(tt >> 8) & 0xFF] ^\n U4[ tt & 0xFF]);\n }\n }\n }\n\n AES.prototype.encrypt = function(plaintext) {\n if (plaintext.length != 16) {\n throw new Error('invalid plaintext size (must be 16 bytes)');\n }\n\n var rounds = this._Ke.length - 1;\n var a = [0, 0, 0, 0];\n\n // convert plaintext to (ints ^ key)\n var t = convertToInt32(plaintext);\n for (var i = 0; i < 4; i++) {\n t[i] ^= this._Ke[0][i];\n }\n\n // apply round transforms\n for (var r = 1; r < rounds; r++) {\n for (var i = 0; i < 4; i++) {\n a[i] = (T1[(t[ i ] >> 24) & 0xff] ^\n T2[(t[(i + 1) % 4] >> 16) & 0xff] ^\n T3[(t[(i + 2) % 4] >> 8) & 0xff] ^\n T4[ t[(i + 3) % 4] & 0xff] ^\n this._Ke[r][i]);\n }\n t = a.slice();\n }\n\n // the last round is special\n var result = createArray(16), tt;\n for (var i = 0; i < 4; i++) {\n tt = this._Ke[rounds][i];\n result[4 * i ] = (S[(t[ i ] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n result[4 * i + 1] = (S[(t[(i + 1) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n result[4 * i + 2] = (S[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff;\n result[4 * i + 3] = (S[ t[(i + 3) % 4] & 0xff] ^ tt ) & 0xff;\n }\n\n return result;\n }\n\n AES.prototype.decrypt = function(ciphertext) {\n if (ciphertext.length != 16) {\n throw new Error('invalid ciphertext size (must be 16 bytes)');\n }\n\n var rounds = this._Kd.length - 1;\n var a = [0, 0, 0, 0];\n\n // convert plaintext to (ints ^ key)\n var t = convertToInt32(ciphertext);\n for (var i = 0; i < 4; i++) {\n t[i] ^= this._Kd[0][i];\n }\n\n // apply round transforms\n for (var r = 1; r < rounds; r++) {\n for (var i = 0; i < 4; i++) {\n a[i] = (T5[(t[ i ] >> 24) & 0xff] ^\n T6[(t[(i + 3) % 4] >> 16) & 0xff] ^\n T7[(t[(i + 2) % 4] >> 8) & 0xff] ^\n T8[ t[(i + 1) % 4] & 0xff] ^\n this._Kd[r][i]);\n }\n t = a.slice();\n }\n\n // the last round is special\n var result = createArray(16), tt;\n for (var i = 0; i < 4; i++) {\n tt = this._Kd[rounds][i];\n result[4 * i ] = (Si[(t[ i ] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n result[4 * i + 1] = (Si[(t[(i + 3) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n result[4 * i + 2] = (Si[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff;\n result[4 * i + 3] = (Si[ t[(i + 1) % 4] & 0xff] ^ tt ) & 0xff;\n }\n\n return result;\n }\n\n\n /**\n * Mode Of Operation - Electonic Codebook (ECB)\n */\n var ModeOfOperationECB = function(key) {\n if (!(this instanceof ModeOfOperationECB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Electronic Code Block\";\n this.name = \"ecb\";\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationECB.prototype.encrypt = function(plaintext) {\n plaintext = coerceArray(plaintext);\n\n if ((plaintext.length % 16) !== 0) {\n throw new Error('invalid plaintext size (must be multiple of 16 bytes)');\n }\n\n var ciphertext = createArray(plaintext.length);\n var block = createArray(16);\n\n for (var i = 0; i < plaintext.length; i += 16) {\n copyArray(plaintext, block, 0, i, i + 16);\n block = this._aes.encrypt(block);\n copyArray(block, ciphertext, i);\n }\n\n return ciphertext;\n }\n\n ModeOfOperationECB.prototype.decrypt = function(ciphertext) {\n ciphertext = coerceArray(ciphertext);\n\n if ((ciphertext.length % 16) !== 0) {\n throw new Error('invalid ciphertext size (must be multiple of 16 bytes)');\n }\n\n var plaintext = createArray(ciphertext.length);\n var block = createArray(16);\n\n for (var i = 0; i < ciphertext.length; i += 16) {\n copyArray(ciphertext, block, 0, i, i + 16);\n block = this._aes.decrypt(block);\n copyArray(block, plaintext, i);\n }\n\n return plaintext;\n }\n\n\n /**\n * Mode Of Operation - Cipher Block Chaining (CBC)\n */\n var ModeOfOperationCBC = function(key, iv) {\n if (!(this instanceof ModeOfOperationCBC)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Cipher Block Chaining\";\n this.name = \"cbc\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 bytes)');\n }\n\n this._lastCipherblock = coerceArray(iv, true);\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCBC.prototype.encrypt = function(plaintext) {\n plaintext = coerceArray(plaintext);\n\n if ((plaintext.length % 16) !== 0) {\n throw new Error('invalid plaintext size (must be multiple of 16 bytes)');\n }\n\n var ciphertext = createArray(plaintext.length);\n var block = createArray(16);\n\n for (var i = 0; i < plaintext.length; i += 16) {\n copyArray(plaintext, block, 0, i, i + 16);\n\n for (var j = 0; j < 16; j++) {\n block[j] ^= this._lastCipherblock[j];\n }\n\n this._lastCipherblock = this._aes.encrypt(block);\n copyArray(this._lastCipherblock, ciphertext, i);\n }\n\n return ciphertext;\n }\n\n ModeOfOperationCBC.prototype.decrypt = function(ciphertext) {\n ciphertext = coerceArray(ciphertext);\n\n if ((ciphertext.length % 16) !== 0) {\n throw new Error('invalid ciphertext size (must be multiple of 16 bytes)');\n }\n\n var plaintext = createArray(ciphertext.length);\n var block = createArray(16);\n\n for (var i = 0; i < ciphertext.length; i += 16) {\n copyArray(ciphertext, block, 0, i, i + 16);\n block = this._aes.decrypt(block);\n\n for (var j = 0; j < 16; j++) {\n plaintext[i + j] = block[j] ^ this._lastCipherblock[j];\n }\n\n copyArray(ciphertext, this._lastCipherblock, 0, i, i + 16);\n }\n\n return plaintext;\n }\n\n\n /**\n * Mode Of Operation - Cipher Feedback (CFB)\n */\n var ModeOfOperationCFB = function(key, iv, segmentSize) {\n if (!(this instanceof ModeOfOperationCFB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Cipher Feedback\";\n this.name = \"cfb\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 size)');\n }\n\n if (!segmentSize) { segmentSize = 1; }\n\n this.segmentSize = segmentSize;\n\n this._shiftRegister = coerceArray(iv, true);\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCFB.prototype.encrypt = function(plaintext) {\n if ((plaintext.length % this.segmentSize) != 0) {\n throw new Error('invalid plaintext size (must be segmentSize bytes)');\n }\n\n var encrypted = coerceArray(plaintext, true);\n\n var xorSegment;\n for (var i = 0; i < encrypted.length; i += this.segmentSize) {\n xorSegment = this._aes.encrypt(this._shiftRegister);\n for (var j = 0; j < this.segmentSize; j++) {\n encrypted[i + j] ^= xorSegment[j];\n }\n\n // Shift the register\n copyArray(this._shiftRegister, this._shiftRegister, 0, this.segmentSize);\n copyArray(encrypted, this._shiftRegister, 16 - this.segmentSize, i, i + this.segmentSize);\n }\n\n return encrypted;\n }\n\n ModeOfOperationCFB.prototype.decrypt = function(ciphertext) {\n if ((ciphertext.length % this.segmentSize) != 0) {\n throw new Error('invalid ciphertext size (must be segmentSize bytes)');\n }\n\n var plaintext = coerceArray(ciphertext, true);\n\n var xorSegment;\n for (var i = 0; i < plaintext.length; i += this.segmentSize) {\n xorSegment = this._aes.encrypt(this._shiftRegister);\n\n for (var j = 0; j < this.segmentSize; j++) {\n plaintext[i + j] ^= xorSegment[j];\n }\n\n // Shift the register\n copyArray(this._shiftRegister, this._shiftRegister, 0, this.segmentSize);\n copyArray(ciphertext, this._shiftRegister, 16 - this.segmentSize, i, i + this.segmentSize);\n }\n\n return plaintext;\n }\n\n /**\n * Mode Of Operation - Output Feedback (OFB)\n */\n var ModeOfOperationOFB = function(key, iv) {\n if (!(this instanceof ModeOfOperationOFB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Output Feedback\";\n this.name = \"ofb\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 bytes)');\n }\n\n this._lastPrecipher = coerceArray(iv, true);\n this._lastPrecipherIndex = 16;\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationOFB.prototype.encrypt = function(plaintext) {\n var encrypted = coerceArray(plaintext, true);\n\n for (var i = 0; i < encrypted.length; i++) {\n if (this._lastPrecipherIndex === 16) {\n this._lastPrecipher = this._aes.encrypt(this._lastPrecipher);\n this._lastPrecipherIndex = 0;\n }\n encrypted[i] ^= this._lastPrecipher[this._lastPrecipherIndex++];\n }\n\n return encrypted;\n }\n\n // Decryption is symetric\n ModeOfOperationOFB.prototype.decrypt = ModeOfOperationOFB.prototype.encrypt;\n\n\n /**\n * Counter object for CTR common mode of operation\n */\n var Counter = function(initialValue) {\n if (!(this instanceof Counter)) {\n throw Error('Counter must be instanitated with `new`');\n }\n\n // We allow 0, but anything false-ish uses the default 1\n if (initialValue !== 0 && !initialValue) { initialValue = 1; }\n\n if (typeof(initialValue) === 'number') {\n this._counter = createArray(16);\n this.setValue(initialValue);\n\n } else {\n this.setBytes(initialValue);\n }\n }\n\n Counter.prototype.setValue = function(value) {\n if (typeof(value) !== 'number' || parseInt(value) != value) {\n throw new Error('invalid counter value (must be an integer)');\n }\n\n for (var index = 15; index >= 0; --index) {\n this._counter[index] = value % 256;\n value = value >> 8;\n }\n }\n\n Counter.prototype.setBytes = function(bytes) {\n bytes = coerceArray(bytes, true);\n\n if (bytes.length != 16) {\n throw new Error('invalid counter bytes size (must be 16 bytes)');\n }\n\n this._counter = bytes;\n };\n\n Counter.prototype.increment = function() {\n for (var i = 15; i >= 0; i--) {\n if (this._counter[i] === 255) {\n this._counter[i] = 0;\n } else {\n this._counter[i]++;\n break;\n }\n }\n }\n\n\n /**\n * Mode Of Operation - Counter (CTR)\n */\n var ModeOfOperationCTR = function(key, counter) {\n if (!(this instanceof ModeOfOperationCTR)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Counter\";\n this.name = \"ctr\";\n\n if (!(counter instanceof Counter)) {\n counter = new Counter(counter)\n }\n\n this._counter = counter;\n\n this._remainingCounter = null;\n this._remainingCounterIndex = 16;\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCTR.prototype.encrypt = function(plaintext) {\n var encrypted = coerceArray(plaintext, true);\n\n for (var i = 0; i < encrypted.length; i++) {\n if (this._remainingCounterIndex === 16) {\n this._remainingCounter = this._aes.encrypt(this._counter._counter);\n this._remainingCounterIndex = 0;\n this._counter.increment();\n }\n encrypted[i] ^= this._remainingCounter[this._remainingCounterIndex++];\n }\n\n return encrypted;\n }\n\n // Decryption is symetric\n ModeOfOperationCTR.prototype.decrypt = ModeOfOperationCTR.prototype.encrypt;\n\n\n ///////////////////////\n // Padding\n\n // See:https://tools.ietf.org/html/rfc2315\n function pkcs7pad(data) {\n data = coerceArray(data, true);\n var padder = 16 - (data.length % 16);\n var result = createArray(data.length + padder);\n copyArray(data, result);\n for (var i = data.length; i < result.length; i++) {\n result[i] = padder;\n }\n return result;\n }\n\n function pkcs7strip(data) {\n data = coerceArray(data, true);\n if (data.length < 16) { throw new Error('PKCS#7 invalid length'); }\n\n var padder = data[data.length - 1];\n if (padder > 16) { throw new Error('PKCS#7 padding byte out of range'); }\n\n var length = data.length - padder;\n for (var i = 0; i < padder; i++) {\n if (data[length + i] !== padder) {\n throw new Error('PKCS#7 invalid padding byte');\n }\n }\n\n var result = createArray(length);\n copyArray(data, result, 0, 0, length);\n return result;\n }\n\n ///////////////////////\n // Exporting\n\n\n // The block cipher\n var aesjs = {\n AES: AES,\n Counter: Counter,\n\n ModeOfOperation: {\n ecb: ModeOfOperationECB,\n cbc: ModeOfOperationCBC,\n cfb: ModeOfOperationCFB,\n ofb: ModeOfOperationOFB,\n ctr: ModeOfOperationCTR\n },\n\n utils: {\n hex: convertHex,\n utf8: convertUtf8\n },\n\n padding: {\n pkcs7: {\n pad: pkcs7pad,\n strip: pkcs7strip\n }\n },\n\n _arrayTest: {\n coerceArray: coerceArray,\n createArray: createArray,\n copyArray: copyArray,\n }\n };\n\n\n // node.js\n if (typeof exports !== 'undefined') {\n module.exports = aesjs\n\n // RequireJS/AMD\n // http://www.requirejs.org/docs/api.html\n // https://github.com/amdjs/amdjs-api/wiki/AMD\n } else if (typeof(define) === 'function' && define.amd) {\n define(aesjs);\n\n // Web Browsers\n } else {\n\n // If there was an existing library at \"aesjs\" make sure it's still available\n if (root.aesjs) {\n aesjs._aesjs = root.aesjs;\n }\n\n root.aesjs = aesjs;\n }\n\n\n})(this);\n\n},{}],8:[function(require,module,exports){\n(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n Buffer = require('buffer').Buffer;\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex (str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r <<= 4;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n }\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n r.strip();\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n\n},{\"buffer\":10}],9:[function(require,module,exports){\n(function (global){\nmodule.exports = function(length) { var result = new Uint8Array(length); (global.crypto || global.msCrypto).getRandomValues(result); return result; }\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}],10:[function(require,module,exports){\n\n},{}],11:[function(require,module,exports){\n'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.hmacDRBG = require('./elliptic/hmac-drbg');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n\n},{\"../package.json\":25,\"./elliptic/curve\":14,\"./elliptic/curves\":17,\"./elliptic/ec\":18,\"./elliptic/eddsa\":21,\"./elliptic/hmac-drbg\":22,\"./elliptic/utils\":24,\"brorand\":9}],12:[function(require,module,exports){\n'use strict';\n\nvar BN = require('bn.js');\nvar elliptic = require('../../elliptic');\nvar utils = elliptic.utils;\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n for (var j = 0; j < naf.length; j += doubles.step) {\n var nafW = 0;\n for (var k = j + doubles.step - 1; k >= j; k--)\n nafW = (nafW << 1) + naf[k];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (var j = 0; j < repr.length; j++) {\n var nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var k = 0; i >= 0 && naf[i] === 0; i--)\n k++;\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n for (var i = 0; i < len; i++) {\n var p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (var i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a]);\n naf[b] = getNAF(coeffs[b], wndWidth[b]);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b] /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3 /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (var j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (var i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (var j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (var j = 0; j < len; j++) {\n var z = tmp[j];\n var p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (var i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len)) ;\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n\n},{\"../../elliptic\":11,\"bn.js\":8}],13:[function(require,module,exports){\nmodule.exports = {};\n},{}],14:[function(require,module,exports){\n'use strict';\n\nvar curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n\n},{\"./base\":12,\"./edwards\":13,\"./mont\":15,\"./short\":16}],15:[function(require,module,exports){\narguments[4][13][0].apply(exports,arguments)\n},{\"dup\":13}],16:[function(require,module,exports){\n'use strict';\n\nvar curve = require('../curve');\nvar elliptic = require('../../elliptic');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = curve.base;\n\nvar assert = elliptic.utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16)\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 }\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n};\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul)\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul)\n }\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1)\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1)\n }\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point))\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point))\n }\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n\n if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate)\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate)\n }\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (var i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (var i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n return false;\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\n},{\"../../elliptic\":11,\"../curve\":14,\"bn.js\":8,\"inherits\":38}],17:[function(require,module,exports){\n'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar elliptic = require('../elliptic');\n\nvar assert = elliptic.utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new elliptic.curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new elliptic.curve.edwards(options);\n else\n this.curve = new elliptic.curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve\n });\n return curve;\n }\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811'\n ]\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34'\n ]\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5'\n ]\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f'\n ]\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650'\n ]\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9'\n ]\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658'\n ]\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3'\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15'\n }\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre\n ]\n});\n\n},{\"../elliptic\":11,\"./precomputed/secp256k1\":23,\"hash.js\":26}],18:[function(require,module,exports){\n'use strict';\n\nvar BN = require('bn.js');\nvar elliptic = require('../../elliptic');\nvar utils = elliptic.utils;\nvar assert = utils.assert;\n\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert(elliptic.curves.hasOwnProperty(options), 'Unknown curve ' + options);\n\n options = elliptic.curves[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof elliptic.curves.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nmodule.exports = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new KeyPair(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return KeyPair.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return KeyPair.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new elliptic.hmacDRBG({\n hash: this.hash,\n pers: options.pers,\n entropy: options.entropy || elliptic.rand(this.hash.hmacStrength),\n nonce: this.n.toArray()\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n do {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n } while (true);\n};\n\nEC.prototype._truncateToN = function truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new elliptic.hmacDRBG({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; true; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new Signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature = new Signature(signature, 'hex');\n\n // Perform primitive values validation\n var r = signature.r;\n var s = signature.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n\n if (!this.curve._maxwellTrick) {\n var p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n var p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null)\n return signature.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n\n},{\"../../elliptic\":11,\"./key\":19,\"./signature\":20,\"bn.js\":8}],19:[function(require,module,exports){\n'use strict';\n\nvar BN = require('bn.js');\nvar elliptic = require('../../elliptic');\nvar utils = elliptic.utils;\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n\n},{\"../../elliptic\":11,\"bn.js\":8}],20:[function(require,module,exports){\n'use strict';\n\nvar BN = require('bn.js');\n\nvar elliptic = require('../../elliptic');\nvar utils = elliptic.utils;\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n }\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0 && (r[1] & 0x80)) {\n r = r.slice(1);\n }\n if (s[0] === 0 && (s[1] & 0x80)) {\n s = s.slice(1);\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\n\n},{\"../../elliptic\":11,\"bn.js\":8}],21:[function(require,module,exports){\narguments[4][13][0].apply(exports,arguments)\n},{\"dup\":13}],22:[function(require,module,exports){\n'use strict';\n\nvar hash = require('hash.js');\nvar elliptic = require('../elliptic');\nvar utils = elliptic.utils;\nvar assert = utils.assert;\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this.reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc);\n var nonce = utils.toArray(options.nonce, options.nonceEnc);\n var pers = utils.toArray(options.pers, options.persEnc);\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this.reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toBuffer(entropy, entropyEnc);\n add = utils.toBuffer(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this.reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this.reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc);\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this.reseed++;\n return utils.encode(res, enc);\n};\n\n},{\"../elliptic\":11,\"hash.js\":26}],23:[function(require,module,exports){\nmodule.exports = undefined;\n},{}],24:[function(require,module,exports){\n'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\n\nutils.assert = function assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n};\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (!enc) {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w) {\n var naf = [];\n var ws = 1 << (w + 1);\n var k = num.clone();\n while (k.cmpn(1) >= 0) {\n var z;\n if (k.isOdd()) {\n var mod = k.andln(ws - 1);\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n naf.push(z);\n\n // Optimization, shift by word if possible\n var shift = (k.cmpn(0) !== 0 && k.andln(ws - 1) === 0) ? (w + 1) : 1;\n for (var i = 1; i < shift; i++)\n naf.push(0);\n k.iushrn(shift);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n []\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n var m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n var m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n\n},{\"bn.js\":8}],25:[function(require,module,exports){\nmodule.exports={\"version\":\"6.3.3\"}\n},{}],26:[function(require,module,exports){\nvar hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n\n},{\"./hash/common\":27,\"./hash/hmac\":28,\"./hash/ripemd\":29,\"./hash/sha\":30,\"./hash/utils\":37}],27:[function(require,module,exports){\n'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n\n},{\"./utils\":37,\"minimalistic-assert\":40}],28:[function(require,module,exports){\n'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n\n},{\"./utils\":37,\"minimalistic-assert\":40}],29:[function(require,module,exports){\nmodule.exports = {ripemd160: null}\n},{}],30:[function(require,module,exports){\n'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n\n},{\"./sha/1\":31,\"./sha/224\":32,\"./sha/256\":33,\"./sha/384\":34,\"./sha/512\":35}],31:[function(require,module,exports){\narguments[4][13][0].apply(exports,arguments)\n},{\"dup\":13}],32:[function(require,module,exports){\narguments[4][13][0].apply(exports,arguments)\n},{\"dup\":13}],33:[function(require,module,exports){\n'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\n},{\"../common\":27,\"../utils\":37,\"./common\":36,\"minimalistic-assert\":40}],34:[function(require,module,exports){\narguments[4][13][0].apply(exports,arguments)\n},{\"dup\":13}],35:[function(require,module,exports){\n'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\n},{\"../common\":27,\"../utils\":37,\"minimalistic-assert\":40}],36:[function(require,module,exports){\n'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n\n},{\"../utils\":37}],37:[function(require,module,exports){\n'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n\n},{\"inherits\":38,\"minimalistic-assert\":40}],38:[function(require,module,exports){\nif (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n\n},{}],39:[function(require,module,exports){\n(function (process,global){\n/**\r\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\r\n *\r\n * @version 0.5.7\r\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\r\n * @copyright Chen, Yi-Cyuan 2015-2016\r\n * @license MIT\r\n */\r\n/*jslint bitwise: true */\r\n(function () {\r\n 'use strict';\r\n\r\n var root = typeof window === 'object' ? window : {};\r\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\r\n if (NODE_JS) {\r\n root = global;\r\n }\r\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\r\n var HEX_CHARS = '0123456789abcdef'.split('');\r\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\r\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\r\n var PADDING = [6, 1536, 393216, 100663296];\r\n var SHIFT = [0, 8, 16, 24];\r\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\r\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\r\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\r\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\r\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\r\n var BITS = [224, 256, 384, 512];\r\n var SHAKE_BITS = [128, 256];\r\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array'];\r\n\r\n var createOutputMethod = function (bits, padding, outputType) {\r\n return function (message) {\r\n return new Keccak(bits, padding, bits).update(message)[outputType]();\r\n };\r\n };\r\n\r\n var createShakeOutputMethod = function (bits, padding, outputType) {\r\n return function (message, outputBits) {\r\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\r\n };\r\n };\r\n\r\n var createMethod = function (bits, padding) {\r\n var method = createOutputMethod(bits, padding, 'hex');\r\n method.create = function () {\r\n return new Keccak(bits, padding, bits);\r\n };\r\n method.update = function (message) {\r\n return method.create().update(message);\r\n };\r\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\r\n var type = OUTPUT_TYPES[i];\r\n method[type] = createOutputMethod(bits, padding, type);\r\n }\r\n return method;\r\n };\r\n\r\n var createShakeMethod = function (bits, padding) {\r\n var method = createShakeOutputMethod(bits, padding, 'hex');\r\n method.create = function (outputBits) {\r\n return new Keccak(bits, padding, outputBits);\r\n };\r\n method.update = function (message, outputBits) {\r\n return method.create(outputBits).update(message);\r\n };\r\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\r\n var type = OUTPUT_TYPES[i];\r\n method[type] = createShakeOutputMethod(bits, padding, type);\r\n }\r\n return method;\r\n };\r\n\r\n var algorithms = [\r\n {name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod},\r\n {name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod},\r\n {name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod}\r\n ];\r\n\r\n var methods = {}, methodNames = [];\r\n\r\n for (var i = 0; i < algorithms.length; ++i) {\r\n var algorithm = algorithms[i];\r\n var bits = algorithm.bits;\r\n for (var j = 0; j < bits.length; ++j) {\r\n var methodName = algorithm.name +'_' + bits[j];\r\n methodNames.push(methodName);\r\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\r\n }\r\n }\r\n\r\n function Keccak(bits, padding, outputBits) {\r\n this.blocks = [];\r\n this.s = [];\r\n this.padding = padding;\r\n this.outputBits = outputBits;\r\n this.reset = true;\r\n this.block = 0;\r\n this.start = 0;\r\n this.blockCount = (1600 - (bits << 1)) >> 5;\r\n this.byteCount = this.blockCount << 2;\r\n this.outputBlocks = outputBits >> 5;\r\n this.extraBytes = (outputBits & 31) >> 3;\r\n\r\n for (var i = 0; i < 50; ++i) {\r\n this.s[i] = 0;\r\n }\r\n }\r\n\r\n Keccak.prototype.update = function (message) {\r\n var notString = typeof message !== 'string';\r\n if (notString && message.constructor === ArrayBuffer) {\r\n message = new Uint8Array(message);\r\n }\r\n var length = message.length, blocks = this.blocks, byteCount = this.byteCount,\r\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\r\n\r\n while (index < length) {\r\n if (this.reset) {\r\n this.reset = false;\r\n blocks[0] = this.block;\r\n for (i = 1; i < blockCount + 1; ++i) {\r\n blocks[i] = 0;\r\n }\r\n }\r\n if (notString) {\r\n for (i = this.start; index < length && i < byteCount; ++index) {\r\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\r\n }\r\n } else {\r\n for (i = this.start; index < length && i < byteCount; ++index) {\r\n code = message.charCodeAt(index);\r\n if (code < 0x80) {\r\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\r\n } else if (code < 0x800) {\r\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\r\n } else if (code < 0xd800 || code >= 0xe000) {\r\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\r\n } else {\r\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\r\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\r\n }\r\n }\r\n }\r\n this.lastByteIndex = i;\r\n if (i >= byteCount) {\r\n this.start = i - byteCount;\r\n this.block = blocks[blockCount];\r\n for (i = 0; i < blockCount; ++i) {\r\n s[i] ^= blocks[i];\r\n }\r\n f(s);\r\n this.reset = true;\r\n } else {\r\n this.start = i;\r\n }\r\n }\r\n return this;\r\n };\r\n\r\n Keccak.prototype.finalize = function () {\r\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\r\n blocks[i >> 2] |= this.padding[i & 3];\r\n if (this.lastByteIndex === this.byteCount) {\r\n blocks[0] = blocks[blockCount];\r\n for (i = 1; i < blockCount + 1; ++i) {\r\n blocks[i] = 0;\r\n }\r\n }\r\n blocks[blockCount - 1] |= 0x80000000;\r\n for (i = 0; i < blockCount; ++i) {\r\n s[i] ^= blocks[i];\r\n }\r\n f(s);\r\n };\r\n\r\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\r\n this.finalize();\r\n\r\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\r\n extraBytes = this.extraBytes, i = 0, j = 0;\r\n var hex = '', block;\r\n while (j < outputBlocks) {\r\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\r\n block = s[i];\r\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\r\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\r\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\r\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\r\n }\r\n if (j % blockCount === 0) {\r\n f(s);\r\n i = 0;\r\n }\r\n }\r\n if (extraBytes) {\r\n block = s[i];\r\n if (extraBytes > 0) {\r\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\r\n }\r\n if (extraBytes > 1) {\r\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\r\n }\r\n if (extraBytes > 2) {\r\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\r\n }\r\n }\r\n return hex;\r\n };\r\n\r\n Keccak.prototype.arrayBuffer = function () {\r\n this.finalize();\r\n\r\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\r\n extraBytes = this.extraBytes, i = 0, j = 0;\r\n var bytes = this.outputBits >> 3;\r\n var buffer;\r\n if (extraBytes) {\r\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\r\n } else {\r\n buffer = new ArrayBuffer(bytes);\r\n }\r\n var array = new Uint32Array(buffer);\r\n while (j < outputBlocks) {\r\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\r\n array[j] = s[i];\r\n }\r\n if (j % blockCount === 0) {\r\n f(s);\r\n }\r\n }\r\n if (extraBytes) {\r\n array[i] = s[i];\r\n buffer = buffer.slice(0, bytes);\r\n }\r\n return buffer;\r\n };\r\n\r\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\r\n\r\n Keccak.prototype.digest = Keccak.prototype.array = function () {\r\n this.finalize();\r\n\r\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\r\n extraBytes = this.extraBytes, i = 0, j = 0;\r\n var array = [], offset, block;\r\n while (j < outputBlocks) {\r\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\r\n offset = j << 2;\r\n block = s[i];\r\n array[offset] = block & 0xFF;\r\n array[offset + 1] = (block >> 8) & 0xFF;\r\n array[offset + 2] = (block >> 16) & 0xFF;\r\n array[offset + 3] = (block >> 24) & 0xFF;\r\n }\r\n if (j % blockCount === 0) {\r\n f(s);\r\n }\r\n }\r\n if (extraBytes) {\r\n offset = j << 2;\r\n block = s[i];\r\n if (extraBytes > 0) {\r\n array[offset] = block & 0xFF;\r\n }\r\n if (extraBytes > 1) {\r\n array[offset + 1] = (block >> 8) & 0xFF;\r\n }\r\n if (extraBytes > 2) {\r\n array[offset + 2] = (block >> 16) & 0xFF;\r\n }\r\n }\r\n return array;\r\n };\r\n\r\n var f = function (s) {\r\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\r\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\r\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\r\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\r\n for (n = 0; n < 48; n += 2) {\r\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\r\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\r\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\r\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\r\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\r\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\r\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\r\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\r\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\r\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\r\n\r\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\r\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\r\n s[0] ^= h;\r\n s[1] ^= l;\r\n s[10] ^= h;\r\n s[11] ^= l;\r\n s[20] ^= h;\r\n s[21] ^= l;\r\n s[30] ^= h;\r\n s[31] ^= l;\r\n s[40] ^= h;\r\n s[41] ^= l;\r\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\r\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\r\n s[2] ^= h;\r\n s[3] ^= l;\r\n s[12] ^= h;\r\n s[13] ^= l;\r\n s[22] ^= h;\r\n s[23] ^= l;\r\n s[32] ^= h;\r\n s[33] ^= l;\r\n s[42] ^= h;\r\n s[43] ^= l;\r\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\r\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\r\n s[4] ^= h;\r\n s[5] ^= l;\r\n s[14] ^= h;\r\n s[15] ^= l;\r\n s[24] ^= h;\r\n s[25] ^= l;\r\n s[34] ^= h;\r\n s[35] ^= l;\r\n s[44] ^= h;\r\n s[45] ^= l;\r\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\r\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\r\n s[6] ^= h;\r\n s[7] ^= l;\r\n s[16] ^= h;\r\n s[17] ^= l;\r\n s[26] ^= h;\r\n s[27] ^= l;\r\n s[36] ^= h;\r\n s[37] ^= l;\r\n s[46] ^= h;\r\n s[47] ^= l;\r\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\r\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\r\n s[8] ^= h;\r\n s[9] ^= l;\r\n s[18] ^= h;\r\n s[19] ^= l;\r\n s[28] ^= h;\r\n s[29] ^= l;\r\n s[38] ^= h;\r\n s[39] ^= l;\r\n s[48] ^= h;\r\n s[49] ^= l;\r\n\r\n b0 = s[0];\r\n b1 = s[1];\r\n b32 = (s[11] << 4) | (s[10] >>> 28);\r\n b33 = (s[10] << 4) | (s[11] >>> 28);\r\n b14 = (s[20] << 3) | (s[21] >>> 29);\r\n b15 = (s[21] << 3) | (s[20] >>> 29);\r\n b46 = (s[31] << 9) | (s[30] >>> 23);\r\n b47 = (s[30] << 9) | (s[31] >>> 23);\r\n b28 = (s[40] << 18) | (s[41] >>> 14);\r\n b29 = (s[41] << 18) | (s[40] >>> 14);\r\n b20 = (s[2] << 1) | (s[3] >>> 31);\r\n b21 = (s[3] << 1) | (s[2] >>> 31);\r\n b2 = (s[13] << 12) | (s[12] >>> 20);\r\n b3 = (s[12] << 12) | (s[13] >>> 20);\r\n b34 = (s[22] << 10) | (s[23] >>> 22);\r\n b35 = (s[23] << 10) | (s[22] >>> 22);\r\n b16 = (s[33] << 13) | (s[32] >>> 19);\r\n b17 = (s[32] << 13) | (s[33] >>> 19);\r\n b48 = (s[42] << 2) | (s[43] >>> 30);\r\n b49 = (s[43] << 2) | (s[42] >>> 30);\r\n b40 = (s[5] << 30) | (s[4] >>> 2);\r\n b41 = (s[4] << 30) | (s[5] >>> 2);\r\n b22 = (s[14] << 6) | (s[15] >>> 26);\r\n b23 = (s[15] << 6) | (s[14] >>> 26);\r\n b4 = (s[25] << 11) | (s[24] >>> 21);\r\n b5 = (s[24] << 11) | (s[25] >>> 21);\r\n b36 = (s[34] << 15) | (s[35] >>> 17);\r\n b37 = (s[35] << 15) | (s[34] >>> 17);\r\n b18 = (s[45] << 29) | (s[44] >>> 3);\r\n b19 = (s[44] << 29) | (s[45] >>> 3);\r\n b10 = (s[6] << 28) | (s[7] >>> 4);\r\n b11 = (s[7] << 28) | (s[6] >>> 4);\r\n b42 = (s[17] << 23) | (s[16] >>> 9);\r\n b43 = (s[16] << 23) | (s[17] >>> 9);\r\n b24 = (s[26] << 25) | (s[27] >>> 7);\r\n b25 = (s[27] << 25) | (s[26] >>> 7);\r\n b6 = (s[36] << 21) | (s[37] >>> 11);\r\n b7 = (s[37] << 21) | (s[36] >>> 11);\r\n b38 = (s[47] << 24) | (s[46] >>> 8);\r\n b39 = (s[46] << 24) | (s[47] >>> 8);\r\n b30 = (s[8] << 27) | (s[9] >>> 5);\r\n b31 = (s[9] << 27) | (s[8] >>> 5);\r\n b12 = (s[18] << 20) | (s[19] >>> 12);\r\n b13 = (s[19] << 20) | (s[18] >>> 12);\r\n b44 = (s[29] << 7) | (s[28] >>> 25);\r\n b45 = (s[28] << 7) | (s[29] >>> 25);\r\n b26 = (s[38] << 8) | (s[39] >>> 24);\r\n b27 = (s[39] << 8) | (s[38] >>> 24);\r\n b8 = (s[48] << 14) | (s[49] >>> 18);\r\n b9 = (s[49] << 14) | (s[48] >>> 18);\r\n\r\n s[0] = b0 ^ (~b2 & b4);\r\n s[1] = b1 ^ (~b3 & b5);\r\n s[10] = b10 ^ (~b12 & b14);\r\n s[11] = b11 ^ (~b13 & b15);\r\n s[20] = b20 ^ (~b22 & b24);\r\n s[21] = b21 ^ (~b23 & b25);\r\n s[30] = b30 ^ (~b32 & b34);\r\n s[31] = b31 ^ (~b33 & b35);\r\n s[40] = b40 ^ (~b42 & b44);\r\n s[41] = b41 ^ (~b43 & b45);\r\n s[2] = b2 ^ (~b4 & b6);\r\n s[3] = b3 ^ (~b5 & b7);\r\n s[12] = b12 ^ (~b14 & b16);\r\n s[13] = b13 ^ (~b15 & b17);\r\n s[22] = b22 ^ (~b24 & b26);\r\n s[23] = b23 ^ (~b25 & b27);\r\n s[32] = b32 ^ (~b34 & b36);\r\n s[33] = b33 ^ (~b35 & b37);\r\n s[42] = b42 ^ (~b44 & b46);\r\n s[43] = b43 ^ (~b45 & b47);\r\n s[4] = b4 ^ (~b6 & b8);\r\n s[5] = b5 ^ (~b7 & b9);\r\n s[14] = b14 ^ (~b16 & b18);\r\n s[15] = b15 ^ (~b17 & b19);\r\n s[24] = b24 ^ (~b26 & b28);\r\n s[25] = b25 ^ (~b27 & b29);\r\n s[34] = b34 ^ (~b36 & b38);\r\n s[35] = b35 ^ (~b37 & b39);\r\n s[44] = b44 ^ (~b46 & b48);\r\n s[45] = b45 ^ (~b47 & b49);\r\n s[6] = b6 ^ (~b8 & b0);\r\n s[7] = b7 ^ (~b9 & b1);\r\n s[16] = b16 ^ (~b18 & b10);\r\n s[17] = b17 ^ (~b19 & b11);\r\n s[26] = b26 ^ (~b28 & b20);\r\n s[27] = b27 ^ (~b29 & b21);\r\n s[36] = b36 ^ (~b38 & b30);\r\n s[37] = b37 ^ (~b39 & b31);\r\n s[46] = b46 ^ (~b48 & b40);\r\n s[47] = b47 ^ (~b49 & b41);\r\n s[8] = b8 ^ (~b0 & b2);\r\n s[9] = b9 ^ (~b1 & b3);\r\n s[18] = b18 ^ (~b10 & b12);\r\n s[19] = b19 ^ (~b11 & b13);\r\n s[28] = b28 ^ (~b20 & b22);\r\n s[29] = b29 ^ (~b21 & b23);\r\n s[38] = b38 ^ (~b30 & b32);\r\n s[39] = b39 ^ (~b31 & b33);\r\n s[48] = b48 ^ (~b40 & b42);\r\n s[49] = b49 ^ (~b41 & b43);\r\n\r\n s[0] ^= RC[n];\r\n s[1] ^= RC[n + 1];\r\n }\r\n };\r\n\r\n if (COMMON_JS) {\r\n module.exports = methods;\r\n } else {\r\n for (var i = 0; i < methodNames.length; ++i) {\r\n root[methodNames[i]] = methods[methodNames[i]];\r\n }\r\n }\r\n})();\r\n\n}).call(this,require('_process'),typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"_process\":41}],40:[function(require,module,exports){\nmodule.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n\n},{}],41:[function(require,module,exports){\nmodule.exports = { browser: true };\n},{}],42:[function(require,module,exports){\n(function (setImmediate){\n\"use strict\";\n\n(function(root) {\n var MAX_VALUE = 0x7fffffff;\n\n // The SHA256 and PBKDF2 implementation are from scrypt-async-js:\n // See: https://github.com/dchest/scrypt-async-js\n function SHA256(m) {\n var K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b,\n 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01,\n 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7,\n 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152,\n 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,\n 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc,\n 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819,\n 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08,\n 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f,\n 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n ];\n\n var h0 = 0x6a09e667, h1 = 0xbb67ae85, h2 = 0x3c6ef372, h3 = 0xa54ff53a;\n var h4 = 0x510e527f, h5 = 0x9b05688c, h6 = 0x1f83d9ab, h7 = 0x5be0cd19;\n var w = new Array(64);\n\n function blocks(p) {\n var off = 0, len = p.length;\n while (len >= 64) {\n var a = h0, b = h1, c = h2, d = h3, e = h4, f = h5, g = h6, h = h7, u, i, j, t1, t2;\n\n for (i = 0; i < 16; i++) {\n j = off + i*4;\n w[i] = ((p[j] & 0xff)<<24) | ((p[j+1] & 0xff)<<16) |\n ((p[j+2] & 0xff)<<8) | (p[j+3] & 0xff);\n }\n\n for (i = 16; i < 64; i++) {\n u = w[i-2];\n t1 = ((u>>>17) | (u<<(32-17))) ^ ((u>>>19) | (u<<(32-19))) ^ (u>>>10);\n\n u = w[i-15];\n t2 = ((u>>>7) | (u<<(32-7))) ^ ((u>>>18) | (u<<(32-18))) ^ (u>>>3);\n\n w[i] = (((t1 + w[i-7]) | 0) + ((t2 + w[i-16]) | 0)) | 0;\n }\n\n for (i = 0; i < 64; i++) {\n t1 = ((((((e>>>6) | (e<<(32-6))) ^ ((e>>>11) | (e<<(32-11))) ^\n ((e>>>25) | (e<<(32-25)))) + ((e & f) ^ (~e & g))) | 0) +\n ((h + ((K[i] + w[i]) | 0)) | 0)) | 0;\n\n t2 = ((((a>>>2) | (a<<(32-2))) ^ ((a>>>13) | (a<<(32-13))) ^\n ((a>>>22) | (a<<(32-22)))) + ((a & b) ^ (a & c) ^ (b & c))) | 0;\n\n h = g;\n g = f;\n f = e;\n e = (d + t1) | 0;\n d = c;\n c = b;\n b = a;\n a = (t1 + t2) | 0;\n }\n\n h0 = (h0 + a) | 0;\n h1 = (h1 + b) | 0;\n h2 = (h2 + c) | 0;\n h3 = (h3 + d) | 0;\n h4 = (h4 + e) | 0;\n h5 = (h5 + f) | 0;\n h6 = (h6 + g) | 0;\n h7 = (h7 + h) | 0;\n\n off += 64;\n len -= 64;\n }\n }\n\n blocks(m);\n\n var i, bytesLeft = m.length % 64,\n bitLenHi = (m.length / 0x20000000) | 0,\n bitLenLo = m.length << 3,\n numZeros = (bytesLeft < 56) ? 56 : 120,\n p = m.slice(m.length - bytesLeft, m.length);\n\n p.push(0x80);\n for (i = bytesLeft + 1; i < numZeros; i++) { p.push(0); }\n p.push((bitLenHi>>>24) & 0xff);\n p.push((bitLenHi>>>16) & 0xff);\n p.push((bitLenHi>>>8) & 0xff);\n p.push((bitLenHi>>>0) & 0xff);\n p.push((bitLenLo>>>24) & 0xff);\n p.push((bitLenLo>>>16) & 0xff);\n p.push((bitLenLo>>>8) & 0xff);\n p.push((bitLenLo>>>0) & 0xff);\n\n blocks(p);\n\n return [\n (h0>>>24) & 0xff, (h0>>>16) & 0xff, (h0>>>8) & 0xff, (h0>>>0) & 0xff,\n (h1>>>24) & 0xff, (h1>>>16) & 0xff, (h1>>>8) & 0xff, (h1>>>0) & 0xff,\n (h2>>>24) & 0xff, (h2>>>16) & 0xff, (h2>>>8) & 0xff, (h2>>>0) & 0xff,\n (h3>>>24) & 0xff, (h3>>>16) & 0xff, (h3>>>8) & 0xff, (h3>>>0) & 0xff,\n (h4>>>24) & 0xff, (h4>>>16) & 0xff, (h4>>>8) & 0xff, (h4>>>0) & 0xff,\n (h5>>>24) & 0xff, (h5>>>16) & 0xff, (h5>>>8) & 0xff, (h5>>>0) & 0xff,\n (h6>>>24) & 0xff, (h6>>>16) & 0xff, (h6>>>8) & 0xff, (h6>>>0) & 0xff,\n (h7>>>24) & 0xff, (h7>>>16) & 0xff, (h7>>>8) & 0xff, (h7>>>0) & 0xff\n ];\n }\n\n function PBKDF2_HMAC_SHA256_OneIter(password, salt, dkLen) {\n // compress password if it's longer than hash block length\n password = password.length <= 64 ? password : SHA256(password);\n\n var i;\n var innerLen = 64 + salt.length + 4;\n var inner = new Array(innerLen);\n var outerKey = new Array(64);\n var dk = [];\n\n // inner = (password ^ ipad) || salt || counter\n for (i = 0; i < 64; i++) inner[i] = 0x36;\n for (i = 0; i < password.length; i++) inner[i] ^= password[i];\n for (i = 0; i < salt.length; i++) inner[64+i] = salt[i];\n for (i = innerLen - 4; i < innerLen; i++) inner[i] = 0;\n\n // outerKey = password ^ opad\n for (i = 0; i < 64; i++) outerKey[i] = 0x5c;\n for (i = 0; i < password.length; i++) outerKey[i] ^= password[i];\n\n // increments counter inside inner\n function incrementCounter() {\n for (var i = innerLen-1; i >= innerLen-4; i--) {\n inner[i]++;\n if (inner[i] <= 0xff) return;\n inner[i] = 0;\n }\n }\n\n // output blocks = SHA256(outerKey || SHA256(inner)) ...\n while (dkLen >= 32) {\n incrementCounter();\n dk = dk.concat(SHA256(outerKey.concat(SHA256(inner))));\n dkLen -= 32;\n }\n if (dkLen > 0) {\n incrementCounter();\n dk = dk.concat(SHA256(outerKey.concat(SHA256(inner))).slice(0, dkLen));\n }\n\n return dk;\n }\n\n // The following is an adaptation of scryptsy\n // See: https://www.npmjs.com/package/scryptsy\n function blockmix_salsa8(BY, Yi, r, x, _X) {\n var i;\n\n arraycopy(BY, (2 * r - 1) * 16, _X, 0, 16);\n for (i = 0; i < 2 * r; i++) {\n blockxor(BY, i * 16, _X, 16);\n salsa20_8(_X, x);\n arraycopy(_X, 0, BY, Yi + (i * 16), 16);\n }\n\n for (i = 0; i < r; i++) {\n arraycopy(BY, Yi + (i * 2) * 16, BY, (i * 16), 16);\n }\n\n for (i = 0; i < r; i++) {\n arraycopy(BY, Yi + (i * 2 + 1) * 16, BY, (i + r) * 16, 16);\n }\n }\n\n function R(a, b) {\n return (a << b) | (a >>> (32 - b));\n }\n\n function salsa20_8(B, x) {\n arraycopy(B, 0, x, 0, 16);\n\n for (var i = 8; i > 0; i -= 2) {\n x[ 4] ^= R(x[ 0] + x[12], 7);\n x[ 8] ^= R(x[ 4] + x[ 0], 9);\n x[12] ^= R(x[ 8] + x[ 4], 13);\n x[ 0] ^= R(x[12] + x[ 8], 18);\n x[ 9] ^= R(x[ 5] + x[ 1], 7);\n x[13] ^= R(x[ 9] + x[ 5], 9);\n x[ 1] ^= R(x[13] + x[ 9], 13);\n x[ 5] ^= R(x[ 1] + x[13], 18);\n x[14] ^= R(x[10] + x[ 6], 7);\n x[ 2] ^= R(x[14] + x[10], 9);\n x[ 6] ^= R(x[ 2] + x[14], 13);\n x[10] ^= R(x[ 6] + x[ 2], 18);\n x[ 3] ^= R(x[15] + x[11], 7);\n x[ 7] ^= R(x[ 3] + x[15], 9);\n x[11] ^= R(x[ 7] + x[ 3], 13);\n x[15] ^= R(x[11] + x[ 7], 18);\n x[ 1] ^= R(x[ 0] + x[ 3], 7);\n x[ 2] ^= R(x[ 1] + x[ 0], 9);\n x[ 3] ^= R(x[ 2] + x[ 1], 13);\n x[ 0] ^= R(x[ 3] + x[ 2], 18);\n x[ 6] ^= R(x[ 5] + x[ 4], 7);\n x[ 7] ^= R(x[ 6] + x[ 5], 9);\n x[ 4] ^= R(x[ 7] + x[ 6], 13);\n x[ 5] ^= R(x[ 4] + x[ 7], 18);\n x[11] ^= R(x[10] + x[ 9], 7);\n x[ 8] ^= R(x[11] + x[10], 9);\n x[ 9] ^= R(x[ 8] + x[11], 13);\n x[10] ^= R(x[ 9] + x[ 8], 18);\n x[12] ^= R(x[15] + x[14], 7);\n x[13] ^= R(x[12] + x[15], 9);\n x[14] ^= R(x[13] + x[12], 13);\n x[15] ^= R(x[14] + x[13], 18);\n }\n\n for (i = 0; i < 16; ++i) {\n B[i] += x[i];\n }\n }\n\n // naive approach... going back to loop unrolling may yield additional performance\n function blockxor(S, Si, D, len) {\n for (var i = 0; i < len; i++) {\n D[i] ^= S[Si + i]\n }\n }\n\n function arraycopy(src, srcPos, dest, destPos, length) {\n while (length--) {\n dest[destPos++] = src[srcPos++];\n }\n }\n\n function checkBufferish(o) {\n if (!o || typeof(o.length) !== 'number') {\n return false;\n }\n for (var i = 0; i < o.length; i++) {\n if (typeof(o[i]) !== 'number') { return false; }\n\n var v = parseInt(o[i]);\n if (v != o[i] || v < 0 || v >= 256) {\n return false;\n }\n }\n return true;\n }\n\n function ensureInteger(value, name) {\n var intValue = parseInt(value);\n if (value != intValue) { throw new Error('invalid ' + name); }\n return intValue;\n }\n\n // N = Cpu cost, r = Memory cost, p = parallelization cost\n // callback(error, progress, key)\n function scrypt(password, salt, N, r, p, dkLen, callback) {\n\n if (!callback) { throw new Error('missing callback'); }\n\n N = ensureInteger(N, 'N');\n r = ensureInteger(r, 'r');\n p = ensureInteger(p, 'p');\n\n dkLen = ensureInteger(dkLen, 'dkLen');\n\n if (N === 0 || (N & (N - 1)) !== 0) { throw new Error('N must be power of 2'); }\n\n if (N > MAX_VALUE / 128 / r) { throw new Error('N too large'); }\n if (r > MAX_VALUE / 128 / p) { throw new Error('r too large'); }\n\n if (!checkBufferish(password)) {\n throw new Error('password must be an array or buffer');\n }\n\n if (!checkBufferish(salt)) {\n throw new Error('salt must be an array or buffer');\n }\n\n var b = PBKDF2_HMAC_SHA256_OneIter(password, salt, p * 128 * r);\n var B = new Uint32Array(p * 32 * r)\n for (var i = 0; i < B.length; i++) {\n var j = i * 4;\n B[i] = ((b[j + 3] & 0xff) << 24) |\n ((b[j + 2] & 0xff) << 16) |\n ((b[j + 1] & 0xff) << 8) |\n ((b[j + 0] & 0xff) << 0);\n }\n\n var XY = new Uint32Array(64 * r);\n var V = new Uint32Array(32 * r * N);\n\n var Yi = 32 * r;\n\n // scratch space\n var x = new Uint32Array(16); // salsa20_8\n var _X = new Uint32Array(16); // blockmix_salsa8\n\n var totalOps = p * N * 2;\n var currentOp = 0;\n var lastPercent10 = null;\n\n // Set this to true to abandon the scrypt on the next step\n var stop = false;\n\n // State information\n var state = 0;\n var i0 = 0, i1;\n var Bi;\n\n // How many blockmix_salsa8 can we do per step?\n var limit = parseInt(1000 / r);\n\n // Trick from scrypt-async; if there is a setImmediate shim in place, use it\n var nextTick = (typeof(setImmediate) !== 'undefined') ? setImmediate : setTimeout;\n\n // This is really all I changed; making scryptsy a state machine so we occasionally\n // stop and give other evnts on the evnt loop a chance to run. ~RicMoo\n var incrementalSMix = function() {\n if (stop) {\n return callback(new Error('cancelled'), currentOp / totalOps);\n }\n\n switch (state) {\n case 0:\n // for (var i = 0; i < p; i++)...\n Bi = i0 * 32 * r;\n\n arraycopy(B, Bi, XY, 0, Yi); // ROMix - 1\n\n state = 1; // Move to ROMix 2\n i1 = 0;\n\n // Fall through\n\n case 1:\n\n // Run up to 1000 steps of the first inner smix loop\n var steps = N - i1;\n if (steps > limit) { steps = limit; }\n for (var i = 0; i < steps; i++) { // ROMix - 2\n arraycopy(XY, 0, V, (i1 + i) * Yi, Yi) // ROMix - 3\n blockmix_salsa8(XY, Yi, r, x, _X); // ROMix - 4\n }\n\n // for (var i = 0; i < N; i++)\n i1 += steps;\n currentOp += steps;\n\n // Call the callback with the progress (optionally stopping us)\n var percent10 = parseInt(1000 * currentOp / totalOps);\n if (percent10 !== lastPercent10) {\n stop = callback(null, currentOp / totalOps);\n if (stop) { break; }\n lastPercent10 = percent10;\n }\n\n if (i1 < N) {\n break;\n }\n\n i1 = 0; // Move to ROMix 6\n state = 2;\n\n // Fall through\n\n case 2:\n\n // Run up to 1000 steps of the second inner smix loop\n var steps = N - i1;\n if (steps > limit) { steps = limit; }\n for (var i = 0; i < steps; i++) { // ROMix - 6\n var offset = (2 * r - 1) * 16; // ROMix - 7\n var j = XY[offset] & (N - 1);\n blockxor(V, j * Yi, XY, Yi); // ROMix - 8 (inner)\n blockmix_salsa8(XY, Yi, r, x, _X); // ROMix - 9 (outer)\n }\n\n // for (var i = 0; i < N; i++)...\n i1 += steps;\n currentOp += steps;\n\n // Call the callback with the progress (optionally stopping us)\n var percent10 = parseInt(1000 * currentOp / totalOps);\n if (percent10 !== lastPercent10) {\n stop = callback(null, currentOp / totalOps);\n if (stop) { break; }\n lastPercent10 = percent10;\n }\n\n if (i1 < N) {\n break;\n }\n\n arraycopy(XY, 0, B, Bi, Yi); // ROMix - 10\n\n // for (var i = 0; i < p; i++)...\n i0++;\n if (i0 < p) {\n state = 0;\n break;\n }\n\n b = [];\n for (var i = 0; i < B.length; i++) {\n b.push((B[i] >> 0) & 0xff);\n b.push((B[i] >> 8) & 0xff);\n b.push((B[i] >> 16) & 0xff);\n b.push((B[i] >> 24) & 0xff);\n }\n\n var derivedKey = PBKDF2_HMAC_SHA256_OneIter(password, b, dkLen);\n\n // Done; don't break (which would reschedule)\n return callback(null, 1.0, derivedKey);\n }\n\n // Schedule the next steps\n nextTick(incrementalSMix);\n }\n\n // Bootstrap the incremental smix\n incrementalSMix();\n }\n\n // node.js\n if (typeof(exports) !== 'undefined') {\n module.exports = scrypt;\n\n // RequireJS/AMD\n // http://www.requirejs.org/docs/api.html\n // https://github.com/amdjs/amdjs-api/wiki/AMD\n } else if (typeof(define) === 'function' && define.amd) {\n define(scrypt);\n\n // Web Browsers\n } else if (root) {\n\n // If there was an existing library \"scrypt\", make sure it is still available\n if (root.scrypt) {\n root._scrypt = root.scrypt;\n }\n\n root.scrypt = scrypt;\n }\n\n})(this);\n\n}).call(this,require(\"timers\").setImmediate)\n},{\"timers\":44}],43:[function(require,module,exports){\n(function (process,global){\n(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var setImmediate;\n\n function addFromSetImmediateArguments(args) {\n tasksByHandle[nextHandle] = partiallyApplied.apply(undefined, args);\n return nextHandle++;\n }\n\n // This function accepts the same arguments as setImmediate, but\n // returns a function that requires no arguments.\n function partiallyApplied(handler) {\n var args = [].slice.call(arguments, 1);\n return function() {\n if (typeof handler === \"function\") {\n handler.apply(undefined, args);\n } else {\n (new Function(\"\" + handler))();\n }\n };\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(partiallyApplied(runIfPresent, handle), 0);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n task();\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function installNextTickImplementation() {\n setImmediate = function() {\n var handle = addFromSetImmediateArguments(arguments);\n process.nextTick(partiallyApplied(runIfPresent, handle));\n return handle;\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n setImmediate = function() {\n var handle = addFromSetImmediateArguments(arguments);\n global.postMessage(messagePrefix + handle, \"*\");\n return handle;\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n setImmediate = function() {\n var handle = addFromSetImmediateArguments(arguments);\n channel.port2.postMessage(handle);\n return handle;\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n setImmediate = function() {\n var handle = addFromSetImmediateArguments(arguments);\n // Create a