{"version":3,"sources":["webpack:///./node_modules/crypto-js/mode-cfb.js","webpack:///./node_modules/crypto-js/ripemd160.js","webpack:///./node_modules/crypto-js/enc-base64.js","webpack:///./node_modules/crypto-js/rabbit.js","webpack:///./node_modules/core-js/modules/es.array.reduce.js","webpack:///./node_modules/crypto-js/lib-typedarrays.js","webpack:///./node_modules/crypto-js/sha224.js","webpack:///./node_modules/crypto-js/core.js","webpack:///./node_modules/crypto-js/pad-zeropadding.js","webpack:///./node_modules/crypto-js/evpkdf.js","webpack:///./node_modules/crypto-js/x64-core.js","webpack:///./node_modules/crypto-js/index.js","webpack:///./node_modules/crypto-js/cipher-core.js","webpack:///./node_modules/crypto-js/rabbit-legacy.js","webpack:///./node_modules/crypto-js/mode-ofb.js","webpack:///./src/utils/sm2.js","webpack:///./node_modules/crypto-js/hmac.js","webpack:///./node_modules/crypto-js/format-hex.js","webpack:///./node_modules/crypto-js/md5.js","webpack:///./node_modules/crypto-js/pbkdf2.js","webpack:///./node_modules/crypto-js/mode-ecb.js","webpack:///./node_modules/crypto-js/pad-iso97971.js","webpack:///./node_modules/crypto-js/sha256.js","webpack:///./node_modules/crypto-js/pad-iso10126.js","webpack:///./node_modules/crypto-js/tripledes.js","webpack:///./node_modules/crypto-js/pad-ansix923.js","webpack:///./node_modules/crypto-js/enc-utf16.js","webpack:///./node_modules/crypto-js/mode-ctr-gladman.js","webpack:///./node_modules/crypto-js/sha384.js","webpack:///./node_modules/crypto-js/pad-nopadding.js","webpack:///./node_modules/crypto-js/aes.js","webpack:///./node_modules/crypto-js/enc-base64url.js","webpack:///./node_modules/crypto-js/rc4.js","webpack:///./node_modules/core-js/internals/array-reduce.js","webpack:///./node_modules/crypto-js/sha512.js","webpack:///./node_modules/crypto-js/sha1.js","webpack:///./node_modules/crypto-js/sha3.js","webpack:///./node_modules/crypto-js/mode-ctr.js"],"names":["root","factory","undef","module","exports","this","CryptoJS","mode","CFB","lib","BlockCipherMode","extend","generateKeystreamAndEncrypt","words","offset","blockSize","cipher","keystream","iv","_iv","slice","undefined","_prevBlock","encryptBlock","i","Encryptor","processBlock","_cipher","call","Decryptor","thisBlock","Math","C","C_lib","WordArray","Hasher","C_algo","algo","_zl","create","_zr","_sl","_sr","_hl","_hr","RIPEMD160","_doReset","_hash","_doProcessBlock","M","offset_i","M_offset_i","al","bl","cl","dl","el","ar","br","cr","dr","er","t","H","hl","hr","zl","zr","sl","sr","f1","f2","f3","f4","f5","rotl","_doFinalize","data","_data","dataWords","nBitsTotal","_nDataBytes","nBitsLeft","sigBytes","length","_process","hash","H_i","clone","x","y","z","n","_createHelper","HmacRIPEMD160","_createHmacHelper","C_enc","enc","Base64","stringify","wordArray","map","_map","clamp","base64Chars","byte1","byte2","byte3","triplet","j","push","charAt","paddingChar","join","parse","base64Str","base64StrLength","reverseMap","_reverseMap","charCodeAt","paddingIndex","indexOf","parseLoop","nBytes","bits1","bits2","bitsCombined","StreamCipher","S","C_","G","Rabbit","K","_key","cfg","X","_X","_C","_b","nextState","IV","IV_0","IV_1","i0","i2","i1","i3","ivSize","gx","ga","gb","gh","gl","$","$reduce","left","arrayMethodIsStrict","arrayMethodUsesToLength","STRICT_METHOD","USES_TO_LENGTH","1","target","proto","forced","reduce","callbackfn","arguments","ArrayBuffer","superInit","init","subInit","typedArray","Uint8Array","Int8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","buffer","byteOffset","byteLength","typedArrayByteLength","apply","prototype","SHA256","SHA224","HmacSHA224","crypto","window","self","globalThis","msCrypto","global","err","cryptoSecureRandomInt","getRandomValues","randomBytes","readInt32LE","Error","Object","F","obj","subtype","Base","overrides","mixIn","hasOwnProperty","$super","instance","properties","propertyName","toString","encoder","Hex","concat","thisWords","thatWords","thisSigBytes","thatSigBytes","thatByte","ceil","random","hexChars","bite","hexStr","hexStrLength","parseInt","substr","Latin1","latin1Chars","String","fromCharCode","latin1Str","latin1StrLength","Utf8","decodeURIComponent","escape","e","utf8Str","unescape","encodeURIComponent","BufferedBlockAlgorithm","reset","_append","doFlush","processedWords","dataSigBytes","blockSizeBytes","nBlocksReady","max","_minBufferSize","nWordsReady","nBytesReady","min","splice","update","messageUpdate","finalize","hasher","message","key","HMAC","pad","ZeroPadding","unpad","MD5","EvpKDF","keySize","iterations","compute","password","salt","block","derivedKey","derivedKeyWords","X32WordArray","C_x64","x64","Word","high","low","toX32","x64Words","x64WordsLength","x32Words","x64Word","wordsLength","Cipher","createEncryptor","_ENC_XFORM_MODE","createDecryptor","_DEC_XFORM_MODE","xformMode","_xformMode","process","dataUpdate","finalProcessedData","selectCipherStrategy","PasswordBasedCipher","SerializableCipher","encrypt","decrypt","ciphertext","C_mode","finalProcessedBlocks","CBC","xorBlock","decryptBlock","C_pad","Pkcs7","nPaddingBytes","paddingWord","paddingWords","padding","CipherParams","BlockCipher","modeCreator","_mode","__creator","cipherParams","formatter","C_format","format","OpenSSLFormatter","OpenSSL","openSSLStr","ciphertextWords","encryptor","cipherCfg","algorithm","_parse","plaintext","C_kdf","kdf","OpenSSLKdf","execute","derivedParams","RabbitLegacy","OFB","_keystream","SM2Utils","SM2Cipher","a","ct","sm3c3","sm3keybase","p2","Array","keyOff","cipherMode","SM2CipherMode","C1C3C2","C1C2C3","c","b","_lBlock","_rBlock","d","f","g","h","k","l","0","268435456","536870912","805306368","1073741824","1342177280","1610612736","1879048192","2147483648","2415919104","2684354560","2952790016","3221225472","3489660928","3758096384","4026531840","134217728","402653184","671088640","939524096","1207959552","1476395008","1744830464","2013265920","2281701376","2550136832","2818572288","3087007744","3355443200","3623878656","3892314112","4160749568","268435457","536870913","805306369","1073741825","1342177281","1610612737","1879048193","2147483649","2415919105","2684354561","2952790017","3221225473","3489660929","3758096385","4026531841","134217729","402653185","671088641","939524097","1207959553","1476395009","1744830465","2013265921","2281701377","2550136833","2818572289","3087007745","3355443201","3623878657","3892314113","4160749569","16777216","33554432","50331648","67108864","83886080","100663296","117440512","150994944","167772160","184549376","201326592","218103808","234881024","251658240","8388608","25165824","41943040","58720256","75497472","92274688","109051904","125829120","142606336","159383552","176160768","192937984","209715200","226492416","243269632","260046848","285212672","301989888","318767104","335544320","352321536","369098752","385875968","419430400","436207616","452984832","469762048","486539264","503316480","520093696","276824064","293601280","310378496","327155712","343932928","360710144","377487360","394264576","411041792","427819008","444596224","461373440","478150656","494927872","511705088","528482304","1048576","2097152","3145728","4194304","5242880","6291456","7340032","9437184","10485760","11534336","12582912","13631488","14680064","15728640","524288","1572864","2621440","3670016","4718592","5767168","6815744","7864320","8912896","9961472","11010048","12058624","13107200","14155776","15204352","16252928","17825792","18874368","19922944","20971520","22020096","23068672","24117248","26214400","27262976","28311552","29360128","30408704","31457280","32505856","17301504","18350080","19398656","20447232","21495808","22544384","23592960","24641536","25690112","26738688","27787264","28835840","29884416","30932992","31981568","33030144","65536","131072","196608","262144","327680","393216","458752","589824","655360","720896","786432","851968","917504","983040","32768","98304","163840","229376","294912","360448","425984","491520","557056","622592","688128","753664","819200","884736","950272","1015808","1114112","1179648","1245184","1310720","1376256","1441792","1507328","1638400","1703936","1769472","1835008","1900544","1966080","2031616","1081344","1146880","1212416","1277952","1343488","1409024","1474560","1540096","1605632","1671168","1736704","1802240","1867776","1933312","1998848","2064384","4096","8192","12288","16384","20480","24576","28672","36864","40960","45056","49152","53248","57344","61440","2048","6144","10240","14336","18432","22528","26624","30720","34816","38912","43008","47104","51200","55296","59392","63488","69632","73728","77824","81920","86016","90112","94208","102400","106496","110592","114688","118784","122880","126976","67584","71680","75776","79872","83968","88064","92160","96256","100352","104448","108544","112640","116736","120832","124928","129024","256","512","768","1024","1280","1536","1792","2304","2560","2816","3072","3328","3584","3840","128","384","640","896","1152","1408","1664","1920","2176","2432","2688","2944","3200","3456","3712","3968","4352","4608","4864","5120","5376","5632","5888","6400","6656","6912","7168","7424","7680","7936","4224","4480","4736","4992","5248","5504","5760","6016","6272","6528","6784","7040","7296","7552","7808","8064","16","32","48","64","80","96","112","144","160","176","192","208","224","240","8","24","40","56","72","88","104","120","136","152","168","184","200","216","232","248","272","288","304","320","336","352","368","400","416","432","448","464","480","496","264","280","296","312","328","344","360","376","392","408","424","440","456","472","488","504","2","3","4","5","6","7","9","10","11","12","13","14","15","2147483650","2147483651","2147483652","2147483653","2147483654","2147483655","2147483656","2147483657","2147483658","2147483659","2147483660","2147483661","2147483662","2147483663","17","18","19","20","21","22","23","25","26","27","28","29","30","31","2147483664","2147483665","2147483666","2147483667","2147483668","2147483669","2147483670","2147483671","2147483672","2147483673","2147483674","2147483675","2147483676","2147483677","2147483678","2147483679","p","DES","_subKeys","_invSubKeys","_doCryptBlock","u","TripleDES","_des1","_des2","_des3","dbits","canary","j_lm","BigInteger","fromNumber","fromString","nbi","am1","floor","am2","am3","server","am","navigator","appName","DB","DM","DV","BI_FP","FV","pow","F1","F2","BI_RM","BI_RC","rr","vv","int2char","intAt","bnpCopyTo","s","bnpFromInt","nbv","fromInt","bnpFromString","fromRadix","ZERO","subTo","bnpClamp","bnToString","negate","toRadix","bnNegate","bnAbs","bnCompareTo","nbits","bnBitLength","bnpDLShiftTo","bnpDRShiftTo","bnpLShiftTo","bnpRShiftTo","bnpSubTo","bnpMultiplyTo","abs","bnpSquareTo","bnpDivRemTo","copyTo","lShiftTo","q","m","dlShiftTo","compareTo","ONE","r","drShiftTo","rShiftTo","bnMod","divRemTo","Classic","cConvert","mod","cRevert","cReduce","cMulTo","multiplyTo","cSqrTo","squareTo","bnpInvDigit","Montgomery","mp","invDigit","mpl","mph","um","mt2","montConvert","montRevert","montReduce","montSqrTo","montMulTo","bnpIsEven","bnpExp","convert","sqrTo","mulTo","revert","bnModPowInt","isEven","exp","bnClone","bnIntValue","bnByteValue","bnShortValue","bnpChunkSize","LN2","log","bnSigNum","bnpToRadix","signum","chunkSize","intValue","bnpFromRadix","dMultiply","dAddOffset","bnpFromNumber","testBit","bitwiseTo","shiftLeft","op_or","isProbablePrime","bitLength","nextBytes","bnToByteArray","bnEquals","bnMin","bnMax","bnpBitwiseTo","op_and","bnAnd","bnOr","op_xor","bnXor","op_andnot","bnAndNot","bnNot","bnShiftLeft","bnShiftRight","lbit","bnGetLowestSetBit","cbit","bnBitCount","bnTestBit","bnpChangeBit","bnSetBit","changeBit","bnClearBit","bnFlipBit","bnpAddTo","bnAdd","addTo","bnSubtract","bnMultiply","bnSquare","bnDivide","bnRemainder","bnDivideAndRemainder","bnpDMultiply","bnpDAddOffset","NullExp","nNop","nMulTo","nSqrTo","bnPow","bnpMultiplyLowerTo","bnpMultiplyUpperTo","Barrett","r2","q3","mu","divide","barrettConvert","barrettRevert","barrettReduce","multiplyUpperTo","multiplyLowerTo","barrettSqrTo","barrettMulTo","bnModPow","bnGCD","getLowestSetBit","bnpModInt","bnModInverse","subtract","add","modPowInt","lowprimes","lplim","bnIsProbablePrime","modInt","millerRabin","bnpMillerRabin","shiftRight","modPow","Arcfour","ARC4init","ARC4next","prng_newstate","byteValue","shortValue","toByteArray","equals","and","or","xor","andNot","not","bitCount","setBit","clearBit","flipBit","multiply","remainder","divideAndRemainder","modInverse","gcd","square","next","rng_psize","rng_state","rng_pool","rng_pptr","rng_seed_int","rng_seed_time","Date","getTime","appVersion","rng_get_byte","rng_get_bytes","SecureRandom","KJUR","ECFieldElementFp","feFpEquals","feFpToBigInteger","feFpNegate","feFpAdd","toBigInteger","feFpSubtract","feFpMultiply","feFpSquare","feFpDivide","ECPointFp","curve","zinv","pointFpGetX","fromBigInteger","pointFpGetY","pointFpEquals","isInfinity","pointFpIsInfinity","pointFpNegate","pointFpAdd","twice","getInfinity","pointFpTwice","pointFpMultiply","pointFpMultiplyTwo","ECCurveFp","infinity","curveFpGetQ","curveFpGetA","curveFpGetB","curveFpEquals","curveFpGetInfinity","curveFpFromBigInteger","curveFpDecodePointHex","SM3Digest","BYTE_LENGTH","xBuf","byteCount","xBufOff","DIGEST_LENGTH","v0","v","v_","X0","xOff","T_00_15","T_16_63","InitDigest","Init","Util","DIGESTINFOHEAD","sha1","sha224","sha256","sha384","sha512","md2","md5","ripemd160","DEFAULTPROVIDER","hmacmd5","hmacsha1","hmacsha224","hmacsha256","hmacsha384","hmacsha512","hmacripemd160","sm3","MD5withRSA","SHA1withRSA","SHA224withRSA","SHA256withRSA","SHA384withRSA","SHA512withRSA","RIPEMD160withRSA","MD5withECDSA","SHA1withECDSA","SHA224withECDSA","SHA256withECDSA","SHA384withECDSA","SHA512withECDSA","RIPEMD160withECDSA","SHA1withDSA","SHA224withDSA","SHA256withDSA","MD5withRSAandMGF1","SHA1withRSAandMGF1","SHA224withRSAandMGF1","SHA256withRSAandMGF1","SHA384withRSAandMGF1","SHA512withRSAandMGF1","RIPEMD160withRSAandMGF1","CRYPTOJSMESSAGEDIGESTNAME","getDigestInfoHex","getPaddedDigestInfoHex","hashString","MessageDigest","alg","digestString","hashHex","digestHex","prov","sha256Hex","sha512Hex","getCryptoJSMDByName","setAlgAndProvider","md","eval","updateString","updateHex","digest","sjcl","codec","hex","toBits","fromBits","algName","provName","Mac","toLowerCase","algProv","mac","pass","doFinal","doFinalString","doFinalHex","Signature","_setAlgNames","match","mdAlgName","RegExp","$1","pubkeyAlgName","$2","_zeroPaddingOfSignature","KEYUTIL","getKey","isPrivate","prvKey","state","isPublic","pubKey","initSign","ecprvhex","eccurvename","initVerifyByPublicKey","ecpubhex","ECDSA","RSAKey","initVerifyByCertificatePEM","X509","readCertPEM","subjectPublicKeyRSA","sign","sHashHex","SM3withSM2","ecparams","getX","getY","GetZ","GetWords","GetHex","GetDigestSize","BlockUpdate","DoFinal","hSign","signHex","signWithMessageHashPSS","pssSaltLen","signWithMessageHash","DSA","signString","verify","verifyHex","verifyWithMessageHashPSS","verifyWithMessageHash","algProvName","initParams","psssaltlen","prvkeypem","prvkeypas","readPrivateKeyFromPEMString","OID","oidhex2name","multiplyTwo","getQ","getA","getB","decodePointHex","getByteLength","getEncoded","toByteArrayUnsigned","unshift","decodeFrom","decodeFromHex","add2D","twice2D","valueOf","multiply2D","isOnCurve","validate","type","getBigRandom","setNamedCurve","ECParameterDB","getByName","pubKeyHex","prvKeyHex","curveName","setPrivateKeyHex","setPublicKeyHex","generateKeyPairHex","keylen","biRSSigToASN1Sig","fromByteArrayUnsigned","serializeSig","parseSigHex","verifyRaw","Bitcoin","isArray","parseSig","toByteArraySigned","parseSigCompact","prv","pub","parseSigHexInHexRS","ASN1HEX","getPosArrayOfChildren_AtObj","getHexOfV_AtObj","asn1SigToConcatSig","concatSigToASN1Sig","hexRSSigToASN1Sig","asn1","DERInteger","bigint","DERSequence","array","getEncodedHex","SM3","HmacSM3","Reset","Copy","Clear","GetByteLength","ProcessBlock","P1","ROTATE","Int32","FF_00_15","GG_00_15","P0","FF_16_63","GG_16_63","ProcessWord","ProcessLength","URShiftLong","IntToBigEndian","parseByte","URShift","Finish","Update","maxValue","minValue","elm","Number","regist","name","oid","info","NextKey","KDF","InitEncipher","EncryptBlock","InitDecipher","DecryptBlock","Dofinal","Encrypt","Decrypt","CreatePoint","SM2Key","setKey","SM2SetKey","eccX","eccY","SM2Encrypt","text","textData","userKey","msgData","SM2","PUBLIC_KEY","sm2Encrypt","publickey","pubkeyHex","xHex","yHex","encryptData","encs","_hasher","hasherBlockSize","hasherBlockSizeBytes","oKey","_oKey","iKey","_iKey","oKeyWords","iKeyWords","innerHash","hmac","input","T","sin","M_offset_0","M_offset_1","M_offset_2","M_offset_3","M_offset_4","M_offset_5","M_offset_6","M_offset_7","M_offset_8","M_offset_9","M_offset_10","M_offset_11","M_offset_12","M_offset_13","M_offset_14","M_offset_15","FF","GG","HH","II","nBitsTotalH","nBitsTotalL","HmacMD5","SHA1","PBKDF2","blockIndex","blockIndexWords","blockWords","blockWordsLength","intermediate","intermediateWords","ECB","Iso97971","isPrime","sqrtN","sqrt","factor","getFractionalBits","nPrime","W","gamma0x","gamma0","gamma1x","gamma1","ch","maj","sigma0","sigma1","t1","t2","HmacSHA256","Iso10126","PC1","PC2","BIT_SHIFTS","SBOX_P","SBOX_MASK","keyWords","keyBits","keyBitPos","subKeys","nSubKey","subKey","bitShift","invSubKeys","exchangeLR","exchangeRL","round","lBlock","rBlock","mask","key1","key2","key3","AnsiX923","lastBytePos","Ansix923","Utf16","Utf16BE","utf16Chars","codePoint","utf16Str","utf16StrLength","swapEndian","word","Utf16LE","CTRGladman","incWord","b1","b2","b3","incCounter","counter","_counter","X64Word","X64WordArray","SHA512","SHA384","HmacSHA384","NoPadding","SBOX","INV_SBOX","SUB_MIX_0","SUB_MIX_1","SUB_MIX_2","SUB_MIX_3","INV_SUB_MIX_0","INV_SUB_MIX_1","INV_SUB_MIX_2","INV_SUB_MIX_3","xi","sx","x2","x4","x8","RCON","AES","_nRounds","_keyPriorReset","nRounds","ksRows","keySchedule","_keySchedule","ksRow","invKeySchedule","_invKeySchedule","invKsRow","s0","s1","s2","s3","t0","t3","Base64url","urlSafe","_safe_map","RC4","keySigBytes","_S","keyByteIndex","keyByte","_i","_j","generateKeystreamWord","keystreamWord","RC4Drop","drop","aFunction","toObject","IndexedObject","toLength","createMethod","IS_RIGHT","that","argumentsLength","memo","O","index","TypeError","right","X64Word_create","H0","H1","H2","H3","H4","H5","H6","H7","H0h","H0l","H1h","H1l","H2h","H2l","H3h","H3l","H4h","H4l","H5h","H5l","H6h","H6l","H7h","H7l","ah","bh","dh","eh","fh","fl","hh","Wil","Wih","Wi","gamma0xh","gamma0xl","gamma0h","gamma0l","gamma1xh","gamma1xl","gamma1h","gamma1l","Wi7","Wi7h","Wi7l","Wi16","Wi16h","Wi16l","chh","chl","majh","majl","sigma0h","sigma0l","sigma1h","sigma1l","Ki","Kih","Kil","t1l","t1h","t2l","t2h","HmacSHA512","HmacSHA1","RHO_OFFSETS","PI_INDEXES","ROUND_CONSTANTS","newX","newY","LFSR","roundConstantMsw","roundConstantLsw","bitPosition","SHA3","outputLength","_state","nBlockSizeLanes","M2i","M2i1","lane","tMsw","tLsw","Tx","Tx4","Tx1","Tx1Msw","Tx1Lsw","laneIndex","laneMsw","laneLsw","rhoOffset","TPiLane","T0","state0","TLane","Tx1Lane","Tx2Lane","roundConstant","blockSizeBits","outputLengthBytes","outputLengthLanes","hashWords","HmacSHA3","CTR"],"mappings":"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","file":"js/chunk-2728e7cb.efc29a07.js","sourcesContent":[";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher Feedback block mode.\n\t */\n\tCryptoJS.mode.CFB = (function () {\n\t var CFB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t CFB.Encryptor = CFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t CFB.Decryptor = CFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function generateKeystreamAndEncrypt(words, offset, blockSize, cipher) {\n\t var keystream;\n\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Generate keystream\n\t if (iv) {\n\t keystream = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t keystream = this._prevBlock;\n\t }\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\n\t return CFB;\n\t}());\n\n\n\treturn CryptoJS.mode.CFB;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/** @preserve\n\t(c) 2012 by Cédric Mesnil. All rights reserved.\n\n\tRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n\n\t - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n\t - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n\n\tTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t*/\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var _zl = WordArray.create([\n\t 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n\t 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n\t 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n\t 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n\t 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]);\n\t var _zr = WordArray.create([\n\t 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n\t 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n\t 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n\t 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n\t 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]);\n\t var _sl = WordArray.create([\n\t 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n\t 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n\t 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n\t 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n\t 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 ]);\n\t var _sr = WordArray.create([\n\t 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n\t 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n\t 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n\t 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n\t 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 ]);\n\n\t var _hl = WordArray.create([ 0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]);\n\t var _hr = WordArray.create([ 0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]);\n\n\t /**\n\t * RIPEMD160 hash algorithm.\n\t */\n\t var RIPEMD160 = C_algo.RIPEMD160 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = WordArray.create([0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t // Swap\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\t // Shortcut\n\t var H = this._hash.words;\n\t var hl = _hl.words;\n\t var hr = _hr.words;\n\t var zl = _zl.words;\n\t var zr = _zr.words;\n\t var sl = _sl.words;\n\t var sr = _sr.words;\n\n\t // Working variables\n\t var al, bl, cl, dl, el;\n\t var ar, br, cr, dr, er;\n\n\t ar = al = H[0];\n\t br = bl = H[1];\n\t cr = cl = H[2];\n\t dr = dl = H[3];\n\t er = el = H[4];\n\t // Computation\n\t var t;\n\t for (var i = 0; i < 80; i += 1) {\n\t t = (al + M[offset+zl[i]])|0;\n\t if (i<16){\n\t\t t += f1(bl,cl,dl) + hl[0];\n\t } else if (i<32) {\n\t\t t += f2(bl,cl,dl) + hl[1];\n\t } else if (i<48) {\n\t\t t += f3(bl,cl,dl) + hl[2];\n\t } else if (i<64) {\n\t\t t += f4(bl,cl,dl) + hl[3];\n\t } else {// if (i<80) {\n\t\t t += f5(bl,cl,dl) + hl[4];\n\t }\n\t t = t|0;\n\t t = rotl(t,sl[i]);\n\t t = (t+el)|0;\n\t al = el;\n\t el = dl;\n\t dl = rotl(cl, 10);\n\t cl = bl;\n\t bl = t;\n\n\t t = (ar + M[offset+zr[i]])|0;\n\t if (i<16){\n\t\t t += f5(br,cr,dr) + hr[0];\n\t } else if (i<32) {\n\t\t t += f4(br,cr,dr) + hr[1];\n\t } else if (i<48) {\n\t\t t += f3(br,cr,dr) + hr[2];\n\t } else if (i<64) {\n\t\t t += f2(br,cr,dr) + hr[3];\n\t } else {// if (i<80) {\n\t\t t += f1(br,cr,dr) + hr[4];\n\t }\n\t t = t|0;\n\t t = rotl(t,sr[i]) ;\n\t t = (t+er)|0;\n\t ar = er;\n\t er = dr;\n\t dr = rotl(cr, 10);\n\t cr = br;\n\t br = t;\n\t }\n\t // Intermediate hash value\n\t t = (H[1] + cl + dr)|0;\n\t H[1] = (H[2] + dl + er)|0;\n\t H[2] = (H[3] + el + ar)|0;\n\t H[3] = (H[4] + al + br)|0;\n\t H[4] = (H[0] + bl + cr)|0;\n\t H[0] = t;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)\n\t );\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 5; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t // Swap\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\n\t function f1(x, y, z) {\n\t return ((x) ^ (y) ^ (z));\n\n\t }\n\n\t function f2(x, y, z) {\n\t return (((x)&(y)) | ((~x)&(z)));\n\t }\n\n\t function f3(x, y, z) {\n\t return (((x) | (~(y))) ^ (z));\n\t }\n\n\t function f4(x, y, z) {\n\t return (((x) & (z)) | ((y)&(~(z))));\n\t }\n\n\t function f5(x, y, z) {\n\t return ((x) ^ ((y) |(~(z))));\n\n\t }\n\n\t function rotl(x,n) {\n\t return (x<>>(32-n));\n\t }\n\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.RIPEMD160('message');\n\t * var hash = CryptoJS.RIPEMD160(wordArray);\n\t */\n\t C.RIPEMD160 = Hasher._createHelper(RIPEMD160);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacRIPEMD160(message, key);\n\t */\n\t C.HmacRIPEMD160 = Hasher._createHmacHelper(RIPEMD160);\n\t}(Math));\n\n\n\treturn CryptoJS.RIPEMD160;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64 encoding strategy.\n\t */\n\t var Base64 = C_enc.Base64 = {\n\t /**\n\t * Converts a word array to a Base64 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Base64 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64 string to a word array.\n\t *\n\t * @param {string} base64Str The Base64 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t */\n\t parse: function (base64Str) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t // Reusable objects\n\t var S = [];\n\t var C_ = [];\n\t var G = [];\n\n\t /**\n\t * Rabbit stream cipher algorithm\n\t */\n\t var Rabbit = C_algo.Rabbit = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var K = this._key.words;\n\t var iv = this.cfg.iv;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t K[i] = (((K[i] << 8) | (K[i] >>> 24)) & 0x00ff00ff) |\n\t (((K[i] << 24) | (K[i] >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Generate initial state values\n\t var X = this._X = [\n\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t ];\n\n\t // Generate initial counter values\n\t var C = this._C = [\n\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t ];\n\n\t // Carry bit\n\t this._b = 0;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\n\t // Modify the counters\n\t for (var i = 0; i < 8; i++) {\n\t C[i] ^= X[(i + 4) & 7];\n\t }\n\n\t // IV setup\n\t if (iv) {\n\t // Shortcuts\n\t var IV = iv.words;\n\t var IV_0 = IV[0];\n\t var IV_1 = IV[1];\n\n\t // Generate four subvectors\n\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\n\t // Modify counter values\n\t C[0] ^= i0;\n\t C[1] ^= i1;\n\t C[2] ^= i2;\n\t C[3] ^= i3;\n\t C[4] ^= i0;\n\t C[5] ^= i1;\n\t C[6] ^= i2;\n\t C[7] ^= i3;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\t }\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var X = this._X;\n\n\t // Iterate the system\n\t nextState.call(this);\n\n\t // Generate four keystream words\n\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t for (var i = 0; i < 4; i++) {\n\t // Swap endian\n\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\n\t // Encrypt\n\t M[offset + i] ^= S[i];\n\t }\n\t },\n\n\t blockSize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t function nextState() {\n\t // Shortcuts\n\t var X = this._X;\n\t var C = this._C;\n\n\t // Save old counter values\n\t for (var i = 0; i < 8; i++) {\n\t C_[i] = C[i];\n\t }\n\n\t // Calculate new counter values\n\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t // Calculate the g-values\n\t for (var i = 0; i < 8; i++) {\n\t var gx = X[i] + C[i];\n\n\t // Construct high and low argument for squaring\n\t var ga = gx & 0xffff;\n\t var gb = gx >>> 16;\n\n\t // Calculate high and low result of squaring\n\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t // High XOR low\n\t G[i] = gh ^ gl;\n\t }\n\n\t // Calculate new state values\n\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg);\n\t */\n\t C.Rabbit = StreamCipher._createHelper(Rabbit);\n\t}());\n\n\n\treturn CryptoJS.Rabbit;\n\n}));","'use strict';\nvar $ = require('../internals/export');\nvar $reduce = require('../internals/array-reduce').left;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar STRICT_METHOD = arrayMethodIsStrict('reduce');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('reduce', { 1: 0 });\n\n// `Array.prototype.reduce` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || !USES_TO_LENGTH }, {\n reduce: function reduce(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Check if typed arrays are supported\n\t if (typeof ArrayBuffer != 'function') {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\n\t // Reference original init\n\t var superInit = WordArray.init;\n\n\t // Augment WordArray.init to handle typed arrays\n\t var subInit = WordArray.init = function (typedArray) {\n\t // Convert buffers to uint8\n\t if (typedArray instanceof ArrayBuffer) {\n\t typedArray = new Uint8Array(typedArray);\n\t }\n\n\t // Convert other array views to uint8\n\t if (\n\t typedArray instanceof Int8Array ||\n\t (typeof Uint8ClampedArray !== \"undefined\" && typedArray instanceof Uint8ClampedArray) ||\n\t typedArray instanceof Int16Array ||\n\t typedArray instanceof Uint16Array ||\n\t typedArray instanceof Int32Array ||\n\t typedArray instanceof Uint32Array ||\n\t typedArray instanceof Float32Array ||\n\t typedArray instanceof Float64Array\n\t ) {\n\t typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);\n\t }\n\n\t // Handle Uint8Array\n\t if (typedArray instanceof Uint8Array) {\n\t // Shortcut\n\t var typedArrayByteLength = typedArray.byteLength;\n\n\t // Extract bytes\n\t var words = [];\n\t for (var i = 0; i < typedArrayByteLength; i++) {\n\t words[i >>> 2] |= typedArray[i] << (24 - (i % 4) * 8);\n\t }\n\n\t // Initialize this word array\n\t superInit.call(this, words, typedArrayByteLength);\n\t } else {\n\t // Else call normal init\n\t superInit.apply(this, arguments);\n\t }\n\t };\n\n\t subInit.prototype = WordArray;\n\t}());\n\n\n\treturn CryptoJS.lib.WordArray;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha256\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha256\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var SHA256 = C_algo.SHA256;\n\n\t /**\n\t * SHA-224 hash algorithm.\n\t */\n\t var SHA224 = C_algo.SHA224 = SHA256.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n\t 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4\n\t ]);\n\t },\n\n\t _doFinalize: function () {\n\t var hash = SHA256._doFinalize.call(this);\n\n\t hash.sigBytes -= 4;\n\n\t return hash;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA224('message');\n\t * var hash = CryptoJS.SHA224(wordArray);\n\t */\n\t C.SHA224 = SHA256._createHelper(SHA224);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA224(message, key);\n\t */\n\t C.HmacSHA224 = SHA256._createHmacHelper(SHA224);\n\t}());\n\n\n\treturn CryptoJS.SHA224;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/*globals window, global, require*/\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\n\t var crypto;\n\n\t // Native crypto from window (Browser)\n\t if (typeof window !== 'undefined' && window.crypto) {\n\t crypto = window.crypto;\n\t }\n\n\t // Native crypto in web worker (Browser)\n\t if (typeof self !== 'undefined' && self.crypto) {\n\t crypto = self.crypto;\n\t }\n\n\t // Native crypto from worker\n\t if (typeof globalThis !== 'undefined' && globalThis.crypto) {\n\t crypto = globalThis.crypto;\n\t }\n\n\t // Native (experimental IE 11) crypto from window (Browser)\n\t if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n\t crypto = window.msCrypto;\n\t }\n\n\t // Native crypto from global (NodeJS)\n\t if (!crypto && typeof global !== 'undefined' && global.crypto) {\n\t crypto = global.crypto;\n\t }\n\n\t // Native crypto import via require (NodeJS)\n\t if (!crypto && typeof require === 'function') {\n\t try {\n\t crypto = require('crypto');\n\t } catch (err) {}\n\t }\n\n\t /*\n\t * Cryptographically secure pseudorandom number generator\n\t *\n\t * As Math.random() is cryptographically not safe to use\n\t */\n\t var cryptoSecureRandomInt = function () {\n\t if (crypto) {\n\t // Use getRandomValues method (Browser)\n\t if (typeof crypto.getRandomValues === 'function') {\n\t try {\n\t return crypto.getRandomValues(new Uint32Array(1))[0];\n\t } catch (err) {}\n\t }\n\n\t // Use randomBytes method (NodeJS)\n\t if (typeof crypto.randomBytes === 'function') {\n\t try {\n\t return crypto.randomBytes(4).readInt32LE();\n\t } catch (err) {}\n\t }\n\t }\n\n\t throw new Error('Native crypto module could not be used to get secure random number.');\n\t };\n\n\t /*\n\t * Local polyfill of Object.create\n\n\t */\n\t var create = Object.create || (function () {\n\t function F() {}\n\n\t return function (obj) {\n\t var subtype;\n\n\t F.prototype = obj;\n\n\t subtype = new F();\n\n\t F.prototype = null;\n\n\t return subtype;\n\t };\n\t }());\n\n\t /**\n\t * CryptoJS namespace.\n\t */\n\t var C = {};\n\n\t /**\n\t * Library namespace.\n\t */\n\t var C_lib = C.lib = {};\n\n\t /**\n\t * Base object for prototypal inheritance.\n\t */\n\t var Base = C_lib.Base = (function () {\n\n\n\t return {\n\t /**\n\t * Creates a new object that inherits from this object.\n\t *\n\t * @param {Object} overrides Properties to copy into the new object.\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * field: 'value',\n\t *\n\t * method: function () {\n\t * }\n\t * });\n\t */\n\t extend: function (overrides) {\n\t // Spawn\n\t var subtype = create(this);\n\n\t // Augment\n\t if (overrides) {\n\t subtype.mixIn(overrides);\n\t }\n\n\t // Create default initializer\n\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t subtype.init = function () {\n\t subtype.$super.init.apply(this, arguments);\n\t };\n\t }\n\n\t // Initializer's prototype is the subtype object\n\t subtype.init.prototype = subtype;\n\n\t // Reference supertype\n\t subtype.$super = this;\n\n\t return subtype;\n\t },\n\n\t /**\n\t * Extends this object and runs the init method.\n\t * Arguments to create() will be passed to init().\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var instance = MyType.create();\n\t */\n\t create: function () {\n\t var instance = this.extend();\n\t instance.init.apply(instance, arguments);\n\n\t return instance;\n\t },\n\n\t /**\n\t * Initializes a newly created object.\n\t * Override this method to add some logic when your objects are created.\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * init: function () {\n\t * // ...\n\t * }\n\t * });\n\t */\n\t init: function () {\n\t },\n\n\t /**\n\t * Copies properties into this object.\n\t *\n\t * @param {Object} properties The properties to mix in.\n\t *\n\t * @example\n\t *\n\t * MyType.mixIn({\n\t * field: 'value'\n\t * });\n\t */\n\t mixIn: function (properties) {\n\t for (var propertyName in properties) {\n\t if (properties.hasOwnProperty(propertyName)) {\n\t this[propertyName] = properties[propertyName];\n\t }\n\t }\n\n\t // IE won't copy toString using the loop above\n\t if (properties.hasOwnProperty('toString')) {\n\t this.toString = properties.toString;\n\t }\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = instance.clone();\n\t */\n\t clone: function () {\n\t return this.init.prototype.extend(this);\n\t }\n\t };\n\t }());\n\n\t /**\n\t * An array of 32-bit words.\n\t *\n\t * @property {Array} words The array of 32-bit words.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var WordArray = C_lib.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of 32-bit words.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 4;\n\t }\n\t },\n\n\t /**\n\t * Converts this word array to a string.\n\t *\n\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t *\n\t * @return {string} The stringified word array.\n\t *\n\t * @example\n\t *\n\t * var string = wordArray + '';\n\t * var string = wordArray.toString();\n\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t */\n\t toString: function (encoder) {\n\t return (encoder || Hex).stringify(this);\n\t },\n\n\t /**\n\t * Concatenates a word array to this word array.\n\t *\n\t * @param {WordArray} wordArray The word array to append.\n\t *\n\t * @return {WordArray} This word array.\n\t *\n\t * @example\n\t *\n\t * wordArray1.concat(wordArray2);\n\t */\n\t concat: function (wordArray) {\n\t // Shortcuts\n\t var thisWords = this.words;\n\t var thatWords = wordArray.words;\n\t var thisSigBytes = this.sigBytes;\n\t var thatSigBytes = wordArray.sigBytes;\n\n\t // Clamp excess bits\n\t this.clamp();\n\n\t // Concat\n\t if (thisSigBytes % 4) {\n\t // Copy one byte at a time\n\t for (var i = 0; i < thatSigBytes; i++) {\n\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t }\n\t } else {\n\t // Copy one word at a time\n\t for (var j = 0; j < thatSigBytes; j += 4) {\n\t thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2];\n\t }\n\t }\n\t this.sigBytes += thatSigBytes;\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Removes insignificant bits.\n\t *\n\t * @example\n\t *\n\t * wordArray.clamp();\n\t */\n\t clamp: function () {\n\t // Shortcuts\n\t var words = this.words;\n\t var sigBytes = this.sigBytes;\n\n\t // Clamp\n\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t words.length = Math.ceil(sigBytes / 4);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = wordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone.words = this.words.slice(0);\n\n\t return clone;\n\t },\n\n\t /**\n\t * Creates a word array filled with random bytes.\n\t *\n\t * @param {number} nBytes The number of random bytes to generate.\n\t *\n\t * @return {WordArray} The random word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t */\n\t random: function (nBytes) {\n\t var words = [];\n\n\t for (var i = 0; i < nBytes; i += 4) {\n\t words.push(cryptoSecureRandomInt());\n\t }\n\n\t return new WordArray.init(words, nBytes);\n\t }\n\t });\n\n\t /**\n\t * Encoder namespace.\n\t */\n\t var C_enc = C.enc = {};\n\n\t /**\n\t * Hex encoding strategy.\n\t */\n\t var Hex = C_enc.Hex = {\n\t /**\n\t * Converts a word array to a hex string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The hex string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var hexChars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t hexChars.push((bite >>> 4).toString(16));\n\t hexChars.push((bite & 0x0f).toString(16));\n\t }\n\n\t return hexChars.join('');\n\t },\n\n\t /**\n\t * Converts a hex string to a word array.\n\t *\n\t * @param {string} hexStr The hex string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t */\n\t parse: function (hexStr) {\n\t // Shortcut\n\t var hexStrLength = hexStr.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < hexStrLength; i += 2) {\n\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t }\n\n\t return new WordArray.init(words, hexStrLength / 2);\n\t }\n\t };\n\n\t /**\n\t * Latin1 encoding strategy.\n\t */\n\t var Latin1 = C_enc.Latin1 = {\n\t /**\n\t * Converts a word array to a Latin1 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Latin1 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var latin1Chars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\n\t return latin1Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Latin1 string to a word array.\n\t *\n\t * @param {string} latin1Str The Latin1 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t */\n\t parse: function (latin1Str) {\n\t // Shortcut\n\t var latin1StrLength = latin1Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < latin1StrLength; i++) {\n\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t }\n\n\t return new WordArray.init(words, latin1StrLength);\n\t }\n\t };\n\n\t /**\n\t * UTF-8 encoding strategy.\n\t */\n\t var Utf8 = C_enc.Utf8 = {\n\t /**\n\t * Converts a word array to a UTF-8 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-8 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t try {\n\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t },\n\n\t /**\n\t * Converts a UTF-8 string to a word array.\n\t *\n\t * @param {string} utf8Str The UTF-8 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t */\n\t parse: function (utf8Str) {\n\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t }\n\t };\n\n\t /**\n\t * Abstract buffered block algorithm template.\n\t *\n\t * The property blockSize must be implemented in a concrete subtype.\n\t *\n\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t */\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t /**\n\t * Resets this block algorithm's data buffer to its initial state.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm.reset();\n\t */\n\t reset: function () {\n\t // Initial values\n\t this._data = new WordArray.init();\n\t this._nDataBytes = 0;\n\t },\n\n\t /**\n\t * Adds new data to this block algorithm's buffer.\n\t *\n\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm._append('data');\n\t * bufferedBlockAlgorithm._append(wordArray);\n\t */\n\t _append: function (data) {\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof data == 'string') {\n\t data = Utf8.parse(data);\n\t }\n\n\t // Append\n\t this._data.concat(data);\n\t this._nDataBytes += data.sigBytes;\n\t },\n\n\t /**\n\t * Processes available data blocks.\n\t *\n\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t *\n\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t *\n\t * @return {WordArray} The processed data.\n\t *\n\t * @example\n\t *\n\t * var processedData = bufferedBlockAlgorithm._process();\n\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t */\n\t _process: function (doFlush) {\n\t var processedWords;\n\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var dataSigBytes = data.sigBytes;\n\t var blockSize = this.blockSize;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count blocks ready\n\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t if (doFlush) {\n\t // Round up to include partial blocks\n\t nBlocksReady = Math.ceil(nBlocksReady);\n\t } else {\n\t // Round down to include only full blocks,\n\t // less the number of blocks that must remain in the buffer\n\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t }\n\n\t // Count words ready\n\t var nWordsReady = nBlocksReady * blockSize;\n\n\t // Count bytes ready\n\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t // Process blocks\n\t if (nWordsReady) {\n\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t // Perform concrete-algorithm logic\n\t this._doProcessBlock(dataWords, offset);\n\t }\n\n\t // Remove processed words\n\t processedWords = dataWords.splice(0, nWordsReady);\n\t data.sigBytes -= nBytesReady;\n\t }\n\n\t // Return processed words\n\t return new WordArray.init(processedWords, nBytesReady);\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = bufferedBlockAlgorithm.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone._data = this._data.clone();\n\n\t return clone;\n\t },\n\n\t _minBufferSize: 0\n\t });\n\n\t /**\n\t * Abstract hasher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t */\n\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Initializes a newly created hasher.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t *\n\t * @example\n\t *\n\t * var hasher = CryptoJS.algo.SHA256.create();\n\t */\n\t init: function (cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this hasher to its initial state.\n\t *\n\t * @example\n\t *\n\t * hasher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-hasher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Updates this hasher with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {Hasher} This hasher.\n\t *\n\t * @example\n\t *\n\t * hasher.update('message');\n\t * hasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t // Append\n\t this._append(messageUpdate);\n\n\t // Update the hash\n\t this._process();\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the hash computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @example\n\t *\n\t * var hash = hasher.finalize();\n\t * var hash = hasher.finalize('message');\n\t * var hash = hasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Final message update\n\t if (messageUpdate) {\n\t this._append(messageUpdate);\n\t }\n\n\t // Perform concrete-hasher logic\n\t var hash = this._doFinalize();\n\n\t return hash;\n\t },\n\n\t blockSize: 512/32,\n\n\t /**\n\t * Creates a shortcut function to a hasher's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to create a helper for.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHelper: function (hasher) {\n\t return function (message, cfg) {\n\t return new hasher.init(cfg).finalize(message);\n\t };\n\t },\n\n\t /**\n\t * Creates a shortcut function to the HMAC's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHmacHelper: function (hasher) {\n\t return function (message, key) {\n\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t };\n\t }\n\t });\n\n\t /**\n\t * Algorithm namespace.\n\t */\n\t var C_algo = C.algo = {};\n\n\t return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Zero padding strategy.\n\t */\n\tCryptoJS.pad.ZeroPadding = {\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Pad\n\t data.clamp();\n\t data.sigBytes += blockSizeBytes - ((data.sigBytes % blockSizeBytes) || blockSizeBytes);\n\t },\n\n\t unpad: function (data) {\n\t // Shortcut\n\t var dataWords = data.words;\n\n\t // Unpad\n\t var i = data.sigBytes - 1;\n\t for (var i = data.sigBytes - 1; i >= 0; i--) {\n\t if (((dataWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff)) {\n\t data.sigBytes = i + 1;\n\t break;\n\t }\n\t }\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.ZeroPadding;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var MD5 = C_algo.MD5;\n\n\t /**\n\t * This key derivation function is meant to conform with EVP_BytesToKey.\n\t * www.openssl.org/docs/crypto/EVP_BytesToKey.html\n\t */\n\t var EvpKDF = C_algo.EvpKDF = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hash algorithm to use. Default: MD5\n\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: MD5,\n\t iterations: 1\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.EvpKDF.create();\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t var block;\n\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init hasher\n\t var hasher = cfg.hasher.create();\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t if (block) {\n\t hasher.update(block);\n\t }\n\t block = hasher.update(password).finalize(salt);\n\t hasher.reset();\n\n\t // Iterations\n\t for (var i = 1; i < iterations; i++) {\n\t block = hasher.finalize(block);\n\t hasher.reset();\n\t }\n\n\t derivedKey.concat(block);\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.EvpKDF(password, salt);\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.EvpKDF = function (password, salt, cfg) {\n\t return EvpKDF.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.EvpKDF;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var X32WordArray = C_lib.WordArray;\n\n\t /**\n\t * x64 namespace.\n\t */\n\t var C_x64 = C.x64 = {};\n\n\t /**\n\t * A 64-bit word.\n\t */\n\t var X64Word = C_x64.Word = Base.extend({\n\t /**\n\t * Initializes a newly created 64-bit word.\n\t *\n\t * @param {number} high The high 32 bits.\n\t * @param {number} low The low 32 bits.\n\t *\n\t * @example\n\t *\n\t * var x64Word = CryptoJS.x64.Word.create(0x00010203, 0x04050607);\n\t */\n\t init: function (high, low) {\n\t this.high = high;\n\t this.low = low;\n\t }\n\n\t /**\n\t * Bitwise NOTs this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after negating.\n\t *\n\t * @example\n\t *\n\t * var negated = x64Word.not();\n\t */\n\t // not: function () {\n\t // var high = ~this.high;\n\t // var low = ~this.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise ANDs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to AND with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after ANDing.\n\t *\n\t * @example\n\t *\n\t * var anded = x64Word.and(anotherX64Word);\n\t */\n\t // and: function (word) {\n\t // var high = this.high & word.high;\n\t // var low = this.low & word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise ORs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to OR with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after ORing.\n\t *\n\t * @example\n\t *\n\t * var ored = x64Word.or(anotherX64Word);\n\t */\n\t // or: function (word) {\n\t // var high = this.high | word.high;\n\t // var low = this.low | word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise XORs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to XOR with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after XORing.\n\t *\n\t * @example\n\t *\n\t * var xored = x64Word.xor(anotherX64Word);\n\t */\n\t // xor: function (word) {\n\t // var high = this.high ^ word.high;\n\t // var low = this.low ^ word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Shifts this word n bits to the left.\n\t *\n\t * @param {number} n The number of bits to shift.\n\t *\n\t * @return {X64Word} A new x64-Word object after shifting.\n\t *\n\t * @example\n\t *\n\t * var shifted = x64Word.shiftL(25);\n\t */\n\t // shiftL: function (n) {\n\t // if (n < 32) {\n\t // var high = (this.high << n) | (this.low >>> (32 - n));\n\t // var low = this.low << n;\n\t // } else {\n\t // var high = this.low << (n - 32);\n\t // var low = 0;\n\t // }\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Shifts this word n bits to the right.\n\t *\n\t * @param {number} n The number of bits to shift.\n\t *\n\t * @return {X64Word} A new x64-Word object after shifting.\n\t *\n\t * @example\n\t *\n\t * var shifted = x64Word.shiftR(7);\n\t */\n\t // shiftR: function (n) {\n\t // if (n < 32) {\n\t // var low = (this.low >>> n) | (this.high << (32 - n));\n\t // var high = this.high >>> n;\n\t // } else {\n\t // var low = this.high >>> (n - 32);\n\t // var high = 0;\n\t // }\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Rotates this word n bits to the left.\n\t *\n\t * @param {number} n The number of bits to rotate.\n\t *\n\t * @return {X64Word} A new x64-Word object after rotating.\n\t *\n\t * @example\n\t *\n\t * var rotated = x64Word.rotL(25);\n\t */\n\t // rotL: function (n) {\n\t // return this.shiftL(n).or(this.shiftR(64 - n));\n\t // },\n\n\t /**\n\t * Rotates this word n bits to the right.\n\t *\n\t * @param {number} n The number of bits to rotate.\n\t *\n\t * @return {X64Word} A new x64-Word object after rotating.\n\t *\n\t * @example\n\t *\n\t * var rotated = x64Word.rotR(7);\n\t */\n\t // rotR: function (n) {\n\t // return this.shiftR(n).or(this.shiftL(64 - n));\n\t // },\n\n\t /**\n\t * Adds this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to add with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after adding.\n\t *\n\t * @example\n\t *\n\t * var added = x64Word.add(anotherX64Word);\n\t */\n\t // add: function (word) {\n\t // var low = (this.low + word.low) | 0;\n\t // var carry = (low >>> 0) < (this.low >>> 0) ? 1 : 0;\n\t // var high = (this.high + word.high + carry) | 0;\n\n\t // return X64Word.create(high, low);\n\t // }\n\t });\n\n\t /**\n\t * An array of 64-bit words.\n\t *\n\t * @property {Array} words The array of CryptoJS.x64.Word objects.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var X64WordArray = C_x64.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of CryptoJS.x64.Word objects.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create();\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create([\n\t * CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n\t * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n\t * ]);\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create([\n\t * CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n\t * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n\t * ], 10);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 8;\n\t }\n\t },\n\n\t /**\n\t * Converts this 64-bit word array to a 32-bit word array.\n\t *\n\t * @return {CryptoJS.lib.WordArray} This word array's data as a 32-bit word array.\n\t *\n\t * @example\n\t *\n\t * var x32WordArray = x64WordArray.toX32();\n\t */\n\t toX32: function () {\n\t // Shortcuts\n\t var x64Words = this.words;\n\t var x64WordsLength = x64Words.length;\n\n\t // Convert\n\t var x32Words = [];\n\t for (var i = 0; i < x64WordsLength; i++) {\n\t var x64Word = x64Words[i];\n\t x32Words.push(x64Word.high);\n\t x32Words.push(x64Word.low);\n\t }\n\n\t return X32WordArray.create(x32Words, this.sigBytes);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {X64WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = x64WordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\n\t // Clone \"words\" array\n\t var words = clone.words = this.words.slice(0);\n\n\t // Clone each X64Word object\n\t var wordsLength = words.length;\n\t for (var i = 0; i < wordsLength; i++) {\n\t words[i] = words[i].clone();\n\t }\n\n\t return clone;\n\t }\n\t });\n\t}());\n\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"), require(\"./lib-typedarrays\"), require(\"./enc-utf16\"), require(\"./enc-base64\"), require(\"./enc-base64url\"), require(\"./md5\"), require(\"./sha1\"), require(\"./sha256\"), require(\"./sha224\"), require(\"./sha512\"), require(\"./sha384\"), require(\"./sha3\"), require(\"./ripemd160\"), require(\"./hmac\"), require(\"./pbkdf2\"), require(\"./evpkdf\"), require(\"./cipher-core\"), require(\"./mode-cfb\"), require(\"./mode-ctr\"), require(\"./mode-ctr-gladman\"), require(\"./mode-ofb\"), require(\"./mode-ecb\"), require(\"./pad-ansix923\"), require(\"./pad-iso10126\"), require(\"./pad-iso97971\"), require(\"./pad-zeropadding\"), require(\"./pad-nopadding\"), require(\"./format-hex\"), require(\"./aes\"), require(\"./tripledes\"), require(\"./rc4\"), require(\"./rabbit\"), require(\"./rabbit-legacy\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\", \"./lib-typedarrays\", \"./enc-utf16\", \"./enc-base64\", \"./enc-base64url\", \"./md5\", \"./sha1\", \"./sha256\", \"./sha224\", \"./sha512\", \"./sha384\", \"./sha3\", \"./ripemd160\", \"./hmac\", \"./pbkdf2\", \"./evpkdf\", \"./cipher-core\", \"./mode-cfb\", \"./mode-ctr\", \"./mode-ctr-gladman\", \"./mode-ofb\", \"./mode-ecb\", \"./pad-ansix923\", \"./pad-iso10126\", \"./pad-iso97971\", \"./pad-zeropadding\", \"./pad-nopadding\", \"./format-hex\", \"./aes\", \"./tripledes\", \"./rc4\", \"./rabbit\", \"./rabbit-legacy\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./evpkdf\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./evpkdf\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher core components.\n\t */\n\tCryptoJS.lib.Cipher || (function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var Base64 = C_enc.Base64;\n\t var C_algo = C.algo;\n\t var EvpKDF = C_algo.EvpKDF;\n\n\t /**\n\t * Abstract base cipher template.\n\t *\n\t * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\n\t * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\n\t * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\n\t * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\n\t */\n\t var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {WordArray} iv The IV to use for this operation.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Creates this cipher in encryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createEncryptor: function (key, cfg) {\n\t return this.create(this._ENC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Creates this cipher in decryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createDecryptor: function (key, cfg) {\n\t return this.create(this._DEC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Initializes a newly created cipher.\n\t *\n\t * @param {number} xformMode Either the encryption or decryption transormation mode constant.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\n\t */\n\t init: function (xformMode, key, cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Store transform mode and key\n\t this._xformMode = xformMode;\n\t this._key = key;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this cipher to its initial state.\n\t *\n\t * @example\n\t *\n\t * cipher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-cipher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Adds data to be encrypted or decrypted.\n\t *\n\t * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.process('data');\n\t * var encrypted = cipher.process(wordArray);\n\t */\n\t process: function (dataUpdate) {\n\t // Append\n\t this._append(dataUpdate);\n\n\t // Process available blocks\n\t return this._process();\n\t },\n\n\t /**\n\t * Finalizes the encryption or decryption process.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after final processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.finalize();\n\t * var encrypted = cipher.finalize('data');\n\t * var encrypted = cipher.finalize(wordArray);\n\t */\n\t finalize: function (dataUpdate) {\n\t // Final data update\n\t if (dataUpdate) {\n\t this._append(dataUpdate);\n\t }\n\n\t // Perform concrete-cipher logic\n\t var finalProcessedData = this._doFinalize();\n\n\t return finalProcessedData;\n\t },\n\n\t keySize: 128/32,\n\n\t ivSize: 128/32,\n\n\t _ENC_XFORM_MODE: 1,\n\n\t _DEC_XFORM_MODE: 2,\n\n\t /**\n\t * Creates shortcut functions to a cipher's object interface.\n\t *\n\t * @param {Cipher} cipher The cipher to create a helper for.\n\t *\n\t * @return {Object} An object with encrypt and decrypt shortcut functions.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\n\t */\n\t _createHelper: (function () {\n\t function selectCipherStrategy(key) {\n\t if (typeof key == 'string') {\n\t return PasswordBasedCipher;\n\t } else {\n\t return SerializableCipher;\n\t }\n\t }\n\n\t return function (cipher) {\n\t return {\n\t encrypt: function (message, key, cfg) {\n\t return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);\n\t },\n\n\t decrypt: function (ciphertext, key, cfg) {\n\t return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);\n\t }\n\t };\n\t };\n\t }())\n\t });\n\n\t /**\n\t * Abstract base stream cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\n\t */\n\t var StreamCipher = C_lib.StreamCipher = Cipher.extend({\n\t _doFinalize: function () {\n\t // Process partial blocks\n\t var finalProcessedBlocks = this._process(!!'flush');\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 1\n\t });\n\n\t /**\n\t * Mode namespace.\n\t */\n\t var C_mode = C.mode = {};\n\n\t /**\n\t * Abstract base block cipher mode template.\n\t */\n\t var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({\n\t /**\n\t * Creates this mode for encryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\n\t */\n\t createEncryptor: function (cipher, iv) {\n\t return this.Encryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Creates this mode for decryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\n\t */\n\t createDecryptor: function (cipher, iv) {\n\t return this.Decryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Initializes a newly created mode.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\n\t */\n\t init: function (cipher, iv) {\n\t this._cipher = cipher;\n\t this._iv = iv;\n\t }\n\t });\n\n\t /**\n\t * Cipher Block Chaining mode.\n\t */\n\t var CBC = C_mode.CBC = (function () {\n\t /**\n\t * Abstract base CBC mode.\n\t */\n\t var CBC = BlockCipherMode.extend();\n\n\t /**\n\t * CBC encryptor.\n\t */\n\t CBC.Encryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // XOR and encrypt\n\t xorBlock.call(this, words, offset, blockSize);\n\t cipher.encryptBlock(words, offset);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t /**\n\t * CBC decryptor.\n\t */\n\t CBC.Decryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t // Decrypt and XOR\n\t cipher.decryptBlock(words, offset);\n\t xorBlock.call(this, words, offset, blockSize);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function xorBlock(words, offset, blockSize) {\n\t var block;\n\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Choose mixing block\n\t if (iv) {\n\t block = iv;\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t block = this._prevBlock;\n\t }\n\n\t // XOR blocks\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= block[i];\n\t }\n\t }\n\n\t return CBC;\n\t }());\n\n\t /**\n\t * Padding namespace.\n\t */\n\t var C_pad = C.pad = {};\n\n\t /**\n\t * PKCS #5/7 padding strategy.\n\t */\n\t var Pkcs7 = C_pad.Pkcs7 = {\n\t /**\n\t * Pads data using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to pad.\n\t * @param {number} blockSize The multiple that the data should be padded to.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.pad(wordArray, 4);\n\t */\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Create padding word\n\t var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;\n\n\t // Create padding\n\t var paddingWords = [];\n\t for (var i = 0; i < nPaddingBytes; i += 4) {\n\t paddingWords.push(paddingWord);\n\t }\n\t var padding = WordArray.create(paddingWords, nPaddingBytes);\n\n\t // Add padding\n\t data.concat(padding);\n\t },\n\n\t /**\n\t * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to unpad.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.unpad(wordArray);\n\t */\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t };\n\n\t /**\n\t * Abstract base block cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\n\t */\n\t var BlockCipher = C_lib.BlockCipher = Cipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Mode} mode The block mode to use. Default: CBC\n\t * @property {Padding} padding The padding strategy to use. Default: Pkcs7\n\t */\n\t cfg: Cipher.cfg.extend({\n\t mode: CBC,\n\t padding: Pkcs7\n\t }),\n\n\t reset: function () {\n\t var modeCreator;\n\n\t // Reset cipher\n\t Cipher.reset.call(this);\n\n\t // Shortcuts\n\t var cfg = this.cfg;\n\t var iv = cfg.iv;\n\t var mode = cfg.mode;\n\n\t // Reset block mode\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t modeCreator = mode.createEncryptor;\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t modeCreator = mode.createDecryptor;\n\t // Keep at least one block in the buffer for unpadding\n\t this._minBufferSize = 1;\n\t }\n\n\t if (this._mode && this._mode.__creator == modeCreator) {\n\t this._mode.init(this, iv && iv.words);\n\t } else {\n\t this._mode = modeCreator.call(mode, this, iv && iv.words);\n\t this._mode.__creator = modeCreator;\n\t }\n\t },\n\n\t _doProcessBlock: function (words, offset) {\n\t this._mode.processBlock(words, offset);\n\t },\n\n\t _doFinalize: function () {\n\t var finalProcessedBlocks;\n\n\t // Shortcut\n\t var padding = this.cfg.padding;\n\n\t // Finalize\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t // Pad data\n\t padding.pad(this._data, this.blockSize);\n\n\t // Process final blocks\n\t finalProcessedBlocks = this._process(!!'flush');\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t // Process final blocks\n\t finalProcessedBlocks = this._process(!!'flush');\n\n\t // Unpad data\n\t padding.unpad(finalProcessedBlocks);\n\t }\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 128/32\n\t });\n\n\t /**\n\t * A collection of cipher parameters.\n\t *\n\t * @property {WordArray} ciphertext The raw ciphertext.\n\t * @property {WordArray} key The key to this ciphertext.\n\t * @property {WordArray} iv The IV used in the ciphering operation.\n\t * @property {WordArray} salt The salt used with a key derivation function.\n\t * @property {Cipher} algorithm The cipher algorithm.\n\t * @property {Mode} mode The block mode used in the ciphering operation.\n\t * @property {Padding} padding The padding scheme used in the ciphering operation.\n\t * @property {number} blockSize The block size of the cipher.\n\t * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.\n\t */\n\t var CipherParams = C_lib.CipherParams = Base.extend({\n\t /**\n\t * Initializes a newly created cipher params object.\n\t *\n\t * @param {Object} cipherParams An object with any of the possible cipher parameters.\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.lib.CipherParams.create({\n\t * ciphertext: ciphertextWordArray,\n\t * key: keyWordArray,\n\t * iv: ivWordArray,\n\t * salt: saltWordArray,\n\t * algorithm: CryptoJS.algo.AES,\n\t * mode: CryptoJS.mode.CBC,\n\t * padding: CryptoJS.pad.PKCS7,\n\t * blockSize: 4,\n\t * formatter: CryptoJS.format.OpenSSL\n\t * });\n\t */\n\t init: function (cipherParams) {\n\t this.mixIn(cipherParams);\n\t },\n\n\t /**\n\t * Converts this cipher params object to a string.\n\t *\n\t * @param {Format} formatter (Optional) The formatting strategy to use.\n\t *\n\t * @return {string} The stringified cipher params.\n\t *\n\t * @throws Error If neither the formatter nor the default formatter is set.\n\t *\n\t * @example\n\t *\n\t * var string = cipherParams + '';\n\t * var string = cipherParams.toString();\n\t * var string = cipherParams.toString(CryptoJS.format.OpenSSL);\n\t */\n\t toString: function (formatter) {\n\t return (formatter || this.formatter).stringify(this);\n\t }\n\t });\n\n\t /**\n\t * Format namespace.\n\t */\n\t var C_format = C.format = {};\n\n\t /**\n\t * OpenSSL formatting strategy.\n\t */\n\t var OpenSSLFormatter = C_format.OpenSSL = {\n\t /**\n\t * Converts a cipher params object to an OpenSSL-compatible string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The OpenSSL-compatible string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t var wordArray;\n\n\t // Shortcuts\n\t var ciphertext = cipherParams.ciphertext;\n\t var salt = cipherParams.salt;\n\n\t // Format\n\t if (salt) {\n\t wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\n\t } else {\n\t wordArray = ciphertext;\n\t }\n\n\t return wordArray.toString(Base64);\n\t },\n\n\t /**\n\t * Converts an OpenSSL-compatible string to a cipher params object.\n\t *\n\t * @param {string} openSSLStr The OpenSSL-compatible string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\n\t */\n\t parse: function (openSSLStr) {\n\t var salt;\n\n\t // Parse base64\n\t var ciphertext = Base64.parse(openSSLStr);\n\n\t // Shortcut\n\t var ciphertextWords = ciphertext.words;\n\n\t // Test for salt\n\t if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {\n\t // Extract salt\n\t salt = WordArray.create(ciphertextWords.slice(2, 4));\n\n\t // Remove salt from ciphertext\n\t ciphertextWords.splice(0, 4);\n\t ciphertext.sigBytes -= 16;\n\t }\n\n\t return CipherParams.create({ ciphertext: ciphertext, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A cipher wrapper that returns ciphertext as a serializable cipher params object.\n\t */\n\t var SerializableCipher = C_lib.SerializableCipher = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL\n\t */\n\t cfg: Base.extend({\n\t format: OpenSSLFormatter\n\t }),\n\n\t /**\n\t * Encrypts a message.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Encrypt\n\t var encryptor = cipher.createEncryptor(key, cfg);\n\t var ciphertext = encryptor.finalize(message);\n\n\t // Shortcut\n\t var cipherCfg = encryptor.cfg;\n\n\t // Create and return serializable cipher params\n\t return CipherParams.create({\n\t ciphertext: ciphertext,\n\t key: key,\n\t iv: cipherCfg.iv,\n\t algorithm: cipher,\n\t mode: cipherCfg.mode,\n\t padding: cipherCfg.padding,\n\t blockSize: cipher.blockSize,\n\t formatter: cfg.format\n\t });\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Decrypt\n\t var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\n\n\t return plaintext;\n\t },\n\n\t /**\n\t * Converts serialized ciphertext to CipherParams,\n\t * else assumed CipherParams already and returns ciphertext unchanged.\n\t *\n\t * @param {CipherParams|string} ciphertext The ciphertext.\n\t * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\n\t *\n\t * @return {CipherParams} The unserialized ciphertext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\n\t */\n\t _parse: function (ciphertext, format) {\n\t if (typeof ciphertext == 'string') {\n\t return format.parse(ciphertext, this);\n\t } else {\n\t return ciphertext;\n\t }\n\t }\n\t });\n\n\t /**\n\t * Key derivation function namespace.\n\t */\n\t var C_kdf = C.kdf = {};\n\n\t /**\n\t * OpenSSL key derivation function.\n\t */\n\t var OpenSSLKdf = C_kdf.OpenSSL = {\n\t /**\n\t * Derives a key and IV from a password.\n\t *\n\t * @param {string} password The password to derive from.\n\t * @param {number} keySize The size in words of the key to generate.\n\t * @param {number} ivSize The size in words of the IV to generate.\n\t * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\n\t *\n\t * @return {CipherParams} A cipher params object with the key, IV, and salt.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\n\t */\n\t execute: function (password, keySize, ivSize, salt) {\n\t // Generate random salt\n\t if (!salt) {\n\t salt = WordArray.random(64/8);\n\t }\n\n\t // Derive key and IV\n\t var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);\n\n\t // Separate key and IV\n\t var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\n\t key.sigBytes = keySize * 4;\n\n\t // Return params\n\t return CipherParams.create({ key: key, iv: iv, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A serializable cipher wrapper that derives the key from a password,\n\t * and returns ciphertext as a serializable cipher params object.\n\t */\n\t var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL\n\t */\n\t cfg: SerializableCipher.cfg.extend({\n\t kdf: OpenSSLKdf\n\t }),\n\n\t /**\n\t * Encrypts a message using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Encrypt\n\t var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);\n\n\t // Mix in derived params\n\t ciphertext.mixIn(derivedParams);\n\n\t return ciphertext;\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Decrypt\n\t var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);\n\n\t return plaintext;\n\t }\n\t });\n\t}());\n\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t // Reusable objects\n\t var S = [];\n\t var C_ = [];\n\t var G = [];\n\n\t /**\n\t * Rabbit stream cipher algorithm.\n\t *\n\t * This is a legacy version that neglected to convert the key to little-endian.\n\t * This error doesn't affect the cipher's security,\n\t * but it does affect its compatibility with other implementations.\n\t */\n\t var RabbitLegacy = C_algo.RabbitLegacy = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var K = this._key.words;\n\t var iv = this.cfg.iv;\n\n\t // Generate initial state values\n\t var X = this._X = [\n\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t ];\n\n\t // Generate initial counter values\n\t var C = this._C = [\n\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t ];\n\n\t // Carry bit\n\t this._b = 0;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\n\t // Modify the counters\n\t for (var i = 0; i < 8; i++) {\n\t C[i] ^= X[(i + 4) & 7];\n\t }\n\n\t // IV setup\n\t if (iv) {\n\t // Shortcuts\n\t var IV = iv.words;\n\t var IV_0 = IV[0];\n\t var IV_1 = IV[1];\n\n\t // Generate four subvectors\n\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\n\t // Modify counter values\n\t C[0] ^= i0;\n\t C[1] ^= i1;\n\t C[2] ^= i2;\n\t C[3] ^= i3;\n\t C[4] ^= i0;\n\t C[5] ^= i1;\n\t C[6] ^= i2;\n\t C[7] ^= i3;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\t }\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var X = this._X;\n\n\t // Iterate the system\n\t nextState.call(this);\n\n\t // Generate four keystream words\n\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t for (var i = 0; i < 4; i++) {\n\t // Swap endian\n\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\n\t // Encrypt\n\t M[offset + i] ^= S[i];\n\t }\n\t },\n\n\t blockSize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t function nextState() {\n\t // Shortcuts\n\t var X = this._X;\n\t var C = this._C;\n\n\t // Save old counter values\n\t for (var i = 0; i < 8; i++) {\n\t C_[i] = C[i];\n\t }\n\n\t // Calculate new counter values\n\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t // Calculate the g-values\n\t for (var i = 0; i < 8; i++) {\n\t var gx = X[i] + C[i];\n\n\t // Construct high and low argument for squaring\n\t var ga = gx & 0xffff;\n\t var gb = gx >>> 16;\n\n\t // Calculate high and low result of squaring\n\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t // High XOR low\n\t G[i] = gh ^ gl;\n\t }\n\n\t // Calculate new state values\n\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RabbitLegacy.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RabbitLegacy.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RabbitLegacy = StreamCipher._createHelper(RabbitLegacy);\n\t}());\n\n\n\treturn CryptoJS.RabbitLegacy;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Output Feedback block mode.\n\t */\n\tCryptoJS.mode.OFB = (function () {\n\t var OFB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t var Encryptor = OFB.Encryptor = OFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var keystream = this._keystream;\n\n\t // Generate keystream\n\t if (iv) {\n\t keystream = this._keystream = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t OFB.Decryptor = Encryptor;\n\n\t return OFB;\n\t}());\n\n\n\treturn CryptoJS.mode.OFB;\n\n}));","/* eslint-disable */\r\nimport CryptoJS from \"crypto-js\"\r\n\r\nlet SM2Utils = {}\r\n\r\nfunction SM2Cipher(a) {\r\n this.ct = 1;\r\n this.sm3c3 = this.sm3keybase = this.p2 = null;\r\n this.key = Array(32);\r\n this.keyOff = 0;\r\n this.cipherMode = \"undefined\" != typeof a ? a : SM2CipherMode.C1C3C2\r\n}\r\n(function (global, undefined) {\r\n \"use strict\";\r\n var SM2CipherMode = {\r\n C1C2C3: \"0\",\r\n C1C3C2: \"1\"\r\n };\r\n (function () {\r\n function a(a, c) {\r\n var b = (this._lBlock >>> a ^ this._rBlock) & c;\r\n this._rBlock ^= b;\r\n this._lBlock ^= b << a\r\n }\r\n\r\n function b(a, c) {\r\n var b = (this._rBlock >>> a ^ this._lBlock) & c;\r\n this._lBlock ^= b;\r\n this._rBlock ^= b << a\r\n }\r\n var c = CryptoJS,\r\n d = c.lib,\r\n e = d.WordArray,\r\n d = d.BlockCipher,\r\n f = c.algo,\r\n g = [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4],\r\n h = [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32],\r\n k = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28],\r\n l = [{\r\n 0: 8421888,\r\n 268435456: 32768,\r\n 536870912: 8421378,\r\n 805306368: 2,\r\n 1073741824: 512,\r\n 1342177280: 8421890,\r\n 1610612736: 8389122,\r\n 1879048192: 8388608,\r\n 2147483648: 514,\r\n 2415919104: 8389120,\r\n 2684354560: 33280,\r\n 2952790016: 8421376,\r\n 3221225472: 32770,\r\n 3489660928: 8388610,\r\n 3758096384: 0,\r\n 4026531840: 33282,\r\n 134217728: 0,\r\n 402653184: 8421890,\r\n 671088640: 33282,\r\n 939524096: 32768,\r\n 1207959552: 8421888,\r\n 1476395008: 512,\r\n 1744830464: 8421378,\r\n 2013265920: 2,\r\n 2281701376: 8389120,\r\n 2550136832: 33280,\r\n 2818572288: 8421376,\r\n 3087007744: 8389122,\r\n 3355443200: 8388610,\r\n 3623878656: 32770,\r\n 3892314112: 514,\r\n 4160749568: 8388608,\r\n 1: 32768,\r\n 268435457: 2,\r\n 536870913: 8421888,\r\n 805306369: 8388608,\r\n 1073741825: 8421378,\r\n 1342177281: 33280,\r\n 1610612737: 512,\r\n 1879048193: 8389122,\r\n 2147483649: 8421890,\r\n 2415919105: 8421376,\r\n 2684354561: 8388610,\r\n 2952790017: 33282,\r\n 3221225473: 514,\r\n 3489660929: 8389120,\r\n 3758096385: 32770,\r\n 4026531841: 0,\r\n 134217729: 8421890,\r\n 402653185: 8421376,\r\n 671088641: 8388608,\r\n 939524097: 512,\r\n 1207959553: 32768,\r\n 1476395009: 8388610,\r\n 1744830465: 2,\r\n 2013265921: 33282,\r\n 2281701377: 32770,\r\n 2550136833: 8389122,\r\n 2818572289: 514,\r\n 3087007745: 8421888,\r\n 3355443201: 8389120,\r\n 3623878657: 0,\r\n 3892314113: 33280,\r\n 4160749569: 8421378\r\n }, {\r\n 0: 1074282512,\r\n 16777216: 16384,\r\n 33554432: 524288,\r\n 50331648: 1074266128,\r\n 67108864: 1073741840,\r\n 83886080: 1074282496,\r\n 100663296: 1073758208,\r\n 117440512: 16,\r\n 134217728: 540672,\r\n 150994944: 1073758224,\r\n 167772160: 1073741824,\r\n 184549376: 540688,\r\n 201326592: 524304,\r\n 218103808: 0,\r\n 234881024: 16400,\r\n 251658240: 1074266112,\r\n 8388608: 1073758208,\r\n 25165824: 540688,\r\n 41943040: 16,\r\n 58720256: 1073758224,\r\n 75497472: 1074282512,\r\n 92274688: 1073741824,\r\n 109051904: 524288,\r\n 125829120: 1074266128,\r\n 142606336: 524304,\r\n 159383552: 0,\r\n 176160768: 16384,\r\n 192937984: 1074266112,\r\n 209715200: 1073741840,\r\n 226492416: 540672,\r\n 243269632: 1074282496,\r\n 260046848: 16400,\r\n 268435456: 0,\r\n 285212672: 1074266128,\r\n 301989888: 1073758224,\r\n 318767104: 1074282496,\r\n 335544320: 1074266112,\r\n 352321536: 16,\r\n 369098752: 540688,\r\n 385875968: 16384,\r\n 402653184: 16400,\r\n 419430400: 524288,\r\n 436207616: 524304,\r\n 452984832: 1073741840,\r\n 469762048: 540672,\r\n 486539264: 1073758208,\r\n 503316480: 1073741824,\r\n 520093696: 1074282512,\r\n 276824064: 540688,\r\n 293601280: 524288,\r\n 310378496: 1074266112,\r\n 327155712: 16384,\r\n 343932928: 1073758208,\r\n 360710144: 1074282512,\r\n 377487360: 16,\r\n 394264576: 1073741824,\r\n 411041792: 1074282496,\r\n 427819008: 1073741840,\r\n 444596224: 1073758224,\r\n 461373440: 524304,\r\n 478150656: 0,\r\n 494927872: 16400,\r\n 511705088: 1074266128,\r\n 528482304: 540672\r\n }, {\r\n 0: 260,\r\n 1048576: 0,\r\n 2097152: 67109120,\r\n 3145728: 65796,\r\n 4194304: 65540,\r\n 5242880: 67108868,\r\n 6291456: 67174660,\r\n 7340032: 67174400,\r\n 8388608: 67108864,\r\n 9437184: 67174656,\r\n 10485760: 65792,\r\n 11534336: 67174404,\r\n 12582912: 67109124,\r\n 13631488: 65536,\r\n 14680064: 4,\r\n 15728640: 256,\r\n 524288: 67174656,\r\n 1572864: 67174404,\r\n 2621440: 0,\r\n 3670016: 67109120,\r\n 4718592: 67108868,\r\n 5767168: 65536,\r\n 6815744: 65540,\r\n 7864320: 260,\r\n 8912896: 4,\r\n 9961472: 256,\r\n 11010048: 67174400,\r\n 12058624: 65796,\r\n 13107200: 65792,\r\n 14155776: 67109124,\r\n 15204352: 67174660,\r\n 16252928: 67108864,\r\n 16777216: 67174656,\r\n 17825792: 65540,\r\n 18874368: 65536,\r\n 19922944: 67109120,\r\n 20971520: 256,\r\n 22020096: 67174660,\r\n 23068672: 67108868,\r\n 24117248: 0,\r\n 25165824: 67109124,\r\n 26214400: 67108864,\r\n 27262976: 4,\r\n 28311552: 65792,\r\n 29360128: 67174400,\r\n 30408704: 260,\r\n 31457280: 65796,\r\n 32505856: 67174404,\r\n 17301504: 67108864,\r\n 18350080: 260,\r\n 19398656: 67174656,\r\n 20447232: 0,\r\n 21495808: 65540,\r\n 22544384: 67109120,\r\n 23592960: 256,\r\n 24641536: 67174404,\r\n 25690112: 65536,\r\n 26738688: 67174660,\r\n 27787264: 65796,\r\n 28835840: 67108868,\r\n 29884416: 67109124,\r\n 30932992: 67174400,\r\n 31981568: 4,\r\n 33030144: 65792\r\n }, {\r\n 0: 2151682048,\r\n 65536: 2147487808,\r\n 131072: 4198464,\r\n 196608: 2151677952,\r\n 262144: 0,\r\n 327680: 4198400,\r\n 393216: 2147483712,\r\n 458752: 4194368,\r\n 524288: 2147483648,\r\n 589824: 4194304,\r\n 655360: 64,\r\n 720896: 2147487744,\r\n 786432: 2151678016,\r\n 851968: 4160,\r\n 917504: 4096,\r\n 983040: 2151682112,\r\n 32768: 2147487808,\r\n 98304: 64,\r\n 163840: 2151678016,\r\n 229376: 2147487744,\r\n 294912: 4198400,\r\n 360448: 2151682112,\r\n 425984: 0,\r\n 491520: 2151677952,\r\n 557056: 4096,\r\n 622592: 2151682048,\r\n 688128: 4194304,\r\n 753664: 4160,\r\n 819200: 2147483648,\r\n 884736: 4194368,\r\n 950272: 4198464,\r\n 1015808: 2147483712,\r\n 1048576: 4194368,\r\n 1114112: 4198400,\r\n 1179648: 2147483712,\r\n 1245184: 0,\r\n 1310720: 4160,\r\n 1376256: 2151678016,\r\n 1441792: 2151682048,\r\n 1507328: 2147487808,\r\n 1572864: 2151682112,\r\n 1638400: 2147483648,\r\n 1703936: 2151677952,\r\n 1769472: 4198464,\r\n 1835008: 2147487744,\r\n 1900544: 4194304,\r\n 1966080: 64,\r\n 2031616: 4096,\r\n 1081344: 2151677952,\r\n 1146880: 2151682112,\r\n 1212416: 0,\r\n 1277952: 4198400,\r\n 1343488: 4194368,\r\n 1409024: 2147483648,\r\n 1474560: 2147487808,\r\n 1540096: 64,\r\n 1605632: 2147483712,\r\n 1671168: 4096,\r\n 1736704: 2147487744,\r\n 1802240: 2151678016,\r\n 1867776: 4160,\r\n 1933312: 2151682048,\r\n 1998848: 4194304,\r\n 2064384: 4198464\r\n }, {\r\n 0: 128,\r\n 4096: 17039360,\r\n 8192: 262144,\r\n 12288: 536870912,\r\n 16384: 537133184,\r\n 20480: 16777344,\r\n 24576: 553648256,\r\n 28672: 262272,\r\n 32768: 16777216,\r\n 36864: 537133056,\r\n 40960: 536871040,\r\n 45056: 553910400,\r\n 49152: 553910272,\r\n 53248: 0,\r\n 57344: 17039488,\r\n 61440: 553648128,\r\n 2048: 17039488,\r\n 6144: 553648256,\r\n 10240: 128,\r\n 14336: 17039360,\r\n 18432: 262144,\r\n 22528: 537133184,\r\n 26624: 553910272,\r\n 30720: 536870912,\r\n 34816: 537133056,\r\n 38912: 0,\r\n 43008: 553910400,\r\n 47104: 16777344,\r\n 51200: 536871040,\r\n 55296: 553648128,\r\n 59392: 16777216,\r\n 63488: 262272,\r\n 65536: 262144,\r\n 69632: 128,\r\n 73728: 536870912,\r\n 77824: 553648256,\r\n 81920: 16777344,\r\n 86016: 553910272,\r\n 90112: 537133184,\r\n 94208: 16777216,\r\n 98304: 553910400,\r\n 102400: 553648128,\r\n 106496: 17039360,\r\n 110592: 537133056,\r\n 114688: 262272,\r\n 118784: 536871040,\r\n 122880: 0,\r\n 126976: 17039488,\r\n 67584: 553648256,\r\n 71680: 16777216,\r\n 75776: 17039360,\r\n 79872: 537133184,\r\n 83968: 536870912,\r\n 88064: 17039488,\r\n 92160: 128,\r\n 96256: 553910272,\r\n 100352: 262272,\r\n 104448: 553910400,\r\n 108544: 0,\r\n 112640: 553648128,\r\n 116736: 16777344,\r\n 120832: 262144,\r\n 124928: 537133056,\r\n 129024: 536871040\r\n }, {\r\n 0: 268435464,\r\n 256: 8192,\r\n 512: 270532608,\r\n 768: 270540808,\r\n 1024: 268443648,\r\n 1280: 2097152,\r\n 1536: 2097160,\r\n 1792: 268435456,\r\n 2048: 0,\r\n 2304: 268443656,\r\n 2560: 2105344,\r\n 2816: 8,\r\n 3072: 270532616,\r\n 3328: 2105352,\r\n 3584: 8200,\r\n 3840: 270540800,\r\n 128: 270532608,\r\n 384: 270540808,\r\n 640: 8,\r\n 896: 2097152,\r\n 1152: 2105352,\r\n 1408: 268435464,\r\n 1664: 268443648,\r\n 1920: 8200,\r\n 2176: 2097160,\r\n 2432: 8192,\r\n 2688: 268443656,\r\n 2944: 270532616,\r\n 3200: 0,\r\n 3456: 270540800,\r\n 3712: 2105344,\r\n 3968: 268435456,\r\n 4096: 268443648,\r\n 4352: 270532616,\r\n 4608: 270540808,\r\n 4864: 8200,\r\n 5120: 2097152,\r\n 5376: 268435456,\r\n 5632: 268435464,\r\n 5888: 2105344,\r\n 6144: 2105352,\r\n 6400: 0,\r\n 6656: 8,\r\n 6912: 270532608,\r\n 7168: 8192,\r\n 7424: 268443656,\r\n 7680: 270540800,\r\n 7936: 2097160,\r\n 4224: 8,\r\n 4480: 2105344,\r\n 4736: 2097152,\r\n 4992: 268435464,\r\n 5248: 268443648,\r\n 5504: 8200,\r\n 5760: 270540808,\r\n 6016: 270532608,\r\n 6272: 270540800,\r\n 6528: 270532616,\r\n 6784: 8192,\r\n 7040: 2105352,\r\n 7296: 2097160,\r\n 7552: 0,\r\n 7808: 268435456,\r\n 8064: 268443656\r\n }, {\r\n 0: 1048576,\r\n 16: 33555457,\r\n 32: 1024,\r\n 48: 1049601,\r\n 64: 34604033,\r\n 80: 0,\r\n 96: 1,\r\n 112: 34603009,\r\n 128: 33555456,\r\n 144: 1048577,\r\n 160: 33554433,\r\n 176: 34604032,\r\n 192: 34603008,\r\n 208: 1025,\r\n 224: 1049600,\r\n 240: 33554432,\r\n 8: 34603009,\r\n 24: 0,\r\n 40: 33555457,\r\n 56: 34604032,\r\n 72: 1048576,\r\n 88: 33554433,\r\n 104: 33554432,\r\n 120: 1025,\r\n 136: 1049601,\r\n 152: 33555456,\r\n 168: 34603008,\r\n 184: 1048577,\r\n 200: 1024,\r\n 216: 34604033,\r\n 232: 1,\r\n 248: 1049600,\r\n 256: 33554432,\r\n 272: 1048576,\r\n 288: 33555457,\r\n 304: 34603009,\r\n 320: 1048577,\r\n 336: 33555456,\r\n 352: 34604032,\r\n 368: 1049601,\r\n 384: 1025,\r\n 400: 34604033,\r\n 416: 1049600,\r\n 432: 1,\r\n 448: 0,\r\n 464: 34603008,\r\n 480: 33554433,\r\n 496: 1024,\r\n 264: 1049600,\r\n 280: 33555457,\r\n 296: 34603009,\r\n 312: 1,\r\n 328: 33554432,\r\n 344: 1048576,\r\n 360: 1025,\r\n 376: 34604032,\r\n 392: 33554433,\r\n 408: 34603008,\r\n 424: 0,\r\n 440: 34604033,\r\n 456: 1049601,\r\n 472: 1024,\r\n 488: 33555456,\r\n 504: 1048577\r\n }, {\r\n 0: 134219808,\r\n 1: 131072,\r\n 2: 134217728,\r\n 3: 32,\r\n 4: 131104,\r\n 5: 134350880,\r\n 6: 134350848,\r\n 7: 2048,\r\n 8: 134348800,\r\n 9: 134219776,\r\n 10: 133120,\r\n 11: 134348832,\r\n 12: 2080,\r\n 13: 0,\r\n 14: 134217760,\r\n 15: 133152,\r\n 2147483648: 2048,\r\n 2147483649: 134350880,\r\n 2147483650: 134219808,\r\n 2147483651: 134217728,\r\n 2147483652: 134348800,\r\n 2147483653: 133120,\r\n 2147483654: 133152,\r\n 2147483655: 32,\r\n 2147483656: 134217760,\r\n 2147483657: 2080,\r\n 2147483658: 131104,\r\n 2147483659: 134350848,\r\n 2147483660: 0,\r\n 2147483661: 134348832,\r\n 2147483662: 134219776,\r\n 2147483663: 131072,\r\n 16: 133152,\r\n 17: 134350848,\r\n 18: 32,\r\n 19: 2048,\r\n 20: 134219776,\r\n 21: 134217760,\r\n 22: 134348832,\r\n 23: 131072,\r\n 24: 0,\r\n 25: 131104,\r\n 26: 134348800,\r\n 27: 134219808,\r\n 28: 134350880,\r\n 29: 133120,\r\n 30: 2080,\r\n 31: 134217728,\r\n 2147483664: 131072,\r\n 2147483665: 2048,\r\n 2147483666: 134348832,\r\n 2147483667: 133152,\r\n 2147483668: 32,\r\n 2147483669: 134348800,\r\n 2147483670: 134217728,\r\n 2147483671: 134219808,\r\n 2147483672: 134350880,\r\n 2147483673: 134217760,\r\n 2147483674: 134219776,\r\n 2147483675: 0,\r\n 2147483676: 133120,\r\n 2147483677: 2080,\r\n 2147483678: 131104,\r\n 2147483679: 134350848\r\n }],\r\n p = [4160749569, 528482304, 33030144, 2064384, 129024, 8064, 504, 2147483679],\r\n n = f.DES = d.extend({\r\n _doReset: function () {\r\n for (var a = this._key.words, c = [], b = 0; 56 > b; b++) {\r\n var d = g[b] - 1;\r\n c[b] = a[d >>> 5] >>> 31 - d % 32 & 1\r\n }\r\n a = this._subKeys = [];\r\n for (d = 0; 16 > d; d++) {\r\n for (var e = a[d] = [], f = k[d], b = 0; 24 > b; b++)\r\n e[b / 6 | 0] |= c[(h[b] - 1 + f) % 28] << 31 - b % 6,\r\n e[4 + (b / 6 | 0)] |= c[28 + (h[b + 24] - 1 + f) % 28] << 31 - b % 6;\r\n e[0] = e[0] << 1 | e[0] >>> 31;\r\n for (b = 1; 7 > b; b++)\r\n e[b] >>>= 4 * (b - 1) + 3;\r\n e[7] = e[7] << 5 | e[7] >>> 27\r\n }\r\n c = this._invSubKeys = [];\r\n for (b = 0; 16 > b; b++)\r\n c[b] = a[15 - b]\r\n },\r\n encryptBlock: function (a, c) {\r\n this._doCryptBlock(a, c, this._subKeys)\r\n },\r\n decryptBlock: function (a, c) {\r\n this._doCryptBlock(a, c, this._invSubKeys)\r\n },\r\n _doCryptBlock: function (c, d, e) {\r\n this._lBlock = c[d];\r\n this._rBlock = c[d + 1];\r\n a.call(this, 4, 252645135);\r\n a.call(this, 16, 65535);\r\n b.call(this, 2, 858993459);\r\n b.call(this, 8, 16711935);\r\n a.call(this, 1, 1431655765);\r\n for (var f = 0; 16 > f; f++) {\r\n for (var g = e[f], h = this._lBlock, k = this._rBlock, n = 0, u = 0; 8 > u; u++)\r\n n |= l[u][((k ^ g[u]) & p[u]) >>> 0];\r\n this._lBlock = k;\r\n this._rBlock = h ^ n\r\n }\r\n e = this._lBlock;\r\n this._lBlock = this._rBlock;\r\n this._rBlock = e;\r\n a.call(this, 1, 1431655765);\r\n b.call(this, 8, 16711935);\r\n b.call(this, 2, 858993459);\r\n a.call(this, 16, 65535);\r\n a.call(this, 4, 252645135);\r\n c[d] = this._lBlock;\r\n c[d + 1] = this._rBlock\r\n },\r\n keySize: 2,\r\n ivSize: 2,\r\n blockSize: 2\r\n });\r\n c.DES = d._createHelper(n);\r\n f = f.TripleDES = d.extend({\r\n _doReset: function () {\r\n var a = this._key.words;\r\n this._des1 = n.createEncryptor(e.create(a.slice(0, 2)));\r\n this._des2 = n.createEncryptor(e.create(a.slice(2, 4)));\r\n this._des3 = n.createEncryptor(e.create(a.slice(4, 6)))\r\n },\r\n encryptBlock: function (a, c) {\r\n this._des1.encryptBlock(a, c);\r\n this._des2.decryptBlock(a, c);\r\n this._des3.encryptBlock(a, c)\r\n },\r\n decryptBlock: function (a, c) {\r\n this._des3.decryptBlock(a, c);\r\n this._des2.encryptBlock(a, c);\r\n this._des1.decryptBlock(a, c)\r\n },\r\n keySize: 6,\r\n ivSize: 2,\r\n blockSize: 2\r\n });\r\n c.TripleDES = d._createHelper(f)\r\n })();\r\n (function () {\r\n var a = CryptoJS,\r\n b = a.lib.WordArray;\r\n a.enc.Base64 = {\r\n stringify: function (a) {\r\n var b = a.words,\r\n e = a.sigBytes,\r\n f = this._map;\r\n a.clamp();\r\n a = [];\r\n for (var g = 0; g < e; g += 3)\r\n for (var h = (b[g >>> 2] >>> 24 - g % 4 * 8 & 255) << 16 | (b[g + 1 >>> 2] >>> 24 - (g + 1) % 4 * 8 & 255) << 8 | b[g + 2 >>> 2] >>> 24 - (g + 2) % 4 * 8 & 255, k = 0; 4 > k && g + .75 * k < e; k++)\r\n a.push(f.charAt(h >>> 6 * (3 - k) & 63));\r\n if (b = f.charAt(64))\r\n for (; a.length % 4;)\r\n a.push(b);\r\n return a.join(\"\")\r\n },\r\n parse: function (a) {\r\n var d = a.length,\r\n e = this._map,\r\n f = e.charAt(64);\r\n f && (f = a.indexOf(f),\r\n -1 != f && (d = f));\r\n for (var f = [], g = 0, h = 0; h < d; h++)\r\n if (h % 4) {\r\n var k = e.indexOf(a.charAt(h - 1)) << h % 4 * 2,\r\n l = e.indexOf(a.charAt(h)) >>> 6 - h % 4 * 2;\r\n f[g >>> 2] |= (k | l) << 24 - g % 4 * 8;\r\n g++\r\n }\r\n return b.create(f, g)\r\n },\r\n _map: \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\"\r\n }\r\n })();\r\n var dbits, canary = 0xdeadbeefcafe,\r\n j_lm = 15715070 == (canary & 16777215);\r\n\r\n function BigInteger(a, b, c) {\r\n null != a && (\"number\" == typeof a ? this.fromNumber(a, b, c) : null == b && \"string\" != typeof a ? this.fromString(a, 256) : this.fromString(a, b))\r\n }\r\n\r\n function nbi() {\r\n return new BigInteger(null)\r\n }\r\n\r\n function am1(a, b, c, d, e, f) {\r\n for (; 0 <= --f;) {\r\n var g = b * this[a++] + c[d] + e;\r\n e = Math.floor(g / 67108864);\r\n c[d++] = g & 67108863\r\n }\r\n return e\r\n }\r\n\r\n function am2(a, b, c, d, e, f) {\r\n var g = b & 32767;\r\n for (b >>= 15; 0 <= --f;) {\r\n var h = this[a] & 32767,\r\n k = this[a++] >> 15,\r\n l = b * h + k * g,\r\n h = g * h + ((l & 32767) << 15) + c[d] + (e & 1073741823);\r\n e = (h >>> 30) + (l >>> 15) + b * k + (e >>> 30);\r\n c[d++] = h & 1073741823\r\n }\r\n return e\r\n }\r\n\r\n function am3(a, b, c, d, e, f) {\r\n var g = b & 16383;\r\n for (b >>= 14; 0 <= --f;) {\r\n var h = this[a] & 16383,\r\n k = this[a++] >> 14,\r\n l = b * h + k * g,\r\n h = g * h + ((l & 16383) << 14) + c[d] + e;\r\n e = (h >> 28) + (l >> 14) + b * k;\r\n c[d++] = h & 268435455\r\n }\r\n return e\r\n }\r\n if (process.server) {\r\n if (j_lm) {\r\n BigInteger.prototype.am = am3;\r\n dbits = 28;\r\n }\r\n } else {\r\n j_lm && \"Microsoft Internet Explorer\" == navigator.appName ? (BigInteger.prototype.am = am2,\r\n dbits = 30) : j_lm && \"Netscape\" != navigator.appName ? (BigInteger.prototype.am = am1,\r\n dbits = 26) : (BigInteger.prototype.am = am3,\r\n dbits = 28);\r\n }\r\n\r\n BigInteger.prototype.DB = dbits;\r\n BigInteger.prototype.DM = (1 << dbits) - 1;\r\n BigInteger.prototype.DV = 1 << dbits;\r\n var BI_FP = 52;\r\n BigInteger.prototype.FV = Math.pow(2, BI_FP);\r\n BigInteger.prototype.F1 = BI_FP - dbits;\r\n BigInteger.prototype.F2 = 2 * dbits - BI_FP;\r\n var BI_RM = \"0123456789abcdefghijklmnopqrstuvwxyz\",\r\n BI_RC = [],\r\n rr, vv;\r\n rr = 48;\r\n for (vv = 0; 9 >= vv; ++vv)\r\n BI_RC[rr++] = vv;\r\n rr = 97;\r\n for (vv = 10; 36 > vv; ++vv)\r\n BI_RC[rr++] = vv;\r\n rr = 65;\r\n for (vv = 10; 36 > vv; ++vv)\r\n BI_RC[rr++] = vv;\r\n\r\n function int2char(a) {\r\n return BI_RM.charAt(a)\r\n }\r\n\r\n function intAt(a, b) {\r\n var c = BI_RC[a.charCodeAt(b)];\r\n return null == c ? -1 : c\r\n }\r\n\r\n function bnpCopyTo(a) {\r\n for (var b = this.t - 1; 0 <= b; --b)\r\n a[b] = this[b];\r\n a.t = this.t;\r\n a.s = this.s\r\n }\r\n\r\n function bnpFromInt(a) {\r\n this.t = 1;\r\n this.s = 0 > a ? -1 : 0;\r\n 0 < a ? this[0] = a : -1 > a ? this[0] = a + this.DV : this.t = 0\r\n }\r\n\r\n function nbv(a) {\r\n var b = nbi();\r\n b.fromInt(a);\r\n return b\r\n }\r\n\r\n function bnpFromString(a, b) {\r\n var c;\r\n if (16 == b)\r\n c = 4;\r\n else if (8 == b)\r\n c = 3;\r\n else if (256 == b)\r\n c = 8;\r\n else if (2 == b)\r\n c = 1;\r\n else if (32 == b)\r\n c = 5;\r\n else if (4 == b)\r\n c = 2;\r\n else {\r\n this.fromRadix(a, b);\r\n return\r\n }\r\n this.s = this.t = 0;\r\n for (var d = a.length, e = !1, f = 0; 0 <= --d;) {\r\n var g = 8 == c ? a[d] & 255 : intAt(a, d);\r\n 0 > g ? \"-\" == a.charAt(d) && (e = !0) : (e = !1,\r\n 0 == f ? this[this.t++] = g : f + c > this.DB ? (this[this.t - 1] |= (g & (1 << this.DB - f) - 1) << f,\r\n this[this.t++] = g >> this.DB - f) : this[this.t - 1] |= g << f,\r\n f += c,\r\n f >= this.DB && (f -= this.DB))\r\n }\r\n 8 == c && 0 != (a[0] & 128) && (this.s = -1,\r\n 0 < f && (this[this.t - 1] |= (1 << this.DB - f) - 1 << f));\r\n this.clamp();\r\n e && BigInteger.ZERO.subTo(this, this)\r\n }\r\n\r\n function bnpClamp() {\r\n for (var a = this.s & this.DM; 0 < this.t && this[this.t - 1] == a;)\r\n --this.t\r\n }\r\n\r\n function bnToString(a) {\r\n if (0 > this.s)\r\n return \"-\" + this.negate().toString(a);\r\n if (16 == a)\r\n a = 4;\r\n else if (8 == a)\r\n a = 3;\r\n else if (2 == a)\r\n a = 1;\r\n else if (32 == a)\r\n a = 5;\r\n else if (4 == a)\r\n a = 2;\r\n else\r\n return this.toRadix(a);\r\n var b = (1 << a) - 1,\r\n c, d = !1,\r\n e = \"\",\r\n f = this.t,\r\n g = this.DB - f * this.DB % a;\r\n if (0 < f--)\r\n for (g < this.DB && 0 < (c = this[f] >> g) && (d = !0,\r\n e = int2char(c)); 0 <= f;)\r\n g < a ? (c = (this[f] & (1 << g) - 1) << a - g,\r\n c |= this[--f] >> (g += this.DB - a)) : (c = this[f] >> (g -= a) & b,\r\n 0 >= g && (g += this.DB,\r\n --f)),\r\n 0 < c && (d = !0),\r\n d && (e += int2char(c));\r\n return d ? e : \"0\"\r\n }\r\n\r\n function bnNegate() {\r\n var a = nbi();\r\n BigInteger.ZERO.subTo(this, a);\r\n return a\r\n }\r\n\r\n function bnAbs() {\r\n return 0 > this.s ? this.negate() : this\r\n }\r\n\r\n function bnCompareTo(a) {\r\n var b = this.s - a.s;\r\n if (0 != b)\r\n return b;\r\n var c = this.t,\r\n b = c - a.t;\r\n if (0 != b)\r\n return 0 > this.s ? -b : b;\r\n for (; 0 <= --c;)\r\n if (0 != (b = this[c] - a[c]))\r\n return b;\r\n return 0\r\n }\r\n\r\n function nbits(a) {\r\n var b = 1,\r\n c;\r\n 0 != (c = a >>> 16) && (a = c,\r\n b += 16);\r\n 0 != (c = a >> 8) && (a = c,\r\n b += 8);\r\n 0 != (c = a >> 4) && (a = c,\r\n b += 4);\r\n 0 != (c = a >> 2) && (a = c,\r\n b += 2);\r\n 0 != a >> 1 && (b += 1);\r\n return b\r\n }\r\n\r\n function bnBitLength() {\r\n return 0 >= this.t ? 0 : this.DB * (this.t - 1) + nbits(this[this.t - 1] ^ this.s & this.DM)\r\n }\r\n\r\n function bnpDLShiftTo(a, b) {\r\n var c;\r\n for (c = this.t - 1; 0 <= c; --c)\r\n b[c + a] = this[c];\r\n for (c = a - 1; 0 <= c; --c)\r\n b[c] = 0;\r\n b.t = this.t + a;\r\n b.s = this.s\r\n }\r\n\r\n function bnpDRShiftTo(a, b) {\r\n for (var c = a; c < this.t; ++c)\r\n b[c - a] = this[c];\r\n b.t = Math.max(this.t - a, 0);\r\n b.s = this.s\r\n }\r\n\r\n function bnpLShiftTo(a, b) {\r\n var c = a % this.DB,\r\n d = this.DB - c,\r\n e = (1 << d) - 1,\r\n f = Math.floor(a / this.DB),\r\n g = this.s << c & this.DM,\r\n h;\r\n for (h = this.t - 1; 0 <= h; --h)\r\n b[h + f + 1] = this[h] >> d | g,\r\n g = (this[h] & e) << c;\r\n for (h = f - 1; 0 <= h; --h)\r\n b[h] = 0;\r\n b[f] = g;\r\n b.t = this.t + f + 1;\r\n b.s = this.s;\r\n b.clamp()\r\n }\r\n\r\n function bnpRShiftTo(a, b) {\r\n b.s = this.s;\r\n var c = Math.floor(a / this.DB);\r\n if (c >= this.t)\r\n b.t = 0;\r\n else {\r\n var d = a % this.DB,\r\n e = this.DB - d,\r\n f = (1 << d) - 1;\r\n b[0] = this[c] >> d;\r\n for (var g = c + 1; g < this.t; ++g)\r\n b[g - c - 1] |= (this[g] & f) << e,\r\n b[g - c] = this[g] >> d;\r\n 0 < d && (b[this.t - c - 1] |= (this.s & f) << e);\r\n b.t = this.t - c;\r\n b.clamp()\r\n }\r\n }\r\n\r\n function bnpSubTo(a, b) {\r\n for (var c = 0, d = 0, e = Math.min(a.t, this.t); c < e;)\r\n d += this[c] - a[c],\r\n b[c++] = d & this.DM,\r\n d >>= this.DB;\r\n if (a.t < this.t) {\r\n for (d -= a.s; c < this.t;)\r\n d += this[c],\r\n b[c++] = d & this.DM,\r\n d >>= this.DB;\r\n d += this.s\r\n } else {\r\n for (d += this.s; c < a.t;)\r\n d -= a[c],\r\n b[c++] = d & this.DM,\r\n d >>= this.DB;\r\n d -= a.s\r\n }\r\n b.s = 0 > d ? -1 : 0; -\r\n 1 > d ? b[c++] = this.DV + d : 0 < d && (b[c++] = d);\r\n b.t = c;\r\n b.clamp()\r\n }\r\n\r\n function bnpMultiplyTo(a, b) {\r\n var c = this.abs(),\r\n d = a.abs(),\r\n e = c.t;\r\n for (b.t = e + d.t; 0 <= --e;)\r\n b[e] = 0;\r\n for (e = 0; e < d.t; ++e)\r\n b[e + c.t] = c.am(0, d[e], b, e, 0, c.t);\r\n b.s = 0;\r\n b.clamp();\r\n this.s != a.s && BigInteger.ZERO.subTo(b, b)\r\n }\r\n\r\n function bnpSquareTo(a) {\r\n for (var b = this.abs(), c = a.t = 2 * b.t; 0 <= --c;)\r\n a[c] = 0;\r\n for (c = 0; c < b.t - 1; ++c) {\r\n var d = b.am(c, b[c], a, 2 * c, 0, 1);\r\n (a[c + b.t] += b.am(c + 1, 2 * b[c], a, 2 * c + 1, d, b.t - c - 1)) >= b.DV && (a[c + b.t] -= b.DV,\r\n a[c + b.t + 1] = 1)\r\n }\r\n 0 < a.t && (a[a.t - 1] += b.am(c, b[c], a, 2 * c, 0, 1));\r\n a.s = 0;\r\n a.clamp()\r\n }\r\n\r\n function bnpDivRemTo(a, b, c) {\r\n var d = a.abs();\r\n if (!(0 >= d.t)) {\r\n var e = this.abs();\r\n if (e.t < d.t)\r\n null != b && b.fromInt(0),\r\n null != c && this.copyTo(c);\r\n else {\r\n null == c && (c = nbi());\r\n var f = nbi(),\r\n g = this.s;\r\n a = a.s;\r\n var h = this.DB - nbits(d[d.t - 1]);\r\n 0 < h ? (d.lShiftTo(h, f),\r\n e.lShiftTo(h, c)) : (d.copyTo(f),\r\n e.copyTo(c));\r\n d = f.t;\r\n e = f[d - 1];\r\n if (0 != e) {\r\n var k = e * (1 << this.F1) + (1 < d ? f[d - 2] >> this.F2 : 0),\r\n l = this.FV / k,\r\n k = (1 << this.F1) / k,\r\n p = 1 << this.F2,\r\n n = c.t,\r\n q = n - d,\r\n m = null == b ? nbi() : b;\r\n f.dlShiftTo(q, m);\r\n 0 <= c.compareTo(m) && (c[c.t++] = 1,\r\n c.subTo(m, c));\r\n BigInteger.ONE.dlShiftTo(d, m);\r\n for (m.subTo(f, f); f.t < d;)\r\n f[f.t++] = 0;\r\n for (; 0 <= --q;) {\r\n var r = c[--n] == e ? this.DM : Math.floor(c[n] * l + (c[n - 1] + p) * k);\r\n if ((c[n] += f.am(0, r, c, q, 0, d)) < r)\r\n for (f.dlShiftTo(q, m),\r\n c.subTo(m, c); c[n] < --r;)\r\n c.subTo(m, c)\r\n }\r\n null != b && (c.drShiftTo(d, b),\r\n g != a && BigInteger.ZERO.subTo(b, b));\r\n c.t = d;\r\n c.clamp();\r\n 0 < h && c.rShiftTo(h, c);\r\n 0 > g && BigInteger.ZERO.subTo(c, c)\r\n }\r\n }\r\n }\r\n }\r\n\r\n function bnMod(a) {\r\n var b = nbi();\r\n this.abs().divRemTo(a, null, b);\r\n 0 > this.s && 0 < b.compareTo(BigInteger.ZERO) && a.subTo(b, b);\r\n return b\r\n }\r\n\r\n function Classic(a) {\r\n this.m = a\r\n }\r\n\r\n function cConvert(a) {\r\n return 0 > a.s || 0 <= a.compareTo(this.m) ? a.mod(this.m) : a\r\n }\r\n\r\n function cRevert(a) {\r\n return a\r\n }\r\n\r\n function cReduce(a) {\r\n a.divRemTo(this.m, null, a)\r\n }\r\n\r\n function cMulTo(a, b, c) {\r\n a.multiplyTo(b, c);\r\n this.reduce(c)\r\n }\r\n\r\n function cSqrTo(a, b) {\r\n a.squareTo(b);\r\n this.reduce(b)\r\n }\r\n Classic.prototype.convert = cConvert;\r\n Classic.prototype.revert = cRevert;\r\n Classic.prototype.reduce = cReduce;\r\n Classic.prototype.mulTo = cMulTo;\r\n Classic.prototype.sqrTo = cSqrTo;\r\n\r\n function bnpInvDigit() {\r\n if (1 > this.t)\r\n return 0;\r\n var a = this[0];\r\n if (0 == (a & 1))\r\n return 0;\r\n var b = a & 3,\r\n b = b * (2 - (a & 15) * b) & 15,\r\n b = b * (2 - (a & 255) * b) & 255,\r\n b = b * (2 - ((a & 65535) * b & 65535)) & 65535,\r\n b = b * (2 - a * b % this.DV) % this.DV;\r\n return 0 < b ? this.DV - b : -b\r\n }\r\n\r\n function Montgomery(a) {\r\n this.m = a;\r\n this.mp = a.invDigit();\r\n this.mpl = this.mp & 32767;\r\n this.mph = this.mp >> 15;\r\n this.um = (1 << a.DB - 15) - 1;\r\n this.mt2 = 2 * a.t\r\n }\r\n\r\n function montConvert(a) {\r\n var b = nbi();\r\n a.abs().dlShiftTo(this.m.t, b);\r\n b.divRemTo(this.m, null, b);\r\n 0 > a.s && 0 < b.compareTo(BigInteger.ZERO) && this.m.subTo(b, b);\r\n return b\r\n }\r\n\r\n function montRevert(a) {\r\n var b = nbi();\r\n a.copyTo(b);\r\n this.reduce(b);\r\n return b\r\n }\r\n\r\n function montReduce(a) {\r\n for (; a.t <= this.mt2;)\r\n a[a.t++] = 0;\r\n for (var b = 0; b < this.m.t; ++b) {\r\n var c = a[b] & 32767,\r\n d = c * this.mpl + ((c * this.mph + (a[b] >> 15) * this.mpl & this.um) << 15) & a.DM,\r\n c = b + this.m.t;\r\n for (a[c] += this.m.am(0, d, a, b, 0, this.m.t); a[c] >= a.DV;)\r\n a[c] -= a.DV,\r\n a[++c]++\r\n }\r\n a.clamp();\r\n a.drShiftTo(this.m.t, a);\r\n 0 <= a.compareTo(this.m) && a.subTo(this.m, a)\r\n }\r\n\r\n function montSqrTo(a, b) {\r\n a.squareTo(b);\r\n this.reduce(b)\r\n }\r\n\r\n function montMulTo(a, b, c) {\r\n a.multiplyTo(b, c);\r\n this.reduce(c)\r\n }\r\n Montgomery.prototype.convert = montConvert;\r\n Montgomery.prototype.revert = montRevert;\r\n Montgomery.prototype.reduce = montReduce;\r\n Montgomery.prototype.mulTo = montMulTo;\r\n Montgomery.prototype.sqrTo = montSqrTo;\r\n\r\n function bnpIsEven() {\r\n return 0 == (0 < this.t ? this[0] & 1 : this.s)\r\n }\r\n\r\n function bnpExp(a, b) {\r\n if (4294967295 < a || 1 > a)\r\n return BigInteger.ONE;\r\n var c = nbi(),\r\n d = nbi(),\r\n e = b.convert(this),\r\n f = nbits(a) - 1;\r\n for (e.copyTo(c); 0 <= --f;)\r\n if (b.sqrTo(c, d),\r\n 0 < (a & 1 << f))\r\n b.mulTo(d, e, c);\r\n else\r\n var g = c,\r\n c = d,\r\n d = g;\r\n return b.revert(c)\r\n }\r\n\r\n function bnModPowInt(a, b) {\r\n var c;\r\n c = 256 > a || b.isEven() ? new Classic(b) : new Montgomery(b);\r\n return this.exp(a, c)\r\n }\r\n BigInteger.prototype.copyTo = bnpCopyTo;\r\n BigInteger.prototype.fromInt = bnpFromInt;\r\n BigInteger.prototype.fromString = bnpFromString;\r\n BigInteger.prototype.clamp = bnpClamp;\r\n BigInteger.prototype.dlShiftTo = bnpDLShiftTo;\r\n BigInteger.prototype.drShiftTo = bnpDRShiftTo;\r\n BigInteger.prototype.lShiftTo = bnpLShiftTo;\r\n BigInteger.prototype.rShiftTo = bnpRShiftTo;\r\n BigInteger.prototype.subTo = bnpSubTo;\r\n BigInteger.prototype.multiplyTo = bnpMultiplyTo;\r\n BigInteger.prototype.squareTo = bnpSquareTo;\r\n BigInteger.prototype.divRemTo = bnpDivRemTo;\r\n BigInteger.prototype.invDigit = bnpInvDigit;\r\n BigInteger.prototype.isEven = bnpIsEven;\r\n BigInteger.prototype.exp = bnpExp;\r\n BigInteger.prototype.toString = bnToString;\r\n BigInteger.prototype.negate = bnNegate;\r\n BigInteger.prototype.abs = bnAbs;\r\n BigInteger.prototype.compareTo = bnCompareTo;\r\n BigInteger.prototype.bitLength = bnBitLength;\r\n BigInteger.prototype.mod = bnMod;\r\n BigInteger.prototype.modPowInt = bnModPowInt;\r\n BigInteger.ZERO = nbv(0);\r\n BigInteger.ONE = nbv(1);\r\n\r\n function bnClone() {\r\n var a = nbi();\r\n this.copyTo(a);\r\n return a\r\n }\r\n\r\n function bnIntValue() {\r\n if (0 > this.s) {\r\n if (1 == this.t)\r\n return this[0] - this.DV;\r\n if (0 == this.t)\r\n return -1\r\n } else {\r\n if (1 == this.t)\r\n return this[0];\r\n if (0 == this.t)\r\n return 0\r\n }\r\n return (this[1] & (1 << 32 - this.DB) - 1) << this.DB | this[0]\r\n }\r\n\r\n function bnByteValue() {\r\n return 0 == this.t ? this.s : this[0] << 24 >> 24\r\n }\r\n\r\n function bnShortValue() {\r\n return 0 == this.t ? this.s : this[0] << 16 >> 16\r\n }\r\n\r\n function bnpChunkSize(a) {\r\n return Math.floor(Math.LN2 * this.DB / Math.log(a))\r\n }\r\n\r\n function bnSigNum() {\r\n return 0 > this.s ? -1 : 0 >= this.t || 1 == this.t && 0 >= this[0] ? 0 : 1\r\n }\r\n\r\n function bnpToRadix(a) {\r\n null == a && (a = 10);\r\n if (0 == this.signum() || 2 > a || 36 < a)\r\n return \"0\";\r\n var b = this.chunkSize(a),\r\n b = Math.pow(a, b),\r\n c = nbv(b),\r\n d = nbi(),\r\n e = nbi(),\r\n f = \"\";\r\n for (this.divRemTo(c, d, e); 0 < d.signum();)\r\n f = (b + e.intValue()).toString(a).substr(1) + f,\r\n d.divRemTo(c, d, e);\r\n return e.intValue().toString(a) + f\r\n }\r\n\r\n function bnpFromRadix(a, b) {\r\n this.fromInt(0);\r\n null == b && (b = 10);\r\n for (var c = this.chunkSize(b), d = Math.pow(b, c), e = !1, f = 0, g = 0, h = 0; h < a.length; ++h) {\r\n var k = intAt(a, h);\r\n 0 > k ? \"-\" == a.charAt(h) && 0 == this.signum() && (e = !0) : (g = b * g + k,\r\n ++f >= c && (this.dMultiply(d),\r\n this.dAddOffset(g, 0),\r\n g = f = 0))\r\n }\r\n 0 < f && (this.dMultiply(Math.pow(b, f)),\r\n this.dAddOffset(g, 0));\r\n e && BigInteger.ZERO.subTo(this, this)\r\n }\r\n\r\n function bnpFromNumber(a, b, c) {\r\n if (\"number\" == typeof b)\r\n if (2 > a)\r\n this.fromInt(1);\r\n else\r\n for (this.fromNumber(a, c),\r\n this.testBit(a - 1) || this.bitwiseTo(BigInteger.ONE.shiftLeft(a - 1), op_or, this),\r\n this.isEven() && this.dAddOffset(1, 0); !this.isProbablePrime(b);)\r\n this.dAddOffset(2, 0),\r\n this.bitLength() > a && this.subTo(BigInteger.ONE.shiftLeft(a - 1), this);\r\n else {\r\n c = [];\r\n var d = a & 7;\r\n c.length = (a >> 3) + 1;\r\n b.nextBytes(c);\r\n c[0] = 0 < d ? c[0] & (1 << d) - 1 : 0;\r\n this.fromString(c, 256)\r\n }\r\n }\r\n\r\n function bnToByteArray() {\r\n var a = this.t,\r\n b = [];\r\n b[0] = this.s;\r\n var c = this.DB - a * this.DB % 8,\r\n d, e = 0;\r\n if (0 < a--)\r\n for (c < this.DB && (d = this[a] >> c) != (this.s & this.DM) >> c && (b[e++] = d | this.s << this.DB - c); 0 <= a;)\r\n if (8 > c ? (d = (this[a] & (1 << c) - 1) << 8 - c,\r\n d |= this[--a] >> (c += this.DB - 8)) : (d = this[a] >> (c -= 8) & 255,\r\n 0 >= c && (c += this.DB,\r\n --a)),\r\n 0 != (d & 128) && (d |= -256),\r\n 0 == e && (this.s & 128) != (d & 128) && ++e,\r\n 0 < e || d != this.s)\r\n b[e++] = d;\r\n return b\r\n }\r\n\r\n function bnEquals(a) {\r\n return 0 == this.compareTo(a)\r\n }\r\n\r\n function bnMin(a) {\r\n return 0 > this.compareTo(a) ? this : a\r\n }\r\n\r\n function bnMax(a) {\r\n return 0 < this.compareTo(a) ? this : a\r\n }\r\n\r\n function bnpBitwiseTo(a, b, c) {\r\n var d, e, f = Math.min(a.t, this.t);\r\n for (d = 0; d < f; ++d)\r\n c[d] = b(this[d], a[d]);\r\n if (a.t < this.t) {\r\n e = a.s & this.DM;\r\n for (d = f; d < this.t; ++d)\r\n c[d] = b(this[d], e);\r\n c.t = this.t\r\n } else {\r\n e = this.s & this.DM;\r\n for (d = f; d < a.t; ++d)\r\n c[d] = b(e, a[d]);\r\n c.t = a.t\r\n }\r\n c.s = b(this.s, a.s);\r\n c.clamp()\r\n }\r\n\r\n function op_and(a, b) {\r\n return a & b\r\n }\r\n\r\n function bnAnd(a) {\r\n var b = nbi();\r\n this.bitwiseTo(a, op_and, b);\r\n return b\r\n }\r\n\r\n function op_or(a, b) {\r\n return a | b\r\n }\r\n\r\n function bnOr(a) {\r\n var b = nbi();\r\n this.bitwiseTo(a, op_or, b);\r\n return b\r\n }\r\n\r\n function op_xor(a, b) {\r\n return a ^ b\r\n }\r\n\r\n function bnXor(a) {\r\n var b = nbi();\r\n this.bitwiseTo(a, op_xor, b);\r\n return b\r\n }\r\n\r\n function op_andnot(a, b) {\r\n return a & ~b\r\n }\r\n\r\n function bnAndNot(a) {\r\n var b = nbi();\r\n this.bitwiseTo(a, op_andnot, b);\r\n return b\r\n }\r\n\r\n function bnNot() {\r\n for (var a = nbi(), b = 0; b < this.t; ++b)\r\n a[b] = this.DM & ~this[b];\r\n a.t = this.t;\r\n a.s = ~this.s;\r\n return a\r\n }\r\n\r\n function bnShiftLeft(a) {\r\n var b = nbi();\r\n 0 > a ? this.rShiftTo(-a, b) : this.lShiftTo(a, b);\r\n return b\r\n }\r\n\r\n function bnShiftRight(a) {\r\n var b = nbi();\r\n 0 > a ? this.lShiftTo(-a, b) : this.rShiftTo(a, b);\r\n return b\r\n }\r\n\r\n function lbit(a) {\r\n if (0 == a)\r\n return -1;\r\n var b = 0;\r\n 0 == (a & 65535) && (a >>= 16,\r\n b += 16);\r\n 0 == (a & 255) && (a >>= 8,\r\n b += 8);\r\n 0 == (a & 15) && (a >>= 4,\r\n b += 4);\r\n 0 == (a & 3) && (a >>= 2,\r\n b += 2);\r\n 0 == (a & 1) && ++b;\r\n return b\r\n }\r\n\r\n function bnGetLowestSetBit() {\r\n for (var a = 0; a < this.t; ++a)\r\n if (0 != this[a])\r\n return a * this.DB + lbit(this[a]);\r\n return 0 > this.s ? this.t * this.DB : -1\r\n }\r\n\r\n function cbit(a) {\r\n for (var b = 0; 0 != a;)\r\n a &= a - 1,\r\n ++b;\r\n return b\r\n }\r\n\r\n function bnBitCount() {\r\n for (var a = 0, b = this.s & this.DM, c = 0; c < this.t; ++c)\r\n a += cbit(this[c] ^ b);\r\n return a\r\n }\r\n\r\n function bnTestBit(a) {\r\n var b = Math.floor(a / this.DB);\r\n return b >= this.t ? 0 != this.s : 0 != (this[b] & 1 << a % this.DB)\r\n }\r\n\r\n function bnpChangeBit(a, b) {\r\n var c = BigInteger.ONE.shiftLeft(a);\r\n this.bitwiseTo(c, b, c);\r\n return c\r\n }\r\n\r\n function bnSetBit(a) {\r\n return this.changeBit(a, op_or)\r\n }\r\n\r\n function bnClearBit(a) {\r\n return this.changeBit(a, op_andnot)\r\n }\r\n\r\n function bnFlipBit(a) {\r\n return this.changeBit(a, op_xor)\r\n }\r\n\r\n function bnpAddTo(a, b) {\r\n for (var c = 0, d = 0, e = Math.min(a.t, this.t); c < e;)\r\n d += this[c] + a[c],\r\n b[c++] = d & this.DM,\r\n d >>= this.DB;\r\n if (a.t < this.t) {\r\n for (d += a.s; c < this.t;)\r\n d += this[c],\r\n b[c++] = d & this.DM,\r\n d >>= this.DB;\r\n d += this.s\r\n } else {\r\n for (d += this.s; c < a.t;)\r\n d += a[c],\r\n b[c++] = d & this.DM,\r\n d >>= this.DB;\r\n d += a.s\r\n }\r\n b.s = 0 > d ? -1 : 0;\r\n 0 < d ? b[c++] = d : -1 > d && (b[c++] = this.DV + d);\r\n b.t = c;\r\n b.clamp()\r\n }\r\n\r\n function bnAdd(a) {\r\n var b = nbi();\r\n this.addTo(a, b);\r\n return b\r\n }\r\n\r\n function bnSubtract(a) {\r\n var b = nbi();\r\n this.subTo(a, b);\r\n return b\r\n }\r\n\r\n function bnMultiply(a) {\r\n var b = nbi();\r\n this.multiplyTo(a, b);\r\n return b\r\n }\r\n\r\n function bnSquare() {\r\n var a = nbi();\r\n this.squareTo(a);\r\n return a\r\n }\r\n\r\n function bnDivide(a) {\r\n var b = nbi();\r\n this.divRemTo(a, b, null);\r\n return b\r\n }\r\n\r\n function bnRemainder(a) {\r\n var b = nbi();\r\n this.divRemTo(a, null, b);\r\n return b\r\n }\r\n\r\n function bnDivideAndRemainder(a) {\r\n var b = nbi(),\r\n c = nbi();\r\n this.divRemTo(a, b, c);\r\n return [b, c]\r\n }\r\n\r\n function bnpDMultiply(a) {\r\n this[this.t] = this.am(0, a - 1, this, 0, 0, this.t);\r\n ++this.t;\r\n this.clamp()\r\n }\r\n\r\n function bnpDAddOffset(a, b) {\r\n if (0 != a) {\r\n for (; this.t <= b;)\r\n this[this.t++] = 0;\r\n for (this[b] += a; this[b] >= this.DV;)\r\n this[b] -= this.DV,\r\n ++b >= this.t && (this[this.t++] = 0),\r\n ++this[b]\r\n }\r\n }\r\n\r\n function NullExp() {}\r\n\r\n function nNop(a) {\r\n return a\r\n }\r\n\r\n function nMulTo(a, b, c) {\r\n a.multiplyTo(b, c)\r\n }\r\n\r\n function nSqrTo(a, b) {\r\n a.squareTo(b)\r\n }\r\n NullExp.prototype.convert = nNop;\r\n NullExp.prototype.revert = nNop;\r\n NullExp.prototype.mulTo = nMulTo;\r\n NullExp.prototype.sqrTo = nSqrTo;\r\n\r\n function bnPow(a) {\r\n return this.exp(a, new NullExp)\r\n }\r\n\r\n function bnpMultiplyLowerTo(a, b, c) {\r\n var d = Math.min(this.t + a.t, b);\r\n c.s = 0;\r\n for (c.t = d; 0 < d;)\r\n c[--d] = 0;\r\n var e;\r\n for (e = c.t - this.t; d < e; ++d)\r\n c[d + this.t] = this.am(0, a[d], c, d, 0, this.t);\r\n for (e = Math.min(a.t, b); d < e; ++d)\r\n this.am(0, a[d], c, d, 0, b - d);\r\n c.clamp()\r\n }\r\n\r\n function bnpMultiplyUpperTo(a, b, c) {\r\n --b;\r\n var d = c.t = this.t + a.t - b;\r\n for (c.s = 0; 0 <= --d;)\r\n c[d] = 0;\r\n for (d = Math.max(b - this.t, 0); d < a.t; ++d)\r\n c[this.t + d - b] = this.am(b - d, a[d], c, 0, 0, this.t + d - b);\r\n c.clamp();\r\n c.drShiftTo(1, c)\r\n }\r\n\r\n function Barrett(a) {\r\n this.r2 = nbi();\r\n this.q3 = nbi();\r\n BigInteger.ONE.dlShiftTo(2 * a.t, this.r2);\r\n this.mu = this.r2.divide(a);\r\n this.m = a\r\n }\r\n\r\n function barrettConvert(a) {\r\n if (0 > a.s || a.t > 2 * this.m.t)\r\n return a.mod(this.m);\r\n if (0 > a.compareTo(this.m))\r\n return a;\r\n var b = nbi();\r\n a.copyTo(b);\r\n this.reduce(b);\r\n return b\r\n }\r\n\r\n function barrettRevert(a) {\r\n return a\r\n }\r\n\r\n function barrettReduce(a) {\r\n a.drShiftTo(this.m.t - 1, this.r2);\r\n a.t > this.m.t + 1 && (a.t = this.m.t + 1,\r\n a.clamp());\r\n this.mu.multiplyUpperTo(this.r2, this.m.t + 1, this.q3);\r\n for (this.m.multiplyLowerTo(this.q3, this.m.t + 1, this.r2); 0 > a.compareTo(this.r2);)\r\n a.dAddOffset(1, this.m.t + 1);\r\n for (a.subTo(this.r2, a); 0 <= a.compareTo(this.m);)\r\n a.subTo(this.m, a)\r\n }\r\n\r\n function barrettSqrTo(a, b) {\r\n a.squareTo(b);\r\n this.reduce(b)\r\n }\r\n\r\n function barrettMulTo(a, b, c) {\r\n a.multiplyTo(b, c);\r\n this.reduce(c)\r\n }\r\n Barrett.prototype.convert = barrettConvert;\r\n Barrett.prototype.revert = barrettRevert;\r\n Barrett.prototype.reduce = barrettReduce;\r\n Barrett.prototype.mulTo = barrettMulTo;\r\n Barrett.prototype.sqrTo = barrettSqrTo;\r\n\r\n function bnModPow(a, b) {\r\n var c = a.bitLength(),\r\n d, e = nbv(1),\r\n f;\r\n if (0 >= c)\r\n return e;\r\n d = 18 > c ? 1 : 48 > c ? 3 : 144 > c ? 4 : 768 > c ? 5 : 6;\r\n f = 8 > c ? new Classic(b) : b.isEven() ? new Barrett(b) : new Montgomery(b);\r\n var g = [],\r\n h = 3,\r\n k = d - 1,\r\n l = (1 << d) - 1;\r\n g[1] = f.convert(this);\r\n if (1 < d)\r\n for (c = nbi(),\r\n f.sqrTo(g[1], c); h <= l;)\r\n g[h] = nbi(),\r\n f.mulTo(c, g[h - 2], g[h]),\r\n h += 2;\r\n for (var p = a.t - 1, n, q = !0, m = nbi(), c = nbits(a[p]) - 1; 0 <= p;) {\r\n c >= k ? n = a[p] >> c - k & l : (n = (a[p] & (1 << c + 1) - 1) << k - c,\r\n 0 < p && (n |= a[p - 1] >> this.DB + c - k));\r\n for (h = d; 0 == (n & 1);)\r\n n >>= 1,\r\n --h;\r\n 0 > (c -= h) && (c += this.DB,\r\n --p);\r\n if (q)\r\n g[n].copyTo(e),\r\n q = !1;\r\n else {\r\n for (; 1 < h;)\r\n f.sqrTo(e, m),\r\n f.sqrTo(m, e),\r\n h -= 2;\r\n 0 < h ? f.sqrTo(e, m) : (h = e,\r\n e = m,\r\n m = h);\r\n f.mulTo(m, g[n], e)\r\n }\r\n for (; 0 <= p && 0 == (a[p] & 1 << c);)\r\n f.sqrTo(e, m),\r\n h = e,\r\n e = m,\r\n m = h,\r\n 0 > --c && (c = this.DB - 1,\r\n --p)\r\n }\r\n return f.revert(e)\r\n }\r\n\r\n function bnGCD(a) {\r\n var b = 0 > this.s ? this.negate() : this.clone();\r\n a = 0 > a.s ? a.negate() : a.clone();\r\n if (0 > b.compareTo(a)) {\r\n var c = b,\r\n b = a;\r\n a = c\r\n }\r\n var c = b.getLowestSetBit(),\r\n d = a.getLowestSetBit();\r\n if (0 > d)\r\n return b;\r\n c < d && (d = c);\r\n 0 < d && (b.rShiftTo(d, b),\r\n a.rShiftTo(d, a));\r\n for (; 0 < b.signum();)\r\n 0 < (c = b.getLowestSetBit()) && b.rShiftTo(c, b),\r\n 0 < (c = a.getLowestSetBit()) && a.rShiftTo(c, a),\r\n 0 <= b.compareTo(a) ? (b.subTo(a, b),\r\n b.rShiftTo(1, b)) : (a.subTo(b, a),\r\n a.rShiftTo(1, a));\r\n 0 < d && a.lShiftTo(d, a);\r\n return a\r\n }\r\n\r\n function bnpModInt(a) {\r\n if (0 >= a)\r\n return 0;\r\n var b = this.DV % a,\r\n c = 0 > this.s ? a - 1 : 0;\r\n if (0 < this.t)\r\n if (0 == b)\r\n c = this[0] % a;\r\n else\r\n for (var d = this.t - 1; 0 <= d; --d)\r\n c = (b * c + this[d]) % a;\r\n return c\r\n }\r\n\r\n function bnModInverse(a) {\r\n var b = a.isEven();\r\n if (this.isEven() && b || 0 == a.signum())\r\n return BigInteger.ZERO;\r\n for (var c = a.clone(), d = this.clone(), e = nbv(1), f = nbv(0), g = nbv(0), h = nbv(1); 0 != c.signum();) {\r\n for (; c.isEven();)\r\n c.rShiftTo(1, c),\r\n b ? (e.isEven() && f.isEven() || (e.addTo(this, e),\r\n f.subTo(a, f)),\r\n e.rShiftTo(1, e)) : f.isEven() || f.subTo(a, f),\r\n f.rShiftTo(1, f);\r\n for (; d.isEven();)\r\n d.rShiftTo(1, d),\r\n b ? (g.isEven() && h.isEven() || (g.addTo(this, g),\r\n h.subTo(a, h)),\r\n g.rShiftTo(1, g)) : h.isEven() || h.subTo(a, h),\r\n h.rShiftTo(1, h);\r\n 0 <= c.compareTo(d) ? (c.subTo(d, c),\r\n b && e.subTo(g, e),\r\n f.subTo(h, f)) : (d.subTo(c, d),\r\n b && g.subTo(e, g),\r\n h.subTo(f, h))\r\n }\r\n if (0 != d.compareTo(BigInteger.ONE))\r\n return BigInteger.ZERO;\r\n if (0 <= h.compareTo(a))\r\n return h.subtract(a);\r\n if (0 > h.signum())\r\n h.addTo(a, h);\r\n else\r\n return h;\r\n return 0 > h.signum() ? h.add(a) : h\r\n }\r\n var lowprimes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997],\r\n lplim = 67108864 / lowprimes[lowprimes.length - 1];\r\n\r\n function bnIsProbablePrime(a) {\r\n var b, c = this.abs();\r\n if (1 == c.t && c[0] <= lowprimes[lowprimes.length - 1]) {\r\n for (b = 0; b < lowprimes.length; ++b)\r\n if (c[0] == lowprimes[b])\r\n return !0;\r\n return !1\r\n }\r\n if (c.isEven())\r\n return !1;\r\n for (b = 1; b < lowprimes.length;) {\r\n for (var d = lowprimes[b], e = b + 1; e < lowprimes.length && d < lplim;)\r\n d *= lowprimes[e++];\r\n for (d = c.modInt(d); b < e;)\r\n if (0 == d % lowprimes[b++])\r\n return !1\r\n }\r\n return c.millerRabin(a)\r\n }\r\n\r\n function bnpMillerRabin(a) {\r\n var b = this.subtract(BigInteger.ONE),\r\n c = b.getLowestSetBit();\r\n if (0 >= c)\r\n return !1;\r\n var d = b.shiftRight(c);\r\n a = a + 1 >> 1;\r\n a > lowprimes.length && (a = lowprimes.length);\r\n for (var e = nbi(), f = 0; f < a; ++f) {\r\n e.fromInt(lowprimes[Math.floor(Math.random() * lowprimes.length)]);\r\n var g = e.modPow(d, this);\r\n if (0 != g.compareTo(BigInteger.ONE) && 0 != g.compareTo(b)) {\r\n for (var h = 1; h++ < c && 0 != g.compareTo(b);)\r\n if (g = g.modPowInt(2, this),\r\n 0 == g.compareTo(BigInteger.ONE))\r\n return !1;\r\n if (0 != g.compareTo(b))\r\n return !1\r\n }\r\n }\r\n return !0\r\n }\r\n BigInteger.prototype.chunkSize = bnpChunkSize;\r\n BigInteger.prototype.toRadix = bnpToRadix;\r\n BigInteger.prototype.fromRadix = bnpFromRadix;\r\n BigInteger.prototype.fromNumber = bnpFromNumber;\r\n BigInteger.prototype.bitwiseTo = bnpBitwiseTo;\r\n BigInteger.prototype.changeBit = bnpChangeBit;\r\n BigInteger.prototype.addTo = bnpAddTo;\r\n BigInteger.prototype.dMultiply = bnpDMultiply;\r\n BigInteger.prototype.dAddOffset = bnpDAddOffset;\r\n BigInteger.prototype.multiplyLowerTo = bnpMultiplyLowerTo;\r\n BigInteger.prototype.multiplyUpperTo = bnpMultiplyUpperTo;\r\n BigInteger.prototype.modInt = bnpModInt;\r\n BigInteger.prototype.millerRabin = bnpMillerRabin;\r\n BigInteger.prototype.clone = bnClone;\r\n BigInteger.prototype.intValue = bnIntValue;\r\n BigInteger.prototype.byteValue = bnByteValue;\r\n BigInteger.prototype.shortValue = bnShortValue;\r\n BigInteger.prototype.signum = bnSigNum;\r\n BigInteger.prototype.toByteArray = bnToByteArray;\r\n BigInteger.prototype.equals = bnEquals;\r\n BigInteger.prototype.min = bnMin;\r\n BigInteger.prototype.max = bnMax;\r\n BigInteger.prototype.and = bnAnd;\r\n BigInteger.prototype.or = bnOr;\r\n BigInteger.prototype.xor = bnXor;\r\n BigInteger.prototype.andNot = bnAndNot;\r\n BigInteger.prototype.not = bnNot;\r\n BigInteger.prototype.shiftLeft = bnShiftLeft;\r\n BigInteger.prototype.shiftRight = bnShiftRight;\r\n BigInteger.prototype.getLowestSetBit = bnGetLowestSetBit;\r\n BigInteger.prototype.bitCount = bnBitCount;\r\n BigInteger.prototype.testBit = bnTestBit;\r\n BigInteger.prototype.setBit = bnSetBit;\r\n BigInteger.prototype.clearBit = bnClearBit;\r\n BigInteger.prototype.flipBit = bnFlipBit;\r\n BigInteger.prototype.add = bnAdd;\r\n BigInteger.prototype.subtract = bnSubtract;\r\n BigInteger.prototype.multiply = bnMultiply;\r\n BigInteger.prototype.divide = bnDivide;\r\n BigInteger.prototype.remainder = bnRemainder;\r\n BigInteger.prototype.divideAndRemainder = bnDivideAndRemainder;\r\n BigInteger.prototype.modPow = bnModPow;\r\n BigInteger.prototype.modInverse = bnModInverse;\r\n BigInteger.prototype.pow = bnPow;\r\n BigInteger.prototype.gcd = bnGCD;\r\n BigInteger.prototype.isProbablePrime = bnIsProbablePrime;\r\n BigInteger.prototype.square = bnSquare;\r\n\r\n function Arcfour() {\r\n this.j = this.i = 0;\r\n this.S = []\r\n }\r\n\r\n function ARC4init(a) {\r\n var b, c, d;\r\n for (b = 0; 256 > b; ++b)\r\n this.S[b] = b;\r\n for (b = c = 0; 256 > b; ++b)\r\n c = c + this.S[b] + a[b % a.length] & 255,\r\n d = this.S[b],\r\n this.S[b] = this.S[c],\r\n this.S[c] = d;\r\n this.j = this.i = 0\r\n }\r\n\r\n function ARC4next() {\r\n var a;\r\n this.i = this.i + 1 & 255;\r\n this.j = this.j + this.S[this.i] & 255;\r\n a = this.S[this.i];\r\n this.S[this.i] = this.S[this.j];\r\n this.S[this.j] = a;\r\n return this.S[a + this.S[this.i] & 255]\r\n }\r\n Arcfour.prototype.init = ARC4init;\r\n Arcfour.prototype.next = ARC4next;\r\n\r\n function prng_newstate() {\r\n return new Arcfour\r\n }\r\n var rng_psize = 256,\r\n rng_state, rng_pool, rng_pptr;\r\n\r\n function rng_seed_int(a) {\r\n rng_pool[rng_pptr++] ^= a & 255;\r\n rng_pool[rng_pptr++] ^= a >> 8 & 255;\r\n rng_pool[rng_pptr++] ^= a >> 16 & 255;\r\n rng_pool[rng_pptr++] ^= a >> 24 & 255;\r\n rng_pptr >= rng_psize && (rng_pptr -= rng_psize)\r\n }\r\n\r\n function rng_seed_time() {\r\n rng_seed_int((new Date).getTime())\r\n }\r\n if (null == rng_pool) {\r\n rng_pool = [];\r\n rng_pptr = 0;\r\n var t;\r\n if (!process.server) {\r\n if (\"Netscape\" == navigator.appName && \"5\" > navigator.appVersion && window.crypto) {\r\n var z = window.crypto.random(32);\r\n for (t = 0; t < z.length; ++t)\r\n rng_pool[rng_pptr++] = z.charCodeAt(t) & 255\r\n }\r\n }\r\n for (; rng_pptr < rng_psize;)\r\n t = Math.floor(65536 * Math.random()),\r\n rng_pool[rng_pptr++] = t >>> 8,\r\n rng_pool[rng_pptr++] = t & 255;\r\n rng_pptr = 0;\r\n rng_seed_time()\r\n }\r\n\r\n function rng_get_byte() {\r\n if (null == rng_state) {\r\n rng_seed_time();\r\n rng_state = prng_newstate();\r\n rng_state.init(rng_pool);\r\n for (rng_pptr = 0; rng_pptr < rng_pool.length; ++rng_pptr)\r\n rng_pool[rng_pptr] = 0;\r\n rng_pptr = 0\r\n }\r\n return rng_state.next()\r\n }\r\n\r\n function rng_get_bytes(a) {\r\n var b;\r\n for (b = 0; b < a.length; ++b)\r\n a[b] = rng_get_byte()\r\n }\r\n\r\n function SecureRandom() {}\r\n SecureRandom.prototype.nextBytes = rng_get_bytes;\r\n var KJUR = {};\r\n //\"undefined\" != typeof KJUR && KJUR || (KJUR = {});\r\n \"undefined\" != typeof KJUR.crypto && KJUR.crypto || (KJUR.crypto = {});\r\n KJUR.crypto.Util = new function () {\r\n this.DIGESTINFOHEAD = {\r\n sha1: \"3021300906052b0e03021a05000414\",\r\n sha224: \"302d300d06096086480165030402040500041c\",\r\n sha256: \"3031300d060960864801650304020105000420\",\r\n sha384: \"3041300d060960864801650304020205000430\",\r\n sha512: \"3051300d060960864801650304020305000440\",\r\n md2: \"3020300c06082a864886f70d020205000410\",\r\n md5: \"3020300c06082a864886f70d020505000410\",\r\n ripemd160: \"3021300906052b2403020105000414\"\r\n };\r\n this.DEFAULTPROVIDER = {\r\n md5: \"cryptojs\",\r\n sha1: \"cryptojs\",\r\n sha224: \"cryptojs\",\r\n sha256: \"cryptojs\",\r\n sha384: \"cryptojs\",\r\n sha512: \"cryptojs\",\r\n ripemd160: \"cryptojs\",\r\n hmacmd5: \"cryptojs\",\r\n hmacsha1: \"cryptojs\",\r\n hmacsha224: \"cryptojs\",\r\n hmacsha256: \"cryptojs\",\r\n hmacsha384: \"cryptojs\",\r\n hmacsha512: \"cryptojs\",\r\n hmacripemd160: \"cryptojs\",\r\n sm3: \"cryptojs\",\r\n MD5withRSA: \"cryptojs/jsrsa\",\r\n SHA1withRSA: \"cryptojs/jsrsa\",\r\n SHA224withRSA: \"cryptojs/jsrsa\",\r\n SHA256withRSA: \"cryptojs/jsrsa\",\r\n SHA384withRSA: \"cryptojs/jsrsa\",\r\n SHA512withRSA: \"cryptojs/jsrsa\",\r\n RIPEMD160withRSA: \"cryptojs/jsrsa\",\r\n MD5withECDSA: \"cryptojs/jsrsa\",\r\n SHA1withECDSA: \"cryptojs/jsrsa\",\r\n SHA224withECDSA: \"cryptojs/jsrsa\",\r\n SHA256withECDSA: \"cryptojs/jsrsa\",\r\n SHA384withECDSA: \"cryptojs/jsrsa\",\r\n SHA512withECDSA: \"cryptojs/jsrsa\",\r\n RIPEMD160withECDSA: \"cryptojs/jsrsa\",\r\n SHA1withDSA: \"cryptojs/jsrsa\",\r\n SHA224withDSA: \"cryptojs/jsrsa\",\r\n SHA256withDSA: \"cryptojs/jsrsa\",\r\n MD5withRSAandMGF1: \"cryptojs/jsrsa\",\r\n SHA1withRSAandMGF1: \"cryptojs/jsrsa\",\r\n SHA224withRSAandMGF1: \"cryptojs/jsrsa\",\r\n SHA256withRSAandMGF1: \"cryptojs/jsrsa\",\r\n SHA384withRSAandMGF1: \"cryptojs/jsrsa\",\r\n SHA512withRSAandMGF1: \"cryptojs/jsrsa\",\r\n RIPEMD160withRSAandMGF1: \"cryptojs/jsrsa\"\r\n };\r\n this.CRYPTOJSMESSAGEDIGESTNAME = {\r\n md5: \"CryptoJS.algo.MD5\",\r\n sha1: \"CryptoJS.algo.SHA1\",\r\n sha224: \"CryptoJS.algo.SHA224\",\r\n sha256: \"CryptoJS.algo.SHA256\",\r\n sha384: \"CryptoJS.algo.SHA384\",\r\n sha512: \"CryptoJS.algo.SHA512\",\r\n ripemd160: \"CryptoJS.algo.RIPEMD160\",\r\n sm3: \"CryptoJS.algo.SM3\"\r\n };\r\n this.getDigestInfoHex = function (a, b) {\r\n if (\"undefined\" == typeof this.DIGESTINFOHEAD[b])\r\n throw \"alg not supported in Util.DIGESTINFOHEAD: \" + b;\r\n return this.DIGESTINFOHEAD[b] + a\r\n };\r\n this.getPaddedDigestInfoHex = function (a, b, c) {\r\n var d = this.getDigestInfoHex(a, b);\r\n a = c / 4;\r\n if (d.length + 22 > a)\r\n throw \"key is too short for SigAlg: keylen=\" + c + \",\" + b;\r\n b = \"00\" + d;\r\n c = \"\";\r\n a = a - 4 - b.length;\r\n for (d = 0; d < a; d += 2)\r\n c += \"ff\";\r\n return \"0001\" + c + b\r\n };\r\n this.hashString = function (a, b) {\r\n return (new KJUR.crypto.MessageDigest({\r\n alg: b\r\n })).digestString(a)\r\n };\r\n this.hashHex = function (a, b) {\r\n return (new KJUR.crypto.MessageDigest({\r\n alg: b\r\n })).digestHex(a)\r\n };\r\n this.sha1 = function (a) {\r\n return (new KJUR.crypto.MessageDigest({\r\n alg: \"sha1\",\r\n prov: \"cryptojs\"\r\n })).digestString(a)\r\n };\r\n this.sha256 = function (a) {\r\n return (new KJUR.crypto.MessageDigest({\r\n alg: \"sha256\",\r\n prov: \"cryptojs\"\r\n })).digestString(a)\r\n };\r\n this.sha256Hex = function (a) {\r\n return (new KJUR.crypto.MessageDigest({\r\n alg: \"sha256\",\r\n prov: \"cryptojs\"\r\n })).digestHex(a)\r\n };\r\n this.sha512 = function (a) {\r\n return (new KJUR.crypto.MessageDigest({\r\n alg: \"sha512\",\r\n prov: \"cryptojs\"\r\n })).digestString(a)\r\n };\r\n this.sha512Hex = function (a) {\r\n return (new KJUR.crypto.MessageDigest({\r\n alg: \"sha512\",\r\n prov: \"cryptojs\"\r\n })).digestHex(a)\r\n };\r\n this.md5 = function (a) {\r\n return (new KJUR.crypto.MessageDigest({\r\n alg: \"md5\",\r\n prov: \"cryptojs\"\r\n })).digestString(a)\r\n };\r\n this.ripemd160 = function (a) {\r\n return (new KJUR.crypto.MessageDigest({\r\n alg: \"ripemd160\",\r\n prov: \"cryptojs\"\r\n })).digestString(a)\r\n };\r\n this.getCryptoJSMDByName = function (a) {}\r\n };\r\n KJUR.crypto.MessageDigest = function (a) {\r\n this.setAlgAndProvider = function (a, c) {\r\n null != a && void 0 === c && (c = KJUR.crypto.Util.DEFAULTPROVIDER[a]);\r\n if (-1 != \":md5:sha1:sha224:sha256:sha384:sha512:ripemd160:sm3:\".indexOf(a) && \"cryptojs\" == c) {\r\n try {\r\n this.md = eval(KJUR.crypto.Util.CRYPTOJSMESSAGEDIGESTNAME[a]).create()\r\n } catch (d) {\r\n throw \"setAlgAndProvider hash alg set fail alg=\" + a + \"/\" + d;\r\n }\r\n this.updateString = function (a) {\r\n this.md.update(a)\r\n };\r\n this.updateHex = function (a) {\r\n a = CryptoJS.enc.Hex.parse(a);\r\n this.md.update(a)\r\n };\r\n this.digest = function () {\r\n return this.md.finalize().toString(CryptoJS.enc.Hex)\r\n };\r\n this.digestString = function (a) {\r\n this.updateString(a);\r\n return this.digest()\r\n };\r\n this.digestHex = function (a) {\r\n this.updateHex(a);\r\n return this.digest()\r\n }\r\n }\r\n if (-1 != \":sha256:\".indexOf(a) && \"sjcl\" == c) {\r\n try {\r\n this.md = new sjcl.hash.sha256\r\n } catch (d) {\r\n throw \"setAlgAndProvider hash alg set fail alg=\" + a + \"/\" + d;\r\n }\r\n this.updateString = function (a) {\r\n this.md.update(a)\r\n };\r\n this.updateHex = function (a) {\r\n a = sjcl.codec.hex.toBits(a);\r\n this.md.update(a)\r\n };\r\n this.digest = function () {\r\n var a = this.md.finalize();\r\n return sjcl.codec.hex.fromBits(a)\r\n };\r\n this.digestString = function (a) {\r\n this.updateString(a);\r\n return this.digest()\r\n };\r\n this.digestHex = function (a) {\r\n this.updateHex(a);\r\n return this.digest()\r\n }\r\n }\r\n };\r\n this.updateString = function (a) {\r\n throw \"updateString(str) not supported for this alg/prov: \" + this.algName + \"/\" + this.provName;\r\n };\r\n this.updateHex = function (a) {\r\n throw \"updateHex(hex) not supported for this alg/prov: \" + this.algName + \"/\" + this.provName;\r\n };\r\n this.digest = function () {\r\n throw \"digest() not supported for this alg/prov: \" + this.algName + \"/\" + this.provName;\r\n };\r\n this.digestString = function (a) {\r\n throw \"digestString(str) not supported for this alg/prov: \" + this.algName + \"/\" + this.provName;\r\n };\r\n this.digestHex = function (a) {\r\n throw \"digestHex(hex) not supported for this alg/prov: \" + this.algName + \"/\" + this.provName;\r\n };\r\n void 0 !== a && void 0 !== a.alg && (this.algName = a.alg,\r\n void 0 === a.prov && (this.provName = KJUR.crypto.Util.DEFAULTPROVIDER[this.algName]),\r\n this.setAlgAndProvider(this.algName, this.provName))\r\n };\r\n KJUR.crypto.Mac = function (a) {\r\n this.setAlgAndProvider = function (a, c) {\r\n null == a && (a = \"hmacsha1\");\r\n a = a.toLowerCase();\r\n if (\"hmac\" != a.substr(0, 4))\r\n throw \"setAlgAndProvider unsupported HMAC alg: \" + a;\r\n void 0 === c && (c = KJUR.crypto.Util.DEFAULTPROVIDER[a]);\r\n this.algProv = a + \"/\" + c;\r\n var d = a.substr(4);\r\n if (-1 != \":md5:sha1:sha224:sha256:sha384:sha512:ripemd160:\".indexOf(d) && \"cryptojs\" == c) {\r\n try {\r\n var e = eval(KJUR.crypto.Util.CRYPTOJSMESSAGEDIGESTNAME[d]);\r\n this.mac = CryptoJS.algo.HMAC.create(e, this.pass)\r\n } catch (f) {\r\n throw \"setAlgAndProvider hash alg set fail hashAlg=\" + d + \"/\" + f;\r\n }\r\n this.updateString = function (a) {\r\n this.mac.update(a)\r\n };\r\n this.updateHex = function (a) {\r\n a = CryptoJS.enc.Hex.parse(a);\r\n this.mac.update(a)\r\n };\r\n this.doFinal = function () {\r\n return this.mac.finalize().toString(CryptoJS.enc.Hex)\r\n };\r\n this.doFinalString = function (a) {\r\n this.updateString(a);\r\n return this.doFinal()\r\n };\r\n this.doFinalHex = function (a) {\r\n this.updateHex(a);\r\n return this.doFinal()\r\n }\r\n }\r\n };\r\n this.updateString = function (a) {\r\n throw \"updateString(str) not supported for this alg/prov: \" + this.algProv;\r\n };\r\n this.updateHex = function (a) {\r\n throw \"updateHex(hex) not supported for this alg/prov: \" + this.algProv;\r\n };\r\n this.doFinal = function () {\r\n throw \"digest() not supported for this alg/prov: \" + this.algProv;\r\n };\r\n this.doFinalString = function (a) {\r\n throw \"digestString(str) not supported for this alg/prov: \" + this.algProv;\r\n };\r\n this.doFinalHex = function (a) {\r\n throw \"digestHex(hex) not supported for this alg/prov: \" + this.algProv;\r\n };\r\n void 0 !== a && (void 0 !== a.pass && (this.pass = a.pass),\r\n void 0 !== a.alg && (this.algName = a.alg,\r\n void 0 === a.prov && (this.provName = KJUR.crypto.Util.DEFAULTPROVIDER[this.algName]),\r\n this.setAlgAndProvider(this.algName, this.provName)))\r\n };\r\n KJUR.crypto.Signature = function (a) {\r\n var b = null;\r\n this._setAlgNames = function () {\r\n this.algName.match(/^(.+)with(.+)$/) && (this.mdAlgName = RegExp.$1.toLowerCase(),\r\n this.pubkeyAlgName = RegExp.$2.toLowerCase())\r\n };\r\n this._zeroPaddingOfSignature = function (a, b) {\r\n for (var e = \"\", f = b / 4 - a.length, g = 0; g < f; g++)\r\n e += \"0\";\r\n return e + a\r\n };\r\n this.setAlgAndProvider = function (a, b) {\r\n this._setAlgNames();\r\n if (\"cryptojs/jsrsa\" != b)\r\n throw \"provider not supported: \" + b;\r\n if (-1 != \":md5:sha1:sha224:sha256:sha384:sha512:ripemd160:sm3:\".indexOf(this.mdAlgName)) {\r\n try {\r\n this.md = new KJUR.crypto.MessageDigest({\r\n alg: this.mdAlgName\r\n })\r\n } catch (e) {\r\n throw \"setAlgAndProvider hash alg set fail alg=\" + this.mdAlgName + \"/\" + e;\r\n }\r\n this.init = function (a, c) {\r\n var b = null;\r\n try {\r\n b = void 0 === c ? KEYUTIL.getKey(a) : KEYUTIL.getKey(a, c)\r\n } catch (d) {\r\n throw \"init failed:\" + d;\r\n }\r\n if (!0 === b.isPrivate)\r\n this.prvKey = b,\r\n this.state = \"SIGN\";\r\n else if (!0 === b.isPublic)\r\n this.pubKey = b,\r\n this.state = \"VERIFY\";\r\n else\r\n throw \"init failed.:\" + b;\r\n };\r\n this.initSign = function (a) {\r\n \"string\" == typeof a.ecprvhex && \"string\" == typeof a.eccurvename ? (this.ecprvhex = a.ecprvhex,\r\n this.eccurvename = a.eccurvename) : this.prvKey = a;\r\n this.state = \"SIGN\"\r\n };\r\n this.initVerifyByPublicKey = function (a) {\r\n \"string\" == typeof a.ecpubhex && \"string\" == typeof a.eccurvename ? (this.ecpubhex = a.ecpubhex,\r\n this.eccurvename = a.eccurvename) : a instanceof KJUR.crypto.ECDSA ? this.pubKey = a : a instanceof RSAKey && (this.pubKey = a);\r\n this.state = \"VERIFY\"\r\n };\r\n this.initVerifyByCertificatePEM = function (a) {\r\n var c = new X509;\r\n c.readCertPEM(a);\r\n this.pubKey = c.subjectPublicKeyRSA;\r\n this.state = \"VERIFY\"\r\n };\r\n this.updateString = function (a) {\r\n this.md.updateString(a)\r\n };\r\n this.updateHex = function (a) {\r\n this.md.updateHex(a)\r\n };\r\n this.sign = function () {\r\n \"sm2\" != this.eccurvename && (this.sHashHex = this.md.digest());\r\n if (\"undefined\" != typeof this.ecprvhex && \"undefined\" != typeof this.eccurvename) {\r\n if (\"sm2\" == this.eccurvename) {\r\n var a = new KJUR.crypto.SM3withSM2({\r\n curve: this.eccurvename\r\n }),\r\n c = a.ecparams.G,\r\n b = c.multiply(new BigInteger(this.ecprvhex, 16)),\r\n d = b.getX().toBigInteger().toRadix(16) + b.getY().toBigInteger().toRadix(16),\r\n b = new SM3Digest,\r\n c = (new SM3Digest).GetZ(c, d),\r\n c = b.GetWords(b.GetHex(c).toString()),\r\n d = CryptoJS.enc.Utf8.stringify(this.md.md._data),\r\n d = CryptoJS.enc.Utf8.parse(d).toString(),\r\n d = b.GetWords(d),\r\n k = Array(b.GetDigestSize());\r\n b.BlockUpdate(c, 0, c.length);\r\n b.BlockUpdate(d, 0, d.length);\r\n b.DoFinal(k, 0);\r\n this.sHashHex = b.GetHex(k).toString()\r\n } else\r\n a = new KJUR.crypto.ECDSA({\r\n curve: this.eccurvename\r\n });\r\n this.hSign = a.signHex(this.sHashHex, this.ecprvhex)\r\n } else if (\"rsaandmgf1\" == this.pubkeyAlgName)\r\n this.hSign = this.prvKey.signWithMessageHashPSS(this.sHashHex, this.mdAlgName, this.pssSaltLen);\r\n else if (\"rsa\" == this.pubkeyAlgName)\r\n this.hSign = this.prvKey.signWithMessageHash(this.sHashHex, this.mdAlgName);\r\n else if (this.prvKey instanceof KJUR.crypto.ECDSA)\r\n this.hSign = this.prvKey.signWithMessageHash(this.sHashHex);\r\n else if (this.prvKey instanceof KJUR.crypto.DSA)\r\n this.hSign = this.prvKey.signWithMessageHash(this.sHashHex);\r\n else\r\n throw \"Signature: unsupported public key alg: \" + this.pubkeyAlgName;\r\n return this.hSign\r\n };\r\n this.signString = function (a) {\r\n this.updateString(a);\r\n this.sign()\r\n };\r\n this.signHex = function (a) {\r\n this.updateHex(a);\r\n this.sign()\r\n };\r\n this.verify = function (a) {\r\n \"sm2\" != this.eccurvename && (this.sHashHex = this.md.digest());\r\n if (\"undefined\" != typeof this.ecpubhex && \"undefined\" != typeof this.eccurvename) {\r\n if (\"sm2\" == this.eccurvename) {\r\n var c = new KJUR.crypto.SM3withSM2({\r\n curve: this.eccurvename\r\n }),\r\n b = c.ecparams.G,\r\n d = this.ecpubhex.substr(2, 128),\r\n k = new SM3Digest,\r\n b = (new SM3Digest).GetZ(b, d),\r\n b = k.GetWords(k.GetHex(b).toString()),\r\n d = CryptoJS.enc.Utf8.stringify(this.md.md._data),\r\n d = CryptoJS.enc.Utf8.parse(d).toString(),\r\n d = k.GetWords(d),\r\n l = Array(k.GetDigestSize());\r\n k.BlockUpdate(b, 0, b.length);\r\n k.BlockUpdate(d, 0, d.length);\r\n k.DoFinal(l, 0);\r\n this.sHashHex = k.GetHex(l).toString()\r\n } else\r\n c = new KJUR.crypto.ECDSA({\r\n curve: this.eccurvename\r\n });\r\n return c.verifyHex(this.sHashHex, a, this.ecpubhex)\r\n }\r\n if (\"rsaandmgf1\" == this.pubkeyAlgName)\r\n return this.pubKey.verifyWithMessageHashPSS(this.sHashHex, a, this.mdAlgName, this.pssSaltLen);\r\n if (\"rsa\" == this.pubkeyAlgName || this.pubKey instanceof KJUR.crypto.ECDSA || this.pubKey instanceof KJUR.crypto.DSA)\r\n return this.pubKey.verifyWithMessageHash(this.sHashHex, a);\r\n throw \"Signature: unsupported public key alg: \" + this.pubkeyAlgName;\r\n }\r\n }\r\n };\r\n this.init = function (a, b) {\r\n throw \"init(key, pass) not supported for this alg:prov=\" + this.algProvName;\r\n };\r\n this.initVerifyByPublicKey = function (a) {\r\n throw \"initVerifyByPublicKey(rsaPubKeyy) not supported for this alg:prov=\" + this.algProvName;\r\n };\r\n this.initVerifyByCertificatePEM = function (a) {\r\n throw \"initVerifyByCertificatePEM(certPEM) not supported for this alg:prov=\" + this.algProvName;\r\n };\r\n this.initSign = function (a) {\r\n throw \"initSign(prvKey) not supported for this alg:prov=\" + this.algProvName;\r\n };\r\n this.updateString = function (a) {\r\n throw \"updateString(str) not supported for this alg:prov=\" + this.algProvName;\r\n };\r\n this.updateHex = function (a) {\r\n throw \"updateHex(hex) not supported for this alg:prov=\" + this.algProvName;\r\n };\r\n this.sign = function () {\r\n throw \"sign() not supported for this alg:prov=\" + this.algProvName;\r\n };\r\n this.signString = function (a) {\r\n throw \"digestString(str) not supported for this alg:prov=\" + this.algProvName;\r\n };\r\n this.signHex = function (a) {\r\n throw \"digestHex(hex) not supported for this alg:prov=\" + this.algProvName;\r\n };\r\n this.verify = function (a) {\r\n throw \"verify(hSigVal) not supported for this alg:prov=\" + this.algProvName;\r\n };\r\n this.initParams = a;\r\n if (void 0 !== a && (void 0 !== a.alg && (this.algName = a.alg,\r\n this.provName = void 0 === a.prov ? KJUR.crypto.Util.DEFAULTPROVIDER[this.algName] : a.prov,\r\n this.algProvName = this.algName + \":\" + this.provName,\r\n this.setAlgAndProvider(this.algName, this.provName),\r\n this._setAlgNames()),\r\n void 0 !== a.psssaltlen && (this.pssSaltLen = a.psssaltlen),\r\n void 0 !== a.prvkeypem)) {\r\n if (void 0 !== a.prvkeypas)\r\n throw \"both prvkeypem and prvkeypas parameters not supported\";\r\n try {\r\n b = new RSAKey,\r\n b.readPrivateKeyFromPEMString(a.prvkeypem),\r\n this.initSign(b)\r\n } catch (c) {\r\n throw \"fatal error to load pem private key: \" + c;\r\n }\r\n }\r\n };\r\n KJUR.crypto.OID = new function () {\r\n this.oidhex2name = {\r\n \"2a864886f70d010101\": \"rsaEncryption\",\r\n \"2a8648ce3d0201\": \"ecPublicKey\",\r\n \"2a8648ce380401\": \"dsa\",\r\n \"2a8648ce3d030107\": \"secp256r1\",\r\n \"2b8104001f\": \"secp192k1\",\r\n \"2b81040021\": \"secp224r1\",\r\n \"2b8104000a\": \"secp256k1\",\r\n \"2b81040023\": \"secp521r1\",\r\n \"2b81040022\": \"secp384r1\",\r\n \"2a8648ce380403\": \"SHA1withDSA\",\r\n \"608648016503040301\": \"SHA224withDSA\",\r\n \"608648016503040302\": \"SHA256withDSA\"\r\n }\r\n };\r\n\r\n function ECFieldElementFp(a, b) {\r\n this.x = b;\r\n this.q = a\r\n }\r\n\r\n function feFpEquals(a) {\r\n return a == this ? !0 : this.q.equals(a.q) && this.x.equals(a.x)\r\n }\r\n\r\n function feFpToBigInteger() {\r\n return this.x\r\n }\r\n\r\n function feFpNegate() {\r\n return new ECFieldElementFp(this.q, this.x.negate().mod(this.q))\r\n }\r\n\r\n function feFpAdd(a) {\r\n return new ECFieldElementFp(this.q, this.x.add(a.toBigInteger()).mod(this.q))\r\n }\r\n\r\n function feFpSubtract(a) {\r\n return new ECFieldElementFp(this.q, this.x.subtract(a.toBigInteger()).mod(this.q))\r\n }\r\n\r\n function feFpMultiply(a) {\r\n return new ECFieldElementFp(this.q, this.x.multiply(a.toBigInteger()).mod(this.q))\r\n }\r\n\r\n function feFpSquare() {\r\n return new ECFieldElementFp(this.q, this.x.square().mod(this.q))\r\n }\r\n\r\n function feFpDivide(a) {\r\n return new ECFieldElementFp(this.q, this.x.multiply(a.toBigInteger().modInverse(this.q)).mod(this.q))\r\n }\r\n ECFieldElementFp.prototype.equals = feFpEquals;\r\n ECFieldElementFp.prototype.toBigInteger = feFpToBigInteger;\r\n ECFieldElementFp.prototype.negate = feFpNegate;\r\n ECFieldElementFp.prototype.add = feFpAdd;\r\n ECFieldElementFp.prototype.subtract = feFpSubtract;\r\n ECFieldElementFp.prototype.multiply = feFpMultiply;\r\n ECFieldElementFp.prototype.square = feFpSquare;\r\n ECFieldElementFp.prototype.divide = feFpDivide;\r\n\r\n function ECPointFp(a, b, c, d) {\r\n this.curve = a;\r\n this.x = b;\r\n this.y = c;\r\n this.z = null == d ? BigInteger.ONE : d;\r\n this.zinv = null\r\n }\r\n\r\n function pointFpGetX() {\r\n null == this.zinv && (this.zinv = this.z.modInverse(this.curve.q));\r\n return this.curve.fromBigInteger(this.x.toBigInteger().multiply(this.zinv).mod(this.curve.q))\r\n }\r\n\r\n function pointFpGetY() {\r\n null == this.zinv && (this.zinv = this.z.modInverse(this.curve.q));\r\n return this.curve.fromBigInteger(this.y.toBigInteger().multiply(this.zinv).mod(this.curve.q))\r\n }\r\n\r\n function pointFpEquals(a) {\r\n return a == this ? !0 : this.isInfinity() ? a.isInfinity() : a.isInfinity() ? this.isInfinity() : a.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(a.z)).mod(this.curve.q).equals(BigInteger.ZERO) ? a.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(a.z)).mod(this.curve.q).equals(BigInteger.ZERO) : !1\r\n }\r\n\r\n function pointFpIsInfinity() {\r\n return null == this.x && null == this.y ? !0 : this.z.equals(BigInteger.ZERO) && !this.y.toBigInteger().equals(BigInteger.ZERO)\r\n }\r\n\r\n function pointFpNegate() {\r\n return new ECPointFp(this.curve, this.x, this.y.negate(), this.z)\r\n }\r\n\r\n function pointFpAdd(a) {\r\n if (this.isInfinity())\r\n return a;\r\n if (a.isInfinity())\r\n return this;\r\n var b = a.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(a.z)).mod(this.curve.q),\r\n c = a.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(a.z)).mod(this.curve.q);\r\n if (BigInteger.ZERO.equals(c))\r\n return BigInteger.ZERO.equals(b) ? this.twice() : this.curve.getInfinity();\r\n var d = new BigInteger(\"3\"),\r\n e = this.x.toBigInteger(),\r\n f = this.y.toBigInteger();\r\n a.x.toBigInteger();\r\n a.y.toBigInteger();\r\n var g = c.square(),\r\n h = g.multiply(c),\r\n e = e.multiply(g),\r\n g = b.square().multiply(this.z),\r\n c = g.subtract(e.shiftLeft(1)).multiply(a.z).subtract(h).multiply(c).mod(this.curve.q),\r\n b = e.multiply(d).multiply(b).subtract(f.multiply(h)).subtract(g.multiply(b)).multiply(a.z).add(b.multiply(h)).mod(this.curve.q);\r\n a = h.multiply(this.z).multiply(a.z).mod(this.curve.q);\r\n return new ECPointFp(this.curve, this.curve.fromBigInteger(c), this.curve.fromBigInteger(b), a)\r\n }\r\n\r\n function pointFpTwice() {\r\n if (this.isInfinity())\r\n return this;\r\n if (0 == this.y.toBigInteger().signum())\r\n return this.curve.getInfinity();\r\n var a = new BigInteger(\"3\"),\r\n b = this.x.toBigInteger(),\r\n c = this.y.toBigInteger(),\r\n d = c.multiply(this.z),\r\n e = d.multiply(c).mod(this.curve.q),\r\n c = this.curve.a.toBigInteger(),\r\n f = b.square().multiply(a);\r\n BigInteger.ZERO.equals(c) || (f = f.add(this.z.square().multiply(c)));\r\n f = f.mod(this.curve.q);\r\n c = f.square().subtract(b.shiftLeft(3).multiply(e)).shiftLeft(1).multiply(d).mod(this.curve.q);\r\n a = f.multiply(a).multiply(b).subtract(e.shiftLeft(1)).shiftLeft(2).multiply(e).subtract(f.square().multiply(f)).mod(this.curve.q);\r\n d = d.square().multiply(d).shiftLeft(3).mod(this.curve.q);\r\n return new ECPointFp(this.curve, this.curve.fromBigInteger(c), this.curve.fromBigInteger(a), d)\r\n }\r\n\r\n function pointFpMultiply(a) {\r\n if (this.isInfinity())\r\n return this;\r\n if (0 == a.signum())\r\n return this.curve.getInfinity();\r\n var b = a.multiply(new BigInteger(\"3\")),\r\n c = this.negate(),\r\n d = this,\r\n e;\r\n for (e = b.bitLength() - 2; 0 < e; --e) {\r\n var d = d.twice(),\r\n f = b.testBit(e),\r\n g = a.testBit(e);\r\n f != g && (d = d.add(f ? this : c))\r\n }\r\n return d\r\n }\r\n\r\n function pointFpMultiplyTwo(a, b, c) {\r\n var d;\r\n d = a.bitLength() > c.bitLength() ? a.bitLength() - 1 : c.bitLength() - 1;\r\n for (var e = this.curve.getInfinity(), f = this.add(b); 0 <= d;)\r\n e = e.twice(),\r\n a.testBit(d) ? e = c.testBit(d) ? e.add(f) : e.add(this) : c.testBit(d) && (e = e.add(b)),\r\n --d;\r\n return e\r\n }\r\n ECPointFp.prototype.getX = pointFpGetX;\r\n ECPointFp.prototype.getY = pointFpGetY;\r\n ECPointFp.prototype.equals = pointFpEquals;\r\n ECPointFp.prototype.isInfinity = pointFpIsInfinity;\r\n ECPointFp.prototype.negate = pointFpNegate;\r\n ECPointFp.prototype.add = pointFpAdd;\r\n ECPointFp.prototype.twice = pointFpTwice;\r\n ECPointFp.prototype.multiply = pointFpMultiply;\r\n ECPointFp.prototype.multiplyTwo = pointFpMultiplyTwo;\r\n\r\n function ECCurveFp(a, b, c) {\r\n this.q = a;\r\n this.a = this.fromBigInteger(b);\r\n this.b = this.fromBigInteger(c);\r\n this.infinity = new ECPointFp(this, null, null)\r\n }\r\n\r\n function curveFpGetQ() {\r\n return this.q\r\n }\r\n\r\n function curveFpGetA() {\r\n return this.a\r\n }\r\n\r\n function curveFpGetB() {\r\n return this.b\r\n }\r\n\r\n function curveFpEquals(a) {\r\n return a == this ? !0 : this.q.equals(a.q) && this.a.equals(a.a) && this.b.equals(a.b)\r\n }\r\n\r\n function curveFpGetInfinity() {\r\n return this.infinity\r\n }\r\n\r\n function curveFpFromBigInteger(a) {\r\n return new ECFieldElementFp(this.q, a)\r\n }\r\n\r\n function curveFpDecodePointHex(a) {\r\n switch (parseInt(a.substr(0, 2), 16)) {\r\n case 0:\r\n return this.infinity;\r\n case 2:\r\n case 3:\r\n return null;\r\n case 4:\r\n case 6:\r\n case 7:\r\n var b = (a.length - 2) / 2,\r\n c = a.substr(2, b);\r\n a = a.substr(b + 2, b);\r\n return new ECPointFp(this, this.fromBigInteger(new BigInteger(c, 16)), this.fromBigInteger(new BigInteger(a, 16)));\r\n default:\r\n return null\r\n }\r\n }\r\n ECCurveFp.prototype.getQ = curveFpGetQ;\r\n ECCurveFp.prototype.getA = curveFpGetA;\r\n ECCurveFp.prototype.getB = curveFpGetB;\r\n ECCurveFp.prototype.equals = curveFpEquals;\r\n ECCurveFp.prototype.getInfinity = curveFpGetInfinity;\r\n ECCurveFp.prototype.fromBigInteger = curveFpFromBigInteger;\r\n ECCurveFp.prototype.decodePointHex = curveFpDecodePointHex;\r\n ECFieldElementFp.prototype.getByteLength = function () {\r\n return Math.floor((this.toBigInteger().bitLength() + 7) / 8)\r\n };\r\n ECPointFp.prototype.getEncoded = function (a) {\r\n var b = function (a, c) {\r\n var b = a.toByteArrayUnsigned();\r\n if (c < b.length)\r\n b = b.slice(b.length - c);\r\n else\r\n for (; c > b.length;)\r\n b.unshift(0);\r\n return b\r\n },\r\n c = this.getX().toBigInteger(),\r\n d = this.getY().toBigInteger(),\r\n c = b(c, 32);\r\n a ? d.isEven() ? c.unshift(2) : c.unshift(3) : (c.unshift(4),\r\n c = c.concat(b(d, 32)));\r\n return c\r\n };\r\n ECPointFp.decodeFrom = function (a, b) {\r\n var c = b.length - 1,\r\n d = b.slice(1, 1 + c / 2),\r\n c = b.slice(1 + c / 2, 1 + c);\r\n d.unshift(0);\r\n c.unshift(0);\r\n d = new BigInteger(d);\r\n c = new BigInteger(c);\r\n return new ECPointFp(a, a.fromBigInteger(d), a.fromBigInteger(c))\r\n };\r\n ECPointFp.decodeFromHex = function (a, b) {\r\n b.substr(0, 2);\r\n var c = b.length - 2,\r\n d = b.substr(2, c / 2),\r\n c = b.substr(2 + c / 2, c / 2),\r\n d = new BigInteger(d, 16),\r\n c = new BigInteger(c, 16);\r\n return new ECPointFp(a, a.fromBigInteger(d), a.fromBigInteger(c))\r\n };\r\n ECPointFp.prototype.add2D = function (a) {\r\n if (this.isInfinity())\r\n return a;\r\n if (a.isInfinity())\r\n return this;\r\n if (this.x.equals(a.x))\r\n return this.y.equals(a.y) ? this.twice() : this.curve.getInfinity();\r\n var b = a.x.subtract(this.x),\r\n b = a.y.subtract(this.y).divide(b);\r\n a = b.square().subtract(this.x).subtract(a.x);\r\n b = b.multiply(this.x.subtract(a)).subtract(this.y);\r\n return new ECPointFp(this.curve, a, b)\r\n };\r\n ECPointFp.prototype.twice2D = function () {\r\n if (this.isInfinity())\r\n return this;\r\n if (0 == this.y.toBigInteger().signum())\r\n return this.curve.getInfinity();\r\n var a = this.curve.fromBigInteger(BigInteger.valueOf(2)),\r\n b = this.curve.fromBigInteger(BigInteger.valueOf(3)),\r\n b = this.x.square().multiply(b).add(this.curve.a).divide(this.y.multiply(a)),\r\n a = b.square().subtract(this.x.multiply(a)),\r\n b = b.multiply(this.x.subtract(a)).subtract(this.y);\r\n return new ECPointFp(this.curve, a, b)\r\n };\r\n ECPointFp.prototype.multiply2D = function (a) {\r\n if (this.isInfinity())\r\n return this;\r\n if (0 == a.signum())\r\n return this.curve.getInfinity();\r\n var b = a.multiply(new BigInteger(\"3\")),\r\n c = this.negate(),\r\n d = this,\r\n e;\r\n for (e = b.bitLength() - 2; 0 < e; --e) {\r\n var d = d.twice(),\r\n f = b.testBit(e),\r\n g = a.testBit(e);\r\n f != g && (d = d.add2D(f ? this : c))\r\n }\r\n return d\r\n };\r\n ECPointFp.prototype.isOnCurve = function () {\r\n var a = this.getX().toBigInteger(),\r\n b = this.getY().toBigInteger(),\r\n c = this.curve.getA().toBigInteger(),\r\n d = this.curve.getB().toBigInteger(),\r\n e = this.curve.getQ(),\r\n b = b.multiply(b).mod(e),\r\n a = a.multiply(a).multiply(a).add(c.multiply(a)).add(d).mod(e);\r\n return b.equals(a)\r\n };\r\n ECPointFp.prototype.toString = function () {\r\n return \"(\" + this.getX().toBigInteger().toString() + \",\" + this.getY().toBigInteger().toString() + \")\"\r\n };\r\n ECPointFp.prototype.validate = function () {\r\n var a = this.curve.getQ();\r\n if (this.isInfinity())\r\n throw Error(\"Point is at infinity.\");\r\n var b = this.getX().toBigInteger(),\r\n c = this.getY().toBigInteger();\r\n if (0 > b.compareTo(BigInteger.ONE) || 0 < b.compareTo(a.subtract(BigInteger.ONE)))\r\n throw Error(\"x coordinate out of bounds\");\r\n if (0 > c.compareTo(BigInteger.ONE) || 0 < c.compareTo(a.subtract(BigInteger.ONE)))\r\n throw Error(\"y coordinate out of bounds\");\r\n if (!this.isOnCurve())\r\n throw Error(\"Point is not on the curve.\");\r\n if (this.multiply(a).isInfinity())\r\n throw Error(\"Point is not a scalar multiple of G.\");\r\n return !0\r\n };\r\n \"undefined\" != typeof KJUR && KJUR || (KJUR = {});\r\n \"undefined\" != typeof KJUR.crypto && KJUR.crypto || (KJUR.crypto = {});\r\n KJUR.crypto.ECDSA = function (a) {\r\n var b = new SecureRandom;\r\n this.type = \"EC\";\r\n this.getBigRandom = function (a) {\r\n return (new BigInteger(a.bitLength(), b)).mod(a.subtract(BigInteger.ONE)).add(BigInteger.ONE)\r\n };\r\n this.setNamedCurve = function (a) {\r\n this.ecparams = KJUR.crypto.ECParameterDB.getByName(a);\r\n this.pubKeyHex = this.prvKeyHex = null;\r\n this.curveName = a\r\n };\r\n this.setPrivateKeyHex = function (a) {\r\n this.isPrivate = !0;\r\n this.prvKeyHex = a\r\n };\r\n this.setPublicKeyHex = function (a) {\r\n this.isPublic = !0;\r\n this.pubKeyHex = a\r\n };\r\n this.generateKeyPairHex = function () {\r\n var a = this.getBigRandom(this.ecparams.n),\r\n b = this.ecparams.G.multiply(a),\r\n e = b.getX().toBigInteger(),\r\n b = b.getY().toBigInteger(),\r\n f = this.ecparams.keylen / 4,\r\n a = (\"0000000000\" + a.toString(16)).slice(-f),\r\n e = (\"0000000000\" + e.toString(16)).slice(-f),\r\n b = (\"0000000000\" + b.toString(16)).slice(-f),\r\n e = \"04\" + e + b;\r\n this.setPrivateKeyHex(a);\r\n this.setPublicKeyHex(e);\r\n return {\r\n ecprvhex: a,\r\n ecpubhex: e\r\n }\r\n };\r\n this.signWithMessageHash = function (a) {\r\n return this.signHex(a, this.prvKeyHex)\r\n };\r\n this.signHex = function (a, b) {\r\n var e = new BigInteger(b, 16),\r\n f = this.ecparams.n,\r\n g = new BigInteger(a, 16);\r\n do\r\n var h = this.getBigRandom(f),\r\n k = this.ecparams.G.multiply(h).getX().toBigInteger().mod(f);\r\n while (0 >= k.compareTo(BigInteger.ZERO));\r\n e = h.modInverse(f).multiply(g.add(e.multiply(k))).mod(f);\r\n return KJUR.crypto.ECDSA.biRSSigToASN1Sig(k, e)\r\n };\r\n this.sign = function (a, b) {\r\n var e = this.ecparams.n,\r\n f = BigInteger.fromByteArrayUnsigned(a);\r\n do\r\n var g = this.getBigRandom(e),\r\n h = this.ecparams.G.multiply(g).getX().toBigInteger().mod(e);\r\n while (0 >= h.compareTo(BigInteger.ZERO));\r\n e = g.modInverse(e).multiply(f.add(b.multiply(h))).mod(e);\r\n return this.serializeSig(h, e)\r\n };\r\n this.verifyWithMessageHash = function (a, b) {\r\n return this.verifyHex(a, b, this.pubKeyHex)\r\n };\r\n this.verifyHex = function (a, b, e) {\r\n var f;\r\n f = KJUR.crypto.ECDSA.parseSigHex(b);\r\n b = f.r;\r\n f = f.s;\r\n e = ECPointFp.decodeFromHex(this.ecparams.curve, e);\r\n a = new BigInteger(a, 16);\r\n return this.verifyRaw(a, b, f, e)\r\n };\r\n this.verify = function (a, b, e) {\r\n var f;\r\n if (Bitcoin.Util.isArray(b))\r\n b = this.parseSig(b),\r\n f = b.r,\r\n b = b.s;\r\n else if (\"object\" === typeof b && b.r && b.s)\r\n f = b.r,\r\n b = b.s;\r\n else\r\n throw \"Invalid value for signature\";\r\n if (!(e instanceof ECPointFp))\r\n if (Bitcoin.Util.isArray(e))\r\n e = ECPointFp.decodeFrom(this.ecparams.curve, e);\r\n else\r\n throw \"Invalid format for pubkey value, must be byte array or ECPointFp\";\r\n a = BigInteger.fromByteArrayUnsigned(a);\r\n return this.verifyRaw(a, f, b, e)\r\n };\r\n this.verifyRaw = function (a, b, e, f) {\r\n var g = this.ecparams.n,\r\n h = this.ecparams.G;\r\n if (0 > b.compareTo(BigInteger.ONE) || 0 <= b.compareTo(g) || 0 > e.compareTo(BigInteger.ONE) || 0 <= e.compareTo(g))\r\n return !1;\r\n e = e.modInverse(g);\r\n a = a.multiply(e).mod(g);\r\n e = b.multiply(e).mod(g);\r\n return h.multiply(a).add(f.multiply(e)).getX().toBigInteger().mod(g).equals(b)\r\n };\r\n this.serializeSig = function (a, b) {\r\n var e = a.toByteArraySigned(),\r\n f = b.toByteArraySigned(),\r\n g = [];\r\n g.push(2);\r\n g.push(e.length);\r\n g = g.concat(e);\r\n g.push(2);\r\n g.push(f.length);\r\n g = g.concat(f);\r\n g.unshift(g.length);\r\n g.unshift(48);\r\n return g\r\n };\r\n this.parseSig = function (a) {\r\n var b;\r\n if (48 != a[0])\r\n throw Error(\"Signature not a valid DERSequence\");\r\n b = 2;\r\n if (2 != a[b])\r\n throw Error(\"First element in signature must be a DERInteger\");\r\n var e = a.slice(b + 2, b + 2 + a[b + 1]);\r\n b += 2 + a[b + 1];\r\n if (2 != a[b])\r\n throw Error(\"Second element in signature must be a DERInteger\");\r\n a = a.slice(b + 2, b + 2 + a[b + 1]);\r\n e = BigInteger.fromByteArrayUnsigned(e);\r\n a = BigInteger.fromByteArrayUnsigned(a);\r\n return {\r\n r: e,\r\n s: a\r\n }\r\n };\r\n this.parseSigCompact = function (a) {\r\n if (65 !== a.length)\r\n throw \"Signature has the wrong length\";\r\n var b = a[0] - 27;\r\n if (0 > b || 7 < b)\r\n throw \"Invalid signature type\";\r\n var e = this.ecparams.n,\r\n f = BigInteger.fromByteArrayUnsigned(a.slice(1, 33)).mod(e);\r\n a = BigInteger.fromByteArrayUnsigned(a.slice(33, 65)).mod(e);\r\n return {\r\n r: f,\r\n s: a,\r\n i: b\r\n }\r\n };\r\n void 0 !== a && void 0 !== a.curve && (this.curveName = a.curve);\r\n void 0 === this.curveName && (this.curveName = \"secp256r1\");\r\n this.setNamedCurve(this.curveName);\r\n void 0 !== a && (void 0 !== a.prv && this.setPrivateKeyHex(a.prv),\r\n void 0 !== a.pub && this.setPublicKeyHex(a.pub))\r\n };\r\n KJUR.crypto.ECDSA.parseSigHex = function (a) {\r\n var b = KJUR.crypto.ECDSA.parseSigHexInHexRS(a);\r\n a = new BigInteger(b.r, 16);\r\n b = new BigInteger(b.s, 16);\r\n return {\r\n r: a,\r\n s: b\r\n }\r\n };\r\n KJUR.crypto.ECDSA.parseSigHexInHexRS = function (a) {\r\n if (\"30\" != a.substr(0, 2))\r\n throw \"signature is not a ASN.1 sequence\";\r\n var b = ASN1HEX.getPosArrayOfChildren_AtObj(a, 0);\r\n if (2 != b.length)\r\n throw \"number of signature ASN.1 sequence elements seem wrong\";\r\n var c = b[0],\r\n b = b[1];\r\n if (\"02\" != a.substr(c, 2))\r\n throw \"1st item of sequene of signature is not ASN.1 integer\";\r\n if (\"02\" != a.substr(b, 2))\r\n throw \"2nd item of sequene of signature is not ASN.1 integer\";\r\n c = ASN1HEX.getHexOfV_AtObj(a, c);\r\n a = ASN1HEX.getHexOfV_AtObj(a, b);\r\n return {\r\n r: c,\r\n s: a\r\n }\r\n };\r\n KJUR.crypto.ECDSA.asn1SigToConcatSig = function (a) {\r\n var b = KJUR.crypto.ECDSA.parseSigHexInHexRS(a);\r\n a = b.r;\r\n b = b.s;\r\n \"00\" == a.substr(0, 2) && 8 == a.length / 2 * 8 % 128 && (a = a.substr(2));\r\n \"00\" == b.substr(0, 2) && 8 == b.length / 2 * 8 % 128 && (b = b.substr(2));\r\n if (0 != a.length / 2 * 8 % 128)\r\n throw \"unknown ECDSA sig r length error\";\r\n if (0 != b.length / 2 * 8 % 128)\r\n throw \"unknown ECDSA sig s length error\";\r\n return a + b\r\n };\r\n KJUR.crypto.ECDSA.concatSigToASN1Sig = function (a) {\r\n if (0 != a.length / 2 * 8 % 128)\r\n throw \"unknown ECDSA concatinated r-s sig length error\";\r\n var b = a.substr(0, a.length / 2);\r\n a = a.substr(a.length / 2);\r\n return KJUR.crypto.ECDSA.hexRSSigToASN1Sig(b, a)\r\n };\r\n KJUR.crypto.ECDSA.hexRSSigToASN1Sig = function (a, b) {\r\n var c = new BigInteger(a, 16),\r\n d = new BigInteger(b, 16);\r\n return KJUR.crypto.ECDSA.biRSSigToASN1Sig(c, d)\r\n };\r\n KJUR.crypto.ECDSA.biRSSigToASN1Sig = function (a, b) {\r\n var c = new KJUR.asn1.DERInteger({\r\n bigint: a\r\n }),\r\n d = new KJUR.asn1.DERInteger({\r\n bigint: b\r\n });\r\n return (new KJUR.asn1.DERSequence({\r\n array: [c, d]\r\n })).getEncodedHex()\r\n };\r\n (function () {\r\n var a = CryptoJS,\r\n b = a.lib,\r\n c = b.WordArray,\r\n d = b.Hasher,\r\n e = [],\r\n b = a.algo.SM3 = d.extend({\r\n _doReset: function () {\r\n this._hash = new c.init([1937774191, 1226093241, 388252375, 3666478592, 2842636476, 372324522, 3817729613, 2969243214])\r\n },\r\n _doProcessBlock: function (a, b) {\r\n for (var c = this._hash.words, d = c[0], l = c[1], p = c[2], n = c[3], q = c[4], m = 0; 80 > m; m++) {\r\n if (16 > m)\r\n e[m] = a[b + m] | 0;\r\n else {\r\n var r = e[m - 3] ^ e[m - 8] ^ e[m - 14] ^ e[m - 16];\r\n e[m] = r << 1 | r >>> 31\r\n }\r\n r = (d << 5 | d >>> 27) + q + e[m];\r\n r = 20 > m ? r + ((l & p | ~l & n) + 1518500249) : 40 > m ? r + ((l ^ p ^ n) + 1859775393) : 60 > m ? r + ((l & p | l & n | p & n) - 1894007588) : r + ((l ^ p ^ n) - 899497514);\r\n q = n;\r\n n = p;\r\n p = l << 30 | l >>> 2;\r\n l = d;\r\n d = r\r\n }\r\n c[0] = c[0] + d | 0;\r\n c[1] = c[1] + l | 0;\r\n c[2] = c[2] + p | 0;\r\n c[3] = c[3] + n | 0;\r\n c[4] = c[4] + q | 0\r\n },\r\n _doFinalize: function () {\r\n var a = this._data,\r\n b = a.words,\r\n c = 8 * this._nDataBytes,\r\n d = 8 * a.sigBytes;\r\n b[d >>> 5] |= 128 << 24 - d % 32;\r\n b[(d + 64 >>> 9 << 4) + 14] = Math.floor(c / 4294967296);\r\n b[(d + 64 >>> 9 << 4) + 15] = c;\r\n a.sigBytes = 4 * b.length;\r\n this._process();\r\n return this._hash\r\n },\r\n clone: function () {\r\n var a = d.clone.call(this);\r\n a._hash = this._hash.clone();\r\n return a\r\n }\r\n });\r\n a.SM3 = d._createHelper(b);\r\n a.HmacSM3 = d._createHmacHelper(b)\r\n })();\r\n\r\n function SM3Digest() {\r\n this.BYTE_LENGTH = 64;\r\n this.xBuf = [];\r\n this.byteCount = this.xBufOff = 0;\r\n this.DIGEST_LENGTH = 32;\r\n this.v0 = [1937774191, 1226093241, 388252375, 3666478592, 2842636476, 372324522, 3817729613, 2969243214];\r\n this.v0 = [1937774191, 1226093241, 388252375, -628488704, -1452330820, 372324522, -477237683, -1325724082];\r\n this.v = Array(8);\r\n this.v_ = Array(8);\r\n this.X0 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\r\n this.X = Array(68);\r\n this.xOff = 0;\r\n this.T_00_15 = 2043430169;\r\n this.T_16_63 = 2055708042;\r\n 0 < arguments.length ? this.InitDigest(arguments[0]) : this.Init()\r\n }\r\n SM3Digest.prototype = {\r\n Init: function () {\r\n this.xBuf = Array(4);\r\n this.Reset()\r\n },\r\n InitDigest: function (a) {\r\n this.xBuf = Array(a.xBuf.length);\r\n Array.Copy(a.xBuf, 0, this.xBuf, 0, a.xBuf.length);\r\n this.xBufOff = a.xBufOff;\r\n this.byteCount = a.byteCount;\r\n Array.Copy(a.X, 0, this.X, 0, a.X.length);\r\n this.xOff = a.xOff;\r\n Array.Copy(a.v, 0, this.v, 0, a.v.length)\r\n },\r\n GetDigestSize: function () {\r\n return this.DIGEST_LENGTH\r\n },\r\n Reset: function () {\r\n this.xBufOff = this.byteCount = 0;\r\n Array.Clear(this.xBuf, 0, this.xBuf.length);\r\n Array.Copy(this.v0, 0, this.v, 0, this.v0.length);\r\n this.xOff = 0;\r\n Array.Copy(this.X0, 0, this.X, 0, this.X0.length)\r\n },\r\n GetByteLength: function () {\r\n return this.BYTE_LENGTH\r\n },\r\n ProcessBlock: function () {\r\n var a, b = this.X,\r\n c = Array(64);\r\n for (a = 16; 68 > a; a++)\r\n b[a] = this.P1(b[a - 16] ^ b[a - 9] ^ this.ROTATE(b[a - 3], 15)) ^ this.ROTATE(b[a - 13], 7) ^ b[a - 6];\r\n for (a = 0; 64 > a; a++)\r\n c[a] = b[a] ^ b[a + 4];\r\n var d = this.v,\r\n e = this.v_;\r\n Array.Copy(d, 0, e, 0, this.v0.length);\r\n var f, g;\r\n for (a = 0; 16 > a; a++)\r\n g = this.ROTATE(e[0], 12),\r\n f = Int32.parse(Int32.parse(g + e[4]) + this.ROTATE(this.T_00_15, a)),\r\n f = this.ROTATE(f, 7),\r\n g ^= f,\r\n g = Int32.parse(Int32.parse(this.FF_00_15(e[0], e[1], e[2]) + e[3]) + g) + c[a],\r\n f = Int32.parse(Int32.parse(this.GG_00_15(e[4], e[5], e[6]) + e[7]) + f) + b[a],\r\n e[3] = e[2],\r\n e[2] = this.ROTATE(e[1], 9),\r\n e[1] = e[0],\r\n e[0] = g,\r\n e[7] = e[6],\r\n e[6] = this.ROTATE(e[5], 19),\r\n e[5] = e[4],\r\n e[4] = this.P0(f);\r\n for (a = 16; 64 > a; a++)\r\n g = this.ROTATE(e[0], 12),\r\n f = Int32.parse(Int32.parse(g + e[4]) + this.ROTATE(this.T_16_63, a)),\r\n f = this.ROTATE(f, 7),\r\n g ^= f,\r\n g = Int32.parse(Int32.parse(this.FF_16_63(e[0], e[1], e[2]) + e[3]) + g) + c[a],\r\n f = Int32.parse(Int32.parse(this.GG_16_63(e[4], e[5], e[6]) + e[7]) + f) + b[a],\r\n e[3] = e[2],\r\n e[2] = this.ROTATE(e[1], 9),\r\n e[1] = e[0],\r\n e[0] = g,\r\n e[7] = e[6],\r\n e[6] = this.ROTATE(e[5], 19),\r\n e[5] = e[4],\r\n e[4] = this.P0(f);\r\n for (a = 0; 8 > a; a++)\r\n d[a] ^= Int32.parse(e[a]);\r\n this.xOff = 0;\r\n Array.Copy(this.X0, 0, this.X, 0, this.X0.length)\r\n },\r\n ProcessWord: function (a, b) {\r\n var c = a[b] << 24,\r\n c = c | (a[++b] & 255) << 16,\r\n c = c | (a[++b] & 255) << 8,\r\n c = c | a[++b] & 255;\r\n this.X[this.xOff] = c;\r\n 16 == ++this.xOff && this.ProcessBlock()\r\n },\r\n ProcessLength: function (a) {\r\n 14 < this.xOff && this.ProcessBlock();\r\n this.X[14] = this.URShiftLong(a, 32);\r\n this.X[15] = a & 4294967295\r\n },\r\n IntToBigEndian: function (a, b, c) {\r\n b[c] = Int32.parseByte(this.URShift(a, 24));\r\n b[++c] = Int32.parseByte(this.URShift(a, 16));\r\n b[++c] = Int32.parseByte(this.URShift(a, 8));\r\n b[++c] = Int32.parseByte(a)\r\n },\r\n DoFinal: function (a, b) {\r\n this.Finish();\r\n for (var c = 0; 8 > c; c++)\r\n this.IntToBigEndian(this.v[c], a, b + 4 * c);\r\n this.Reset();\r\n for (var d = a.length, c = 0; c < d; c++)\r\n a[c] &= 255;\r\n return this.DIGEST_LENGTH\r\n },\r\n Update: function (a) {\r\n this.xBuf[this.xBufOff++] = a;\r\n this.xBufOff == this.xBuf.length && (this.ProcessWord(this.xBuf, 0),\r\n this.xBufOff = 0);\r\n this.byteCount++\r\n },\r\n BlockUpdate: function (a, b, c) {\r\n for (; 0 != this.xBufOff && 0 < c;)\r\n this.Update(a[b]),\r\n b++,\r\n c--;\r\n for (; c > this.xBuf.length;)\r\n this.ProcessWord(a, b),\r\n b += this.xBuf.length,\r\n c -= this.xBuf.length,\r\n this.byteCount += this.xBuf.length;\r\n for (; 0 < c;)\r\n this.Update(a[b]),\r\n b++,\r\n c--\r\n },\r\n Finish: function () {\r\n var a = this.byteCount << 3;\r\n for (this.Update(128); 0 != this.xBufOff;)\r\n this.Update(0);\r\n this.ProcessLength(a);\r\n this.ProcessBlock()\r\n },\r\n ROTATE: function (a, b) {\r\n return a << b | this.URShift(a, 32 - b)\r\n },\r\n P0: function (a) {\r\n return a ^ this.ROTATE(a, 9) ^ this.ROTATE(a, 17)\r\n },\r\n P1: function (a) {\r\n return a ^ this.ROTATE(a, 15) ^ this.ROTATE(a, 23)\r\n },\r\n FF_00_15: function (a, b, c) {\r\n return a ^ b ^ c\r\n },\r\n FF_16_63: function (a, b, c) {\r\n return a & b | a & c | b & c\r\n },\r\n GG_00_15: function (a, b, c) {\r\n return a ^ b ^ c\r\n },\r\n GG_16_63: function (a, b, c) {\r\n return a & b | ~a & c\r\n },\r\n URShift: function (a, b) {\r\n if (a > Int32.maxValue || a < Int32.minValue)\r\n a = Int32.parse(a);\r\n return 0 <= a ? a >> b : (a >> b) + (2 << ~b)\r\n },\r\n URShiftLong: function (a, b) {\r\n var c;\r\n c = new BigInteger;\r\n c.fromInt(a);\r\n if (0 <= c.signum())\r\n c = c.shiftRight(b).intValue();\r\n else {\r\n var d = new BigInteger;\r\n d.fromInt(2);\r\n var e = ~b;\r\n c = \"\";\r\n if (0 > e) {\r\n d = 64 + e;\r\n for (e = 0; e < d; e++)\r\n c += \"0\";\r\n d = new BigInteger;\r\n d.fromInt(a >> b);\r\n c = new BigInteger(\"10\" + c, 2);\r\n c.toRadix(10);\r\n c = c.add(d).toRadix(10)\r\n } else\r\n c = d.shiftLeft(~b).intValue(),\r\n c = (a >> b) + c\r\n }\r\n return c\r\n },\r\n GetZ: function (a, b) {\r\n var c = CryptoJS.enc.Utf8.parse(\"1234567812345678\"),\r\n d = 32 * c.words.length;\r\n this.Update(d >> 8 & 255);\r\n this.Update(d & 255);\r\n c = this.GetWords(c.toString());\r\n this.BlockUpdate(c, 0, c.length);\r\n var c = this.GetWords(a.curve.a.toBigInteger().toRadix(16)),\r\n d = this.GetWords(a.curve.b.toBigInteger().toRadix(16)),\r\n e = this.GetWords(a.getX().toBigInteger().toRadix(16)),\r\n f = this.GetWords(a.getY().toBigInteger().toRadix(16)),\r\n g = this.GetWords(b.substr(0, 64)),\r\n h = this.GetWords(b.substr(64, 64));\r\n this.BlockUpdate(c, 0, c.length);\r\n this.BlockUpdate(d, 0, d.length);\r\n this.BlockUpdate(e, 0, e.length);\r\n this.BlockUpdate(f, 0, f.length);\r\n this.BlockUpdate(g, 0, g.length);\r\n this.BlockUpdate(h, 0, h.length);\r\n c = Array(this.GetDigestSize());\r\n this.DoFinal(c, 0);\r\n return c\r\n },\r\n GetWords: function (a) {\r\n for (var b = [], c = a.length, d = 0; d < c; d += 2)\r\n b[b.length] = parseInt(a.substr(d, 2), 16);\r\n return b\r\n },\r\n GetHex: function (a) {\r\n for (var b = [], c = 0, d = 0; d < 2 * a.length; d += 2)\r\n b[d >>> 3] |= parseInt(a[c]) << 24 - d % 8 * 4,\r\n c++;\r\n return new CryptoJS.lib.WordArray.init(b, a.length)\r\n }\r\n };\r\n Array.Clear = function (a, b, c) {\r\n for (var elm in a)\r\n a[elm] = null\r\n };\r\n Array.Copy = function (a, b, c, d, e) {\r\n a = a.slice(b, b + e);\r\n for (b = 0; b < a.length; b++)\r\n c[d] = a[b],\r\n d++\r\n };\r\n var Int32 = { //zdk\r\n minValue: -parseInt(\"10000000000000000000000000000000\", 2),\r\n maxValue: 2147483647,\r\n parse: function (a) {\r\n if (a < this.minValue) {\r\n a = new Number(-a);\r\n a = a.toString(2);\r\n a = a.substr(a.length - 31, 31);\r\n for (var b = \"\", c = 0; c < a.length; c++)\r\n var d = a.substr(c, 1),\r\n b = b + (\"0\" == d ? \"1\" : \"0\");\r\n a = parseInt(b, 2);\r\n return a + 1\r\n }\r\n if (a > this.maxValue) {\r\n a = Number(a);\r\n a = a.toString(2);\r\n a = a.substr(a.length - 31, 31);\r\n b = \"\";\r\n for (c = 0; c < a.length; c++)\r\n d = a.substr(c, 1),\r\n b += \"0\" == d ? \"1\" : \"0\";\r\n a = parseInt(b, 2);\r\n return -(a + 1)\r\n }\r\n return a\r\n },\r\n parseByte: function (a) {\r\n if (0 > a) {\r\n a = new Number(-a);\r\n a = a.toString(2);\r\n a = a.substr(a.length - 8, 8);\r\n for (var b = \"\", c = 0; c < a.length; c++)\r\n var d = a.substr(c, 1),\r\n b = b + (\"0\" == d ? \"1\" : \"0\");\r\n return parseInt(b, 2) + 1\r\n }\r\n return 255 < a ? (a = Number(a),\r\n a = a.toString(2),\r\n parseInt(a.substr(a.length - 8, 8), 2)) : a\r\n }\r\n };\r\n \"undefined\" != typeof KJUR && KJUR || (KJUR = {});\r\n \"undefined\" != typeof KJUR.crypto && KJUR.crypto || (KJUR.crypto = {});\r\n KJUR.crypto.SM3withSM2 = function (a) {\r\n var b = new SecureRandom;\r\n this.type = \"SM2\";\r\n this.getBigRandom = function (a) {\r\n return (new BigInteger(a.bitLength(), b)).mod(a.subtract(BigInteger.ONE)).add(BigInteger.ONE)\r\n };\r\n this.setNamedCurve = function (a) {\r\n this.ecparams = KJUR.crypto.ECParameterDB.getByName(a);\r\n this.pubKeyHex = this.prvKeyHex = null;\r\n this.curveName = a\r\n };\r\n this.setPrivateKeyHex = function (a) {\r\n this.isPrivate = !0;\r\n this.prvKeyHex = a\r\n };\r\n this.setPublicKeyHex = function (a) {\r\n this.isPublic = !0;\r\n this.pubKeyHex = a\r\n };\r\n this.generateKeyPairHex = function () {\r\n var a = this.getBigRandom(this.ecparams.n),\r\n b = this.ecparams.G.multiply(a),\r\n e = b.getX().toBigInteger(),\r\n b = b.getY().toBigInteger(),\r\n f = this.ecparams.keylen / 4,\r\n a = (\"0000000000\" + a.toString(16)).slice(-f),\r\n e = (\"0000000000\" + e.toString(16)).slice(-f),\r\n b = (\"0000000000\" + b.toString(16)).slice(-f),\r\n e = \"04\" + e + b;\r\n this.setPrivateKeyHex(a);\r\n this.setPublicKeyHex(e);\r\n return {\r\n ecprvhex: a,\r\n ecpubhex: e\r\n }\r\n };\r\n this.signWithMessageHash = function (a) {\r\n return this.signHex(a, this.prvKeyHex)\r\n };\r\n this.signHex = function (a, b) {\r\n var e = new BigInteger(b, 16),\r\n f = this.ecparams.n,\r\n g = new BigInteger(a, 16),\r\n h = null,\r\n k = null,\r\n l = k = null;\r\n do {\r\n do\r\n k = this.generateKeyPairHex(),\r\n h = new BigInteger(k.ecprvhex, 16),\r\n k = ECPointFp.decodeFromHex(this.ecparams.curve, k.ecpubhex),\r\n k = g.add(k.getX().toBigInteger()),\r\n k = k.mod(f);\r\n while (k.equals(BigInteger.ZERO) || k.add(h).equals(f));\r\n var p = e.add(BigInteger.ONE),\r\n p = p.modInverse(f),\r\n l = k.multiply(e),\r\n l = h.subtract(l).mod(f),\r\n l = p.multiply(l).mod(f)\r\n } while (l.equals(BigInteger.ZERO));\r\n return KJUR.crypto.ECDSA.biRSSigToASN1Sig(k, l)\r\n };\r\n this.sign = function (a, b) {\r\n var e = this.ecparams.n,\r\n f = BigInteger.fromByteArrayUnsigned(a);\r\n do\r\n var g = this.getBigRandom(e),\r\n h = this.ecparams.G.multiply(g).getX().toBigInteger().mod(e);\r\n while (0 >= h.compareTo(BigInteger.ZERO));\r\n e = g.modInverse(e).multiply(f.add(b.multiply(h))).mod(e);\r\n return this.serializeSig(h, e)\r\n };\r\n this.verifyWithMessageHash = function (a, b) {\r\n return this.verifyHex(a, b, this.pubKeyHex)\r\n };\r\n this.verifyHex = function (a, b, e) {\r\n var f;\r\n f = KJUR.crypto.ECDSA.parseSigHex(b);\r\n b = f.r;\r\n f = f.s;\r\n e = ECPointFp.decodeFromHex(this.ecparams.curve, e);\r\n a = new BigInteger(a, 16);\r\n return this.verifyRaw(a, b, f, e)\r\n };\r\n this.verify = function (a, b, e) {\r\n var f;\r\n if (Bitcoin.Util.isArray(b))\r\n b = this.parseSig(b),\r\n f = b.r,\r\n b = b.s;\r\n else if (\"object\" === typeof b && b.r && b.s)\r\n f = b.r,\r\n b = b.s;\r\n else\r\n throw \"Invalid value for signature\";\r\n if (!(e instanceof ECPointFp))\r\n if (Bitcoin.Util.isArray(e))\r\n e = ECPointFp.decodeFrom(this.ecparams.curve, e);\r\n else\r\n throw \"Invalid format for pubkey value, must be byte array or ECPointFp\";\r\n a = BigInteger.fromByteArrayUnsigned(a);\r\n return this.verifyRaw(a, f, b, e)\r\n };\r\n this.verifyRaw = function (a, b, e, f) {\r\n var g = this.ecparams.n,\r\n h = this.ecparams.G,\r\n k = b.add(e).mod(g);\r\n if (k.equals(BigInteger.ZERO))\r\n return !1;\r\n e = h.multiply(e);\r\n e = e.add(f.multiply(k));\r\n a = a.add(e.getX().toBigInteger()).mod(g);\r\n return b.equals(a)\r\n };\r\n this.serializeSig = function (a, b) {\r\n var e = a.toByteArraySigned(),\r\n f = b.toByteArraySigned(),\r\n g = [];\r\n g.push(2);\r\n g.push(e.length);\r\n g = g.concat(e);\r\n g.push(2);\r\n g.push(f.length);\r\n g = g.concat(f);\r\n g.unshift(g.length);\r\n g.unshift(48);\r\n return g\r\n };\r\n this.parseSig = function (a) {\r\n var b;\r\n if (48 != a[0])\r\n throw Error(\"Signature not a valid DERSequence\");\r\n b = 2;\r\n if (2 != a[b])\r\n throw Error(\"First element in signature must be a DERInteger\");\r\n var e = a.slice(b + 2, b + 2 + a[b + 1]);\r\n b += 2 + a[b + 1];\r\n if (2 != a[b])\r\n throw Error(\"Second element in signature must be a DERInteger\");\r\n a = a.slice(b + 2, b + 2 + a[b + 1]);\r\n e = BigInteger.fromByteArrayUnsigned(e);\r\n a = BigInteger.fromByteArrayUnsigned(a);\r\n return {\r\n r: e,\r\n s: a\r\n }\r\n };\r\n this.parseSigCompact = function (a) {\r\n if (65 !== a.length)\r\n throw \"Signature has the wrong length\";\r\n var b = a[0] - 27;\r\n if (0 > b || 7 < b)\r\n throw \"Invalid signature type\";\r\n var e = this.ecparams.n,\r\n f = BigInteger.fromByteArrayUnsigned(a.slice(1, 33)).mod(e);\r\n a = BigInteger.fromByteArrayUnsigned(a.slice(33, 65)).mod(e);\r\n return {\r\n r: f,\r\n s: a,\r\n i: b\r\n }\r\n };\r\n void 0 !== a && void 0 !== a.curve && (this.curveName = a.curve);\r\n void 0 === this.curveName && (this.curveName = \"sm2\");\r\n this.setNamedCurve(this.curveName);\r\n void 0 !== a && (void 0 !== a.prv && this.setPrivateKeyHex(a.prv),\r\n void 0 !== a.pub && this.setPublicKeyHex(a.pub))\r\n };\r\n \"undefined\" != typeof KJUR && KJUR || (KJUR = {});\r\n \"undefined\" != typeof KJUR.crypto && KJUR.crypto || (KJUR.crypto = {});\r\n KJUR.crypto.ECParameterDB = new function () {\r\n var a = {},\r\n b = {};\r\n this.getByName = function (c) {\r\n var d = c;\r\n \"undefined\" != typeof b[d] && (d = b[c]);\r\n if (\"undefined\" != typeof a[d])\r\n return a[d];\r\n throw \"unregistered EC curve name: \" + d;\r\n };\r\n this.regist = function (c, d, e, f, g, h, k, l, p, n, q, m) {\r\n a[c] = {};\r\n e = new BigInteger(e, 16);\r\n f = new BigInteger(f, 16);\r\n g = new BigInteger(g, 16);\r\n h = new BigInteger(h, 16);\r\n k = new BigInteger(k, 16);\r\n e = new ECCurveFp(e, f, g);\r\n l = e.decodePointHex(\"04\" + l + p);\r\n a[c].name = c;\r\n a[c].keylen = d;\r\n a[c].curve = e;\r\n a[c].G = l;\r\n a[c].n = h;\r\n a[c].h = k;\r\n a[c].oid = q;\r\n a[c].info = m;\r\n for (d = 0; d < n.length; d++)\r\n b[n[d]] = c\r\n }\r\n };\r\n KJUR.crypto.ECParameterDB.regist(\"secp128r1\", 128, \"FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFF\", \"FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFC\", \"E87579C11079F43DD824993C2CEE5ED3\", \"FFFFFFFE0000000075A30D1B9038A115\", \"1\", \"161FF7528B899B2D0C28607CA52C5B86\", \"CF5AC8395BAFEB13C02DA292DDED7A83\", [], \"\", \"secp128r1 : SECG curve over a 128 bit prime field\");\r\n KJUR.crypto.ECParameterDB.regist(\"secp160k1\", 160, \"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFAC73\", \"0\", \"7\", \"0100000000000000000001B8FA16DFAB9ACA16B6B3\", \"1\", \"3B4C382CE37AA192A4019E763036F4F5DD4D7EBB\", \"938CF935318FDCED6BC28286531733C3F03C4FEE\", [], \"\", \"secp160k1 : SECG curve over a 160 bit prime field\");\r\n KJUR.crypto.ECParameterDB.regist(\"secp160r1\", 160, \"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF\", \"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFC\", \"1C97BEFC54BD7A8B65ACF89F81D4D4ADC565FA45\", \"0100000000000000000001F4C8F927AED3CA752257\", \"1\", \"4A96B5688EF573284664698968C38BB913CBFC82\", \"23A628553168947D59DCC912042351377AC5FB32\", [], \"\", \"secp160r1 : SECG curve over a 160 bit prime field\");\r\n KJUR.crypto.ECParameterDB.regist(\"secp192k1\", 192, \"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFEE37\", \"0\", \"3\", \"FFFFFFFFFFFFFFFFFFFFFFFE26F2FC170F69466A74DEFD8D\", \"1\", \"DB4FF10EC057E9AE26B07D0280B7F4341DA5D1B1EAE06C7D\", \"9B2F2F6D9C5628A7844163D015BE86344082AA88D95E2F9D\", []);\r\n KJUR.crypto.ECParameterDB.regist(\"secp192r1\", 192, \"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF\", \"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFC\", \"64210519E59C80E70FA7E9AB72243049FEB8DEECC146B9B1\", \"FFFFFFFFFFFFFFFFFFFFFFFF99DEF836146BC9B1B4D22831\", \"1\", \"188DA80EB03090F67CBF20EB43A18800F4FF0AFD82FF1012\", \"07192B95FFC8DA78631011ED6B24CDD573F977A11E794811\", []);\r\n KJUR.crypto.ECParameterDB.regist(\"secp224r1\", 224, \"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000001\", \"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFE\", \"B4050A850C04B3ABF54132565044B0B7D7BFD8BA270B39432355FFB4\", \"FFFFFFFFFFFFFFFFFFFFFFFFFFFF16A2E0B8F03E13DD29455C5C2A3D\", \"1\", \"B70E0CBD6BB4BF7F321390B94A03C1D356C21122343280D6115C1D21\", \"BD376388B5F723FB4C22DFE6CD4375A05A07476444D5819985007E34\", []);\r\n KJUR.crypto.ECParameterDB.regist(\"secp256k1\", 256, \"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F\", \"0\", \"7\", \"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141\", \"1\", \"79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798\", \"483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8\", []);\r\n KJUR.crypto.ECParameterDB.regist(\"secp256r1\", 256, \"FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF\", \"FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC\", \"5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B\", \"FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551\", \"1\", \"6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296\", \"4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5\", [\"NIST P-256\", \"P-256\", \"prime256v1\"]);\r\n KJUR.crypto.ECParameterDB.regist(\"secp384r1\", 384, \"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFF0000000000000000FFFFFFFF\", \"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFF0000000000000000FFFFFFFC\", \"B3312FA7E23EE7E4988E056BE3F82D19181D9C6EFE8141120314088F5013875AC656398D8A2ED19D2A85C8EDD3EC2AEF\", \"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7634D81F4372DDF581A0DB248B0A77AECEC196ACCC52973\", \"1\", \"AA87CA22BE8B05378EB1C71EF320AD746E1D3B628BA79B9859F741E082542A385502F25DBF55296C3A545E3872760AB7\", \"3617de4a96262c6f5d9e98bf9292dc29f8f41dbd289a147ce9da3113b5f0b8c00a60b1ce1d7e819d7a431d7c90ea0e5f\", [\"NIST P-384\", \"P-384\"]);\r\n KJUR.crypto.ECParameterDB.regist(\"secp521r1\", 521, \"1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\", \"1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC\", \"051953EB9618E1C9A1F929A21A0B68540EEA2DA725B99B315F3B8B489918EF109E156193951EC7E937B1652C0BD3BB1BF073573DF883D2C34F1EF451FD46B503F00\", \"1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA51868783BF2F966B7FCC0148F709A5D03BB5C9B8899C47AEBB6FB71E91386409\", \"1\", \"C6858E06B70404E9CD9E3ECB662395B4429C648139053FB521F828AF606B4D3DBAA14B5E77EFE75928FE1DC127A2FFA8DE3348B3C1856A429BF97E7E31C2E5BD66\", \"011839296a789a3bc0045c8a5fb42c7d1bd998f54449579b446817afbd17273e662c97ee72995ef42640c550b9013fad0761353c7086a272c24088be94769fd16650\", [\"NIST P-521\", \"P-521\"]);\r\n KJUR.crypto.ECParameterDB.regist(\"sm2\", 256, \"FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFF\", \"FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFC\", \"28E9FA9E9D9F5E344D5A9E4BCF6509A7F39789F515AB8F92DDBCBD414D940E93\", \"FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF7203DF6B21C6052B53BBF40939D54123\", \"1\", \"32C4AE2C1F1981195F9904466A39C9948FE30BBFF2660BE1715A4589334C74C7\", \"BC3736A2F4F6779C59BDCEE36B692153D0A9877CC62A474002DF32E52139F0A0\", [\"sm2\", \"SM2\"]);\r\n\r\n SM2Cipher.prototype = {\r\n Reset: function () {\r\n this.sm3keybase = new SM3Digest;\r\n this.sm3c3 = new SM3Digest;\r\n for (var a = this.p2.getX().toBigInteger().toRadix(16); 64 > a.length;)\r\n a = \"0\" + a;\r\n for (var a = this.GetWords(a), b = this.p2.getY().toBigInteger().toRadix(16); 64 > b.length;)\r\n b = \"0\" + b;\r\n b = this.GetWords(b);\r\n this.sm3keybase.BlockUpdate(a, 0, a.length);\r\n this.sm3c3.BlockUpdate(a, 0, a.length);\r\n this.sm3keybase.BlockUpdate(b, 0, b.length);\r\n this.ct = 1;\r\n this.NextKey()\r\n },\r\n NextKey: function () {\r\n var a = new SM3Digest(this.sm3keybase);\r\n a.Update(this.ct >> 24 & 255);\r\n a.Update(this.ct >> 16 & 255);\r\n a.Update(this.ct >> 8 & 255);\r\n a.Update(this.ct & 255);\r\n a.DoFinal(this.key, 0);\r\n this.keyOff = 0;\r\n this.ct++\r\n },\r\n KDF: function (a) {\r\n var b = Array(a),\r\n c = new SM3Digest,\r\n d = Array(32),\r\n e = 1,\r\n f = a / 32;\r\n a %= 32;\r\n for (var g = this.p2.getX().toBigInteger().toRadix(16); 64 > g.length;)\r\n g = \"0\" + g;\r\n for (var g = this.GetWords(g), h = this.p2.getY().toBigInteger().toRadix(16); 64 > h.length;)\r\n h = \"0\" + h;\r\n for (var h = this.GetWords(h), k = 0, l = 0; l < f; l++)\r\n c.BlockUpdate(g, 0, g.length),\r\n c.BlockUpdate(h, 0, h.length),\r\n c.Update(e >> 24 & 255),\r\n c.Update(e >> 16 & 255),\r\n c.Update(e >> 8 & 255),\r\n c.Update(e & 255),\r\n c.DoFinal(b, k),\r\n k += 32,\r\n e++;\r\n 0 != a && (c.BlockUpdate(g, 0, g.length),\r\n c.BlockUpdate(h, 0, h.length),\r\n c.Update(e >> 24 & 255),\r\n c.Update(e >> 16 & 255),\r\n c.Update(e >> 8 & 255),\r\n c.Update(e & 255),\r\n c.DoFinal(d, 0));\r\n Array.Copy(d, 0, b, k, a);\r\n for (l = 0; l < b.length; l++)\r\n b[l] &= 255;\r\n return b\r\n },\r\n InitEncipher: function (a) {\r\n var b = null,\r\n c = null,\r\n c = new KJUR.crypto.ECDSA({\r\n curve: \"sm2\"\r\n }),\r\n d = c.generateKeyPairHex(),\r\n b = new BigInteger(d.ecprvhex, 16),\r\n c = ECPointFp.decodeFromHex(c.ecparams.curve, d.ecpubhex);\r\n this.p2 = a.multiply(b);\r\n this.Reset();\r\n return c\r\n },\r\n EncryptBlock: function (a) {\r\n this.sm3c3.BlockUpdate(a, 0, a.length);\r\n for (var b = this.KDF(a.length), c = 0; c < a.length; c++)\r\n a[c] ^= b[c]\r\n },\r\n InitDecipher: function (a, b) {\r\n this.p2 = b.multiply(a);\r\n this.p2.getX().toBigInteger().toRadix(16);\r\n this.p2.getY().toBigInteger().toRadix(16);\r\n this.Reset()\r\n },\r\n DecryptBlock: function (a) {\r\n for (var b = this.KDF(a.length), c = 0, d = \"\", c = 0; c < b.length; c++)\r\n d += b[c].toString(16);\r\n for (c = 0; c < a.length; c++)\r\n a[c] ^= b[c];\r\n this.sm3c3.BlockUpdate(a, 0, a.length)\r\n },\r\n Dofinal: function (a) {\r\n for (var b = this.p2.getY().toBigInteger().toRadix(16); 64 > b.length;)\r\n b = \"0\" + b;\r\n b = this.GetWords(b);\r\n this.sm3c3.BlockUpdate(b, 0, b.length);\r\n this.sm3c3.DoFinal(a, 0);\r\n this.Reset()\r\n },\r\n Encrypt: function (a, b) {\r\n var c = Array(b.length);\r\n Array.Copy(b, 0, c, 0, b.length);\r\n var d = this.InitEncipher(a);\r\n this.EncryptBlock(c);\r\n var e = Array(32);\r\n this.Dofinal(e);\r\n for (var f = d.getX().toBigInteger().toRadix(16), d = d.getY().toBigInteger().toRadix(16); 64 > f.length;)\r\n f = \"0\" + f;\r\n for (; 64 > d.length;)\r\n d = \"0\" + d;\r\n f += d;\r\n c = this.GetHex(c).toString();\r\n 0 != c.length % 2 && (c = \"0\" + c);\r\n e = this.GetHex(e).toString();\r\n d = f + c + e;\r\n this.cipherMode == SM2CipherMode.C1C3C2 && (d = f + e + c);\r\n return d\r\n },\r\n GetWords: function (a) {\r\n for (var b = [], c = a.length, d = 0; d < c; d += 2)\r\n b[b.length] = parseInt(a.substr(d, 2), 16);\r\n return b\r\n },\r\n GetHex: function (a) {\r\n for (var b = [], c = 0, d = 0; d < 2 * a.length; d += 2)\r\n b[d >>> 3] |= parseInt(a[c]) << 24 - d % 8 * 4,\r\n c++;\r\n return new CryptoJS.lib.WordArray.init(b, a.length)\r\n },\r\n Decrypt: function (a, b) {\r\n var c = b.substr(0, 64),\r\n d = b.substr(0 + c.length, 64),\r\n e = b.substr(c.length + d.length, b.length - c.length - d.length - 64),\r\n f = b.substr(b.length - 64);\r\n this.cipherMode == SM2CipherMode.C1C3C2 && (f = b.substr(c.length + d.length, 64),\r\n e = b.substr(c.length + d.length + 64));\r\n e = this.GetWords(e);\r\n c = this.CreatePoint(c, d);\r\n this.InitDecipher(a, c);\r\n this.DecryptBlock(e);\r\n c = Array(32);\r\n this.Dofinal(c);\r\n return this.GetHex(c).toString() == f ? (f = this.GetHex(e),\r\n CryptoJS.enc.Utf8.stringify(f)) : \"\"\r\n },\r\n CreatePoint: function (a, b) {\r\n var c = new KJUR.crypto.ECDSA({\r\n curve: \"sm2\"\r\n });\r\n return ECPointFp.decodeFromHex(c.ecparams.curve, \"04\" + a + b)\r\n }\r\n };\r\n\r\n /*-------------下面修改----------*/\r\n\r\n var SM2Key = function (key) {\r\n this.setKey(key);\r\n };\r\n\r\n function SM2SetKey(key) {\r\n if (key && typeof key === 'object') {\r\n this.eccX = key.eccX;\r\n this.eccY = key.eccY;\r\n } else {\r\n this.eccX = \"F1342ADB38855E1F8C37D1181378DE446E52788389F7DB3DEA022A1FC4D4D856\";\r\n this.eccY = \"66FC6DE253C822F1E52914D9E0B80C5D825759CE696CF039A8449F98017510B7\";\r\n }\r\n }\r\n\r\n /*\r\n *加密数据\r\n */\r\n function SM2Encrypt(text) {\r\n var cipherMode = SM2CipherMode.C1C3C2,\r\n cipher = new SM2Cipher(cipherMode),\r\n textData = CryptoJS.enc.Utf8.parse(text);\r\n var cipher = new SM2Cipher(cipherMode);\r\n var userKey = cipher.CreatePoint(this.eccX, this.eccY);\r\n var msgData = cipher.GetWords(textData.toString());\r\n\r\n return cipher.Encrypt(userKey, msgData);\r\n }\r\n\r\n SM2Key.prototype.setKey = SM2SetKey;\r\n SM2Key.prototype.encrypt = SM2Encrypt;\r\n\r\n //export default SM2Key;\r\n global.SM2 = {\r\n SM2CipherMode: SM2CipherMode,\r\n SM2Cipher: SM2Cipher,\r\n CryptoJS: CryptoJS\r\n }\r\n}(SM2Utils));\r\n\r\n// 公钥\r\nconst PUBLIC_KEY = \"04CE0C676A9CDA762859E2A3F4BA77D1DF3EB9B9CF935112D26D95C414A2D3959465724E3B2FDC77D06489C97EEE21501E64A0C5117B548C1F6261E6B34090D454\"\r\nfunction sm2Encrypt(data, publickey, cipherMode) {\r\n cipherMode = typeof cipherMode === 'undefined' ? 0 : cipherMode;\r\n // msg = SM2.utf8tob64(msg);\r\n var msgData = CryptoJS.enc.Utf8.parse(data);\r\n // msgData = CryptoJS.enc.Base64.stringify(msgData);\r\n\t//在转utf-8\r\n // msgData = CryptoJS.enc.Utf8.parse(msgData);\r\n\r\n var pubkeyHex = publickey || PUBLIC_KEY\r\n if (pubkeyHex.length > 64 * 2) {\r\n pubkeyHex = pubkeyHex.substr(pubkeyHex.length - 64 * 2);\r\n }\r\n var xHex = pubkeyHex.substr(0, 64);\r\n var yHex = pubkeyHex.substr(64);\r\n var cipher = new SM2Cipher(cipherMode);\r\n var userKey = cipher.CreatePoint(xHex, yHex);\r\n msgData = cipher.GetWords(msgData.toString());\r\n var encryptData = cipher.Encrypt(userKey, msgData);\r\n\r\n return '04' + encryptData;\r\n}\r\n\r\n/**\r\n * 根据公钥进行加密\r\n */\r\nSM2Utils.encs = function (key, s, cipherMode) {\r\n if (s == null || s.length == 0) {\r\n return \"\";\r\n }\r\n return sm2Encrypt(s, key, cipherMode);\r\n}\r\n\r\nexport {sm2Encrypt, SM2Utils}\r\n",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var C_algo = C.algo;\n\n\t /**\n\t * HMAC algorithm.\n\t */\n\t var HMAC = C_algo.HMAC = Base.extend({\n\t /**\n\t * Initializes a newly created HMAC.\n\t *\n\t * @param {Hasher} hasher The hash algorithm to use.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @example\n\t *\n\t * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\n\t */\n\t init: function (hasher, key) {\n\t // Init hasher\n\t hasher = this._hasher = new hasher.init();\n\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof key == 'string') {\n\t key = Utf8.parse(key);\n\t }\n\n\t // Shortcuts\n\t var hasherBlockSize = hasher.blockSize;\n\t var hasherBlockSizeBytes = hasherBlockSize * 4;\n\n\t // Allow arbitrary length keys\n\t if (key.sigBytes > hasherBlockSizeBytes) {\n\t key = hasher.finalize(key);\n\t }\n\n\t // Clamp excess bits\n\t key.clamp();\n\n\t // Clone key for inner and outer pads\n\t var oKey = this._oKey = key.clone();\n\t var iKey = this._iKey = key.clone();\n\n\t // Shortcuts\n\t var oKeyWords = oKey.words;\n\t var iKeyWords = iKey.words;\n\n\t // XOR keys with pad constants\n\t for (var i = 0; i < hasherBlockSize; i++) {\n\t oKeyWords[i] ^= 0x5c5c5c5c;\n\t iKeyWords[i] ^= 0x36363636;\n\t }\n\t oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this HMAC to its initial state.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.reset();\n\t */\n\t reset: function () {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Reset\n\t hasher.reset();\n\t hasher.update(this._iKey);\n\t },\n\n\t /**\n\t * Updates this HMAC with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {HMAC} This HMAC instance.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.update('message');\n\t * hmacHasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t this._hasher.update(messageUpdate);\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the HMAC computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @example\n\t *\n\t * var hmac = hmacHasher.finalize();\n\t * var hmac = hmacHasher.finalize('message');\n\t * var hmac = hmacHasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Compute HMAC\n\t var innerHash = hasher.finalize(messageUpdate);\n\t hasher.reset();\n\t var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));\n\n\t return hmac;\n\t }\n\t });\n\t}());\n\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var CipherParams = C_lib.CipherParams;\n\t var C_enc = C.enc;\n\t var Hex = C_enc.Hex;\n\t var C_format = C.format;\n\n\t var HexFormatter = C_format.Hex = {\n\t /**\n\t * Converts the ciphertext of a cipher params object to a hexadecimally encoded string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The hexadecimally encoded string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.format.Hex.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t return cipherParams.ciphertext.toString(Hex);\n\t },\n\n\t /**\n\t * Converts a hexadecimally encoded ciphertext string to a cipher params object.\n\t *\n\t * @param {string} input The hexadecimally encoded string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.Hex.parse(hexString);\n\t */\n\t parse: function (input) {\n\t var ciphertext = Hex.parse(input);\n\t return CipherParams.create({ ciphertext: ciphertext });\n\t }\n\t };\n\t}());\n\n\n\treturn CryptoJS.format.Hex;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var T = [];\n\n\t // Compute constants\n\t (function () {\n\t for (var i = 0; i < 64; i++) {\n\t T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\n\t }\n\t }());\n\n\t /**\n\t * MD5 hash algorithm.\n\t */\n\t var MD5 = C_algo.MD5 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var M_offset_0 = M[offset + 0];\n\t var M_offset_1 = M[offset + 1];\n\t var M_offset_2 = M[offset + 2];\n\t var M_offset_3 = M[offset + 3];\n\t var M_offset_4 = M[offset + 4];\n\t var M_offset_5 = M[offset + 5];\n\t var M_offset_6 = M[offset + 6];\n\t var M_offset_7 = M[offset + 7];\n\t var M_offset_8 = M[offset + 8];\n\t var M_offset_9 = M[offset + 9];\n\t var M_offset_10 = M[offset + 10];\n\t var M_offset_11 = M[offset + 11];\n\t var M_offset_12 = M[offset + 12];\n\t var M_offset_13 = M[offset + 13];\n\t var M_offset_14 = M[offset + 14];\n\t var M_offset_15 = M[offset + 15];\n\n\t // Working varialbes\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\n\t // Computation\n\t a = FF(a, b, c, d, M_offset_0, 7, T[0]);\n\t d = FF(d, a, b, c, M_offset_1, 12, T[1]);\n\t c = FF(c, d, a, b, M_offset_2, 17, T[2]);\n\t b = FF(b, c, d, a, M_offset_3, 22, T[3]);\n\t a = FF(a, b, c, d, M_offset_4, 7, T[4]);\n\t d = FF(d, a, b, c, M_offset_5, 12, T[5]);\n\t c = FF(c, d, a, b, M_offset_6, 17, T[6]);\n\t b = FF(b, c, d, a, M_offset_7, 22, T[7]);\n\t a = FF(a, b, c, d, M_offset_8, 7, T[8]);\n\t d = FF(d, a, b, c, M_offset_9, 12, T[9]);\n\t c = FF(c, d, a, b, M_offset_10, 17, T[10]);\n\t b = FF(b, c, d, a, M_offset_11, 22, T[11]);\n\t a = FF(a, b, c, d, M_offset_12, 7, T[12]);\n\t d = FF(d, a, b, c, M_offset_13, 12, T[13]);\n\t c = FF(c, d, a, b, M_offset_14, 17, T[14]);\n\t b = FF(b, c, d, a, M_offset_15, 22, T[15]);\n\n\t a = GG(a, b, c, d, M_offset_1, 5, T[16]);\n\t d = GG(d, a, b, c, M_offset_6, 9, T[17]);\n\t c = GG(c, d, a, b, M_offset_11, 14, T[18]);\n\t b = GG(b, c, d, a, M_offset_0, 20, T[19]);\n\t a = GG(a, b, c, d, M_offset_5, 5, T[20]);\n\t d = GG(d, a, b, c, M_offset_10, 9, T[21]);\n\t c = GG(c, d, a, b, M_offset_15, 14, T[22]);\n\t b = GG(b, c, d, a, M_offset_4, 20, T[23]);\n\t a = GG(a, b, c, d, M_offset_9, 5, T[24]);\n\t d = GG(d, a, b, c, M_offset_14, 9, T[25]);\n\t c = GG(c, d, a, b, M_offset_3, 14, T[26]);\n\t b = GG(b, c, d, a, M_offset_8, 20, T[27]);\n\t a = GG(a, b, c, d, M_offset_13, 5, T[28]);\n\t d = GG(d, a, b, c, M_offset_2, 9, T[29]);\n\t c = GG(c, d, a, b, M_offset_7, 14, T[30]);\n\t b = GG(b, c, d, a, M_offset_12, 20, T[31]);\n\n\t a = HH(a, b, c, d, M_offset_5, 4, T[32]);\n\t d = HH(d, a, b, c, M_offset_8, 11, T[33]);\n\t c = HH(c, d, a, b, M_offset_11, 16, T[34]);\n\t b = HH(b, c, d, a, M_offset_14, 23, T[35]);\n\t a = HH(a, b, c, d, M_offset_1, 4, T[36]);\n\t d = HH(d, a, b, c, M_offset_4, 11, T[37]);\n\t c = HH(c, d, a, b, M_offset_7, 16, T[38]);\n\t b = HH(b, c, d, a, M_offset_10, 23, T[39]);\n\t a = HH(a, b, c, d, M_offset_13, 4, T[40]);\n\t d = HH(d, a, b, c, M_offset_0, 11, T[41]);\n\t c = HH(c, d, a, b, M_offset_3, 16, T[42]);\n\t b = HH(b, c, d, a, M_offset_6, 23, T[43]);\n\t a = HH(a, b, c, d, M_offset_9, 4, T[44]);\n\t d = HH(d, a, b, c, M_offset_12, 11, T[45]);\n\t c = HH(c, d, a, b, M_offset_15, 16, T[46]);\n\t b = HH(b, c, d, a, M_offset_2, 23, T[47]);\n\n\t a = II(a, b, c, d, M_offset_0, 6, T[48]);\n\t d = II(d, a, b, c, M_offset_7, 10, T[49]);\n\t c = II(c, d, a, b, M_offset_14, 15, T[50]);\n\t b = II(b, c, d, a, M_offset_5, 21, T[51]);\n\t a = II(a, b, c, d, M_offset_12, 6, T[52]);\n\t d = II(d, a, b, c, M_offset_3, 10, T[53]);\n\t c = II(c, d, a, b, M_offset_10, 15, T[54]);\n\t b = II(b, c, d, a, M_offset_1, 21, T[55]);\n\t a = II(a, b, c, d, M_offset_8, 6, T[56]);\n\t d = II(d, a, b, c, M_offset_15, 10, T[57]);\n\t c = II(c, d, a, b, M_offset_6, 15, T[58]);\n\t b = II(b, c, d, a, M_offset_13, 21, T[59]);\n\t a = II(a, b, c, d, M_offset_4, 6, T[60]);\n\t d = II(d, a, b, c, M_offset_11, 10, T[61]);\n\t c = II(c, d, a, b, M_offset_2, 15, T[62]);\n\t b = II(b, c, d, a, M_offset_9, 21, T[63]);\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\n\t var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\n\t var nBitsTotalL = nBitsTotal;\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\n\t (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)\n\t );\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)\n\t );\n\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t function FF(a, b, c, d, x, s, t) {\n\t var n = a + ((b & c) | (~b & d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function GG(a, b, c, d, x, s, t) {\n\t var n = a + ((b & d) | (c & ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function HH(a, b, c, d, x, s, t) {\n\t var n = a + (b ^ c ^ d) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function II(a, b, c, d, x, s, t) {\n\t var n = a + (c ^ (b | ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.MD5('message');\n\t * var hash = CryptoJS.MD5(wordArray);\n\t */\n\t C.MD5 = Hasher._createHelper(MD5);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacMD5(message, key);\n\t */\n\t C.HmacMD5 = Hasher._createHmacHelper(MD5);\n\t}(Math));\n\n\n\treturn CryptoJS.MD5;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var SHA1 = C_algo.SHA1;\n\t var HMAC = C_algo.HMAC;\n\n\t /**\n\t * Password-Based Key Derivation Function 2 algorithm.\n\t */\n\t var PBKDF2 = C_algo.PBKDF2 = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hasher to use. Default: SHA1\n\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: SHA1,\n\t iterations: 1\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.PBKDF2.create();\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init HMAC\n\t var hmac = HMAC.create(cfg.hasher, password);\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\t var blockIndex = WordArray.create([0x00000001]);\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var blockIndexWords = blockIndex.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t var block = hmac.update(salt).finalize(blockIndex);\n\t hmac.reset();\n\n\t // Shortcuts\n\t var blockWords = block.words;\n\t var blockWordsLength = blockWords.length;\n\n\t // Iterations\n\t var intermediate = block;\n\t for (var i = 1; i < iterations; i++) {\n\t intermediate = hmac.finalize(intermediate);\n\t hmac.reset();\n\n\t // Shortcut\n\t var intermediateWords = intermediate.words;\n\n\t // XOR intermediate with block\n\t for (var j = 0; j < blockWordsLength; j++) {\n\t blockWords[j] ^= intermediateWords[j];\n\t }\n\t }\n\n\t derivedKey.concat(block);\n\t blockIndexWords[0]++;\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.PBKDF2(password, salt);\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.PBKDF2 = function (password, salt, cfg) {\n\t return PBKDF2.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.PBKDF2;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Electronic Codebook block mode.\n\t */\n\tCryptoJS.mode.ECB = (function () {\n\t var ECB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t ECB.Encryptor = ECB.extend({\n\t processBlock: function (words, offset) {\n\t this._cipher.encryptBlock(words, offset);\n\t }\n\t });\n\n\t ECB.Decryptor = ECB.extend({\n\t processBlock: function (words, offset) {\n\t this._cipher.decryptBlock(words, offset);\n\t }\n\t });\n\n\t return ECB;\n\t}());\n\n\n\treturn CryptoJS.mode.ECB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ISO/IEC 9797-1 Padding Method 2.\n\t */\n\tCryptoJS.pad.Iso97971 = {\n\t pad: function (data, blockSize) {\n\t // Add 0x80 byte\n\t data.concat(CryptoJS.lib.WordArray.create([0x80000000], 1));\n\n\t // Zero pad the rest\n\t CryptoJS.pad.ZeroPadding.pad(data, blockSize);\n\t },\n\n\t unpad: function (data) {\n\t // Remove zero padding\n\t CryptoJS.pad.ZeroPadding.unpad(data);\n\n\t // Remove one more byte -- the 0x80 byte\n\t data.sigBytes--;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Iso97971;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Initialization and round constants tables\n\t var H = [];\n\t var K = [];\n\n\t // Compute constants\n\t (function () {\n\t function isPrime(n) {\n\t var sqrtN = Math.sqrt(n);\n\t for (var factor = 2; factor <= sqrtN; factor++) {\n\t if (!(n % factor)) {\n\t return false;\n\t }\n\t }\n\n\t return true;\n\t }\n\n\t function getFractionalBits(n) {\n\t return ((n - (n | 0)) * 0x100000000) | 0;\n\t }\n\n\t var n = 2;\n\t var nPrime = 0;\n\t while (nPrime < 64) {\n\t if (isPrime(n)) {\n\t if (nPrime < 8) {\n\t H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));\n\t }\n\t K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));\n\n\t nPrime++;\n\t }\n\n\t n++;\n\t }\n\t }());\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-256 hash algorithm.\n\t */\n\t var SHA256 = C_algo.SHA256 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init(H.slice(0));\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\t var f = H[5];\n\t var g = H[6];\n\t var h = H[7];\n\n\t // Computation\n\t for (var i = 0; i < 64; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var gamma0x = W[i - 15];\n\t var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^\n\t ((gamma0x << 14) | (gamma0x >>> 18)) ^\n\t (gamma0x >>> 3);\n\n\t var gamma1x = W[i - 2];\n\t var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^\n\t ((gamma1x << 13) | (gamma1x >>> 19)) ^\n\t (gamma1x >>> 10);\n\n\t W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\n\t }\n\n\t var ch = (e & f) ^ (~e & g);\n\t var maj = (a & b) ^ (a & c) ^ (b & c);\n\n\t var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));\n\t var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25));\n\n\t var t1 = h + sigma1 + ch + K[i] + W[i];\n\t var t2 = sigma0 + maj;\n\n\t h = g;\n\t g = f;\n\t f = e;\n\t e = (d + t1) | 0;\n\t d = c;\n\t c = b;\n\t b = a;\n\t a = (t1 + t2) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t H[5] = (H[5] + f) | 0;\n\t H[6] = (H[6] + g) | 0;\n\t H[7] = (H[7] + h) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA256('message');\n\t * var hash = CryptoJS.SHA256(wordArray);\n\t */\n\t C.SHA256 = Hasher._createHelper(SHA256);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA256(message, key);\n\t */\n\t C.HmacSHA256 = Hasher._createHmacHelper(SHA256);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA256;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ISO 10126 padding strategy.\n\t */\n\tCryptoJS.pad.Iso10126 = {\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Pad\n\t data.concat(CryptoJS.lib.WordArray.random(nPaddingBytes - 1)).\n\t concat(CryptoJS.lib.WordArray.create([nPaddingBytes << 24], 1));\n\t },\n\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Iso10126;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Permuted Choice 1 constants\n\t var PC1 = [\n\t 57, 49, 41, 33, 25, 17, 9, 1,\n\t 58, 50, 42, 34, 26, 18, 10, 2,\n\t 59, 51, 43, 35, 27, 19, 11, 3,\n\t 60, 52, 44, 36, 63, 55, 47, 39,\n\t 31, 23, 15, 7, 62, 54, 46, 38,\n\t 30, 22, 14, 6, 61, 53, 45, 37,\n\t 29, 21, 13, 5, 28, 20, 12, 4\n\t ];\n\n\t // Permuted Choice 2 constants\n\t var PC2 = [\n\t 14, 17, 11, 24, 1, 5,\n\t 3, 28, 15, 6, 21, 10,\n\t 23, 19, 12, 4, 26, 8,\n\t 16, 7, 27, 20, 13, 2,\n\t 41, 52, 31, 37, 47, 55,\n\t 30, 40, 51, 45, 33, 48,\n\t 44, 49, 39, 56, 34, 53,\n\t 46, 42, 50, 36, 29, 32\n\t ];\n\n\t // Cumulative bit shift constants\n\t var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];\n\n\t // SBOXes and round permutation constants\n\t var SBOX_P = [\n\t {\n\t 0x0: 0x808200,\n\t 0x10000000: 0x8000,\n\t 0x20000000: 0x808002,\n\t 0x30000000: 0x2,\n\t 0x40000000: 0x200,\n\t 0x50000000: 0x808202,\n\t 0x60000000: 0x800202,\n\t 0x70000000: 0x800000,\n\t 0x80000000: 0x202,\n\t 0x90000000: 0x800200,\n\t 0xa0000000: 0x8200,\n\t 0xb0000000: 0x808000,\n\t 0xc0000000: 0x8002,\n\t 0xd0000000: 0x800002,\n\t 0xe0000000: 0x0,\n\t 0xf0000000: 0x8202,\n\t 0x8000000: 0x0,\n\t 0x18000000: 0x808202,\n\t 0x28000000: 0x8202,\n\t 0x38000000: 0x8000,\n\t 0x48000000: 0x808200,\n\t 0x58000000: 0x200,\n\t 0x68000000: 0x808002,\n\t 0x78000000: 0x2,\n\t 0x88000000: 0x800200,\n\t 0x98000000: 0x8200,\n\t 0xa8000000: 0x808000,\n\t 0xb8000000: 0x800202,\n\t 0xc8000000: 0x800002,\n\t 0xd8000000: 0x8002,\n\t 0xe8000000: 0x202,\n\t 0xf8000000: 0x800000,\n\t 0x1: 0x8000,\n\t 0x10000001: 0x2,\n\t 0x20000001: 0x808200,\n\t 0x30000001: 0x800000,\n\t 0x40000001: 0x808002,\n\t 0x50000001: 0x8200,\n\t 0x60000001: 0x200,\n\t 0x70000001: 0x800202,\n\t 0x80000001: 0x808202,\n\t 0x90000001: 0x808000,\n\t 0xa0000001: 0x800002,\n\t 0xb0000001: 0x8202,\n\t 0xc0000001: 0x202,\n\t 0xd0000001: 0x800200,\n\t 0xe0000001: 0x8002,\n\t 0xf0000001: 0x0,\n\t 0x8000001: 0x808202,\n\t 0x18000001: 0x808000,\n\t 0x28000001: 0x800000,\n\t 0x38000001: 0x200,\n\t 0x48000001: 0x8000,\n\t 0x58000001: 0x800002,\n\t 0x68000001: 0x2,\n\t 0x78000001: 0x8202,\n\t 0x88000001: 0x8002,\n\t 0x98000001: 0x800202,\n\t 0xa8000001: 0x202,\n\t 0xb8000001: 0x808200,\n\t 0xc8000001: 0x800200,\n\t 0xd8000001: 0x0,\n\t 0xe8000001: 0x8200,\n\t 0xf8000001: 0x808002\n\t },\n\t {\n\t 0x0: 0x40084010,\n\t 0x1000000: 0x4000,\n\t 0x2000000: 0x80000,\n\t 0x3000000: 0x40080010,\n\t 0x4000000: 0x40000010,\n\t 0x5000000: 0x40084000,\n\t 0x6000000: 0x40004000,\n\t 0x7000000: 0x10,\n\t 0x8000000: 0x84000,\n\t 0x9000000: 0x40004010,\n\t 0xa000000: 0x40000000,\n\t 0xb000000: 0x84010,\n\t 0xc000000: 0x80010,\n\t 0xd000000: 0x0,\n\t 0xe000000: 0x4010,\n\t 0xf000000: 0x40080000,\n\t 0x800000: 0x40004000,\n\t 0x1800000: 0x84010,\n\t 0x2800000: 0x10,\n\t 0x3800000: 0x40004010,\n\t 0x4800000: 0x40084010,\n\t 0x5800000: 0x40000000,\n\t 0x6800000: 0x80000,\n\t 0x7800000: 0x40080010,\n\t 0x8800000: 0x80010,\n\t 0x9800000: 0x0,\n\t 0xa800000: 0x4000,\n\t 0xb800000: 0x40080000,\n\t 0xc800000: 0x40000010,\n\t 0xd800000: 0x84000,\n\t 0xe800000: 0x40084000,\n\t 0xf800000: 0x4010,\n\t 0x10000000: 0x0,\n\t 0x11000000: 0x40080010,\n\t 0x12000000: 0x40004010,\n\t 0x13000000: 0x40084000,\n\t 0x14000000: 0x40080000,\n\t 0x15000000: 0x10,\n\t 0x16000000: 0x84010,\n\t 0x17000000: 0x4000,\n\t 0x18000000: 0x4010,\n\t 0x19000000: 0x80000,\n\t 0x1a000000: 0x80010,\n\t 0x1b000000: 0x40000010,\n\t 0x1c000000: 0x84000,\n\t 0x1d000000: 0x40004000,\n\t 0x1e000000: 0x40000000,\n\t 0x1f000000: 0x40084010,\n\t 0x10800000: 0x84010,\n\t 0x11800000: 0x80000,\n\t 0x12800000: 0x40080000,\n\t 0x13800000: 0x4000,\n\t 0x14800000: 0x40004000,\n\t 0x15800000: 0x40084010,\n\t 0x16800000: 0x10,\n\t 0x17800000: 0x40000000,\n\t 0x18800000: 0x40084000,\n\t 0x19800000: 0x40000010,\n\t 0x1a800000: 0x40004010,\n\t 0x1b800000: 0x80010,\n\t 0x1c800000: 0x0,\n\t 0x1d800000: 0x4010,\n\t 0x1e800000: 0x40080010,\n\t 0x1f800000: 0x84000\n\t },\n\t {\n\t 0x0: 0x104,\n\t 0x100000: 0x0,\n\t 0x200000: 0x4000100,\n\t 0x300000: 0x10104,\n\t 0x400000: 0x10004,\n\t 0x500000: 0x4000004,\n\t 0x600000: 0x4010104,\n\t 0x700000: 0x4010000,\n\t 0x800000: 0x4000000,\n\t 0x900000: 0x4010100,\n\t 0xa00000: 0x10100,\n\t 0xb00000: 0x4010004,\n\t 0xc00000: 0x4000104,\n\t 0xd00000: 0x10000,\n\t 0xe00000: 0x4,\n\t 0xf00000: 0x100,\n\t 0x80000: 0x4010100,\n\t 0x180000: 0x4010004,\n\t 0x280000: 0x0,\n\t 0x380000: 0x4000100,\n\t 0x480000: 0x4000004,\n\t 0x580000: 0x10000,\n\t 0x680000: 0x10004,\n\t 0x780000: 0x104,\n\t 0x880000: 0x4,\n\t 0x980000: 0x100,\n\t 0xa80000: 0x4010000,\n\t 0xb80000: 0x10104,\n\t 0xc80000: 0x10100,\n\t 0xd80000: 0x4000104,\n\t 0xe80000: 0x4010104,\n\t 0xf80000: 0x4000000,\n\t 0x1000000: 0x4010100,\n\t 0x1100000: 0x10004,\n\t 0x1200000: 0x10000,\n\t 0x1300000: 0x4000100,\n\t 0x1400000: 0x100,\n\t 0x1500000: 0x4010104,\n\t 0x1600000: 0x4000004,\n\t 0x1700000: 0x0,\n\t 0x1800000: 0x4000104,\n\t 0x1900000: 0x4000000,\n\t 0x1a00000: 0x4,\n\t 0x1b00000: 0x10100,\n\t 0x1c00000: 0x4010000,\n\t 0x1d00000: 0x104,\n\t 0x1e00000: 0x10104,\n\t 0x1f00000: 0x4010004,\n\t 0x1080000: 0x4000000,\n\t 0x1180000: 0x104,\n\t 0x1280000: 0x4010100,\n\t 0x1380000: 0x0,\n\t 0x1480000: 0x10004,\n\t 0x1580000: 0x4000100,\n\t 0x1680000: 0x100,\n\t 0x1780000: 0x4010004,\n\t 0x1880000: 0x10000,\n\t 0x1980000: 0x4010104,\n\t 0x1a80000: 0x10104,\n\t 0x1b80000: 0x4000004,\n\t 0x1c80000: 0x4000104,\n\t 0x1d80000: 0x4010000,\n\t 0x1e80000: 0x4,\n\t 0x1f80000: 0x10100\n\t },\n\t {\n\t 0x0: 0x80401000,\n\t 0x10000: 0x80001040,\n\t 0x20000: 0x401040,\n\t 0x30000: 0x80400000,\n\t 0x40000: 0x0,\n\t 0x50000: 0x401000,\n\t 0x60000: 0x80000040,\n\t 0x70000: 0x400040,\n\t 0x80000: 0x80000000,\n\t 0x90000: 0x400000,\n\t 0xa0000: 0x40,\n\t 0xb0000: 0x80001000,\n\t 0xc0000: 0x80400040,\n\t 0xd0000: 0x1040,\n\t 0xe0000: 0x1000,\n\t 0xf0000: 0x80401040,\n\t 0x8000: 0x80001040,\n\t 0x18000: 0x40,\n\t 0x28000: 0x80400040,\n\t 0x38000: 0x80001000,\n\t 0x48000: 0x401000,\n\t 0x58000: 0x80401040,\n\t 0x68000: 0x0,\n\t 0x78000: 0x80400000,\n\t 0x88000: 0x1000,\n\t 0x98000: 0x80401000,\n\t 0xa8000: 0x400000,\n\t 0xb8000: 0x1040,\n\t 0xc8000: 0x80000000,\n\t 0xd8000: 0x400040,\n\t 0xe8000: 0x401040,\n\t 0xf8000: 0x80000040,\n\t 0x100000: 0x400040,\n\t 0x110000: 0x401000,\n\t 0x120000: 0x80000040,\n\t 0x130000: 0x0,\n\t 0x140000: 0x1040,\n\t 0x150000: 0x80400040,\n\t 0x160000: 0x80401000,\n\t 0x170000: 0x80001040,\n\t 0x180000: 0x80401040,\n\t 0x190000: 0x80000000,\n\t 0x1a0000: 0x80400000,\n\t 0x1b0000: 0x401040,\n\t 0x1c0000: 0x80001000,\n\t 0x1d0000: 0x400000,\n\t 0x1e0000: 0x40,\n\t 0x1f0000: 0x1000,\n\t 0x108000: 0x80400000,\n\t 0x118000: 0x80401040,\n\t 0x128000: 0x0,\n\t 0x138000: 0x401000,\n\t 0x148000: 0x400040,\n\t 0x158000: 0x80000000,\n\t 0x168000: 0x80001040,\n\t 0x178000: 0x40,\n\t 0x188000: 0x80000040,\n\t 0x198000: 0x1000,\n\t 0x1a8000: 0x80001000,\n\t 0x1b8000: 0x80400040,\n\t 0x1c8000: 0x1040,\n\t 0x1d8000: 0x80401000,\n\t 0x1e8000: 0x400000,\n\t 0x1f8000: 0x401040\n\t },\n\t {\n\t 0x0: 0x80,\n\t 0x1000: 0x1040000,\n\t 0x2000: 0x40000,\n\t 0x3000: 0x20000000,\n\t 0x4000: 0x20040080,\n\t 0x5000: 0x1000080,\n\t 0x6000: 0x21000080,\n\t 0x7000: 0x40080,\n\t 0x8000: 0x1000000,\n\t 0x9000: 0x20040000,\n\t 0xa000: 0x20000080,\n\t 0xb000: 0x21040080,\n\t 0xc000: 0x21040000,\n\t 0xd000: 0x0,\n\t 0xe000: 0x1040080,\n\t 0xf000: 0x21000000,\n\t 0x800: 0x1040080,\n\t 0x1800: 0x21000080,\n\t 0x2800: 0x80,\n\t 0x3800: 0x1040000,\n\t 0x4800: 0x40000,\n\t 0x5800: 0x20040080,\n\t 0x6800: 0x21040000,\n\t 0x7800: 0x20000000,\n\t 0x8800: 0x20040000,\n\t 0x9800: 0x0,\n\t 0xa800: 0x21040080,\n\t 0xb800: 0x1000080,\n\t 0xc800: 0x20000080,\n\t 0xd800: 0x21000000,\n\t 0xe800: 0x1000000,\n\t 0xf800: 0x40080,\n\t 0x10000: 0x40000,\n\t 0x11000: 0x80,\n\t 0x12000: 0x20000000,\n\t 0x13000: 0x21000080,\n\t 0x14000: 0x1000080,\n\t 0x15000: 0x21040000,\n\t 0x16000: 0x20040080,\n\t 0x17000: 0x1000000,\n\t 0x18000: 0x21040080,\n\t 0x19000: 0x21000000,\n\t 0x1a000: 0x1040000,\n\t 0x1b000: 0x20040000,\n\t 0x1c000: 0x40080,\n\t 0x1d000: 0x20000080,\n\t 0x1e000: 0x0,\n\t 0x1f000: 0x1040080,\n\t 0x10800: 0x21000080,\n\t 0x11800: 0x1000000,\n\t 0x12800: 0x1040000,\n\t 0x13800: 0x20040080,\n\t 0x14800: 0x20000000,\n\t 0x15800: 0x1040080,\n\t 0x16800: 0x80,\n\t 0x17800: 0x21040000,\n\t 0x18800: 0x40080,\n\t 0x19800: 0x21040080,\n\t 0x1a800: 0x0,\n\t 0x1b800: 0x21000000,\n\t 0x1c800: 0x1000080,\n\t 0x1d800: 0x40000,\n\t 0x1e800: 0x20040000,\n\t 0x1f800: 0x20000080\n\t },\n\t {\n\t 0x0: 0x10000008,\n\t 0x100: 0x2000,\n\t 0x200: 0x10200000,\n\t 0x300: 0x10202008,\n\t 0x400: 0x10002000,\n\t 0x500: 0x200000,\n\t 0x600: 0x200008,\n\t 0x700: 0x10000000,\n\t 0x800: 0x0,\n\t 0x900: 0x10002008,\n\t 0xa00: 0x202000,\n\t 0xb00: 0x8,\n\t 0xc00: 0x10200008,\n\t 0xd00: 0x202008,\n\t 0xe00: 0x2008,\n\t 0xf00: 0x10202000,\n\t 0x80: 0x10200000,\n\t 0x180: 0x10202008,\n\t 0x280: 0x8,\n\t 0x380: 0x200000,\n\t 0x480: 0x202008,\n\t 0x580: 0x10000008,\n\t 0x680: 0x10002000,\n\t 0x780: 0x2008,\n\t 0x880: 0x200008,\n\t 0x980: 0x2000,\n\t 0xa80: 0x10002008,\n\t 0xb80: 0x10200008,\n\t 0xc80: 0x0,\n\t 0xd80: 0x10202000,\n\t 0xe80: 0x202000,\n\t 0xf80: 0x10000000,\n\t 0x1000: 0x10002000,\n\t 0x1100: 0x10200008,\n\t 0x1200: 0x10202008,\n\t 0x1300: 0x2008,\n\t 0x1400: 0x200000,\n\t 0x1500: 0x10000000,\n\t 0x1600: 0x10000008,\n\t 0x1700: 0x202000,\n\t 0x1800: 0x202008,\n\t 0x1900: 0x0,\n\t 0x1a00: 0x8,\n\t 0x1b00: 0x10200000,\n\t 0x1c00: 0x2000,\n\t 0x1d00: 0x10002008,\n\t 0x1e00: 0x10202000,\n\t 0x1f00: 0x200008,\n\t 0x1080: 0x8,\n\t 0x1180: 0x202000,\n\t 0x1280: 0x200000,\n\t 0x1380: 0x10000008,\n\t 0x1480: 0x10002000,\n\t 0x1580: 0x2008,\n\t 0x1680: 0x10202008,\n\t 0x1780: 0x10200000,\n\t 0x1880: 0x10202000,\n\t 0x1980: 0x10200008,\n\t 0x1a80: 0x2000,\n\t 0x1b80: 0x202008,\n\t 0x1c80: 0x200008,\n\t 0x1d80: 0x0,\n\t 0x1e80: 0x10000000,\n\t 0x1f80: 0x10002008\n\t },\n\t {\n\t 0x0: 0x100000,\n\t 0x10: 0x2000401,\n\t 0x20: 0x400,\n\t 0x30: 0x100401,\n\t 0x40: 0x2100401,\n\t 0x50: 0x0,\n\t 0x60: 0x1,\n\t 0x70: 0x2100001,\n\t 0x80: 0x2000400,\n\t 0x90: 0x100001,\n\t 0xa0: 0x2000001,\n\t 0xb0: 0x2100400,\n\t 0xc0: 0x2100000,\n\t 0xd0: 0x401,\n\t 0xe0: 0x100400,\n\t 0xf0: 0x2000000,\n\t 0x8: 0x2100001,\n\t 0x18: 0x0,\n\t 0x28: 0x2000401,\n\t 0x38: 0x2100400,\n\t 0x48: 0x100000,\n\t 0x58: 0x2000001,\n\t 0x68: 0x2000000,\n\t 0x78: 0x401,\n\t 0x88: 0x100401,\n\t 0x98: 0x2000400,\n\t 0xa8: 0x2100000,\n\t 0xb8: 0x100001,\n\t 0xc8: 0x400,\n\t 0xd8: 0x2100401,\n\t 0xe8: 0x1,\n\t 0xf8: 0x100400,\n\t 0x100: 0x2000000,\n\t 0x110: 0x100000,\n\t 0x120: 0x2000401,\n\t 0x130: 0x2100001,\n\t 0x140: 0x100001,\n\t 0x150: 0x2000400,\n\t 0x160: 0x2100400,\n\t 0x170: 0x100401,\n\t 0x180: 0x401,\n\t 0x190: 0x2100401,\n\t 0x1a0: 0x100400,\n\t 0x1b0: 0x1,\n\t 0x1c0: 0x0,\n\t 0x1d0: 0x2100000,\n\t 0x1e0: 0x2000001,\n\t 0x1f0: 0x400,\n\t 0x108: 0x100400,\n\t 0x118: 0x2000401,\n\t 0x128: 0x2100001,\n\t 0x138: 0x1,\n\t 0x148: 0x2000000,\n\t 0x158: 0x100000,\n\t 0x168: 0x401,\n\t 0x178: 0x2100400,\n\t 0x188: 0x2000001,\n\t 0x198: 0x2100000,\n\t 0x1a8: 0x0,\n\t 0x1b8: 0x2100401,\n\t 0x1c8: 0x100401,\n\t 0x1d8: 0x400,\n\t 0x1e8: 0x2000400,\n\t 0x1f8: 0x100001\n\t },\n\t {\n\t 0x0: 0x8000820,\n\t 0x1: 0x20000,\n\t 0x2: 0x8000000,\n\t 0x3: 0x20,\n\t 0x4: 0x20020,\n\t 0x5: 0x8020820,\n\t 0x6: 0x8020800,\n\t 0x7: 0x800,\n\t 0x8: 0x8020000,\n\t 0x9: 0x8000800,\n\t 0xa: 0x20800,\n\t 0xb: 0x8020020,\n\t 0xc: 0x820,\n\t 0xd: 0x0,\n\t 0xe: 0x8000020,\n\t 0xf: 0x20820,\n\t 0x80000000: 0x800,\n\t 0x80000001: 0x8020820,\n\t 0x80000002: 0x8000820,\n\t 0x80000003: 0x8000000,\n\t 0x80000004: 0x8020000,\n\t 0x80000005: 0x20800,\n\t 0x80000006: 0x20820,\n\t 0x80000007: 0x20,\n\t 0x80000008: 0x8000020,\n\t 0x80000009: 0x820,\n\t 0x8000000a: 0x20020,\n\t 0x8000000b: 0x8020800,\n\t 0x8000000c: 0x0,\n\t 0x8000000d: 0x8020020,\n\t 0x8000000e: 0x8000800,\n\t 0x8000000f: 0x20000,\n\t 0x10: 0x20820,\n\t 0x11: 0x8020800,\n\t 0x12: 0x20,\n\t 0x13: 0x800,\n\t 0x14: 0x8000800,\n\t 0x15: 0x8000020,\n\t 0x16: 0x8020020,\n\t 0x17: 0x20000,\n\t 0x18: 0x0,\n\t 0x19: 0x20020,\n\t 0x1a: 0x8020000,\n\t 0x1b: 0x8000820,\n\t 0x1c: 0x8020820,\n\t 0x1d: 0x20800,\n\t 0x1e: 0x820,\n\t 0x1f: 0x8000000,\n\t 0x80000010: 0x20000,\n\t 0x80000011: 0x800,\n\t 0x80000012: 0x8020020,\n\t 0x80000013: 0x20820,\n\t 0x80000014: 0x20,\n\t 0x80000015: 0x8020000,\n\t 0x80000016: 0x8000000,\n\t 0x80000017: 0x8000820,\n\t 0x80000018: 0x8020820,\n\t 0x80000019: 0x8000020,\n\t 0x8000001a: 0x8000800,\n\t 0x8000001b: 0x0,\n\t 0x8000001c: 0x20800,\n\t 0x8000001d: 0x820,\n\t 0x8000001e: 0x20020,\n\t 0x8000001f: 0x8020800\n\t }\n\t ];\n\n\t // Masks that select the SBOX input\n\t var SBOX_MASK = [\n\t 0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000,\n\t 0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f\n\t ];\n\n\t /**\n\t * DES block cipher algorithm.\n\t */\n\t var DES = C_algo.DES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\n\t // Select 56 bits according to PC1\n\t var keyBits = [];\n\t for (var i = 0; i < 56; i++) {\n\t var keyBitPos = PC1[i] - 1;\n\t keyBits[i] = (keyWords[keyBitPos >>> 5] >>> (31 - keyBitPos % 32)) & 1;\n\t }\n\n\t // Assemble 16 subkeys\n\t var subKeys = this._subKeys = [];\n\t for (var nSubKey = 0; nSubKey < 16; nSubKey++) {\n\t // Create subkey\n\t var subKey = subKeys[nSubKey] = [];\n\n\t // Shortcut\n\t var bitShift = BIT_SHIFTS[nSubKey];\n\n\t // Select 48 bits according to PC2\n\t for (var i = 0; i < 24; i++) {\n\t // Select from the left 28 key bits\n\t subKey[(i / 6) | 0] |= keyBits[((PC2[i] - 1) + bitShift) % 28] << (31 - i % 6);\n\n\t // Select from the right 28 key bits\n\t subKey[4 + ((i / 6) | 0)] |= keyBits[28 + (((PC2[i + 24] - 1) + bitShift) % 28)] << (31 - i % 6);\n\t }\n\n\t // Since each subkey is applied to an expanded 32-bit input,\n\t // the subkey can be broken into 8 values scaled to 32-bits,\n\t // which allows the key to be used without expansion\n\t subKey[0] = (subKey[0] << 1) | (subKey[0] >>> 31);\n\t for (var i = 1; i < 7; i++) {\n\t subKey[i] = subKey[i] >>> ((i - 1) * 4 + 3);\n\t }\n\t subKey[7] = (subKey[7] << 5) | (subKey[7] >>> 27);\n\t }\n\n\t // Compute inverse subkeys\n\t var invSubKeys = this._invSubKeys = [];\n\t for (var i = 0; i < 16; i++) {\n\t invSubKeys[i] = subKeys[15 - i];\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._subKeys);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._invSubKeys);\n\t },\n\n\t _doCryptBlock: function (M, offset, subKeys) {\n\t // Get input\n\t this._lBlock = M[offset];\n\t this._rBlock = M[offset + 1];\n\n\t // Initial permutation\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeLR.call(this, 1, 0x55555555);\n\n\t // Rounds\n\t for (var round = 0; round < 16; round++) {\n\t // Shortcuts\n\t var subKey = subKeys[round];\n\t var lBlock = this._lBlock;\n\t var rBlock = this._rBlock;\n\n\t // Feistel function\n\t var f = 0;\n\t for (var i = 0; i < 8; i++) {\n\t f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0];\n\t }\n\t this._lBlock = rBlock;\n\t this._rBlock = lBlock ^ f;\n\t }\n\n\t // Undo swap from last round\n\t var t = this._lBlock;\n\t this._lBlock = this._rBlock;\n\t this._rBlock = t;\n\n\t // Final permutation\n\t exchangeLR.call(this, 1, 0x55555555);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\n\t // Set output\n\t M[offset] = this._lBlock;\n\t M[offset + 1] = this._rBlock;\n\t },\n\n\t keySize: 64/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t // Swap bits across the left and right words\n\t function exchangeLR(offset, mask) {\n\t var t = ((this._lBlock >>> offset) ^ this._rBlock) & mask;\n\t this._rBlock ^= t;\n\t this._lBlock ^= t << offset;\n\t }\n\n\t function exchangeRL(offset, mask) {\n\t var t = ((this._rBlock >>> offset) ^ this._lBlock) & mask;\n\t this._lBlock ^= t;\n\t this._rBlock ^= t << offset;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.DES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.DES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.DES = BlockCipher._createHelper(DES);\n\n\t /**\n\t * Triple-DES block cipher algorithm.\n\t */\n\t var TripleDES = C_algo.TripleDES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\t // Make sure the key length is valid (64, 128 or >= 192 bit)\n\t if (keyWords.length !== 2 && keyWords.length !== 4 && keyWords.length < 6) {\n\t throw new Error('Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192.');\n\t }\n\n\t // Extend the key according to the keying options defined in 3DES standard\n\t var key1 = keyWords.slice(0, 2);\n\t var key2 = keyWords.length < 4 ? keyWords.slice(0, 2) : keyWords.slice(2, 4);\n\t var key3 = keyWords.length < 6 ? keyWords.slice(0, 2) : keyWords.slice(4, 6);\n\n\t // Create DES instances\n\t this._des1 = DES.createEncryptor(WordArray.create(key1));\n\t this._des2 = DES.createEncryptor(WordArray.create(key2));\n\t this._des3 = DES.createEncryptor(WordArray.create(key3));\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._des1.encryptBlock(M, offset);\n\t this._des2.decryptBlock(M, offset);\n\t this._des3.encryptBlock(M, offset);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._des3.decryptBlock(M, offset);\n\t this._des2.encryptBlock(M, offset);\n\t this._des1.decryptBlock(M, offset);\n\t },\n\n\t keySize: 192/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.TripleDES = BlockCipher._createHelper(TripleDES);\n\t}());\n\n\n\treturn CryptoJS.TripleDES;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ANSI X.923 padding strategy.\n\t */\n\tCryptoJS.pad.AnsiX923 = {\n\t pad: function (data, blockSize) {\n\t // Shortcuts\n\t var dataSigBytes = data.sigBytes;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - dataSigBytes % blockSizeBytes;\n\n\t // Compute last byte position\n\t var lastBytePos = dataSigBytes + nPaddingBytes - 1;\n\n\t // Pad\n\t data.clamp();\n\t data.words[lastBytePos >>> 2] |= nPaddingBytes << (24 - (lastBytePos % 4) * 8);\n\t data.sigBytes += nPaddingBytes;\n\t },\n\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Ansix923;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * UTF-16 BE encoding strategy.\n\t */\n\t var Utf16BE = C_enc.Utf16 = C_enc.Utf16BE = {\n\t /**\n\t * Converts a word array to a UTF-16 BE string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-16 BE string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf16String = CryptoJS.enc.Utf16.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var utf16Chars = [];\n\t for (var i = 0; i < sigBytes; i += 2) {\n\t var codePoint = (words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff;\n\t utf16Chars.push(String.fromCharCode(codePoint));\n\t }\n\n\t return utf16Chars.join('');\n\t },\n\n\t /**\n\t * Converts a UTF-16 BE string to a word array.\n\t *\n\t * @param {string} utf16Str The UTF-16 BE string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf16.parse(utf16String);\n\t */\n\t parse: function (utf16Str) {\n\t // Shortcut\n\t var utf16StrLength = utf16Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < utf16StrLength; i++) {\n\t words[i >>> 1] |= utf16Str.charCodeAt(i) << (16 - (i % 2) * 16);\n\t }\n\n\t return WordArray.create(words, utf16StrLength * 2);\n\t }\n\t };\n\n\t /**\n\t * UTF-16 LE encoding strategy.\n\t */\n\t C_enc.Utf16LE = {\n\t /**\n\t * Converts a word array to a UTF-16 LE string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-16 LE string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var utf16Chars = [];\n\t for (var i = 0; i < sigBytes; i += 2) {\n\t var codePoint = swapEndian((words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff);\n\t utf16Chars.push(String.fromCharCode(codePoint));\n\t }\n\n\t return utf16Chars.join('');\n\t },\n\n\t /**\n\t * Converts a UTF-16 LE string to a word array.\n\t *\n\t * @param {string} utf16Str The UTF-16 LE string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str);\n\t */\n\t parse: function (utf16Str) {\n\t // Shortcut\n\t var utf16StrLength = utf16Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < utf16StrLength; i++) {\n\t words[i >>> 1] |= swapEndian(utf16Str.charCodeAt(i) << (16 - (i % 2) * 16));\n\t }\n\n\t return WordArray.create(words, utf16StrLength * 2);\n\t }\n\t };\n\n\t function swapEndian(word) {\n\t return ((word << 8) & 0xff00ff00) | ((word >>> 8) & 0x00ff00ff);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Utf16;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/** @preserve\n\t * Counter block mode compatible with Dr Brian Gladman fileenc.c\n\t * derived from CryptoJS.mode.CTR\n\t * Jan Hruby jhruby.web@gmail.com\n\t */\n\tCryptoJS.mode.CTRGladman = (function () {\n\t var CTRGladman = CryptoJS.lib.BlockCipherMode.extend();\n\n\t\tfunction incWord(word)\n\t\t{\n\t\t\tif (((word >> 24) & 0xff) === 0xff) { //overflow\n\t\t\tvar b1 = (word >> 16)&0xff;\n\t\t\tvar b2 = (word >> 8)&0xff;\n\t\t\tvar b3 = word & 0xff;\n\n\t\t\tif (b1 === 0xff) // overflow b1\n\t\t\t{\n\t\t\tb1 = 0;\n\t\t\tif (b2 === 0xff)\n\t\t\t{\n\t\t\t\tb2 = 0;\n\t\t\t\tif (b3 === 0xff)\n\t\t\t\t{\n\t\t\t\t\tb3 = 0;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t++b3;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t++b2;\n\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t++b1;\n\t\t\t}\n\n\t\t\tword = 0;\n\t\t\tword += (b1 << 16);\n\t\t\tword += (b2 << 8);\n\t\t\tword += b3;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\tword += (0x01 << 24);\n\t\t\t}\n\t\t\treturn word;\n\t\t}\n\n\t\tfunction incCounter(counter)\n\t\t{\n\t\t\tif ((counter[0] = incWord(counter[0])) === 0)\n\t\t\t{\n\t\t\t\t// encr_data in fileenc.c from Dr Brian Gladman's counts only with DWORD j < 8\n\t\t\t\tcounter[1] = incWord(counter[1]);\n\t\t\t}\n\t\t\treturn counter;\n\t\t}\n\n\t var Encryptor = CTRGladman.Encryptor = CTRGladman.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var counter = this._counter;\n\n\t // Generate keystream\n\t if (iv) {\n\t counter = this._counter = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\n\t\t\t\tincCounter(counter);\n\n\t\t\t\tvar keystream = counter.slice(0);\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t CTRGladman.Decryptor = Encryptor;\n\n\t return CTRGladman;\n\t}());\n\n\n\n\n\treturn CryptoJS.mode.CTRGladman;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"), require(\"./sha512\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\", \"./sha512\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var X64WordArray = C_x64.WordArray;\n\t var C_algo = C.algo;\n\t var SHA512 = C_algo.SHA512;\n\n\t /**\n\t * SHA-384 hash algorithm.\n\t */\n\t var SHA384 = C_algo.SHA384 = SHA512.extend({\n\t _doReset: function () {\n\t this._hash = new X64WordArray.init([\n\t new X64Word.init(0xcbbb9d5d, 0xc1059ed8), new X64Word.init(0x629a292a, 0x367cd507),\n\t new X64Word.init(0x9159015a, 0x3070dd17), new X64Word.init(0x152fecd8, 0xf70e5939),\n\t new X64Word.init(0x67332667, 0xffc00b31), new X64Word.init(0x8eb44a87, 0x68581511),\n\t new X64Word.init(0xdb0c2e0d, 0x64f98fa7), new X64Word.init(0x47b5481d, 0xbefa4fa4)\n\t ]);\n\t },\n\n\t _doFinalize: function () {\n\t var hash = SHA512._doFinalize.call(this);\n\n\t hash.sigBytes -= 16;\n\n\t return hash;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA384('message');\n\t * var hash = CryptoJS.SHA384(wordArray);\n\t */\n\t C.SHA384 = SHA512._createHelper(SHA384);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA384(message, key);\n\t */\n\t C.HmacSHA384 = SHA512._createHmacHelper(SHA384);\n\t}());\n\n\n\treturn CryptoJS.SHA384;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * A noop padding strategy.\n\t */\n\tCryptoJS.pad.NoPadding = {\n\t pad: function () {\n\t },\n\n\t unpad: function () {\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.NoPadding;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Lookup tables\n\t var SBOX = [];\n\t var INV_SBOX = [];\n\t var SUB_MIX_0 = [];\n\t var SUB_MIX_1 = [];\n\t var SUB_MIX_2 = [];\n\t var SUB_MIX_3 = [];\n\t var INV_SUB_MIX_0 = [];\n\t var INV_SUB_MIX_1 = [];\n\t var INV_SUB_MIX_2 = [];\n\t var INV_SUB_MIX_3 = [];\n\n\t // Compute lookup tables\n\t (function () {\n\t // Compute double table\n\t var d = [];\n\t for (var i = 0; i < 256; i++) {\n\t if (i < 128) {\n\t d[i] = i << 1;\n\t } else {\n\t d[i] = (i << 1) ^ 0x11b;\n\t }\n\t }\n\n\t // Walk GF(2^8)\n\t var x = 0;\n\t var xi = 0;\n\t for (var i = 0; i < 256; i++) {\n\t // Compute sbox\n\t var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);\n\t sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;\n\t SBOX[x] = sx;\n\t INV_SBOX[sx] = x;\n\n\t // Compute multiplication\n\t var x2 = d[x];\n\t var x4 = d[x2];\n\t var x8 = d[x4];\n\n\t // Compute sub bytes, mix columns tables\n\t var t = (d[sx] * 0x101) ^ (sx * 0x1010100);\n\t SUB_MIX_0[x] = (t << 24) | (t >>> 8);\n\t SUB_MIX_1[x] = (t << 16) | (t >>> 16);\n\t SUB_MIX_2[x] = (t << 8) | (t >>> 24);\n\t SUB_MIX_3[x] = t;\n\n\t // Compute inv sub bytes, inv mix columns tables\n\t var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);\n\t INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);\n\t INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);\n\t INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24);\n\t INV_SUB_MIX_3[sx] = t;\n\n\t // Compute next counter\n\t if (!x) {\n\t x = xi = 1;\n\t } else {\n\t x = x2 ^ d[d[d[x8 ^ x2]]];\n\t xi ^= d[d[xi]];\n\t }\n\t }\n\t }());\n\n\t // Precomputed Rcon lookup\n\t var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n\n\t /**\n\t * AES block cipher algorithm.\n\t */\n\t var AES = C_algo.AES = BlockCipher.extend({\n\t _doReset: function () {\n\t var t;\n\n\t // Skip reset of nRounds has been set before and key did not change\n\t if (this._nRounds && this._keyPriorReset === this._key) {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var key = this._keyPriorReset = this._key;\n\t var keyWords = key.words;\n\t var keySize = key.sigBytes / 4;\n\n\t // Compute number of rounds\n\t var nRounds = this._nRounds = keySize + 6;\n\n\t // Compute number of key schedule rows\n\t var ksRows = (nRounds + 1) * 4;\n\n\t // Compute key schedule\n\t var keySchedule = this._keySchedule = [];\n\t for (var ksRow = 0; ksRow < ksRows; ksRow++) {\n\t if (ksRow < keySize) {\n\t keySchedule[ksRow] = keyWords[ksRow];\n\t } else {\n\t t = keySchedule[ksRow - 1];\n\n\t if (!(ksRow % keySize)) {\n\t // Rot word\n\t t = (t << 8) | (t >>> 24);\n\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\n\t // Mix Rcon\n\t t ^= RCON[(ksRow / keySize) | 0] << 24;\n\t } else if (keySize > 6 && ksRow % keySize == 4) {\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\t }\n\n\t keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;\n\t }\n\t }\n\n\t // Compute inv key schedule\n\t var invKeySchedule = this._invKeySchedule = [];\n\t for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n\t var ksRow = ksRows - invKsRow;\n\n\t if (invKsRow % 4) {\n\t var t = keySchedule[ksRow];\n\t } else {\n\t var t = keySchedule[ksRow - 4];\n\t }\n\n\t if (invKsRow < 4 || ksRow <= 4) {\n\t invKeySchedule[invKsRow] = t;\n\t } else {\n\t invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^\n\t INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];\n\t }\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t // Swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\n\t this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);\n\n\t // Inv swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\t },\n\n\t _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {\n\t // Shortcut\n\t var nRounds = this._nRounds;\n\n\t // Get input, add round key\n\t var s0 = M[offset] ^ keySchedule[0];\n\t var s1 = M[offset + 1] ^ keySchedule[1];\n\t var s2 = M[offset + 2] ^ keySchedule[2];\n\t var s3 = M[offset + 3] ^ keySchedule[3];\n\n\t // Key schedule row counter\n\t var ksRow = 4;\n\n\t // Rounds\n\t for (var round = 1; round < nRounds; round++) {\n\t // Shift rows, sub bytes, mix columns, add round key\n\t var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];\n\t var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];\n\t var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];\n\t var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];\n\n\t // Update state\n\t s0 = t0;\n\t s1 = t1;\n\t s2 = t2;\n\t s3 = t3;\n\t }\n\n\t // Shift rows, sub bytes, add round key\n\t var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\n\t var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\n\t var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\n\t var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\n\n\t // Set output\n\t M[offset] = t0;\n\t M[offset + 1] = t1;\n\t M[offset + 2] = t2;\n\t M[offset + 3] = t3;\n\t },\n\n\t keySize: 256/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.AES = BlockCipher._createHelper(AES);\n\t}());\n\n\n\treturn CryptoJS.AES;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64url encoding strategy.\n\t */\n\t var Base64url = C_enc.Base64url = {\n\t /**\n\t * Converts a word array to a Base64url string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @param {boolean} urlSafe Whether to use url safe\n\t *\n\t * @return {string} The Base64url string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64url.stringify(wordArray);\n\t */\n\t stringify: function (wordArray, urlSafe=true) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = urlSafe ? this._safe_map : this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64url string to a word array.\n\t *\n\t * @param {string} base64Str The Base64url string.\n\t *\n\t * @param {boolean} urlSafe Whether to use url safe\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64url.parse(base64String);\n\t */\n\t parse: function (base64Str, urlSafe=true) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = urlSafe ? this._safe_map : this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n\t _safe_map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\treturn CryptoJS.enc.Base64url;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t /**\n\t * RC4 stream cipher algorithm.\n\t */\n\t var RC4 = C_algo.RC4 = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\t var keySigBytes = key.sigBytes;\n\n\t // Init sbox\n\t var S = this._S = [];\n\t for (var i = 0; i < 256; i++) {\n\t S[i] = i;\n\t }\n\n\t // Key setup\n\t for (var i = 0, j = 0; i < 256; i++) {\n\t var keyByteIndex = i % keySigBytes;\n\t var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff;\n\n\t j = (j + S[i] + keyByte) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\t }\n\n\t // Counters\n\t this._i = this._j = 0;\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t M[offset] ^= generateKeystreamWord.call(this);\n\t },\n\n\t keySize: 256/32,\n\n\t ivSize: 0\n\t });\n\n\t function generateKeystreamWord() {\n\t // Shortcuts\n\t var S = this._S;\n\t var i = this._i;\n\t var j = this._j;\n\n\t // Generate keystream word\n\t var keystreamWord = 0;\n\t for (var n = 0; n < 4; n++) {\n\t i = (i + 1) % 256;\n\t j = (j + S[i]) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\n\t keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8);\n\t }\n\n\t // Update counters\n\t this._i = i;\n\t this._j = j;\n\n\t return keystreamWord;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4 = StreamCipher._createHelper(RC4);\n\n\t /**\n\t * Modified RC4 stream cipher algorithm.\n\t */\n\t var RC4Drop = C_algo.RC4Drop = RC4.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} drop The number of keystream words to drop. Default 192\n\t */\n\t cfg: RC4.cfg.extend({\n\t drop: 192\n\t }),\n\n\t _doReset: function () {\n\t RC4._doReset.call(this);\n\n\t // Drop\n\t for (var i = this.cfg.drop; i > 0; i--) {\n\t generateKeystreamWord.call(this);\n\t }\n\t }\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4Drop = StreamCipher._createHelper(RC4Drop);\n\t}());\n\n\n\treturn CryptoJS.RC4;\n\n}));","var aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n return function (that, callbackfn, argumentsLength, memo) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IndexedObject(O);\n var length = toLength(O.length);\n var index = IS_RIGHT ? length - 1 : 0;\n var i = IS_RIGHT ? -1 : 1;\n if (argumentsLength < 2) while (true) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (IS_RIGHT ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.reduce` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n left: createMethod(false),\n // `Array.prototype.reduceRight` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.reduceright\n right: createMethod(true)\n};\n",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Hasher = C_lib.Hasher;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var X64WordArray = C_x64.WordArray;\n\t var C_algo = C.algo;\n\n\t function X64Word_create() {\n\t return X64Word.create.apply(X64Word, arguments);\n\t }\n\n\t // Constants\n\t var K = [\n\t X64Word_create(0x428a2f98, 0xd728ae22), X64Word_create(0x71374491, 0x23ef65cd),\n\t X64Word_create(0xb5c0fbcf, 0xec4d3b2f), X64Word_create(0xe9b5dba5, 0x8189dbbc),\n\t X64Word_create(0x3956c25b, 0xf348b538), X64Word_create(0x59f111f1, 0xb605d019),\n\t X64Word_create(0x923f82a4, 0xaf194f9b), X64Word_create(0xab1c5ed5, 0xda6d8118),\n\t X64Word_create(0xd807aa98, 0xa3030242), X64Word_create(0x12835b01, 0x45706fbe),\n\t X64Word_create(0x243185be, 0x4ee4b28c), X64Word_create(0x550c7dc3, 0xd5ffb4e2),\n\t X64Word_create(0x72be5d74, 0xf27b896f), X64Word_create(0x80deb1fe, 0x3b1696b1),\n\t X64Word_create(0x9bdc06a7, 0x25c71235), X64Word_create(0xc19bf174, 0xcf692694),\n\t X64Word_create(0xe49b69c1, 0x9ef14ad2), X64Word_create(0xefbe4786, 0x384f25e3),\n\t X64Word_create(0x0fc19dc6, 0x8b8cd5b5), X64Word_create(0x240ca1cc, 0x77ac9c65),\n\t X64Word_create(0x2de92c6f, 0x592b0275), X64Word_create(0x4a7484aa, 0x6ea6e483),\n\t X64Word_create(0x5cb0a9dc, 0xbd41fbd4), X64Word_create(0x76f988da, 0x831153b5),\n\t X64Word_create(0x983e5152, 0xee66dfab), X64Word_create(0xa831c66d, 0x2db43210),\n\t X64Word_create(0xb00327c8, 0x98fb213f), X64Word_create(0xbf597fc7, 0xbeef0ee4),\n\t X64Word_create(0xc6e00bf3, 0x3da88fc2), X64Word_create(0xd5a79147, 0x930aa725),\n\t X64Word_create(0x06ca6351, 0xe003826f), X64Word_create(0x14292967, 0x0a0e6e70),\n\t X64Word_create(0x27b70a85, 0x46d22ffc), X64Word_create(0x2e1b2138, 0x5c26c926),\n\t X64Word_create(0x4d2c6dfc, 0x5ac42aed), X64Word_create(0x53380d13, 0x9d95b3df),\n\t X64Word_create(0x650a7354, 0x8baf63de), X64Word_create(0x766a0abb, 0x3c77b2a8),\n\t X64Word_create(0x81c2c92e, 0x47edaee6), X64Word_create(0x92722c85, 0x1482353b),\n\t X64Word_create(0xa2bfe8a1, 0x4cf10364), X64Word_create(0xa81a664b, 0xbc423001),\n\t X64Word_create(0xc24b8b70, 0xd0f89791), X64Word_create(0xc76c51a3, 0x0654be30),\n\t X64Word_create(0xd192e819, 0xd6ef5218), X64Word_create(0xd6990624, 0x5565a910),\n\t X64Word_create(0xf40e3585, 0x5771202a), X64Word_create(0x106aa070, 0x32bbd1b8),\n\t X64Word_create(0x19a4c116, 0xb8d2d0c8), X64Word_create(0x1e376c08, 0x5141ab53),\n\t X64Word_create(0x2748774c, 0xdf8eeb99), X64Word_create(0x34b0bcb5, 0xe19b48a8),\n\t X64Word_create(0x391c0cb3, 0xc5c95a63), X64Word_create(0x4ed8aa4a, 0xe3418acb),\n\t X64Word_create(0x5b9cca4f, 0x7763e373), X64Word_create(0x682e6ff3, 0xd6b2b8a3),\n\t X64Word_create(0x748f82ee, 0x5defb2fc), X64Word_create(0x78a5636f, 0x43172f60),\n\t X64Word_create(0x84c87814, 0xa1f0ab72), X64Word_create(0x8cc70208, 0x1a6439ec),\n\t X64Word_create(0x90befffa, 0x23631e28), X64Word_create(0xa4506ceb, 0xde82bde9),\n\t X64Word_create(0xbef9a3f7, 0xb2c67915), X64Word_create(0xc67178f2, 0xe372532b),\n\t X64Word_create(0xca273ece, 0xea26619c), X64Word_create(0xd186b8c7, 0x21c0c207),\n\t X64Word_create(0xeada7dd6, 0xcde0eb1e), X64Word_create(0xf57d4f7f, 0xee6ed178),\n\t X64Word_create(0x06f067aa, 0x72176fba), X64Word_create(0x0a637dc5, 0xa2c898a6),\n\t X64Word_create(0x113f9804, 0xbef90dae), X64Word_create(0x1b710b35, 0x131c471b),\n\t X64Word_create(0x28db77f5, 0x23047d84), X64Word_create(0x32caab7b, 0x40c72493),\n\t X64Word_create(0x3c9ebe0a, 0x15c9bebc), X64Word_create(0x431d67c4, 0x9c100d4c),\n\t X64Word_create(0x4cc5d4be, 0xcb3e42b6), X64Word_create(0x597f299c, 0xfc657e2a),\n\t X64Word_create(0x5fcb6fab, 0x3ad6faec), X64Word_create(0x6c44198c, 0x4a475817)\n\t ];\n\n\t // Reusable objects\n\t var W = [];\n\t (function () {\n\t for (var i = 0; i < 80; i++) {\n\t W[i] = X64Word_create();\n\t }\n\t }());\n\n\t /**\n\t * SHA-512 hash algorithm.\n\t */\n\t var SHA512 = C_algo.SHA512 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new X64WordArray.init([\n\t new X64Word.init(0x6a09e667, 0xf3bcc908), new X64Word.init(0xbb67ae85, 0x84caa73b),\n\t new X64Word.init(0x3c6ef372, 0xfe94f82b), new X64Word.init(0xa54ff53a, 0x5f1d36f1),\n\t new X64Word.init(0x510e527f, 0xade682d1), new X64Word.init(0x9b05688c, 0x2b3e6c1f),\n\t new X64Word.init(0x1f83d9ab, 0xfb41bd6b), new X64Word.init(0x5be0cd19, 0x137e2179)\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var H0 = H[0];\n\t var H1 = H[1];\n\t var H2 = H[2];\n\t var H3 = H[3];\n\t var H4 = H[4];\n\t var H5 = H[5];\n\t var H6 = H[6];\n\t var H7 = H[7];\n\n\t var H0h = H0.high;\n\t var H0l = H0.low;\n\t var H1h = H1.high;\n\t var H1l = H1.low;\n\t var H2h = H2.high;\n\t var H2l = H2.low;\n\t var H3h = H3.high;\n\t var H3l = H3.low;\n\t var H4h = H4.high;\n\t var H4l = H4.low;\n\t var H5h = H5.high;\n\t var H5l = H5.low;\n\t var H6h = H6.high;\n\t var H6l = H6.low;\n\t var H7h = H7.high;\n\t var H7l = H7.low;\n\n\t // Working variables\n\t var ah = H0h;\n\t var al = H0l;\n\t var bh = H1h;\n\t var bl = H1l;\n\t var ch = H2h;\n\t var cl = H2l;\n\t var dh = H3h;\n\t var dl = H3l;\n\t var eh = H4h;\n\t var el = H4l;\n\t var fh = H5h;\n\t var fl = H5l;\n\t var gh = H6h;\n\t var gl = H6l;\n\t var hh = H7h;\n\t var hl = H7l;\n\n\t // Rounds\n\t for (var i = 0; i < 80; i++) {\n\t var Wil;\n\t var Wih;\n\n\t // Shortcut\n\t var Wi = W[i];\n\n\t // Extend message\n\t if (i < 16) {\n\t Wih = Wi.high = M[offset + i * 2] | 0;\n\t Wil = Wi.low = M[offset + i * 2 + 1] | 0;\n\t } else {\n\t // Gamma0\n\t var gamma0x = W[i - 15];\n\t var gamma0xh = gamma0x.high;\n\t var gamma0xl = gamma0x.low;\n\t var gamma0h = ((gamma0xh >>> 1) | (gamma0xl << 31)) ^ ((gamma0xh >>> 8) | (gamma0xl << 24)) ^ (gamma0xh >>> 7);\n\t var gamma0l = ((gamma0xl >>> 1) | (gamma0xh << 31)) ^ ((gamma0xl >>> 8) | (gamma0xh << 24)) ^ ((gamma0xl >>> 7) | (gamma0xh << 25));\n\n\t // Gamma1\n\t var gamma1x = W[i - 2];\n\t var gamma1xh = gamma1x.high;\n\t var gamma1xl = gamma1x.low;\n\t var gamma1h = ((gamma1xh >>> 19) | (gamma1xl << 13)) ^ ((gamma1xh << 3) | (gamma1xl >>> 29)) ^ (gamma1xh >>> 6);\n\t var gamma1l = ((gamma1xl >>> 19) | (gamma1xh << 13)) ^ ((gamma1xl << 3) | (gamma1xh >>> 29)) ^ ((gamma1xl >>> 6) | (gamma1xh << 26));\n\n\t // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n\t var Wi7 = W[i - 7];\n\t var Wi7h = Wi7.high;\n\t var Wi7l = Wi7.low;\n\n\t var Wi16 = W[i - 16];\n\t var Wi16h = Wi16.high;\n\t var Wi16l = Wi16.low;\n\n\t Wil = gamma0l + Wi7l;\n\t Wih = gamma0h + Wi7h + ((Wil >>> 0) < (gamma0l >>> 0) ? 1 : 0);\n\t Wil = Wil + gamma1l;\n\t Wih = Wih + gamma1h + ((Wil >>> 0) < (gamma1l >>> 0) ? 1 : 0);\n\t Wil = Wil + Wi16l;\n\t Wih = Wih + Wi16h + ((Wil >>> 0) < (Wi16l >>> 0) ? 1 : 0);\n\n\t Wi.high = Wih;\n\t Wi.low = Wil;\n\t }\n\n\t var chh = (eh & fh) ^ (~eh & gh);\n\t var chl = (el & fl) ^ (~el & gl);\n\t var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);\n\t var majl = (al & bl) ^ (al & cl) ^ (bl & cl);\n\n\t var sigma0h = ((ah >>> 28) | (al << 4)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7));\n\t var sigma0l = ((al >>> 28) | (ah << 4)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7));\n\t var sigma1h = ((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9));\n\t var sigma1l = ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9));\n\n\t // t1 = h + sigma1 + ch + K[i] + W[i]\n\t var Ki = K[i];\n\t var Kih = Ki.high;\n\t var Kil = Ki.low;\n\n\t var t1l = hl + sigma1l;\n\t var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0);\n\t var t1l = t1l + chl;\n\t var t1h = t1h + chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0);\n\t var t1l = t1l + Kil;\n\t var t1h = t1h + Kih + ((t1l >>> 0) < (Kil >>> 0) ? 1 : 0);\n\t var t1l = t1l + Wil;\n\t var t1h = t1h + Wih + ((t1l >>> 0) < (Wil >>> 0) ? 1 : 0);\n\n\t // t2 = sigma0 + maj\n\t var t2l = sigma0l + majl;\n\t var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0);\n\n\t // Update working variables\n\t hh = gh;\n\t hl = gl;\n\t gh = fh;\n\t gl = fl;\n\t fh = eh;\n\t fl = el;\n\t el = (dl + t1l) | 0;\n\t eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;\n\t dh = ch;\n\t dl = cl;\n\t ch = bh;\n\t cl = bl;\n\t bh = ah;\n\t bl = al;\n\t al = (t1l + t2l) | 0;\n\t ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H0l = H0.low = (H0l + al);\n\t H0.high = (H0h + ah + ((H0l >>> 0) < (al >>> 0) ? 1 : 0));\n\t H1l = H1.low = (H1l + bl);\n\t H1.high = (H1h + bh + ((H1l >>> 0) < (bl >>> 0) ? 1 : 0));\n\t H2l = H2.low = (H2l + cl);\n\t H2.high = (H2h + ch + ((H2l >>> 0) < (cl >>> 0) ? 1 : 0));\n\t H3l = H3.low = (H3l + dl);\n\t H3.high = (H3h + dh + ((H3l >>> 0) < (dl >>> 0) ? 1 : 0));\n\t H4l = H4.low = (H4l + el);\n\t H4.high = (H4h + eh + ((H4l >>> 0) < (el >>> 0) ? 1 : 0));\n\t H5l = H5.low = (H5l + fl);\n\t H5.high = (H5h + fh + ((H5l >>> 0) < (fl >>> 0) ? 1 : 0));\n\t H6l = H6.low = (H6l + gl);\n\t H6.high = (H6h + gh + ((H6l >>> 0) < (gl >>> 0) ? 1 : 0));\n\t H7l = H7.low = (H7l + hl);\n\t H7.high = (H7h + hh + ((H7l >>> 0) < (hl >>> 0) ? 1 : 0));\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 30] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 31] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Convert hash to 32-bit word array before returning\n\t var hash = this._hash.toX32();\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t },\n\n\t blockSize: 1024/32\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA512('message');\n\t * var hash = CryptoJS.SHA512(wordArray);\n\t */\n\t C.SHA512 = Hasher._createHelper(SHA512);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA512(message, key);\n\t */\n\t C.HmacSHA512 = Hasher._createHmacHelper(SHA512);\n\t}());\n\n\n\treturn CryptoJS.SHA512;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-1 hash algorithm.\n\t */\n\t var SHA1 = C_algo.SHA1 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476,\n\t 0xc3d2e1f0\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\n\t // Computation\n\t for (var i = 0; i < 80; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n\t W[i] = (n << 1) | (n >>> 31);\n\t }\n\n\t var t = ((a << 5) | (a >>> 27)) + e + W[i];\n\t if (i < 20) {\n\t t += ((b & c) | (~b & d)) + 0x5a827999;\n\t } else if (i < 40) {\n\t t += (b ^ c ^ d) + 0x6ed9eba1;\n\t } else if (i < 60) {\n\t t += ((b & c) | (b & d) | (c & d)) - 0x70e44324;\n\t } else /* if (i < 80) */ {\n\t t += (b ^ c ^ d) - 0x359d3e2a;\n\t }\n\n\t e = d;\n\t d = c;\n\t c = (b << 30) | (b >>> 2);\n\t b = a;\n\t a = t;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA1('message');\n\t * var hash = CryptoJS.SHA1(wordArray);\n\t */\n\t C.SHA1 = Hasher._createHelper(SHA1);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA1(message, key);\n\t */\n\t C.HmacSHA1 = Hasher._createHmacHelper(SHA1);\n\t}());\n\n\n\treturn CryptoJS.SHA1;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var C_algo = C.algo;\n\n\t // Constants tables\n\t var RHO_OFFSETS = [];\n\t var PI_INDEXES = [];\n\t var ROUND_CONSTANTS = [];\n\n\t // Compute Constants\n\t (function () {\n\t // Compute rho offset constants\n\t var x = 1, y = 0;\n\t for (var t = 0; t < 24; t++) {\n\t RHO_OFFSETS[x + 5 * y] = ((t + 1) * (t + 2) / 2) % 64;\n\n\t var newX = y % 5;\n\t var newY = (2 * x + 3 * y) % 5;\n\t x = newX;\n\t y = newY;\n\t }\n\n\t // Compute pi index constants\n\t for (var x = 0; x < 5; x++) {\n\t for (var y = 0; y < 5; y++) {\n\t PI_INDEXES[x + 5 * y] = y + ((2 * x + 3 * y) % 5) * 5;\n\t }\n\t }\n\n\t // Compute round constants\n\t var LFSR = 0x01;\n\t for (var i = 0; i < 24; i++) {\n\t var roundConstantMsw = 0;\n\t var roundConstantLsw = 0;\n\n\t for (var j = 0; j < 7; j++) {\n\t if (LFSR & 0x01) {\n\t var bitPosition = (1 << j) - 1;\n\t if (bitPosition < 32) {\n\t roundConstantLsw ^= 1 << bitPosition;\n\t } else /* if (bitPosition >= 32) */ {\n\t roundConstantMsw ^= 1 << (bitPosition - 32);\n\t }\n\t }\n\n\t // Compute next LFSR\n\t if (LFSR & 0x80) {\n\t // Primitive polynomial over GF(2): x^8 + x^6 + x^5 + x^4 + 1\n\t LFSR = (LFSR << 1) ^ 0x71;\n\t } else {\n\t LFSR <<= 1;\n\t }\n\t }\n\n\t ROUND_CONSTANTS[i] = X64Word.create(roundConstantMsw, roundConstantLsw);\n\t }\n\t }());\n\n\t // Reusable objects for temporary values\n\t var T = [];\n\t (function () {\n\t for (var i = 0; i < 25; i++) {\n\t T[i] = X64Word.create();\n\t }\n\t }());\n\n\t /**\n\t * SHA-3 hash algorithm.\n\t */\n\t var SHA3 = C_algo.SHA3 = Hasher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} outputLength\n\t * The desired number of bits in the output hash.\n\t * Only values permitted are: 224, 256, 384, 512.\n\t * Default: 512\n\t */\n\t cfg: Hasher.cfg.extend({\n\t outputLength: 512\n\t }),\n\n\t _doReset: function () {\n\t var state = this._state = []\n\t for (var i = 0; i < 25; i++) {\n\t state[i] = new X64Word.init();\n\t }\n\n\t this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32;\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcuts\n\t var state = this._state;\n\t var nBlockSizeLanes = this.blockSize / 2;\n\n\t // Absorb\n\t for (var i = 0; i < nBlockSizeLanes; i++) {\n\t // Shortcuts\n\t var M2i = M[offset + 2 * i];\n\t var M2i1 = M[offset + 2 * i + 1];\n\n\t // Swap endian\n\t M2i = (\n\t (((M2i << 8) | (M2i >>> 24)) & 0x00ff00ff) |\n\t (((M2i << 24) | (M2i >>> 8)) & 0xff00ff00)\n\t );\n\t M2i1 = (\n\t (((M2i1 << 8) | (M2i1 >>> 24)) & 0x00ff00ff) |\n\t (((M2i1 << 24) | (M2i1 >>> 8)) & 0xff00ff00)\n\t );\n\n\t // Absorb message into state\n\t var lane = state[i];\n\t lane.high ^= M2i1;\n\t lane.low ^= M2i;\n\t }\n\n\t // Rounds\n\t for (var round = 0; round < 24; round++) {\n\t // Theta\n\t for (var x = 0; x < 5; x++) {\n\t // Mix column lanes\n\t var tMsw = 0, tLsw = 0;\n\t for (var y = 0; y < 5; y++) {\n\t var lane = state[x + 5 * y];\n\t tMsw ^= lane.high;\n\t tLsw ^= lane.low;\n\t }\n\n\t // Temporary values\n\t var Tx = T[x];\n\t Tx.high = tMsw;\n\t Tx.low = tLsw;\n\t }\n\t for (var x = 0; x < 5; x++) {\n\t // Shortcuts\n\t var Tx4 = T[(x + 4) % 5];\n\t var Tx1 = T[(x + 1) % 5];\n\t var Tx1Msw = Tx1.high;\n\t var Tx1Lsw = Tx1.low;\n\n\t // Mix surrounding columns\n\t var tMsw = Tx4.high ^ ((Tx1Msw << 1) | (Tx1Lsw >>> 31));\n\t var tLsw = Tx4.low ^ ((Tx1Lsw << 1) | (Tx1Msw >>> 31));\n\t for (var y = 0; y < 5; y++) {\n\t var lane = state[x + 5 * y];\n\t lane.high ^= tMsw;\n\t lane.low ^= tLsw;\n\t }\n\t }\n\n\t // Rho Pi\n\t for (var laneIndex = 1; laneIndex < 25; laneIndex++) {\n\t var tMsw;\n\t var tLsw;\n\n\t // Shortcuts\n\t var lane = state[laneIndex];\n\t var laneMsw = lane.high;\n\t var laneLsw = lane.low;\n\t var rhoOffset = RHO_OFFSETS[laneIndex];\n\n\t // Rotate lanes\n\t if (rhoOffset < 32) {\n\t tMsw = (laneMsw << rhoOffset) | (laneLsw >>> (32 - rhoOffset));\n\t tLsw = (laneLsw << rhoOffset) | (laneMsw >>> (32 - rhoOffset));\n\t } else /* if (rhoOffset >= 32) */ {\n\t tMsw = (laneLsw << (rhoOffset - 32)) | (laneMsw >>> (64 - rhoOffset));\n\t tLsw = (laneMsw << (rhoOffset - 32)) | (laneLsw >>> (64 - rhoOffset));\n\t }\n\n\t // Transpose lanes\n\t var TPiLane = T[PI_INDEXES[laneIndex]];\n\t TPiLane.high = tMsw;\n\t TPiLane.low = tLsw;\n\t }\n\n\t // Rho pi at x = y = 0\n\t var T0 = T[0];\n\t var state0 = state[0];\n\t T0.high = state0.high;\n\t T0.low = state0.low;\n\n\t // Chi\n\t for (var x = 0; x < 5; x++) {\n\t for (var y = 0; y < 5; y++) {\n\t // Shortcuts\n\t var laneIndex = x + 5 * y;\n\t var lane = state[laneIndex];\n\t var TLane = T[laneIndex];\n\t var Tx1Lane = T[((x + 1) % 5) + 5 * y];\n\t var Tx2Lane = T[((x + 2) % 5) + 5 * y];\n\n\t // Mix rows\n\t lane.high = TLane.high ^ (~Tx1Lane.high & Tx2Lane.high);\n\t lane.low = TLane.low ^ (~Tx1Lane.low & Tx2Lane.low);\n\t }\n\t }\n\n\t // Iota\n\t var lane = state[0];\n\t var roundConstant = ROUND_CONSTANTS[round];\n\t lane.high ^= roundConstant.high;\n\t lane.low ^= roundConstant.low;\n\t }\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\t var blockSizeBits = this.blockSize * 32;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x1 << (24 - nBitsLeft % 32);\n\t dataWords[((Math.ceil((nBitsLeft + 1) / blockSizeBits) * blockSizeBits) >>> 5) - 1] |= 0x80;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var state = this._state;\n\t var outputLengthBytes = this.cfg.outputLength / 8;\n\t var outputLengthLanes = outputLengthBytes / 8;\n\n\t // Squeeze\n\t var hashWords = [];\n\t for (var i = 0; i < outputLengthLanes; i++) {\n\t // Shortcuts\n\t var lane = state[i];\n\t var laneMsw = lane.high;\n\t var laneLsw = lane.low;\n\n\t // Swap endian\n\t laneMsw = (\n\t (((laneMsw << 8) | (laneMsw >>> 24)) & 0x00ff00ff) |\n\t (((laneMsw << 24) | (laneMsw >>> 8)) & 0xff00ff00)\n\t );\n\t laneLsw = (\n\t (((laneLsw << 8) | (laneLsw >>> 24)) & 0x00ff00ff) |\n\t (((laneLsw << 24) | (laneLsw >>> 8)) & 0xff00ff00)\n\t );\n\n\t // Squeeze state to retrieve hash\n\t hashWords.push(laneLsw);\n\t hashWords.push(laneMsw);\n\t }\n\n\t // Return final computed hash\n\t return new WordArray.init(hashWords, outputLengthBytes);\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\n\t var state = clone._state = this._state.slice(0);\n\t for (var i = 0; i < 25; i++) {\n\t state[i] = state[i].clone();\n\t }\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA3('message');\n\t * var hash = CryptoJS.SHA3(wordArray);\n\t */\n\t C.SHA3 = Hasher._createHelper(SHA3);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA3(message, key);\n\t */\n\t C.HmacSHA3 = Hasher._createHmacHelper(SHA3);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA3;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Counter block mode.\n\t */\n\tCryptoJS.mode.CTR = (function () {\n\t var CTR = CryptoJS.lib.BlockCipherMode.extend();\n\n\t var Encryptor = CTR.Encryptor = CTR.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var counter = this._counter;\n\n\t // Generate keystream\n\t if (iv) {\n\t counter = this._counter = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\t var keystream = counter.slice(0);\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Increment counter\n\t counter[blockSize - 1] = (counter[blockSize - 1] + 1) | 0\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t CTR.Decryptor = Encryptor;\n\n\t return CTR;\n\t}());\n\n\n\treturn CryptoJS.mode.CTR;\n\n}));"],"sourceRoot":""}