{"version":3,"sources":["webpack:///./node_modules/des.js/lib/des/cipher.js","webpack:///./node_modules/des.js/lib/des/utils.js","webpack:///./node_modules/des.js/lib/des/des.js","webpack:///./node_modules/diffie-hellman/lib/generatePrime.js","webpack:///./node_modules/des.js/lib/des.js","webpack:///./node_modules/des.js/lib/des/cbc.js","webpack:///./node_modules/des.js/lib/des/ede.js","webpack:///./node_modules/diffie-hellman/browser.js","webpack:///./node_modules/diffie-hellman/lib/dh.js"],"names":["assert","Cipher","options","this","type","blockSize","_init","buffer","Array","bufferOff","padding","module","exports","prototype","update","data","length","_updateDecrypt","_updateEncrypt","_buffer","off","min","Math","i","_flushBuffer","out","_update","inputOff","outputOff","count","max","ceil","final","first","last","_finalEncrypt","_finalDecrypt","concat","_pad","_unpad","equal","readUInt32BE","bytes","writeUInt32BE","value","ip","inL","inR","outL","outR","j","rip","pc1","r28shl","num","shift","pc2table","pc2","len","expand","r","sTable","substitute","permuteTable","permute","padSplit","size","group","str","toString","push","slice","join","inherits","utils","DESState","tmp","keys","DES","call","state","_desState","deriveKeys","key","create","shiftTable","kL","kR","inp","inOff","outOff","l","_encrypt","_decrypt","pad","lStart","rStart","keyL","keyR","s","t","randomBytes","findPrime","simpleSieve","fermatTest","BN","TWENTYFOUR","millerRabin","ONE","TWO","FIVE","TEN","THREE","ELEVEN","FOUR","primes","_getPrimes","res","k","sqrt","p","modn","cmpn","red","mont","toRed","redPow","subn","fromRed","bits","gen","n2","bitLength","ishrn","isEven","iadd","testn","cmp","mod","shrn","test","CBC","EDE","proto","CBCState","iv","instantiate","Base","_cbcInit","Object","_cbcState","superProto","constructor","super_","EDEState","k1","k2","k3","ciphers","_edeState","DH","ENCODINGS","DiffieHellmanGroup","createDiffieHellmanGroup","getDiffieHellman","prime","Buffer","createDiffieHellman","DiffieHellman","enc","generator","genc","isBuffer","undefined","generatePrime","SEVEN","setPublicKey","pub","_pub","setPrivateKey","priv","_priv","primeCache","malleable","setGenerator","__prime","_prime","_primeLen","_primeCode","formatReturnValue","bn","buf","toArray","defineProperty","enumerable","get","hex","rem","error","checkPrime","__gen","generateKeys","_gen","getPublicKey","computeSecret","other","secret","getPrime","front","fill","getPrivateKey","getGenerator"],"mappings":"2FAEA,IAAIA,EAAS,EAAQ,IACrB,SAASC,EAAOC,GACdC,KAAKD,QAAUA,EACfC,KAAKC,KAAOD,KAAKD,QAAQE,KACzBD,KAAKE,UAAY,EACjBF,KAAKG,QACLH,KAAKI,OAAS,IAAIC,MAAML,KAAKE,WAC7BF,KAAKM,UAAY,EACjBN,KAAKO,SAA8B,IAApBR,EAAQQ,OACzB,CACAC,EAAOC,QAAUX,EACjBA,EAAOY,UAAUP,MAAQ,WAEzB,EACAL,EAAOY,UAAUC,OAAS,SAAgBC,GACxC,OAAoB,IAAhBA,EAAKC,OAAqB,GACZ,YAAdb,KAAKC,KAA2BD,KAAKc,eAAeF,GAAkBZ,KAAKe,eAAeH,EAChG,EACAd,EAAOY,UAAUM,QAAU,SAAiBJ,EAAMK,GAGhD,IADA,IAAIC,EAAMC,KAAKD,IAAIlB,KAAKI,OAAOS,OAASb,KAAKM,UAAWM,EAAKC,OAASI,GAC7DG,EAAI,EAAGA,EAAIF,EAAKE,IAAKpB,KAAKI,OAAOJ,KAAKM,UAAYc,GAAKR,EAAKK,EAAMG,GAI3E,OAHApB,KAAKM,WAAaY,EAGXA,CACT,EACApB,EAAOY,UAAUW,aAAe,SAAsBC,EAAKL,GAGzD,OAFAjB,KAAKuB,QAAQvB,KAAKI,OAAQ,EAAGkB,EAAKL,GAClCjB,KAAKM,UAAY,EACVN,KAAKE,SACd,EACAJ,EAAOY,UAAUK,eAAiB,SAAwBH,GACxD,IAAIY,EAAW,EACXC,EAAY,EACZC,GAAS1B,KAAKM,UAAYM,EAAKC,QAAUb,KAAKE,UAAY,EAC1DoB,EAAM,IAAIjB,MAAMqB,EAAQ1B,KAAKE,WACV,IAAnBF,KAAKM,YACPkB,GAAYxB,KAAKgB,QAAQJ,EAAMY,GAC3BxB,KAAKM,YAAcN,KAAKI,OAAOS,SAAQY,GAAazB,KAAKqB,aAAaC,EAAKG,KAKjF,IADA,IAAIE,EAAMf,EAAKC,QAAUD,EAAKC,OAASW,GAAYxB,KAAKE,UACjDsB,EAAWG,EAAKH,GAAYxB,KAAKE,UACtCF,KAAKuB,QAAQX,EAAMY,EAAUF,EAAKG,GAClCA,GAAazB,KAAKE,UAIpB,KAAOsB,EAAWZ,EAAKC,OAAQW,IAAYxB,KAAKM,YAAaN,KAAKI,OAAOJ,KAAKM,WAAaM,EAAKY,GAChG,OAAOF,CACT,EACAxB,EAAOY,UAAUI,eAAiB,SAAwBF,GAOxD,IANA,IAAIY,EAAW,EACXC,EAAY,EACZC,EAAQP,KAAKS,MAAM5B,KAAKM,UAAYM,EAAKC,QAAUb,KAAKE,WAAa,EACrEoB,EAAM,IAAIjB,MAAMqB,EAAQ1B,KAAKE,WAG1BwB,EAAQ,EAAGA,IAChBF,GAAYxB,KAAKgB,QAAQJ,EAAMY,GAC/BC,GAAazB,KAAKqB,aAAaC,EAAKG,GAKtC,OADAD,GAAYxB,KAAKgB,QAAQJ,EAAMY,GACxBF,CACT,EACAxB,EAAOY,UAAUmB,MAAQ,SAAezB,GACtC,IAAI0B,EAEAC,EAEJ,OAHI3B,IAAQ0B,EAAQ9B,KAAKW,OAAOP,IAEH2B,EAAX,YAAd/B,KAAKC,KAA2BD,KAAKgC,gBAA4BhC,KAAKiC,gBACtEH,EAAcA,EAAMI,OAAOH,GAAkBA,CACnD,EACAjC,EAAOY,UAAUyB,KAAO,SAAc/B,EAAQa,GAC5C,GAAY,IAARA,EAAW,OAAO,EACtB,KAAOA,EAAMb,EAAOS,QAAQT,EAAOa,KAAS,EAC5C,OAAO,CACT,EACAnB,EAAOY,UAAUsB,cAAgB,WAC/B,IAAKhC,KAAKmC,KAAKnC,KAAKI,OAAQJ,KAAKM,WAAY,MAAO,GACpD,IAAIgB,EAAM,IAAIjB,MAAML,KAAKE,WAEzB,OADAF,KAAKuB,QAAQvB,KAAKI,OAAQ,EAAGkB,EAAK,GAC3BA,CACT,EACAxB,EAAOY,UAAU0B,OAAS,SAAgBhC,GACxC,OAAOA,CACT,EACAN,EAAOY,UAAUuB,cAAgB,WAC/BpC,EAAOwC,MAAMrC,KAAKM,UAAWN,KAAKE,UAAW,8BAC7C,IAAIoB,EAAM,IAAIjB,MAAML,KAAKE,WAEzB,OADAF,KAAKqB,aAAaC,EAAK,GAChBtB,KAAKoC,OAAOd,EACrB,C,mCC/FAb,EAAQ6B,aAAe,SAAsBC,EAAOtB,GAElD,OADUsB,EAAM,EAAItB,IAAQ,GAAKsB,EAAM,EAAItB,IAAQ,GAAKsB,EAAM,EAAItB,IAAQ,EAAIsB,EAAM,EAAItB,MACzE,CACjB,EACAR,EAAQ+B,cAAgB,SAAuBD,EAAOE,EAAOxB,GAC3DsB,EAAM,EAAItB,GAAOwB,IAAU,GAC3BF,EAAM,EAAItB,GAAOwB,IAAU,GAAK,IAChCF,EAAM,EAAItB,GAAOwB,IAAU,EAAI,IAC/BF,EAAM,EAAItB,GAAe,IAARwB,CACnB,EACAhC,EAAQiC,GAAK,SAAYC,EAAKC,EAAKtB,EAAKL,GAGtC,IAFA,IAAI4B,EAAO,EACPC,EAAO,EACF1B,EAAI,EAAGA,GAAK,EAAGA,GAAK,EAAG,CAC9B,IAAK,IAAI2B,EAAI,EAAGA,GAAK,GAAIA,GAAK,EAC5BF,IAAS,EACTA,GAAQD,IAAQG,EAAI3B,EAAI,EAE1B,IAAS2B,EAAI,EAAGA,GAAK,GAAIA,GAAK,EAC5BF,IAAS,EACTA,GAAQF,IAAQI,EAAI3B,EAAI,CAE5B,CACA,IAASA,EAAI,EAAGA,GAAK,EAAGA,GAAK,EAAG,CAC9B,IAAS2B,EAAI,EAAGA,GAAK,GAAIA,GAAK,EAC5BD,IAAS,EACTA,GAAQF,IAAQG,EAAI3B,EAAI,EAE1B,IAAS2B,EAAI,EAAGA,GAAK,GAAIA,GAAK,EAC5BD,IAAS,EACTA,GAAQH,IAAQI,EAAI3B,EAAI,CAE5B,CACAE,EAAIL,EAAM,GAAK4B,IAAS,EACxBvB,EAAIL,EAAM,GAAK6B,IAAS,CAC1B,EACArC,EAAQuC,IAAM,SAAaL,EAAKC,EAAKtB,EAAKL,GAGxC,IAFA,IAAI4B,EAAO,EACPC,EAAO,EACF1B,EAAI,EAAGA,EAAI,EAAGA,IACrB,IAAK,IAAI2B,EAAI,GAAIA,GAAK,EAAGA,GAAK,EAC5BF,IAAS,EACTA,GAAQD,IAAQG,EAAI3B,EAAI,EACxByB,IAAS,EACTA,GAAQF,IAAQI,EAAI3B,EAAI,EAG5B,IAASA,EAAI,EAAGA,EAAI,EAAGA,IACrB,IAAS2B,EAAI,GAAIA,GAAK,EAAGA,GAAK,EAC5BD,IAAS,EACTA,GAAQF,IAAQG,EAAI3B,EAAI,EACxB0B,IAAS,EACTA,GAAQH,IAAQI,EAAI3B,EAAI,EAG5BE,EAAIL,EAAM,GAAK4B,IAAS,EACxBvB,EAAIL,EAAM,GAAK6B,IAAS,CAC1B,EACArC,EAAQwC,IAAM,SAAaN,EAAKC,EAAKtB,EAAKL,GAQxC,IAPA,IAAI4B,EAAO,EACPC,EAAO,EAMF1B,EAAI,EAAGA,GAAK,EAAGA,IAAK,CAC3B,IAAK,IAAI2B,EAAI,EAAGA,GAAK,GAAIA,GAAK,EAC5BF,IAAS,EACTA,GAAQD,GAAOG,EAAI3B,EAAI,EAEzB,IAAS2B,EAAI,EAAGA,GAAK,GAAIA,GAAK,EAC5BF,IAAS,EACTA,GAAQF,GAAOI,EAAI3B,EAAI,CAE3B,CACA,IAAS2B,EAAI,EAAGA,GAAK,GAAIA,GAAK,EAC5BF,IAAS,EACTA,GAAQD,GAAOG,EAAI3B,EAAI,EAOzB,IAASA,EAAI,EAAGA,GAAK,EAAGA,IAAK,CAC3B,IAAS2B,EAAI,EAAGA,GAAK,GAAIA,GAAK,EAC5BD,IAAS,EACTA,GAAQF,GAAOG,EAAI3B,EAAI,EAEzB,IAAS2B,EAAI,EAAGA,GAAK,GAAIA,GAAK,EAC5BD,IAAS,EACTA,GAAQH,GAAOI,EAAI3B,EAAI,CAE3B,CACA,IAAS2B,EAAI,EAAGA,GAAK,GAAIA,GAAK,EAC5BD,IAAS,EACTA,GAAQH,GAAOI,EAAI3B,EAAI,EAEzBE,EAAIL,EAAM,GAAK4B,IAAS,EACxBvB,EAAIL,EAAM,GAAK6B,IAAS,CAC1B,EACArC,EAAQyC,OAAS,SAAgBC,EAAKC,GACpC,OAAOD,GAAOC,EAAQ,UAAYD,IAAQ,GAAKC,CACjD,EACA,IAAIC,EAAW,CAEf,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAEpF,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,IACnF5C,EAAQ6C,IAAM,SAAaX,EAAKC,EAAKtB,EAAKL,GAIxC,IAHA,IAAI4B,EAAO,EACPC,EAAO,EACPS,EAAMF,EAASxC,SAAW,EACrBO,EAAI,EAAGA,EAAImC,EAAKnC,IACvByB,IAAS,EACTA,GAAQF,IAAQU,EAASjC,GAAK,EAEhC,IAASA,EAAImC,EAAKnC,EAAIiC,EAASxC,OAAQO,IACrC0B,IAAS,EACTA,GAAQF,IAAQS,EAASjC,GAAK,EAEhCE,EAAIL,EAAM,GAAK4B,IAAS,EACxBvB,EAAIL,EAAM,GAAK6B,IAAS,CAC1B,EACArC,EAAQ+C,OAAS,SAAgBC,EAAGnC,EAAKL,GACvC,IAAI4B,EAAO,EACPC,EAAO,EACXD,GAAY,EAAJY,IAAU,EAAIA,IAAM,GAC5B,IAAK,IAAIrC,EAAI,GAAIA,GAAK,GAAIA,GAAK,EAC7ByB,IAAS,EACTA,GAAQY,IAAMrC,EAAI,GAEpB,IAASA,EAAI,GAAIA,GAAK,EAAGA,GAAK,EAC5B0B,GAAQW,IAAMrC,EAAI,GAClB0B,IAAS,EAEXA,IAAa,GAAJW,IAAa,EAAIA,IAAM,GAChCnC,EAAIL,EAAM,GAAK4B,IAAS,EACxBvB,EAAIL,EAAM,GAAK6B,IAAS,CAC1B,EACA,IAAIY,EAAS,CAAC,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAC1sDjD,EAAQkD,WAAa,SAAoBhB,EAAKC,GAE5C,IADA,IAAItB,EAAM,EACDF,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAG1BE,IAAQ,EACRA,GAFSoC,EAAW,GAAJtC,GADRuB,IAAQ,GAAS,EAAJvB,EAAQ,IAI/B,CACA,IAASA,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAG1BE,IAAQ,EACRA,GAFSoC,EAAO,IAAe,GAAJtC,GADnBwB,IAAQ,GAAS,EAAJxB,EAAQ,IAI/B,CACA,OAAOE,IAAQ,CACjB,EACA,IAAIsC,EAAe,CAAC,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GACvInD,EAAQoD,QAAU,SAAiBV,GAEjC,IADA,IAAI7B,EAAM,EACDF,EAAI,EAAGA,EAAIwC,EAAa/C,OAAQO,IACvCE,IAAQ,EACRA,GAAO6B,IAAQS,EAAaxC,GAAK,EAEnC,OAAOE,IAAQ,CACjB,EACAb,EAAQqD,SAAW,SAAkBX,EAAKY,EAAMC,GAE9C,IADA,IAAIC,EAAMd,EAAIe,SAAS,GAChBD,EAAIpD,OAASkD,GAAME,EAAM,IAAMA,EAEtC,IADA,IAAI3C,EAAM,GACDF,EAAI,EAAGA,EAAI2C,EAAM3C,GAAK4C,EAAO1C,EAAI6C,KAAKF,EAAIG,MAAMhD,EAAGA,EAAI4C,IAChE,OAAO1C,EAAI+C,KAAK,IAClB,C,mCC7KA,IAAIxE,EAAS,EAAQ,IACjByE,EAAW,EAAQ,GACnBC,EAAQ,EAAQ,KAChBzE,EAAS,EAAQ,KACrB,SAAS0E,IACPxE,KAAKyE,IAAM,IAAIpE,MAAM,GACrBL,KAAK0E,KAAO,IACd,CACA,SAASC,EAAI5E,GACXD,EAAO8E,KAAK5E,KAAMD,GAClB,IAAI8E,EAAQ,IAAIL,EAChBxE,KAAK8E,UAAYD,EACjB7E,KAAK+E,WAAWF,EAAO9E,EAAQiF,IACjC,CACAV,EAASK,EAAK7E,GACdU,EAAOC,QAAUkE,EACjBA,EAAIM,OAAS,SAAgBlF,GAC3B,OAAO,IAAI4E,EAAI5E,EACjB,EACA,IAAImF,EAAa,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC/DP,EAAIjE,UAAUqE,WAAa,SAAoBF,EAAOG,GACpDH,EAAMH,KAAO,IAAIrE,MAAM,IACvBR,EAAOwC,MAAM2C,EAAInE,OAAQb,KAAKE,UAAW,sBACzC,IAAIiF,EAAKZ,EAAMjC,aAAa0C,EAAK,GAC7BI,EAAKb,EAAMjC,aAAa0C,EAAK,GACjCT,EAAMtB,IAAIkC,EAAIC,EAAIP,EAAMJ,IAAK,GAC7BU,EAAKN,EAAMJ,IAAI,GACfW,EAAKP,EAAMJ,IAAI,GACf,IAAK,IAAIrD,EAAI,EAAGA,EAAIyD,EAAMH,KAAK7D,OAAQO,GAAK,EAAG,CAC7C,IAAIgC,EAAQ8B,EAAW9D,IAAM,GAC7B+D,EAAKZ,EAAMrB,OAAOiC,EAAI/B,GACtBgC,EAAKb,EAAMrB,OAAOkC,EAAIhC,GACtBmB,EAAMjB,IAAI6B,EAAIC,EAAIP,EAAMH,KAAMtD,EAChC,CACF,EACAuD,EAAIjE,UAAUa,QAAU,SAAiB8D,EAAKC,EAAOhE,EAAKiE,GACxD,IAAIV,EAAQ7E,KAAK8E,UACbU,EAAIjB,EAAMjC,aAAa+C,EAAKC,GAC5B7B,EAAIc,EAAMjC,aAAa+C,EAAKC,EAAQ,GAGxCf,EAAM7B,GAAG8C,EAAG/B,EAAGoB,EAAMJ,IAAK,GAC1Be,EAAIX,EAAMJ,IAAI,GACdhB,EAAIoB,EAAMJ,IAAI,GACI,YAAdzE,KAAKC,KAAoBD,KAAKyF,SAASZ,EAAOW,EAAG/B,EAAGoB,EAAMJ,IAAK,GAAQzE,KAAK0F,SAASb,EAAOW,EAAG/B,EAAGoB,EAAMJ,IAAK,GACjHe,EAAIX,EAAMJ,IAAI,GACdhB,EAAIoB,EAAMJ,IAAI,GACdF,EAAM/B,cAAclB,EAAKkE,EAAGD,GAC5BhB,EAAM/B,cAAclB,EAAKmC,EAAG8B,EAAS,EACvC,EACAZ,EAAIjE,UAAUyB,KAAO,SAAc/B,EAAQa,GACzC,IAAqB,IAAjBjB,KAAKO,QACP,OAAO,EAGT,IADA,IAAIkC,EAAQrC,EAAOS,OAASI,EACnBG,EAAIH,EAAKG,EAAIhB,EAAOS,OAAQO,IAAKhB,EAAOgB,GAAKqB,EACtD,OAAO,CACT,EACAkC,EAAIjE,UAAU0B,OAAS,SAAgBhC,GACrC,IAAqB,IAAjBJ,KAAKO,QACP,OAAOH,EAGT,IADA,IAAIuF,EAAMvF,EAAOA,EAAOS,OAAS,GACxBO,EAAIhB,EAAOS,OAAS8E,EAAKvE,EAAIhB,EAAOS,OAAQO,IAAKvB,EAAOwC,MAAMjC,EAAOgB,GAAIuE,GAClF,OAAOvF,EAAOgE,MAAM,EAAGhE,EAAOS,OAAS8E,EACzC,EACAhB,EAAIjE,UAAU+E,SAAW,SAAkBZ,EAAOe,EAAQC,EAAQvE,EAAKL,GAKrE,IAJA,IAAIuE,EAAII,EACJnC,EAAIoC,EAGCzE,EAAI,EAAGA,EAAIyD,EAAMH,KAAK7D,OAAQO,GAAK,EAAG,CAC7C,IAAI0E,EAAOjB,EAAMH,KAAKtD,GAClB2E,EAAOlB,EAAMH,KAAKtD,EAAI,GAG1BmD,EAAMf,OAAOC,EAAGoB,EAAMJ,IAAK,GAC3BqB,GAAQjB,EAAMJ,IAAI,GAClBsB,GAAQlB,EAAMJ,IAAI,GAClB,IAAIuB,EAAIzB,EAAMZ,WAAWmC,EAAMC,GAE3BE,EAAIxC,EACRA,GAAK+B,EAFGjB,EAAMV,QAAQmC,MAEN,EAChBR,EAAIS,CACN,CAGA1B,EAAMvB,IAAIS,EAAG+B,EAAGlE,EAAKL,EACvB,EACA0D,EAAIjE,UAAUgF,SAAW,SAAkBb,EAAOe,EAAQC,EAAQvE,EAAKL,GAKrE,IAJA,IAAIuE,EAAIK,EACJpC,EAAImC,EAGCxE,EAAIyD,EAAMH,KAAK7D,OAAS,EAAGO,GAAK,EAAGA,GAAK,EAAG,CAClD,IAAI0E,EAAOjB,EAAMH,KAAKtD,GAClB2E,EAAOlB,EAAMH,KAAKtD,EAAI,GAG1BmD,EAAMf,OAAOgC,EAAGX,EAAMJ,IAAK,GAC3BqB,GAAQjB,EAAMJ,IAAI,GAClBsB,GAAQlB,EAAMJ,IAAI,GAClB,IAAIuB,EAAIzB,EAAMZ,WAAWmC,EAAMC,GAE3BE,EAAIT,EACRA,GAAK/B,EAFGc,EAAMV,QAAQmC,MAEN,EAChBvC,EAAIwC,CACN,CAGA1B,EAAMvB,IAAIwC,EAAG/B,EAAGnC,EAAKL,EACvB,C,sBCjHA,IAAIiF,EAAc,EAAQ,IAC1B1F,EAAOC,QAAU0F,EACjBA,EAAUC,YAAcA,EACxBD,EAAUE,WAAaA,EACvB,IAAIC,EAAK,EAAQ,IACbC,EAAa,IAAID,EAAG,IAEpBE,EAAc,IADA,EAAQ,MAEtBC,EAAM,IAAIH,EAAG,GACbI,EAAM,IAAIJ,EAAG,GACbK,EAAO,IAAIL,EAAG,GAGdM,GAFU,IAAIN,EAAG,IACT,IAAIA,EAAG,GACT,IAAIA,EAAG,KACbO,EAAQ,IAAIP,EAAG,GAEfQ,GADQ,IAAIR,EAAG,GACN,IAAIA,EAAG,KAChBS,EAAO,IAAIT,EAAG,GAEdU,GADS,IAAIV,EAAG,IACP,MACb,SAASW,IACP,GAAe,OAAXD,EAAiB,OAAOA,EAC5B,IACIE,EAAM,GACVA,EAAI,GAAK,EACT,IAAK,IAAI9F,EAAI,EAAG+F,EAAI,EAAGA,EAHX,QAGsBA,GAAK,EAAG,CAExC,IADA,IAAIC,EAAOjG,KAAKS,KAAKT,KAAKiG,KAAKD,IACtBpE,EAAI,EAAGA,EAAI3B,GAAK8F,EAAInE,IAAMqE,GAAeD,EAAID,EAAInE,KAAO,EAAxBA,KACrC3B,IAAM2B,GAAKmE,EAAInE,IAAMqE,IACzBF,EAAI9F,KAAO+F,EACb,CAEA,OADAH,EAASE,EACFA,CACT,CACA,SAASd,EAAYiB,GAEnB,IADA,IAAIL,EAASC,IACJ7F,EAAI,EAAGA,EAAI4F,EAAOnG,OAAQO,IAAK,GAA0B,IAAtBiG,EAAEC,KAAKN,EAAO5F,IACxD,OAA0B,IAAtBiG,EAAEE,KAAKP,EAAO5F,IAMpB,OAAO,CACT,CACA,SAASiF,EAAWgB,GAClB,IAAIG,EAAMlB,EAAGmB,KAAKJ,GAClB,OAA8D,IAAvDX,EAAIgB,MAAMF,GAAKG,OAAON,EAAEO,KAAK,IAAIC,UAAUN,KAAK,EACzD,CACA,SAASpB,EAAU2B,EAAMC,GACvB,GAAID,EAAO,GAET,OACS,IAAIxB,EADD,IAARyB,GAAqB,IAARA,EACD,CAAC,IAAM,KAEP,CAAC,IAAM,KAIzB,IAAI5E,EAAK6E,EACT,IAFAD,EAAM,IAAIzB,EAAGyB,KAEA,CAEX,IADA5E,EAAM,IAAImD,EAAGJ,EAAY/E,KAAKS,KAAKkG,EAAO,KACnC3E,EAAI8E,YAAcH,GACvB3E,EAAI+E,MAAM,GAQZ,GANI/E,EAAIgF,UACNhF,EAAIiF,KAAK3B,GAENtD,EAAIkF,MAAM,IACblF,EAAIiF,KAAK1B,GAENqB,EAAIO,IAAI5B,IAIN,IAAKqB,EAAIO,IAAI3B,GAClB,KAAOxD,EAAIoF,IAAI3B,GAAK0B,IAAIzB,IACtB1D,EAAIiF,KAAKrB,QALX,KAAO5D,EAAIoF,IAAIhC,GAAY+B,IAAIxB,IAC7B3D,EAAIiF,KAAKrB,GAQb,GAAIX,EADJ4B,EAAK7E,EAAIqF,KAAK,KACSpC,EAAYjD,IAAQkD,EAAW2B,IAAO3B,EAAWlD,IAAQqD,EAAYiC,KAAKT,IAAOxB,EAAYiC,KAAKtF,GACvH,OAAOA,CAEX,CACF,C,mCCnFA1C,EAAQ8D,MAAQ,EAAQ,KACxB9D,EAAQX,OAAS,EAAQ,KACzBW,EAAQkE,IAAM,EAAQ,KACtBlE,EAAQiI,IAAM,EAAQ,KACtBjI,EAAQkI,IAAM,EAAQ,I,mCCJtB,IAAI9I,EAAS,EAAQ,IACjByE,EAAW,EAAQ,GACnBsE,EAAQ,CAAC,EACb,SAASC,EAASC,GAChBjJ,EAAOwC,MAAMyG,EAAGjI,OAAQ,EAAG,qBAC3Bb,KAAK8I,GAAK,IAAIzI,MAAM,GACpB,IAAK,IAAIe,EAAI,EAAGA,EAAIpB,KAAK8I,GAAGjI,OAAQO,IAAKpB,KAAK8I,GAAG1H,GAAK0H,EAAG1H,EAC3D,CAiBAX,EAAQsI,YAhBR,SAAqBC,GACnB,SAASN,EAAI3I,GACXiJ,EAAKpE,KAAK5E,KAAMD,GAChBC,KAAKiJ,UACP,CACA3E,EAASoE,EAAKM,GAEd,IADA,IAAItE,EAAOwE,OAAOxE,KAAKkE,GACdxH,EAAI,EAAGA,EAAIsD,EAAK7D,OAAQO,IAAK,CACpC,IAAI4D,EAAMN,EAAKtD,GACfsH,EAAIhI,UAAUsE,GAAO4D,EAAM5D,EAC7B,CAIA,OAHA0D,EAAIzD,OAAS,SAAgBlF,GAC3B,OAAO,IAAI2I,EAAI3I,EACjB,EACO2I,CACT,EAEAE,EAAMK,SAAW,WACf,IAAIpE,EAAQ,IAAIgE,EAAS7I,KAAKD,QAAQ+I,IACtC9I,KAAKmJ,UAAYtE,CACnB,EACA+D,EAAMrH,QAAU,SAAiB8D,EAAKC,EAAOhE,EAAKiE,GAChD,IAAIV,EAAQ7E,KAAKmJ,UACbC,EAAapJ,KAAKqJ,YAAYC,OAAO5I,UACrCoI,EAAKjE,EAAMiE,GACf,GAAkB,YAAd9I,KAAKC,KAAoB,CAC3B,IAAK,IAAImB,EAAI,EAAGA,EAAIpB,KAAKE,UAAWkB,IAAK0H,EAAG1H,IAAMiE,EAAIC,EAAQlE,GAC9DgI,EAAW7H,QAAQqD,KAAK5E,KAAM8I,EAAI,EAAGxH,EAAKiE,GAC1C,IAASnE,EAAI,EAAGA,EAAIpB,KAAKE,UAAWkB,IAAK0H,EAAG1H,GAAKE,EAAIiE,EAASnE,EAChE,KAAO,CACLgI,EAAW7H,QAAQqD,KAAK5E,KAAMqF,EAAKC,EAAOhE,EAAKiE,GAC/C,IAASnE,EAAI,EAAGA,EAAIpB,KAAKE,UAAWkB,IAAKE,EAAIiE,EAASnE,IAAM0H,EAAG1H,GAC/D,IAASA,EAAI,EAAGA,EAAIpB,KAAKE,UAAWkB,IAAK0H,EAAG1H,GAAKiE,EAAIC,EAAQlE,EAC/D,CACF,C,mCC1CA,IAAIvB,EAAS,EAAQ,IACjByE,EAAW,EAAQ,GACnBxE,EAAS,EAAQ,KACjB6E,EAAM,EAAQ,KAClB,SAAS4E,EAAStJ,EAAM+E,GACtBnF,EAAOwC,MAAM2C,EAAInE,OAAQ,GAAI,sBAC7B,IAAI2I,EAAKxE,EAAIZ,MAAM,EAAG,GAClBqF,EAAKzE,EAAIZ,MAAM,EAAG,IAClBsF,EAAK1E,EAAIZ,MAAM,GAAI,IAErBpE,KAAK2J,QADM,YAAT1J,EACa,CAAC0E,EAAIM,OAAO,CACzBhF,KAAM,UACN+E,IAAKwE,IACH7E,EAAIM,OAAO,CACbhF,KAAM,UACN+E,IAAKyE,IACH9E,EAAIM,OAAO,CACbhF,KAAM,UACN+E,IAAK0E,KAGQ,CAAC/E,EAAIM,OAAO,CACzBhF,KAAM,UACN+E,IAAK0E,IACH/E,EAAIM,OAAO,CACbhF,KAAM,UACN+E,IAAKyE,IACH9E,EAAIM,OAAO,CACbhF,KAAM,UACN+E,IAAKwE,IAGX,CACA,SAASb,EAAI5I,GACXD,EAAO8E,KAAK5E,KAAMD,GAClB,IAAI8E,EAAQ,IAAI0E,EAASvJ,KAAKC,KAAMD,KAAKD,QAAQiF,KACjDhF,KAAK4J,UAAY/E,CACnB,CACAP,EAASqE,EAAK7I,GACdU,EAAOC,QAAUkI,EACjBA,EAAI1D,OAAS,SAAgBlF,GAC3B,OAAO,IAAI4I,EAAI5I,EACjB,EACA4I,EAAIjI,UAAUa,QAAU,SAAiB8D,EAAKC,EAAOhE,EAAKiE,GACxD,IAAIV,EAAQ7E,KAAK4J,UACjB/E,EAAM8E,QAAQ,GAAGpI,QAAQ8D,EAAKC,EAAOhE,EAAKiE,GAC1CV,EAAM8E,QAAQ,GAAGpI,QAAQD,EAAKiE,EAAQjE,EAAKiE,GAC3CV,EAAM8E,QAAQ,GAAGpI,QAAQD,EAAKiE,EAAQjE,EAAKiE,EAC7C,EACAoD,EAAIjI,UAAUyB,KAAOwC,EAAIjE,UAAUyB,KACnCwG,EAAIjI,UAAU0B,OAASuC,EAAIjE,UAAU0B,M,uBCpDrC,kBAAoB,EAAQ,KACxB4E,EAAS,EAAQ,KACjB6C,EAAK,EAAQ,KAMjB,IAAIC,EAAY,CACd,QAAU,EACV,KAAO,EACP,QAAU,GAoBZrJ,EAAQsJ,mBAAqBtJ,EAAQuJ,yBAA2BvJ,EAAQwJ,iBA5BxE,SAA0B1B,GACxB,IAAI2B,EAAQ,IAAIC,EAAOnD,EAAOuB,GAAK2B,MAAO,OACtCnC,EAAM,IAAIoC,EAAOnD,EAAOuB,GAAKR,IAAK,OACtC,OAAO,IAAI8B,EAAGK,EAAOnC,EACvB,EAyBAtH,EAAQ2J,oBAAsB3J,EAAQ4J,cAnBtC,SAASD,EAAoBF,EAAOI,EAAKC,EAAWC,GAClD,OAAIL,EAAOM,SAASH,SAA2BI,IAAnBZ,EAAUQ,GAC7BF,EAAoBF,EAAO,SAAUI,EAAKC,IAEnDD,EAAMA,GAAO,SACbE,EAAOA,GAAQ,SACfD,EAAYA,GAAa,IAAIJ,EAAO,CAAC,IAChCA,EAAOM,SAASF,KACnBA,EAAY,IAAIJ,EAAOI,EAAWC,IAEf,kBAAVN,EACF,IAAIL,EAAGc,EAAcT,EAAOK,GAAYA,GAAW,IAEvDJ,EAAOM,SAASP,KACnBA,EAAQ,IAAIC,EAAOD,EAAOI,IAErB,IAAIT,EAAGK,EAAOK,GAAW,IAClC,C,i6NC9BA,kBAAS,EAAQ,IAEb/D,EAAc,IADA,EAAQ,MAEtBD,EAAa,IAAID,EAAG,IACpBQ,EAAS,IAAIR,EAAG,IAChBM,EAAM,IAAIN,EAAG,IACbO,EAAQ,IAAIP,EAAG,GACfsE,EAAQ,IAAItE,EAAG,GACfU,EAAS,EAAQ,KACjBd,EAAc,EAAQ,IAE1B,SAAS2E,EAAaC,EAAKR,GAMzB,OALAA,EAAMA,GAAO,OACRH,EAAOM,SAASK,KACnBA,EAAM,IAAIX,EAAOW,EAAKR,IAExBtK,KAAK+K,KAAO,IAAIzE,EAAGwE,GACZ9K,IACT,CACA,SAASgL,EAAcC,EAAMX,GAM3B,OALAA,EAAMA,GAAO,OACRH,EAAOM,SAASQ,KACnBA,EAAO,IAAId,EAAOc,EAAMX,IAE1BtK,KAAKkL,MAAQ,IAAI5E,EAAG2E,GACbjL,IACT,CAhBAQ,EAAOC,QAAUoJ,EAiBjB,IAAIsB,EAAa,CAAC,EAgDlB,SAAStB,EAAGK,EAAOK,EAAWa,GAC5BpL,KAAKqL,aAAad,GAClBvK,KAAKsL,QAAU,IAAIhF,EAAG4D,GACtBlK,KAAKuL,OAASjF,EAAGmB,KAAKzH,KAAKsL,SAC3BtL,KAAKwL,UAAYtB,EAAMrJ,OACvBb,KAAK+K,UAAOL,EACZ1K,KAAKkL,WAAQR,EACb1K,KAAKyL,gBAAaf,EACdU,GACFpL,KAAK6K,aAAeA,EACpB7K,KAAKgL,cAAgBA,GAErBhL,KAAKyL,WAAa,CAEtB,CAmDA,SAASC,EAAkBC,EAAIrB,GAC7B,IAAIsB,EAAM,IAAIzB,EAAOwB,EAAGE,WACxB,OAAKvB,EAGIsB,EAAI1H,SAASoG,GAFbsB,CAIX,CAzDA1C,OAAO4C,eAAejC,EAAGnJ,UAAW,cAAe,CACjDqL,YAAY,EACZC,IAAK,WAIH,MAH+B,kBAApBhM,KAAKyL,aACdzL,KAAKyL,WAlEX,SAAoBvB,EAAOK,GACzB,IAAIxC,EAAMwC,EAAUrG,SAAS,OACzB+H,EAAM,CAAClE,EAAKmC,EAAMhG,SAAS,KAAKG,KAAK,KACzC,GAAI4H,KAAOd,EACT,OAAOA,EAAWc,GAEpB,IAoBIC,EApBAC,EAAQ,EACZ,GAAIjC,EAAM/B,WAAanB,EAAOZ,cAAgBY,EAAOX,WAAW6D,KAAW1D,EAAYiC,KAAKyB,GAa1F,OAXAiC,GAAS,EAIPA,GAHU,OAARpE,GAAwB,OAARA,EAGT,EAIA,EAEXoD,EAAWc,GAAOE,EACXA,EAOT,OALK3F,EAAYiC,KAAKyB,EAAM1B,KAAK,MAE/B2D,GAAS,GAGHpE,GACN,IAAK,KACCmC,EAAM3B,IAAIhC,GAAY+B,IAAIxB,KAE5BqF,GAAS,GAEX,MACF,IAAK,MACHD,EAAMhC,EAAM3B,IAAI3B,IACR0B,IAAIzB,IAAUqF,EAAI5D,IAAIsC,KAE5BuB,GAAS,GAEX,MACF,QACEA,GAAS,EAGb,OADAhB,EAAWc,GAAOE,EACXA,CACT,CAoBwBC,CAAWpM,KAAKsL,QAAStL,KAAKqM,QAE3CrM,KAAKyL,UACd,IAEF5B,EAAGnJ,UAAU4L,aAAe,WAK1B,OAJKtM,KAAKkL,QACRlL,KAAKkL,MAAQ,IAAI5E,EAAGJ,EAAYlG,KAAKwL,aAEvCxL,KAAK+K,KAAO/K,KAAKuM,KAAK7E,MAAM1H,KAAKuL,QAAQ5D,OAAO3H,KAAKkL,OAAOrD,UACrD7H,KAAKwM,cACd,EACA3C,EAAGnJ,UAAU+L,cAAgB,SAAUC,GAGrC,IAAIC,GADJD,GADAA,EAAQ,IAAIpG,EAAGoG,IACDhF,MAAM1H,KAAKuL,SACN5D,OAAO3H,KAAKkL,OAAOrD,UAClCvG,EAAM,IAAI6I,EAAOwC,EAAOd,WACxB3B,EAAQlK,KAAK4M,WACjB,GAAItL,EAAIT,OAASqJ,EAAMrJ,OAAQ,CAC7B,IAAIgM,EAAQ,IAAI1C,EAAOD,EAAMrJ,OAASS,EAAIT,QAC1CgM,EAAMC,KAAK,GACXxL,EAAM6I,EAAOjI,OAAO,CAAC2K,EAAOvL,GAC9B,CACA,OAAOA,CACT,EACAuI,EAAGnJ,UAAU8L,aAAe,SAAsBlC,GAChD,OAAOoB,EAAkB1L,KAAK+K,KAAMT,EACtC,EACAT,EAAGnJ,UAAUqM,cAAgB,SAAuBzC,GAClD,OAAOoB,EAAkB1L,KAAKkL,MAAOZ,EACvC,EACAT,EAAGnJ,UAAUkM,SAAW,SAAUtC,GAChC,OAAOoB,EAAkB1L,KAAKsL,QAAShB,EACzC,EACAT,EAAGnJ,UAAUsM,aAAe,SAAU1C,GACpC,OAAOoB,EAAkB1L,KAAKuM,KAAMjC,EACtC,EACAT,EAAGnJ,UAAU2K,aAAe,SAAUtD,EAAKuC,GAOzC,OANAA,EAAMA,GAAO,OACRH,EAAOM,SAAS1C,KACnBA,EAAM,IAAIoC,EAAOpC,EAAKuC,IAExBtK,KAAKqM,MAAQtE,EACb/H,KAAKuM,KAAO,IAAIjG,EAAGyB,GACZ/H,IACT,C","file":"js/index~72f93981-98fc261f03f67efc3202.chunk.js","sourcesContent":["'use strict';\n\nvar assert = require('minimalistic-assert');\nfunction Cipher(options) {\n this.options = options;\n this.type = this.options.type;\n this.blockSize = 8;\n this._init();\n this.buffer = new Array(this.blockSize);\n this.bufferOff = 0;\n this.padding = options.padding !== false;\n}\nmodule.exports = Cipher;\nCipher.prototype._init = function _init() {\n // Might be overrided\n};\nCipher.prototype.update = function update(data) {\n if (data.length === 0) return [];\n if (this.type === 'decrypt') return this._updateDecrypt(data);else return this._updateEncrypt(data);\n};\nCipher.prototype._buffer = function _buffer(data, off) {\n // Append data to buffer\n var min = Math.min(this.buffer.length - this.bufferOff, data.length - off);\n for (var i = 0; i < min; i++) this.buffer[this.bufferOff + i] = data[off + i];\n this.bufferOff += min;\n\n // Shift next\n return min;\n};\nCipher.prototype._flushBuffer = function _flushBuffer(out, off) {\n this._update(this.buffer, 0, out, off);\n this.bufferOff = 0;\n return this.blockSize;\n};\nCipher.prototype._updateEncrypt = function _updateEncrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n var count = (this.bufferOff + data.length) / this.blockSize | 0;\n var out = new Array(count * this.blockSize);\n if (this.bufferOff !== 0) {\n inputOff += this._buffer(data, inputOff);\n if (this.bufferOff === this.buffer.length) outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Write blocks\n var max = data.length - (data.length - inputOff) % this.blockSize;\n for (; inputOff < max; inputOff += this.blockSize) {\n this._update(data, inputOff, out, outputOff);\n outputOff += this.blockSize;\n }\n\n // Queue rest\n for (; inputOff < data.length; inputOff++, this.bufferOff++) this.buffer[this.bufferOff] = data[inputOff];\n return out;\n};\nCipher.prototype._updateDecrypt = function _updateDecrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n var count = Math.ceil((this.bufferOff + data.length) / this.blockSize) - 1;\n var out = new Array(count * this.blockSize);\n\n // TODO(indutny): optimize it, this is far from optimal\n for (; count > 0; count--) {\n inputOff += this._buffer(data, inputOff);\n outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Buffer rest of the input\n inputOff += this._buffer(data, inputOff);\n return out;\n};\nCipher.prototype.final = function final(buffer) {\n var first;\n if (buffer) first = this.update(buffer);\n var last;\n if (this.type === 'encrypt') last = this._finalEncrypt();else last = this._finalDecrypt();\n if (first) return first.concat(last);else return last;\n};\nCipher.prototype._pad = function _pad(buffer, off) {\n if (off === 0) return false;\n while (off < buffer.length) buffer[off++] = 0;\n return true;\n};\nCipher.prototype._finalEncrypt = function _finalEncrypt() {\n if (!this._pad(this.buffer, this.bufferOff)) return [];\n var out = new Array(this.blockSize);\n this._update(this.buffer, 0, out, 0);\n return out;\n};\nCipher.prototype._unpad = function _unpad(buffer) {\n return buffer;\n};\nCipher.prototype._finalDecrypt = function _finalDecrypt() {\n assert.equal(this.bufferOff, this.blockSize, 'Not enough data to decrypt');\n var out = new Array(this.blockSize);\n this._flushBuffer(out, 0);\n return this._unpad(out);\n};","'use strict';\n\nexports.readUInt32BE = function readUInt32BE(bytes, off) {\n var res = bytes[0 + off] << 24 | bytes[1 + off] << 16 | bytes[2 + off] << 8 | bytes[3 + off];\n return res >>> 0;\n};\nexports.writeUInt32BE = function writeUInt32BE(bytes, value, off) {\n bytes[0 + off] = value >>> 24;\n bytes[1 + off] = value >>> 16 & 0xff;\n bytes[2 + off] = value >>> 8 & 0xff;\n bytes[3 + off] = value & 0xff;\n};\nexports.ip = function ip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= inR >>> j + i & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= inL >>> j + i & 1;\n }\n }\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= inR >>> j + i & 1;\n }\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= inL >>> j + i & 1;\n }\n }\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\nexports.rip = function rip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n for (var i = 0; i < 4; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outL <<= 1;\n outL |= inR >>> j + i & 1;\n outL <<= 1;\n outL |= inL >>> j + i & 1;\n }\n }\n for (var i = 4; i < 8; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outR <<= 1;\n outR |= inR >>> j + i & 1;\n outR <<= 1;\n outR |= inL >>> j + i & 1;\n }\n }\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\nexports.pc1 = function pc1(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n // 7, 15, 23, 31, 39, 47, 55, 63\n // 6, 14, 22, 30, 39, 47, 55, 63\n // 5, 13, 21, 29, 39, 47, 55, 63\n // 4, 12, 20, 28\n for (var i = 7; i >= 5; i--) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= inR >> j + i & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= inL >> j + i & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= inR >> j + i & 1;\n }\n\n // 1, 9, 17, 25, 33, 41, 49, 57\n // 2, 10, 18, 26, 34, 42, 50, 58\n // 3, 11, 19, 27, 35, 43, 51, 59\n // 36, 44, 52, 60\n for (var i = 1; i <= 3; i++) {\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= inR >> j + i & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= inL >> j + i & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= inL >> j + i & 1;\n }\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\nexports.r28shl = function r28shl(num, shift) {\n return num << shift & 0xfffffff | num >>> 28 - shift;\n};\nvar pc2table = [\n// inL => outL\n14, 11, 17, 4, 27, 23, 25, 0, 13, 22, 7, 18, 5, 9, 16, 24, 2, 20, 12, 21, 1, 8, 15, 26,\n// inR => outR\n15, 4, 25, 19, 9, 1, 26, 16, 5, 11, 23, 8, 12, 7, 17, 0, 22, 3, 10, 14, 6, 20, 27, 24];\nexports.pc2 = function pc2(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n var len = pc2table.length >>> 1;\n for (var i = 0; i < len; i++) {\n outL <<= 1;\n outL |= inL >>> pc2table[i] & 0x1;\n }\n for (var i = len; i < pc2table.length; i++) {\n outR <<= 1;\n outR |= inR >>> pc2table[i] & 0x1;\n }\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\nexports.expand = function expand(r, out, off) {\n var outL = 0;\n var outR = 0;\n outL = (r & 1) << 5 | r >>> 27;\n for (var i = 23; i >= 15; i -= 4) {\n outL <<= 6;\n outL |= r >>> i & 0x3f;\n }\n for (var i = 11; i >= 3; i -= 4) {\n outR |= r >>> i & 0x3f;\n outR <<= 6;\n }\n outR |= (r & 0x1f) << 1 | r >>> 31;\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\nvar sTable = [14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1, 3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8, 4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7, 15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13, 15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14, 9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5, 0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2, 5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9, 10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10, 1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1, 13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7, 11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12, 7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3, 1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9, 10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8, 15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14, 2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1, 8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6, 4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13, 15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3, 12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5, 0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8, 9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10, 7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13, 4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10, 3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6, 1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7, 10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12, 13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4, 10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2, 7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13, 0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11];\nexports.substitute = function substitute(inL, inR) {\n var out = 0;\n for (var i = 0; i < 4; i++) {\n var b = inL >>> 18 - i * 6 & 0x3f;\n var sb = sTable[i * 0x40 + b];\n out <<= 4;\n out |= sb;\n }\n for (var i = 0; i < 4; i++) {\n var b = inR >>> 18 - i * 6 & 0x3f;\n var sb = sTable[4 * 0x40 + i * 0x40 + b];\n out <<= 4;\n out |= sb;\n }\n return out >>> 0;\n};\nvar permuteTable = [16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22, 30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7];\nexports.permute = function permute(num) {\n var out = 0;\n for (var i = 0; i < permuteTable.length; i++) {\n out <<= 1;\n out |= num >>> permuteTable[i] & 0x1;\n }\n return out >>> 0;\n};\nexports.padSplit = function padSplit(num, size, group) {\n var str = num.toString(2);\n while (str.length < size) str = '0' + str;\n var out = [];\n for (var i = 0; i < size; i += group) out.push(str.slice(i, i + group));\n return out.join(' ');\n};","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\nvar utils = require('./utils');\nvar Cipher = require('./cipher');\nfunction DESState() {\n this.tmp = new Array(2);\n this.keys = null;\n}\nfunction DES(options) {\n Cipher.call(this, options);\n var state = new DESState();\n this._desState = state;\n this.deriveKeys(state, options.key);\n}\ninherits(DES, Cipher);\nmodule.exports = DES;\nDES.create = function create(options) {\n return new DES(options);\n};\nvar shiftTable = [1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1];\nDES.prototype.deriveKeys = function deriveKeys(state, key) {\n state.keys = new Array(16 * 2);\n assert.equal(key.length, this.blockSize, 'Invalid key length');\n var kL = utils.readUInt32BE(key, 0);\n var kR = utils.readUInt32BE(key, 4);\n utils.pc1(kL, kR, state.tmp, 0);\n kL = state.tmp[0];\n kR = state.tmp[1];\n for (var i = 0; i < state.keys.length; i += 2) {\n var shift = shiftTable[i >>> 1];\n kL = utils.r28shl(kL, shift);\n kR = utils.r28shl(kR, shift);\n utils.pc2(kL, kR, state.keys, i);\n }\n};\nDES.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._desState;\n var l = utils.readUInt32BE(inp, inOff);\n var r = utils.readUInt32BE(inp, inOff + 4);\n\n // Initial Permutation\n utils.ip(l, r, state.tmp, 0);\n l = state.tmp[0];\n r = state.tmp[1];\n if (this.type === 'encrypt') this._encrypt(state, l, r, state.tmp, 0);else this._decrypt(state, l, r, state.tmp, 0);\n l = state.tmp[0];\n r = state.tmp[1];\n utils.writeUInt32BE(out, l, outOff);\n utils.writeUInt32BE(out, r, outOff + 4);\n};\nDES.prototype._pad = function _pad(buffer, off) {\n if (this.padding === false) {\n return false;\n }\n var value = buffer.length - off;\n for (var i = off; i < buffer.length; i++) buffer[i] = value;\n return true;\n};\nDES.prototype._unpad = function _unpad(buffer) {\n if (this.padding === false) {\n return buffer;\n }\n var pad = buffer[buffer.length - 1];\n for (var i = buffer.length - pad; i < buffer.length; i++) assert.equal(buffer[i], pad);\n return buffer.slice(0, buffer.length - pad);\n};\nDES.prototype._encrypt = function _encrypt(state, lStart, rStart, out, off) {\n var l = lStart;\n var r = rStart;\n\n // Apply f() x16 times\n for (var i = 0; i < state.keys.length; i += 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(r, state.tmp, 0);\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n var t = r;\n r = (l ^ f) >>> 0;\n l = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(r, l, out, off);\n};\nDES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) {\n var l = rStart;\n var r = lStart;\n\n // Apply f() x16 times\n for (var i = state.keys.length - 2; i >= 0; i -= 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(l, state.tmp, 0);\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n var t = l;\n l = (r ^ f) >>> 0;\n r = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(l, r, out, off);\n};","var randomBytes = require('randombytes');\nmodule.exports = findPrime;\nfindPrime.simpleSieve = simpleSieve;\nfindPrime.fermatTest = fermatTest;\nvar BN = require('bn.js');\nvar TWENTYFOUR = new BN(24);\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar ONE = new BN(1);\nvar TWO = new BN(2);\nvar FIVE = new BN(5);\nvar SIXTEEN = new BN(16);\nvar EIGHT = new BN(8);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar ELEVEN = new BN(11);\nvar FOUR = new BN(4);\nvar TWELVE = new BN(12);\nvar primes = null;\nfunction _getPrimes() {\n if (primes !== null) return primes;\n var limit = 0x100000;\n var res = [];\n res[0] = 2;\n for (var i = 1, k = 3; k < limit; k += 2) {\n var sqrt = Math.ceil(Math.sqrt(k));\n for (var j = 0; j < i && res[j] <= sqrt; j++) if (k % res[j] === 0) break;\n if (i !== j && res[j] <= sqrt) continue;\n res[i++] = k;\n }\n primes = res;\n return res;\n}\nfunction simpleSieve(p) {\n var primes = _getPrimes();\n for (var i = 0; i < primes.length; i++) if (p.modn(primes[i]) === 0) {\n if (p.cmpn(primes[i]) === 0) {\n return true;\n } else {\n return false;\n }\n }\n return true;\n}\nfunction fermatTest(p) {\n var red = BN.mont(p);\n return TWO.toRed(red).redPow(p.subn(1)).fromRed().cmpn(1) === 0;\n}\nfunction findPrime(bits, gen) {\n if (bits < 16) {\n // this is what openssl does\n if (gen === 2 || gen === 5) {\n return new BN([0x8c, 0x7b]);\n } else {\n return new BN([0x8c, 0x27]);\n }\n }\n gen = new BN(gen);\n var num, n2;\n while (true) {\n num = new BN(randomBytes(Math.ceil(bits / 8)));\n while (num.bitLength() > bits) {\n num.ishrn(1);\n }\n if (num.isEven()) {\n num.iadd(ONE);\n }\n if (!num.testn(1)) {\n num.iadd(TWO);\n }\n if (!gen.cmp(TWO)) {\n while (num.mod(TWENTYFOUR).cmp(ELEVEN)) {\n num.iadd(FOUR);\n }\n } else if (!gen.cmp(FIVE)) {\n while (num.mod(TEN).cmp(THREE)) {\n num.iadd(FOUR);\n }\n }\n n2 = num.shrn(1);\n if (simpleSieve(n2) && simpleSieve(num) && fermatTest(n2) && fermatTest(num) && millerRabin.test(n2) && millerRabin.test(num)) {\n return num;\n }\n }\n}","'use strict';\n\nexports.utils = require('./des/utils');\nexports.Cipher = require('./des/cipher');\nexports.DES = require('./des/des');\nexports.CBC = require('./des/cbc');\nexports.EDE = require('./des/ede');","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\nvar proto = {};\nfunction CBCState(iv) {\n assert.equal(iv.length, 8, 'Invalid IV length');\n this.iv = new Array(8);\n for (var i = 0; i < this.iv.length; i++) this.iv[i] = iv[i];\n}\nfunction instantiate(Base) {\n function CBC(options) {\n Base.call(this, options);\n this._cbcInit();\n }\n inherits(CBC, Base);\n var keys = Object.keys(proto);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n CBC.prototype[key] = proto[key];\n }\n CBC.create = function create(options) {\n return new CBC(options);\n };\n return CBC;\n}\nexports.instantiate = instantiate;\nproto._cbcInit = function _cbcInit() {\n var state = new CBCState(this.options.iv);\n this._cbcState = state;\n};\nproto._update = function _update(inp, inOff, out, outOff) {\n var state = this._cbcState;\n var superProto = this.constructor.super_.prototype;\n var iv = state.iv;\n if (this.type === 'encrypt') {\n for (var i = 0; i < this.blockSize; i++) iv[i] ^= inp[inOff + i];\n superProto._update.call(this, iv, 0, out, outOff);\n for (var i = 0; i < this.blockSize; i++) iv[i] = out[outOff + i];\n } else {\n superProto._update.call(this, inp, inOff, out, outOff);\n for (var i = 0; i < this.blockSize; i++) out[outOff + i] ^= iv[i];\n for (var i = 0; i < this.blockSize; i++) iv[i] = inp[inOff + i];\n }\n};","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\nvar Cipher = require('./cipher');\nvar DES = require('./des');\nfunction EDEState(type, key) {\n assert.equal(key.length, 24, 'Invalid key length');\n var k1 = key.slice(0, 8);\n var k2 = key.slice(8, 16);\n var k3 = key.slice(16, 24);\n if (type === 'encrypt') {\n this.ciphers = [DES.create({\n type: 'encrypt',\n key: k1\n }), DES.create({\n type: 'decrypt',\n key: k2\n }), DES.create({\n type: 'encrypt',\n key: k3\n })];\n } else {\n this.ciphers = [DES.create({\n type: 'decrypt',\n key: k3\n }), DES.create({\n type: 'encrypt',\n key: k2\n }), DES.create({\n type: 'decrypt',\n key: k1\n })];\n }\n}\nfunction EDE(options) {\n Cipher.call(this, options);\n var state = new EDEState(this.type, this.options.key);\n this._edeState = state;\n}\ninherits(EDE, Cipher);\nmodule.exports = EDE;\nEDE.create = function create(options) {\n return new EDE(options);\n};\nEDE.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._edeState;\n state.ciphers[0]._update(inp, inOff, out, outOff);\n state.ciphers[1]._update(out, outOff, out, outOff);\n state.ciphers[2]._update(out, outOff, out, outOff);\n};\nEDE.prototype._pad = DES.prototype._pad;\nEDE.prototype._unpad = DES.prototype._unpad;","var generatePrime = require('./lib/generatePrime');\nvar primes = require('./lib/primes.json');\nvar DH = require('./lib/dh');\nfunction getDiffieHellman(mod) {\n var prime = new Buffer(primes[mod].prime, 'hex');\n var gen = new Buffer(primes[mod].gen, 'hex');\n return new DH(prime, gen);\n}\nvar ENCODINGS = {\n 'binary': true,\n 'hex': true,\n 'base64': true\n};\nfunction createDiffieHellman(prime, enc, generator, genc) {\n if (Buffer.isBuffer(enc) || ENCODINGS[enc] === undefined) {\n return createDiffieHellman(prime, 'binary', enc, generator);\n }\n enc = enc || 'binary';\n genc = genc || 'binary';\n generator = generator || new Buffer([2]);\n if (!Buffer.isBuffer(generator)) {\n generator = new Buffer(generator, genc);\n }\n if (typeof prime === 'number') {\n return new DH(generatePrime(prime, generator), generator, true);\n }\n if (!Buffer.isBuffer(prime)) {\n prime = new Buffer(prime, enc);\n }\n return new DH(prime, generator, true);\n}\nexports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffieHellman = getDiffieHellman;\nexports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman;","var BN = require('bn.js');\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar TWENTYFOUR = new BN(24);\nvar ELEVEN = new BN(11);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar primes = require('./generatePrime');\nvar randomBytes = require('randombytes');\nmodule.exports = DH;\nfunction setPublicKey(pub, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc);\n }\n this._pub = new BN(pub);\n return this;\n}\nfunction setPrivateKey(priv, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc);\n }\n this._priv = new BN(priv);\n return this;\n}\nvar primeCache = {};\nfunction checkPrime(prime, generator) {\n var gen = generator.toString('hex');\n var hex = [gen, prime.toString(16)].join('_');\n if (hex in primeCache) {\n return primeCache[hex];\n }\n var error = 0;\n if (prime.isEven() || !primes.simpleSieve || !primes.fermatTest(prime) || !millerRabin.test(prime)) {\n //not a prime so +1\n error += 1;\n if (gen === '02' || gen === '05') {\n // we'd be able to check the generator\n // it would fail so +8\n error += 8;\n } else {\n //we wouldn't be able to test the generator\n // so +4\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n }\n if (!millerRabin.test(prime.shrn(1))) {\n //not a safe prime\n error += 2;\n }\n var rem;\n switch (gen) {\n case '02':\n if (prime.mod(TWENTYFOUR).cmp(ELEVEN)) {\n // unsuidable generator\n error += 8;\n }\n break;\n case '05':\n rem = prime.mod(TEN);\n if (rem.cmp(THREE) && rem.cmp(SEVEN)) {\n // prime mod 10 needs to equal 3 or 7\n error += 8;\n }\n break;\n default:\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n}\nfunction DH(prime, generator, malleable) {\n this.setGenerator(generator);\n this.__prime = new BN(prime);\n this._prime = BN.mont(this.__prime);\n this._primeLen = prime.length;\n this._pub = undefined;\n this._priv = undefined;\n this._primeCode = undefined;\n if (malleable) {\n this.setPublicKey = setPublicKey;\n this.setPrivateKey = setPrivateKey;\n } else {\n this._primeCode = 8;\n }\n}\nObject.defineProperty(DH.prototype, 'verifyError', {\n enumerable: true,\n get: function () {\n if (typeof this._primeCode !== 'number') {\n this._primeCode = checkPrime(this.__prime, this.__gen);\n }\n return this._primeCode;\n }\n});\nDH.prototype.generateKeys = function () {\n if (!this._priv) {\n this._priv = new BN(randomBytes(this._primeLen));\n }\n this._pub = this._gen.toRed(this._prime).redPow(this._priv).fromRed();\n return this.getPublicKey();\n};\nDH.prototype.computeSecret = function (other) {\n other = new BN(other);\n other = other.toRed(this._prime);\n var secret = other.redPow(this._priv).fromRed();\n var out = new Buffer(secret.toArray());\n var prime = this.getPrime();\n if (out.length < prime.length) {\n var front = new Buffer(prime.length - out.length);\n front.fill(0);\n out = Buffer.concat([front, out]);\n }\n return out;\n};\nDH.prototype.getPublicKey = function getPublicKey(enc) {\n return formatReturnValue(this._pub, enc);\n};\nDH.prototype.getPrivateKey = function getPrivateKey(enc) {\n return formatReturnValue(this._priv, enc);\n};\nDH.prototype.getPrime = function (enc) {\n return formatReturnValue(this.__prime, enc);\n};\nDH.prototype.getGenerator = function (enc) {\n return formatReturnValue(this._gen, enc);\n};\nDH.prototype.setGenerator = function (gen, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(gen)) {\n gen = new Buffer(gen, enc);\n }\n this.__gen = gen;\n this._gen = new BN(gen);\n return this;\n};\nfunction formatReturnValue(bn, enc) {\n var buf = new Buffer(bn.toArray());\n if (!enc) {\n return buf;\n } else {\n return buf.toString(enc);\n }\n}"],"sourceRoot":""}