{"version":3,"sources":["webpack://icp_bunny_assets/./node_modules/@dfinity/agent/node_modules/borc/src/constants.js","webpack://icp_bunny_assets/./node_modules/@dfinity/agent/node_modules/borc/src/decoder.asm.js","webpack://icp_bunny_assets/./node_modules/@dfinity/agent/node_modules/borc/src/decoder.js","webpack://icp_bunny_assets/./node_modules/@dfinity/agent/node_modules/borc/src/diagnose.js","webpack://icp_bunny_assets/./node_modules/@dfinity/agent/node_modules/borc/src/encoder.js","webpack://icp_bunny_assets/./node_modules/@dfinity/agent/node_modules/borc/src/index.js","webpack://icp_bunny_assets/./node_modules/@dfinity/agent/node_modules/borc/src/simple.js","webpack://icp_bunny_assets/./node_modules/@dfinity/agent/node_modules/borc/src/tagged.js","webpack://icp_bunny_assets/./node_modules/@dfinity/agent/node_modules/borc/src/utils.js","webpack://icp_bunny_assets/./node_modules/@dfinity/agent/node_modules/buffer/index.js","webpack://icp_bunny_assets/./node_modules/@dfinity/agent/node_modules/iso-url/index.js","webpack://icp_bunny_assets/./node_modules/@dfinity/agent/node_modules/iso-url/src/relative.js","webpack://icp_bunny_assets/./node_modules/@dfinity/agent/node_modules/iso-url/src/url-browser.js","webpack://icp_bunny_assets/./node_modules/@dfinity/auth-client/node_modules/borc/src/constants.js","webpack://icp_bunny_assets/./node_modules/@dfinity/auth-client/node_modules/borc/src/decoder.asm.js","webpack://icp_bunny_assets/./node_modules/@dfinity/auth-client/node_modules/borc/src/decoder.js","webpack://icp_bunny_assets/./node_modules/@dfinity/auth-client/node_modules/borc/src/diagnose.js","webpack://icp_bunny_assets/./node_modules/@dfinity/auth-client/node_modules/borc/src/encoder.js","webpack://icp_bunny_assets/./node_modules/@dfinity/auth-client/node_modules/borc/src/index.js","webpack://icp_bunny_assets/./node_modules/@dfinity/auth-client/node_modules/borc/src/simple.js","webpack://icp_bunny_assets/./node_modules/@dfinity/auth-client/node_modules/borc/src/tagged.js","webpack://icp_bunny_assets/./node_modules/@dfinity/auth-client/node_modules/borc/src/utils.js","webpack://icp_bunny_assets/./node_modules/@dfinity/auth-client/node_modules/buffer/index.js","webpack://icp_bunny_assets/./node_modules/@dfinity/auth-client/node_modules/iso-url/index.js","webpack://icp_bunny_assets/./node_modules/@dfinity/auth-client/node_modules/iso-url/src/relative.js","webpack://icp_bunny_assets/./node_modules/@dfinity/auth-client/node_modules/iso-url/src/url-browser.js","webpack://icp_bunny_assets/./node_modules/base64-arraybuffer/lib/base64-arraybuffer.js","webpack://icp_bunny_assets/./node_modules/base64-js/index.js","webpack://icp_bunny_assets/./node_modules/bignumber.js/bignumber.js","webpack://icp_bunny_assets/./node_modules/buffer-pipe/index.js","webpack://icp_bunny_assets/./node_modules/buffer/index.js","webpack://icp_bunny_assets/./node_modules/ieee754/index.js","webpack://icp_bunny_assets/./node_modules/js-sha256/src/sha256.js","webpack://icp_bunny_assets/./node_modules/process/browser.js","webpack://icp_bunny_assets/./node_modules/safe-buffer/index.js","webpack://icp_bunny_assets/./node_modules/simple-cbor/src/index.js","webpack://icp_bunny_assets/./node_modules/simple-cbor/src/serializer.js","webpack://icp_bunny_assets/./node_modules/simple-cbor/src/value.js","webpack://icp_bunny_assets/./node_modules/tweetnacl/nacl-fast.js","webpack://icp_bunny_assets/./src/bitcoin_bunny/src/bunny/bunnycolors.js","webpack://icp_bunny_assets/./src/bitcoin_bunny/src/bunny/bunnyparser.js","webpack://icp_bunny_assets/webpack/bootstrap","webpack://icp_bunny_assets/webpack/runtime/amd options","webpack://icp_bunny_assets/webpack/runtime/compat get default export","webpack://icp_bunny_assets/webpack/runtime/define property getters","webpack://icp_bunny_assets/webpack/runtime/global","webpack://icp_bunny_assets/webpack/runtime/hasOwnProperty shorthand","webpack://icp_bunny_assets/./node_modules/@dfinity/agent/lib/esm/utils/leb128.js","webpack://icp_bunny_assets/./node_modules/@dfinity/agent/lib/esm/types.js","webpack://icp_bunny_assets/./node_modules/@dfinity/agent/lib/esm/utils/base32.js","webpack://icp_bunny_assets/./node_modules/@dfinity/agent/lib/esm/utils/getCrc.js","webpack://icp_bunny_assets/./node_modules/@dfinity/agent/lib/esm/principal.js","webpack://icp_bunny_assets/./node_modules/@dfinity/agent/lib/esm/utils/sha224.js","webpack://icp_bunny_assets/./node_modules/@dfinity/agent/lib/esm/request_id.js","webpack://icp_bunny_assets/./node_modules/@dfinity/agent/lib/esm/auth.js","webpack://icp_bunny_assets/./node_modules/@dfinity/agent/lib/esm/cbor.js","webpack://icp_bunny_assets/./node_modules/@dfinity/agent/lib/esm/agent/http/transforms.js","webpack://icp_bunny_assets/./node_modules/@dfinity/agent/lib/esm/agent/http/types.js","webpack://icp_bunny_assets/./node_modules/@dfinity/agent/lib/esm/agent/http/index.js","webpack://icp_bunny_assets/./node_modules/@dfinity/agent/lib/esm/agent/proxy.js","webpack://icp_bunny_assets/./node_modules/@dfinity/agent/lib/esm/vendor/bls/bls.js","webpack://icp_bunny_assets/./node_modules/@dfinity/agent/lib/esm/certificate.js","webpack://icp_bunny_assets/./node_modules/@dfinity/agent/lib/esm/idl.js","webpack://icp_bunny_assets/./node_modules/@dfinity/agent/lib/esm/actor.js","webpack://icp_bunny_assets/./node_modules/@dfinity/auth-client/node_modules/@dfinity/agent/lib/esm/utils/leb128.js","webpack://icp_bunny_assets/./node_modules/@dfinity/auth-client/node_modules/@dfinity/agent/lib/esm/types.js","webpack://icp_bunny_assets/./node_modules/@dfinity/auth-client/node_modules/@dfinity/agent/lib/esm/utils/base32.js","webpack://icp_bunny_assets/./node_modules/@dfinity/auth-client/node_modules/@dfinity/agent/lib/esm/utils/getCrc.js","webpack://icp_bunny_assets/./node_modules/@dfinity/auth-client/node_modules/@dfinity/agent/lib/esm/principal.js","webpack://icp_bunny_assets/./node_modules/@dfinity/auth-client/node_modules/@dfinity/agent/lib/esm/utils/sha224.js","webpack://icp_bunny_assets/./node_modules/@dfinity/auth-client/node_modules/@dfinity/agent/lib/esm/auth.js","webpack://icp_bunny_assets/./node_modules/@dfinity/auth-client/node_modules/@dfinity/agent/lib/esm/cbor.js","webpack://icp_bunny_assets/./node_modules/@dfinity/auth-client/node_modules/@dfinity/agent/lib/esm/agent/http/transforms.js","webpack://icp_bunny_assets/./node_modules/@dfinity/auth-client/node_modules/@dfinity/agent/lib/esm/agent/http/types.js","webpack://icp_bunny_assets/./node_modules/@dfinity/auth-client/node_modules/@dfinity/agent/lib/esm/agent/http/index.js","webpack://icp_bunny_assets/./node_modules/@dfinity/auth-client/node_modules/@dfinity/agent/lib/esm/agent/proxy.js","webpack://icp_bunny_assets/./node_modules/@dfinity/auth-client/node_modules/@dfinity/agent/lib/esm/idl.js","webpack://icp_bunny_assets/./node_modules/@dfinity/auth-client/node_modules/@dfinity/agent/lib/esm/vendor/bls/bls.js","webpack://icp_bunny_assets/./node_modules/@dfinity/auth-client/node_modules/@dfinity/agent/lib/esm/certificate.js","webpack://icp_bunny_assets/./node_modules/@dfinity/auth-client/node_modules/@dfinity/agent/lib/esm/actor.js","webpack://icp_bunny_assets/./node_modules/@dfinity/auth-client/node_modules/@dfinity/identity/lib/esm/identity/ed25519.js","webpack://icp_bunny_assets/./node_modules/@dfinity/auth-client/node_modules/@dfinity/identity/lib/esm/identity/delegation.js","webpack://icp_bunny_assets/./node_modules/@dfinity/auth-client/node_modules/@dfinity/identity/lib/esm/identity/webauthn.js","webpack://icp_bunny_assets/./node_modules/@dfinity/principal/lib/esm/utils/getCrc.js","webpack://icp_bunny_assets/./node_modules/@dfinity/principal/lib/esm/utils/base32.js","webpack://icp_bunny_assets/./src/bitcoin_bunny/src/index.js"],"names":["Bignumber","exports","MT","POS_INT","NEG_INT","BYTE_STRING","UTF8_STRING","ARRAY","MAP","TAG","SIMPLE_FLOAT","DATE_STRING","DATE_EPOCH","POS_BIGINT","NEG_BIGINT","DECIMAL_FRAC","BIGFLOAT","BASE64URL_EXPECTED","BASE64_EXPECTED","BASE16_EXPECTED","CBOR","URI","BASE64URL","BASE64","REGEXP","MIME","NUMBYTES","ZERO","ONE","TWO","FOUR","EIGHT","INDEFINITE","SIMPLE","FALSE","TRUE","NULL","UNDEFINED","SYMS","Symbol","PARENT","BREAK","STREAM","SHIFT32","Math","pow","SHIFT16","MAX_SAFE_HIGH","NEG_ONE","TEN","OBJECT","module","stdlib","foreign","buffer","heap","Uint8Array","pushInt","pushInt32","pushInt32Neg","pushInt64","pushInt64Neg","pushFloat","pushFloatSingle","pushFloatDouble","pushTrue","pushFalse","pushUndefined","pushNull","pushInfinity","pushInfinityNeg","pushNaN","pushNaNNeg","pushArrayStart","pushArrayStartFixed","pushArrayStartFixed32","pushArrayStartFixed64","pushObjectStart","pushObjectStartFixed","pushObjectStartFixed32","pushObjectStartFixed64","pushByteString","pushByteStringStart","pushUtf8String","pushUtf8StringStart","pushSimpleUnassigned","pushTagStart","pushTagStart4","pushTagStart8","pushTagUnassigned","pushBreak","offset","inputLength","code","parse","input","jumpTable","checkOffset","n","readUInt16","readUInt32","INT_P","octet","UINT_P_8","UINT_P_16","UINT_P_32","UINT_P_64","INT_N","UINT_N_8","UINT_N_16","val","UINT_N_32","UINT_N_64","start","end","step","BYTE_STRING_8","length","BYTE_STRING_16","BYTE_STRING_32","BYTE_STRING_64","BYTE_STRING_BREAK","UTF8_STRING_8","UTF8_STRING_16","UTF8_STRING_32","UTF8_STRING_64","UTF8_STRING_BREAK","ARRAY_8","ARRAY_16","ARRAY_32","ARRAY_64","ARRAY_BREAK","MAP_8","MAP_16","MAP_32","MAP_64","MAP_BREAK","TAG_KNOWN","TAG_BIGNUM_POS","TAG_BIGNUM_NEG","TAG_FRAC","TAG_BIGNUM_FLOAT","TAG_UNASSIGNED","TAG_BASE64_URL","TAG_BASE64","TAG_BASE16","TAG_MORE_1","TAG_MORE_2","TAG_MORE_4","TAG_MORE_8","SIMPLE_UNASSIGNED","SIMPLE_FALSE","SIMPLE_TRUE","SIMPLE_NULL","SIMPLE_UNDEFINED","SIMPLE_BYTE","SIMPLE_FLOAT_HALF","f","g","sign","exp","mant","r","SIMPLE_FLOAT_SINGLE","SIMPLE_FLOAT_DOUBLE","ERROR","Buffer","ieee754","parser","utils","c","Simple","Tagged","URL","Decoder","constructor","opts","size","nextPowerOf2","this","_heap","ArrayBuffer","_heap8","_buffer","from","_reset","_knownTags","Object","assign","Date","arrayBufferToBignumber","minus","v","times","RegExp","tags","log","console","bind","_parents","_depth","_currentParent","ref","_closeParent","p","pop","Error","type","_push","createTag","createByteString","createUtf8String","values","createMap","createObject","createArray","_dec","hasChildren","_ref","push","tmpKey","buildMap","set","_createParent","obj","len","_res","tagNumber","value","typ","arr","raw","concat","createByteStringFromHeap","alloc","slice","createInt","createInt32","buildInt32","createInt64","f1","f2","g1","g2","buildInt64","createFloat","createFloatSingle","a","b","d","read","createFloatDouble","e","h","createInt32Neg","createInt64Neg","plus","createTrue","createFalse","createNull","createUndefined","createInfinity","Infinity","createInfinityNeg","createNaN","NaN","createNaNNeg","join","createUtf8StringFromHeap","toString","createSimpleUnassigned","_createArrayStartFixed","len1","len2","len3","len4","_createObjectStartFixed","tag","Array","_decode","byteLength","decodeFirst","decodeAll","enc","decode","Diagnose","super","fl","isNegativeZero","map","list","keys","reduce","collectObject","acc","key","constants","HALF","FLOAT","DOUBLE","MAXINT_BN","BUF_NAN","BUF_INF_NEG","BUF_INF_POS","Encoder","options","streaming","stream","onData","semanticTypes","_pushUrl","_pushBigNumber","addTypes","genTypes","i","addSemanticType","fun","old","result","resultMethod","resultLength","finalize","pushWrite","method","_pushUInt8","_pushUInt16BE","_pushUInt32BE","_pushDoubleBE","_pushNaN","_pushInfinity","half","_pushFloat","b2","allocUnsafe","writeHalf","parseHalf","b4","writeFloatBE","readFloatBE","_pushInt","mt","orig","m","Number","MAX_SAFE_INTEGER","floor","_pushIntNum","_pushNumber","isFinite","_pushString","_pushBoolean","_pushUndefined","_pushArray","gen","j","pushAny","_pushTag","_pushDate","round","_pushBuffer","_pushNoFilter","_pushRegexp","source","_pushSet","x","format","_pushBigint","isNegative","negated","str","buf","isNaN","isInteger","dec","decimalPlaces","slide","multipliedBy","abs","isLessThan","toNumber","_pushMap","_pushRawMap","_pushObject","call","encodeCBOR","keyLength","k","encode","sort","keySorter","write","toType","isBuffer","undefined","res","index","copy","writeUInt8","writeUInt16BE","writeUInt32BE","writeDoubleBE","tmp","o","diagnose","inspect","hasParent","err","JSON","stringify","convert","converters","er","error","Map","u32","u","readUInt32BE","s16","lenA","lenB","compare","count","base64","customInspectSymbol","SlowBuffer","INSPECT_MAX_BYTES","K_MAX_LENGTH","createBuffer","RangeError","setPrototypeOf","prototype","arg","encodingOrOffset","TypeError","string","encoding","isEncoding","actual","fromString","isView","arrayView","isInstance","fromArrayBuffer","byteOffset","fromArrayLike","fromArrayView","SharedArrayBuffer","valueOf","checked","numberIsNaN","isArray","data","fromObject","toPrimitive","assertSize","array","mustMatch","arguments","loweredCase","utf8ToBytes","base64ToBytes","toLowerCase","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","dir","arrayIndexOf","indexOf","lastIndexOf","indexSize","arrLength","valLength","String","readUInt16BE","foundIndex","found","hexWrite","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","byteArray","charCodeAt","asciiToBytes","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","fromByteArray","min","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","apply","decodeCodePointsArray","kMaxLength","TYPED_ARRAY_SUPPORT","proto","foo","typedArraySupport","defineProperty","enumerable","get","poolSize","fill","allocUnsafeSlow","_isBuffer","y","pos","swap16","swap32","swap64","toLocaleString","equals","max","replace","trim","target","thisStart","thisEnd","thisCopy","targetCopy","includes","toJSON","_arr","ret","out","hexSliceLookupTable","bytes","ext","checkInt","checkIEEE754","writeFloat","littleEndian","noAssert","writeDouble","newBuf","subarray","readUintLE","readUIntLE","mul","readUintBE","readUIntBE","readUint8","readUInt8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readDoubleLE","readDoubleBE","writeUintLE","writeUIntLE","writeUintBE","writeUIntBE","writeUint8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeDoubleLE","targetStart","copyWithin","INVALID_BASE64_RE","leadSurrogate","toByteArray","split","base64clean","src","dst","name","alphabet","table","i16","URLWithLegacySupport","URLSearchParams","defaultBase","relative","url","location","protocolMap","defaultProtocol","urlParsed","protocol","base","host","self","path","pathname","search","auth","username","password","query","startsWith","hash","hostname","href","origin","port","searchParams","createObjectURL","revokeObjectURL","userPass","chars","lookup","arraybuffer","substring","encoded1","encoded2","encoded3","encoded4","bufferLength","b64","lens","getLens","validLen","placeHoldersLen","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","parts","maxChunkLength","encodeChunk","num","output","globalObject","BigNumber","isNumeric","mathceil","ceil","mathfloor","bignumberError","tooManyDigits","BASE","LOG_BASE","POWS_TEN","SQRT_BASE","MAX","bitFloor","coeffToString","s","z","xc","yc","l","intCheck","isOdd","toExponential","charAt","toFixedPoint","zs","clone","configObject","div","convertBase","parseNumeric","pow2_53","random53bitInt","basePrefix","dotAfter","dotBefore","isInfinityOrNaN","whitespaceOrPlus","P","DECIMAL_PLACES","ROUNDING_MODE","TO_EXP_NEG","TO_EXP_POS","MIN_EXP","MAX_EXP","CRYPTO","MODULO_MODE","POW_PRECISION","FORMAT","prefix","groupSize","secondaryGroupSize","groupSeparator","decimalSeparator","fractionGroupSize","fractionGroupSeparator","suffix","ALPHABET","caseChanged","isNum","_isBigNumber","test","DEBUG","toUpperCase","rm","id","c0","ne","maxOrMin","args","normalise","sd","ni","rd","pows10","ROUND_UP","ROUND_DOWN","ROUND_CEIL","ROUND_FLOOR","ROUND_HALF_UP","ROUND_HALF_DOWN","ROUND_HALF_EVEN","ROUND_HALF_CEIL","ROUND_HALF_FLOOR","EUCLID","config","hasOwnProperty","crypto","getRandomValues","randomBytes","EXPONENTIAL_AT","RANGE","isBigNumber","maximum","lt","minimum","gt","random","dp","rand","Uint32Array","splice","sum","decimal","toBaseOut","baseIn","baseOut","arrL","reverse","callerIsToString","multiply","temp","xlo","xhi","carry","klo","khi","aL","bL","cmp","subtract","more","prod","prodL","q","qc","rem","remL","rem0","xi","xL","yc0","yL","yz","p1","p2","absoluteValue","comparedTo","dividedBy","dividedToIntegerBy","idiv","exponentiatedBy","isModExp","nIsBig","nIsNeg","nIsOdd","mod","integerValue","isEqualTo","eq","isGreaterThan","isGreaterThanOrEqualTo","gte","isLessThanOrEqualTo","lte","isPositive","isZero","t","xLTy","xe","ye","modulo","xcL","ycL","ylo","yhi","zc","sqrtBase","precision","shiftedBy","squareRoot","sqrt","rep","toFixed","toFormat","intPart","fractionPart","isNeg","intDigits","toFraction","md","d0","d1","d2","n0","n1","toPrecision","_bytesRead","_bytesWrote","wrtBigUInt64LE","checkIntBI","BigInt","wrtBigUInt64BE","readBigUInt64LE","defineBigIntMethod","validateNumber","first","last","boundsError","readBigUInt64BE","readBigInt64LE","readBigInt64BE","writeBigUInt64LE","writeBigUInt64BE","writeBigInt64LE","writeBigInt64BE","errors","E","sym","getMessage","Base","writable","configurable","stack","message","addNumericalSeparator","range","ERR_OUT_OF_RANGE","checkBounds","ERR_INVALID_ARG_TYPE","ERR_BUFFER_OUT_OF_BOUNDS","msg","received","fn","BufferBigIntNotDefined","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","rt","LN2","WINDOW","window","root","JS_SHA256_NO_WINDOW","WEB_WORKER","NODE_JS","JS_SHA256_NO_NODE_JS","process","versions","node","COMMON_JS","JS_SHA256_NO_COMMON_JS","AMD","ARRAY_BUFFER","JS_SHA256_NO_ARRAY_BUFFER","HEX_CHARS","EXTRA","SHIFT","K","OUTPUT_TYPES","blocks","JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW","createOutputMethod","outputType","is224","Sha256","update","createMethod","nodeWrap","create","eval","algorithm","nodeMethod","createHash","digest","createHmacOutputMethod","HmacSha256","createHmacMethod","sharedMemory","h0","h1","h2","h3","h4","h5","h6","h7","block","hBytes","finalized","hashed","oKeyPad","iKeyPad","inner","notString","lastByteIndex","s0","s1","maj","t1","ab","da","cd","bc","hex","arrayBuffer","dataView","DataView","setUint32","innerHash","sha256","sha224","hmac","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","setTimeout","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","run","marker","runClearTimeout","Item","noop","nextTick","title","browser","env","argv","version","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","umask","copyProps","SafeBuffer","__importStar","__esModule","__export","cbor","BufferClasses","Uint16Array","Int8Array","Int16Array","Int32Array","Float32Array","Float64Array","JsonDefaultCborEncoder","_serializer","_stable","priority","match","undefined_","bool","number","doubleFloat","null_","serializeValue","find","getOwnPropertyNames","item","entries","ToCborEncoder","toCBOR","CborSerializer","_encoders","Set","stable","addEncoder","removeEncoder","encoder","delete","add","getEncoderFor","chosenEncoder","serialize","SelfDescribeCborSerializer","_concat","newBuffer","_serializeValue","major","minor","padStart","byte","_serializeNumber","_serializeString","utf8","charcode","uSmall","u8","radix","u16","u64","iSmall","i8","i32","i64","done","newI64","reduceRight","true_","false_","tagged","items","keyA","keyB","localeCompare","singleFloat","single","nacl","gf","init","randombytes","_0","_9","gf0","gf1","_121665","D","D2","X","Y","I","ts64","vn","yi","crypto_verify_16","crypto_verify_32","crypto_core_salsa20","inp","j0","j1","j2","j3","j4","j5","j6","j7","j8","j9","j10","j11","j12","j13","j14","j15","x0","x1","x2","x3","x4","x5","x6","x7","x8","x9","x10","x11","x12","x13","x14","x15","core_salsa20","crypto_core_hsalsa20","core_hsalsa20","sigma","crypto_stream_salsa20_xor","cpos","mpos","crypto_stream_salsa20","crypto_stream","sn","crypto_stream_xor","poly1305","t0","t2","t3","t4","t5","t6","t7","pad","leftover","fin","crypto_onetimeauth","outpos","finish","crypto_onetimeauth_verify","hpos","crypto_secretbox","crypto_secretbox_open","set25519","car25519","sel25519","pack25519","neq25519","par25519","unpack25519","A","Z","M","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","t18","t19","t20","t21","t22","t23","t24","t25","t26","t27","t28","t29","t30","b0","b1","b3","b5","b6","b7","b8","b9","b10","b11","b12","b13","b14","b15","S","inv25519","pow2523","crypto_scalarmult","x32","x16","crypto_scalarmult_base","crypto_box_keypair","crypto_box_beforenm","d3","d4","d5","d6","d7","d8","d9","hibit","h8","h9","r0","r1","r2","r3","r4","r5","r6","r7","r8","r9","mac","macpos","mask","want","crypto_box_afternm","crypto_box_open_afternm","crypto_hashblocks_hl","hh","hl","bh0","bh1","bh2","bh3","bh4","bh5","bh6","bh7","bl0","bl1","bl2","bl3","bl4","bl5","bl6","bl7","th","tl","wh","wl","ah0","ah1","ah2","ah3","ah4","ah5","ah6","ah7","al0","al1","al2","al3","al4","al5","al6","al7","crypto_hash","cswap","pack","tx","ty","zi","scalarmult","scalarbase","crypto_sign_keypair","pk","sk","seeded","L","modL","crypto_sign","sm","smlen","crypto_sign_open","chk","den","den2","den4","den6","unpackneg","crypto_secretbox_BOXZEROBYTES","crypto_sign_BYTES","crypto_sign_PUBLICKEYBYTES","crypto_sign_SECRETKEYBYTES","checkLengths","checkArrayTypes","cleanup","lowlevel","crypto_box","crypto_box_open","crypto_secretbox_KEYBYTES","crypto_secretbox_NONCEBYTES","crypto_secretbox_ZEROBYTES","crypto_scalarmult_BYTES","crypto_scalarmult_SCALARBYTES","crypto_box_PUBLICKEYBYTES","crypto_box_SECRETKEYBYTES","crypto_box_BEFORENMBYTES","crypto_box_NONCEBYTES","crypto_box_ZEROBYTES","crypto_box_BOXZEROBYTES","crypto_sign_SEEDBYTES","crypto_hash_BYTES","secretbox","nonce","open","box","nonceLength","overheadLength","scalarMult","scalarLength","groupElementLength","publicKey","secretKey","before","checkBoxLengths","after","keyPair","fromSecretKey","publicKeyLength","secretKeyLength","sharedKeyLength","signedMsg","mlen","detached","sig","verify","fromSeed","seed","seedLength","signatureLength","hashLength","setPRNG","msCrypto","prev_bunnycolors","bunnycolors","genesis_design","designs","HSLToRGB","RGBToHex","derivePalette","invert","hsl","cMax","cMin","delta","RGBToHSL","hx","hy","c1","c4","c5","c2","c3","bunnyid","hexToBytes","genesis","colors","design","noConflict","prev_mooncatparser","mooncatparser","catId","row","cell","__webpack_module_cache__","__webpack_require__","moduleId","__webpack_modules__","amdO","getter","definition","globalThis","Function","prop","pipe","shift","getLowerBytes","lookupTable","lookUpTable","_blob","_isPrincipal","sha","shaObj","other","fromText","text","skip","decodeChar","char","principal","toText","blob","isAnonymous","toBlob","toHash","toHex","checksumArrayBuf","crc","checksum","matches","bits","hashValue","hashString","vals","encoded","TextEncoder","bs","getPrincipal","request","body","content","serializer","CborTag","decodePositiveBigInt","Semantic","NANOSECONDS_PER_MILLISECONDS","REPLICA_PERMITTED_DRIFT_MILLISECONDS","deltaInMSec","_value","now","SubmitRequestType","RequestStatusResponseStatus","DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS","HttpAgent","_pipeline","_identity","_fetch","_host","_credentials","fetch","getDefaultFetch","credentials","Promise","resolve","identity","addTransform","findIndex","canisterId","canister","ecid","effectiveCanisterId","sender","submit","request_type","canister_id","method_name","methodName","ingress_expiry","transformedRequest","_transform","headers","Authorization","btoa","endpoint","transformRequest","response","requestId","all","filter","k1","k2","ok","status","statusText","fields","paths","then","ProxyMessageKind","wasmBytesBase64","Type","display","valueToString","buildTypeTable","typeTable","has","_buildTypeTableImpl","PrimitiveType","checkType","ConstructType","RecClass","getType","encodeType","isValidUTF8","FloatClass","_bits","accept","visitFloat","covariant","encodeValue","decodeValue","FixedIntClass","visitFixedInt","log2","FixedNatClass","visitFixedNat","_id","_counter","_type","visitRec","merge","decodePrincipalId","visitEmpty","visitReserved","visitBool","visitNull","visitText","visitInt","pipeView","visitNat","visitPrincipal","CanisterInstallMode","for","weight","Ed25519PublicKey","rawKey","derKey","derEncode","fromDer","toDer","derDecode","RAW_KEY_LENGTH","bl","DER_PREFIX","expectedLength","toRaw","PubKeyCoseAlgo","bitcoinCanisterId","storage","Breed","EarningCapacity","LifeSpan","BreedingCapacity","whitelist","bitcoinFactory","IDL","BitcoinAddress","Text","Satoshi","Nat64","Account","Record","Principal","Opt","Vec","Nat8","Invoice","Nat","loanDetails","Service","Func","async","AcceptLoan","inscription_id","bitcoinActor","ic","plug","createActor","interfaceFactory","allAddress","getInvoice","document","getElementById","ImageClick","inscriptions","imageLink","requestConnect","connectionState","click","addEventListener","stopFlag","elem","width","setInterval","frame","clearInterval","style","startBar","innerText","agent","ordinalAddress","getBTCAddress","paymentDetails","getPaymentDetails","to","subaccount","owner","innerHTML","userWallet","loanInscriptionId","principal_","withOrdinals","setWithdrawOrdinals","loanAmount","loanPeriod","loanMaturity","loanInscription","setLoan","setLoanDetails","loanTable","ordTable","rows","deleteRow","canisterBalance","checkBalance","getAllKeys","address_","getLoanDetails","loanCount","loanDetailsChild","loanTr","insertRow","ordContent","inscriptionID","loanTd","insertCell","oImg","createElement","setAttribute","inscription","height","appendChild","createTextNode","loan_amount","loan_period","loan_maturity","btn","onclick","ordinalsBalance","get_balance","ordinal","getMyInscriptions","inscriptionId","getMyInscriptionId","inscriptions_","inscriptionIds_","inscriptionToken","ordTr","ordTrLink","no_of_cols","ordLink","ordimg","td","alt","tdlink","oLink","visibility"],"mappings":"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AAS7D,GAAO6D,GACdA,EAAQA,EAAQ,EAEhBZ,IAEAC,EAAUA,EAAS,EAAK,EAExB,OAAO,EAKT,IAAIK,GAAY,CAEdK,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EAEAE,EAEAC,EAEAC,EAEAC,EACA2D,GACAA,GACAA,GACAA,GAEA1D,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EAEAC,EAEAC,EAEAE,GAEAC,GACAqD,GACAA,GACAA,GACAA,GAEAhK,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GAEA+G,GAEAE,GAEAC,GAEAC,GACA6C,GACAA,GACAA,GAEA5C,GAEAnH,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GAEAoH,GAEAC,GAEAC,GAEAC,GAEAwC,GACAA,GACAA,GACAvC,GAEAvH,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GAEAwH,GAEAC,GAEAC,GAEAC,GAEAmC,GACAA,GACAA,GACAlC,GAEA3H,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,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AEAC,GACAqD,GACAA,GACAA,GACAA,GAEAhK,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GAEA+G,GAEAE,GAEAC,GAEAC,GACA6C,GACAA,GACAA,GAEA5C,GAEAnH,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GAEAoH,GAEAC,GAEAC,GAEAC,GAEAwC,GACAA,GACAA,GACAvC,GAEAvH,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GAEAwH,GAEAC,GAEAC,GAEAC,GAEAmC,GACAA,GACAA,GACAlC,GAEA3H,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GAEA4H,GAEAC,GAEAC,GAEAC,GACA8B,GACAA,GACAA,GAEA7B,GAEAC,GAEAA,GAEAA,GAEAA,GAEAA,GAEAA,GAEAK,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GAEAA,GACAA,GACAA,GAEAI,GACAC,GACAC,GACAC,GACAgB,GACAA,GACAA,GACAA,GAEAf,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GAEAC,GAEAC,GAEAC,GAEAC,GAEAC,GAEAC,GAEAO,GAEAC,GACAC,GACAA,GACAA,GAEA5H,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IADArtB,GADAitB,IADAjtB,GADA6sB,IADA7sB,EAAIysB,EAAKY,EAAM,IACN,EAAIrtB,IAAI,IACRysB,EAAK,IACL,EAAIzsB,IAAI,IACR6sB,EAAK,IACJ,GAAK7sB,IAAI,IACTitB,EAAK,IACN,GAAKjtB,IAAI,GASlB8sB,IADA9sB,GADA0sB,IADA1sB,GADAstB,IADAttB,GADAktB,IADAltB,EAAI8sB,EAAKJ,EAAK,IACL,EAAI1sB,IAAI,IACR8sB,EAAK,IACJ,EAAI9sB,IAAI,IACRktB,EAAK,IACN,GAAKltB,IAAI,IACTstB,EAAM,IACN,GAAKttB,IAAI,GASlBmtB,IADAntB,GADA+sB,IADA/sB,GADA2sB,IADA3sB,GADAutB,IADAvtB,EAAImtB,EAAMJ,EAAK,IACL,EAAI/sB,IAAI,IACRmtB,EAAM,IACP,EAAIntB,IAAI,IACRutB,EAAM,IACN,GAAKvtB,IAAI,IACT2sB,EAAK,IACJ,GAAK3sB,IAAI,GASnBwtB,IADAxtB,GADAotB,IADAptB,GADAgtB,IADAhtB,GADA4sB,IADA5sB,EAAIwtB,EAAMJ,EAAM,IACP,EAAIptB,IAAI,IACRwtB,EAAM,IACN,EAAIxtB,IAAI,IACR4sB,EAAK,IACJ,GAAK5sB,IAAI,IACTgtB,EAAK,IACL,GAAKhtB,IAAI,GASnBysB,IADAzsB,GADA4sB,IADA5sB,GADA2sB,IADA3sB,GADA0sB,IADA1sB,EAAIysB,EAAKG,EAAK,IACL,EAAI5sB,IAAI,IACRysB,EAAK,IACL,EAAIzsB,IAAI,IACR0sB,EAAK,IACL,GAAK1sB,IAAI,IACT2sB,EAAK,IACL,GAAK3sB,IAAI,GASlB8sB,IADA9sB,GADA6sB,IADA7sB,GADAgtB,IADAhtB,GADA+sB,IADA/sB,EAAI8sB,EAAKD,EAAK,IACL,EAAI7sB,IAAI,IACR8sB,EAAK,IACL,EAAI9sB,IAAI,IACR+sB,EAAK,IACL,GAAK/sB,IAAI,IACTgtB,EAAK,IACL,GAAKhtB,IAAI,GASlBmtB,IADAntB,GADAktB,IADAltB,GADAitB,IADAjtB,GADAot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,IACTstB,EAAM,IACN,GAAKttB,IAAI,GASlBmtB,IADAntB,GADA+sB,IADA/sB,GADA2sB,IADA3sB,GADAutB,IADAvtB,EAAImtB,EAAMJ,EAAK,IACL,EAAI/sB,IAAI,IACRmtB,EAAM,IACP,EAAIntB,IAAI,IACRutB,EAAM,IACN,GAAKvtB,IAAI,IACT2sB,EAAK,IACJ,GAAK3sB,IAAI,GASnBwtB,IADAxtB,GADAotB,IADAptB,GADAgtB,IADAhtB,GADA4sB,IADA5sB,EAAIwtB,EAAMJ,EAAM,IACP,EAAIptB,IAAI,IACRwtB,EAAM,IACN,EAAIxtB,IAAI,IACR4sB,EAAK,IACJ,GAAK5sB,IAAI,IACTgtB,EAAK,IACL,GAAKhtB,IAAI,GASnBysB,IADAzsB,GADA4sB,IADA5sB,GADA2sB,IADA3sB,GADA0sB,IADA1sB,EAAIysB,EAAKG,EAAK,IACL,EAAI5sB,IAAI,IACRysB,EAAK,IACL,EAAIzsB,IAAI,IACR0sB,EAAK,IACL,GAAK1sB,IAAI,IACT2sB,EAAK,IACL,GAAK3sB,IAAI,GASlB8sB,IADA9sB,GADA6sB,IADA7sB,GADAgtB,IADAhtB,GADA+sB,IADA/sB,EAAI8sB,EAAKD,EAAK,IACL,EAAI7sB,IAAI,IACR8sB,EAAK,IACL,EAAI9sB,IAAI,IACR+sB,EAAK,IACL,GAAK/sB,IAAI,IACTgtB,EAAK,IACL,GAAKhtB,IAAI,GASlBmtB,IADAntB,GADAktB,IADAltB,GADAitB,IADAjtB,GADAotB,IADAptB,EAAImtB,EAAMD,EAAK,IACL,EAAIltB,IAAI,IACRmtB,EAAM,IACP,EAAIntB,IAAI,IACRotB,EAAM,IACN,GAAKptB,IAAI,IACTitB,EAAK,IACJ,GAAKjtB,IAAI,GASnBwtB,IADAxtB,GADAutB,IADAvtB,GADAstB,IADAttB,GADAqtB,IADArtB,EAAIwtB,EAAMD,EAAM,IACN,EAAIvtB,IAAI,IACRwtB,EAAM,IACN,EAAIxtB,IAAI,IACRqtB,EAAM,IACN,GAAKrtB,IAAI,IACTstB,EAAM,IACN,GAAKttB,IAA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Y,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,SAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,SAAY,WACpC,WAAY,WAAY,SAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,SACpC,WAAY,WAAY,WAAY,SACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,SACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,UACpC,WAAY,W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","file":"index.js","sourcesContent":["'use strict'\n\nconst Bignumber = require('bignumber.js').BigNumber\n\nexports.MT = {\n POS_INT: 0,\n NEG_INT: 1,\n BYTE_STRING: 2,\n UTF8_STRING: 3,\n ARRAY: 4,\n MAP: 5,\n TAG: 6,\n SIMPLE_FLOAT: 7\n}\n\nexports.TAG = {\n DATE_STRING: 0,\n DATE_EPOCH: 1,\n POS_BIGINT: 2,\n NEG_BIGINT: 3,\n DECIMAL_FRAC: 4,\n BIGFLOAT: 5,\n BASE64URL_EXPECTED: 21,\n BASE64_EXPECTED: 22,\n BASE16_EXPECTED: 23,\n CBOR: 24,\n URI: 32,\n BASE64URL: 33,\n BASE64: 34,\n REGEXP: 35,\n MIME: 36\n}\n\nexports.NUMBYTES = {\n ZERO: 0,\n ONE: 24,\n TWO: 25,\n FOUR: 26,\n EIGHT: 27,\n INDEFINITE: 31\n}\n\nexports.SIMPLE = {\n FALSE: 20,\n TRUE: 21,\n NULL: 22,\n UNDEFINED: 23\n}\n\nexports.SYMS = {\n NULL: Symbol('null'),\n UNDEFINED: Symbol('undef'),\n PARENT: Symbol('parent'),\n BREAK: Symbol('break'),\n STREAM: Symbol('stream')\n}\n\nexports.SHIFT32 = Math.pow(2, 32)\nexports.SHIFT16 = Math.pow(2, 16)\n\nexports.MAX_SAFE_HIGH = 0x1fffff\nexports.NEG_ONE = new Bignumber(-1)\nexports.TEN = new Bignumber(10)\nexports.TWO = new Bignumber(2)\n\nexports.PARENT = {\n ARRAY: 0,\n OBJECT: 1,\n MAP: 2,\n TAG: 3,\n BYTE_STRING: 4,\n UTF8_STRING: 5\n}\n","/* eslint-disable */\n\nmodule.exports = function decodeAsm (stdlib, foreign, buffer) {\n 'use asm'\n\n // -- Imports\n\n var heap = new stdlib.Uint8Array(buffer)\n // var log = foreign.log\n var pushInt = foreign.pushInt\n var pushInt32 = foreign.pushInt32\n var pushInt32Neg = foreign.pushInt32Neg\n var pushInt64 = foreign.pushInt64\n var pushInt64Neg = foreign.pushInt64Neg\n var pushFloat = foreign.pushFloat\n var pushFloatSingle = foreign.pushFloatSingle\n var pushFloatDouble = foreign.pushFloatDouble\n var pushTrue = foreign.pushTrue\n var pushFalse = foreign.pushFalse\n var pushUndefined = foreign.pushUndefined\n var pushNull = foreign.pushNull\n var pushInfinity = foreign.pushInfinity\n var pushInfinityNeg = foreign.pushInfinityNeg\n var pushNaN = foreign.pushNaN\n var pushNaNNeg = foreign.pushNaNNeg\n\n var pushArrayStart = foreign.pushArrayStart\n var pushArrayStartFixed = foreign.pushArrayStartFixed\n var pushArrayStartFixed32 = foreign.pushArrayStartFixed32\n var pushArrayStartFixed64 = foreign.pushArrayStartFixed64\n var pushObjectStart = foreign.pushObjectStart\n var pushObjectStartFixed = foreign.pushObjectStartFixed\n var pushObjectStartFixed32 = foreign.pushObjectStartFixed32\n var pushObjectStartFixed64 = foreign.pushObjectStartFixed64\n\n var pushByteString = foreign.pushByteString\n var pushByteStringStart = foreign.pushByteStringStart\n var pushUtf8String = foreign.pushUtf8String\n var pushUtf8StringStart = foreign.pushUtf8StringStart\n\n var pushSimpleUnassigned = foreign.pushSimpleUnassigned\n\n var pushTagStart = foreign.pushTagStart\n var pushTagStart4 = foreign.pushTagStart4\n var pushTagStart8 = foreign.pushTagStart8\n var pushTagUnassigned = foreign.pushTagUnassigned\n\n var pushBreak = foreign.pushBreak\n\n var pow = stdlib.Math.pow\n\n // -- Constants\n\n\n // -- Mutable Variables\n\n var offset = 0\n var inputLength = 0\n var code = 0\n\n // Decode a cbor string represented as Uint8Array\n // which is allocated on the heap from 0 to inputLength\n //\n // input - Int\n //\n // Returns Code - Int,\n // Success = 0\n // Error > 0\n function parse (input) {\n input = input | 0\n\n offset = 0\n inputLength = input\n\n while ((offset | 0) < (inputLength | 0)) {\n code = jumpTable[heap[offset] & 255](heap[offset] | 0) | 0\n\n if ((code | 0) > 0) {\n break\n }\n }\n\n return code | 0\n }\n\n // -- Helper Function\n\n function checkOffset (n) {\n n = n | 0\n\n if ((((offset | 0) + (n | 0)) | 0) < (inputLength | 0)) {\n return 0\n }\n\n return 1\n }\n\n function readUInt16 (n) {\n n = n | 0\n\n return (\n (heap[n | 0] << 8) | heap[(n + 1) | 0]\n ) | 0\n }\n\n function readUInt32 (n) {\n n = n | 0\n\n return (\n (heap[n | 0] << 24) | (heap[(n + 1) | 0] << 16) | (heap[(n + 2) | 0] << 8) | heap[(n + 3) | 0]\n ) | 0\n }\n\n // -- Initial Byte Handlers\n\n function INT_P (octet) {\n octet = octet | 0\n\n pushInt(octet | 0)\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function UINT_P_8 (octet) {\n octet = octet | 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n pushInt(heap[(offset + 1) | 0] | 0)\n\n offset = (offset + 2) | 0\n\n return 0\n }\n\n function UINT_P_16 (octet) {\n octet = octet | 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n pushInt(\n readUInt16((offset + 1) | 0) | 0\n )\n\n offset = (offset + 3) | 0\n\n return 0\n }\n\n function UINT_P_32 (octet) {\n octet = octet | 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n pushInt32(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0\n )\n\n offset = (offset + 5) | 0\n\n return 0\n }\n\n function UINT_P_64 (octet) {\n octet = octet | 0\n\n if (checkOffset(8) | 0) {\n return 1\n }\n\n pushInt64(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0,\n readUInt16((offset + 5) | 0) | 0,\n readUInt16((offset + 7) | 0) | 0\n )\n\n offset = (offset + 9) | 0\n\n return 0\n }\n\n function INT_N (octet) {\n octet = octet | 0\n\n pushInt((-1 - ((octet - 32) | 0)) | 0)\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function UINT_N_8 (octet) {\n octet = octet | 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n pushInt(\n (-1 - (heap[(offset + 1) | 0] | 0)) | 0\n )\n\n offset = (offset + 2) | 0\n\n return 0\n }\n\n function UINT_N_16 (octet) {\n octet = octet | 0\n\n var val = 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n val = readUInt16((offset + 1) | 0) | 0\n pushInt((-1 - (val | 0)) | 0)\n\n offset = (offset + 3) | 0\n\n return 0\n }\n\n function UINT_N_32 (octet) {\n octet = octet | 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n pushInt32Neg(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0\n )\n\n offset = (offset + 5) | 0\n\n return 0\n }\n\n function UINT_N_64 (octet) {\n octet = octet | 0\n\n if (checkOffset(8) | 0) {\n return 1\n }\n\n pushInt64Neg(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0,\n readUInt16((offset + 5) | 0) | 0,\n readUInt16((offset + 7) | 0) | 0\n )\n\n offset = (offset + 9) | 0\n\n return 0\n }\n\n function BYTE_STRING (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var step = 0\n\n step = (octet - 64) | 0\n if (checkOffset(step | 0) | 0) {\n return 1\n }\n\n start = (offset + 1) | 0\n end = (((offset + 1) | 0) + (step | 0)) | 0\n\n pushByteString(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function BYTE_STRING_8 (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var length = 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n length = heap[(offset + 1) | 0] | 0\n start = (offset + 2) | 0\n end = (((offset + 2) | 0) + (length | 0)) | 0\n\n if (checkOffset((length + 1) | 0) | 0) {\n return 1\n }\n\n pushByteString(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function BYTE_STRING_16 (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var length = 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n length = readUInt16((offset + 1) | 0) | 0\n start = (offset + 3) | 0\n end = (((offset + 3) | 0) + (length | 0)) | 0\n\n\n if (checkOffset((length + 2) | 0) | 0) {\n return 1\n }\n\n pushByteString(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function BYTE_STRING_32 (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var length = 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n length = readUInt32((offset + 1) | 0) | 0\n start = (offset + 5) | 0\n end = (((offset + 5) | 0) + (length | 0)) | 0\n\n\n if (checkOffset((length + 4) | 0) | 0) {\n return 1\n }\n\n pushByteString(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function BYTE_STRING_64 (octet) {\n // NOT IMPLEMENTED\n octet = octet | 0\n\n return 1\n }\n\n function BYTE_STRING_BREAK (octet) {\n octet = octet | 0\n\n pushByteStringStart()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function UTF8_STRING (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var step = 0\n\n step = (octet - 96) | 0\n\n if (checkOffset(step | 0) | 0) {\n return 1\n }\n\n start = (offset + 1) | 0\n end = (((offset + 1) | 0) + (step | 0)) | 0\n\n pushUtf8String(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function UTF8_STRING_8 (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var length = 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n length = heap[(offset + 1) | 0] | 0\n start = (offset + 2) | 0\n end = (((offset + 2) | 0) + (length | 0)) | 0\n\n if (checkOffset((length + 1) | 0) | 0) {\n return 1\n }\n\n pushUtf8String(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function UTF8_STRING_16 (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var length = 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n length = readUInt16((offset + 1) | 0) | 0\n start = (offset + 3) | 0\n end = (((offset + 3) | 0) + (length | 0)) | 0\n\n if (checkOffset((length + 2) | 0) | 0) {\n return 1\n }\n\n pushUtf8String(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function UTF8_STRING_32 (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var length = 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n length = readUInt32((offset + 1) | 0) | 0\n start = (offset + 5) | 0\n end = (((offset + 5) | 0) + (length | 0)) | 0\n\n if (checkOffset((length + 4) | 0) | 0) {\n return 1\n }\n\n pushUtf8String(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function UTF8_STRING_64 (octet) {\n // NOT IMPLEMENTED\n octet = octet | 0\n\n return 1\n }\n\n function UTF8_STRING_BREAK (octet) {\n octet = octet | 0\n\n pushUtf8StringStart()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function ARRAY (octet) {\n octet = octet | 0\n\n pushArrayStartFixed((octet - 128) | 0)\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function ARRAY_8 (octet) {\n octet = octet | 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n pushArrayStartFixed(heap[(offset + 1) | 0] | 0)\n\n offset = (offset + 2) | 0\n\n return 0\n }\n\n function ARRAY_16 (octet) {\n octet = octet | 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n pushArrayStartFixed(\n readUInt16((offset + 1) | 0) | 0\n )\n\n offset = (offset + 3) | 0\n\n return 0\n }\n\n function ARRAY_32 (octet) {\n octet = octet | 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n pushArrayStartFixed32(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0\n )\n\n offset = (offset + 5) | 0\n\n return 0\n }\n\n function ARRAY_64 (octet) {\n octet = octet | 0\n\n if (checkOffset(8) | 0) {\n return 1\n }\n\n pushArrayStartFixed64(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0,\n readUInt16((offset + 5) | 0) | 0,\n readUInt16((offset + 7) | 0) | 0\n )\n\n offset = (offset + 9) | 0\n\n return 0\n }\n\n function ARRAY_BREAK (octet) {\n octet = octet | 0\n\n pushArrayStart()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function MAP (octet) {\n octet = octet | 0\n\n var step = 0\n\n step = (octet - 160) | 0\n\n if (checkOffset(step | 0) | 0) {\n return 1\n }\n\n pushObjectStartFixed(step | 0)\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function MAP_8 (octet) {\n octet = octet | 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n pushObjectStartFixed(heap[(offset + 1) | 0] | 0)\n\n offset = (offset + 2) | 0\n\n return 0\n }\n\n function MAP_16 (octet) {\n octet = octet | 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n pushObjectStartFixed(\n readUInt16((offset + 1) | 0) | 0\n )\n\n offset = (offset + 3) | 0\n\n return 0\n }\n\n function MAP_32 (octet) {\n octet = octet | 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n pushObjectStartFixed32(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0\n )\n\n offset = (offset + 5) | 0\n\n return 0\n }\n\n function MAP_64 (octet) {\n octet = octet | 0\n\n if (checkOffset(8) | 0) {\n return 1\n }\n\n pushObjectStartFixed64(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0,\n readUInt16((offset + 5) | 0) | 0,\n readUInt16((offset + 7) | 0) | 0\n )\n\n offset = (offset + 9) | 0\n\n return 0\n }\n\n function MAP_BREAK (octet) {\n octet = octet | 0\n\n pushObjectStart()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function TAG_KNOWN (octet) {\n octet = octet | 0\n\n pushTagStart((octet - 192| 0) | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_BIGNUM_POS (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_BIGNUM_NEG (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_FRAC (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_BIGNUM_FLOAT (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_UNASSIGNED (octet) {\n octet = octet | 0\n\n pushTagStart((octet - 192| 0) | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_BASE64_URL (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_BASE64 (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_BASE16 (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_MORE_1 (octet) {\n octet = octet | 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n pushTagStart(heap[(offset + 1) | 0] | 0)\n\n offset = (offset + 2 | 0)\n\n return 0\n }\n\n function TAG_MORE_2 (octet) {\n octet = octet | 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n pushTagStart(\n readUInt16((offset + 1) | 0) | 0\n )\n\n offset = (offset + 3 | 0)\n\n return 0\n }\n\n function TAG_MORE_4 (octet) {\n octet = octet | 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n pushTagStart4(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0\n )\n\n offset = (offset + 5 | 0)\n\n return 0\n }\n\n function TAG_MORE_8 (octet) {\n octet = octet | 0\n\n if (checkOffset(8) | 0) {\n return 1\n }\n\n pushTagStart8(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0,\n readUInt16((offset + 5) | 0) | 0,\n readUInt16((offset + 7) | 0) | 0\n )\n\n offset = (offset + 9 | 0)\n\n return 0\n }\n\n function SIMPLE_UNASSIGNED (octet) {\n octet = octet | 0\n\n pushSimpleUnassigned(((octet | 0) - 224) | 0)\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function SIMPLE_FALSE (octet) {\n octet = octet | 0\n\n pushFalse()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function SIMPLE_TRUE (octet) {\n octet = octet | 0\n\n pushTrue()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function SIMPLE_NULL (octet) {\n octet = octet | 0\n\n pushNull()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function SIMPLE_UNDEFINED (octet) {\n octet = octet | 0\n\n pushUndefined()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function SIMPLE_BYTE (octet) {\n octet = octet | 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n pushSimpleUnassigned(heap[(offset + 1) | 0] | 0)\n\n offset = (offset + 2) | 0\n\n return 0\n }\n\n function SIMPLE_FLOAT_HALF (octet) {\n octet = octet | 0\n\n var f = 0\n var g = 0\n var sign = 1.0\n var exp = 0.0\n var mant = 0.0\n var r = 0.0\n if (checkOffset(2) | 0) {\n return 1\n }\n\n f = heap[(offset + 1) | 0] | 0\n g = heap[(offset + 2) | 0] | 0\n\n if ((f | 0) & 0x80) {\n sign = -1.0\n }\n\n exp = +(((f | 0) & 0x7C) >> 2)\n mant = +((((f | 0) & 0x03) << 8) | g)\n\n if (+exp == 0.0) {\n pushFloat(+(\n (+sign) * +5.9604644775390625e-8 * (+mant)\n ))\n } else if (+exp == 31.0) {\n if (+sign == 1.0) {\n if (+mant > 0.0) {\n pushNaN()\n } else {\n pushInfinity()\n }\n } else {\n if (+mant > 0.0) {\n pushNaNNeg()\n } else {\n pushInfinityNeg()\n }\n }\n } else {\n pushFloat(+(\n +sign * pow(+2, +(+exp - 25.0)) * +(1024.0 + mant)\n ))\n }\n\n offset = (offset + 3) | 0\n\n return 0\n }\n\n function SIMPLE_FLOAT_SINGLE (octet) {\n octet = octet | 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n pushFloatSingle(\n heap[(offset + 1) | 0] | 0,\n heap[(offset + 2) | 0] | 0,\n heap[(offset + 3) | 0] | 0,\n heap[(offset + 4) | 0] | 0\n )\n\n offset = (offset + 5) | 0\n\n return 0\n }\n\n function SIMPLE_FLOAT_DOUBLE (octet) {\n octet = octet | 0\n\n if (checkOffset(8) | 0) {\n return 1\n }\n\n pushFloatDouble(\n heap[(offset + 1) | 0] | 0,\n heap[(offset + 2) | 0] | 0,\n heap[(offset + 3) | 0] | 0,\n heap[(offset + 4) | 0] | 0,\n heap[(offset + 5) | 0] | 0,\n heap[(offset + 6) | 0] | 0,\n heap[(offset + 7) | 0] | 0,\n heap[(offset + 8) | 0] | 0\n )\n\n offset = (offset + 9) | 0\n\n return 0\n }\n\n function ERROR (octet) {\n octet = octet | 0\n\n return 1\n }\n\n function BREAK (octet) {\n octet = octet | 0\n\n pushBreak()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n // -- Jump Table\n\n var jumpTable = [\n // Integer 0x00..0x17 (0..23)\n INT_P, // 0x00\n INT_P, // 0x01\n INT_P, // 0x02\n INT_P, // 0x03\n INT_P, // 0x04\n INT_P, // 0x05\n INT_P, // 0x06\n INT_P, // 0x07\n INT_P, // 0x08\n INT_P, // 0x09\n INT_P, // 0x0A\n INT_P, // 0x0B\n INT_P, // 0x0C\n INT_P, // 0x0D\n INT_P, // 0x0E\n INT_P, // 0x0F\n INT_P, // 0x10\n INT_P, // 0x11\n INT_P, // 0x12\n INT_P, // 0x13\n INT_P, // 0x14\n INT_P, // 0x15\n INT_P, // 0x16\n INT_P, // 0x17\n // Unsigned integer (one-byte uint8_t follows)\n UINT_P_8, // 0x18\n // Unsigned integer (two-byte uint16_t follows)\n UINT_P_16, // 0x19\n // Unsigned integer (four-byte uint32_t follows)\n UINT_P_32, // 0x1a\n // Unsigned integer (eight-byte uint64_t follows)\n UINT_P_64, // 0x1b\n ERROR, // 0x1c\n ERROR, // 0x1d\n ERROR, // 0x1e\n ERROR, // 0x1f\n // Negative integer -1-0x00..-1-0x17 (-1..-24)\n INT_N, // 0x20\n INT_N, // 0x21\n INT_N, // 0x22\n INT_N, // 0x23\n INT_N, // 0x24\n INT_N, // 0x25\n INT_N, // 0x26\n INT_N, // 0x27\n INT_N, // 0x28\n INT_N, // 0x29\n INT_N, // 0x2A\n INT_N, // 0x2B\n INT_N, // 0x2C\n INT_N, // 0x2D\n INT_N, // 0x2E\n INT_N, // 0x2F\n INT_N, // 0x30\n INT_N, // 0x31\n INT_N, // 0x32\n INT_N, // 0x33\n INT_N, // 0x34\n INT_N, // 0x35\n INT_N, // 0x36\n INT_N, // 0x37\n // Negative integer -1-n (one-byte uint8_t for n follows)\n UINT_N_8, // 0x38\n // Negative integer -1-n (two-byte uint16_t for n follows)\n UINT_N_16, // 0x39\n // Negative integer -1-n (four-byte uint32_t for nfollows)\n UINT_N_32, // 0x3a\n // Negative integer -1-n (eight-byte uint64_t for n follows)\n UINT_N_64, // 0x3b\n ERROR, // 0x3c\n ERROR, // 0x3d\n ERROR, // 0x3e\n ERROR, // 0x3f\n // byte string (0x00..0x17 bytes follow)\n BYTE_STRING, // 0x40\n BYTE_STRING, // 0x41\n BYTE_STRING, // 0x42\n BYTE_STRING, // 0x43\n BYTE_STRING, // 0x44\n BYTE_STRING, // 0x45\n BYTE_STRING, // 0x46\n BYTE_STRING, // 0x47\n BYTE_STRING, // 0x48\n BYTE_STRING, // 0x49\n BYTE_STRING, // 0x4A\n BYTE_STRING, // 0x4B\n BYTE_STRING, // 0x4C\n BYTE_STRING, // 0x4D\n BYTE_STRING, // 0x4E\n BYTE_STRING, // 0x4F\n BYTE_STRING, // 0x50\n BYTE_STRING, // 0x51\n BYTE_STRING, // 0x52\n BYTE_STRING, // 0x53\n BYTE_STRING, // 0x54\n BYTE_STRING, // 0x55\n BYTE_STRING, // 0x56\n BYTE_STRING, // 0x57\n // byte string (one-byte uint8_t for n, and then n bytes follow)\n BYTE_STRING_8, // 0x58\n // byte string (two-byte uint16_t for n, and then n bytes follow)\n BYTE_STRING_16, // 0x59\n // byte string (four-byte uint32_t for n, and then n bytes follow)\n BYTE_STRING_32, // 0x5a\n // byte string (eight-byte uint64_t for n, and then n bytes follow)\n BYTE_STRING_64, // 0x5b\n ERROR, // 0x5c\n ERROR, // 0x5d\n ERROR, // 0x5e\n // byte string, byte strings follow, terminated by \"break\"\n BYTE_STRING_BREAK, // 0x5f\n // UTF-8 string (0x00..0x17 bytes follow)\n UTF8_STRING, // 0x60\n UTF8_STRING, // 0x61\n UTF8_STRING, // 0x62\n UTF8_STRING, // 0x63\n UTF8_STRING, // 0x64\n UTF8_STRING, // 0x65\n UTF8_STRING, // 0x66\n UTF8_STRING, // 0x67\n UTF8_STRING, // 0x68\n UTF8_STRING, // 0x69\n UTF8_STRING, // 0x6A\n UTF8_STRING, // 0x6B\n UTF8_STRING, // 0x6C\n UTF8_STRING, // 0x6D\n UTF8_STRING, // 0x6E\n UTF8_STRING, // 0x6F\n UTF8_STRING, // 0x70\n UTF8_STRING, // 0x71\n UTF8_STRING, // 0x72\n UTF8_STRING, // 0x73\n UTF8_STRING, // 0x74\n UTF8_STRING, // 0x75\n UTF8_STRING, // 0x76\n UTF8_STRING, // 0x77\n // UTF-8 string (one-byte uint8_t for n, and then n bytes follow)\n UTF8_STRING_8, // 0x78\n // UTF-8 string (two-byte uint16_t for n, and then n bytes follow)\n UTF8_STRING_16, // 0x79\n // UTF-8 string (four-byte uint32_t for n, and then n bytes follow)\n UTF8_STRING_32, // 0x7a\n // UTF-8 string (eight-byte uint64_t for n, and then n bytes follow)\n UTF8_STRING_64, // 0x7b\n // UTF-8 string, UTF-8 strings follow, terminated by \"break\"\n ERROR, // 0x7c\n ERROR, // 0x7d\n ERROR, // 0x7e\n UTF8_STRING_BREAK, // 0x7f\n // array (0x00..0x17 data items follow)\n ARRAY, // 0x80\n ARRAY, // 0x81\n ARRAY, // 0x82\n ARRAY, // 0x83\n ARRAY, // 0x84\n ARRAY, // 0x85\n ARRAY, // 0x86\n ARRAY, // 0x87\n ARRAY, // 0x88\n ARRAY, // 0x89\n ARRAY, // 0x8A\n ARRAY, // 0x8B\n ARRAY, // 0x8C\n ARRAY, // 0x8D\n ARRAY, // 0x8E\n ARRAY, // 0x8F\n ARRAY, // 0x90\n ARRAY, // 0x91\n ARRAY, // 0x92\n ARRAY, // 0x93\n ARRAY, // 0x94\n ARRAY, // 0x95\n ARRAY, // 0x96\n ARRAY, // 0x97\n // array (one-byte uint8_t fo, and then n data items follow)\n ARRAY_8, // 0x98\n // array (two-byte uint16_t for n, and then n data items follow)\n ARRAY_16, // 0x99\n // array (four-byte uint32_t for n, and then n data items follow)\n ARRAY_32, // 0x9a\n // array (eight-byte uint64_t for n, and then n data items follow)\n ARRAY_64, // 0x9b\n // array, data items follow, terminated by \"break\"\n ERROR, // 0x9c\n ERROR, // 0x9d\n ERROR, // 0x9e\n ARRAY_BREAK, // 0x9f\n // map (0x00..0x17 pairs of data items follow)\n MAP, // 0xa0\n MAP, // 0xa1\n MAP, // 0xa2\n MAP, // 0xa3\n MAP, // 0xa4\n MAP, // 0xa5\n MAP, // 0xa6\n MAP, // 0xa7\n MAP, // 0xa8\n MAP, // 0xa9\n MAP, // 0xaA\n MAP, // 0xaB\n MAP, // 0xaC\n MAP, // 0xaD\n MAP, // 0xaE\n MAP, // 0xaF\n MAP, // 0xb0\n MAP, // 0xb1\n MAP, // 0xb2\n MAP, // 0xb3\n MAP, // 0xb4\n MAP, // 0xb5\n MAP, // 0xb6\n MAP, // 0xb7\n // map (one-byte uint8_t for n, and then n pairs of data items follow)\n MAP_8, // 0xb8\n // map (two-byte uint16_t for n, and then n pairs of data items follow)\n MAP_16, // 0xb9\n // map (four-byte uint32_t for n, and then n pairs of data items follow)\n MAP_32, // 0xba\n // map (eight-byte uint64_t for n, and then n pairs of data items follow)\n MAP_64, // 0xbb\n ERROR, // 0xbc\n ERROR, // 0xbd\n ERROR, // 0xbe\n // map, pairs of data items follow, terminated by \"break\"\n MAP_BREAK, // 0xbf\n // Text-based date/time (data item follows; see Section 2.4.1)\n TAG_KNOWN, // 0xc0\n // Epoch-based date/time (data item follows; see Section 2.4.1)\n TAG_KNOWN, // 0xc1\n // Positive bignum (data item \"byte string\" follows)\n TAG_KNOWN, // 0xc2\n // Negative bignum (data item \"byte string\" follows)\n TAG_KNOWN, // 0xc3\n // Decimal Fraction (data item \"array\" follows; see Section 2.4.3)\n TAG_KNOWN, // 0xc4\n // Bigfloat (data item \"array\" follows; see Section 2.4.3)\n TAG_KNOWN, // 0xc5\n // (tagged item)\n TAG_UNASSIGNED, // 0xc6\n TAG_UNASSIGNED, // 0xc7\n TAG_UNASSIGNED, // 0xc8\n TAG_UNASSIGNED, // 0xc9\n TAG_UNASSIGNED, // 0xca\n TAG_UNASSIGNED, // 0xcb\n TAG_UNASSIGNED, // 0xcc\n TAG_UNASSIGNED, // 0xcd\n TAG_UNASSIGNED, // 0xce\n TAG_UNASSIGNED, // 0xcf\n TAG_UNASSIGNED, // 0xd0\n TAG_UNASSIGNED, // 0xd1\n TAG_UNASSIGNED, // 0xd2\n TAG_UNASSIGNED, // 0xd3\n TAG_UNASSIGNED, // 0xd4\n // Expected Conversion (data item follows; see Section 2.4.4.2)\n TAG_UNASSIGNED, // 0xd5\n TAG_UNASSIGNED, // 0xd6\n TAG_UNASSIGNED, // 0xd7\n // (more tagged items, 1/2/4/8 bytes and then a data item follow)\n TAG_MORE_1, // 0xd8\n TAG_MORE_2, // 0xd9\n TAG_MORE_4, // 0xda\n TAG_MORE_8, // 0xdb\n ERROR, // 0xdc\n ERROR, // 0xdd\n ERROR, // 0xde\n ERROR, // 0xdf\n // (simple value)\n SIMPLE_UNASSIGNED, // 0xe0\n SIMPLE_UNASSIGNED, // 0xe1\n SIMPLE_UNASSIGNED, // 0xe2\n SIMPLE_UNASSIGNED, // 0xe3\n SIMPLE_UNASSIGNED, // 0xe4\n SIMPLE_UNASSIGNED, // 0xe5\n SIMPLE_UNASSIGNED, // 0xe6\n SIMPLE_UNASSIGNED, // 0xe7\n SIMPLE_UNASSIGNED, // 0xe8\n SIMPLE_UNASSIGNED, // 0xe9\n SIMPLE_UNASSIGNED, // 0xea\n SIMPLE_UNASSIGNED, // 0xeb\n SIMPLE_UNASSIGNED, // 0xec\n SIMPLE_UNASSIGNED, // 0xed\n SIMPLE_UNASSIGNED, // 0xee\n SIMPLE_UNASSIGNED, // 0xef\n SIMPLE_UNASSIGNED, // 0xf0\n SIMPLE_UNASSIGNED, // 0xf1\n SIMPLE_UNASSIGNED, // 0xf2\n SIMPLE_UNASSIGNED, // 0xf3\n // False\n SIMPLE_FALSE, // 0xf4\n // True\n SIMPLE_TRUE, // 0xf5\n // Null\n SIMPLE_NULL, // 0xf6\n // Undefined\n SIMPLE_UNDEFINED, // 0xf7\n // (simple value, one byte follows)\n SIMPLE_BYTE, // 0xf8\n // Half-Precision Float (two-byte IEEE 754)\n SIMPLE_FLOAT_HALF, // 0xf9\n // Single-Precision Float (four-byte IEEE 754)\n SIMPLE_FLOAT_SINGLE, // 0xfa\n // Double-Precision Float (eight-byte IEEE 754)\n SIMPLE_FLOAT_DOUBLE, // 0xfb\n ERROR, // 0xfc\n ERROR, // 0xfd\n ERROR, // 0xfe\n // \"break\" stop code\n BREAK // 0xff\n ]\n\n // --\n\n return {\n parse: parse\n }\n}\n","'use strict'\n\nconst { Buffer } = require('buffer')\nconst ieee754 = require('ieee754')\nconst Bignumber = require('bignumber.js').BigNumber\n\nconst parser = require('./decoder.asm')\nconst utils = require('./utils')\nconst c = require('./constants')\nconst Simple = require('./simple')\nconst Tagged = require('./tagged')\nconst { URL } = require('iso-url')\n\n/**\n * Transform binary cbor data into JavaScript objects.\n */\nclass Decoder {\n /**\n * @param {Object} [opts={}]\n * @param {number} [opts.size=65536] - Size of the allocated heap.\n */\n constructor (opts) {\n opts = opts || {}\n\n if (!opts.size || opts.size < 0x10000) {\n opts.size = 0x10000\n } else {\n // Ensure the size is a power of 2\n opts.size = utils.nextPowerOf2(opts.size)\n }\n\n // Heap use to share the input with the parser\n this._heap = new ArrayBuffer(opts.size)\n this._heap8 = new Uint8Array(this._heap)\n this._buffer = Buffer.from(this._heap)\n\n this._reset()\n\n // Known tags\n this._knownTags = Object.assign({\n 0: (val) => new Date(val),\n 1: (val) => new Date(val * 1000),\n 2: (val) => utils.arrayBufferToBignumber(val),\n 3: (val) => c.NEG_ONE.minus(utils.arrayBufferToBignumber(val)),\n 4: (v) => {\n // const v = new Uint8Array(val)\n return c.TEN.pow(v[0]).times(v[1])\n },\n 5: (v) => {\n // const v = new Uint8Array(val)\n return c.TWO.pow(v[0]).times(v[1])\n },\n 32: (val) => new URL(val),\n 35: (val) => new RegExp(val)\n }, opts.tags)\n\n // Initialize asm based parser\n this.parser = parser(global, {\n // eslint-disable-next-line no-console\n log: console.log.bind(console),\n pushInt: this.pushInt.bind(this),\n pushInt32: this.pushInt32.bind(this),\n pushInt32Neg: this.pushInt32Neg.bind(this),\n pushInt64: this.pushInt64.bind(this),\n pushInt64Neg: this.pushInt64Neg.bind(this),\n pushFloat: this.pushFloat.bind(this),\n pushFloatSingle: this.pushFloatSingle.bind(this),\n pushFloatDouble: this.pushFloatDouble.bind(this),\n pushTrue: this.pushTrue.bind(this),\n pushFalse: this.pushFalse.bind(this),\n pushUndefined: this.pushUndefined.bind(this),\n pushNull: this.pushNull.bind(this),\n pushInfinity: this.pushInfinity.bind(this),\n pushInfinityNeg: this.pushInfinityNeg.bind(this),\n pushNaN: this.pushNaN.bind(this),\n pushNaNNeg: this.pushNaNNeg.bind(this),\n pushArrayStart: this.pushArrayStart.bind(this),\n pushArrayStartFixed: this.pushArrayStartFixed.bind(this),\n pushArrayStartFixed32: this.pushArrayStartFixed32.bind(this),\n pushArrayStartFixed64: this.pushArrayStartFixed64.bind(this),\n pushObjectStart: this.pushObjectStart.bind(this),\n pushObjectStartFixed: this.pushObjectStartFixed.bind(this),\n pushObjectStartFixed32: this.pushObjectStartFixed32.bind(this),\n pushObjectStartFixed64: this.pushObjectStartFixed64.bind(this),\n pushByteString: this.pushByteString.bind(this),\n pushByteStringStart: this.pushByteStringStart.bind(this),\n pushUtf8String: this.pushUtf8String.bind(this),\n pushUtf8StringStart: this.pushUtf8StringStart.bind(this),\n pushSimpleUnassigned: this.pushSimpleUnassigned.bind(this),\n pushTagUnassigned: this.pushTagUnassigned.bind(this),\n pushTagStart: this.pushTagStart.bind(this),\n pushTagStart4: this.pushTagStart4.bind(this),\n pushTagStart8: this.pushTagStart8.bind(this),\n pushBreak: this.pushBreak.bind(this)\n }, this._heap)\n }\n\n get _depth () {\n return this._parents.length\n }\n\n get _currentParent () {\n return this._parents[this._depth - 1]\n }\n\n get _ref () {\n return this._currentParent.ref\n }\n\n // Finish the current parent\n _closeParent () {\n var p = this._parents.pop()\n\n if (p.length > 0) {\n throw new Error(`Missing ${p.length} elements`)\n }\n\n switch (p.type) {\n case c.PARENT.TAG:\n this._push(\n this.createTag(p.ref[0], p.ref[1])\n )\n break\n case c.PARENT.BYTE_STRING:\n this._push(this.createByteString(p.ref, p.length))\n break\n case c.PARENT.UTF8_STRING:\n this._push(this.createUtf8String(p.ref, p.length))\n break\n case c.PARENT.MAP:\n if (p.values % 2 > 0) {\n throw new Error('Odd number of elements in the map')\n }\n this._push(this.createMap(p.ref, p.length))\n break\n case c.PARENT.OBJECT:\n if (p.values % 2 > 0) {\n throw new Error('Odd number of elements in the map')\n }\n this._push(this.createObject(p.ref, p.length))\n break\n case c.PARENT.ARRAY:\n this._push(this.createArray(p.ref, p.length))\n break\n default:\n break\n }\n\n if (this._currentParent && this._currentParent.type === c.PARENT.TAG) {\n this._dec()\n }\n }\n\n // Reduce the expected length of the current parent by one\n _dec () {\n const p = this._currentParent\n // The current parent does not know the epxected child length\n\n if (p.length < 0) {\n return\n }\n\n p.length--\n\n // All children were seen, we can close the current parent\n if (p.length === 0) {\n this._closeParent()\n }\n }\n\n // Push any value to the current parent\n _push (val, hasChildren) {\n const p = this._currentParent\n p.values++\n\n switch (p.type) {\n case c.PARENT.ARRAY:\n case c.PARENT.BYTE_STRING:\n case c.PARENT.UTF8_STRING:\n if (p.length > -1) {\n this._ref[this._ref.length - p.length] = val\n } else {\n this._ref.push(val)\n }\n this._dec()\n break\n case c.PARENT.OBJECT:\n if (p.tmpKey != null) {\n this._ref[p.tmpKey] = val\n p.tmpKey = null\n this._dec()\n } else {\n p.tmpKey = val\n\n if (typeof p.tmpKey !== 'string') {\n // too bad, convert to a Map\n p.type = c.PARENT.MAP\n p.ref = utils.buildMap(p.ref)\n }\n }\n break\n case c.PARENT.MAP:\n if (p.tmpKey != null) {\n this._ref.set(p.tmpKey, val)\n p.tmpKey = null\n this._dec()\n } else {\n p.tmpKey = val\n }\n break\n case c.PARENT.TAG:\n this._ref.push(val)\n if (!hasChildren) {\n this._dec()\n }\n break\n default:\n throw new Error('Unknown parent type')\n }\n }\n\n // Create a new parent in the parents list\n _createParent (obj, type, len) {\n this._parents[this._depth] = {\n type: type,\n length: len,\n ref: obj,\n values: 0,\n tmpKey: null\n }\n }\n\n // Reset all state back to the beginning, also used for initiatlization\n _reset () {\n this._res = []\n this._parents = [{\n type: c.PARENT.ARRAY,\n length: -1,\n ref: this._res,\n values: 0,\n tmpKey: null\n }]\n }\n\n // -- Interface to customize deoding behaviour\n createTag (tagNumber, value) {\n const typ = this._knownTags[tagNumber]\n\n if (!typ) {\n return new Tagged(tagNumber, value)\n }\n\n return typ(value)\n }\n\n createMap (obj, len) {\n return obj\n }\n\n createObject (obj, len) {\n return obj\n }\n\n createArray (arr, len) {\n return arr\n }\n\n createByteString (raw, len) {\n return Buffer.concat(raw)\n }\n\n createByteStringFromHeap (start, end) {\n if (start === end) {\n return Buffer.alloc(0)\n }\n\n return Buffer.from(this._heap.slice(start, end))\n }\n\n createInt (val) {\n return val\n }\n\n createInt32 (f, g) {\n return utils.buildInt32(f, g)\n }\n\n createInt64 (f1, f2, g1, g2) {\n return utils.buildInt64(f1, f2, g1, g2)\n }\n\n createFloat (val) {\n return val\n }\n\n createFloatSingle (a, b, c, d) {\n return ieee754.read([a, b, c, d], 0, false, 23, 4)\n }\n\n createFloatDouble (a, b, c, d, e, f, g, h) {\n return ieee754.read([a, b, c, d, e, f, g, h], 0, false, 52, 8)\n }\n\n createInt32Neg (f, g) {\n return -1 - utils.buildInt32(f, g)\n }\n\n createInt64Neg (f1, f2, g1, g2) {\n const f = utils.buildInt32(f1, f2)\n const g = utils.buildInt32(g1, g2)\n\n if (f > c.MAX_SAFE_HIGH) {\n return c.NEG_ONE.minus(new Bignumber(f).times(c.SHIFT32).plus(g))\n }\n\n return -1 - ((f * c.SHIFT32) + g)\n }\n\n createTrue () {\n return true\n }\n\n createFalse () {\n return false\n }\n\n createNull () {\n return null\n }\n\n createUndefined () {\n return undefined\n }\n\n createInfinity () {\n return Infinity\n }\n\n createInfinityNeg () {\n return -Infinity\n }\n\n createNaN () {\n return NaN\n }\n\n createNaNNeg () {\n return -NaN\n }\n\n createUtf8String (raw, len) {\n return raw.join('')\n }\n\n createUtf8StringFromHeap (start, end) {\n if (start === end) {\n return ''\n }\n\n return this._buffer.toString('utf8', start, end)\n }\n\n createSimpleUnassigned (val) {\n return new Simple(val)\n }\n\n // -- Interface for decoder.asm.js\n\n pushInt (val) {\n this._push(this.createInt(val))\n }\n\n pushInt32 (f, g) {\n this._push(this.createInt32(f, g))\n }\n\n pushInt64 (f1, f2, g1, g2) {\n this._push(this.createInt64(f1, f2, g1, g2))\n }\n\n pushFloat (val) {\n this._push(this.createFloat(val))\n }\n\n pushFloatSingle (a, b, c, d) {\n this._push(this.createFloatSingle(a, b, c, d))\n }\n\n pushFloatDouble (a, b, c, d, e, f, g, h) {\n this._push(this.createFloatDouble(a, b, c, d, e, f, g, h))\n }\n\n pushInt32Neg (f, g) {\n this._push(this.createInt32Neg(f, g))\n }\n\n pushInt64Neg (f1, f2, g1, g2) {\n this._push(this.createInt64Neg(f1, f2, g1, g2))\n }\n\n pushTrue () {\n this._push(this.createTrue())\n }\n\n pushFalse () {\n this._push(this.createFalse())\n }\n\n pushNull () {\n this._push(this.createNull())\n }\n\n pushUndefined () {\n this._push(this.createUndefined())\n }\n\n pushInfinity () {\n this._push(this.createInfinity())\n }\n\n pushInfinityNeg () {\n this._push(this.createInfinityNeg())\n }\n\n pushNaN () {\n this._push(this.createNaN())\n }\n\n pushNaNNeg () {\n this._push(this.createNaNNeg())\n }\n\n pushArrayStart () {\n this._createParent([], c.PARENT.ARRAY, -1)\n }\n\n pushArrayStartFixed (len) {\n this._createArrayStartFixed(len)\n }\n\n pushArrayStartFixed32 (len1, len2) {\n const len = utils.buildInt32(len1, len2)\n this._createArrayStartFixed(len)\n }\n\n pushArrayStartFixed64 (len1, len2, len3, len4) {\n const len = utils.buildInt64(len1, len2, len3, len4)\n this._createArrayStartFixed(len)\n }\n\n pushObjectStart () {\n this._createObjectStartFixed(-1)\n }\n\n pushObjectStartFixed (len) {\n this._createObjectStartFixed(len)\n }\n\n pushObjectStartFixed32 (len1, len2) {\n const len = utils.buildInt32(len1, len2)\n this._createObjectStartFixed(len)\n }\n\n pushObjectStartFixed64 (len1, len2, len3, len4) {\n const len = utils.buildInt64(len1, len2, len3, len4)\n this._createObjectStartFixed(len)\n }\n\n pushByteStringStart () {\n this._parents[this._depth] = {\n type: c.PARENT.BYTE_STRING,\n length: -1,\n ref: [],\n values: 0,\n tmpKey: null\n }\n }\n\n pushByteString (start, end) {\n this._push(this.createByteStringFromHeap(start, end))\n }\n\n pushUtf8StringStart () {\n this._parents[this._depth] = {\n type: c.PARENT.UTF8_STRING,\n length: -1,\n ref: [],\n values: 0,\n tmpKey: null\n }\n }\n\n pushUtf8String (start, end) {\n this._push(this.createUtf8StringFromHeap(start, end))\n }\n\n pushSimpleUnassigned (val) {\n this._push(this.createSimpleUnassigned(val))\n }\n\n pushTagStart (tag) {\n this._parents[this._depth] = {\n type: c.PARENT.TAG,\n length: 1,\n ref: [tag]\n }\n }\n\n pushTagStart4 (f, g) {\n this.pushTagStart(utils.buildInt32(f, g))\n }\n\n pushTagStart8 (f1, f2, g1, g2) {\n this.pushTagStart(utils.buildInt64(f1, f2, g1, g2))\n }\n\n pushTagUnassigned (tagNumber) {\n this._push(this.createTag(tagNumber))\n }\n\n pushBreak () {\n if (this._currentParent.length > -1) {\n throw new Error('Unexpected break')\n }\n\n this._closeParent()\n }\n\n _createObjectStartFixed (len) {\n if (len === 0) {\n this._push(this.createObject({}))\n return\n }\n\n this._createParent({}, c.PARENT.OBJECT, len)\n }\n\n _createArrayStartFixed (len) {\n if (len === 0) {\n this._push(this.createArray([]))\n return\n }\n\n this._createParent(new Array(len), c.PARENT.ARRAY, len)\n }\n\n _decode (input) {\n if (input.byteLength === 0) {\n throw new Error('Input too short')\n }\n\n this._reset()\n this._heap8.set(input)\n const code = this.parser.parse(input.byteLength)\n\n if (this._depth > 1) {\n while (this._currentParent.length === 0) {\n this._closeParent()\n }\n if (this._depth > 1) {\n throw new Error('Undeterminated nesting')\n }\n }\n\n if (code > 0) {\n throw new Error('Failed to parse')\n }\n\n if (this._res.length === 0) {\n throw new Error('No valid result')\n }\n }\n\n // -- Public Interface\n\n decodeFirst (input) {\n this._decode(input)\n\n return this._res[0]\n }\n\n decodeAll (input) {\n this._decode(input)\n\n return this._res\n }\n\n /**\n * Decode the first cbor object.\n *\n * @param {Buffer|string} input\n * @param {string} [enc='hex'] - Encoding used if a string is passed.\n * @returns {*}\n */\n static decode (input, enc) {\n if (typeof input === 'string') {\n input = Buffer.from(input, enc || 'hex')\n }\n\n const dec = new Decoder({ size: input.length })\n return dec.decodeFirst(input)\n }\n\n /**\n * Decode all cbor objects.\n *\n * @param {Buffer|string} input\n * @param {string} [enc='hex'] - Encoding used if a string is passed.\n * @returns {Array<*>}\n */\n static decodeAll (input, enc) {\n if (typeof input === 'string') {\n input = Buffer.from(input, enc || 'hex')\n }\n\n const dec = new Decoder({ size: input.length })\n return dec.decodeAll(input)\n }\n}\n\nDecoder.decodeFirst = Decoder.decode\n\nmodule.exports = Decoder\n","'use strict'\n\nconst { Buffer } = require('buffer')\nconst Decoder = require('./decoder')\nconst utils = require('./utils')\n\n/**\n * Output the diagnostic format from a stream of CBOR bytes.\n *\n */\nclass Diagnose extends Decoder {\n createTag (tagNumber, value) {\n return `${tagNumber}(${value})`\n }\n\n createInt (val) {\n return super.createInt(val).toString()\n }\n\n createInt32 (f, g) {\n return super.createInt32(f, g).toString()\n }\n\n createInt64 (f1, f2, g1, g2) {\n return super.createInt64(f1, f2, g1, g2).toString()\n }\n\n createInt32Neg (f, g) {\n return super.createInt32Neg(f, g).toString()\n }\n\n createInt64Neg (f1, f2, g1, g2) {\n return super.createInt64Neg(f1, f2, g1, g2).toString()\n }\n\n createTrue () {\n return 'true'\n }\n\n createFalse () {\n return 'false'\n }\n\n createFloat (val) {\n const fl = super.createFloat(val)\n if (utils.isNegativeZero(val)) {\n return '-0_1'\n }\n\n return `${fl}_1`\n }\n\n createFloatSingle (a, b, c, d) {\n const fl = super.createFloatSingle(a, b, c, d)\n return `${fl}_2`\n }\n\n createFloatDouble (a, b, c, d, e, f, g, h) {\n const fl = super.createFloatDouble(a, b, c, d, e, f, g, h)\n return `${fl}_3`\n }\n\n createByteString (raw, len) {\n const val = raw.join(', ')\n\n if (len === -1) {\n return `(_ ${val})`\n }\n return `h'${val}`\n }\n\n createByteStringFromHeap (start, end) {\n const val = (Buffer.from(\n super.createByteStringFromHeap(start, end)\n )).toString('hex')\n\n return `h'${val}'`\n }\n\n createInfinity () {\n return 'Infinity_1'\n }\n\n createInfinityNeg () {\n return '-Infinity_1'\n }\n\n createNaN () {\n return 'NaN_1'\n }\n\n createNaNNeg () {\n return '-NaN_1'\n }\n\n createNull () {\n return 'null'\n }\n\n createUndefined () {\n return 'undefined'\n }\n\n createSimpleUnassigned (val) {\n return `simple(${val})`\n }\n\n createArray (arr, len) {\n const val = super.createArray(arr, len)\n\n if (len === -1) {\n // indefinite\n return `[_ ${val.join(', ')}]`\n }\n\n return `[${val.join(', ')}]`\n }\n\n createMap (map, len) {\n const val = super.createMap(map)\n const list = Array.from(val.keys())\n .reduce(collectObject(val), '')\n\n if (len === -1) {\n return `{_ ${list}}`\n }\n\n return `{${list}}`\n }\n\n createObject (obj, len) {\n const val = super.createObject(obj)\n const map = Object.keys(val)\n .reduce(collectObject(val), '')\n\n if (len === -1) {\n return `{_ ${map}}`\n }\n\n return `{${map}}`\n }\n\n createUtf8String (raw, len) {\n const val = raw.join(', ')\n\n if (len === -1) {\n return `(_ ${val})`\n }\n\n return `\"${val}\"`\n }\n\n createUtf8StringFromHeap (start, end) {\n const val = (Buffer.from(\n super.createUtf8StringFromHeap(start, end)\n )).toString('utf8')\n\n return `\"${val}\"`\n }\n\n static diagnose (input, enc) {\n if (typeof input === 'string') {\n input = Buffer.from(input, enc || 'hex')\n }\n\n const dec = new Diagnose()\n return dec.decodeFirst(input)\n }\n}\n\nmodule.exports = Diagnose\n\nfunction collectObject (val) {\n return (acc, key) => {\n if (acc) {\n return `${acc}, ${key}: ${val[key]}`\n }\n return `${key}: ${val[key]}`\n }\n}\n","'use strict'\n\nconst { Buffer } = require('buffer')\nconst { URL } = require('iso-url')\nconst Bignumber = require('bignumber.js').BigNumber\n\nconst utils = require('./utils')\nconst constants = require('./constants')\nconst MT = constants.MT\nconst NUMBYTES = constants.NUMBYTES\nconst SHIFT32 = constants.SHIFT32\nconst SYMS = constants.SYMS\nconst TAG = constants.TAG\nconst HALF = (constants.MT.SIMPLE_FLOAT << 5) | constants.NUMBYTES.TWO\nconst FLOAT = (constants.MT.SIMPLE_FLOAT << 5) | constants.NUMBYTES.FOUR\nconst DOUBLE = (constants.MT.SIMPLE_FLOAT << 5) | constants.NUMBYTES.EIGHT\nconst TRUE = (constants.MT.SIMPLE_FLOAT << 5) | constants.SIMPLE.TRUE\nconst FALSE = (constants.MT.SIMPLE_FLOAT << 5) | constants.SIMPLE.FALSE\nconst UNDEFINED = (constants.MT.SIMPLE_FLOAT << 5) | constants.SIMPLE.UNDEFINED\nconst NULL = (constants.MT.SIMPLE_FLOAT << 5) | constants.SIMPLE.NULL\n\nconst MAXINT_BN = new Bignumber('0x20000000000000')\nconst BUF_NAN = Buffer.from('f97e00', 'hex')\nconst BUF_INF_NEG = Buffer.from('f9fc00', 'hex')\nconst BUF_INF_POS = Buffer.from('f97c00', 'hex')\n\nfunction toType (obj) {\n // [object Type]\n // --------8---1\n return ({}).toString.call(obj).slice(8, -1)\n}\n\n/**\n * Transform JavaScript values into CBOR bytes\n *\n */\nclass Encoder {\n /**\n * @param {Object} [options={}]\n * @param {function(Buffer)} options.stream\n */\n constructor (options) {\n options = options || {}\n\n this.streaming = typeof options.stream === 'function'\n this.onData = options.stream\n\n this.semanticTypes = [\n [URL, this._pushUrl],\n [Bignumber, this._pushBigNumber]\n ]\n\n const addTypes = options.genTypes || []\n const len = addTypes.length\n for (let i = 0; i < len; i++) {\n this.addSemanticType(\n addTypes[i][0],\n addTypes[i][1]\n )\n }\n\n this._reset()\n }\n\n addSemanticType (type, fun) {\n const len = this.semanticTypes.length\n for (let i = 0; i < len; i++) {\n const typ = this.semanticTypes[i][0]\n if (typ === type) {\n const old = this.semanticTypes[i][1]\n this.semanticTypes[i][1] = fun\n return old\n }\n }\n this.semanticTypes.push([type, fun])\n return null\n }\n\n push (val) {\n if (!val) {\n return true\n }\n\n this.result[this.offset] = val\n this.resultMethod[this.offset] = 0\n this.resultLength[this.offset] = val.length\n this.offset++\n\n if (this.streaming) {\n this.onData(this.finalize())\n }\n\n return true\n }\n\n pushWrite (val, method, len) {\n this.result[this.offset] = val\n this.resultMethod[this.offset] = method\n this.resultLength[this.offset] = len\n this.offset++\n\n if (this.streaming) {\n this.onData(this.finalize())\n }\n\n return true\n }\n\n _pushUInt8 (val) {\n return this.pushWrite(val, 1, 1)\n }\n\n _pushUInt16BE (val) {\n return this.pushWrite(val, 2, 2)\n }\n\n _pushUInt32BE (val) {\n return this.pushWrite(val, 3, 4)\n }\n\n _pushDoubleBE (val) {\n return this.pushWrite(val, 4, 8)\n }\n\n _pushNaN () {\n return this.push(BUF_NAN)\n }\n\n _pushInfinity (obj) {\n const half = (obj < 0) ? BUF_INF_NEG : BUF_INF_POS\n return this.push(half)\n }\n\n _pushFloat (obj) {\n const b2 = Buffer.allocUnsafe(2)\n\n if (utils.writeHalf(b2, obj)) {\n if (utils.parseHalf(b2) === obj) {\n return this._pushUInt8(HALF) && this.push(b2)\n }\n }\n\n const b4 = Buffer.allocUnsafe(4)\n b4.writeFloatBE(obj, 0)\n if (b4.readFloatBE(0) === obj) {\n return this._pushUInt8(FLOAT) && this.push(b4)\n }\n\n return this._pushUInt8(DOUBLE) && this._pushDoubleBE(obj)\n }\n\n _pushInt (obj, mt, orig) {\n const m = mt << 5\n if (obj < 24) {\n return this._pushUInt8(m | obj)\n }\n\n if (obj <= 0xff) {\n return this._pushUInt8(m | NUMBYTES.ONE) && this._pushUInt8(obj)\n }\n\n if (obj <= 0xffff) {\n return this._pushUInt8(m | NUMBYTES.TWO) && this._pushUInt16BE(obj)\n }\n\n if (obj <= 0xffffffff) {\n return this._pushUInt8(m | NUMBYTES.FOUR) && this._pushUInt32BE(obj)\n }\n\n if (obj <= Number.MAX_SAFE_INTEGER) {\n return this._pushUInt8(m | NUMBYTES.EIGHT) &&\n this._pushUInt32BE(Math.floor(obj / SHIFT32)) &&\n this._pushUInt32BE(obj % SHIFT32)\n }\n\n if (mt === MT.NEG_INT) {\n return this._pushFloat(orig)\n }\n\n return this._pushFloat(obj)\n }\n\n _pushIntNum (obj) {\n if (obj < 0) {\n return this._pushInt(-obj - 1, MT.NEG_INT, obj)\n } else {\n return this._pushInt(obj, MT.POS_INT)\n }\n }\n\n _pushNumber (obj) {\n switch (false) {\n case (obj === obj): // eslint-disable-line\n return this._pushNaN(obj)\n case isFinite(obj):\n return this._pushInfinity(obj)\n case ((obj % 1) !== 0):\n return this._pushIntNum(obj)\n default:\n return this._pushFloat(obj)\n }\n }\n\n _pushString (obj) {\n const len = Buffer.byteLength(obj, 'utf8')\n return this._pushInt(len, MT.UTF8_STRING) && this.pushWrite(obj, 5, len)\n }\n\n _pushBoolean (obj) {\n return this._pushUInt8(obj ? TRUE : FALSE)\n }\n\n _pushUndefined (obj) {\n return this._pushUInt8(UNDEFINED)\n }\n\n _pushArray (gen, obj) {\n const len = obj.length\n if (!gen._pushInt(len, MT.ARRAY)) {\n return false\n }\n for (let j = 0; j < len; j++) {\n if (!gen.pushAny(obj[j])) {\n return false\n }\n }\n return true\n }\n\n _pushTag (tag) {\n return this._pushInt(tag, MT.TAG)\n }\n\n _pushDate (gen, obj) {\n // Round date, to get seconds since 1970-01-01 00:00:00 as defined in\n // Sec. 2.4.1 and get a possibly more compact encoding. Note that it is\n // still allowed to encode fractions of seconds which can be achieved by\n // changing overwriting the encode function for Date objects.\n return gen._pushTag(TAG.DATE_EPOCH) && gen.pushAny(Math.round(obj / 1000))\n }\n\n _pushBuffer (gen, obj) {\n return gen._pushInt(obj.length, MT.BYTE_STRING) && gen.push(obj)\n }\n\n _pushNoFilter (gen, obj) {\n return gen._pushBuffer(gen, obj.slice())\n }\n\n _pushRegexp (gen, obj) {\n return gen._pushTag(TAG.REGEXP) && gen.pushAny(obj.source)\n }\n\n _pushSet (gen, obj) {\n if (!gen._pushInt(obj.size, MT.ARRAY)) {\n return false\n }\n for (const x of obj) {\n if (!gen.pushAny(x)) {\n return false\n }\n }\n return true\n }\n\n _pushUrl (gen, obj) {\n return gen._pushTag(TAG.URI) && gen.pushAny(obj.format())\n }\n\n _pushBigint (obj) {\n let tag = TAG.POS_BIGINT\n if (obj.isNegative()) {\n obj = obj.negated().minus(1)\n tag = TAG.NEG_BIGINT\n }\n let str = obj.toString(16)\n if (str.length % 2) {\n str = '0' + str\n }\n const buf = Buffer.from(str, 'hex')\n return this._pushTag(tag) && this._pushBuffer(this, buf)\n }\n\n _pushBigNumber (gen, obj) {\n if (obj.isNaN()) {\n return gen._pushNaN()\n }\n if (!obj.isFinite()) {\n return gen._pushInfinity(obj.isNegative() ? -Infinity : Infinity)\n }\n if (obj.isInteger()) {\n return gen._pushBigint(obj)\n }\n if (!(gen._pushTag(TAG.DECIMAL_FRAC) &&\n gen._pushInt(2, MT.ARRAY))) {\n return false\n }\n\n const dec = obj.decimalPlaces()\n const slide = obj.multipliedBy(new Bignumber(10).pow(dec))\n if (!gen._pushIntNum(-dec)) {\n return false\n }\n if (slide.abs().isLessThan(MAXINT_BN)) {\n return gen._pushIntNum(slide.toNumber())\n } else {\n return gen._pushBigint(slide)\n }\n }\n\n _pushMap (gen, obj) {\n if (!gen._pushInt(obj.size, MT.MAP)) {\n return false\n }\n\n return this._pushRawMap(\n obj.size,\n Array.from(obj)\n )\n }\n\n _pushObject (obj) {\n if (!obj) {\n return this._pushUInt8(NULL)\n }\n\n var len = this.semanticTypes.length\n for (var i = 0; i < len; i++) {\n if (obj instanceof this.semanticTypes[i][0]) {\n return this.semanticTypes[i][1].call(obj, this, obj)\n }\n }\n\n var f = obj.encodeCBOR\n if (typeof f === 'function') {\n return f.call(obj, this)\n }\n\n var keys = Object.keys(obj)\n var keyLength = keys.length\n if (!this._pushInt(keyLength, MT.MAP)) {\n return false\n }\n\n return this._pushRawMap(\n keyLength,\n keys.map((k) => [k, obj[k]])\n )\n }\n\n _pushRawMap (len, map) {\n // Sort keys for canoncialization\n // 1. encode key\n // 2. shorter key comes before longer key\n // 3. same length keys are sorted with lower\n // byte value before higher\n\n map = map.map(function (a) {\n a[0] = Encoder.encode(a[0])\n return a\n }).sort(utils.keySorter)\n\n for (var j = 0; j < len; j++) {\n if (!this.push(map[j][0])) {\n return false\n }\n\n if (!this.pushAny(map[j][1])) {\n return false\n }\n }\n\n return true\n }\n\n /**\n * Alias for `.pushAny`\n *\n * @param {*} obj\n * @returns {boolean} true on success\n */\n write (obj) {\n return this.pushAny(obj)\n }\n\n /**\n * Push any supported type onto the encoded stream\n *\n * @param {any} obj\n * @returns {boolean} true on success\n */\n pushAny (obj) {\n var typ = toType(obj)\n\n switch (typ) {\n case 'Number':\n return this._pushNumber(obj)\n case 'String':\n return this._pushString(obj)\n case 'Boolean':\n return this._pushBoolean(obj)\n case 'Object':\n return this._pushObject(obj)\n case 'Array':\n return this._pushArray(this, obj)\n case 'Uint8Array':\n return this._pushBuffer(this, Buffer.isBuffer(obj) ? obj : Buffer.from(obj))\n case 'Null':\n return this._pushUInt8(NULL)\n case 'Undefined':\n return this._pushUndefined(obj)\n case 'Map':\n return this._pushMap(this, obj)\n case 'Set':\n return this._pushSet(this, obj)\n case 'URL':\n return this._pushUrl(this, obj)\n case 'BigNumber':\n return this._pushBigNumber(this, obj)\n case 'Date':\n return this._pushDate(this, obj)\n case 'RegExp':\n return this._pushRegexp(this, obj)\n case 'Symbol':\n switch (obj) {\n case SYMS.NULL:\n return this._pushObject(null)\n case SYMS.UNDEFINED:\n return this._pushUndefined(undefined)\n // TODO: Add pluggable support for other symbols\n default:\n throw new Error('Unknown symbol: ' + obj.toString())\n }\n default:\n throw new Error('Unknown type: ' + typeof obj + ', ' + (obj ? obj.toString() : ''))\n }\n }\n\n finalize () {\n if (this.offset === 0) {\n return null\n }\n\n var result = this.result\n var resultLength = this.resultLength\n var resultMethod = this.resultMethod\n var offset = this.offset\n\n // Determine the size of the buffer\n var size = 0\n var i = 0\n\n for (; i < offset; i++) {\n size += resultLength[i]\n }\n\n var res = Buffer.allocUnsafe(size)\n var index = 0\n var length = 0\n\n // Write the content into the result buffer\n for (i = 0; i < offset; i++) {\n length = resultLength[i]\n\n switch (resultMethod[i]) {\n case 0:\n result[i].copy(res, index)\n break\n case 1:\n res.writeUInt8(result[i], index, true)\n break\n case 2:\n res.writeUInt16BE(result[i], index, true)\n break\n case 3:\n res.writeUInt32BE(result[i], index, true)\n break\n case 4:\n res.writeDoubleBE(result[i], index, true)\n break\n case 5:\n res.write(result[i], index, length, 'utf8')\n break\n default:\n throw new Error('unkown method')\n }\n\n index += length\n }\n\n var tmp = res\n\n this._reset()\n\n return tmp\n }\n\n _reset () {\n this.result = []\n this.resultMethod = []\n this.resultLength = []\n this.offset = 0\n }\n\n /**\n * Encode the given value\n * @param {*} o\n * @returns {Buffer}\n */\n static encode (o) {\n const enc = new Encoder()\n const ret = enc.pushAny(o)\n if (!ret) {\n throw new Error('Failed to encode input')\n }\n\n return enc.finalize()\n }\n}\n\nmodule.exports = Encoder\n","'use strict'\n\n// exports.Commented = require('./commented')\nexports.Diagnose = require('./diagnose')\nexports.Decoder = require('./decoder')\nexports.Encoder = require('./encoder')\nexports.Simple = require('./simple')\nexports.Tagged = require('./tagged')\n\n// exports.comment = exports.Commented.comment\nexports.decodeAll = exports.Decoder.decodeAll\nexports.decodeFirst = exports.Decoder.decodeFirst\nexports.diagnose = exports.Diagnose.diagnose\nexports.encode = exports.Encoder.encode\nexports.decode = exports.Decoder.decode\n\nexports.leveldb = {\n decode: exports.Decoder.decodeAll,\n encode: exports.Encoder.encode,\n buffer: true,\n name: 'cbor'\n}\n","'use strict'\n\nconst constants = require('./constants')\nconst MT = constants.MT\nconst SIMPLE = constants.SIMPLE\nconst SYMS = constants.SYMS\n\n/**\n * A CBOR Simple Value that does not map onto a known constant.\n */\nclass Simple {\n /**\n * Creates an instance of Simple.\n *\n * @param {integer} value - the simple value's integer value\n */\n constructor (value) {\n if (typeof value !== 'number') {\n throw new Error('Invalid Simple type: ' + (typeof value))\n }\n if ((value < 0) || (value > 255) || ((value | 0) !== value)) {\n throw new Error('value must be a small positive integer: ' + value)\n }\n this.value = value\n }\n\n /**\n * Debug string for simple value\n *\n * @returns {string} simple(value)\n */\n toString () {\n return 'simple(' + this.value + ')'\n }\n\n /**\n * Debug string for simple value\n *\n * @returns {string} simple(value)\n */\n inspect () {\n return 'simple(' + this.value + ')'\n }\n\n /**\n * Push the simple value onto the CBOR stream\n *\n * @param {cbor.Encoder} gen The generator to push onto\n * @returns {number}\n */\n encodeCBOR (gen) {\n return gen._pushInt(this.value, MT.SIMPLE_FLOAT)\n }\n\n /**\n * Is the given object a Simple?\n *\n * @param {any} obj - object to test\n * @returns {bool} - is it Simple?\n */\n static isSimple (obj) {\n return obj instanceof Simple\n }\n\n /**\n * Decode from the CBOR additional information into a JavaScript value.\n * If the CBOR item has no parent, return a \"safe\" symbol instead of\n * `null` or `undefined`, so that the value can be passed through a\n * stream in object mode.\n *\n * @param {Number} val - the CBOR additional info to convert\n * @param {bool} hasParent - Does the CBOR item have a parent?\n * @returns {(null|undefined|Boolean|Symbol)} - the decoded value\n */\n static decode (val, hasParent) {\n if (hasParent == null) {\n hasParent = true\n }\n switch (val) {\n case SIMPLE.FALSE:\n return false\n case SIMPLE.TRUE:\n return true\n case SIMPLE.NULL:\n if (hasParent) {\n return null\n } else {\n return SYMS.NULL\n }\n case SIMPLE.UNDEFINED:\n if (hasParent) {\n return undefined\n } else {\n return SYMS.UNDEFINED\n }\n case -1:\n if (!hasParent) {\n throw new Error('Invalid BREAK')\n }\n return SYMS.BREAK\n default:\n return new Simple(val)\n }\n }\n}\n\nmodule.exports = Simple\n","'use strict'\n\n/**\n * A CBOR tagged item, where the tag does not have semantics specified at the\n * moment, or those semantics threw an error during parsing. Typically this will\n * be an extension point you're not yet expecting.\n */\nclass Tagged {\n /**\n * Creates an instance of Tagged.\n *\n * @param {Number} tag - the number of the tag\n * @param {any} value - the value inside the tag\n * @param {Error} err - the error that was thrown parsing the tag, or null\n */\n constructor (tag, value, err) {\n this.tag = tag\n this.value = value\n this.err = err\n if (typeof this.tag !== 'number') {\n throw new Error('Invalid tag type (' + (typeof this.tag) + ')')\n }\n if ((this.tag < 0) || ((this.tag | 0) !== this.tag)) {\n throw new Error('Tag must be a positive integer: ' + this.tag)\n }\n }\n\n /**\n * Convert to a String\n *\n * @returns {String} string of the form '1(2)'\n */\n toString () {\n return `${this.tag}(${JSON.stringify(this.value)})`\n }\n\n /**\n * Push the simple value onto the CBOR stream\n *\n * @param {cbor.Encoder} gen The generator to push onto\n * @returns {number}\n */\n encodeCBOR (gen) {\n gen._pushTag(this.tag)\n return gen.pushAny(this.value)\n }\n\n /**\n * If we have a converter for this type, do the conversion. Some converters\n * are built-in. Additional ones can be passed in. If you want to remove\n * a built-in converter, pass a converter in whose value is 'null' instead\n * of a function.\n *\n * @param {Object} converters - keys in the object are a tag number, the value\n * is a function that takes the decoded CBOR and returns a JavaScript value\n * of the appropriate type. Throw an exception in the function on errors.\n * @returns {any} - the converted item\n */\n convert (converters) {\n var er, f\n f = converters != null ? converters[this.tag] : undefined\n if (typeof f !== 'function') {\n f = Tagged['_tag' + this.tag]\n if (typeof f !== 'function') {\n return this\n }\n }\n try {\n return f.call(Tagged, this.value)\n } catch (error) {\n er = error\n this.err = er\n return this\n }\n }\n}\n\nmodule.exports = Tagged\n","'use strict'\n\nconst { Buffer } = require('buffer')\nconst Bignumber = require('bignumber.js').BigNumber\n\nconst constants = require('./constants')\nconst SHIFT32 = constants.SHIFT32\nconst SHIFT16 = constants.SHIFT16\nconst MAX_SAFE_HIGH = 0x1fffff\n\nexports.parseHalf = function parseHalf (buf) {\n var exp, mant, sign\n sign = buf[0] & 0x80 ? -1 : 1\n exp = (buf[0] & 0x7C) >> 2\n mant = ((buf[0] & 0x03) << 8) | buf[1]\n if (!exp) {\n return sign * 5.9604644775390625e-8 * mant\n } else if (exp === 0x1f) {\n return sign * (mant ? 0 / 0 : 2e308)\n } else {\n return sign * Math.pow(2, exp - 25) * (1024 + mant)\n }\n}\n\nfunction toHex (n) {\n if (n < 16) {\n return '0' + n.toString(16)\n }\n\n return n.toString(16)\n}\n\nexports.arrayBufferToBignumber = function (buf) {\n const len = buf.byteLength\n let res = ''\n for (let i = 0; i < len; i++) {\n res += toHex(buf[i])\n }\n\n return new Bignumber(res, 16)\n}\n\n// convert an Object into a Map\nexports.buildMap = (obj) => {\n const res = new Map()\n const keys = Object.keys(obj)\n const length = keys.length\n for (let i = 0; i < length; i++) {\n res.set(keys[i], obj[keys[i]])\n }\n return res\n}\n\nexports.buildInt32 = (f, g) => {\n return f * SHIFT16 + g\n}\n\nexports.buildInt64 = (f1, f2, g1, g2) => {\n const f = exports.buildInt32(f1, f2)\n const g = exports.buildInt32(g1, g2)\n\n if (f > MAX_SAFE_HIGH) {\n return new Bignumber(f).times(SHIFT32).plus(g)\n } else {\n return (f * SHIFT32) + g\n }\n}\n\nexports.writeHalf = function writeHalf (buf, half) {\n // assume 0, -0, NaN, Infinity, and -Infinity have already been caught\n\n // HACK: everyone settle in. This isn't going to be pretty.\n // Translate cn-cbor's C code (from Carsten Borman):\n\n // uint32_t be32;\n // uint16_t be16, u16;\n // union {\n // float f;\n // uint32_t u;\n // } u32;\n // u32.f = float_val;\n\n const u32 = Buffer.allocUnsafe(4)\n u32.writeFloatBE(half, 0)\n const u = u32.readUInt32BE(0)\n\n // if ((u32.u & 0x1FFF) == 0) { /* worth trying half */\n\n // hildjj: If the lower 13 bits are 0, we won't lose anything in the conversion\n if ((u & 0x1FFF) !== 0) {\n return false\n }\n\n // int s16 = (u32.u >> 16) & 0x8000;\n // int exp = (u32.u >> 23) & 0xff;\n // int mant = u32.u & 0x7fffff;\n\n var s16 = (u >> 16) & 0x8000 // top bit is sign\n const exp = (u >> 23) & 0xff // then 5 bits of exponent\n const mant = u & 0x7fffff\n\n // if (exp == 0 && mant == 0)\n // ; /* 0.0, -0.0 */\n\n // hildjj: zeros already handled. Assert if you don't believe me.\n\n // else if (exp >= 113 && exp <= 142) /* normalized */\n // s16 += ((exp - 112) << 10) + (mant >> 13);\n if ((exp >= 113) && (exp <= 142)) {\n s16 += ((exp - 112) << 10) + (mant >> 13)\n\n // else if (exp >= 103 && exp < 113) { /* denorm, exp16 = 0 */\n // if (mant & ((1 << (126 - exp)) - 1))\n // goto float32; /* loss of precision */\n // s16 += ((mant + 0x800000) >> (126 - exp));\n } else if ((exp >= 103) && (exp < 113)) {\n if (mant & ((1 << (126 - exp)) - 1)) {\n return false\n }\n s16 += ((mant + 0x800000) >> (126 - exp))\n\n // } else if (exp == 255 && mant == 0) { /* Inf */\n // s16 += 0x7c00;\n\n // hildjj: Infinity already handled\n\n // } else\n // goto float32; /* loss of range */\n } else {\n return false\n }\n\n // ensure_writable(3);\n // u16 = s16;\n // be16 = hton16p((const uint8_t*)&u16);\n buf.writeUInt16BE(s16, 0)\n return true\n}\n\nexports.keySorter = function (a, b) {\n var lenA = a[0].byteLength\n var lenB = b[0].byteLength\n\n if (lenA > lenB) {\n return 1\n }\n\n if (lenB > lenA) {\n return -1\n }\n\n return a[0].compare(b[0])\n}\n\n// Adapted from http://www.2ality.com/2012/03/signedzero.html\nexports.isNegativeZero = (x) => {\n return x === 0 && (1 / x < 0)\n}\n\nexports.nextPowerOf2 = (n) => {\n let count = 0\n // First n in the below condition is for\n // the case where n is 0\n if (n && !(n & (n - 1))) {\n return n\n }\n\n while (n !== 0) {\n n >>= 1\n count += 1\n }\n\n return 1 << count\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n var arr = new Uint8Array(1)\n var proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n var buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n var valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n var b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(\n value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n )\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n var length = byteLength(string, encoding) | 0\n var buf = createBuffer(length)\n\n var actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(length)\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n var copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n var buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n var buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n Buffer.from(buf).copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n var len = string.length\n var mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n var strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (var i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n var len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nvar hexSliceLookupTable = (function () {\n var alphabet = '0123456789abcdef'\n var table = new Array(256)\n for (var i = 0; i < 16; ++i) {\n var i16 = i * 16\n for (var j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n","'use strict';\n\nconst {\n URLWithLegacySupport,\n format,\n URLSearchParams,\n defaultBase\n} = require('./src/url');\nconst relative = require('./src/relative');\n\nmodule.exports = {\n URL: URLWithLegacySupport,\n URLSearchParams,\n format,\n relative,\n defaultBase\n};\n","'use strict';\n\nconst { URLWithLegacySupport, format } = require('./url');\n\nmodule.exports = (url, location = {}, protocolMap = {}, defaultProtocol) => {\n let protocol = location.protocol ?\n location.protocol.replace(':', '') :\n 'http';\n\n // Check protocol map\n protocol = (protocolMap[protocol] || defaultProtocol || protocol) + ':';\n let urlParsed;\n\n try {\n urlParsed = new URLWithLegacySupport(url);\n } catch (err) {\n urlParsed = {};\n }\n\n const base = Object.assign({}, location, {\n protocol: protocol || urlParsed.protocol,\n host: location.host || urlParsed.host\n });\n\n return new URLWithLegacySupport(url, format(base)).toString();\n};\n","'use strict';\n\nconst defaultBase = self.location ?\n self.location.protocol + '//' + self.location.host :\n '';\nconst URL = self.URL;\n\nclass URLWithLegacySupport {\n constructor(url = '', base = defaultBase) {\n this.super = new URL(url, base);\n this.path = this.pathname + this.search;\n this.auth =\n this.username && this.password ?\n this.username + ':' + this.password :\n null;\n\n this.query =\n this.search && this.search.startsWith('?') ?\n this.search.slice(1) :\n null;\n }\n\n get hash() {\n return this.super.hash;\n }\n get host() {\n return this.super.host;\n }\n get hostname() {\n return this.super.hostname;\n }\n get href() {\n return this.super.href;\n }\n get origin() {\n return this.super.origin;\n }\n get password() {\n return this.super.password;\n }\n get pathname() {\n return this.super.pathname;\n }\n get port() {\n return this.super.port;\n }\n get protocol() {\n return this.super.protocol;\n }\n get search() {\n return this.super.search;\n }\n get searchParams() {\n return this.super.searchParams;\n }\n get username() {\n return this.super.username;\n }\n\n set hash(hash) {\n this.super.hash = hash;\n }\n set host(host) {\n this.super.host = host;\n }\n set hostname(hostname) {\n this.super.hostname = hostname;\n }\n set href(href) {\n this.super.href = href;\n }\n set origin(origin) {\n this.super.origin = origin;\n }\n set password(password) {\n this.super.password = password;\n }\n set pathname(pathname) {\n this.super.pathname = pathname;\n }\n set port(port) {\n this.super.port = port;\n }\n set protocol(protocol) {\n this.super.protocol = protocol;\n }\n set search(search) {\n this.super.search = search;\n }\n set searchParams(searchParams) {\n this.super.searchParams = searchParams;\n }\n set username(username) {\n this.super.username = username;\n }\n\n createObjectURL(o) {\n return this.super.createObjectURL(o);\n }\n revokeObjectURL(o) {\n this.super.revokeObjectURL(o);\n }\n toJSON() {\n return this.super.toJSON();\n }\n toString() {\n return this.super.toString();\n }\n format() {\n return this.toString();\n }\n}\n\nfunction format(obj) {\n if (typeof obj === 'string') {\n const url = new URL(obj);\n\n return url.toString();\n }\n\n if (!(obj instanceof URL)) {\n const userPass =\n obj.username && obj.password ?\n `${obj.username}:${obj.password}@` :\n '';\n const auth = obj.auth ? obj.auth + '@' : '';\n const port = obj.port ? ':' + obj.port : '';\n const protocol = obj.protocol ? obj.protocol + '//' : '';\n const host = obj.host || '';\n const hostname = obj.hostname || '';\n const search = obj.search || (obj.query ? '?' + obj.query : '');\n const hash = obj.hash || '';\n const pathname = obj.pathname || '';\n const path = obj.path || pathname + search;\n\n return `${protocol}${userPass || auth}${host ||\n hostname + port}${path}${hash}`;\n }\n}\n\nmodule.exports = {\n URLWithLegacySupport,\n URLSearchParams: self.URLSearchParams,\n defaultBase,\n format\n};\n","'use strict'\n\nconst Bignumber = require('bignumber.js').BigNumber\n\nexports.MT = {\n POS_INT: 0,\n NEG_INT: 1,\n BYTE_STRING: 2,\n UTF8_STRING: 3,\n ARRAY: 4,\n MAP: 5,\n TAG: 6,\n SIMPLE_FLOAT: 7\n}\n\nexports.TAG = {\n DATE_STRING: 0,\n DATE_EPOCH: 1,\n POS_BIGINT: 2,\n NEG_BIGINT: 3,\n DECIMAL_FRAC: 4,\n BIGFLOAT: 5,\n BASE64URL_EXPECTED: 21,\n BASE64_EXPECTED: 22,\n BASE16_EXPECTED: 23,\n CBOR: 24,\n URI: 32,\n BASE64URL: 33,\n BASE64: 34,\n REGEXP: 35,\n MIME: 36\n}\n\nexports.NUMBYTES = {\n ZERO: 0,\n ONE: 24,\n TWO: 25,\n FOUR: 26,\n EIGHT: 27,\n INDEFINITE: 31\n}\n\nexports.SIMPLE = {\n FALSE: 20,\n TRUE: 21,\n NULL: 22,\n UNDEFINED: 23\n}\n\nexports.SYMS = {\n NULL: Symbol('null'),\n UNDEFINED: Symbol('undef'),\n PARENT: Symbol('parent'),\n BREAK: Symbol('break'),\n STREAM: Symbol('stream')\n}\n\nexports.SHIFT32 = Math.pow(2, 32)\nexports.SHIFT16 = Math.pow(2, 16)\n\nexports.MAX_SAFE_HIGH = 0x1fffff\nexports.NEG_ONE = new Bignumber(-1)\nexports.TEN = new Bignumber(10)\nexports.TWO = new Bignumber(2)\n\nexports.PARENT = {\n ARRAY: 0,\n OBJECT: 1,\n MAP: 2,\n TAG: 3,\n BYTE_STRING: 4,\n UTF8_STRING: 5\n}\n","/* eslint-disable */\n\nmodule.exports = function decodeAsm (stdlib, foreign, buffer) {\n 'use asm'\n\n // -- Imports\n\n var heap = new stdlib.Uint8Array(buffer)\n // var log = foreign.log\n var pushInt = foreign.pushInt\n var pushInt32 = foreign.pushInt32\n var pushInt32Neg = foreign.pushInt32Neg\n var pushInt64 = foreign.pushInt64\n var pushInt64Neg = foreign.pushInt64Neg\n var pushFloat = foreign.pushFloat\n var pushFloatSingle = foreign.pushFloatSingle\n var pushFloatDouble = foreign.pushFloatDouble\n var pushTrue = foreign.pushTrue\n var pushFalse = foreign.pushFalse\n var pushUndefined = foreign.pushUndefined\n var pushNull = foreign.pushNull\n var pushInfinity = foreign.pushInfinity\n var pushInfinityNeg = foreign.pushInfinityNeg\n var pushNaN = foreign.pushNaN\n var pushNaNNeg = foreign.pushNaNNeg\n\n var pushArrayStart = foreign.pushArrayStart\n var pushArrayStartFixed = foreign.pushArrayStartFixed\n var pushArrayStartFixed32 = foreign.pushArrayStartFixed32\n var pushArrayStartFixed64 = foreign.pushArrayStartFixed64\n var pushObjectStart = foreign.pushObjectStart\n var pushObjectStartFixed = foreign.pushObjectStartFixed\n var pushObjectStartFixed32 = foreign.pushObjectStartFixed32\n var pushObjectStartFixed64 = foreign.pushObjectStartFixed64\n\n var pushByteString = foreign.pushByteString\n var pushByteStringStart = foreign.pushByteStringStart\n var pushUtf8String = foreign.pushUtf8String\n var pushUtf8StringStart = foreign.pushUtf8StringStart\n\n var pushSimpleUnassigned = foreign.pushSimpleUnassigned\n\n var pushTagStart = foreign.pushTagStart\n var pushTagStart4 = foreign.pushTagStart4\n var pushTagStart8 = foreign.pushTagStart8\n var pushTagUnassigned = foreign.pushTagUnassigned\n\n var pushBreak = foreign.pushBreak\n\n var pow = stdlib.Math.pow\n\n // -- Constants\n\n\n // -- Mutable Variables\n\n var offset = 0\n var inputLength = 0\n var code = 0\n\n // Decode a cbor string represented as Uint8Array\n // which is allocated on the heap from 0 to inputLength\n //\n // input - Int\n //\n // Returns Code - Int,\n // Success = 0\n // Error > 0\n function parse (input) {\n input = input | 0\n\n offset = 0\n inputLength = input\n\n while ((offset | 0) < (inputLength | 0)) {\n code = jumpTable[heap[offset] & 255](heap[offset] | 0) | 0\n\n if ((code | 0) > 0) {\n break\n }\n }\n\n return code | 0\n }\n\n // -- Helper Function\n\n function checkOffset (n) {\n n = n | 0\n\n if ((((offset | 0) + (n | 0)) | 0) < (inputLength | 0)) {\n return 0\n }\n\n return 1\n }\n\n function readUInt16 (n) {\n n = n | 0\n\n return (\n (heap[n | 0] << 8) | heap[(n + 1) | 0]\n ) | 0\n }\n\n function readUInt32 (n) {\n n = n | 0\n\n return (\n (heap[n | 0] << 24) | (heap[(n + 1) | 0] << 16) | (heap[(n + 2) | 0] << 8) | heap[(n + 3) | 0]\n ) | 0\n }\n\n // -- Initial Byte Handlers\n\n function INT_P (octet) {\n octet = octet | 0\n\n pushInt(octet | 0)\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function UINT_P_8 (octet) {\n octet = octet | 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n pushInt(heap[(offset + 1) | 0] | 0)\n\n offset = (offset + 2) | 0\n\n return 0\n }\n\n function UINT_P_16 (octet) {\n octet = octet | 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n pushInt(\n readUInt16((offset + 1) | 0) | 0\n )\n\n offset = (offset + 3) | 0\n\n return 0\n }\n\n function UINT_P_32 (octet) {\n octet = octet | 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n pushInt32(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0\n )\n\n offset = (offset + 5) | 0\n\n return 0\n }\n\n function UINT_P_64 (octet) {\n octet = octet | 0\n\n if (checkOffset(8) | 0) {\n return 1\n }\n\n pushInt64(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0,\n readUInt16((offset + 5) | 0) | 0,\n readUInt16((offset + 7) | 0) | 0\n )\n\n offset = (offset + 9) | 0\n\n return 0\n }\n\n function INT_N (octet) {\n octet = octet | 0\n\n pushInt((-1 - ((octet - 32) | 0)) | 0)\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function UINT_N_8 (octet) {\n octet = octet | 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n pushInt(\n (-1 - (heap[(offset + 1) | 0] | 0)) | 0\n )\n\n offset = (offset + 2) | 0\n\n return 0\n }\n\n function UINT_N_16 (octet) {\n octet = octet | 0\n\n var val = 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n val = readUInt16((offset + 1) | 0) | 0\n pushInt((-1 - (val | 0)) | 0)\n\n offset = (offset + 3) | 0\n\n return 0\n }\n\n function UINT_N_32 (octet) {\n octet = octet | 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n pushInt32Neg(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0\n )\n\n offset = (offset + 5) | 0\n\n return 0\n }\n\n function UINT_N_64 (octet) {\n octet = octet | 0\n\n if (checkOffset(8) | 0) {\n return 1\n }\n\n pushInt64Neg(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0,\n readUInt16((offset + 5) | 0) | 0,\n readUInt16((offset + 7) | 0) | 0\n )\n\n offset = (offset + 9) | 0\n\n return 0\n }\n\n function BYTE_STRING (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var step = 0\n\n step = (octet - 64) | 0\n if (checkOffset(step | 0) | 0) {\n return 1\n }\n\n start = (offset + 1) | 0\n end = (((offset + 1) | 0) + (step | 0)) | 0\n\n pushByteString(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function BYTE_STRING_8 (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var length = 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n length = heap[(offset + 1) | 0] | 0\n start = (offset + 2) | 0\n end = (((offset + 2) | 0) + (length | 0)) | 0\n\n if (checkOffset((length + 1) | 0) | 0) {\n return 1\n }\n\n pushByteString(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function BYTE_STRING_16 (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var length = 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n length = readUInt16((offset + 1) | 0) | 0\n start = (offset + 3) | 0\n end = (((offset + 3) | 0) + (length | 0)) | 0\n\n\n if (checkOffset((length + 2) | 0) | 0) {\n return 1\n }\n\n pushByteString(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function BYTE_STRING_32 (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var length = 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n length = readUInt32((offset + 1) | 0) | 0\n start = (offset + 5) | 0\n end = (((offset + 5) | 0) + (length | 0)) | 0\n\n\n if (checkOffset((length + 4) | 0) | 0) {\n return 1\n }\n\n pushByteString(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function BYTE_STRING_64 (octet) {\n // NOT IMPLEMENTED\n octet = octet | 0\n\n return 1\n }\n\n function BYTE_STRING_BREAK (octet) {\n octet = octet | 0\n\n pushByteStringStart()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function UTF8_STRING (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var step = 0\n\n step = (octet - 96) | 0\n\n if (checkOffset(step | 0) | 0) {\n return 1\n }\n\n start = (offset + 1) | 0\n end = (((offset + 1) | 0) + (step | 0)) | 0\n\n pushUtf8String(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function UTF8_STRING_8 (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var length = 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n length = heap[(offset + 1) | 0] | 0\n start = (offset + 2) | 0\n end = (((offset + 2) | 0) + (length | 0)) | 0\n\n if (checkOffset((length + 1) | 0) | 0) {\n return 1\n }\n\n pushUtf8String(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function UTF8_STRING_16 (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var length = 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n length = readUInt16((offset + 1) | 0) | 0\n start = (offset + 3) | 0\n end = (((offset + 3) | 0) + (length | 0)) | 0\n\n if (checkOffset((length + 2) | 0) | 0) {\n return 1\n }\n\n pushUtf8String(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function UTF8_STRING_32 (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var length = 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n length = readUInt32((offset + 1) | 0) | 0\n start = (offset + 5) | 0\n end = (((offset + 5) | 0) + (length | 0)) | 0\n\n if (checkOffset((length + 4) | 0) | 0) {\n return 1\n }\n\n pushUtf8String(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function UTF8_STRING_64 (octet) {\n // NOT IMPLEMENTED\n octet = octet | 0\n\n return 1\n }\n\n function UTF8_STRING_BREAK (octet) {\n octet = octet | 0\n\n pushUtf8StringStart()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function ARRAY (octet) {\n octet = octet | 0\n\n pushArrayStartFixed((octet - 128) | 0)\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function ARRAY_8 (octet) {\n octet = octet | 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n pushArrayStartFixed(heap[(offset + 1) | 0] | 0)\n\n offset = (offset + 2) | 0\n\n return 0\n }\n\n function ARRAY_16 (octet) {\n octet = octet | 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n pushArrayStartFixed(\n readUInt16((offset + 1) | 0) | 0\n )\n\n offset = (offset + 3) | 0\n\n return 0\n }\n\n function ARRAY_32 (octet) {\n octet = octet | 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n pushArrayStartFixed32(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0\n )\n\n offset = (offset + 5) | 0\n\n return 0\n }\n\n function ARRAY_64 (octet) {\n octet = octet | 0\n\n if (checkOffset(8) | 0) {\n return 1\n }\n\n pushArrayStartFixed64(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0,\n readUInt16((offset + 5) | 0) | 0,\n readUInt16((offset + 7) | 0) | 0\n )\n\n offset = (offset + 9) | 0\n\n return 0\n }\n\n function ARRAY_BREAK (octet) {\n octet = octet | 0\n\n pushArrayStart()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function MAP (octet) {\n octet = octet | 0\n\n var step = 0\n\n step = (octet - 160) | 0\n\n if (checkOffset(step | 0) | 0) {\n return 1\n }\n\n pushObjectStartFixed(step | 0)\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function MAP_8 (octet) {\n octet = octet | 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n pushObjectStartFixed(heap[(offset + 1) | 0] | 0)\n\n offset = (offset + 2) | 0\n\n return 0\n }\n\n function MAP_16 (octet) {\n octet = octet | 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n pushObjectStartFixed(\n readUInt16((offset + 1) | 0) | 0\n )\n\n offset = (offset + 3) | 0\n\n return 0\n }\n\n function MAP_32 (octet) {\n octet = octet | 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n pushObjectStartFixed32(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0\n )\n\n offset = (offset + 5) | 0\n\n return 0\n }\n\n function MAP_64 (octet) {\n octet = octet | 0\n\n if (checkOffset(8) | 0) {\n return 1\n }\n\n pushObjectStartFixed64(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0,\n readUInt16((offset + 5) | 0) | 0,\n readUInt16((offset + 7) | 0) | 0\n )\n\n offset = (offset + 9) | 0\n\n return 0\n }\n\n function MAP_BREAK (octet) {\n octet = octet | 0\n\n pushObjectStart()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function TAG_KNOWN (octet) {\n octet = octet | 0\n\n pushTagStart((octet - 192| 0) | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_BIGNUM_POS (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_BIGNUM_NEG (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_FRAC (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_BIGNUM_FLOAT (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_UNASSIGNED (octet) {\n octet = octet | 0\n\n pushTagStart((octet - 192| 0) | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_BASE64_URL (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_BASE64 (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_BASE16 (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_MORE_1 (octet) {\n octet = octet | 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n pushTagStart(heap[(offset + 1) | 0] | 0)\n\n offset = (offset + 2 | 0)\n\n return 0\n }\n\n function TAG_MORE_2 (octet) {\n octet = octet | 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n pushTagStart(\n readUInt16((offset + 1) | 0) | 0\n )\n\n offset = (offset + 3 | 0)\n\n return 0\n }\n\n function TAG_MORE_4 (octet) {\n octet = octet | 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n pushTagStart4(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0\n )\n\n offset = (offset + 5 | 0)\n\n return 0\n }\n\n function TAG_MORE_8 (octet) {\n octet = octet | 0\n\n if (checkOffset(8) | 0) {\n return 1\n }\n\n pushTagStart8(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0,\n readUInt16((offset + 5) | 0) | 0,\n readUInt16((offset + 7) | 0) | 0\n )\n\n offset = (offset + 9 | 0)\n\n return 0\n }\n\n function SIMPLE_UNASSIGNED (octet) {\n octet = octet | 0\n\n pushSimpleUnassigned(((octet | 0) - 224) | 0)\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function SIMPLE_FALSE (octet) {\n octet = octet | 0\n\n pushFalse()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function SIMPLE_TRUE (octet) {\n octet = octet | 0\n\n pushTrue()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function SIMPLE_NULL (octet) {\n octet = octet | 0\n\n pushNull()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function SIMPLE_UNDEFINED (octet) {\n octet = octet | 0\n\n pushUndefined()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function SIMPLE_BYTE (octet) {\n octet = octet | 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n pushSimpleUnassigned(heap[(offset + 1) | 0] | 0)\n\n offset = (offset + 2) | 0\n\n return 0\n }\n\n function SIMPLE_FLOAT_HALF (octet) {\n octet = octet | 0\n\n var f = 0\n var g = 0\n var sign = 1.0\n var exp = 0.0\n var mant = 0.0\n var r = 0.0\n if (checkOffset(2) | 0) {\n return 1\n }\n\n f = heap[(offset + 1) | 0] | 0\n g = heap[(offset + 2) | 0] | 0\n\n if ((f | 0) & 0x80) {\n sign = -1.0\n }\n\n exp = +(((f | 0) & 0x7C) >> 2)\n mant = +((((f | 0) & 0x03) << 8) | g)\n\n if (+exp == 0.0) {\n pushFloat(+(\n (+sign) * +5.9604644775390625e-8 * (+mant)\n ))\n } else if (+exp == 31.0) {\n if (+sign == 1.0) {\n if (+mant > 0.0) {\n pushNaN()\n } else {\n pushInfinity()\n }\n } else {\n if (+mant > 0.0) {\n pushNaNNeg()\n } else {\n pushInfinityNeg()\n }\n }\n } else {\n pushFloat(+(\n +sign * pow(+2, +(+exp - 25.0)) * +(1024.0 + mant)\n ))\n }\n\n offset = (offset + 3) | 0\n\n return 0\n }\n\n function SIMPLE_FLOAT_SINGLE (octet) {\n octet = octet | 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n pushFloatSingle(\n heap[(offset + 1) | 0] | 0,\n heap[(offset + 2) | 0] | 0,\n heap[(offset + 3) | 0] | 0,\n heap[(offset + 4) | 0] | 0\n )\n\n offset = (offset + 5) | 0\n\n return 0\n }\n\n function SIMPLE_FLOAT_DOUBLE (octet) {\n octet = octet | 0\n\n if (checkOffset(8) | 0) {\n return 1\n }\n\n pushFloatDouble(\n heap[(offset + 1) | 0] | 0,\n heap[(offset + 2) | 0] | 0,\n heap[(offset + 3) | 0] | 0,\n heap[(offset + 4) | 0] | 0,\n heap[(offset + 5) | 0] | 0,\n heap[(offset + 6) | 0] | 0,\n heap[(offset + 7) | 0] | 0,\n heap[(offset + 8) | 0] | 0\n )\n\n offset = (offset + 9) | 0\n\n return 0\n }\n\n function ERROR (octet) {\n octet = octet | 0\n\n return 1\n }\n\n function BREAK (octet) {\n octet = octet | 0\n\n pushBreak()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n // -- Jump Table\n\n var jumpTable = [\n // Integer 0x00..0x17 (0..23)\n INT_P, // 0x00\n INT_P, // 0x01\n INT_P, // 0x02\n INT_P, // 0x03\n INT_P, // 0x04\n INT_P, // 0x05\n INT_P, // 0x06\n INT_P, // 0x07\n INT_P, // 0x08\n INT_P, // 0x09\n INT_P, // 0x0A\n INT_P, // 0x0B\n INT_P, // 0x0C\n INT_P, // 0x0D\n INT_P, // 0x0E\n INT_P, // 0x0F\n INT_P, // 0x10\n INT_P, // 0x11\n INT_P, // 0x12\n INT_P, // 0x13\n INT_P, // 0x14\n INT_P, // 0x15\n INT_P, // 0x16\n INT_P, // 0x17\n // Unsigned integer (one-byte uint8_t follows)\n UINT_P_8, // 0x18\n // Unsigned integer (two-byte uint16_t follows)\n UINT_P_16, // 0x19\n // Unsigned integer (four-byte uint32_t follows)\n UINT_P_32, // 0x1a\n // Unsigned integer (eight-byte uint64_t follows)\n UINT_P_64, // 0x1b\n ERROR, // 0x1c\n ERROR, // 0x1d\n ERROR, // 0x1e\n ERROR, // 0x1f\n // Negative integer -1-0x00..-1-0x17 (-1..-24)\n INT_N, // 0x20\n INT_N, // 0x21\n INT_N, // 0x22\n INT_N, // 0x23\n INT_N, // 0x24\n INT_N, // 0x25\n INT_N, // 0x26\n INT_N, // 0x27\n INT_N, // 0x28\n INT_N, // 0x29\n INT_N, // 0x2A\n INT_N, // 0x2B\n INT_N, // 0x2C\n INT_N, // 0x2D\n INT_N, // 0x2E\n INT_N, // 0x2F\n INT_N, // 0x30\n INT_N, // 0x31\n INT_N, // 0x32\n INT_N, // 0x33\n INT_N, // 0x34\n INT_N, // 0x35\n INT_N, // 0x36\n INT_N, // 0x37\n // Negative integer -1-n (one-byte uint8_t for n follows)\n UINT_N_8, // 0x38\n // Negative integer -1-n (two-byte uint16_t for n follows)\n UINT_N_16, // 0x39\n // Negative integer -1-n (four-byte uint32_t for nfollows)\n UINT_N_32, // 0x3a\n // Negative integer -1-n (eight-byte uint64_t for n follows)\n UINT_N_64, // 0x3b\n ERROR, // 0x3c\n ERROR, // 0x3d\n ERROR, // 0x3e\n ERROR, // 0x3f\n // byte string (0x00..0x17 bytes follow)\n BYTE_STRING, // 0x40\n BYTE_STRING, // 0x41\n BYTE_STRING, // 0x42\n BYTE_STRING, // 0x43\n BYTE_STRING, // 0x44\n BYTE_STRING, // 0x45\n BYTE_STRING, // 0x46\n BYTE_STRING, // 0x47\n BYTE_STRING, // 0x48\n BYTE_STRING, // 0x49\n BYTE_STRING, // 0x4A\n BYTE_STRING, // 0x4B\n BYTE_STRING, // 0x4C\n BYTE_STRING, // 0x4D\n BYTE_STRING, // 0x4E\n BYTE_STRING, // 0x4F\n BYTE_STRING, // 0x50\n BYTE_STRING, // 0x51\n BYTE_STRING, // 0x52\n BYTE_STRING, // 0x53\n BYTE_STRING, // 0x54\n BYTE_STRING, // 0x55\n BYTE_STRING, // 0x56\n BYTE_STRING, // 0x57\n // byte string (one-byte uint8_t for n, and then n bytes follow)\n BYTE_STRING_8, // 0x58\n // byte string (two-byte uint16_t for n, and then n bytes follow)\n BYTE_STRING_16, // 0x59\n // byte string (four-byte uint32_t for n, and then n bytes follow)\n BYTE_STRING_32, // 0x5a\n // byte string (eight-byte uint64_t for n, and then n bytes follow)\n BYTE_STRING_64, // 0x5b\n ERROR, // 0x5c\n ERROR, // 0x5d\n ERROR, // 0x5e\n // byte string, byte strings follow, terminated by \"break\"\n BYTE_STRING_BREAK, // 0x5f\n // UTF-8 string (0x00..0x17 bytes follow)\n UTF8_STRING, // 0x60\n UTF8_STRING, // 0x61\n UTF8_STRING, // 0x62\n UTF8_STRING, // 0x63\n UTF8_STRING, // 0x64\n UTF8_STRING, // 0x65\n UTF8_STRING, // 0x66\n UTF8_STRING, // 0x67\n UTF8_STRING, // 0x68\n UTF8_STRING, // 0x69\n UTF8_STRING, // 0x6A\n UTF8_STRING, // 0x6B\n UTF8_STRING, // 0x6C\n UTF8_STRING, // 0x6D\n UTF8_STRING, // 0x6E\n UTF8_STRING, // 0x6F\n UTF8_STRING, // 0x70\n UTF8_STRING, // 0x71\n UTF8_STRING, // 0x72\n UTF8_STRING, // 0x73\n UTF8_STRING, // 0x74\n UTF8_STRING, // 0x75\n UTF8_STRING, // 0x76\n UTF8_STRING, // 0x77\n // UTF-8 string (one-byte uint8_t for n, and then n bytes follow)\n UTF8_STRING_8, // 0x78\n // UTF-8 string (two-byte uint16_t for n, and then n bytes follow)\n UTF8_STRING_16, // 0x79\n // UTF-8 string (four-byte uint32_t for n, and then n bytes follow)\n UTF8_STRING_32, // 0x7a\n // UTF-8 string (eight-byte uint64_t for n, and then n bytes follow)\n UTF8_STRING_64, // 0x7b\n // UTF-8 string, UTF-8 strings follow, terminated by \"break\"\n ERROR, // 0x7c\n ERROR, // 0x7d\n ERROR, // 0x7e\n UTF8_STRING_BREAK, // 0x7f\n // array (0x00..0x17 data items follow)\n ARRAY, // 0x80\n ARRAY, // 0x81\n ARRAY, // 0x82\n ARRAY, // 0x83\n ARRAY, // 0x84\n ARRAY, // 0x85\n ARRAY, // 0x86\n ARRAY, // 0x87\n ARRAY, // 0x88\n ARRAY, // 0x89\n ARRAY, // 0x8A\n ARRAY, // 0x8B\n ARRAY, // 0x8C\n ARRAY, // 0x8D\n ARRAY, // 0x8E\n ARRAY, // 0x8F\n ARRAY, // 0x90\n ARRAY, // 0x91\n ARRAY, // 0x92\n ARRAY, // 0x93\n ARRAY, // 0x94\n ARRAY, // 0x95\n ARRAY, // 0x96\n ARRAY, // 0x97\n // array (one-byte uint8_t fo, and then n data items follow)\n ARRAY_8, // 0x98\n // array (two-byte uint16_t for n, and then n data items follow)\n ARRAY_16, // 0x99\n // array (four-byte uint32_t for n, and then n data items follow)\n ARRAY_32, // 0x9a\n // array (eight-byte uint64_t for n, and then n data items follow)\n ARRAY_64, // 0x9b\n // array, data items follow, terminated by \"break\"\n ERROR, // 0x9c\n ERROR, // 0x9d\n ERROR, // 0x9e\n ARRAY_BREAK, // 0x9f\n // map (0x00..0x17 pairs of data items follow)\n MAP, // 0xa0\n MAP, // 0xa1\n MAP, // 0xa2\n MAP, // 0xa3\n MAP, // 0xa4\n MAP, // 0xa5\n MAP, // 0xa6\n MAP, // 0xa7\n MAP, // 0xa8\n MAP, // 0xa9\n MAP, // 0xaA\n MAP, // 0xaB\n MAP, // 0xaC\n MAP, // 0xaD\n MAP, // 0xaE\n MAP, // 0xaF\n MAP, // 0xb0\n MAP, // 0xb1\n MAP, // 0xb2\n MAP, // 0xb3\n MAP, // 0xb4\n MAP, // 0xb5\n MAP, // 0xb6\n MAP, // 0xb7\n // map (one-byte uint8_t for n, and then n pairs of data items follow)\n MAP_8, // 0xb8\n // map (two-byte uint16_t for n, and then n pairs of data items follow)\n MAP_16, // 0xb9\n // map (four-byte uint32_t for n, and then n pairs of data items follow)\n MAP_32, // 0xba\n // map (eight-byte uint64_t for n, and then n pairs of data items follow)\n MAP_64, // 0xbb\n ERROR, // 0xbc\n ERROR, // 0xbd\n ERROR, // 0xbe\n // map, pairs of data items follow, terminated by \"break\"\n MAP_BREAK, // 0xbf\n // Text-based date/time (data item follows; see Section 2.4.1)\n TAG_KNOWN, // 0xc0\n // Epoch-based date/time (data item follows; see Section 2.4.1)\n TAG_KNOWN, // 0xc1\n // Positive bignum (data item \"byte string\" follows)\n TAG_KNOWN, // 0xc2\n // Negative bignum (data item \"byte string\" follows)\n TAG_KNOWN, // 0xc3\n // Decimal Fraction (data item \"array\" follows; see Section 2.4.3)\n TAG_KNOWN, // 0xc4\n // Bigfloat (data item \"array\" follows; see Section 2.4.3)\n TAG_KNOWN, // 0xc5\n // (tagged item)\n TAG_UNASSIGNED, // 0xc6\n TAG_UNASSIGNED, // 0xc7\n TAG_UNASSIGNED, // 0xc8\n TAG_UNASSIGNED, // 0xc9\n TAG_UNASSIGNED, // 0xca\n TAG_UNASSIGNED, // 0xcb\n TAG_UNASSIGNED, // 0xcc\n TAG_UNASSIGNED, // 0xcd\n TAG_UNASSIGNED, // 0xce\n TAG_UNASSIGNED, // 0xcf\n TAG_UNASSIGNED, // 0xd0\n TAG_UNASSIGNED, // 0xd1\n TAG_UNASSIGNED, // 0xd2\n TAG_UNASSIGNED, // 0xd3\n TAG_UNASSIGNED, // 0xd4\n // Expected Conversion (data item follows; see Section 2.4.4.2)\n TAG_UNASSIGNED, // 0xd5\n TAG_UNASSIGNED, // 0xd6\n TAG_UNASSIGNED, // 0xd7\n // (more tagged items, 1/2/4/8 bytes and then a data item follow)\n TAG_MORE_1, // 0xd8\n TAG_MORE_2, // 0xd9\n TAG_MORE_4, // 0xda\n TAG_MORE_8, // 0xdb\n ERROR, // 0xdc\n ERROR, // 0xdd\n ERROR, // 0xde\n ERROR, // 0xdf\n // (simple value)\n SIMPLE_UNASSIGNED, // 0xe0\n SIMPLE_UNASSIGNED, // 0xe1\n SIMPLE_UNASSIGNED, // 0xe2\n SIMPLE_UNASSIGNED, // 0xe3\n SIMPLE_UNASSIGNED, // 0xe4\n SIMPLE_UNASSIGNED, // 0xe5\n SIMPLE_UNASSIGNED, // 0xe6\n SIMPLE_UNASSIGNED, // 0xe7\n SIMPLE_UNASSIGNED, // 0xe8\n SIMPLE_UNASSIGNED, // 0xe9\n SIMPLE_UNASSIGNED, // 0xea\n SIMPLE_UNASSIGNED, // 0xeb\n SIMPLE_UNASSIGNED, // 0xec\n SIMPLE_UNASSIGNED, // 0xed\n SIMPLE_UNASSIGNED, // 0xee\n SIMPLE_UNASSIGNED, // 0xef\n SIMPLE_UNASSIGNED, // 0xf0\n SIMPLE_UNASSIGNED, // 0xf1\n SIMPLE_UNASSIGNED, // 0xf2\n SIMPLE_UNASSIGNED, // 0xf3\n // False\n SIMPLE_FALSE, // 0xf4\n // True\n SIMPLE_TRUE, // 0xf5\n // Null\n SIMPLE_NULL, // 0xf6\n // Undefined\n SIMPLE_UNDEFINED, // 0xf7\n // (simple value, one byte follows)\n SIMPLE_BYTE, // 0xf8\n // Half-Precision Float (two-byte IEEE 754)\n SIMPLE_FLOAT_HALF, // 0xf9\n // Single-Precision Float (four-byte IEEE 754)\n SIMPLE_FLOAT_SINGLE, // 0xfa\n // Double-Precision Float (eight-byte IEEE 754)\n SIMPLE_FLOAT_DOUBLE, // 0xfb\n ERROR, // 0xfc\n ERROR, // 0xfd\n ERROR, // 0xfe\n // \"break\" stop code\n BREAK // 0xff\n ]\n\n // --\n\n return {\n parse: parse\n }\n}\n","'use strict'\n\nconst { Buffer } = require('buffer')\nconst ieee754 = require('ieee754')\nconst Bignumber = require('bignumber.js').BigNumber\n\nconst parser = require('./decoder.asm')\nconst utils = require('./utils')\nconst c = require('./constants')\nconst Simple = require('./simple')\nconst Tagged = require('./tagged')\nconst { URL } = require('iso-url')\n\n/**\n * Transform binary cbor data into JavaScript objects.\n */\nclass Decoder {\n /**\n * @param {Object} [opts={}]\n * @param {number} [opts.size=65536] - Size of the allocated heap.\n */\n constructor (opts) {\n opts = opts || {}\n\n if (!opts.size || opts.size < 0x10000) {\n opts.size = 0x10000\n } else {\n // Ensure the size is a power of 2\n opts.size = utils.nextPowerOf2(opts.size)\n }\n\n // Heap use to share the input with the parser\n this._heap = new ArrayBuffer(opts.size)\n this._heap8 = new Uint8Array(this._heap)\n this._buffer = Buffer.from(this._heap)\n\n this._reset()\n\n // Known tags\n this._knownTags = Object.assign({\n 0: (val) => new Date(val),\n 1: (val) => new Date(val * 1000),\n 2: (val) => utils.arrayBufferToBignumber(val),\n 3: (val) => c.NEG_ONE.minus(utils.arrayBufferToBignumber(val)),\n 4: (v) => {\n // const v = new Uint8Array(val)\n return c.TEN.pow(v[0]).times(v[1])\n },\n 5: (v) => {\n // const v = new Uint8Array(val)\n return c.TWO.pow(v[0]).times(v[1])\n },\n 32: (val) => new URL(val),\n 35: (val) => new RegExp(val)\n }, opts.tags)\n\n // Initialize asm based parser\n this.parser = parser(global, {\n // eslint-disable-next-line no-console\n log: console.log.bind(console),\n pushInt: this.pushInt.bind(this),\n pushInt32: this.pushInt32.bind(this),\n pushInt32Neg: this.pushInt32Neg.bind(this),\n pushInt64: this.pushInt64.bind(this),\n pushInt64Neg: this.pushInt64Neg.bind(this),\n pushFloat: this.pushFloat.bind(this),\n pushFloatSingle: this.pushFloatSingle.bind(this),\n pushFloatDouble: this.pushFloatDouble.bind(this),\n pushTrue: this.pushTrue.bind(this),\n pushFalse: this.pushFalse.bind(this),\n pushUndefined: this.pushUndefined.bind(this),\n pushNull: this.pushNull.bind(this),\n pushInfinity: this.pushInfinity.bind(this),\n pushInfinityNeg: this.pushInfinityNeg.bind(this),\n pushNaN: this.pushNaN.bind(this),\n pushNaNNeg: this.pushNaNNeg.bind(this),\n pushArrayStart: this.pushArrayStart.bind(this),\n pushArrayStartFixed: this.pushArrayStartFixed.bind(this),\n pushArrayStartFixed32: this.pushArrayStartFixed32.bind(this),\n pushArrayStartFixed64: this.pushArrayStartFixed64.bind(this),\n pushObjectStart: this.pushObjectStart.bind(this),\n pushObjectStartFixed: this.pushObjectStartFixed.bind(this),\n pushObjectStartFixed32: this.pushObjectStartFixed32.bind(this),\n pushObjectStartFixed64: this.pushObjectStartFixed64.bind(this),\n pushByteString: this.pushByteString.bind(this),\n pushByteStringStart: this.pushByteStringStart.bind(this),\n pushUtf8String: this.pushUtf8String.bind(this),\n pushUtf8StringStart: this.pushUtf8StringStart.bind(this),\n pushSimpleUnassigned: this.pushSimpleUnassigned.bind(this),\n pushTagUnassigned: this.pushTagUnassigned.bind(this),\n pushTagStart: this.pushTagStart.bind(this),\n pushTagStart4: this.pushTagStart4.bind(this),\n pushTagStart8: this.pushTagStart8.bind(this),\n pushBreak: this.pushBreak.bind(this)\n }, this._heap)\n }\n\n get _depth () {\n return this._parents.length\n }\n\n get _currentParent () {\n return this._parents[this._depth - 1]\n }\n\n get _ref () {\n return this._currentParent.ref\n }\n\n // Finish the current parent\n _closeParent () {\n var p = this._parents.pop()\n\n if (p.length > 0) {\n throw new Error(`Missing ${p.length} elements`)\n }\n\n switch (p.type) {\n case c.PARENT.TAG:\n this._push(\n this.createTag(p.ref[0], p.ref[1])\n )\n break\n case c.PARENT.BYTE_STRING:\n this._push(this.createByteString(p.ref, p.length))\n break\n case c.PARENT.UTF8_STRING:\n this._push(this.createUtf8String(p.ref, p.length))\n break\n case c.PARENT.MAP:\n if (p.values % 2 > 0) {\n throw new Error('Odd number of elements in the map')\n }\n this._push(this.createMap(p.ref, p.length))\n break\n case c.PARENT.OBJECT:\n if (p.values % 2 > 0) {\n throw new Error('Odd number of elements in the map')\n }\n this._push(this.createObject(p.ref, p.length))\n break\n case c.PARENT.ARRAY:\n this._push(this.createArray(p.ref, p.length))\n break\n default:\n break\n }\n\n if (this._currentParent && this._currentParent.type === c.PARENT.TAG) {\n this._dec()\n }\n }\n\n // Reduce the expected length of the current parent by one\n _dec () {\n const p = this._currentParent\n // The current parent does not know the epxected child length\n\n if (p.length < 0) {\n return\n }\n\n p.length--\n\n // All children were seen, we can close the current parent\n if (p.length === 0) {\n this._closeParent()\n }\n }\n\n // Push any value to the current parent\n _push (val, hasChildren) {\n const p = this._currentParent\n p.values++\n\n switch (p.type) {\n case c.PARENT.ARRAY:\n case c.PARENT.BYTE_STRING:\n case c.PARENT.UTF8_STRING:\n if (p.length > -1) {\n this._ref[this._ref.length - p.length] = val\n } else {\n this._ref.push(val)\n }\n this._dec()\n break\n case c.PARENT.OBJECT:\n if (p.tmpKey != null) {\n this._ref[p.tmpKey] = val\n p.tmpKey = null\n this._dec()\n } else {\n p.tmpKey = val\n\n if (typeof p.tmpKey !== 'string') {\n // too bad, convert to a Map\n p.type = c.PARENT.MAP\n p.ref = utils.buildMap(p.ref)\n }\n }\n break\n case c.PARENT.MAP:\n if (p.tmpKey != null) {\n this._ref.set(p.tmpKey, val)\n p.tmpKey = null\n this._dec()\n } else {\n p.tmpKey = val\n }\n break\n case c.PARENT.TAG:\n this._ref.push(val)\n if (!hasChildren) {\n this._dec()\n }\n break\n default:\n throw new Error('Unknown parent type')\n }\n }\n\n // Create a new parent in the parents list\n _createParent (obj, type, len) {\n this._parents[this._depth] = {\n type: type,\n length: len,\n ref: obj,\n values: 0,\n tmpKey: null\n }\n }\n\n // Reset all state back to the beginning, also used for initiatlization\n _reset () {\n this._res = []\n this._parents = [{\n type: c.PARENT.ARRAY,\n length: -1,\n ref: this._res,\n values: 0,\n tmpKey: null\n }]\n }\n\n // -- Interface to customize deoding behaviour\n createTag (tagNumber, value) {\n const typ = this._knownTags[tagNumber]\n\n if (!typ) {\n return new Tagged(tagNumber, value)\n }\n\n return typ(value)\n }\n\n createMap (obj, len) {\n return obj\n }\n\n createObject (obj, len) {\n return obj\n }\n\n createArray (arr, len) {\n return arr\n }\n\n createByteString (raw, len) {\n return Buffer.concat(raw)\n }\n\n createByteStringFromHeap (start, end) {\n if (start === end) {\n return Buffer.alloc(0)\n }\n\n return Buffer.from(this._heap.slice(start, end))\n }\n\n createInt (val) {\n return val\n }\n\n createInt32 (f, g) {\n return utils.buildInt32(f, g)\n }\n\n createInt64 (f1, f2, g1, g2) {\n return utils.buildInt64(f1, f2, g1, g2)\n }\n\n createFloat (val) {\n return val\n }\n\n createFloatSingle (a, b, c, d) {\n return ieee754.read([a, b, c, d], 0, false, 23, 4)\n }\n\n createFloatDouble (a, b, c, d, e, f, g, h) {\n return ieee754.read([a, b, c, d, e, f, g, h], 0, false, 52, 8)\n }\n\n createInt32Neg (f, g) {\n return -1 - utils.buildInt32(f, g)\n }\n\n createInt64Neg (f1, f2, g1, g2) {\n const f = utils.buildInt32(f1, f2)\n const g = utils.buildInt32(g1, g2)\n\n if (f > c.MAX_SAFE_HIGH) {\n return c.NEG_ONE.minus(new Bignumber(f).times(c.SHIFT32).plus(g))\n }\n\n return -1 - ((f * c.SHIFT32) + g)\n }\n\n createTrue () {\n return true\n }\n\n createFalse () {\n return false\n }\n\n createNull () {\n return null\n }\n\n createUndefined () {\n return undefined\n }\n\n createInfinity () {\n return Infinity\n }\n\n createInfinityNeg () {\n return -Infinity\n }\n\n createNaN () {\n return NaN\n }\n\n createNaNNeg () {\n return -NaN\n }\n\n createUtf8String (raw, len) {\n return raw.join('')\n }\n\n createUtf8StringFromHeap (start, end) {\n if (start === end) {\n return ''\n }\n\n return this._buffer.toString('utf8', start, end)\n }\n\n createSimpleUnassigned (val) {\n return new Simple(val)\n }\n\n // -- Interface for decoder.asm.js\n\n pushInt (val) {\n this._push(this.createInt(val))\n }\n\n pushInt32 (f, g) {\n this._push(this.createInt32(f, g))\n }\n\n pushInt64 (f1, f2, g1, g2) {\n this._push(this.createInt64(f1, f2, g1, g2))\n }\n\n pushFloat (val) {\n this._push(this.createFloat(val))\n }\n\n pushFloatSingle (a, b, c, d) {\n this._push(this.createFloatSingle(a, b, c, d))\n }\n\n pushFloatDouble (a, b, c, d, e, f, g, h) {\n this._push(this.createFloatDouble(a, b, c, d, e, f, g, h))\n }\n\n pushInt32Neg (f, g) {\n this._push(this.createInt32Neg(f, g))\n }\n\n pushInt64Neg (f1, f2, g1, g2) {\n this._push(this.createInt64Neg(f1, f2, g1, g2))\n }\n\n pushTrue () {\n this._push(this.createTrue())\n }\n\n pushFalse () {\n this._push(this.createFalse())\n }\n\n pushNull () {\n this._push(this.createNull())\n }\n\n pushUndefined () {\n this._push(this.createUndefined())\n }\n\n pushInfinity () {\n this._push(this.createInfinity())\n }\n\n pushInfinityNeg () {\n this._push(this.createInfinityNeg())\n }\n\n pushNaN () {\n this._push(this.createNaN())\n }\n\n pushNaNNeg () {\n this._push(this.createNaNNeg())\n }\n\n pushArrayStart () {\n this._createParent([], c.PARENT.ARRAY, -1)\n }\n\n pushArrayStartFixed (len) {\n this._createArrayStartFixed(len)\n }\n\n pushArrayStartFixed32 (len1, len2) {\n const len = utils.buildInt32(len1, len2)\n this._createArrayStartFixed(len)\n }\n\n pushArrayStartFixed64 (len1, len2, len3, len4) {\n const len = utils.buildInt64(len1, len2, len3, len4)\n this._createArrayStartFixed(len)\n }\n\n pushObjectStart () {\n this._createObjectStartFixed(-1)\n }\n\n pushObjectStartFixed (len) {\n this._createObjectStartFixed(len)\n }\n\n pushObjectStartFixed32 (len1, len2) {\n const len = utils.buildInt32(len1, len2)\n this._createObjectStartFixed(len)\n }\n\n pushObjectStartFixed64 (len1, len2, len3, len4) {\n const len = utils.buildInt64(len1, len2, len3, len4)\n this._createObjectStartFixed(len)\n }\n\n pushByteStringStart () {\n this._parents[this._depth] = {\n type: c.PARENT.BYTE_STRING,\n length: -1,\n ref: [],\n values: 0,\n tmpKey: null\n }\n }\n\n pushByteString (start, end) {\n this._push(this.createByteStringFromHeap(start, end))\n }\n\n pushUtf8StringStart () {\n this._parents[this._depth] = {\n type: c.PARENT.UTF8_STRING,\n length: -1,\n ref: [],\n values: 0,\n tmpKey: null\n }\n }\n\n pushUtf8String (start, end) {\n this._push(this.createUtf8StringFromHeap(start, end))\n }\n\n pushSimpleUnassigned (val) {\n this._push(this.createSimpleUnassigned(val))\n }\n\n pushTagStart (tag) {\n this._parents[this._depth] = {\n type: c.PARENT.TAG,\n length: 1,\n ref: [tag]\n }\n }\n\n pushTagStart4 (f, g) {\n this.pushTagStart(utils.buildInt32(f, g))\n }\n\n pushTagStart8 (f1, f2, g1, g2) {\n this.pushTagStart(utils.buildInt64(f1, f2, g1, g2))\n }\n\n pushTagUnassigned (tagNumber) {\n this._push(this.createTag(tagNumber))\n }\n\n pushBreak () {\n if (this._currentParent.length > -1) {\n throw new Error('Unexpected break')\n }\n\n this._closeParent()\n }\n\n _createObjectStartFixed (len) {\n if (len === 0) {\n this._push(this.createObject({}))\n return\n }\n\n this._createParent({}, c.PARENT.OBJECT, len)\n }\n\n _createArrayStartFixed (len) {\n if (len === 0) {\n this._push(this.createArray([]))\n return\n }\n\n this._createParent(new Array(len), c.PARENT.ARRAY, len)\n }\n\n _decode (input) {\n if (input.byteLength === 0) {\n throw new Error('Input too short')\n }\n\n this._reset()\n this._heap8.set(input)\n const code = this.parser.parse(input.byteLength)\n\n if (this._depth > 1) {\n while (this._currentParent.length === 0) {\n this._closeParent()\n }\n if (this._depth > 1) {\n throw new Error('Undeterminated nesting')\n }\n }\n\n if (code > 0) {\n throw new Error('Failed to parse')\n }\n\n if (this._res.length === 0) {\n throw new Error('No valid result')\n }\n }\n\n // -- Public Interface\n\n decodeFirst (input) {\n this._decode(input)\n\n return this._res[0]\n }\n\n decodeAll (input) {\n this._decode(input)\n\n return this._res\n }\n\n /**\n * Decode the first cbor object.\n *\n * @param {Buffer|string} input\n * @param {string} [enc='hex'] - Encoding used if a string is passed.\n * @returns {*}\n */\n static decode (input, enc) {\n if (typeof input === 'string') {\n input = Buffer.from(input, enc || 'hex')\n }\n\n const dec = new Decoder({ size: input.length })\n return dec.decodeFirst(input)\n }\n\n /**\n * Decode all cbor objects.\n *\n * @param {Buffer|string} input\n * @param {string} [enc='hex'] - Encoding used if a string is passed.\n * @returns {Array<*>}\n */\n static decodeAll (input, enc) {\n if (typeof input === 'string') {\n input = Buffer.from(input, enc || 'hex')\n }\n\n const dec = new Decoder({ size: input.length })\n return dec.decodeAll(input)\n }\n}\n\nDecoder.decodeFirst = Decoder.decode\n\nmodule.exports = Decoder\n","'use strict'\n\nconst { Buffer } = require('buffer')\nconst Decoder = require('./decoder')\nconst utils = require('./utils')\n\n/**\n * Output the diagnostic format from a stream of CBOR bytes.\n *\n */\nclass Diagnose extends Decoder {\n createTag (tagNumber, value) {\n return `${tagNumber}(${value})`\n }\n\n createInt (val) {\n return super.createInt(val).toString()\n }\n\n createInt32 (f, g) {\n return super.createInt32(f, g).toString()\n }\n\n createInt64 (f1, f2, g1, g2) {\n return super.createInt64(f1, f2, g1, g2).toString()\n }\n\n createInt32Neg (f, g) {\n return super.createInt32Neg(f, g).toString()\n }\n\n createInt64Neg (f1, f2, g1, g2) {\n return super.createInt64Neg(f1, f2, g1, g2).toString()\n }\n\n createTrue () {\n return 'true'\n }\n\n createFalse () {\n return 'false'\n }\n\n createFloat (val) {\n const fl = super.createFloat(val)\n if (utils.isNegativeZero(val)) {\n return '-0_1'\n }\n\n return `${fl}_1`\n }\n\n createFloatSingle (a, b, c, d) {\n const fl = super.createFloatSingle(a, b, c, d)\n return `${fl}_2`\n }\n\n createFloatDouble (a, b, c, d, e, f, g, h) {\n const fl = super.createFloatDouble(a, b, c, d, e, f, g, h)\n return `${fl}_3`\n }\n\n createByteString (raw, len) {\n const val = raw.join(', ')\n\n if (len === -1) {\n return `(_ ${val})`\n }\n return `h'${val}`\n }\n\n createByteStringFromHeap (start, end) {\n const val = (Buffer.from(\n super.createByteStringFromHeap(start, end)\n )).toString('hex')\n\n return `h'${val}'`\n }\n\n createInfinity () {\n return 'Infinity_1'\n }\n\n createInfinityNeg () {\n return '-Infinity_1'\n }\n\n createNaN () {\n return 'NaN_1'\n }\n\n createNaNNeg () {\n return '-NaN_1'\n }\n\n createNull () {\n return 'null'\n }\n\n createUndefined () {\n return 'undefined'\n }\n\n createSimpleUnassigned (val) {\n return `simple(${val})`\n }\n\n createArray (arr, len) {\n const val = super.createArray(arr, len)\n\n if (len === -1) {\n // indefinite\n return `[_ ${val.join(', ')}]`\n }\n\n return `[${val.join(', ')}]`\n }\n\n createMap (map, len) {\n const val = super.createMap(map)\n const list = Array.from(val.keys())\n .reduce(collectObject(val), '')\n\n if (len === -1) {\n return `{_ ${list}}`\n }\n\n return `{${list}}`\n }\n\n createObject (obj, len) {\n const val = super.createObject(obj)\n const map = Object.keys(val)\n .reduce(collectObject(val), '')\n\n if (len === -1) {\n return `{_ ${map}}`\n }\n\n return `{${map}}`\n }\n\n createUtf8String (raw, len) {\n const val = raw.join(', ')\n\n if (len === -1) {\n return `(_ ${val})`\n }\n\n return `\"${val}\"`\n }\n\n createUtf8StringFromHeap (start, end) {\n const val = (Buffer.from(\n super.createUtf8StringFromHeap(start, end)\n )).toString('utf8')\n\n return `\"${val}\"`\n }\n\n static diagnose (input, enc) {\n if (typeof input === 'string') {\n input = Buffer.from(input, enc || 'hex')\n }\n\n const dec = new Diagnose()\n return dec.decodeFirst(input)\n }\n}\n\nmodule.exports = Diagnose\n\nfunction collectObject (val) {\n return (acc, key) => {\n if (acc) {\n return `${acc}, ${key}: ${val[key]}`\n }\n return `${key}: ${val[key]}`\n }\n}\n","'use strict'\n\nconst { Buffer } = require('buffer')\nconst { URL } = require('iso-url')\nconst Bignumber = require('bignumber.js').BigNumber\n\nconst utils = require('./utils')\nconst constants = require('./constants')\nconst MT = constants.MT\nconst NUMBYTES = constants.NUMBYTES\nconst SHIFT32 = constants.SHIFT32\nconst SYMS = constants.SYMS\nconst TAG = constants.TAG\nconst HALF = (constants.MT.SIMPLE_FLOAT << 5) | constants.NUMBYTES.TWO\nconst FLOAT = (constants.MT.SIMPLE_FLOAT << 5) | constants.NUMBYTES.FOUR\nconst DOUBLE = (constants.MT.SIMPLE_FLOAT << 5) | constants.NUMBYTES.EIGHT\nconst TRUE = (constants.MT.SIMPLE_FLOAT << 5) | constants.SIMPLE.TRUE\nconst FALSE = (constants.MT.SIMPLE_FLOAT << 5) | constants.SIMPLE.FALSE\nconst UNDEFINED = (constants.MT.SIMPLE_FLOAT << 5) | constants.SIMPLE.UNDEFINED\nconst NULL = (constants.MT.SIMPLE_FLOAT << 5) | constants.SIMPLE.NULL\n\nconst MAXINT_BN = new Bignumber('0x20000000000000')\nconst BUF_NAN = Buffer.from('f97e00', 'hex')\nconst BUF_INF_NEG = Buffer.from('f9fc00', 'hex')\nconst BUF_INF_POS = Buffer.from('f97c00', 'hex')\n\nfunction toType (obj) {\n // [object Type]\n // --------8---1\n return ({}).toString.call(obj).slice(8, -1)\n}\n\n/**\n * Transform JavaScript values into CBOR bytes\n *\n */\nclass Encoder {\n /**\n * @param {Object} [options={}]\n * @param {function(Buffer)} options.stream\n */\n constructor (options) {\n options = options || {}\n\n this.streaming = typeof options.stream === 'function'\n this.onData = options.stream\n\n this.semanticTypes = [\n [URL, this._pushUrl],\n [Bignumber, this._pushBigNumber]\n ]\n\n const addTypes = options.genTypes || []\n const len = addTypes.length\n for (let i = 0; i < len; i++) {\n this.addSemanticType(\n addTypes[i][0],\n addTypes[i][1]\n )\n }\n\n this._reset()\n }\n\n addSemanticType (type, fun) {\n const len = this.semanticTypes.length\n for (let i = 0; i < len; i++) {\n const typ = this.semanticTypes[i][0]\n if (typ === type) {\n const old = this.semanticTypes[i][1]\n this.semanticTypes[i][1] = fun\n return old\n }\n }\n this.semanticTypes.push([type, fun])\n return null\n }\n\n push (val) {\n if (!val) {\n return true\n }\n\n this.result[this.offset] = val\n this.resultMethod[this.offset] = 0\n this.resultLength[this.offset] = val.length\n this.offset++\n\n if (this.streaming) {\n this.onData(this.finalize())\n }\n\n return true\n }\n\n pushWrite (val, method, len) {\n this.result[this.offset] = val\n this.resultMethod[this.offset] = method\n this.resultLength[this.offset] = len\n this.offset++\n\n if (this.streaming) {\n this.onData(this.finalize())\n }\n\n return true\n }\n\n _pushUInt8 (val) {\n return this.pushWrite(val, 1, 1)\n }\n\n _pushUInt16BE (val) {\n return this.pushWrite(val, 2, 2)\n }\n\n _pushUInt32BE (val) {\n return this.pushWrite(val, 3, 4)\n }\n\n _pushDoubleBE (val) {\n return this.pushWrite(val, 4, 8)\n }\n\n _pushNaN () {\n return this.push(BUF_NAN)\n }\n\n _pushInfinity (obj) {\n const half = (obj < 0) ? BUF_INF_NEG : BUF_INF_POS\n return this.push(half)\n }\n\n _pushFloat (obj) {\n const b2 = Buffer.allocUnsafe(2)\n\n if (utils.writeHalf(b2, obj)) {\n if (utils.parseHalf(b2) === obj) {\n return this._pushUInt8(HALF) && this.push(b2)\n }\n }\n\n const b4 = Buffer.allocUnsafe(4)\n b4.writeFloatBE(obj, 0)\n if (b4.readFloatBE(0) === obj) {\n return this._pushUInt8(FLOAT) && this.push(b4)\n }\n\n return this._pushUInt8(DOUBLE) && this._pushDoubleBE(obj)\n }\n\n _pushInt (obj, mt, orig) {\n const m = mt << 5\n if (obj < 24) {\n return this._pushUInt8(m | obj)\n }\n\n if (obj <= 0xff) {\n return this._pushUInt8(m | NUMBYTES.ONE) && this._pushUInt8(obj)\n }\n\n if (obj <= 0xffff) {\n return this._pushUInt8(m | NUMBYTES.TWO) && this._pushUInt16BE(obj)\n }\n\n if (obj <= 0xffffffff) {\n return this._pushUInt8(m | NUMBYTES.FOUR) && this._pushUInt32BE(obj)\n }\n\n if (obj <= Number.MAX_SAFE_INTEGER) {\n return this._pushUInt8(m | NUMBYTES.EIGHT) &&\n this._pushUInt32BE(Math.floor(obj / SHIFT32)) &&\n this._pushUInt32BE(obj % SHIFT32)\n }\n\n if (mt === MT.NEG_INT) {\n return this._pushFloat(orig)\n }\n\n return this._pushFloat(obj)\n }\n\n _pushIntNum (obj) {\n if (obj < 0) {\n return this._pushInt(-obj - 1, MT.NEG_INT, obj)\n } else {\n return this._pushInt(obj, MT.POS_INT)\n }\n }\n\n _pushNumber (obj) {\n switch (false) {\n case (obj === obj): // eslint-disable-line\n return this._pushNaN(obj)\n case isFinite(obj):\n return this._pushInfinity(obj)\n case ((obj % 1) !== 0):\n return this._pushIntNum(obj)\n default:\n return this._pushFloat(obj)\n }\n }\n\n _pushString (obj) {\n const len = Buffer.byteLength(obj, 'utf8')\n return this._pushInt(len, MT.UTF8_STRING) && this.pushWrite(obj, 5, len)\n }\n\n _pushBoolean (obj) {\n return this._pushUInt8(obj ? TRUE : FALSE)\n }\n\n _pushUndefined (obj) {\n return this._pushUInt8(UNDEFINED)\n }\n\n _pushArray (gen, obj) {\n const len = obj.length\n if (!gen._pushInt(len, MT.ARRAY)) {\n return false\n }\n for (let j = 0; j < len; j++) {\n if (!gen.pushAny(obj[j])) {\n return false\n }\n }\n return true\n }\n\n _pushTag (tag) {\n return this._pushInt(tag, MT.TAG)\n }\n\n _pushDate (gen, obj) {\n // Round date, to get seconds since 1970-01-01 00:00:00 as defined in\n // Sec. 2.4.1 and get a possibly more compact encoding. Note that it is\n // still allowed to encode fractions of seconds which can be achieved by\n // changing overwriting the encode function for Date objects.\n return gen._pushTag(TAG.DATE_EPOCH) && gen.pushAny(Math.round(obj / 1000))\n }\n\n _pushBuffer (gen, obj) {\n return gen._pushInt(obj.length, MT.BYTE_STRING) && gen.push(obj)\n }\n\n _pushNoFilter (gen, obj) {\n return gen._pushBuffer(gen, obj.slice())\n }\n\n _pushRegexp (gen, obj) {\n return gen._pushTag(TAG.REGEXP) && gen.pushAny(obj.source)\n }\n\n _pushSet (gen, obj) {\n if (!gen._pushInt(obj.size, MT.ARRAY)) {\n return false\n }\n for (const x of obj) {\n if (!gen.pushAny(x)) {\n return false\n }\n }\n return true\n }\n\n _pushUrl (gen, obj) {\n return gen._pushTag(TAG.URI) && gen.pushAny(obj.format())\n }\n\n _pushBigint (obj) {\n let tag = TAG.POS_BIGINT\n if (obj.isNegative()) {\n obj = obj.negated().minus(1)\n tag = TAG.NEG_BIGINT\n }\n let str = obj.toString(16)\n if (str.length % 2) {\n str = '0' + str\n }\n const buf = Buffer.from(str, 'hex')\n return this._pushTag(tag) && this._pushBuffer(this, buf)\n }\n\n _pushBigNumber (gen, obj) {\n if (obj.isNaN()) {\n return gen._pushNaN()\n }\n if (!obj.isFinite()) {\n return gen._pushInfinity(obj.isNegative() ? -Infinity : Infinity)\n }\n if (obj.isInteger()) {\n return gen._pushBigint(obj)\n }\n if (!(gen._pushTag(TAG.DECIMAL_FRAC) &&\n gen._pushInt(2, MT.ARRAY))) {\n return false\n }\n\n const dec = obj.decimalPlaces()\n const slide = obj.multipliedBy(new Bignumber(10).pow(dec))\n if (!gen._pushIntNum(-dec)) {\n return false\n }\n if (slide.abs().isLessThan(MAXINT_BN)) {\n return gen._pushIntNum(slide.toNumber())\n } else {\n return gen._pushBigint(slide)\n }\n }\n\n _pushMap (gen, obj) {\n if (!gen._pushInt(obj.size, MT.MAP)) {\n return false\n }\n\n return this._pushRawMap(\n obj.size,\n Array.from(obj)\n )\n }\n\n _pushObject (obj) {\n if (!obj) {\n return this._pushUInt8(NULL)\n }\n\n var len = this.semanticTypes.length\n for (var i = 0; i < len; i++) {\n if (obj instanceof this.semanticTypes[i][0]) {\n return this.semanticTypes[i][1].call(obj, this, obj)\n }\n }\n\n var f = obj.encodeCBOR\n if (typeof f === 'function') {\n return f.call(obj, this)\n }\n\n var keys = Object.keys(obj)\n var keyLength = keys.length\n if (!this._pushInt(keyLength, MT.MAP)) {\n return false\n }\n\n return this._pushRawMap(\n keyLength,\n keys.map((k) => [k, obj[k]])\n )\n }\n\n _pushRawMap (len, map) {\n // Sort keys for canoncialization\n // 1. encode key\n // 2. shorter key comes before longer key\n // 3. same length keys are sorted with lower\n // byte value before higher\n\n map = map.map(function (a) {\n a[0] = Encoder.encode(a[0])\n return a\n }).sort(utils.keySorter)\n\n for (var j = 0; j < len; j++) {\n if (!this.push(map[j][0])) {\n return false\n }\n\n if (!this.pushAny(map[j][1])) {\n return false\n }\n }\n\n return true\n }\n\n /**\n * Alias for `.pushAny`\n *\n * @param {*} obj\n * @returns {boolean} true on success\n */\n write (obj) {\n return this.pushAny(obj)\n }\n\n /**\n * Push any supported type onto the encoded stream\n *\n * @param {any} obj\n * @returns {boolean} true on success\n */\n pushAny (obj) {\n var typ = toType(obj)\n\n switch (typ) {\n case 'Number':\n return this._pushNumber(obj)\n case 'String':\n return this._pushString(obj)\n case 'Boolean':\n return this._pushBoolean(obj)\n case 'Object':\n return this._pushObject(obj)\n case 'Array':\n return this._pushArray(this, obj)\n case 'Uint8Array':\n return this._pushBuffer(this, Buffer.isBuffer(obj) ? obj : Buffer.from(obj))\n case 'Null':\n return this._pushUInt8(NULL)\n case 'Undefined':\n return this._pushUndefined(obj)\n case 'Map':\n return this._pushMap(this, obj)\n case 'Set':\n return this._pushSet(this, obj)\n case 'URL':\n return this._pushUrl(this, obj)\n case 'BigNumber':\n return this._pushBigNumber(this, obj)\n case 'Date':\n return this._pushDate(this, obj)\n case 'RegExp':\n return this._pushRegexp(this, obj)\n case 'Symbol':\n switch (obj) {\n case SYMS.NULL:\n return this._pushObject(null)\n case SYMS.UNDEFINED:\n return this._pushUndefined(undefined)\n // TODO: Add pluggable support for other symbols\n default:\n throw new Error('Unknown symbol: ' + obj.toString())\n }\n default:\n throw new Error('Unknown type: ' + typeof obj + ', ' + (obj ? obj.toString() : ''))\n }\n }\n\n finalize () {\n if (this.offset === 0) {\n return null\n }\n\n var result = this.result\n var resultLength = this.resultLength\n var resultMethod = this.resultMethod\n var offset = this.offset\n\n // Determine the size of the buffer\n var size = 0\n var i = 0\n\n for (; i < offset; i++) {\n size += resultLength[i]\n }\n\n var res = Buffer.allocUnsafe(size)\n var index = 0\n var length = 0\n\n // Write the content into the result buffer\n for (i = 0; i < offset; i++) {\n length = resultLength[i]\n\n switch (resultMethod[i]) {\n case 0:\n result[i].copy(res, index)\n break\n case 1:\n res.writeUInt8(result[i], index, true)\n break\n case 2:\n res.writeUInt16BE(result[i], index, true)\n break\n case 3:\n res.writeUInt32BE(result[i], index, true)\n break\n case 4:\n res.writeDoubleBE(result[i], index, true)\n break\n case 5:\n res.write(result[i], index, length, 'utf8')\n break\n default:\n throw new Error('unkown method')\n }\n\n index += length\n }\n\n var tmp = res\n\n this._reset()\n\n return tmp\n }\n\n _reset () {\n this.result = []\n this.resultMethod = []\n this.resultLength = []\n this.offset = 0\n }\n\n /**\n * Encode the given value\n * @param {*} o\n * @returns {Buffer}\n */\n static encode (o) {\n const enc = new Encoder()\n const ret = enc.pushAny(o)\n if (!ret) {\n throw new Error('Failed to encode input')\n }\n\n return enc.finalize()\n }\n}\n\nmodule.exports = Encoder\n","'use strict'\n\n// exports.Commented = require('./commented')\nexports.Diagnose = require('./diagnose')\nexports.Decoder = require('./decoder')\nexports.Encoder = require('./encoder')\nexports.Simple = require('./simple')\nexports.Tagged = require('./tagged')\n\n// exports.comment = exports.Commented.comment\nexports.decodeAll = exports.Decoder.decodeAll\nexports.decodeFirst = exports.Decoder.decodeFirst\nexports.diagnose = exports.Diagnose.diagnose\nexports.encode = exports.Encoder.encode\nexports.decode = exports.Decoder.decode\n\nexports.leveldb = {\n decode: exports.Decoder.decodeAll,\n encode: exports.Encoder.encode,\n buffer: true,\n name: 'cbor'\n}\n","'use strict'\n\nconst constants = require('./constants')\nconst MT = constants.MT\nconst SIMPLE = constants.SIMPLE\nconst SYMS = constants.SYMS\n\n/**\n * A CBOR Simple Value that does not map onto a known constant.\n */\nclass Simple {\n /**\n * Creates an instance of Simple.\n *\n * @param {integer} value - the simple value's integer value\n */\n constructor (value) {\n if (typeof value !== 'number') {\n throw new Error('Invalid Simple type: ' + (typeof value))\n }\n if ((value < 0) || (value > 255) || ((value | 0) !== value)) {\n throw new Error('value must be a small positive integer: ' + value)\n }\n this.value = value\n }\n\n /**\n * Debug string for simple value\n *\n * @returns {string} simple(value)\n */\n toString () {\n return 'simple(' + this.value + ')'\n }\n\n /**\n * Debug string for simple value\n *\n * @returns {string} simple(value)\n */\n inspect () {\n return 'simple(' + this.value + ')'\n }\n\n /**\n * Push the simple value onto the CBOR stream\n *\n * @param {cbor.Encoder} gen The generator to push onto\n * @returns {number}\n */\n encodeCBOR (gen) {\n return gen._pushInt(this.value, MT.SIMPLE_FLOAT)\n }\n\n /**\n * Is the given object a Simple?\n *\n * @param {any} obj - object to test\n * @returns {bool} - is it Simple?\n */\n static isSimple (obj) {\n return obj instanceof Simple\n }\n\n /**\n * Decode from the CBOR additional information into a JavaScript value.\n * If the CBOR item has no parent, return a \"safe\" symbol instead of\n * `null` or `undefined`, so that the value can be passed through a\n * stream in object mode.\n *\n * @param {Number} val - the CBOR additional info to convert\n * @param {bool} hasParent - Does the CBOR item have a parent?\n * @returns {(null|undefined|Boolean|Symbol)} - the decoded value\n */\n static decode (val, hasParent) {\n if (hasParent == null) {\n hasParent = true\n }\n switch (val) {\n case SIMPLE.FALSE:\n return false\n case SIMPLE.TRUE:\n return true\n case SIMPLE.NULL:\n if (hasParent) {\n return null\n } else {\n return SYMS.NULL\n }\n case SIMPLE.UNDEFINED:\n if (hasParent) {\n return undefined\n } else {\n return SYMS.UNDEFINED\n }\n case -1:\n if (!hasParent) {\n throw new Error('Invalid BREAK')\n }\n return SYMS.BREAK\n default:\n return new Simple(val)\n }\n }\n}\n\nmodule.exports = Simple\n","'use strict'\n\n/**\n * A CBOR tagged item, where the tag does not have semantics specified at the\n * moment, or those semantics threw an error during parsing. Typically this will\n * be an extension point you're not yet expecting.\n */\nclass Tagged {\n /**\n * Creates an instance of Tagged.\n *\n * @param {Number} tag - the number of the tag\n * @param {any} value - the value inside the tag\n * @param {Error} err - the error that was thrown parsing the tag, or null\n */\n constructor (tag, value, err) {\n this.tag = tag\n this.value = value\n this.err = err\n if (typeof this.tag !== 'number') {\n throw new Error('Invalid tag type (' + (typeof this.tag) + ')')\n }\n if ((this.tag < 0) || ((this.tag | 0) !== this.tag)) {\n throw new Error('Tag must be a positive integer: ' + this.tag)\n }\n }\n\n /**\n * Convert to a String\n *\n * @returns {String} string of the form '1(2)'\n */\n toString () {\n return `${this.tag}(${JSON.stringify(this.value)})`\n }\n\n /**\n * Push the simple value onto the CBOR stream\n *\n * @param {cbor.Encoder} gen The generator to push onto\n * @returns {number}\n */\n encodeCBOR (gen) {\n gen._pushTag(this.tag)\n return gen.pushAny(this.value)\n }\n\n /**\n * If we have a converter for this type, do the conversion. Some converters\n * are built-in. Additional ones can be passed in. If you want to remove\n * a built-in converter, pass a converter in whose value is 'null' instead\n * of a function.\n *\n * @param {Object} converters - keys in the object are a tag number, the value\n * is a function that takes the decoded CBOR and returns a JavaScript value\n * of the appropriate type. Throw an exception in the function on errors.\n * @returns {any} - the converted item\n */\n convert (converters) {\n var er, f\n f = converters != null ? converters[this.tag] : undefined\n if (typeof f !== 'function') {\n f = Tagged['_tag' + this.tag]\n if (typeof f !== 'function') {\n return this\n }\n }\n try {\n return f.call(Tagged, this.value)\n } catch (error) {\n er = error\n this.err = er\n return this\n }\n }\n}\n\nmodule.exports = Tagged\n","'use strict'\n\nconst { Buffer } = require('buffer')\nconst Bignumber = require('bignumber.js').BigNumber\n\nconst constants = require('./constants')\nconst SHIFT32 = constants.SHIFT32\nconst SHIFT16 = constants.SHIFT16\nconst MAX_SAFE_HIGH = 0x1fffff\n\nexports.parseHalf = function parseHalf (buf) {\n var exp, mant, sign\n sign = buf[0] & 0x80 ? -1 : 1\n exp = (buf[0] & 0x7C) >> 2\n mant = ((buf[0] & 0x03) << 8) | buf[1]\n if (!exp) {\n return sign * 5.9604644775390625e-8 * mant\n } else if (exp === 0x1f) {\n return sign * (mant ? 0 / 0 : 2e308)\n } else {\n return sign * Math.pow(2, exp - 25) * (1024 + mant)\n }\n}\n\nfunction toHex (n) {\n if (n < 16) {\n return '0' + n.toString(16)\n }\n\n return n.toString(16)\n}\n\nexports.arrayBufferToBignumber = function (buf) {\n const len = buf.byteLength\n let res = ''\n for (let i = 0; i < len; i++) {\n res += toHex(buf[i])\n }\n\n return new Bignumber(res, 16)\n}\n\n// convert an Object into a Map\nexports.buildMap = (obj) => {\n const res = new Map()\n const keys = Object.keys(obj)\n const length = keys.length\n for (let i = 0; i < length; i++) {\n res.set(keys[i], obj[keys[i]])\n }\n return res\n}\n\nexports.buildInt32 = (f, g) => {\n return f * SHIFT16 + g\n}\n\nexports.buildInt64 = (f1, f2, g1, g2) => {\n const f = exports.buildInt32(f1, f2)\n const g = exports.buildInt32(g1, g2)\n\n if (f > MAX_SAFE_HIGH) {\n return new Bignumber(f).times(SHIFT32).plus(g)\n } else {\n return (f * SHIFT32) + g\n }\n}\n\nexports.writeHalf = function writeHalf (buf, half) {\n // assume 0, -0, NaN, Infinity, and -Infinity have already been caught\n\n // HACK: everyone settle in. This isn't going to be pretty.\n // Translate cn-cbor's C code (from Carsten Borman):\n\n // uint32_t be32;\n // uint16_t be16, u16;\n // union {\n // float f;\n // uint32_t u;\n // } u32;\n // u32.f = float_val;\n\n const u32 = Buffer.allocUnsafe(4)\n u32.writeFloatBE(half, 0)\n const u = u32.readUInt32BE(0)\n\n // if ((u32.u & 0x1FFF) == 0) { /* worth trying half */\n\n // hildjj: If the lower 13 bits are 0, we won't lose anything in the conversion\n if ((u & 0x1FFF) !== 0) {\n return false\n }\n\n // int s16 = (u32.u >> 16) & 0x8000;\n // int exp = (u32.u >> 23) & 0xff;\n // int mant = u32.u & 0x7fffff;\n\n var s16 = (u >> 16) & 0x8000 // top bit is sign\n const exp = (u >> 23) & 0xff // then 5 bits of exponent\n const mant = u & 0x7fffff\n\n // if (exp == 0 && mant == 0)\n // ; /* 0.0, -0.0 */\n\n // hildjj: zeros already handled. Assert if you don't believe me.\n\n // else if (exp >= 113 && exp <= 142) /* normalized */\n // s16 += ((exp - 112) << 10) + (mant >> 13);\n if ((exp >= 113) && (exp <= 142)) {\n s16 += ((exp - 112) << 10) + (mant >> 13)\n\n // else if (exp >= 103 && exp < 113) { /* denorm, exp16 = 0 */\n // if (mant & ((1 << (126 - exp)) - 1))\n // goto float32; /* loss of precision */\n // s16 += ((mant + 0x800000) >> (126 - exp));\n } else if ((exp >= 103) && (exp < 113)) {\n if (mant & ((1 << (126 - exp)) - 1)) {\n return false\n }\n s16 += ((mant + 0x800000) >> (126 - exp))\n\n // } else if (exp == 255 && mant == 0) { /* Inf */\n // s16 += 0x7c00;\n\n // hildjj: Infinity already handled\n\n // } else\n // goto float32; /* loss of range */\n } else {\n return false\n }\n\n // ensure_writable(3);\n // u16 = s16;\n // be16 = hton16p((const uint8_t*)&u16);\n buf.writeUInt16BE(s16, 0)\n return true\n}\n\nexports.keySorter = function (a, b) {\n var lenA = a[0].byteLength\n var lenB = b[0].byteLength\n\n if (lenA > lenB) {\n return 1\n }\n\n if (lenB > lenA) {\n return -1\n }\n\n return a[0].compare(b[0])\n}\n\n// Adapted from http://www.2ality.com/2012/03/signedzero.html\nexports.isNegativeZero = (x) => {\n return x === 0 && (1 / x < 0)\n}\n\nexports.nextPowerOf2 = (n) => {\n let count = 0\n // First n in the below condition is for\n // the case where n is 0\n if (n && !(n & (n - 1))) {\n return n\n }\n\n while (n !== 0) {\n n >>= 1\n count += 1\n }\n\n return 1 << count\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n var arr = new Uint8Array(1)\n var proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n var buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n var valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n var b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(\n value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n )\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n var length = byteLength(string, encoding) | 0\n var buf = createBuffer(length)\n\n var actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(length)\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n var copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n var buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n var buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n Buffer.from(buf).copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n var len = string.length\n var mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n var strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (var i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n var len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nvar hexSliceLookupTable = (function () {\n var alphabet = '0123456789abcdef'\n var table = new Array(256)\n for (var i = 0; i < 16; ++i) {\n var i16 = i * 16\n for (var j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n","'use strict';\n\nconst {\n URLWithLegacySupport,\n format,\n URLSearchParams,\n defaultBase\n} = require('./src/url');\nconst relative = require('./src/relative');\n\nmodule.exports = {\n URL: URLWithLegacySupport,\n URLSearchParams,\n format,\n relative,\n defaultBase\n};\n","'use strict';\n\nconst { URLWithLegacySupport, format } = require('./url');\n\nmodule.exports = (url, location = {}, protocolMap = {}, defaultProtocol) => {\n let protocol = location.protocol ?\n location.protocol.replace(':', '') :\n 'http';\n\n // Check protocol map\n protocol = (protocolMap[protocol] || defaultProtocol || protocol) + ':';\n let urlParsed;\n\n try {\n urlParsed = new URLWithLegacySupport(url);\n } catch (err) {\n urlParsed = {};\n }\n\n const base = Object.assign({}, location, {\n protocol: protocol || urlParsed.protocol,\n host: location.host || urlParsed.host\n });\n\n return new URLWithLegacySupport(url, format(base)).toString();\n};\n","'use strict';\n\nconst defaultBase = self.location ?\n self.location.protocol + '//' + self.location.host :\n '';\nconst URL = self.URL;\n\nclass URLWithLegacySupport {\n constructor(url = '', base = defaultBase) {\n this.super = new URL(url, base);\n this.path = this.pathname + this.search;\n this.auth =\n this.username && this.password ?\n this.username + ':' + this.password :\n null;\n\n this.query =\n this.search && this.search.startsWith('?') ?\n this.search.slice(1) :\n null;\n }\n\n get hash() {\n return this.super.hash;\n }\n get host() {\n return this.super.host;\n }\n get hostname() {\n return this.super.hostname;\n }\n get href() {\n return this.super.href;\n }\n get origin() {\n return this.super.origin;\n }\n get password() {\n return this.super.password;\n }\n get pathname() {\n return this.super.pathname;\n }\n get port() {\n return this.super.port;\n }\n get protocol() {\n return this.super.protocol;\n }\n get search() {\n return this.super.search;\n }\n get searchParams() {\n return this.super.searchParams;\n }\n get username() {\n return this.super.username;\n }\n\n set hash(hash) {\n this.super.hash = hash;\n }\n set host(host) {\n this.super.host = host;\n }\n set hostname(hostname) {\n this.super.hostname = hostname;\n }\n set href(href) {\n this.super.href = href;\n }\n set origin(origin) {\n this.super.origin = origin;\n }\n set password(password) {\n this.super.password = password;\n }\n set pathname(pathname) {\n this.super.pathname = pathname;\n }\n set port(port) {\n this.super.port = port;\n }\n set protocol(protocol) {\n this.super.protocol = protocol;\n }\n set search(search) {\n this.super.search = search;\n }\n set searchParams(searchParams) {\n this.super.searchParams = searchParams;\n }\n set username(username) {\n this.super.username = username;\n }\n\n createObjectURL(o) {\n return this.super.createObjectURL(o);\n }\n revokeObjectURL(o) {\n this.super.revokeObjectURL(o);\n }\n toJSON() {\n return this.super.toJSON();\n }\n toString() {\n return this.super.toString();\n }\n format() {\n return this.toString();\n }\n}\n\nfunction format(obj) {\n if (typeof obj === 'string') {\n const url = new URL(obj);\n\n return url.toString();\n }\n\n if (!(obj instanceof URL)) {\n const userPass =\n obj.username && obj.password ?\n `${obj.username}:${obj.password}@` :\n '';\n const auth = obj.auth ? obj.auth + '@' : '';\n const port = obj.port ? ':' + obj.port : '';\n const protocol = obj.protocol ? obj.protocol + '//' : '';\n const host = obj.host || '';\n const hostname = obj.hostname || '';\n const search = obj.search || (obj.query ? '?' + obj.query : '');\n const hash = obj.hash || '';\n const pathname = obj.pathname || '';\n const path = obj.path || pathname + search;\n\n return `${protocol}${userPass || auth}${host ||\n hostname + port}${path}${hash}`;\n }\n}\n\nmodule.exports = {\n URLWithLegacySupport,\n URLSearchParams: self.URLSearchParams,\n defaultBase,\n format\n};\n","/*\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n */\n(function(){\n \"use strict\";\n\n var chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n\n // Use a lookup table to find the index.\n var lookup = new Uint8Array(256);\n for (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n }\n\n exports.encode = function(arraybuffer) {\n var bytes = new Uint8Array(arraybuffer),\n i, len = bytes.length, base64 = \"\";\n\n for (i = 0; i < len; i+=3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n\n if ((len % 3) === 2) {\n base64 = base64.substring(0, base64.length - 1) + \"=\";\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + \"==\";\n }\n\n return base64;\n };\n\n exports.decode = function(base64) {\n var bufferLength = base64.length * 0.75,\n len = base64.length, i, p = 0,\n encoded1, encoded2, encoded3, encoded4;\n\n if (base64[base64.length - 1] === \"=\") {\n bufferLength--;\n if (base64[base64.length - 2] === \"=\") {\n bufferLength--;\n }\n }\n\n var arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (i = 0; i < len; i+=4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i+1)];\n encoded3 = lookup[base64.charCodeAt(i+2)];\n encoded4 = lookup[base64.charCodeAt(i+3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return arraybuffer;\n };\n})();\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n",";(function (globalObject) {\r\n 'use strict';\r\n\r\n/*\r\n * bignumber.js v9.0.1\r\n * A JavaScript library for arbitrary-precision arithmetic.\r\n * https://github.com/MikeMcl/bignumber.js\r\n * Copyright (c) 2020 Michael Mclaughlin \r\n * MIT Licensed.\r\n *\r\n * BigNumber.prototype methods | BigNumber methods\r\n * |\r\n * absoluteValue abs | clone\r\n * comparedTo | config set\r\n * decimalPlaces dp | DECIMAL_PLACES\r\n * dividedBy div | ROUNDING_MODE\r\n * dividedToIntegerBy idiv | EXPONENTIAL_AT\r\n * exponentiatedBy pow | RANGE\r\n * integerValue | CRYPTO\r\n * isEqualTo eq | MODULO_MODE\r\n * isFinite | POW_PRECISION\r\n * isGreaterThan gt | FORMAT\r\n * isGreaterThanOrEqualTo gte | ALPHABET\r\n * isInteger | isBigNumber\r\n * isLessThan lt | maximum max\r\n * isLessThanOrEqualTo lte | minimum min\r\n * isNaN | random\r\n * isNegative | sum\r\n * isPositive |\r\n * isZero |\r\n * minus |\r\n * modulo mod |\r\n * multipliedBy times |\r\n * negated |\r\n * plus |\r\n * precision sd |\r\n * shiftedBy |\r\n * squareRoot sqrt |\r\n * toExponential |\r\n * toFixed |\r\n * toFormat |\r\n * toFraction |\r\n * toJSON |\r\n * toNumber |\r\n * toPrecision |\r\n * toString |\r\n * valueOf |\r\n *\r\n */\r\n\r\n\r\n var BigNumber,\r\n isNumeric = /^-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?$/i,\r\n mathceil = Math.ceil,\r\n mathfloor = Math.floor,\r\n\r\n bignumberError = '[BigNumber Error] ',\r\n tooManyDigits = bignumberError + 'Number primitive has more than 15 significant digits: ',\r\n\r\n BASE = 1e14,\r\n LOG_BASE = 14,\r\n MAX_SAFE_INTEGER = 0x1fffffffffffff, // 2^53 - 1\r\n // MAX_INT32 = 0x7fffffff, // 2^31 - 1\r\n POWS_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13],\r\n SQRT_BASE = 1e7,\r\n\r\n // EDITABLE\r\n // The limit on the value of DECIMAL_PLACES, TO_EXP_NEG, TO_EXP_POS, MIN_EXP, MAX_EXP, and\r\n // the arguments to toExponential, toFixed, toFormat, and toPrecision.\r\n MAX = 1E9; // 0 to MAX_INT32\r\n\r\n\r\n /*\r\n * Create and return a BigNumber constructor.\r\n */\r\n function clone(configObject) {\r\n var div, convertBase, parseNumeric,\r\n P = BigNumber.prototype = { constructor: BigNumber, toString: null, valueOf: null },\r\n ONE = new BigNumber(1),\r\n\r\n\r\n //----------------------------- EDITABLE CONFIG DEFAULTS -------------------------------\r\n\r\n\r\n // The default values below must be integers within the inclusive ranges stated.\r\n // The values can also be changed at run-time using BigNumber.set.\r\n\r\n // The maximum number of decimal places for operations involving division.\r\n DECIMAL_PLACES = 20, // 0 to MAX\r\n\r\n // The rounding mode used when rounding to the above decimal places, and when using\r\n // toExponential, toFixed, toFormat and toPrecision, and round (default value).\r\n // UP 0 Away from zero.\r\n // DOWN 1 Towards zero.\r\n // CEIL 2 Towards +Infinity.\r\n // FLOOR 3 Towards -Infinity.\r\n // HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n ROUNDING_MODE = 4, // 0 to 8\r\n\r\n // EXPONENTIAL_AT : [TO_EXP_NEG , TO_EXP_POS]\r\n\r\n // The exponent value at and beneath which toString returns exponential notation.\r\n // Number type: -7\r\n TO_EXP_NEG = -7, // 0 to -MAX\r\n\r\n // The exponent value at and above which toString returns exponential notation.\r\n // Number type: 21\r\n TO_EXP_POS = 21, // 0 to MAX\r\n\r\n // RANGE : [MIN_EXP, MAX_EXP]\r\n\r\n // The minimum exponent value, beneath which underflow to zero occurs.\r\n // Number type: -324 (5e-324)\r\n MIN_EXP = -1e7, // -1 to -MAX\r\n\r\n // The maximum exponent value, above which overflow to Infinity occurs.\r\n // Number type: 308 (1.7976931348623157e+308)\r\n // For MAX_EXP > 1e7, e.g. new BigNumber('1e100000000').plus(1) may be slow.\r\n MAX_EXP = 1e7, // 1 to MAX\r\n\r\n // Whether to use cryptographically-secure random number generation, if available.\r\n CRYPTO = false, // true or false\r\n\r\n // The modulo mode used when calculating the modulus: a mod n.\r\n // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n // The remainder (r) is calculated as: r = a - n * q.\r\n //\r\n // UP 0 The remainder is positive if the dividend is negative, else is negative.\r\n // DOWN 1 The remainder has the same sign as the dividend.\r\n // This modulo mode is commonly known as 'truncated division' and is\r\n // equivalent to (a % n) in JavaScript.\r\n // FLOOR 3 The remainder has the same sign as the divisor (Python %).\r\n // HALF_EVEN 6 This modulo mode implements the IEEE 754 remainder function.\r\n // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)).\r\n // The remainder is always positive.\r\n //\r\n // The truncated division, floored division, Euclidian division and IEEE 754 remainder\r\n // modes are commonly used for the modulus operation.\r\n // Although the other rounding modes can also be used, they may not give useful results.\r\n MODULO_MODE = 1, // 0 to 9\r\n\r\n // The maximum number of significant digits of the result of the exponentiatedBy operation.\r\n // If POW_PRECISION is 0, there will be unlimited significant digits.\r\n POW_PRECISION = 0, // 0 to MAX\r\n\r\n // The format specification used by the BigNumber.prototype.toFormat method.\r\n FORMAT = {\r\n prefix: '',\r\n groupSize: 3,\r\n secondaryGroupSize: 0,\r\n groupSeparator: ',',\r\n decimalSeparator: '.',\r\n fractionGroupSize: 0,\r\n fractionGroupSeparator: '\\xA0', // non-breaking space\r\n suffix: ''\r\n },\r\n\r\n // The alphabet used for base conversion. It must be at least 2 characters long, with no '+',\r\n // '-', '.', whitespace, or repeated character.\r\n // '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_'\r\n ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyz';\r\n\r\n\r\n //------------------------------------------------------------------------------------------\r\n\r\n\r\n // CONSTRUCTOR\r\n\r\n\r\n /*\r\n * The BigNumber constructor and exported function.\r\n * Create and return a new instance of a BigNumber object.\r\n *\r\n * v {number|string|BigNumber} A numeric value.\r\n * [b] {number} The base of v. Integer, 2 to ALPHABET.length inclusive.\r\n */\r\n function BigNumber(v, b) {\r\n var alphabet, c, caseChanged, e, i, isNum, len, str,\r\n x = this;\r\n\r\n // Enable constructor call without `new`.\r\n if (!(x instanceof BigNumber)) return new BigNumber(v, b);\r\n\r\n if (b == null) {\r\n\r\n if (v && v._isBigNumber === true) {\r\n x.s = v.s;\r\n\r\n if (!v.c || v.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else if (v.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = v.e;\r\n x.c = v.c.slice();\r\n }\r\n\r\n return;\r\n }\r\n\r\n if ((isNum = typeof v == 'number') && v * 0 == 0) {\r\n\r\n // Use `1 / n` to handle minus zero also.\r\n x.s = 1 / v < 0 ? (v = -v, -1) : 1;\r\n\r\n // Fast path for integers, where n < 2147483648 (2**31).\r\n if (v === ~~v) {\r\n for (e = 0, i = v; i >= 10; i /= 10, e++);\r\n\r\n if (e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else {\r\n x.e = e;\r\n x.c = [v];\r\n }\r\n\r\n return;\r\n }\r\n\r\n str = String(v);\r\n } else {\r\n\r\n if (!isNumeric.test(str = String(v))) return parseNumeric(x, str, isNum);\r\n\r\n x.s = str.charCodeAt(0) == 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n\r\n // Allow exponential notation to be used with base 10 argument, while\r\n // also rounding to DECIMAL_PLACES as with other bases.\r\n if (b == 10) {\r\n x = new BigNumber(v);\r\n return round(x, DECIMAL_PLACES + x.e + 1, ROUNDING_MODE);\r\n }\r\n\r\n str = String(v);\r\n\r\n if (isNum = typeof v == 'number') {\r\n\r\n // Avoid potential interpretation of Infinity and NaN as base 44+ values.\r\n if (v * 0 != 0) return parseNumeric(x, str, isNum, b);\r\n\r\n x.s = 1 / v < 0 ? (str = str.slice(1), -1) : 1;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (BigNumber.DEBUG && str.replace(/^0\\.0*|\\./, '').length > 15) {\r\n throw Error\r\n (tooManyDigits + v);\r\n }\r\n } else {\r\n x.s = str.charCodeAt(0) === 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n alphabet = ALPHABET.slice(0, b);\r\n e = i = 0;\r\n\r\n // Check that str is a valid base b number.\r\n // Don't use RegExp, so alphabet can contain special characters.\r\n for (len = str.length; i < len; i++) {\r\n if (alphabet.indexOf(c = str.charAt(i)) < 0) {\r\n if (c == '.') {\r\n\r\n // If '.' is not the first character and it has not be found before.\r\n if (i > e) {\r\n e = len;\r\n continue;\r\n }\r\n } else if (!caseChanged) {\r\n\r\n // Allow e.g. hexadecimal 'FF' as well as 'ff'.\r\n if (str == str.toUpperCase() && (str = str.toLowerCase()) ||\r\n str == str.toLowerCase() && (str = str.toUpperCase())) {\r\n caseChanged = true;\r\n i = -1;\r\n e = 0;\r\n continue;\r\n }\r\n }\r\n\r\n return parseNumeric(x, String(v), isNum, b);\r\n }\r\n }\r\n\r\n // Prevent later check for length on converted number.\r\n isNum = false;\r\n str = convertBase(str, b, 10, x.s);\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n else e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48; i++);\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(--len) === 48;);\r\n\r\n if (str = str.slice(i, ++len)) {\r\n len -= i;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (isNum && BigNumber.DEBUG &&\r\n len > 15 && (v > MAX_SAFE_INTEGER || v !== mathfloor(v))) {\r\n throw Error\r\n (tooManyDigits + (x.s * v));\r\n }\r\n\r\n // Overflow?\r\n if ((e = e - i - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n x.c = x.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = e;\r\n x.c = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first element of the coefficient array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE; // i < 1\r\n\r\n if (i < len) {\r\n if (i) x.c.push(+str.slice(0, i));\r\n\r\n for (len -= LOG_BASE; i < len;) {\r\n x.c.push(+str.slice(i, i += LOG_BASE));\r\n }\r\n\r\n i = LOG_BASE - (str = str.slice(i)).length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--; str += '0');\r\n x.c.push(+str);\r\n }\r\n } else {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n\r\n // CONSTRUCTOR PROPERTIES\r\n\r\n\r\n BigNumber.clone = clone;\r\n\r\n BigNumber.ROUND_UP = 0;\r\n BigNumber.ROUND_DOWN = 1;\r\n BigNumber.ROUND_CEIL = 2;\r\n BigNumber.ROUND_FLOOR = 3;\r\n BigNumber.ROUND_HALF_UP = 4;\r\n BigNumber.ROUND_HALF_DOWN = 5;\r\n BigNumber.ROUND_HALF_EVEN = 6;\r\n BigNumber.ROUND_HALF_CEIL = 7;\r\n BigNumber.ROUND_HALF_FLOOR = 8;\r\n BigNumber.EUCLID = 9;\r\n\r\n\r\n /*\r\n * Configure infrequently-changing library-wide settings.\r\n *\r\n * Accept an object with the following optional properties (if the value of a property is\r\n * a number, it must be an integer within the inclusive range stated):\r\n *\r\n * DECIMAL_PLACES {number} 0 to MAX\r\n * ROUNDING_MODE {number} 0 to 8\r\n * EXPONENTIAL_AT {number|number[]} -MAX to MAX or [-MAX to 0, 0 to MAX]\r\n * RANGE {number|number[]} -MAX to MAX (not zero) or [-MAX to -1, 1 to MAX]\r\n * CRYPTO {boolean} true or false\r\n * MODULO_MODE {number} 0 to 9\r\n * POW_PRECISION {number} 0 to MAX\r\n * ALPHABET {string} A string of two or more unique characters which does\r\n * not contain '.'.\r\n * FORMAT {object} An object with some of the following properties:\r\n * prefix {string}\r\n * groupSize {number}\r\n * secondaryGroupSize {number}\r\n * groupSeparator {string}\r\n * decimalSeparator {string}\r\n * fractionGroupSize {number}\r\n * fractionGroupSeparator {string}\r\n * suffix {string}\r\n *\r\n * (The values assigned to the above FORMAT object properties are not checked for validity.)\r\n *\r\n * E.g.\r\n * BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 })\r\n *\r\n * Ignore properties/parameters set to null or undefined, except for ALPHABET.\r\n *\r\n * Return an object with the properties current values.\r\n */\r\n BigNumber.config = BigNumber.set = function (obj) {\r\n var p, v;\r\n\r\n if (obj != null) {\r\n\r\n if (typeof obj == 'object') {\r\n\r\n // DECIMAL_PLACES {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] DECIMAL_PLACES {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'DECIMAL_PLACES')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n DECIMAL_PLACES = v;\r\n }\r\n\r\n // ROUNDING_MODE {number} Integer, 0 to 8 inclusive.\r\n // '[BigNumber Error] ROUNDING_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'ROUNDING_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 8, p);\r\n ROUNDING_MODE = v;\r\n }\r\n\r\n // EXPONENTIAL_AT {number|number[]}\r\n // Integer, -MAX to MAX inclusive or\r\n // [integer -MAX to 0 inclusive, 0 to MAX inclusive].\r\n // '[BigNumber Error] EXPONENTIAL_AT {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'EXPONENTIAL_AT')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, 0, p);\r\n intCheck(v[1], 0, MAX, p);\r\n TO_EXP_NEG = v[0];\r\n TO_EXP_POS = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n TO_EXP_NEG = -(TO_EXP_POS = v < 0 ? -v : v);\r\n }\r\n }\r\n\r\n // RANGE {number|number[]} Non-zero integer, -MAX to MAX inclusive or\r\n // [integer -MAX to -1 inclusive, integer 1 to MAX inclusive].\r\n // '[BigNumber Error] RANGE {not a primitive number|not an integer|out of range|cannot be zero}: {v}'\r\n if (obj.hasOwnProperty(p = 'RANGE')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, -1, p);\r\n intCheck(v[1], 1, MAX, p);\r\n MIN_EXP = v[0];\r\n MAX_EXP = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n if (v) {\r\n MIN_EXP = -(MAX_EXP = v < 0 ? -v : v);\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' cannot be zero: ' + v);\r\n }\r\n }\r\n }\r\n\r\n // CRYPTO {boolean} true or false.\r\n // '[BigNumber Error] CRYPTO not true or false: {v}'\r\n // '[BigNumber Error] crypto unavailable'\r\n if (obj.hasOwnProperty(p = 'CRYPTO')) {\r\n v = obj[p];\r\n if (v === !!v) {\r\n if (v) {\r\n if (typeof crypto != 'undefined' && crypto &&\r\n (crypto.getRandomValues || crypto.randomBytes)) {\r\n CRYPTO = v;\r\n } else {\r\n CRYPTO = !v;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n } else {\r\n CRYPTO = v;\r\n }\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' not true or false: ' + v);\r\n }\r\n }\r\n\r\n // MODULO_MODE {number} Integer, 0 to 9 inclusive.\r\n // '[BigNumber Error] MODULO_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'MODULO_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 9, p);\r\n MODULO_MODE = v;\r\n }\r\n\r\n // POW_PRECISION {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] POW_PRECISION {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'POW_PRECISION')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n POW_PRECISION = v;\r\n }\r\n\r\n // FORMAT {object}\r\n // '[BigNumber Error] FORMAT not an object: {v}'\r\n if (obj.hasOwnProperty(p = 'FORMAT')) {\r\n v = obj[p];\r\n if (typeof v == 'object') FORMAT = v;\r\n else throw Error\r\n (bignumberError + p + ' not an object: ' + v);\r\n }\r\n\r\n // ALPHABET {string}\r\n // '[BigNumber Error] ALPHABET invalid: {v}'\r\n if (obj.hasOwnProperty(p = 'ALPHABET')) {\r\n v = obj[p];\r\n\r\n // Disallow if less than two characters,\r\n // or if it contains '+', '-', '.', whitespace, or a repeated character.\r\n if (typeof v == 'string' && !/^.?$|[+\\-.\\s]|(.).*\\1/.test(v)) {\r\n ALPHABET = v;\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' invalid: ' + v);\r\n }\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Object expected: {v}'\r\n throw Error\r\n (bignumberError + 'Object expected: ' + obj);\r\n }\r\n }\r\n\r\n return {\r\n DECIMAL_PLACES: DECIMAL_PLACES,\r\n ROUNDING_MODE: ROUNDING_MODE,\r\n EXPONENTIAL_AT: [TO_EXP_NEG, TO_EXP_POS],\r\n RANGE: [MIN_EXP, MAX_EXP],\r\n CRYPTO: CRYPTO,\r\n MODULO_MODE: MODULO_MODE,\r\n POW_PRECISION: POW_PRECISION,\r\n FORMAT: FORMAT,\r\n ALPHABET: ALPHABET\r\n };\r\n };\r\n\r\n\r\n /*\r\n * Return true if v is a BigNumber instance, otherwise return false.\r\n *\r\n * If BigNumber.DEBUG is true, throw if a BigNumber instance is not well-formed.\r\n *\r\n * v {any}\r\n *\r\n * '[BigNumber Error] Invalid BigNumber: {v}'\r\n */\r\n BigNumber.isBigNumber = function (v) {\r\n if (!v || v._isBigNumber !== true) return false;\r\n if (!BigNumber.DEBUG) return true;\r\n\r\n var i, n,\r\n c = v.c,\r\n e = v.e,\r\n s = v.s;\r\n\r\n out: if ({}.toString.call(c) == '[object Array]') {\r\n\r\n if ((s === 1 || s === -1) && e >= -MAX && e <= MAX && e === mathfloor(e)) {\r\n\r\n // If the first element is zero, the BigNumber value must be zero.\r\n if (c[0] === 0) {\r\n if (e === 0 && c.length === 1) return true;\r\n break out;\r\n }\r\n\r\n // Calculate number of digits that c[0] should have, based on the exponent.\r\n i = (e + 1) % LOG_BASE;\r\n if (i < 1) i += LOG_BASE;\r\n\r\n // Calculate number of digits of c[0].\r\n //if (Math.ceil(Math.log(c[0] + 1) / Math.LN10) == i) {\r\n if (String(c[0]).length == i) {\r\n\r\n for (i = 0; i < c.length; i++) {\r\n n = c[i];\r\n if (n < 0 || n >= BASE || n !== mathfloor(n)) break out;\r\n }\r\n\r\n // Last element cannot be zero, unless it is the only element.\r\n if (n !== 0) return true;\r\n }\r\n }\r\n\r\n // Infinity/NaN\r\n } else if (c === null && e === null && (s === null || s === 1 || s === -1)) {\r\n return true;\r\n }\r\n\r\n throw Error\r\n (bignumberError + 'Invalid BigNumber: ' + v);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the maximum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.maximum = BigNumber.max = function () {\r\n return maxOrMin(arguments, P.lt);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the minimum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.minimum = BigNumber.min = function () {\r\n return maxOrMin(arguments, P.gt);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber with a random value equal to or greater than 0 and less than 1,\r\n * and with dp, or DECIMAL_PLACES if dp is omitted, decimal places (or less if trailing\r\n * zeros are produced).\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp}'\r\n * '[BigNumber Error] crypto unavailable'\r\n */\r\n BigNumber.random = (function () {\r\n var pow2_53 = 0x20000000000000;\r\n\r\n // Return a 53 bit integer n, where 0 <= n < 9007199254740992.\r\n // Check if Math.random() produces more than 32 bits of randomness.\r\n // If it does, assume at least 53 bits are produced, otherwise assume at least 30 bits.\r\n // 0x40000000 is 2^30, 0x800000 is 2^23, 0x1fffff is 2^21 - 1.\r\n var random53bitInt = (Math.random() * pow2_53) & 0x1fffff\r\n ? function () { return mathfloor(Math.random() * pow2_53); }\r\n : function () { return ((Math.random() * 0x40000000 | 0) * 0x800000) +\r\n (Math.random() * 0x800000 | 0); };\r\n\r\n return function (dp) {\r\n var a, b, e, k, v,\r\n i = 0,\r\n c = [],\r\n rand = new BigNumber(ONE);\r\n\r\n if (dp == null) dp = DECIMAL_PLACES;\r\n else intCheck(dp, 0, MAX);\r\n\r\n k = mathceil(dp / LOG_BASE);\r\n\r\n if (CRYPTO) {\r\n\r\n // Browsers supporting crypto.getRandomValues.\r\n if (crypto.getRandomValues) {\r\n\r\n a = crypto.getRandomValues(new Uint32Array(k *= 2));\r\n\r\n for (; i < k;) {\r\n\r\n // 53 bits:\r\n // ((Math.pow(2, 32) - 1) * Math.pow(2, 21)).toString(2)\r\n // 11111 11111111 11111111 11111111 11100000 00000000 00000000\r\n // ((Math.pow(2, 32) - 1) >>> 11).toString(2)\r\n // 11111 11111111 11111111\r\n // 0x20000 is 2^21.\r\n v = a[i] * 0x20000 + (a[i + 1] >>> 11);\r\n\r\n // Rejection sampling:\r\n // 0 <= v < 9007199254740992\r\n // Probability that v >= 9e15, is\r\n // 7199254740992 / 9007199254740992 ~= 0.0008, i.e. 1 in 1251\r\n if (v >= 9e15) {\r\n b = crypto.getRandomValues(new Uint32Array(2));\r\n a[i] = b[0];\r\n a[i + 1] = b[1];\r\n } else {\r\n\r\n // 0 <= v <= 8999999999999999\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 2;\r\n }\r\n }\r\n i = k / 2;\r\n\r\n // Node.js supporting crypto.randomBytes.\r\n } else if (crypto.randomBytes) {\r\n\r\n // buffer\r\n a = crypto.randomBytes(k *= 7);\r\n\r\n for (; i < k;) {\r\n\r\n // 0x1000000000000 is 2^48, 0x10000000000 is 2^40\r\n // 0x100000000 is 2^32, 0x1000000 is 2^24\r\n // 11111 11111111 11111111 11111111 11111111 11111111 11111111\r\n // 0 <= v < 9007199254740992\r\n v = ((a[i] & 31) * 0x1000000000000) + (a[i + 1] * 0x10000000000) +\r\n (a[i + 2] * 0x100000000) + (a[i + 3] * 0x1000000) +\r\n (a[i + 4] << 16) + (a[i + 5] << 8) + a[i + 6];\r\n\r\n if (v >= 9e15) {\r\n crypto.randomBytes(7).copy(a, i);\r\n } else {\r\n\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 7;\r\n }\r\n }\r\n i = k / 7;\r\n } else {\r\n CRYPTO = false;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n }\r\n\r\n // Use Math.random.\r\n if (!CRYPTO) {\r\n\r\n for (; i < k;) {\r\n v = random53bitInt();\r\n if (v < 9e15) c[i++] = v % 1e14;\r\n }\r\n }\r\n\r\n k = c[--i];\r\n dp %= LOG_BASE;\r\n\r\n // Convert trailing digits to zeros according to dp.\r\n if (k && dp) {\r\n v = POWS_TEN[LOG_BASE - dp];\r\n c[i] = mathfloor(k / v) * v;\r\n }\r\n\r\n // Remove trailing elements which are zero.\r\n for (; c[i] === 0; c.pop(), i--);\r\n\r\n // Zero?\r\n if (i < 0) {\r\n c = [e = 0];\r\n } else {\r\n\r\n // Remove leading elements which are zero and adjust exponent accordingly.\r\n for (e = -1 ; c[0] === 0; c.splice(0, 1), e -= LOG_BASE);\r\n\r\n // Count the digits of the first element of c to determine leading zeros, and...\r\n for (i = 1, v = c[0]; v >= 10; v /= 10, i++);\r\n\r\n // adjust the exponent accordingly.\r\n if (i < LOG_BASE) e -= LOG_BASE - i;\r\n }\r\n\r\n rand.e = e;\r\n rand.c = c;\r\n return rand;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the sum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.sum = function () {\r\n var i = 1,\r\n args = arguments,\r\n sum = new BigNumber(args[0]);\r\n for (; i < args.length;) sum = sum.plus(args[i++]);\r\n return sum;\r\n };\r\n\r\n\r\n // PRIVATE FUNCTIONS\r\n\r\n\r\n // Called by BigNumber and BigNumber.prototype.toString.\r\n convertBase = (function () {\r\n var decimal = '0123456789';\r\n\r\n /*\r\n * Convert string of baseIn to an array of numbers of baseOut.\r\n * Eg. toBaseOut('255', 10, 16) returns [15, 15].\r\n * Eg. toBaseOut('ff', 16, 10) returns [2, 5, 5].\r\n */\r\n function toBaseOut(str, baseIn, baseOut, alphabet) {\r\n var j,\r\n arr = [0],\r\n arrL,\r\n i = 0,\r\n len = str.length;\r\n\r\n for (; i < len;) {\r\n for (arrL = arr.length; arrL--; arr[arrL] *= baseIn);\r\n\r\n arr[0] += alphabet.indexOf(str.charAt(i++));\r\n\r\n for (j = 0; j < arr.length; j++) {\r\n\r\n if (arr[j] > baseOut - 1) {\r\n if (arr[j + 1] == null) arr[j + 1] = 0;\r\n arr[j + 1] += arr[j] / baseOut | 0;\r\n arr[j] %= baseOut;\r\n }\r\n }\r\n }\r\n\r\n return arr.reverse();\r\n }\r\n\r\n // Convert a numeric string of baseIn to a numeric string of baseOut.\r\n // If the caller is toString, we are converting from base 10 to baseOut.\r\n // If the caller is BigNumber, we are converting from baseIn to base 10.\r\n return function (str, baseIn, baseOut, sign, callerIsToString) {\r\n var alphabet, d, e, k, r, x, xc, y,\r\n i = str.indexOf('.'),\r\n dp = DECIMAL_PLACES,\r\n rm = ROUNDING_MODE;\r\n\r\n // Non-integer.\r\n if (i >= 0) {\r\n k = POW_PRECISION;\r\n\r\n // Unlimited precision.\r\n POW_PRECISION = 0;\r\n str = str.replace('.', '');\r\n y = new BigNumber(baseIn);\r\n x = y.pow(str.length - i);\r\n POW_PRECISION = k;\r\n\r\n // Convert str as if an integer, then restore the fraction part by dividing the\r\n // result by its base raised to a power.\r\n\r\n y.c = toBaseOut(toFixedPoint(coeffToString(x.c), x.e, '0'),\r\n 10, baseOut, decimal);\r\n y.e = y.c.length;\r\n }\r\n\r\n // Convert the number as integer.\r\n\r\n xc = toBaseOut(str, baseIn, baseOut, callerIsToString\r\n ? (alphabet = ALPHABET, decimal)\r\n : (alphabet = decimal, ALPHABET));\r\n\r\n // xc now represents str as an integer and converted to baseOut. e is the exponent.\r\n e = k = xc.length;\r\n\r\n // Remove trailing zeros.\r\n for (; xc[--k] == 0; xc.pop());\r\n\r\n // Zero?\r\n if (!xc[0]) return alphabet.charAt(0);\r\n\r\n // Does str represent an integer? If so, no need for the division.\r\n if (i < 0) {\r\n --e;\r\n } else {\r\n x.c = xc;\r\n x.e = e;\r\n\r\n // The sign is needed for correct rounding.\r\n x.s = sign;\r\n x = div(x, y, dp, rm, baseOut);\r\n xc = x.c;\r\n r = x.r;\r\n e = x.e;\r\n }\r\n\r\n // xc now represents str converted to baseOut.\r\n\r\n // THe index of the rounding digit.\r\n d = e + dp + 1;\r\n\r\n // The rounding digit: the digit to the right of the digit that may be rounded up.\r\n i = xc[d];\r\n\r\n // Look at the rounding digits and mode to determine whether to round up.\r\n\r\n k = baseOut / 2;\r\n r = r || d < 0 || xc[d + 1] != null;\r\n\r\n r = rm < 4 ? (i != null || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : i > k || i == k &&(rm == 4 || r || rm == 6 && xc[d - 1] & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n // If the index of the rounding digit is not greater than zero, or xc represents\r\n // zero, then the result of the base conversion is zero or, if rounding up, a value\r\n // such as 0.00001.\r\n if (d < 1 || !xc[0]) {\r\n\r\n // 1^-dp or 0\r\n str = r ? toFixedPoint(alphabet.charAt(1), -dp, alphabet.charAt(0)) : alphabet.charAt(0);\r\n } else {\r\n\r\n // Truncate xc to the required number of decimal places.\r\n xc.length = d;\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up and so on.\r\n for (--baseOut; ++xc[--d] > baseOut;) {\r\n xc[d] = 0;\r\n\r\n if (!d) {\r\n ++e;\r\n xc = [1].concat(xc);\r\n }\r\n }\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (k = xc.length; !xc[--k];);\r\n\r\n // E.g. [4, 11, 15] becomes 4bf.\r\n for (i = 0, str = ''; i <= k; str += alphabet.charAt(xc[i++]));\r\n\r\n // Add leading zeros, decimal point and trailing zeros as required.\r\n str = toFixedPoint(str, e, alphabet.charAt(0));\r\n }\r\n\r\n // The caller will add the sign.\r\n return str;\r\n };\r\n })();\r\n\r\n\r\n // Perform division in the specified base. Called by div and convertBase.\r\n div = (function () {\r\n\r\n // Assume non-zero x and k.\r\n function multiply(x, k, base) {\r\n var m, temp, xlo, xhi,\r\n carry = 0,\r\n i = x.length,\r\n klo = k % SQRT_BASE,\r\n khi = k / SQRT_BASE | 0;\r\n\r\n for (x = x.slice(); i--;) {\r\n xlo = x[i] % SQRT_BASE;\r\n xhi = x[i] / SQRT_BASE | 0;\r\n m = khi * xlo + xhi * klo;\r\n temp = klo * xlo + ((m % SQRT_BASE) * SQRT_BASE) + carry;\r\n carry = (temp / base | 0) + (m / SQRT_BASE | 0) + khi * xhi;\r\n x[i] = temp % base;\r\n }\r\n\r\n if (carry) x = [carry].concat(x);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, cmp;\r\n\r\n if (aL != bL) {\r\n cmp = aL > bL ? 1 : -1;\r\n } else {\r\n\r\n for (i = cmp = 0; i < aL; i++) {\r\n\r\n if (a[i] != b[i]) {\r\n cmp = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return cmp;\r\n }\r\n\r\n function subtract(a, b, aL, base) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * base + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1; a.splice(0, 1));\r\n }\r\n\r\n // x: dividend, y: divisor.\r\n return function (x, y, dp, rm, base) {\r\n var cmp, e, i, more, n, prod, prodL, q, qc, rem, remL, rem0, xi, xL, yc0,\r\n yL, yz,\r\n s = x.s == y.s ? 1 : -1,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n // Either NaN, Infinity or 0?\r\n if (!xc || !xc[0] || !yc || !yc[0]) {\r\n\r\n return new BigNumber(\r\n\r\n // Return NaN if either NaN, or both Infinity or 0.\r\n !x.s || !y.s || (xc ? yc && xc[0] == yc[0] : !yc) ? NaN :\r\n\r\n // Return ±0 if x is ±0 or y is ±Infinity, or return ±Infinity as y is ±0.\r\n xc && xc[0] == 0 || !yc ? s * 0 : s / 0\r\n );\r\n }\r\n\r\n q = new BigNumber(s);\r\n qc = q.c = [];\r\n e = x.e - y.e;\r\n s = dp + e + 1;\r\n\r\n if (!base) {\r\n base = BASE;\r\n e = bitFloor(x.e / LOG_BASE) - bitFloor(y.e / LOG_BASE);\r\n s = s / LOG_BASE | 0;\r\n }\r\n\r\n // Result exponent may be one less then the current value of e.\r\n // The coefficients of the BigNumbers from convertBase may have trailing zeros.\r\n for (i = 0; yc[i] == (xc[i] || 0); i++);\r\n\r\n if (yc[i] > (xc[i] || 0)) e--;\r\n\r\n if (s < 0) {\r\n qc.push(1);\r\n more = true;\r\n } else {\r\n xL = xc.length;\r\n yL = yc.length;\r\n i = 0;\r\n s += 2;\r\n\r\n // Normalise xc and yc so highest order digit of yc is >= base / 2.\r\n\r\n n = mathfloor(base / (yc[0] + 1));\r\n\r\n // Not necessary, but to handle odd bases where yc[0] == (base / 2) - 1.\r\n // if (n > 1 || n++ == 1 && yc[0] < base / 2) {\r\n if (n > 1) {\r\n yc = multiply(yc, n, base);\r\n xc = multiply(xc, n, base);\r\n yL = yc.length;\r\n xL = xc.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xc.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL; rem[remL++] = 0);\r\n yz = yc.slice();\r\n yz = [0].concat(yz);\r\n yc0 = yc[0];\r\n if (yc[1] >= base / 2) yc0++;\r\n // Not necessary, but to prevent trial digit n > base, when using base 3.\r\n // else if (base == 3 && yc0 == 1) yc0 = 1 + 1e-15;\r\n\r\n do {\r\n n = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yc, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, n.\r\n\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n // n is how many times the divisor goes into the current remainder.\r\n n = mathfloor(rem0 / yc0);\r\n\r\n // Algorithm:\r\n // product = divisor multiplied by trial digit (n).\r\n // Compare product and remainder.\r\n // If product is greater than remainder:\r\n // Subtract divisor from product, decrement trial digit.\r\n // Subtract product from remainder.\r\n // If product was less than remainder at the last compare:\r\n // Compare new remainder and divisor.\r\n // If remainder is greater than divisor:\r\n // Subtract divisor from remainder, increment trial digit.\r\n\r\n if (n > 1) {\r\n\r\n // n may be > base only when base is 3.\r\n if (n >= base) n = base - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiply(yc, n, base);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n // If product > remainder then trial digit n too high.\r\n // n is 1 too high about 5% of the time, and is not known to have\r\n // ever been more than 1 too high.\r\n while (compare(prod, rem, prodL, remL) == 1) {\r\n n--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yc, prodL, base);\r\n prodL = prod.length;\r\n cmp = 1;\r\n }\r\n } else {\r\n\r\n // n is 0 or 1, cmp is -1.\r\n // If n is 0, there is no need to compare yc and rem again below,\r\n // so change cmp to 1 to avoid it.\r\n // If n is 1, leave cmp as -1, so yc and rem are compared again.\r\n if (n == 0) {\r\n\r\n // divisor < remainder, so n must be at least 1.\r\n cmp = n = 1;\r\n }\r\n\r\n // product = divisor\r\n prod = yc.slice();\r\n prodL = prod.length;\r\n }\r\n\r\n if (prodL < remL) prod = [0].concat(prod);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL, base);\r\n remL = rem.length;\r\n\r\n // If product was < remainder.\r\n if (cmp == -1) {\r\n\r\n // Compare divisor and new remainder.\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n // Trial digit n too low.\r\n // n is 1 too low about 5% of the time, and very rarely 2 too low.\r\n while (compare(yc, rem, yL, remL) < 1) {\r\n n++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yc, remL, base);\r\n remL = rem.length;\r\n }\r\n }\r\n } else if (cmp === 0) {\r\n n++;\r\n rem = [0];\r\n } // else cmp === 1 and n will be 0\r\n\r\n // Add the next digit, n, to the result array.\r\n qc[i++] = n;\r\n\r\n // Update the remainder.\r\n if (rem[0]) {\r\n rem[remL++] = xc[xi] || 0;\r\n } else {\r\n rem = [xc[xi]];\r\n remL = 1;\r\n }\r\n } while ((xi++ < xL || rem[0] != null) && s--);\r\n\r\n more = rem[0] != null;\r\n\r\n // Leading zero?\r\n if (!qc[0]) qc.splice(0, 1);\r\n }\r\n\r\n if (base == BASE) {\r\n\r\n // To calculate q.e, first get the number of digits of qc[0].\r\n for (i = 1, s = qc[0]; s >= 10; s /= 10, i++);\r\n\r\n round(q, dp + (q.e = i + e * LOG_BASE - 1) + 1, rm, more);\r\n\r\n // Caller is convertBase.\r\n } else {\r\n q.e = e;\r\n q.r = +more;\r\n }\r\n\r\n return q;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a string representing the value of BigNumber n in fixed-point or exponential\r\n * notation rounded to the specified decimal places or significant digits.\r\n *\r\n * n: a BigNumber.\r\n * i: the index of the last digit required (i.e. the digit that may be rounded up).\r\n * rm: the rounding mode.\r\n * id: 1 (toExponential) or 2 (toPrecision).\r\n */\r\n function format(n, i, rm, id) {\r\n var c0, e, ne, len, str;\r\n\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n if (!n.c) return n.toString();\r\n\r\n c0 = n.c[0];\r\n ne = n.e;\r\n\r\n if (i == null) {\r\n str = coeffToString(n.c);\r\n str = id == 1 || id == 2 && (ne <= TO_EXP_NEG || ne >= TO_EXP_POS)\r\n ? toExponential(str, ne)\r\n : toFixedPoint(str, ne, '0');\r\n } else {\r\n n = round(new BigNumber(n), i, rm);\r\n\r\n // n.e may have changed if the value was rounded up.\r\n e = n.e;\r\n\r\n str = coeffToString(n.c);\r\n len = str.length;\r\n\r\n // toPrecision returns exponential notation if the number of significant digits\r\n // specified is less than the number of digits necessary to represent the integer\r\n // part of the value in fixed-point notation.\r\n\r\n // Exponential notation.\r\n if (id == 1 || id == 2 && (i <= e || e <= TO_EXP_NEG)) {\r\n\r\n // Append zeros?\r\n for (; len < i; str += '0', len++);\r\n str = toExponential(str, e);\r\n\r\n // Fixed-point notation.\r\n } else {\r\n i -= ne;\r\n str = toFixedPoint(str, e, '0');\r\n\r\n // Append zeros?\r\n if (e + 1 > len) {\r\n if (--i > 0) for (str += '.'; i--; str += '0');\r\n } else {\r\n i += e - len;\r\n if (i > 0) {\r\n if (e + 1 == len) str += '.';\r\n for (; i--; str += '0');\r\n }\r\n }\r\n }\r\n }\r\n\r\n return n.s < 0 && c0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // Handle BigNumber.max and BigNumber.min.\r\n function maxOrMin(args, method) {\r\n var n,\r\n i = 1,\r\n m = new BigNumber(args[0]);\r\n\r\n for (; i < args.length; i++) {\r\n n = new BigNumber(args[i]);\r\n\r\n // If any number is NaN, return NaN.\r\n if (!n.s) {\r\n m = n;\r\n break;\r\n } else if (method.call(m, n)) {\r\n m = n;\r\n }\r\n }\r\n\r\n return m;\r\n }\r\n\r\n\r\n /*\r\n * Strip trailing zeros, calculate base 10 exponent and check against MIN_EXP and MAX_EXP.\r\n * Called by minus, plus and times.\r\n */\r\n function normalise(n, c, e) {\r\n var i = 1,\r\n j = c.length;\r\n\r\n // Remove trailing zeros.\r\n for (; !c[--j]; c.pop());\r\n\r\n // Calculate the base 10 exponent. First get the number of digits of c[0].\r\n for (j = c[0]; j >= 10; j /= 10, i++);\r\n\r\n // Overflow?\r\n if ((e = i + e * LOG_BASE - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n n.c = n.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n n.c = [n.e = 0];\r\n } else {\r\n n.e = e;\r\n n.c = c;\r\n }\r\n\r\n return n;\r\n }\r\n\r\n\r\n // Handle values that fail the validity test in BigNumber.\r\n parseNumeric = (function () {\r\n var basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i,\r\n dotAfter = /^([^.]+)\\.$/,\r\n dotBefore = /^\\.([^.]+)$/,\r\n isInfinityOrNaN = /^-?(Infinity|NaN)$/,\r\n whitespaceOrPlus = /^\\s*\\+(?=[\\w.])|^\\s+|\\s+$/g;\r\n\r\n return function (x, str, isNum, b) {\r\n var base,\r\n s = isNum ? str : str.replace(whitespaceOrPlus, '');\r\n\r\n // No exception on ±Infinity or NaN.\r\n if (isInfinityOrNaN.test(s)) {\r\n x.s = isNaN(s) ? null : s < 0 ? -1 : 1;\r\n } else {\r\n if (!isNum) {\r\n\r\n // basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i\r\n s = s.replace(basePrefix, function (m, p1, p2) {\r\n base = (p2 = p2.toLowerCase()) == 'x' ? 16 : p2 == 'b' ? 2 : 8;\r\n return !b || b == base ? p1 : m;\r\n });\r\n\r\n if (b) {\r\n base = b;\r\n\r\n // E.g. '1.' to '1', '.1' to '0.1'\r\n s = s.replace(dotAfter, '$1').replace(dotBefore, '0.$1');\r\n }\r\n\r\n if (str != s) return new BigNumber(s, base);\r\n }\r\n\r\n // '[BigNumber Error] Not a number: {n}'\r\n // '[BigNumber Error] Not a base {b} number: {n}'\r\n if (BigNumber.DEBUG) {\r\n throw Error\r\n (bignumberError + 'Not a' + (b ? ' base ' + b : '') + ' number: ' + str);\r\n }\r\n\r\n // NaN\r\n x.s = null;\r\n }\r\n\r\n x.c = x.e = null;\r\n }\r\n })();\r\n\r\n\r\n /*\r\n * Round x to sd significant digits using rounding mode rm. Check for over/under-flow.\r\n * If r is truthy, it is known that there are more digits after the rounding digit.\r\n */\r\n function round(x, sd, rm, r) {\r\n var d, i, j, k, n, ni, rd,\r\n xc = x.c,\r\n pows10 = POWS_TEN;\r\n\r\n // if x is not Infinity or NaN...\r\n if (xc) {\r\n\r\n // rd is the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // n is a base 1e14 number, the value of the element of array x.c containing rd.\r\n // ni is the index of n within x.c.\r\n // d is the number of digits of n.\r\n // i is the index of rd within n including leading zeros.\r\n // j is the actual index of rd within n (if < 0, rd is a leading zero).\r\n out: {\r\n\r\n // Get the number of digits of the first element of xc.\r\n for (d = 1, k = xc[0]; k >= 10; k /= 10, d++);\r\n i = sd - d;\r\n\r\n // If the rounding digit is in the first element of xc...\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n n = xc[ni = 0];\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = n / pows10[d - j - 1] % 10 | 0;\r\n } else {\r\n ni = mathceil((i + 1) / LOG_BASE);\r\n\r\n if (ni >= xc.length) {\r\n\r\n if (r) {\r\n\r\n // Needed by sqrt.\r\n for (; xc.length <= ni; xc.push(0));\r\n n = rd = 0;\r\n d = 1;\r\n i %= LOG_BASE;\r\n j = i - LOG_BASE + 1;\r\n } else {\r\n break out;\r\n }\r\n } else {\r\n n = k = xc[ni];\r\n\r\n // Get the number of digits of n.\r\n for (d = 1; k >= 10; k /= 10, d++);\r\n\r\n // Get the index of rd within n.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within n, adjusted for leading zeros.\r\n // The number of leading zeros of n is given by LOG_BASE - d.\r\n j = i - LOG_BASE + d;\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = j < 0 ? 0 : n / pows10[d - j - 1] % 10 | 0;\r\n }\r\n }\r\n\r\n r = r || sd < 0 ||\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n // The expression n % pows10[d - j - 1] returns all digits of n to the right\r\n // of the digit at j, e.g. if n is 908714 and j is 2, the expression gives 714.\r\n xc[ni + 1] != null || (j < 0 ? n : n % pows10[d - j - 1]);\r\n\r\n r = rm < 4\r\n ? (rd || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || r || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? n / pows10[d - j] : 0 : xc[ni - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n if (sd < 1 || !xc[0]) {\r\n xc.length = 0;\r\n\r\n if (r) {\r\n\r\n // Convert sd to decimal places.\r\n sd -= x.e + 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xc[0] = pows10[(LOG_BASE - sd % LOG_BASE) % LOG_BASE];\r\n x.e = -sd || 0;\r\n } else {\r\n\r\n // Zero.\r\n xc[0] = x.e = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xc.length = ni;\r\n k = 1;\r\n ni--;\r\n } else {\r\n xc.length = ni + 1;\r\n k = pows10[LOG_BASE - i];\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of n.\r\n xc[ni] = j > 0 ? mathfloor(n / pows10[d - j] % pows10[j]) * k : 0;\r\n }\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n for (; ;) {\r\n\r\n // If the digit to be rounded up is in the first element of xc...\r\n if (ni == 0) {\r\n\r\n // i will be the length of xc[0] before k is added.\r\n for (i = 1, j = xc[0]; j >= 10; j /= 10, i++);\r\n j = xc[0] += k;\r\n for (k = 1; j >= 10; j /= 10, k++);\r\n\r\n // if i != k the length has increased.\r\n if (i != k) {\r\n x.e++;\r\n if (xc[0] == BASE) xc[0] = 1;\r\n }\r\n\r\n break;\r\n } else {\r\n xc[ni] += k;\r\n if (xc[ni] != BASE) break;\r\n xc[ni--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xc.length; xc[--i] === 0; xc.pop());\r\n }\r\n\r\n // Overflow? Infinity.\r\n if (x.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n\r\n // Underflow? Zero.\r\n } else if (x.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n function valueOf(n) {\r\n var str,\r\n e = n.e;\r\n\r\n if (e === null) return n.toString();\r\n\r\n str = coeffToString(n.c);\r\n\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(str, e)\r\n : toFixedPoint(str, e, '0');\r\n\r\n return n.s < 0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // PROTOTYPE/INSTANCE METHODS\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the absolute value of this BigNumber.\r\n */\r\n P.absoluteValue = P.abs = function () {\r\n var x = new BigNumber(this);\r\n if (x.s < 0) x.s = 1;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return\r\n * 1 if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * -1 if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * 0 if they have the same value,\r\n * or null if the value of either is NaN.\r\n */\r\n P.comparedTo = function (y, b) {\r\n return compare(this, new BigNumber(y, b));\r\n };\r\n\r\n\r\n /*\r\n * If dp is undefined or null or true or false, return the number of decimal places of the\r\n * value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n *\r\n * Otherwise, if dp is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of dp decimal places using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * [dp] {number} Decimal places: integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.decimalPlaces = P.dp = function (dp, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), dp + x.e + 1, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n n = ((v = c.length - 1) - bitFloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last number.\r\n if (v = c[v]) for (; v % 10 == 0; v /= 10, n--);\r\n if (n < 0) n = 0;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * n / 0 = I\r\n * n / N = N\r\n * n / I = 0\r\n * 0 / n = 0\r\n * 0 / 0 = N\r\n * 0 / N = N\r\n * 0 / I = 0\r\n * N / n = N\r\n * N / 0 = N\r\n * N / N = N\r\n * N / I = N\r\n * I / n = I\r\n * I / 0 = I\r\n * I / N = N\r\n * I / I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber divided by the value of\r\n * BigNumber(y, b), rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.dividedBy = P.div = function (y, b) {\r\n return div(this, new BigNumber(y, b), DECIMAL_PLACES, ROUNDING_MODE);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the integer part of dividing the value of this\r\n * BigNumber by the value of BigNumber(y, b).\r\n */\r\n P.dividedToIntegerBy = P.idiv = function (y, b) {\r\n return div(this, new BigNumber(y, b), 0, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the value of this BigNumber exponentiated by n.\r\n *\r\n * If m is present, return the result modulo m.\r\n * If n is negative round according to DECIMAL_PLACES and ROUNDING_MODE.\r\n * If POW_PRECISION is non-zero and m is not present, round to POW_PRECISION using ROUNDING_MODE.\r\n *\r\n * The modular power operation works efficiently when x, n, and m are integers, otherwise it\r\n * is equivalent to calculating x.exponentiatedBy(n).modulo(m) with a POW_PRECISION of 0.\r\n *\r\n * n {number|string|BigNumber} The exponent. An integer.\r\n * [m] {number|string|BigNumber} The modulus.\r\n *\r\n * '[BigNumber Error] Exponent not an integer: {n}'\r\n */\r\n P.exponentiatedBy = P.pow = function (n, m) {\r\n var half, isModExp, i, k, more, nIsBig, nIsNeg, nIsOdd, y,\r\n x = this;\r\n\r\n n = new BigNumber(n);\r\n\r\n // Allow NaN and ±Infinity, but not other non-integers.\r\n if (n.c && !n.isInteger()) {\r\n throw Error\r\n (bignumberError + 'Exponent not an integer: ' + valueOf(n));\r\n }\r\n\r\n if (m != null) m = new BigNumber(m);\r\n\r\n // Exponent of MAX_SAFE_INTEGER is 15.\r\n nIsBig = n.e > 14;\r\n\r\n // If x is NaN, ±Infinity, ±0 or ±1, or n is ±Infinity, NaN or ±0.\r\n if (!x.c || !x.c[0] || x.c[0] == 1 && !x.e && x.c.length == 1 || !n.c || !n.c[0]) {\r\n\r\n // The sign of the result of pow when x is negative depends on the evenness of n.\r\n // If +n overflows to ±Infinity, the evenness of n would be not be known.\r\n y = new BigNumber(Math.pow(+valueOf(x), nIsBig ? 2 - isOdd(n) : +valueOf(n)));\r\n return m ? y.mod(m) : y;\r\n }\r\n\r\n nIsNeg = n.s < 0;\r\n\r\n if (m) {\r\n\r\n // x % m returns NaN if abs(m) is zero, or m is NaN.\r\n if (m.c ? !m.c[0] : !m.s) return new BigNumber(NaN);\r\n\r\n isModExp = !nIsNeg && x.isInteger() && m.isInteger();\r\n\r\n if (isModExp) x = x.mod(m);\r\n\r\n // Overflow to ±Infinity: >=2**1e10 or >=1.0000024**1e15.\r\n // Underflow to ±0: <=0.79**1e10 or <=0.9999975**1e15.\r\n } else if (n.e > 9 && (x.e > 0 || x.e < -1 || (x.e == 0\r\n // [1, 240000000]\r\n ? x.c[0] > 1 || nIsBig && x.c[1] >= 24e7\r\n // [80000000000000] [99999750000000]\r\n : x.c[0] < 8e13 || nIsBig && x.c[0] <= 9999975e7))) {\r\n\r\n // If x is negative and n is odd, k = -0, else k = 0.\r\n k = x.s < 0 && isOdd(n) ? -0 : 0;\r\n\r\n // If x >= 1, k = ±Infinity.\r\n if (x.e > -1) k = 1 / k;\r\n\r\n // If n is negative return ±0, else return ±Infinity.\r\n return new BigNumber(nIsNeg ? 1 / k : k);\r\n\r\n } else if (POW_PRECISION) {\r\n\r\n // Truncating each coefficient array to a length of k after each multiplication\r\n // equates to truncating significant digits to POW_PRECISION + [28, 41],\r\n // i.e. there will be a minimum of 28 guard digits retained.\r\n k = mathceil(POW_PRECISION / LOG_BASE + 2);\r\n }\r\n\r\n if (nIsBig) {\r\n half = new BigNumber(0.5);\r\n if (nIsNeg) n.s = 1;\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = Math.abs(+valueOf(n));\r\n nIsOdd = i % 2;\r\n }\r\n\r\n y = new BigNumber(ONE);\r\n\r\n // Performs 54 loop iterations for n of 9007199254740991.\r\n for (; ;) {\r\n\r\n if (nIsOdd) {\r\n y = y.times(x);\r\n if (!y.c) break;\r\n\r\n if (k) {\r\n if (y.c.length > k) y.c.length = k;\r\n } else if (isModExp) {\r\n y = y.mod(m); //y = y.minus(div(y, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (i) {\r\n i = mathfloor(i / 2);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n } else {\r\n n = n.times(half);\r\n round(n, n.e + 1, 1);\r\n\r\n if (n.e > 14) {\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = +valueOf(n);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n }\r\n }\r\n\r\n x = x.times(x);\r\n\r\n if (k) {\r\n if (x.c && x.c.length > k) x.c.length = k;\r\n } else if (isModExp) {\r\n x = x.mod(m); //x = x.minus(div(x, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (isModExp) return y;\r\n if (nIsNeg) y = ONE.div(y);\r\n\r\n return m ? y.mod(m) : k ? round(y, POW_PRECISION, ROUNDING_MODE, more) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber rounded to an integer\r\n * using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {rm}'\r\n */\r\n P.integerValue = function (rm) {\r\n var n = new BigNumber(this);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n return round(n, n.e + 1, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is equal to the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isEqualTo = P.eq = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is a finite number, otherwise return false.\r\n */\r\n P.isFinite = function () {\r\n return !!this.c;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isGreaterThan = P.gt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isGreaterThanOrEqualTo = P.gte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === 1 || b === 0;\r\n\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is an integer, otherwise return false.\r\n */\r\n P.isInteger = function () {\r\n return !!this.c && bitFloor(this.e / LOG_BASE) > this.c.length - 2;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isLessThan = P.lt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isLessThanOrEqualTo = P.lte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === -1 || b === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is NaN, otherwise return false.\r\n */\r\n P.isNaN = function () {\r\n return !this.s;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is negative, otherwise return false.\r\n */\r\n P.isNegative = function () {\r\n return this.s < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is positive, otherwise return false.\r\n */\r\n P.isPositive = function () {\r\n return this.s > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is 0 or -0, otherwise return false.\r\n */\r\n P.isZero = function () {\r\n return !!this.c && this.c[0] == 0;\r\n };\r\n\r\n\r\n /*\r\n * n - 0 = n\r\n * n - N = N\r\n * n - I = -I\r\n * 0 - n = -n\r\n * 0 - 0 = 0\r\n * 0 - N = N\r\n * 0 - I = -I\r\n * N - n = N\r\n * N - 0 = N\r\n * N - N = N\r\n * N - I = N\r\n * I - n = I\r\n * I - 0 = I\r\n * I - N = N\r\n * I - I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber minus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.minus = function (y, b) {\r\n var i, j, t, xLTy,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.plus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return xc ? (y.s = -b, y) : new BigNumber(yc ? x : NaN);\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n return yc[0] ? (y.s = -b, y) : new BigNumber(xc[0] ? x :\r\n\r\n // IEEE 754 (2008) 6.3: n - n = -0 when rounding to -Infinity\r\n ROUNDING_MODE == 3 ? -0 : 0);\r\n }\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Determine which is the bigger number.\r\n if (a = xe - ye) {\r\n\r\n if (xLTy = a < 0) {\r\n a = -a;\r\n t = xc;\r\n } else {\r\n ye = xe;\r\n t = yc;\r\n }\r\n\r\n t.reverse();\r\n\r\n // Prepend zeros to equalise exponents.\r\n for (b = a; b--; t.push(0));\r\n t.reverse();\r\n } else {\r\n\r\n // Exponents equal. Check digit by digit.\r\n j = (xLTy = (a = xc.length) < (b = yc.length)) ? a : b;\r\n\r\n for (a = b = 0; b < j; b++) {\r\n\r\n if (xc[b] != yc[b]) {\r\n xLTy = xc[b] < yc[b];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // x < y? Point xc to the array of the bigger number.\r\n if (xLTy) t = xc, xc = yc, yc = t, y.s = -y.s;\r\n\r\n b = (j = yc.length) - (i = xc.length);\r\n\r\n // Append zeros to xc if shorter.\r\n // No need to add zeros to yc if shorter as subtract only needs to start at yc.length.\r\n if (b > 0) for (; b--; xc[i++] = 0);\r\n b = BASE - 1;\r\n\r\n // Subtract yc from xc.\r\n for (; j > a;) {\r\n\r\n if (xc[--j] < yc[j]) {\r\n for (i = j; i && !xc[--i]; xc[i] = b);\r\n --xc[i];\r\n xc[j] += BASE;\r\n }\r\n\r\n xc[j] -= yc[j];\r\n }\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xc[0] == 0; xc.splice(0, 1), --ye);\r\n\r\n // Zero?\r\n if (!xc[0]) {\r\n\r\n // Following IEEE 754 (2008) 6.3,\r\n // n - n = +0 but n - n = -0 when rounding towards -Infinity.\r\n y.s = ROUNDING_MODE == 3 ? -1 : 1;\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n // No need to check for Infinity as +x - +y != Infinity && -x - -y != Infinity\r\n // for finite x and y.\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * n % 0 = N\r\n * n % N = N\r\n * n % I = n\r\n * 0 % n = 0\r\n * -0 % n = -0\r\n * 0 % 0 = N\r\n * 0 % N = N\r\n * 0 % I = 0\r\n * N % n = N\r\n * N % 0 = N\r\n * N % N = N\r\n * N % I = N\r\n * I % n = N\r\n * I % 0 = N\r\n * I % N = N\r\n * I % I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber modulo the value of\r\n * BigNumber(y, b). The result depends on the value of MODULO_MODE.\r\n */\r\n P.modulo = P.mod = function (y, b) {\r\n var q, s,\r\n x = this;\r\n\r\n y = new BigNumber(y, b);\r\n\r\n // Return NaN if x is Infinity or NaN, or y is NaN or zero.\r\n if (!x.c || !y.s || y.c && !y.c[0]) {\r\n return new BigNumber(NaN);\r\n\r\n // Return x if y is Infinity or x is zero.\r\n } else if (!y.c || x.c && !x.c[0]) {\r\n return new BigNumber(x);\r\n }\r\n\r\n if (MODULO_MODE == 9) {\r\n\r\n // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n // r = x - qy where 0 <= r < abs(y)\r\n s = y.s;\r\n y.s = 1;\r\n q = div(x, y, 0, 3);\r\n y.s = s;\r\n q.s *= s;\r\n } else {\r\n q = div(x, y, 0, MODULO_MODE);\r\n }\r\n\r\n y = x.minus(q.times(y));\r\n\r\n // To match JavaScript %, ensure sign of zero is sign of dividend.\r\n if (!y.c[0] && MODULO_MODE == 1) y.s = x.s;\r\n\r\n return y;\r\n };\r\n\r\n\r\n /*\r\n * n * 0 = 0\r\n * n * N = N\r\n * n * I = I\r\n * 0 * n = 0\r\n * 0 * 0 = 0\r\n * 0 * N = N\r\n * 0 * I = N\r\n * N * n = N\r\n * N * 0 = N\r\n * N * N = N\r\n * N * I = N\r\n * I * n = I\r\n * I * 0 = N\r\n * I * N = N\r\n * I * I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber multiplied by the value\r\n * of BigNumber(y, b).\r\n */\r\n P.multipliedBy = P.times = function (y, b) {\r\n var c, e, i, j, k, m, xcL, xlo, xhi, ycL, ylo, yhi, zc,\r\n base, sqrtBase,\r\n x = this,\r\n xc = x.c,\r\n yc = (y = new BigNumber(y, b)).c;\r\n\r\n // Either NaN, ±Infinity or ±0?\r\n if (!xc || !yc || !xc[0] || !yc[0]) {\r\n\r\n // Return NaN if either is NaN, or one is 0 and the other is Infinity.\r\n if (!x.s || !y.s || xc && !xc[0] && !yc || yc && !yc[0] && !xc) {\r\n y.c = y.e = y.s = null;\r\n } else {\r\n y.s *= x.s;\r\n\r\n // Return ±Infinity if either is ±Infinity.\r\n if (!xc || !yc) {\r\n y.c = y.e = null;\r\n\r\n // Return ±0 if either is ±0.\r\n } else {\r\n y.c = [0];\r\n y.e = 0;\r\n }\r\n }\r\n\r\n return y;\r\n }\r\n\r\n e = bitFloor(x.e / LOG_BASE) + bitFloor(y.e / LOG_BASE);\r\n y.s *= x.s;\r\n xcL = xc.length;\r\n ycL = yc.length;\r\n\r\n // Ensure xc points to longer array and xcL to its length.\r\n if (xcL < ycL) zc = xc, xc = yc, yc = zc, i = xcL, xcL = ycL, ycL = i;\r\n\r\n // Initialise the result array with zeros.\r\n for (i = xcL + ycL, zc = []; i--; zc.push(0));\r\n\r\n base = BASE;\r\n sqrtBase = SQRT_BASE;\r\n\r\n for (i = ycL; --i >= 0;) {\r\n c = 0;\r\n ylo = yc[i] % sqrtBase;\r\n yhi = yc[i] / sqrtBase | 0;\r\n\r\n for (k = xcL, j = i + k; j > i;) {\r\n xlo = xc[--k] % sqrtBase;\r\n xhi = xc[k] / sqrtBase | 0;\r\n m = yhi * xlo + xhi * ylo;\r\n xlo = ylo * xlo + ((m % sqrtBase) * sqrtBase) + zc[j] + c;\r\n c = (xlo / base | 0) + (m / sqrtBase | 0) + yhi * xhi;\r\n zc[j--] = xlo % base;\r\n }\r\n\r\n zc[j] = c;\r\n }\r\n\r\n if (c) {\r\n ++e;\r\n } else {\r\n zc.splice(0, 1);\r\n }\r\n\r\n return normalise(y, zc, e);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber negated,\r\n * i.e. multiplied by -1.\r\n */\r\n P.negated = function () {\r\n var x = new BigNumber(this);\r\n x.s = -x.s || null;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * n + 0 = n\r\n * n + N = N\r\n * n + I = I\r\n * 0 + n = n\r\n * 0 + 0 = 0\r\n * 0 + N = N\r\n * 0 + I = I\r\n * N + n = N\r\n * N + 0 = N\r\n * N + N = N\r\n * N + I = N\r\n * I + n = I\r\n * I + 0 = I\r\n * I + N = N\r\n * I + I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber plus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.plus = function (y, b) {\r\n var t,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.minus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Return ±Infinity if either ±Infinity.\r\n if (!xc || !yc) return new BigNumber(a / 0);\r\n\r\n // Either zero?\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n if (!xc[0] || !yc[0]) return yc[0] ? y : new BigNumber(xc[0] ? x : a * 0);\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Prepend zeros to equalise exponents. Faster to use reverse then do unshifts.\r\n if (a = xe - ye) {\r\n if (a > 0) {\r\n ye = xe;\r\n t = yc;\r\n } else {\r\n a = -a;\r\n t = xc;\r\n }\r\n\r\n t.reverse();\r\n for (; a--; t.push(0));\r\n t.reverse();\r\n }\r\n\r\n a = xc.length;\r\n b = yc.length;\r\n\r\n // Point xc to the longer array, and b to the shorter length.\r\n if (a - b < 0) t = yc, yc = xc, xc = t, b = a;\r\n\r\n // Only start adding at yc.length - 1 as the further digits of xc can be ignored.\r\n for (a = 0; b;) {\r\n a = (xc[--b] = xc[b] + yc[b] + a) / BASE | 0;\r\n xc[b] = BASE === xc[b] ? 0 : xc[b] % BASE;\r\n }\r\n\r\n if (a) {\r\n xc = [a].concat(xc);\r\n ++ye;\r\n }\r\n\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n // ye = MAX_EXP + 1 possible\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * If sd is undefined or null or true or false, return the number of significant digits of\r\n * the value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n * If sd is true include integer-part trailing zeros in the count.\r\n *\r\n * Otherwise, if sd is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of sd significant digits using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * sd {number|boolean} number: significant digits: integer, 1 to MAX inclusive.\r\n * boolean: whether to count integer-part trailing zeros: true or false.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.precision = P.sd = function (sd, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (sd != null && sd !== !!sd) {\r\n intCheck(sd, 1, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), sd, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n v = c.length - 1;\r\n n = v * LOG_BASE + 1;\r\n\r\n if (v = c[v]) {\r\n\r\n // Subtract the number of trailing zeros of the last element.\r\n for (; v % 10 == 0; v /= 10, n--);\r\n\r\n // Add the number of digits of the first element.\r\n for (v = c[0]; v >= 10; v /= 10, n++);\r\n }\r\n\r\n if (sd && x.e + 1 > n) n = x.e + 1;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber shifted by k places\r\n * (powers of 10). Shift to the right if n > 0, and to the left if n < 0.\r\n *\r\n * k {number} Integer, -MAX_SAFE_INTEGER to MAX_SAFE_INTEGER inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {k}'\r\n */\r\n P.shiftedBy = function (k) {\r\n intCheck(k, -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER);\r\n return this.times('1e' + k);\r\n };\r\n\r\n\r\n /*\r\n * sqrt(-n) = N\r\n * sqrt(N) = N\r\n * sqrt(-I) = N\r\n * sqrt(I) = I\r\n * sqrt(0) = 0\r\n * sqrt(-0) = -0\r\n *\r\n * Return a new BigNumber whose value is the square root of the value of this BigNumber,\r\n * rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.squareRoot = P.sqrt = function () {\r\n var m, n, r, rep, t,\r\n x = this,\r\n c = x.c,\r\n s = x.s,\r\n e = x.e,\r\n dp = DECIMAL_PLACES + 4,\r\n half = new BigNumber('0.5');\r\n\r\n // Negative/NaN/Infinity/zero?\r\n if (s !== 1 || !c || !c[0]) {\r\n return new BigNumber(!s || s < 0 && (!c || c[0]) ? NaN : c ? x : 1 / 0);\r\n }\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+valueOf(x));\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = coeffToString(c);\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(+n);\r\n e = bitFloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new BigNumber(n);\r\n } else {\r\n r = new BigNumber(s + '');\r\n }\r\n\r\n // Check for zero.\r\n // r could be zero if MIN_EXP is changed after the this value was created.\r\n // This would cause a division by zero (x/t) and hence Infinity below, which would cause\r\n // coeffToString to throw.\r\n if (r.c[0]) {\r\n e = r.e;\r\n s = e + dp;\r\n if (s < 3) s = 0;\r\n\r\n // Newton-Raphson iteration.\r\n for (; ;) {\r\n t = r;\r\n r = half.times(t.plus(div(x, t, dp, 1)));\r\n\r\n if (coeffToString(t.c).slice(0, s) === (n = coeffToString(r.c)).slice(0, s)) {\r\n\r\n // The exponent of r may here be one less than the final result exponent,\r\n // e.g 0.0009999 (e-4) --> 0.001 (e-3), so adjust s so the rounding digits\r\n // are indexed correctly.\r\n if (r.e < e) --s;\r\n n = n.slice(s - 3, s + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits\r\n // are 9999 or 4999 (i.e. approaching a rounding boundary) continue the\r\n // iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the\r\n // exact result as the nines may infinitely repeat.\r\n if (!rep) {\r\n round(t, t.e + DECIMAL_PLACES + 2, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n dp += 4;\r\n s += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If rounding digits are null, 0{0,4} or 50{0,3}, check for exact\r\n // result. If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n round(r, r.e + DECIMAL_PLACES + 2, 1);\r\n m = !r.times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return round(r, r.e + DECIMAL_PLACES + 1, ROUNDING_MODE, m);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in exponential notation and\r\n * rounded using ROUNDING_MODE to dp fixed decimal places.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toExponential = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp++;\r\n }\r\n return format(this, dp, rm, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounding\r\n * to dp fixed decimal places using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * Note: as with JavaScript's number type, (-0).toFixed(0) is '0',\r\n * but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toFixed = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp = dp + this.e + 1;\r\n }\r\n return format(this, dp, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounded\r\n * using rm or ROUNDING_MODE to dp decimal places, and formatted according to the properties\r\n * of the format or FORMAT object (see BigNumber.set).\r\n *\r\n * The formatting object may contain some or all of the properties shown below.\r\n *\r\n * FORMAT = {\r\n * prefix: '',\r\n * groupSize: 3,\r\n * secondaryGroupSize: 0,\r\n * groupSeparator: ',',\r\n * decimalSeparator: '.',\r\n * fractionGroupSize: 0,\r\n * fractionGroupSeparator: '\\xA0', // non-breaking space\r\n * suffix: ''\r\n * };\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n * [format] {object} Formatting options. See FORMAT pbject above.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n * '[BigNumber Error] Argument not an object: {format}'\r\n */\r\n P.toFormat = function (dp, rm, format) {\r\n var str,\r\n x = this;\r\n\r\n if (format == null) {\r\n if (dp != null && rm && typeof rm == 'object') {\r\n format = rm;\r\n rm = null;\r\n } else if (dp && typeof dp == 'object') {\r\n format = dp;\r\n dp = rm = null;\r\n } else {\r\n format = FORMAT;\r\n }\r\n } else if (typeof format != 'object') {\r\n throw Error\r\n (bignumberError + 'Argument not an object: ' + format);\r\n }\r\n\r\n str = x.toFixed(dp, rm);\r\n\r\n if (x.c) {\r\n var i,\r\n arr = str.split('.'),\r\n g1 = +format.groupSize,\r\n g2 = +format.secondaryGroupSize,\r\n groupSeparator = format.groupSeparator || '',\r\n intPart = arr[0],\r\n fractionPart = arr[1],\r\n isNeg = x.s < 0,\r\n intDigits = isNeg ? intPart.slice(1) : intPart,\r\n len = intDigits.length;\r\n\r\n if (g2) i = g1, g1 = g2, g2 = i, len -= i;\r\n\r\n if (g1 > 0 && len > 0) {\r\n i = len % g1 || g1;\r\n intPart = intDigits.substr(0, i);\r\n for (; i < len; i += g1) intPart += groupSeparator + intDigits.substr(i, g1);\r\n if (g2 > 0) intPart += groupSeparator + intDigits.slice(i);\r\n if (isNeg) intPart = '-' + intPart;\r\n }\r\n\r\n str = fractionPart\r\n ? intPart + (format.decimalSeparator || '') + ((g2 = +format.fractionGroupSize)\r\n ? fractionPart.replace(new RegExp('\\\\d{' + g2 + '}\\\\B', 'g'),\r\n '$&' + (format.fractionGroupSeparator || ''))\r\n : fractionPart)\r\n : intPart;\r\n }\r\n\r\n return (format.prefix || '') + str + (format.suffix || '');\r\n };\r\n\r\n\r\n /*\r\n * Return an array of two BigNumbers representing the value of this BigNumber as a simple\r\n * fraction with an integer numerator and an integer denominator.\r\n * The denominator will be a positive non-zero value less than or equal to the specified\r\n * maximum denominator. If a maximum denominator is not specified, the denominator will be\r\n * the lowest value necessary to represent the number exactly.\r\n *\r\n * [md] {number|string|BigNumber} Integer >= 1, or Infinity. The maximum denominator.\r\n *\r\n * '[BigNumber Error] Argument {not an integer|out of range} : {md}'\r\n */\r\n P.toFraction = function (md) {\r\n var d, d0, d1, d2, e, exp, n, n0, n1, q, r, s,\r\n x = this,\r\n xc = x.c;\r\n\r\n if (md != null) {\r\n n = new BigNumber(md);\r\n\r\n // Throw if md is less than one or is not an integer, unless it is Infinity.\r\n if (!n.isInteger() && (n.c || n.s !== 1) || n.lt(ONE)) {\r\n throw Error\r\n (bignumberError + 'Argument ' +\r\n (n.isInteger() ? 'out of range: ' : 'not an integer: ') + valueOf(n));\r\n }\r\n }\r\n\r\n if (!xc) return new BigNumber(x);\r\n\r\n d = new BigNumber(ONE);\r\n n1 = d0 = new BigNumber(ONE);\r\n d1 = n0 = new BigNumber(ONE);\r\n s = coeffToString(xc);\r\n\r\n // Determine initial denominator.\r\n // d is a power of 10 and the minimum max denominator that specifies the value exactly.\r\n e = d.e = s.length - x.e - 1;\r\n d.c[0] = POWS_TEN[(exp = e % LOG_BASE) < 0 ? LOG_BASE + exp : exp];\r\n md = !md || n.comparedTo(d) > 0 ? (e > 0 ? d : n1) : n;\r\n\r\n exp = MAX_EXP;\r\n MAX_EXP = 1 / 0;\r\n n = new BigNumber(s);\r\n\r\n // n0 = d1 = 0\r\n n0.c[0] = 0;\r\n\r\n for (; ;) {\r\n q = div(n, d, 0, 1);\r\n d2 = d0.plus(q.times(d1));\r\n if (d2.comparedTo(md) == 1) break;\r\n d0 = d1;\r\n d1 = d2;\r\n n1 = n0.plus(q.times(d2 = n1));\r\n n0 = d2;\r\n d = n.minus(q.times(d2 = d));\r\n n = d2;\r\n }\r\n\r\n d2 = div(md.minus(d0), d1, 0, 1);\r\n n0 = n0.plus(d2.times(n1));\r\n d0 = d0.plus(d2.times(d1));\r\n n0.s = n1.s = x.s;\r\n e = e * 2;\r\n\r\n // Determine which fraction is closer to x, n0/d0 or n1/d1\r\n r = div(n1, d1, e, ROUNDING_MODE).minus(x).abs().comparedTo(\r\n div(n0, d0, e, ROUNDING_MODE).minus(x).abs()) < 1 ? [n1, d1] : [n0, d0];\r\n\r\n MAX_EXP = exp;\r\n\r\n return r;\r\n };\r\n\r\n\r\n /*\r\n * Return the value of this BigNumber converted to a number primitive.\r\n */\r\n P.toNumber = function () {\r\n return +valueOf(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber rounded to sd significant digits\r\n * using rounding mode rm or ROUNDING_MODE. If sd is less than the number of digits\r\n * necessary to represent the integer part of the value in fixed-point notation, then use\r\n * exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.toPrecision = function (sd, rm) {\r\n if (sd != null) intCheck(sd, 1, MAX);\r\n return format(this, sd, rm, 2);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in base b, or base 10 if b is\r\n * omitted. If a base is specified, including base 10, round according to DECIMAL_PLACES and\r\n * ROUNDING_MODE. If a base is not specified, and this BigNumber has a positive exponent\r\n * that is equal to or greater than TO_EXP_POS, or a negative exponent equal to or less than\r\n * TO_EXP_NEG, return exponential notation.\r\n *\r\n * [b] {number} Integer, 2 to ALPHABET.length inclusive.\r\n *\r\n * '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n */\r\n P.toString = function (b) {\r\n var str,\r\n n = this,\r\n s = n.s,\r\n e = n.e;\r\n\r\n // Infinity or NaN?\r\n if (e === null) {\r\n if (s) {\r\n str = 'Infinity';\r\n if (s < 0) str = '-' + str;\r\n } else {\r\n str = 'NaN';\r\n }\r\n } else {\r\n if (b == null) {\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(coeffToString(n.c), e)\r\n : toFixedPoint(coeffToString(n.c), e, '0');\r\n } else if (b === 10) {\r\n n = round(new BigNumber(n), DECIMAL_PLACES + e + 1, ROUNDING_MODE);\r\n str = toFixedPoint(coeffToString(n.c), n.e, '0');\r\n } else {\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n str = convertBase(toFixedPoint(coeffToString(n.c), e, '0'), 10, b, s, true);\r\n }\r\n\r\n if (s < 0 && n.c[0]) str = '-' + str;\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return as toString, but do not accept a base argument, and include the minus sign for\r\n * negative zero.\r\n */\r\n P.valueOf = P.toJSON = function () {\r\n return valueOf(this);\r\n };\r\n\r\n\r\n P._isBigNumber = true;\r\n\r\n if (configObject != null) BigNumber.set(configObject);\r\n\r\n return BigNumber;\r\n }\r\n\r\n\r\n // PRIVATE HELPER FUNCTIONS\r\n\r\n // These functions don't need access to variables,\r\n // e.g. DECIMAL_PLACES, in the scope of the `clone` function above.\r\n\r\n\r\n function bitFloor(n) {\r\n var i = n | 0;\r\n return n > 0 || n === i ? i : i - 1;\r\n }\r\n\r\n\r\n // Return a coefficient array as a string of base 10 digits.\r\n function coeffToString(a) {\r\n var s, z,\r\n i = 1,\r\n j = a.length,\r\n r = a[0] + '';\r\n\r\n for (; i < j;) {\r\n s = a[i++] + '';\r\n z = LOG_BASE - s.length;\r\n for (; z--; s = '0' + s);\r\n r += s;\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (j = r.length; r.charCodeAt(--j) === 48;);\r\n\r\n return r.slice(0, j + 1 || 1);\r\n }\r\n\r\n\r\n // Compare the value of BigNumbers x and y.\r\n function compare(x, y) {\r\n var a, b,\r\n xc = x.c,\r\n yc = y.c,\r\n i = x.s,\r\n j = y.s,\r\n k = x.e,\r\n l = y.e;\r\n\r\n // Either NaN?\r\n if (!i || !j) return null;\r\n\r\n a = xc && !xc[0];\r\n b = yc && !yc[0];\r\n\r\n // Either zero?\r\n if (a || b) return a ? b ? 0 : -j : i;\r\n\r\n // Signs differ?\r\n if (i != j) return i;\r\n\r\n a = i < 0;\r\n b = k == l;\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return b ? 0 : !xc ^ a ? 1 : -1;\r\n\r\n // Compare exponents.\r\n if (!b) return k > l ^ a ? 1 : -1;\r\n\r\n j = (k = xc.length) < (l = yc.length) ? k : l;\r\n\r\n // Compare digit by digit.\r\n for (i = 0; i < j; i++) if (xc[i] != yc[i]) return xc[i] > yc[i] ^ a ? 1 : -1;\r\n\r\n // Compare lengths.\r\n return k == l ? 0 : k > l ^ a ? 1 : -1;\r\n }\r\n\r\n\r\n /*\r\n * Check that n is a primitive number, an integer, and in range, otherwise throw.\r\n */\r\n function intCheck(n, min, max, name) {\r\n if (n < min || n > max || n !== mathfloor(n)) {\r\n throw Error\r\n (bignumberError + (name || 'Argument') + (typeof n == 'number'\r\n ? n < min || n > max ? ' out of range: ' : ' not an integer: '\r\n : ' not a primitive number: ') + String(n));\r\n }\r\n }\r\n\r\n\r\n // Assumes finite n.\r\n function isOdd(n) {\r\n var k = n.c.length - 1;\r\n return bitFloor(n.e / LOG_BASE) == k && n.c[k] % 2 != 0;\r\n }\r\n\r\n\r\n function toExponential(str, e) {\r\n return (str.length > 1 ? str.charAt(0) + '.' + str.slice(1) : str) +\r\n (e < 0 ? 'e' : 'e+') + e;\r\n }\r\n\r\n\r\n function toFixedPoint(str, e, z) {\r\n var len, zs;\r\n\r\n // Negative exponent?\r\n if (e < 0) {\r\n\r\n // Prepend zeros.\r\n for (zs = z + '.'; ++e; zs += z);\r\n str = zs + str;\r\n\r\n // Positive exponent\r\n } else {\r\n len = str.length;\r\n\r\n // Append zeros.\r\n if (++e > len) {\r\n for (zs = z, e -= len; --e; zs += z);\r\n str += zs;\r\n } else if (e < len) {\r\n str = str.slice(0, e) + '.' + str.slice(e);\r\n }\r\n }\r\n\r\n return str;\r\n }\r\n\r\n\r\n // EXPORT\r\n\r\n\r\n BigNumber = clone();\r\n BigNumber['default'] = BigNumber.BigNumber = BigNumber;\r\n\r\n // AMD.\r\n if (typeof define == 'function' && define.amd) {\r\n define(function () { return BigNumber; });\r\n\r\n // Node.js and other environments that support module.exports.\r\n } else if (typeof module != 'undefined' && module.exports) {\r\n module.exports = BigNumber;\r\n\r\n // Browser.\r\n } else {\r\n if (!globalObject) {\r\n globalObject = typeof self != 'undefined' && self ? self : window;\r\n }\r\n\r\n globalObject.BigNumber = BigNumber;\r\n }\r\n})(this);\r\n","'use strict'\nconst Buffer = require('safe-buffer').Buffer\n\nmodule.exports = class BufferPipe {\n /**\n * Creates a new instance of a pipe\n * @param {Buffer} buf - an optional buffer to start with\n */\n constructor (buf = Buffer.from([])) {\n this.buffer = buf\n this._bytesRead = 0\n this._bytesWrote = 0\n }\n\n /**\n * read `num` number of bytes from the pipe\n * @param {Number} num\n * @return {Buffer}\n */\n read (num) {\n this._bytesRead += num\n const data = this.buffer.slice(0, num)\n this.buffer = this.buffer.slice(num)\n return data\n }\n\n /**\n * Wites a buffer to the pipe\n * @param {Buffer} buf\n */\n write (buf) {\n buf = Buffer.from(buf)\n this._bytesWrote += buf.length\n this.buffer = Buffer.concat([this.buffer, buf])\n }\n\n /**\n * Whether or not there is more data to read from the buffer\n * returns {Boolean}\n */\n get end () {\n return !this.buffer.length\n }\n\n /**\n * returns the number of bytes read from the stream\n * @return {Integer}\n */\n get bytesRead () {\n return this._bytesRead\n }\n\n /**\n * returns the number of bytes wrote to the stream\n * @return {Integer}\n */\n get bytesWrote () {\n return this._bytesWrote\n }\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/**\n * [js-sha256]{@link https://github.com/emn178/js-sha256}\n *\n * @version 0.9.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2014-2017\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var ERROR = 'input is invalid type';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA256_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA256_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA256_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA256_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var EXTRA = [-2147483648, 8388608, 32768, 128];\n var SHIFT = [24, 16, 8, 0];\n var K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n ];\n var OUTPUT_TYPES = ['hex', 'array', 'digest', 'arrayBuffer'];\n\n var blocks = [];\n\n if (root.JS_SHA256_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (outputType, is224) {\n return function (message) {\n return new Sha256(is224, true).update(message)[outputType]();\n };\n };\n\n var createMethod = function (is224) {\n var method = createOutputMethod('hex', is224);\n if (NODE_JS) {\n method = nodeWrap(method, is224);\n }\n method.create = function () {\n return new Sha256(is224);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createOutputMethod(type, is224);\n }\n return method;\n };\n\n var nodeWrap = function (method, is224) {\n var crypto = eval(\"require('crypto')\");\n var Buffer = eval(\"require('buffer').Buffer\");\n var algorithm = is224 ? 'sha224' : 'sha256';\n var nodeMethod = function (message) {\n if (typeof message === 'string') {\n return crypto.createHash(algorithm).update(message, 'utf8').digest('hex');\n } else {\n if (message === null || message === undefined) {\n throw new Error(ERROR);\n } else if (message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n }\n }\n if (Array.isArray(message) || ArrayBuffer.isView(message) ||\n message.constructor === Buffer) {\n return crypto.createHash(algorithm).update(new Buffer(message)).digest('hex');\n } else {\n return method(message);\n }\n };\n return nodeMethod;\n };\n\n var createHmacOutputMethod = function (outputType, is224) {\n return function (key, message) {\n return new HmacSha256(key, is224, true).update(message)[outputType]();\n };\n };\n\n var createHmacMethod = function (is224) {\n var method = createHmacOutputMethod('hex', is224);\n method.create = function (key) {\n return new HmacSha256(key, is224);\n };\n method.update = function (key, message) {\n return method.create(key).update(message);\n };\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createHmacOutputMethod(type, is224);\n }\n return method;\n };\n\n function Sha256(is224, sharedMemory) {\n if (sharedMemory) {\n blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n this.blocks = blocks;\n } else {\n this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n }\n\n if (is224) {\n this.h0 = 0xc1059ed8;\n this.h1 = 0x367cd507;\n this.h2 = 0x3070dd17;\n this.h3 = 0xf70e5939;\n this.h4 = 0xffc00b31;\n this.h5 = 0x68581511;\n this.h6 = 0x64f98fa7;\n this.h7 = 0xbefa4fa4;\n } else { // 256\n this.h0 = 0x6a09e667;\n this.h1 = 0xbb67ae85;\n this.h2 = 0x3c6ef372;\n this.h3 = 0xa54ff53a;\n this.h4 = 0x510e527f;\n this.h5 = 0x9b05688c;\n this.h6 = 0x1f83d9ab;\n this.h7 = 0x5be0cd19;\n }\n\n this.block = this.start = this.bytes = this.hBytes = 0;\n this.finalized = this.hashed = false;\n this.first = true;\n this.is224 = is224;\n }\n\n Sha256.prototype.update = function (message) {\n if (this.finalized) {\n return;\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(ERROR);\n }\n }\n } else {\n throw new Error(ERROR);\n }\n notString = true;\n }\n var code, index = 0, i, length = message.length, blocks = this.blocks;\n\n while (index < length) {\n if (this.hashed) {\n this.hashed = false;\n blocks[0] = this.block;\n blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n }\n\n if (notString) {\n for (i = this.start; index < length && i < 64; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < 64; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n\n this.lastByteIndex = i;\n this.bytes += i - this.start;\n if (i >= 64) {\n this.block = blocks[16];\n this.start = i - 64;\n this.hash();\n this.hashed = true;\n } else {\n this.start = i;\n }\n }\n if (this.bytes > 4294967295) {\n this.hBytes += this.bytes / 4294967296 << 0;\n this.bytes = this.bytes % 4294967296;\n }\n return this;\n };\n\n Sha256.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex;\n blocks[16] = this.block;\n blocks[i >> 2] |= EXTRA[i & 3];\n this.block = blocks[16];\n if (i >= 56) {\n if (!this.hashed) {\n this.hash();\n }\n blocks[0] = this.block;\n blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n }\n blocks[14] = this.hBytes << 3 | this.bytes >>> 29;\n blocks[15] = this.bytes << 3;\n this.hash();\n };\n\n Sha256.prototype.hash = function () {\n var a = this.h0, b = this.h1, c = this.h2, d = this.h3, e = this.h4, f = this.h5, g = this.h6,\n h = this.h7, blocks = this.blocks, j, s0, s1, maj, t1, t2, ch, ab, da, cd, bc;\n\n for (j = 16; j < 64; ++j) {\n // rightrotate\n t1 = blocks[j - 15];\n s0 = ((t1 >>> 7) | (t1 << 25)) ^ ((t1 >>> 18) | (t1 << 14)) ^ (t1 >>> 3);\n t1 = blocks[j - 2];\n s1 = ((t1 >>> 17) | (t1 << 15)) ^ ((t1 >>> 19) | (t1 << 13)) ^ (t1 >>> 10);\n blocks[j] = blocks[j - 16] + s0 + blocks[j - 7] + s1 << 0;\n }\n\n bc = b & c;\n for (j = 0; j < 64; j += 4) {\n if (this.first) {\n if (this.is224) {\n ab = 300032;\n t1 = blocks[0] - 1413257819;\n h = t1 - 150054599 << 0;\n d = t1 + 24177077 << 0;\n } else {\n ab = 704751109;\n t1 = blocks[0] - 210244248;\n h = t1 - 1521486534 << 0;\n d = t1 + 143694565 << 0;\n }\n this.first = false;\n } else {\n s0 = ((a >>> 2) | (a << 30)) ^ ((a >>> 13) | (a << 19)) ^ ((a >>> 22) | (a << 10));\n s1 = ((e >>> 6) | (e << 26)) ^ ((e >>> 11) | (e << 21)) ^ ((e >>> 25) | (e << 7));\n ab = a & b;\n maj = ab ^ (a & c) ^ bc;\n ch = (e & f) ^ (~e & g);\n t1 = h + s1 + ch + K[j] + blocks[j];\n t2 = s0 + maj;\n h = d + t1 << 0;\n d = t1 + t2 << 0;\n }\n s0 = ((d >>> 2) | (d << 30)) ^ ((d >>> 13) | (d << 19)) ^ ((d >>> 22) | (d << 10));\n s1 = ((h >>> 6) | (h << 26)) ^ ((h >>> 11) | (h << 21)) ^ ((h >>> 25) | (h << 7));\n da = d & a;\n maj = da ^ (d & b) ^ ab;\n ch = (h & e) ^ (~h & f);\n t1 = g + s1 + ch + K[j + 1] + blocks[j + 1];\n t2 = s0 + maj;\n g = c + t1 << 0;\n c = t1 + t2 << 0;\n s0 = ((c >>> 2) | (c << 30)) ^ ((c >>> 13) | (c << 19)) ^ ((c >>> 22) | (c << 10));\n s1 = ((g >>> 6) | (g << 26)) ^ ((g >>> 11) | (g << 21)) ^ ((g >>> 25) | (g << 7));\n cd = c & d;\n maj = cd ^ (c & a) ^ da;\n ch = (g & h) ^ (~g & e);\n t1 = f + s1 + ch + K[j + 2] + blocks[j + 2];\n t2 = s0 + maj;\n f = b + t1 << 0;\n b = t1 + t2 << 0;\n s0 = ((b >>> 2) | (b << 30)) ^ ((b >>> 13) | (b << 19)) ^ ((b >>> 22) | (b << 10));\n s1 = ((f >>> 6) | (f << 26)) ^ ((f >>> 11) | (f << 21)) ^ ((f >>> 25) | (f << 7));\n bc = b & c;\n maj = bc ^ (b & d) ^ cd;\n ch = (f & g) ^ (~f & h);\n t1 = e + s1 + ch + K[j + 3] + blocks[j + 3];\n t2 = s0 + maj;\n e = a + t1 << 0;\n a = t1 + t2 << 0;\n }\n\n this.h0 = this.h0 + a << 0;\n this.h1 = this.h1 + b << 0;\n this.h2 = this.h2 + c << 0;\n this.h3 = this.h3 + d << 0;\n this.h4 = this.h4 + e << 0;\n this.h5 = this.h5 + f << 0;\n this.h6 = this.h6 + g << 0;\n this.h7 = this.h7 + h << 0;\n };\n\n Sha256.prototype.hex = function () {\n this.finalize();\n\n var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5,\n h6 = this.h6, h7 = this.h7;\n\n var hex = HEX_CHARS[(h0 >> 28) & 0x0F] + HEX_CHARS[(h0 >> 24) & 0x0F] +\n HEX_CHARS[(h0 >> 20) & 0x0F] + HEX_CHARS[(h0 >> 16) & 0x0F] +\n HEX_CHARS[(h0 >> 12) & 0x0F] + HEX_CHARS[(h0 >> 8) & 0x0F] +\n HEX_CHARS[(h0 >> 4) & 0x0F] + HEX_CHARS[h0 & 0x0F] +\n HEX_CHARS[(h1 >> 28) & 0x0F] + HEX_CHARS[(h1 >> 24) & 0x0F] +\n HEX_CHARS[(h1 >> 20) & 0x0F] + HEX_CHARS[(h1 >> 16) & 0x0F] +\n HEX_CHARS[(h1 >> 12) & 0x0F] + HEX_CHARS[(h1 >> 8) & 0x0F] +\n HEX_CHARS[(h1 >> 4) & 0x0F] + HEX_CHARS[h1 & 0x0F] +\n HEX_CHARS[(h2 >> 28) & 0x0F] + HEX_CHARS[(h2 >> 24) & 0x0F] +\n HEX_CHARS[(h2 >> 20) & 0x0F] + HEX_CHARS[(h2 >> 16) & 0x0F] +\n HEX_CHARS[(h2 >> 12) & 0x0F] + HEX_CHARS[(h2 >> 8) & 0x0F] +\n HEX_CHARS[(h2 >> 4) & 0x0F] + HEX_CHARS[h2 & 0x0F] +\n HEX_CHARS[(h3 >> 28) & 0x0F] + HEX_CHARS[(h3 >> 24) & 0x0F] +\n HEX_CHARS[(h3 >> 20) & 0x0F] + HEX_CHARS[(h3 >> 16) & 0x0F] +\n HEX_CHARS[(h3 >> 12) & 0x0F] + HEX_CHARS[(h3 >> 8) & 0x0F] +\n HEX_CHARS[(h3 >> 4) & 0x0F] + HEX_CHARS[h3 & 0x0F] +\n HEX_CHARS[(h4 >> 28) & 0x0F] + HEX_CHARS[(h4 >> 24) & 0x0F] +\n HEX_CHARS[(h4 >> 20) & 0x0F] + HEX_CHARS[(h4 >> 16) & 0x0F] +\n HEX_CHARS[(h4 >> 12) & 0x0F] + HEX_CHARS[(h4 >> 8) & 0x0F] +\n HEX_CHARS[(h4 >> 4) & 0x0F] + HEX_CHARS[h4 & 0x0F] +\n HEX_CHARS[(h5 >> 28) & 0x0F] + HEX_CHARS[(h5 >> 24) & 0x0F] +\n HEX_CHARS[(h5 >> 20) & 0x0F] + HEX_CHARS[(h5 >> 16) & 0x0F] +\n HEX_CHARS[(h5 >> 12) & 0x0F] + HEX_CHARS[(h5 >> 8) & 0x0F] +\n HEX_CHARS[(h5 >> 4) & 0x0F] + HEX_CHARS[h5 & 0x0F] +\n HEX_CHARS[(h6 >> 28) & 0x0F] + HEX_CHARS[(h6 >> 24) & 0x0F] +\n HEX_CHARS[(h6 >> 20) & 0x0F] + HEX_CHARS[(h6 >> 16) & 0x0F] +\n HEX_CHARS[(h6 >> 12) & 0x0F] + HEX_CHARS[(h6 >> 8) & 0x0F] +\n HEX_CHARS[(h6 >> 4) & 0x0F] + HEX_CHARS[h6 & 0x0F];\n if (!this.is224) {\n hex += HEX_CHARS[(h7 >> 28) & 0x0F] + HEX_CHARS[(h7 >> 24) & 0x0F] +\n HEX_CHARS[(h7 >> 20) & 0x0F] + HEX_CHARS[(h7 >> 16) & 0x0F] +\n HEX_CHARS[(h7 >> 12) & 0x0F] + HEX_CHARS[(h7 >> 8) & 0x0F] +\n HEX_CHARS[(h7 >> 4) & 0x0F] + HEX_CHARS[h7 & 0x0F];\n }\n return hex;\n };\n\n Sha256.prototype.toString = Sha256.prototype.hex;\n\n Sha256.prototype.digest = function () {\n this.finalize();\n\n var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5,\n h6 = this.h6, h7 = this.h7;\n\n var arr = [\n (h0 >> 24) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 8) & 0xFF, h0 & 0xFF,\n (h1 >> 24) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 8) & 0xFF, h1 & 0xFF,\n (h2 >> 24) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 8) & 0xFF, h2 & 0xFF,\n (h3 >> 24) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 8) & 0xFF, h3 & 0xFF,\n (h4 >> 24) & 0xFF, (h4 >> 16) & 0xFF, (h4 >> 8) & 0xFF, h4 & 0xFF,\n (h5 >> 24) & 0xFF, (h5 >> 16) & 0xFF, (h5 >> 8) & 0xFF, h5 & 0xFF,\n (h6 >> 24) & 0xFF, (h6 >> 16) & 0xFF, (h6 >> 8) & 0xFF, h6 & 0xFF\n ];\n if (!this.is224) {\n arr.push((h7 >> 24) & 0xFF, (h7 >> 16) & 0xFF, (h7 >> 8) & 0xFF, h7 & 0xFF);\n }\n return arr;\n };\n\n Sha256.prototype.array = Sha256.prototype.digest;\n\n Sha256.prototype.arrayBuffer = function () {\n this.finalize();\n\n var buffer = new ArrayBuffer(this.is224 ? 28 : 32);\n var dataView = new DataView(buffer);\n dataView.setUint32(0, this.h0);\n dataView.setUint32(4, this.h1);\n dataView.setUint32(8, this.h2);\n dataView.setUint32(12, this.h3);\n dataView.setUint32(16, this.h4);\n dataView.setUint32(20, this.h5);\n dataView.setUint32(24, this.h6);\n if (!this.is224) {\n dataView.setUint32(28, this.h7);\n }\n return buffer;\n };\n\n function HmacSha256(key, is224, sharedMemory) {\n var i, type = typeof key;\n if (type === 'string') {\n var bytes = [], length = key.length, index = 0, code;\n for (i = 0; i < length; ++i) {\n code = key.charCodeAt(i);\n if (code < 0x80) {\n bytes[index++] = code;\n } else if (code < 0x800) {\n bytes[index++] = (0xc0 | (code >> 6));\n bytes[index++] = (0x80 | (code & 0x3f));\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes[index++] = (0xe0 | (code >> 12));\n bytes[index++] = (0x80 | ((code >> 6) & 0x3f));\n bytes[index++] = (0x80 | (code & 0x3f));\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (key.charCodeAt(++i) & 0x3ff));\n bytes[index++] = (0xf0 | (code >> 18));\n bytes[index++] = (0x80 | ((code >> 12) & 0x3f));\n bytes[index++] = (0x80 | ((code >> 6) & 0x3f));\n bytes[index++] = (0x80 | (code & 0x3f));\n }\n }\n key = bytes;\n } else {\n if (type === 'object') {\n if (key === null) {\n throw new Error(ERROR);\n } else if (ARRAY_BUFFER && key.constructor === ArrayBuffer) {\n key = new Uint8Array(key);\n } else if (!Array.isArray(key)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(key)) {\n throw new Error(ERROR);\n }\n }\n } else {\n throw new Error(ERROR);\n }\n }\n\n if (key.length > 64) {\n key = (new Sha256(is224, true)).update(key).array();\n }\n\n var oKeyPad = [], iKeyPad = [];\n for (i = 0; i < 64; ++i) {\n var b = key[i] || 0;\n oKeyPad[i] = 0x5c ^ b;\n iKeyPad[i] = 0x36 ^ b;\n }\n\n Sha256.call(this, is224, sharedMemory);\n\n this.update(iKeyPad);\n this.oKeyPad = oKeyPad;\n this.inner = true;\n this.sharedMemory = sharedMemory;\n }\n HmacSha256.prototype = new Sha256();\n\n HmacSha256.prototype.finalize = function () {\n Sha256.prototype.finalize.call(this);\n if (this.inner) {\n this.inner = false;\n var innerHash = this.array();\n Sha256.call(this, this.is224, this.sharedMemory);\n this.update(this.oKeyPad);\n this.update(innerHash);\n Sha256.prototype.finalize.call(this);\n }\n };\n\n var exports = createMethod();\n exports.sha256 = exports;\n exports.sha224 = createMethod(true);\n exports.sha256.hmac = createHmacMethod();\n exports.sha224.hmac = createHmacMethod(true);\n\n if (COMMON_JS) {\n module.exports = exports;\n } else {\n root.sha256 = exports.sha256;\n root.sha224 = exports.sha224;\n if (AMD) {\n define(function () {\n return exports;\n });\n }\n }\n})();\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(require(\"./serializer\"));\nconst value = __importStar(require(\"./value\"));\nexports.value = value;\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst cbor = __importStar(require(\"./value\"));\nconst BufferClasses = [\n ArrayBuffer,\n Uint8Array,\n Uint16Array,\n Uint32Array,\n Int8Array,\n Int16Array,\n Int32Array,\n Float32Array,\n Float64Array,\n];\nclass JsonDefaultCborEncoder {\n // @param _serializer The CBOR Serializer to use.\n // @param _stable Whether or not keys from objects should be sorted (stable). This is\n // particularly useful when testing encodings between JSON objects.\n constructor(_serializer, _stable = false) {\n this._serializer = _serializer;\n this._stable = _stable;\n this.name = \"jsonDefault\";\n this.priority = -100;\n }\n match(value) {\n return [\"undefined\", \"boolean\", \"number\", \"string\", \"object\"].indexOf(typeof value) != -1;\n }\n encode(value) {\n switch (typeof value) {\n case \"undefined\":\n return cbor.undefined_();\n case \"boolean\":\n return cbor.bool(value);\n case \"number\":\n if (Math.floor(value) === value) {\n return cbor.number(value);\n }\n else {\n return cbor.doubleFloat(value);\n }\n case \"string\":\n return cbor.string(value);\n case \"object\":\n if (value === null) {\n return cbor.null_();\n }\n else if (Array.isArray(value)) {\n return cbor.array(value.map((x) => this._serializer.serializeValue(x)));\n }\n else if (BufferClasses.find((x) => value instanceof x)) {\n return cbor.bytes(value.buffer);\n }\n else if (Object.getOwnPropertyNames(value).indexOf(\"toJSON\") !== -1) {\n return this.encode(value.toJSON());\n }\n else if (value instanceof Map) {\n const m = new Map();\n for (const [key, item] of value.entries()) {\n m.set(key, this._serializer.serializeValue(item));\n }\n return cbor.map(m, this._stable);\n }\n else {\n const m = new Map();\n for (const [key, item] of Object.entries(value)) {\n m.set(key, this._serializer.serializeValue(item));\n }\n return cbor.map(m, this._stable);\n }\n default:\n throw new Error(\"Invalid value.\");\n }\n }\n}\nexports.JsonDefaultCborEncoder = JsonDefaultCborEncoder;\nclass ToCborEncoder {\n constructor() {\n this.name = \"cborEncoder\";\n this.priority = -90;\n }\n match(value) {\n return typeof value == \"object\" && typeof value[\"toCBOR\"] == \"function\";\n }\n encode(value) {\n return value.toCBOR();\n }\n}\nexports.ToCborEncoder = ToCborEncoder;\nclass CborSerializer {\n constructor() {\n this._encoders = new Set();\n }\n static withDefaultEncoders(stable = false) {\n const s = new this();\n s.addEncoder(new JsonDefaultCborEncoder(s, stable));\n s.addEncoder(new ToCborEncoder());\n return s;\n }\n removeEncoder(name) {\n // Has to make an extra call to values() to ensure it doesn't break on iteration.\n for (const encoder of this._encoders.values()) {\n if (encoder.name == name) {\n this._encoders.delete(encoder);\n }\n }\n }\n addEncoder(encoder) {\n this._encoders.add(encoder);\n }\n getEncoderFor(value) {\n let chosenEncoder = null;\n for (const encoder of this._encoders) {\n if (!chosenEncoder || encoder.priority > chosenEncoder.priority) {\n if (encoder.match(value)) {\n chosenEncoder = encoder;\n }\n }\n }\n if (chosenEncoder === null) {\n throw new Error(\"Could not find an encoder for value.\");\n }\n return chosenEncoder;\n }\n serializeValue(value) {\n return this.getEncoderFor(value).encode(value);\n }\n serialize(value) {\n return this.serializeValue(value);\n }\n}\nexports.CborSerializer = CborSerializer;\nclass SelfDescribeCborSerializer extends CborSerializer {\n serialize(value) {\n return cbor.raw(new Uint8Array([\n // Self describe CBOR.\n ...new Uint8Array([0xd9, 0xd9, 0xf7]),\n ...new Uint8Array(super.serializeValue(value)),\n ]));\n }\n}\nexports.SelfDescribeCborSerializer = SelfDescribeCborSerializer;\n//# sourceMappingURL=serializer.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst MAX_U64_NUMBER = 0x20000000000000;\nfunction _concat(a, ...args) {\n const newBuffer = new Uint8Array(a.byteLength + args.reduce((acc, b) => acc + b.byteLength, 0));\n newBuffer.set(new Uint8Array(a), 0);\n let i = a.byteLength;\n for (const b of args) {\n newBuffer.set(new Uint8Array(b), i);\n i += b.byteLength;\n }\n return newBuffer.buffer;\n}\nfunction _serializeValue(major, minor, value) {\n // Remove everything that's not an hexadecimal character. These are not\n // considered errors since the value was already validated and they might\n // be number decimals or sign.\n value = value.replace(/[^0-9a-fA-F]/g, \"\");\n // Create the buffer from the value with left padding with 0.\n const length = 2 ** (minor - 24 /* Int8 */);\n value = value.slice(-length * 2).padStart(length * 2, \"0\");\n const bytes = [(major << 5) + minor].concat(value.match(/../g).map((byte) => parseInt(byte, 16)));\n return new Uint8Array(bytes).buffer;\n}\nfunction _serializeNumber(major, value) {\n if (value < 24) {\n return new Uint8Array([(major << 5) + value]).buffer;\n }\n else {\n const minor = value <= 0xff\n ? 24 /* Int8 */\n : value <= 0xffff\n ? 25 /* Int16 */\n : value <= 0xffffffff\n ? 26 /* Int32 */\n : 27 /* Int64 */;\n return _serializeValue(major, minor, value.toString(16));\n }\n}\nfunction _serializeString(str) {\n const utf8 = [];\n for (let i = 0; i < str.length; i++) {\n let charcode = str.charCodeAt(i);\n if (charcode < 0x80) {\n utf8.push(charcode);\n }\n else if (charcode < 0x800) {\n utf8.push(0xc0 | (charcode >> 6), 0x80 | (charcode & 0x3f));\n }\n else if (charcode < 0xd800 || charcode >= 0xe000) {\n utf8.push(0xe0 | (charcode >> 12), 0x80 | ((charcode >> 6) & 0x3f), 0x80 | (charcode & 0x3f));\n }\n else {\n // Surrogate pair\n i++;\n charcode = ((charcode & 0x3ff) << 10) | (str.charCodeAt(i) & 0x3ff);\n utf8.push(0xf0 | (charcode >> 18), 0x80 | ((charcode >> 12) & 0x3f), 0x80 | ((charcode >> 6) & 0x3f), 0x80 | (charcode & 0x3f));\n }\n }\n return _concat(new Uint8Array(_serializeNumber(3 /* TextString */, str.length)), new Uint8Array(utf8));\n}\n/**\n * Tag a value.\n */\nfunction tagged(tag, value) {\n if (tag == 0xd9d9f7) {\n return _concat(new Uint8Array([0xd9, 0xd9, 0xf7]), value);\n }\n if (tag < 24) {\n return _concat(new Uint8Array([(6 /* Tag */ << 5) + tag]), value);\n }\n else {\n const minor = tag <= 0xff\n ? 24 /* Int8 */\n : tag <= 0xffff\n ? 25 /* Int16 */\n : tag <= 0xffffffff\n ? 26 /* Int32 */\n : 27 /* Int64 */;\n const length = 2 ** (minor - 24 /* Int8 */);\n const value = tag\n .toString(16)\n .slice(-length * 2)\n .padStart(length * 2, \"0\");\n const bytes = [(6 /* Tag */ << 5) + minor].concat(value.match(/../g).map((byte) => parseInt(byte, 16)));\n return new Uint8Array(bytes).buffer;\n }\n}\nexports.tagged = tagged;\n/**\n * Set the raw bytes contained by this value. This should only be used with another\n * CborValue, or if you are implementing extensions to CBOR.\n * @param bytes A buffer containing the value.\n */\nfunction raw(bytes) {\n return new Uint8Array(bytes).buffer;\n}\nexports.raw = raw;\n/**\n * Encode a number that is between [0, 23].\n * @param n\n */\nfunction uSmall(n) {\n if (isNaN(n)) {\n throw new RangeError(\"Invalid number.\");\n }\n n = Math.min(Math.max(0, n), 23); // Clamp it.\n const bytes = [(0 /* UnsignedInteger */ << 5) + n];\n return new Uint8Array(bytes).buffer;\n}\nexports.uSmall = uSmall;\nfunction u8(u8, radix) {\n // Force u8 into a number, and validate it.\n u8 = parseInt(\"\" + u8, radix);\n if (isNaN(u8)) {\n throw new RangeError(\"Invalid number.\");\n }\n u8 = Math.min(Math.max(0, u8), 0xff); // Clamp it.\n u8 = u8.toString(16);\n return _serializeValue(0 /* UnsignedInteger */, 24 /* Int8 */, u8);\n}\nexports.u8 = u8;\nfunction u16(u16, radix) {\n // Force u16 into a number, and validate it.\n u16 = parseInt(\"\" + u16, radix);\n if (isNaN(u16)) {\n throw new RangeError(\"Invalid number.\");\n }\n u16 = Math.min(Math.max(0, u16), 0xffff); // Clamp it.\n u16 = u16.toString(16);\n return _serializeValue(0 /* UnsignedInteger */, 25 /* Int16 */, u16);\n}\nexports.u16 = u16;\nfunction u32(u32, radix) {\n // Force u32 into a number, and validate it.\n u32 = parseInt(\"\" + u32, radix);\n if (isNaN(u32)) {\n throw new RangeError(\"Invalid number.\");\n }\n u32 = Math.min(Math.max(0, u32), 0xffffffff); // Clamp it.\n u32 = u32.toString(16);\n return _serializeValue(0 /* UnsignedInteger */, 26 /* Int32 */, u32);\n}\nexports.u32 = u32;\nfunction u64(u64, radix) {\n // Special consideration for numbers that might be larger than expected.\n if (typeof u64 == \"string\" && radix == 16) {\n // This is the only case where we guarantee we'll encode the number directly.\n // Validate it's all hexadecimal first.\n if (u64.match(/[^0-9a-fA-F]/)) {\n throw new RangeError(\"Invalid number.\");\n }\n return _serializeValue(0 /* UnsignedInteger */, 27 /* Int64 */, u64);\n }\n // Force u64 into a number, and validate it.\n u64 = parseInt(\"\" + u64, radix);\n if (isNaN(u64)) {\n throw new RangeError(\"Invalid number.\");\n }\n u64 = Math.min(Math.max(0, u64), MAX_U64_NUMBER); // Clamp it to actual limit.\n u64 = u64.toString(16);\n return _serializeValue(0 /* UnsignedInteger */, 27 /* Int64 */, u64);\n}\nexports.u64 = u64;\n/**\n * Encode a negative number that is between [-24, -1].\n */\nfunction iSmall(n) {\n if (isNaN(n)) {\n throw new RangeError(\"Invalid number.\");\n }\n if (n === 0) {\n return uSmall(0);\n }\n // Negative n, clamped to [1, 24], minus 1 (there's no negative 0).\n n = Math.min(Math.max(0, -n), 24) - 1;\n const bytes = [(1 /* SignedInteger */ << 5) + n];\n return new Uint8Array(bytes).buffer;\n}\nexports.iSmall = iSmall;\nfunction i8(i8, radix) {\n // Force i8 into a number, and validate it.\n i8 = parseInt(\"\" + i8, radix);\n if (isNaN(i8)) {\n throw new RangeError(\"Invalid number.\");\n }\n // Negative n, clamped, minus 1 (there's no negative 0).\n i8 = Math.min(Math.max(0, -i8 - 1), 0xff);\n i8 = i8.toString(16);\n return _serializeValue(1 /* SignedInteger */, 24 /* Int8 */, i8);\n}\nexports.i8 = i8;\nfunction i16(i16, radix) {\n // Force i16 into a number, and validate it.\n i16 = parseInt(\"\" + i16, radix);\n if (isNaN(i16)) {\n throw new RangeError(\"Invalid number.\");\n }\n // Negative n, clamped, minus 1 (there's no negative 0).\n i16 = Math.min(Math.max(0, -i16 - 1), 0xffff);\n i16 = i16.toString(16);\n return _serializeValue(1 /* SignedInteger */, 25 /* Int16 */, i16);\n}\nexports.i16 = i16;\nfunction i32(i32, radix) {\n // Force i32 into a number, and validate it.\n i32 = parseInt(\"\" + i32, radix);\n if (isNaN(i32)) {\n throw new RangeError(\"Invalid number.\");\n }\n // Negative n, clamped, minus 1 (there's no negative 0).\n i32 = Math.min(Math.max(0, -i32 - 1), 0xffffffff);\n i32 = i32.toString(16);\n return _serializeValue(1 /* SignedInteger */, 26 /* Int32 */, i32);\n}\nexports.i32 = i32;\nfunction i64(i64, radix) {\n // Special consideration for numbers that might be larger than expected.\n if (typeof i64 == \"string\" && radix == 16) {\n if (i64.startsWith(\"-\")) {\n i64 = i64.slice(1);\n }\n else {\n // Clamp it.\n i64 = \"0\";\n }\n // This is the only case where we guarantee we'll encode the number directly.\n // Validate it's all hexadecimal first.\n if (i64.match(/[^0-9a-fA-F]/) || i64.length > 16) {\n throw new RangeError(\"Invalid number.\");\n }\n // We need to do -1 to the number.\n let done = false;\n let newI64 = i64.split(\"\").reduceRight((acc, x) => {\n if (done) {\n return x + acc;\n }\n let n = parseInt(x, 16) - 1;\n if (n >= 0) {\n done = true;\n return n.toString(16) + acc;\n }\n else {\n return \"f\" + acc;\n }\n }, \"\");\n if (!done) {\n // This number was 0.\n return u64(0);\n }\n return _serializeValue(1 /* SignedInteger */, 27 /* Int64 */, newI64);\n }\n // Force i64 into a number, and validate it.\n i64 = parseInt(\"\" + i64, radix);\n if (isNaN(i64)) {\n throw new RangeError(\"Invalid number.\");\n }\n i64 = Math.min(Math.max(0, -i64 - 1), 0x20000000000000); // Clamp it to actual.\n i64 = i64.toString(16);\n return _serializeValue(1 /* SignedInteger */, 27 /* Int64 */, i64);\n}\nexports.i64 = i64;\n/**\n * Encode a number using the smallest amount of bytes, by calling the methods\n * above. e.g. If the number fits in a u8, it will use that.\n */\nfunction number(n) {\n if (n >= 0) {\n if (n < 24) {\n return uSmall(n);\n }\n else if (n <= 0xff) {\n return u8(n);\n }\n else if (n <= 0xffff) {\n return u16(n);\n }\n else if (n <= 0xffffffff) {\n return u32(n);\n }\n else {\n return u64(n);\n }\n }\n else {\n if (n >= -24) {\n return iSmall(n);\n }\n else if (n >= -0xff) {\n return i8(n);\n }\n else if (n >= -0xffff) {\n return i16(n);\n }\n else if (n >= -0xffffffff) {\n return i32(n);\n }\n else {\n return i64(n);\n }\n }\n}\nexports.number = number;\n/**\n * Encode a byte array. This is different than the `raw()` method.\n */\nfunction bytes(bytes) {\n return _concat(_serializeNumber(2 /* ByteString */, bytes.byteLength), bytes);\n}\nexports.bytes = bytes;\n/**\n * Encode a JavaScript string.\n */\nfunction string(str) {\n return _serializeString(str);\n}\nexports.string = string;\n/**\n * Encode an array of cbor values.\n */\nfunction array(items) {\n return _concat(_serializeNumber(4 /* Array */, items.length), ...items);\n}\nexports.array = array;\n/**\n * Encode a map of key-value pairs. The keys are string, and the values are CBOR\n * encoded.\n */\nfunction map(items, stable = false) {\n if (!(items instanceof Map)) {\n items = new Map(Object.entries(items));\n }\n let entries = Array.from(items.entries());\n if (stable) {\n entries = entries.sort(([keyA], [keyB]) => keyA.localeCompare(keyB));\n }\n return _concat(_serializeNumber(5 /* Map */, items.size), ...entries.map(([k, v]) => _concat(_serializeString(k), v)));\n}\nexports.map = map;\n/**\n * Encode a single (32 bits) precision floating point number.\n */\nfunction singleFloat(f) {\n const single = new Float32Array([f]);\n return _concat(new Uint8Array([(7 /* SimpleValue */ << 5) + 26]), new Uint8Array(single.buffer));\n}\nexports.singleFloat = singleFloat;\n/**\n * Encode a double (64 bits) precision floating point number.\n */\nfunction doubleFloat(f) {\n const single = new Float64Array([f]);\n return _concat(new Uint8Array([(7 /* SimpleValue */ << 5) + 27]), new Uint8Array(single.buffer));\n}\nexports.doubleFloat = doubleFloat;\nfunction bool(v) {\n return v ? true_() : false_();\n}\nexports.bool = bool;\n/**\n * Encode the boolean true.\n */\nfunction true_() {\n return raw(new Uint8Array([(7 /* SimpleValue */ << 5) + 21]));\n}\nexports.true_ = true_;\n/**\n * Encode the boolean false.\n */\nfunction false_() {\n return raw(new Uint8Array([(7 /* SimpleValue */ << 5) + 20]));\n}\nexports.false_ = false_;\n/**\n * Encode the constant null.\n */\nfunction null_() {\n return raw(new Uint8Array([(7 /* SimpleValue */ << 5) + 22]));\n}\nexports.null_ = null_;\n/**\n * Encode the constant undefined.\n */\nfunction undefined_() {\n return raw(new Uint8Array([(7 /* SimpleValue */ << 5) + 23]));\n}\nexports.undefined_ = undefined_;\n//# sourceMappingURL=value.js.map","(function(nacl) {\n'use strict';\n\n// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n//\n// Implementation derived from TweetNaCl version 20140427.\n// See for details: http://tweetnacl.cr.yp.to/\n\nvar gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n};\n\n// Pluggable, initialized in high-level API below.\nvar randombytes = function(/* x, n */) { throw new Error('no PRNG'); };\n\nvar _0 = new Uint8Array(16);\nvar _9 = new Uint8Array(32); _9[0] = 9;\n\nvar gf0 = gf(),\n gf1 = gf([1]),\n _121665 = gf([0xdb41, 1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]),\n X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]),\n Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i+1] = (h >> 16) & 0xff;\n x[i+2] = (h >> 8) & 0xff;\n x[i+3] = h & 0xff;\n x[i+4] = (l >> 24) & 0xff;\n x[i+5] = (l >> 16) & 0xff;\n x[i+6] = (l >> 8) & 0xff;\n x[i+7] = l & 0xff;\n}\n\nfunction vn(x, xi, y, yi, n) {\n var i,d = 0;\n for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nfunction crypto_verify_16(x, xi, y, yi) {\n return vn(x,xi,y,yi,16);\n}\n\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x,xi,y,yi,32);\n}\n\nfunction core_salsa20(o, p, k, c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n x0 = x0 + j0 | 0;\n x1 = x1 + j1 | 0;\n x2 = x2 + j2 | 0;\n x3 = x3 + j3 | 0;\n x4 = x4 + j4 | 0;\n x5 = x5 + j5 | 0;\n x6 = x6 + j6 | 0;\n x7 = x7 + j7 | 0;\n x8 = x8 + j8 | 0;\n x9 = x9 + j9 | 0;\n x10 = x10 + j10 | 0;\n x11 = x11 + j11 | 0;\n x12 = x12 + j12 | 0;\n x13 = x13 + j13 | 0;\n x14 = x14 + j14 | 0;\n x15 = x15 + j15 | 0;\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x1 >>> 0 & 0xff;\n o[ 5] = x1 >>> 8 & 0xff;\n o[ 6] = x1 >>> 16 & 0xff;\n o[ 7] = x1 >>> 24 & 0xff;\n\n o[ 8] = x2 >>> 0 & 0xff;\n o[ 9] = x2 >>> 8 & 0xff;\n o[10] = x2 >>> 16 & 0xff;\n o[11] = x2 >>> 24 & 0xff;\n\n o[12] = x3 >>> 0 & 0xff;\n o[13] = x3 >>> 8 & 0xff;\n o[14] = x3 >>> 16 & 0xff;\n o[15] = x3 >>> 24 & 0xff;\n\n o[16] = x4 >>> 0 & 0xff;\n o[17] = x4 >>> 8 & 0xff;\n o[18] = x4 >>> 16 & 0xff;\n o[19] = x4 >>> 24 & 0xff;\n\n o[20] = x5 >>> 0 & 0xff;\n o[21] = x5 >>> 8 & 0xff;\n o[22] = x5 >>> 16 & 0xff;\n o[23] = x5 >>> 24 & 0xff;\n\n o[24] = x6 >>> 0 & 0xff;\n o[25] = x6 >>> 8 & 0xff;\n o[26] = x6 >>> 16 & 0xff;\n o[27] = x6 >>> 24 & 0xff;\n\n o[28] = x7 >>> 0 & 0xff;\n o[29] = x7 >>> 8 & 0xff;\n o[30] = x7 >>> 16 & 0xff;\n o[31] = x7 >>> 24 & 0xff;\n\n o[32] = x8 >>> 0 & 0xff;\n o[33] = x8 >>> 8 & 0xff;\n o[34] = x8 >>> 16 & 0xff;\n o[35] = x8 >>> 24 & 0xff;\n\n o[36] = x9 >>> 0 & 0xff;\n o[37] = x9 >>> 8 & 0xff;\n o[38] = x9 >>> 16 & 0xff;\n o[39] = x9 >>> 24 & 0xff;\n\n o[40] = x10 >>> 0 & 0xff;\n o[41] = x10 >>> 8 & 0xff;\n o[42] = x10 >>> 16 & 0xff;\n o[43] = x10 >>> 24 & 0xff;\n\n o[44] = x11 >>> 0 & 0xff;\n o[45] = x11 >>> 8 & 0xff;\n o[46] = x11 >>> 16 & 0xff;\n o[47] = x11 >>> 24 & 0xff;\n\n o[48] = x12 >>> 0 & 0xff;\n o[49] = x12 >>> 8 & 0xff;\n o[50] = x12 >>> 16 & 0xff;\n o[51] = x12 >>> 24 & 0xff;\n\n o[52] = x13 >>> 0 & 0xff;\n o[53] = x13 >>> 8 & 0xff;\n o[54] = x13 >>> 16 & 0xff;\n o[55] = x13 >>> 24 & 0xff;\n\n o[56] = x14 >>> 0 & 0xff;\n o[57] = x14 >>> 8 & 0xff;\n o[58] = x14 >>> 16 & 0xff;\n o[59] = x14 >>> 24 & 0xff;\n\n o[60] = x15 >>> 0 & 0xff;\n o[61] = x15 >>> 8 & 0xff;\n o[62] = x15 >>> 16 & 0xff;\n o[63] = x15 >>> 24 & 0xff;\n}\n\nfunction core_hsalsa20(o,p,k,c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x5 >>> 0 & 0xff;\n o[ 5] = x5 >>> 8 & 0xff;\n o[ 6] = x5 >>> 16 & 0xff;\n o[ 7] = x5 >>> 24 & 0xff;\n\n o[ 8] = x10 >>> 0 & 0xff;\n o[ 9] = x10 >>> 8 & 0xff;\n o[10] = x10 >>> 16 & 0xff;\n o[11] = x10 >>> 24 & 0xff;\n\n o[12] = x15 >>> 0 & 0xff;\n o[13] = x15 >>> 8 & 0xff;\n o[14] = x15 >>> 16 & 0xff;\n o[15] = x15 >>> 24 & 0xff;\n\n o[16] = x6 >>> 0 & 0xff;\n o[17] = x6 >>> 8 & 0xff;\n o[18] = x6 >>> 16 & 0xff;\n o[19] = x6 >>> 24 & 0xff;\n\n o[20] = x7 >>> 0 & 0xff;\n o[21] = x7 >>> 8 & 0xff;\n o[22] = x7 >>> 16 & 0xff;\n o[23] = x7 >>> 24 & 0xff;\n\n o[24] = x8 >>> 0 & 0xff;\n o[25] = x8 >>> 8 & 0xff;\n o[26] = x8 >>> 16 & 0xff;\n o[27] = x8 >>> 24 & 0xff;\n\n o[28] = x9 >>> 0 & 0xff;\n o[29] = x9 >>> 8 & 0xff;\n o[30] = x9 >>> 16 & 0xff;\n o[31] = x9 >>> 24 & 0xff;\n}\n\nfunction crypto_core_salsa20(out,inp,k,c) {\n core_salsa20(out,inp,k,c);\n}\n\nfunction crypto_core_hsalsa20(out,inp,k,c) {\n core_hsalsa20(out,inp,k,c);\n}\n\nvar sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);\n // \"expand 32-byte k\"\n\nfunction crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n mpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n }\n return 0;\n}\n\nfunction crypto_stream_salsa20(c,cpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = x[i];\n }\n return 0;\n}\n\nfunction crypto_stream(c,cpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20(c,cpos,d,sn,s);\n}\n\nfunction crypto_stream_xor(c,cpos,m,mpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s);\n}\n\n/*\n* Port of Andrew Moon's Poly1305-donna-16. Public domain.\n* https://github.com/floodyberry/poly1305-donna\n*/\n\nvar poly1305 = function(key) {\n this.buffer = new Uint8Array(16);\n this.r = new Uint16Array(10);\n this.h = new Uint16Array(10);\n this.pad = new Uint16Array(8);\n this.leftover = 0;\n this.fin = 0;\n\n var t0, t1, t2, t3, t4, t5, t6, t7;\n\n t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff;\n t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = ((t4 >>> 1)) & 0x1ffe;\n t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = ((t7 >>> 5)) & 0x007f;\n\n this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;\n this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;\n this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;\n this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;\n this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;\n this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;\n this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;\n this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;\n};\n\npoly1305.prototype.blocks = function(m, mpos, bytes) {\n var hibit = this.fin ? 0 : (1 << 11);\n var t0, t1, t2, t3, t4, t5, t6, t7, c;\n var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;\n\n var h0 = this.h[0],\n h1 = this.h[1],\n h2 = this.h[2],\n h3 = this.h[3],\n h4 = this.h[4],\n h5 = this.h[5],\n h6 = this.h[6],\n h7 = this.h[7],\n h8 = this.h[8],\n h9 = this.h[9];\n\n var r0 = this.r[0],\n r1 = this.r[1],\n r2 = this.r[2],\n r3 = this.r[3],\n r4 = this.r[4],\n r5 = this.r[5],\n r6 = this.r[6],\n r7 = this.r[7],\n r8 = this.r[8],\n r9 = this.r[9];\n\n while (bytes >= 16) {\n t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff;\n t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n\n c = 0;\n\n d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13); d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13); d0 &= 0x1fff;\n\n d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13); d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13); d1 &= 0x1fff;\n\n d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13); d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13); d2 &= 0x1fff;\n\n d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13); d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13); d3 &= 0x1fff;\n\n d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13); d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13); d4 &= 0x1fff;\n\n d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13); d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13); d5 &= 0x1fff;\n\n d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13); d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13); d6 &= 0x1fff;\n\n d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13); d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13); d7 &= 0x1fff;\n\n d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13); d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13); d8 &= 0x1fff;\n\n d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13); d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13); d9 &= 0x1fff;\n\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n\n mpos += 16;\n bytes -= 16;\n }\n this.h[0] = h0;\n this.h[1] = h1;\n this.h[2] = h2;\n this.h[3] = h3;\n this.h[4] = h4;\n this.h[5] = h5;\n this.h[6] = h6;\n this.h[7] = h7;\n this.h[8] = h8;\n this.h[9] = h9;\n};\n\npoly1305.prototype.finish = function(mac, macpos) {\n var g = new Uint16Array(10);\n var c, mask, f, i;\n\n if (this.leftover) {\n i = this.leftover;\n this.buffer[i++] = 1;\n for (; i < 16; i++) this.buffer[i] = 0;\n this.fin = 1;\n this.blocks(this.buffer, 0, 16);\n }\n\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n for (i = 2; i < 10; i++) {\n this.h[i] += c;\n c = this.h[i] >>> 13;\n this.h[i] &= 0x1fff;\n }\n this.h[0] += (c * 5);\n c = this.h[0] >>> 13;\n this.h[0] &= 0x1fff;\n this.h[1] += c;\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n this.h[2] += c;\n\n g[0] = this.h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (i = 1; i < 10; i++) {\n g[i] = this.h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n\n mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) g[i] &= mask;\n mask = ~mask;\n for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i];\n\n this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff;\n this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff;\n this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff;\n this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff;\n this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff;\n this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff;\n this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff;\n this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff;\n\n f = this.h[0] + this.pad[0];\n this.h[0] = f & 0xffff;\n for (i = 1; i < 8; i++) {\n f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;\n this.h[i] = f & 0xffff;\n }\n\n mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff;\n mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff;\n mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff;\n mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff;\n mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff;\n mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff;\n mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff;\n mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff;\n mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff;\n mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff;\n mac[macpos+10] = (this.h[5] >>> 0) & 0xff;\n mac[macpos+11] = (this.h[5] >>> 8) & 0xff;\n mac[macpos+12] = (this.h[6] >>> 0) & 0xff;\n mac[macpos+13] = (this.h[6] >>> 8) & 0xff;\n mac[macpos+14] = (this.h[7] >>> 0) & 0xff;\n mac[macpos+15] = (this.h[7] >>> 8) & 0xff;\n};\n\npoly1305.prototype.update = function(m, mpos, bytes) {\n var i, want;\n\n if (this.leftover) {\n want = (16 - this.leftover);\n if (want > bytes)\n want = bytes;\n for (i = 0; i < want; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n bytes -= want;\n mpos += want;\n this.leftover += want;\n if (this.leftover < 16)\n return;\n this.blocks(this.buffer, 0, 16);\n this.leftover = 0;\n }\n\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this.blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n\n if (bytes) {\n for (i = 0; i < bytes; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n this.leftover += bytes;\n }\n};\n\nfunction crypto_onetimeauth(out, outpos, m, mpos, n, k) {\n var s = new poly1305(k);\n s.update(m, mpos, n);\n s.finish(out, outpos);\n return 0;\n}\n\nfunction crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {\n var x = new Uint8Array(16);\n crypto_onetimeauth(x,0,m,mpos,n,k);\n return crypto_verify_16(h,hpos,x,0);\n}\n\nfunction crypto_secretbox(c,m,d,n,k) {\n var i;\n if (d < 32) return -1;\n crypto_stream_xor(c,0,m,0,d,n,k);\n crypto_onetimeauth(c, 16, c, 32, d - 32, c);\n for (i = 0; i < 16; i++) c[i] = 0;\n return 0;\n}\n\nfunction crypto_secretbox_open(m,c,d,n,k) {\n var i;\n var x = new Uint8Array(32);\n if (d < 32) return -1;\n crypto_stream(x,0,32,n,k);\n if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1;\n crypto_stream_xor(m,0,c,0,d,n,k);\n for (i = 0; i < 32; i++) m[i] = 0;\n return 0;\n}\n\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i]|0;\n}\n\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c-1 + 37 * (c-1);\n}\n\nfunction sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\n\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i]>>8;\n }\n}\n\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\n\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\n\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n}\n\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];\n}\n\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];\n}\n\nfunction M(o, a, b) {\n var v, c,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,\n t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11],\n b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n\n // first car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n // second car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n o[ 0] = t0;\n o[ 1] = t1;\n o[ 2] = t2;\n o[ 3] = t3;\n o[ 4] = t4;\n o[ 5] = t5;\n o[ 6] = t6;\n o[ 7] = t7;\n o[ 8] = t8;\n o[ 9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\n\nfunction S(o, a) {\n M(o, a, a);\n}\n\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if(a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++) z[i] = n[i];\n z[31]=(n[31]&127)|64;\n z[0]&=248;\n unpack25519(x,p);\n for (i = 0; i < 16; i++) {\n b[i]=x[i];\n d[i]=a[i]=c[i]=0;\n }\n a[0]=d[0]=1;\n for (i=254; i>=0; --i) {\n r=(z[i>>>3]>>>(i&7))&1;\n sel25519(a,b,r);\n sel25519(c,d,r);\n A(e,a,c);\n Z(a,a,c);\n A(c,b,d);\n Z(b,b,d);\n S(d,e);\n S(f,a);\n M(a,c,a);\n M(c,b,e);\n A(e,a,c);\n Z(a,a,c);\n S(b,a);\n Z(c,d,f);\n M(a,c,_121665);\n A(a,a,d);\n M(c,c,a);\n M(a,d,f);\n M(d,b,x);\n S(b,e);\n sel25519(a,b,r);\n sel25519(c,d,r);\n }\n for (i = 0; i < 16; i++) {\n x[i+16]=a[i];\n x[i+32]=c[i];\n x[i+48]=b[i];\n x[i+64]=d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32,x32);\n M(x16,x16,x32);\n pack25519(q,x16);\n return 0;\n}\n\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\n\nfunction crypto_box_keypair(y, x) {\n randombytes(x, 32);\n return crypto_scalarmult_base(y, x);\n}\n\nfunction crypto_box_beforenm(k, y, x) {\n var s = new Uint8Array(32);\n crypto_scalarmult(s, x, y);\n return crypto_core_hsalsa20(k, _0, s, sigma);\n}\n\nvar crypto_box_afternm = crypto_secretbox;\nvar crypto_box_open_afternm = crypto_secretbox_open;\n\nfunction crypto_box(c, m, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_afternm(c, m, d, n, k);\n}\n\nfunction crypto_box_open(m, c, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_open_afternm(m, c, d, n, k);\n}\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16),\n bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7,\n bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7,\n th, tl, i, j, h, l, a, b, c, d;\n\n var ah0 = hh[0],\n ah1 = hh[1],\n ah2 = hh[2],\n ah3 = hh[3],\n ah4 = hh[4],\n ah5 = hh[5],\n ah6 = hh[6],\n ah7 = hh[7],\n\n al0 = hl[0],\n al1 = hl[1],\n al2 = hl[2],\n al3 = hl[3],\n al4 = hl[4],\n al5 = hl[5],\n al6 = hl[6],\n al7 = hl[7];\n\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3];\n wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n\n // add\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32))));\n l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // K\n h = K[i*2];\n l = K[i*2+1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // w\n h = wh[i%16];\n l = wl[i%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n\n // add\n h = th;\n l = tl;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32))));\n l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n\n // add\n h = bh3;\n l = bl3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = th;\n l = tl;\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n\n if (i%16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = wh[(j+9)%16];\n l = wl[(j+9)%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma0\n th = wh[(j+1)%16];\n tl = wl[(j+1)%16];\n h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma1\n th = wh[(j+14)%16];\n tl = wl[(j+14)%16];\n h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n\n // add\n h = ah0;\n l = al0;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[0];\n l = hl[0];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n\n h = ah1;\n l = al1;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[1];\n l = hl[1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n\n h = ah2;\n l = al2;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[2];\n l = hl[2];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n\n h = ah3;\n l = al3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[3];\n l = hl[3];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n\n h = ah4;\n l = al4;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[4];\n l = hl[4];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n\n h = ah5;\n l = al5;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[5];\n l = hl[5];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n\n h = ah6;\n l = al6;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[6];\n l = hl[6];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[7];\n l = hl[7];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n\n pos += 128;\n n -= 128;\n }\n\n return n;\n}\n\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8),\n hl = new Int32Array(8),\n x = new Uint8Array(256),\n i, b = n;\n\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n\n for (i = 0; i < n; i++) x[i] = m[b-n+i];\n x[n] = 128;\n\n n = 256-128*(n<112?1:0);\n x[n-9] = 0;\n ts64(x, n-8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n\n for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]);\n\n return 0;\n}\n\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf(),\n g = gf(), h = gf(), t = gf();\n\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\n\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\n\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\n\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i/8)|0] >> (i&7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\n\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\n\nfunction crypto_sign_keypair(pk, sk, seeded) {\n var d = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n var i;\n\n if (!seeded) randombytes(sk, 32);\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n scalarbase(p, d);\n pack(pk, p);\n\n for (i = 0; i < 32; i++) sk[i+32] = pk[i];\n return 0;\n}\n\nvar L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);\n\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = Math.floor((x[j] + 128) / 256);\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++) x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i+1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\n\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++) x[i] = r[i];\n for (i = 0; i < 64; i++) r[i] = 0;\n modL(r, x);\n}\n\n// Note: difference from C - smlen returned, not passed as argument.\nfunction crypto_sign(sm, m, n, sk) {\n var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n var smlen = n + 64;\n for (i = 0; i < n; i++) sm[64 + i] = m[i];\n for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];\n\n crypto_hash(r, sm.subarray(32), n+32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n\n for (i = 32; i < 64; i++) sm[i] = sk[i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n\n for (i = 0; i < 64; i++) x[i] = 0;\n for (i = 0; i < 32; i++) x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i+j] += h[i] * d[j];\n }\n }\n\n modL(sm.subarray(32), x);\n return smlen;\n}\n\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n}\n\nfunction crypto_sign_open(m, sm, n, pk) {\n var i;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()],\n q = [gf(), gf(), gf(), gf()];\n\n if (n < 64) return -1;\n\n if (unpackneg(q, pk)) return -1;\n\n for (i = 0; i < n; i++) m[i] = sm[i];\n for (i = 0; i < 32; i++) m[i+32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++) m[i] = 0;\n return -1;\n }\n\n for (i = 0; i < n; i++) m[i] = sm[i + 64];\n return n;\n}\n\nvar crypto_secretbox_KEYBYTES = 32,\n crypto_secretbox_NONCEBYTES = 24,\n crypto_secretbox_ZEROBYTES = 32,\n crypto_secretbox_BOXZEROBYTES = 16,\n crypto_scalarmult_BYTES = 32,\n crypto_scalarmult_SCALARBYTES = 32,\n crypto_box_PUBLICKEYBYTES = 32,\n crypto_box_SECRETKEYBYTES = 32,\n crypto_box_BEFORENMBYTES = 32,\n crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES,\n crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES,\n crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES,\n crypto_sign_BYTES = 64,\n crypto_sign_PUBLICKEYBYTES = 32,\n crypto_sign_SECRETKEYBYTES = 64,\n crypto_sign_SEEDBYTES = 32,\n crypto_hash_BYTES = 64;\n\nnacl.lowlevel = {\n crypto_core_hsalsa20: crypto_core_hsalsa20,\n crypto_stream_xor: crypto_stream_xor,\n crypto_stream: crypto_stream,\n crypto_stream_salsa20_xor: crypto_stream_salsa20_xor,\n crypto_stream_salsa20: crypto_stream_salsa20,\n crypto_onetimeauth: crypto_onetimeauth,\n crypto_onetimeauth_verify: crypto_onetimeauth_verify,\n crypto_verify_16: crypto_verify_16,\n crypto_verify_32: crypto_verify_32,\n crypto_secretbox: crypto_secretbox,\n crypto_secretbox_open: crypto_secretbox_open,\n crypto_scalarmult: crypto_scalarmult,\n crypto_scalarmult_base: crypto_scalarmult_base,\n crypto_box_beforenm: crypto_box_beforenm,\n crypto_box_afternm: crypto_box_afternm,\n crypto_box: crypto_box,\n crypto_box_open: crypto_box_open,\n crypto_box_keypair: crypto_box_keypair,\n crypto_hash: crypto_hash,\n crypto_sign: crypto_sign,\n crypto_sign_keypair: crypto_sign_keypair,\n crypto_sign_open: crypto_sign_open,\n\n crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES,\n crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES,\n crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES,\n crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES,\n crypto_scalarmult_BYTES: crypto_scalarmult_BYTES,\n crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES,\n crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES,\n crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES,\n crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES,\n crypto_box_NONCEBYTES: crypto_box_NONCEBYTES,\n crypto_box_ZEROBYTES: crypto_box_ZEROBYTES,\n crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES,\n crypto_sign_BYTES: crypto_sign_BYTES,\n crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES,\n crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES,\n crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES,\n crypto_hash_BYTES: crypto_hash_BYTES,\n\n gf: gf,\n D: D,\n L: L,\n pack25519: pack25519,\n unpack25519: unpack25519,\n M: M,\n A: A,\n S: S,\n Z: Z,\n pow2523: pow2523,\n add: add,\n set25519: set25519,\n modL: modL,\n scalarmult: scalarmult,\n scalarbase: scalarbase,\n};\n\n/* High-level API */\n\nfunction checkLengths(k, n) {\n if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size');\n if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size');\n}\n\nfunction checkBoxLengths(pk, sk) {\n if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size');\n if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size');\n}\n\nfunction checkArrayTypes() {\n for (var i = 0; i < arguments.length; i++) {\n if (!(arguments[i] instanceof Uint8Array))\n throw new TypeError('unexpected type, use Uint8Array');\n }\n}\n\nfunction cleanup(arr) {\n for (var i = 0; i < arr.length; i++) arr[i] = 0;\n}\n\nnacl.randomBytes = function(n) {\n var b = new Uint8Array(n);\n randombytes(b, n);\n return b;\n};\n\nnacl.secretbox = function(msg, nonce, key) {\n checkArrayTypes(msg, nonce, key);\n checkLengths(key, nonce);\n var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);\n var c = new Uint8Array(m.length);\n for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i];\n crypto_secretbox(c, m, m.length, nonce, key);\n return c.subarray(crypto_secretbox_BOXZEROBYTES);\n};\n\nnacl.secretbox.open = function(box, nonce, key) {\n checkArrayTypes(box, nonce, key);\n checkLengths(key, nonce);\n var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);\n var m = new Uint8Array(c.length);\n for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i];\n if (c.length < 32) return null;\n if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null;\n return m.subarray(crypto_secretbox_ZEROBYTES);\n};\n\nnacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;\nnacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;\nnacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;\n\nnacl.scalarMult = function(n, p) {\n checkArrayTypes(n, p);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult(q, n, p);\n return q;\n};\n\nnacl.scalarMult.base = function(n) {\n checkArrayTypes(n);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult_base(q, n);\n return q;\n};\n\nnacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;\nnacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;\n\nnacl.box = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox(msg, nonce, k);\n};\n\nnacl.box.before = function(publicKey, secretKey) {\n checkArrayTypes(publicKey, secretKey);\n checkBoxLengths(publicKey, secretKey);\n var k = new Uint8Array(crypto_box_BEFORENMBYTES);\n crypto_box_beforenm(k, publicKey, secretKey);\n return k;\n};\n\nnacl.box.after = nacl.secretbox;\n\nnacl.box.open = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox.open(msg, nonce, k);\n};\n\nnacl.box.open.after = nacl.secretbox.open;\n\nnacl.box.keyPair = function() {\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);\n crypto_box_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.box.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_box_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n crypto_scalarmult_base(pk, secretKey);\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;\nnacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;\nnacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;\nnacl.box.nonceLength = crypto_box_NONCEBYTES;\nnacl.box.overheadLength = nacl.secretbox.overheadLength;\n\nnacl.sign = function(msg, secretKey) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length);\n crypto_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n};\n\nnacl.sign.open = function(signedMsg, publicKey) {\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0) return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++) m[i] = tmp[i];\n return m;\n};\n\nnacl.sign.detached = function(msg, secretKey) {\n var signedMsg = nacl.sign(msg, secretKey);\n var sig = new Uint8Array(crypto_sign_BYTES);\n for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];\n return sig;\n};\n\nnacl.sign.detached.verify = function(msg, sig, publicKey) {\n checkArrayTypes(msg, sig, publicKey);\n if (sig.length !== crypto_sign_BYTES)\n throw new Error('bad signature size');\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var sm = new Uint8Array(crypto_sign_BYTES + msg.length);\n var m = new Uint8Array(crypto_sign_BYTES + msg.length);\n var i;\n for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];\n for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i];\n return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);\n};\n\nnacl.sign.keyPair = function() {\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n crypto_sign_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i];\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.sign.keyPair.fromSeed = function(seed) {\n checkArrayTypes(seed);\n if (seed.length !== crypto_sign_SEEDBYTES)\n throw new Error('bad seed size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n for (var i = 0; i < 32; i++) sk[i] = seed[i];\n crypto_sign_keypair(pk, sk, true);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;\nnacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;\nnacl.sign.seedLength = crypto_sign_SEEDBYTES;\nnacl.sign.signatureLength = crypto_sign_BYTES;\n\nnacl.hash = function(msg) {\n checkArrayTypes(msg);\n var h = new Uint8Array(crypto_hash_BYTES);\n crypto_hash(h, msg, msg.length);\n return h;\n};\n\nnacl.hash.hashLength = crypto_hash_BYTES;\n\nnacl.verify = function(x, y) {\n checkArrayTypes(x, y);\n // Zero length arguments are considered not equal.\n if (x.length === 0 || y.length === 0) return false;\n if (x.length !== y.length) return false;\n return (vn(x, 0, y, 0, x.length) === 0) ? true : false;\n};\n\nnacl.setPRNG = function(fn) {\n randombytes = fn;\n};\n\n(function() {\n // Initialize PRNG if environment provides CSPRNG.\n // If not, methods calling randombytes will throw.\n var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;\n if (crypto && crypto.getRandomValues) {\n // Browsers.\n var QUOTA = 65536;\n nacl.setPRNG(function(x, n) {\n var i, v = new Uint8Array(n);\n for (i = 0; i < n; i += QUOTA) {\n crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));\n }\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n } else if (typeof require !== 'undefined') {\n // Node.js.\n crypto = require('crypto');\n if (crypto && crypto.randomBytes) {\n nacl.setPRNG(function(x, n) {\n var i, v = crypto.randomBytes(n);\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n }\n }\n})();\n\n})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));\n","\"use strict\";\n\n(function(){\n var root = this;\n var prev_bunnycolors = root.bunnycolors;\n\tvar genesis_design = [\"000000000015100000000000.000000001133310000000000.000000013333331000000000.000000013315331011100000.000011133333331133310011.001133333333333333331131.013555333333333333333311.135553331133333333333310.155531110013333333111111.111110000001333331333131.000000000001133331333331.000000000000133333333331.000000000000133333333331.000000000000133333333331.000000000000133333333331.000000000000013333333331.000000000000001333333331.000000000000000133333310.000000000000000011111110.000000000000000000001331.000000000000000000013331.000000000000000000013311.000000000000000000001110.000000000000000000000000\",\"000000000015100000000000.000000001133310000000000.000000013333331000000000.000000013351331011100000.000011133333331133310011.001133333333333333331131.013555333333333333333311.135553331133333333333310.155531110013333333111111.111110000001333331333131.000000000001133331333331.000000000000133333333331.000000000000133333333331.000000000000133333333331.000000000000133333333331.000000000000013333333331.000000000000001333333331.000000000000000133333310.000000000000000011111110.000000000000000000001331.000000000000000000013331.000000000000000000013311.000000000000000000001110.000000000000000000000000\",\"000000000015100000000000.000000001133310000000000.000000013333331000000000.000000013361331011100000.000011133333331133310011.001133333333333333331131.013555333333333333333311.135553331133333333333310.155531110013333333111111.111110000001333331333131.000000000001133331333331.000000000000133333333331.000000000000133333333331.000000000000133333333331.000000000000133333333331.000000000000013333333331.000000000000001333333331.000000000000000133333310.000000000000000011111110.000000000000000000001331.000000000000000000013331.000000000000000000013311.000000000000000000001110.000000000000000000000000\",\"000000000000000000000000.000000000000000000000000.000000000000000000000000.000000000000000000000000.000000000000000000000000.000000000000000011100000.000000000000000114410111.000111000111101444441551.011455111444414441441441.145555544444414414114441.011111444615441444444111.000000114444561444444441.000000114444561444444441.011111444615441444444111.145555544444414414114441.011455111444414441441441.000111000111101444441551.000000000000000114410111.000000000000000011100000.000000000000000000000000.000000000000000000000000.000000000000000000000000.000000000000000000000000.000000000000000000000000\",\"00000000000001111000.00000000000111441100.00000000001444444410.00000000014444444411.00000000144441444441.00000000144414444441.00000001444414444441.00000001444414444441.00000001444411444441.00000001444441111115.00000001444444444466.01110001144444444466.01411100144444411111.01455410114444144441.00145541011444444441.00014554144444444441.01111455444441144441.14555114444444114441.01455551444444414415.00111111144564441100.00000000014444441000.00000000014444441000.00000000001114510000.00000000000011100000\",\"00000000000000000000110.00000000000115000001510.00000000001445100014311.00000000014444100143151.00001111144624101431441.00015555144444114314410.00155111444444441144100.01411445444444444441000.14411555444444444410000.11115551111444411100000.00155511001444441000000.01451100014444441000000.01110000144444441000000.00000000144444111100000.00000001444441441410000.00000001444441444141000.00000000144444444141000.00000000144444444144100.00000000014444444414100.00000000014441111414510.00000001141111001441110.00000014441000000144100.00000014441000000014510.00000001110000000001110\",\"000000000015100000000000.000000001133310000000000.000000013333331000000000.000000013316331011100000.000011133333331133310011.001133333333333333331131.013555333333333333333311.135553331133333333333310.155531110013333333111111.111110000001333331333131.000000000001133331333331.000000000000133333333331.000000000000133333333331.000000000000133333333331.000000000000133333333331.000000000000013333333331.000000000000001333333331.000000000000000133333310.000000000000000011111110.000000000000000000001331.000000000000000000013331.000000000000000000013311.000000000000000000001110.000000000000000000000000\",\"000000000015500000000000.000000001133310000000000.000000013333331000000000.000000013316331011100000.000011133333331133310011.001133333333333333331131.013555333333333333333311.135553331133333333333310.155531110013333333111111.111110000001333331333131.000000000001133331333331.000000000000133333333331.000000000000133333333331.000000000000133333333331.000000000000133333333331.000000000000013333333331.000000000000001333333331.000000000000000133333310.000000000000000011111110.000000000000000000001331.000000000000000000013331.000000000000000000013311.000000000000000000001110.000000000000000000000000\",\"00000000000001111000.00000000000111441100.00000000001444444410.00000000014444444411.00000000144441444441.00000000144414444441.00000001444414444441.00000001444414444441.00000001444411444441.00000001444441111115.00000001444444444466.01110001144444444466.01411100144444411111.01455410114444144441.00145541011444444441.00014554144444444441.01111455444441144441.14555114444444114441.01455551444444414415.00111111144514441100.00000000014444441000.00000000014444441000.00000000001114510000.00000000000011100000\",\"00000000000001111000.00000000000111441100.00000000001444444410.00000000014444444411.00000000144441444441.00000000144414444441.00000001444414444441.00000001444414444441.00000001444411444441.00000001444441111115.00000001444444444466.01110001144444444466.01411100144444411111.01455410114444144441.00145541011444444441.00014554144444444441.01111455444441144441.14555114444444114441.01455551444444414415.00111111144524441100.00000000014444441000.00000000014444441000.00000000001114510000.00000000000011100000\",\"000000000015500000000000.000000001166610000000000.000000016666661000000000.000000016615661011100000.000011166666661166610011.001166666666666666661161.016555666666666666666611.165556661166666666666610.155561110016666666111111.111110000001666661666161.000000000001166661666661.000000000000166666666661.000000000000166666666661.000000000000166666666661.000000000000166666666661.000000000000016666666661.000000000000001666666661.000000000000000166666610.000000000000000011111110.000000000000000000001661.000000000000000000016661.000000000000000000016611.000000000000000000001110.000000000000000000000000\",\"000000000000000000000000.000000000000000000000000.000000000000000000000000.000000000000000000000000.000000000000000000000000.000000000000000011100000.000000000000000114410111.000111000111101444441551.011455111444414441441441.145555544444414414114441.011111444615441444444111.000000114444561444444441.000000114444561444444441.011111444615441444444111.145555544444414414114441.011455111444414441441441.000111000111101444441551.000000000000000114410111.000000000000000011100000.000000000000000000000000.000000000000000000000000.000000000000000000000000.000000000000000000000000.000000000000000000000000\"];\n var designs = [\"000000000015100000000000.000000001133310000000000.000000013333331000000000.000000013315331011100000.000011133333331133310011.001133333333333333331131.013555333333333333333311.135553331133333333333310.155531110013333333111111.111110000001333331333131.000000000001133331333331.000000000000133333333331.000000000000133333333331.000000000000133333333331.000000000000133333333331.000000000000013333333331.000000000000001333333331.000000000000000133333310.000000000000000011111110.000000000000000000001331.000000000000000000013331.000000000000000000013311.000000000000000000001110.000000000000000000000000\",\"000000000015100000000000.000000001133310000000000.000000013333331000000000.000000013351331011100000.000011133333331133310011.001133333333333333331131.013555333333333333333311.135553331133333333333310.155531110013333333111111.111110000001333331333131.000000000001133331333331.000000000000133333333331.000000000000133333333331.000000000000133333333331.000000000000133333333331.000000000000013333333331.000000000000001333333331.000000000000000133333310.000000000000000011111110.000000000000000000001331.000000000000000000013331.000000000000000000013311.000000000000000000001110.000000000000000000000000\",\"000000000015100000000000.000000001133310000000000.000000013333331000000000.000000013361331011100000.000011133333331133310011.001133333333333333331131.013555333333333333333311.135553331133333333333310.155531110013333333111111.111110000001333331333131.000000000001133331333331.000000000000133333333331.000000000000133333333331.000000000000133333333331.000000000000133333333331.000000000000013333333331.000000000000001333333331.000000000000000133333310.000000000000000011111110.000000000000000000001331.000000000000000000013331.000000000000000000013311.000000000000000000001110.000000000000000000000000\",\"00000000000001111000.00000000000111441100.00000000001444444410.00000000014444444411.00000000144441444441.00000000144414444441.00000001444414444441.00000001444414444441.00000001444411444441.00000001444441111115.00000001444444444466.01110001144444444466.01411100144444411111.01455410114444144441.00145541011444444441.00014554144444444441.01111455444441144441.14555114444444114441.01455551444444414415.00111111144514441100.00000000014444441000.00000000014444441000.00000000001114510000.00000000000011100000\",\"00000000000000000000110.00000000000115000001510.00000000001445100014311.00000000014444100143151.00001111144624101431441.00015555144444114314410.00155111444444441144100.01411445444444444441000.14411555444444444410000.11115551111444411100000.00155511001444441000000.01451100014444441000000.01110000144444441000000.00000000144444111100000.00000001444441441410000.00000001444441444141000.00000000144444444141000.00000000144444444144100.00000000014444444414100.00000000014441111414510.00000001141111001441110.00000014441000000144100.00000014441000000014510.00000001110000000001110\",\"000000000000000000000000.000000000000000000000000.000000000000000000000000.000000000000000000000000.000000000000000000000000.000000000000000011100000.000000000000000114410111.000111000111101444441551.011455111444414441441441.145555544444414414114441.011111444615441444444111.000000114444561444444441.000000114444561444444441.011111444615441444444111.145555544444414414114441.011455111444414441441441.000111000111101444441551.000000000000000114410111.000000000000000011100000.000000000000000000000000.000000000000000000000000.000000000000000000000000.000000000000000000000000.000000000000000000000000\",\"000000000015100000000000.000000001133310000000000.000000013333331000000000.000000013316331011100000.000011133333331133310011.001133333333333333331131.013555333333333333333311.135553331133333333333310.155531110013333333111111.111110000001333331333131.000000000001133331333331.000000000000133333333331.000000000000133333333331.000000000000133333333331.000000000000133333333331.000000000000013333333331.000000000000001333333331.000000000000000133333310.000000000000000011111110.000000000000000000001331.000000000000000000013331.000000000000000000013311.000000000000000000001110.000000000000000000000000\",\"000000000015500000000000.000000001133310000000000.000000013333331000000000.000000013316331011100000.000011133333331133310011.001133333333333333331131.013555333333333333333311.135553331133333333333310.155531110013333333111111.111110000001333331333131.000000000001133331333331.000000000000133333333331.000000000000133333333331.000000000000133333333331.000000000000133333333331.000000000000013333333331.000000000000001333333331.000000000000000133333310.000000000000000011111110.000000000000000000001331.000000000000000000013331.000000000000000000013311.000000000000000000001110.000000000000000000000000\",\"00000000000000111000.00000000000111131100.00000000001333334410.00000000013344444431.00000000133441444431.00000000133414444431.00000001334414444431.00000001344414444431.00000001344431111431.00000001344433333131.00000001344444433331.01110001334444444431.01411100134444411131.01455410133444133331.00145541012344444431.00014554113444444431.01111455444444144431.14554114444444414431.01455551444614414410.00111111144444441100.00000000014444441000.00000000014444441000.00000000001114510000.00000000000011100000\",\"00000000000001111000.00000000000111441100.00000000001444444410.00000000014444444411.00000000144441444441.00000000144414444441.00000001444414444441.00000001444414444441.00000001444411444441.00000001444441111115.00000001444444444466.01110001144444444466.01411100144444411111.01455410114444144441.00145541011444444441.00014554144444444441.01111455444441144441.14555114444444114441.01455551444444414415.00111111144514441100.00000000014444441000.00000000014444441000.00000000001114510000.00000000000011100000\",\"000000000015500000000000.000000001166610000000000.000000016666661000000000.000000016615661011100000.000011166666661166610011.001166666666666666661161.016555666666666666666611.165556661166666666666610.155561110016666666111111.111110000001666661666161.000000000001166661666661.000000000000166666666661.000000000000166666666661.000000000000166666666661.000000000000166666666661.000000000000016666666661.000000000000001666666661.000000000000000166666610.000000000000000011111110.000000000000000000001661.000000000000000000016661.000000000000000000016611.000000000000000000001110.000000000000000000000000\",\"000000000015500000000000.000000001144410000000000.000000014444431000000000.000000014441431011100000.000011144444441133310011.001144554444444334441141.014555443344444444444411.145543331133444444333410.155331110013344443111111.111110000001344441444141.000000000001134441444441.000000000000134444444441.000000000000134444444441.000000000000133444444441.000000000000133344444441.000000000000013334443341.000000000000001333333331.000000000000000133333310.000000000000000011111110.000000000000000000001441.000000000000000000014431.000000000000000000013311.000000000000000000001110.000000000000000000000000\",\"000000000012100000000000.000000001155510000000000.000000015555551000000000.000000015561551011100000.000011155555551155510011.001155555555555555551151.015555555555555555555511.155555551155555555555510.155551110015555555111111.111110000001555551555151.000000000001155551555551.000000000000155555555551.000000000000155555555551.000000000000155555555551.000000000000155555555551.000000000000015555555551.000000000000001555555551.000000000000000155555510.000000000000000011111110.000000000000000000001551.000000000000000000015551.000000000000000000015511.000000000000000000001110.000000000000000000000000\",\"000000000012100000000066.000000001155510000000000.000000015555551000000000.000000015561551011100000.000011155555551155510011.001155555555555555551151.015555555555565555655511.155555551155555565555510.155551110015555555111111.111110000001565551555151.000000000001155551565551.000000000000155555555551.000000000000165655565551.000000000000155555555651.000000000000155555555551.000000000000015555555551.000000000000001556556551.000000000000000155555510.000000000000000011111110.000000000000000000001551.000000000000000000015651.000000000000000000015511.000000000000000000001110.000000000000000000000000\",\"000000000012100000000056.000000001155510000000000.000000011155551000000000.000000011161551011100000.000011155555551151510011.001115555551555515551151.015555155555555155555511.151155551151551555555510.151551110015551555111111.111110000001551551555551.000000000001151551555551.000000000000151555555151.000000000000115515551551.000000000000155515515551.000000000000155515555151.000000000000015115155551.000000000000001555555151.000000000000000155555510.000000000000000011111110.000000000000000000001151.000000000000000000015151.000000000000000000015511.000000000000000000001110.000000000000000000000000\",\"000000000012100000000056.000000001155510000000000.000000011155551000000000.000000011161551011100000.000011155555551151510011.001115555551555515551151.015555155555555155555511.151155551151551555555510.151551110015551555111111.111110000001551551555551.000000000001151551555551.000000000000151555555151.000000000000115515551551.000000000000155515515551.000000000000155515555151.000000000000015115155551.000000000000001555555151.000000000000000155555510.000000000000000011111110.000000000000000000001151.000000000000000000015151.000000000000000000015511.000000000000000000001110.000000000000000000000000\"];\n\n function RGBToHSL(r, g, b) {\n\tif (Array.isArray(r)) {\n\t g = r[1];\n\t b = r[2];\n\t r = r[0];\n\t}\n\tvar r = r / 255;\n\tvar g = g / 255;\n\tvar b = b / 255;\n\tvar cMax = Math.max(r, g, b);\n\tvar cMin = Math.min(r, g, b);\n\tvar delta = cMax - cMin;\n\tif (delta == 0) {\n\t var h = 0;\n\t} else if (cMax == r) {\n\t var h = 60 * (((g - b) / delta) % 6);\n\t} else if (cMax == g) {\n\t var h = 60 * ((b - r) / delta + 2);\n\t} else if (cMax == b) {\n\t var h = 60 * ((r - g) / delta + 4);\n\t}\n\tif (h < 0) {\n\t h += 360;\n\t}\n\tvar l = (cMax + cMin) / 2;\n\n\tif (delta == 0) {\n\t var s = 0;\n\t} else {\n\t var s = delta / (1 - Math.abs(2 * l - 1));\n\t}\n\n\treturn [h, s, l]\n }\n\n function HSLToRGB(h, s, l) {\n\tif (Array.isArray(h)) {\n\t s = h[1];\n\t l = h[2];\n\t h = h[0];\n\t}\n\tvar c = (1 - Math.abs(2 * l - 1)) * s;\n\tvar x = c * (1 - Math.abs((h / 60) % 2 - 1));\n\tvar m = l - c / 2;\n\tif (h >= 0 && h < 60) {\n\t var r = c,\n\t\tg = x,\n\t\tb = 0;\n\t} else if (h >= 60 && h < 120) {\n\t var r = x,\n\t\tg = c,\n\t\tb = 0;\n\t} else if (h >= 120 && h < 180) {\n\t var r = 0,\n\t\tg = c,\n\t\tb = x;\n\t} else if (h >= 180 && h < 240) {\n\t var r = 0,\n\t\tg = x,\n\t\tb = c;\n\t} else if (h >= 240 && h < 300) {\n\t var r = x,\n\t\tg = 0,\n\t\tb = c;\n\t} else if (h >= 300 && h < 360) {\n\t var r = c,\n\t\tg = 0,\n\t\tb = x;\n\t}\n\tr = Math.round((r + m) * 255);\n\tg = Math.round((g + m) * 255);\n\tb = Math.round((b + m) * 255);\n\treturn [r, g, b];\n }\n\n function RGBToHex(arr) {\n\tvar r = arr[0],\n\t g = arr[1],\n\t b = arr[2];\n\treturn \"#\" + (\"0\" + r.toString(16)).slice(-2) + (\"0\" + g.toString(16)).slice(-2) + (\"0\" + b.toString(16)).slice(-2);\n }\n\n function derivePalette(r, g, b, invert) {\n\tvar hsl = RGBToHSL(r, g, b);\n\n\tvar h = hsl[0];\n\tvar s = hsl[1];\n\tvar l = hsl[2];\n\tvar hx = h % 360;\n\tvar hy = (h + 320) % 360;\n\n\tvar c1 = HSLToRGB(hx, 1, 0.1);\n\tif (invert) {\n\t var c4 = HSLToRGB(hx, 1, 0.2);\n\t var c5 = HSLToRGB(hx, 1, 0.45);\n\t var c2 = HSLToRGB(hx, 1, 0.7);\n\t var c3 = HSLToRGB(hy, 1, 0.8);\n\t} else {\n\t var c2 = HSLToRGB(hx, 1, 0.2);\n\t var c3 = HSLToRGB(hx, 1, 0.45);\n\t var c4 = HSLToRGB(hx, 1, 0.7);\n\t var c5 = HSLToRGB(hy, 1, 0.8);\n\n\t}\n\n\n\treturn [\n\t null,\n\t RGBToHex(c1),\n\t RGBToHex(c2),\n\t RGBToHex(c3),\n\t RGBToHex(c4),\n\t RGBToHex(c5)\n\t];\n }\n\n\tfunction random(max) {\n\t\treturn Math.floor(Math.random() * max) + 1;\n\t}\n\t\t\n function hexToBytes(hex){\n\tvar result = []\n\tfor(var i = 0; i < hex.length; i+=2){\n\t result.push(parseInt(hex.slice(i, i+2),16));\n\t}\n\treturn result;\n }\n\n var bunnycolors = function (bunnyid){\n\tif(bunnyid.slice(0,2) == \"df\"){\n\t bunnyid = bunnyid.slice(2);\n\t\tconsole.log(\"Sliced \" + bunnyid);\n\t}\n\tvar bytes = hexToBytes(bunnyid);\n\tvar genesis = bytes[0],\n\t k = bytes[1],\n\t r = bytes[2],\n\t g = bytes[3],\n\t b = bytes[4];\n\n\tvar size = size || 10;\n\tvar invert = k >= 128;\n\tk = k % 128;\n\n\tk = random(designs.length-1); // Number of the Cat\n\tvar design = designs[k].split(\".\");\n\tconsole.log(k);\n\tconsole.log(design);\n\tvar colors;\n\tif(genesis){\n\t\tk = random(genesis_design.length-1);\n\t\tdesign = genesis_design[k].split(\".\");\n\n\t if(k % 2 === 0 && invert || k % 2 === 1 && !invert){\n\t\tcolors = [null, \"#555555\", \"#d3d3d3\", \"#ffffff\", \"#000000\", \"#ff9999\"];\n\t }else{\n\t\tcolors = [null, \"#555555\", \"#222222\", \"#111111\", \"#000000\", \"#ff9999\"];\n\t }\n\t}else{\n\t colors = derivePalette(r, g, b, invert);\n\t}\n\n\t\treturn colors;\n }\n\n bunnycolors.noConflict = function(){\n\troot.bunnycolors = prev_bunnycolors;\n\treturn bunnycolors;\n }\n\n if( typeof exports !== 'undefined' ) {\n\tif( typeof module !== 'undefined' && module.exports ) {\n\t exports = module.exports = bunnycolors;\n\t}\n\texports.bunnycolors = bunnycolors;\n } else {\n\troot.bunnycolors = bunnycolors;\n }\n}).call(this);\n","\"use strict\";\n\n(function(){\n var root = this;\n var prev_mooncatparser = root.mooncatparser;\n\tvar genesis_design = [\"000000000015100000000000.000000001133310000000000.000000013333331000000000.000000013315331011100000.000011133333331133310011.001133333333333333331131.013555333333333333333311.135553331133333333333310.155531110013333333111111.111110000001333331333131.000000000001133331333331.000000000000133333333331.000000000000133333333331.000000000000133333333331.000000000000133333333331.000000000000013333333331.000000000000001333333331.000000000000000133333310.000000000000000011111110.000000000000000000001331.000000000000000000013331.000000000000000000013311.000000000000000000001110.000000000000000000000000\",\"000000000015100000000000.000000001133310000000000.000000013333331000000000.000000013351331011100000.000011133333331133310011.001133333333333333331131.013555333333333333333311.135553331133333333333310.155531110013333333111111.111110000001333331333131.000000000001133331333331.000000000000133333333331.000000000000133333333331.000000000000133333333331.000000000000133333333331.000000000000013333333331.000000000000001333333331.000000000000000133333310.000000000000000011111110.000000000000000000001331.000000000000000000013331.000000000000000000013311.000000000000000000001110.000000000000000000000000\",\"000000000015100000000000.000000001133310000000000.000000013333331000000000.000000013361331011100000.000011133333331133310011.001133333333333333331131.013555333333333333333311.135553331133333333333310.155531110013333333111111.111110000001333331333131.000000000001133331333331.000000000000133333333331.000000000000133333333331.000000000000133333333331.000000000000133333333331.000000000000013333333331.000000000000001333333331.000000000000000133333310.000000000000000011111110.000000000000000000001331.000000000000000000013331.000000000000000000013311.000000000000000000001110.000000000000000000000000\",\"000000000000000000000000.000000000000000000000000.000000000000000000000000.000000000000000000000000.000000000000000000000000.000000000000000011100000.000000000000000114410111.000111000111101444441551.011455111444414441441441.145555544444414414114441.011111444615441444444111.000000114444561444444441.000000114444561444444441.011111444615441444444111.145555544444414414114441.011455111444414441441441.000111000111101444441551.000000000000000114410111.000000000000000011100000.000000000000000000000000.000000000000000000000000.000000000000000000000000.000000000000000000000000.000000000000000000000000\",\"00000000000001111000.00000000000111441100.00000000001444444410.00000000014444444411.00000000144441444441.00000000144414444441.00000001444414444441.00000001444414444441.00000001444411444441.00000001444441111115.00000001444444444466.01110001144444444466.01411100144444411111.01455410114444144441.00145541011444444441.00014554144444444441.01111455444441144441.14555114444444114441.01455551444444414415.00111111144564441100.00000000014444441000.00000000014444441000.00000000001114510000.00000000000011100000\",\"00000000000000000000110.00000000000115000001510.00000000001445100014311.00000000014444100143151.00001111144624101431441.00015555144444114314410.00155111444444441144100.01411445444444444441000.14411555444444444410000.11115551111444411100000.00155511001444441000000.01451100014444441000000.01110000144444441000000.00000000144444111100000.00000001444441441410000.00000001444441444141000.00000000144444444141000.00000000144444444144100.00000000014444444414100.00000000014441111414510.00000001141111001441110.00000014441000000144100.00000014441000000014510.00000001110000000001110\",\"000000000015100000000000.000000001133310000000000.000000013333331000000000.000000013316331011100000.000011133333331133310011.001133333333333333331131.013555333333333333333311.135553331133333333333310.155531110013333333111111.111110000001333331333131.000000000001133331333331.000000000000133333333331.000000000000133333333331.000000000000133333333331.000000000000133333333331.000000000000013333333331.000000000000001333333331.000000000000000133333310.000000000000000011111110.000000000000000000001331.000000000000000000013331.000000000000000000013311.000000000000000000001110.000000000000000000000000\",\"000000000015500000000000.000000001133310000000000.000000013333331000000000.000000013316331011100000.000011133333331133310011.001133333333333333331131.013555333333333333333311.135553331133333333333310.155531110013333333111111.111110000001333331333131.000000000001133331333331.000000000000133333333331.000000000000133333333331.000000000000133333333331.000000000000133333333331.000000000000013333333331.000000000000001333333331.000000000000000133333310.000000000000000011111110.000000000000000000001331.000000000000000000013331.000000000000000000013311.000000000000000000001110.000000000000000000000000\",\"00000000000001111000.00000000000111441100.00000000001444444410.00000000014444444411.00000000144441444441.00000000144414444441.00000001444414444441.00000001444414444441.00000001444411444441.00000001444441111115.00000001444444444466.01110001144444444466.01411100144444411111.01455410114444144441.00145541011444444441.00014554144444444441.01111455444441144441.14555114444444114441.01455551444444414415.00111111144514441100.00000000014444441000.00000000014444441000.00000000001114510000.00000000000011100000\",\"00000000000001111000.00000000000111441100.00000000001444444410.00000000014444444411.00000000144441444441.00000000144414444441.00000001444414444441.00000001444414444441.00000001444411444441.00000001444441111115.00000001444444444466.01110001144444444466.01411100144444411111.01455410114444144441.00145541011444444441.00014554144444444441.01111455444441144441.14555114444444114441.01455551444444414415.00111111144524441100.00000000014444441000.00000000014444441000.00000000001114510000.00000000000011100000\",\"000000000015500000000000.000000001166610000000000.000000016666661000000000.000000016615661011100000.000011166666661166610011.001166666666666666661161.016555666666666666666611.165556661166666666666610.155561110016666666111111.111110000001666661666161.000000000001166661666661.000000000000166666666661.000000000000166666666661.000000000000166666666661.000000000000166666666661.000000000000016666666661.000000000000001666666661.000000000000000166666610.000000000000000011111110.000000000000000000001661.000000000000000000016661.000000000000000000016611.000000000000000000001110.000000000000000000000000\",\"000000000000000000000000.000000000000000000000000.000000000000000000000000.000000000000000000000000.000000000000000000000000.000000000000000011100000.000000000000000114410111.000111000111101444441551.011455111444414441441441.145555544444414414114441.011111444615441444444111.000000114444561444444441.000000114444561444444441.011111444615441444444111.145555544444414414114441.011455111444414441441441.000111000111101444441551.000000000000000114410111.000000000000000011100000.000000000000000000000000.000000000000000000000000.000000000000000000000000.000000000000000000000000.000000000000000000000000\"];\n var designs = [\"000000000015100000000000.000000001133310000000000.000000013333331000000000.000000013315331011100000.000011133333331133310011.001133333333333333331131.013555333333333333333311.135553331133333333333310.155531110013333333111111.111110000001333331333131.000000000001133331333331.000000000000133333333331.000000000000133333333331.000000000000133333333331.000000000000133333333331.000000000000013333333331.000000000000001333333331.000000000000000133333310.000000000000000011111110.000000000000000000001331.000000000000000000013331.000000000000000000013311.000000000000000000001110.000000000000000000000000\",\"000000000015100000000000.000000001133310000000000.000000013333331000000000.000000013351331011100000.000011133333331133310011.001133333333333333331131.013555333333333333333311.135553331133333333333310.155531110013333333111111.111110000001333331333131.000000000001133331333331.000000000000133333333331.000000000000133333333331.000000000000133333333331.000000000000133333333331.000000000000013333333331.000000000000001333333331.000000000000000133333310.000000000000000011111110.000000000000000000001331.000000000000000000013331.000000000000000000013311.000000000000000000001110.000000000000000000000000\",\"000000000015100000000000.000000001133310000000000.000000013333331000000000.000000013361331011100000.000011133333331133310011.001133333333333333331131.013555333333333333333311.135553331133333333333310.155531110013333333111111.111110000001333331333131.000000000001133331333331.000000000000133333333331.000000000000133333333331.000000000000133333333331.000000000000133333333331.000000000000013333333331.000000000000001333333331.000000000000000133333310.000000000000000011111110.000000000000000000001331.000000000000000000013331.000000000000000000013311.000000000000000000001110.000000000000000000000000\",\"00000000000001111000.00000000000111441100.00000000001444444410.00000000014444444411.00000000144441444441.00000000144414444441.00000001444414444441.00000001444414444441.00000001444411444441.00000001444441111115.00000001444444444466.01110001144444444466.01411100144444411111.01455410114444144441.00145541011444444441.00014554144444444441.01111455444441144441.14555114444444114441.01455551444444414415.00111111144514441100.00000000014444441000.00000000014444441000.00000000001114510000.00000000000011100000\",\"00000000000000000000110.00000000000115000001510.00000000001445100014311.00000000014444100143151.00001111144624101431441.00015555144444114314410.00155111444444441144100.01411445444444444441000.14411555444444444410000.11115551111444411100000.00155511001444441000000.01451100014444441000000.01110000144444441000000.00000000144444111100000.00000001444441441410000.00000001444441444141000.00000000144444444141000.00000000144444444144100.00000000014444444414100.00000000014441111414510.00000001141111001441110.00000014441000000144100.00000014441000000014510.00000001110000000001110\",\"000000000000000000000000.000000000000000000000000.000000000000000000000000.000000000000000000000000.000000000000000000000000.000000000000000011100000.000000000000000114410111.000111000111101444441551.011455111444414441441441.145555544444414414114441.011111444615441444444111.000000114444561444444441.000000114444561444444441.011111444615441444444111.145555544444414414114441.011455111444414441441441.000111000111101444441551.000000000000000114410111.000000000000000011100000.000000000000000000000000.000000000000000000000000.000000000000000000000000.000000000000000000000000.000000000000000000000000\",\"000000000015100000000000.000000001133310000000000.000000013333331000000000.000000013316331011100000.000011133333331133310011.001133333333333333331131.013555333333333333333311.135553331133333333333310.155531110013333333111111.111110000001333331333131.000000000001133331333331.000000000000133333333331.000000000000133333333331.000000000000133333333331.000000000000133333333331.000000000000013333333331.000000000000001333333331.000000000000000133333310.000000000000000011111110.000000000000000000001331.000000000000000000013331.000000000000000000013311.000000000000000000001110.000000000000000000000000\",\"000000000015500000000000.000000001133310000000000.000000013333331000000000.000000013316331011100000.000011133333331133310011.001133333333333333331131.013555333333333333333311.135553331133333333333310.155531110013333333111111.111110000001333331333131.000000000001133331333331.000000000000133333333331.000000000000133333333331.000000000000133333333331.000000000000133333333331.000000000000013333333331.000000000000001333333331.000000000000000133333310.000000000000000011111110.000000000000000000001331.000000000000000000013331.000000000000000000013311.000000000000000000001110.000000000000000000000000\",\"00000000000000111000.00000000000111131100.00000000001333334410.00000000013344444431.00000000133441444431.00000000133414444431.00000001334414444431.00000001344414444431.00000001344431111431.00000001344433333131.00000001344444433331.01110001334444444431.01411100134444411131.01455410133444133331.00145541012344444431.00014554113444444431.01111455444444144431.14554114444444414431.01455551444614414410.00111111144444441100.00000000014444441000.00000000014444441000.00000000001114510000.00000000000011100000\",\"00000000000001111000.00000000000111441100.00000000001444444410.00000000014444444411.00000000144441444441.00000000144414444441.00000001444414444441.00000001444414444441.00000001444411444441.00000001444441111115.00000001444444444466.01110001144444444466.01411100144444411111.01455410114444144441.00145541011444444441.00014554144444444441.01111455444441144441.14555114444444114441.01455551444444414415.00111111144514441100.00000000014444441000.00000000014444441000.00000000001114510000.00000000000011100000\",\"000000000015500000000000.000000001166610000000000.000000016666661000000000.000000016615661011100000.000011166666661166610011.001166666666666666661161.016555666666666666666611.165556661166666666666610.155561110016666666111111.111110000001666661666161.000000000001166661666661.000000000000166666666661.000000000000166666666661.000000000000166666666661.000000000000166666666661.000000000000016666666661.000000000000001666666661.000000000000000166666610.000000000000000011111110.000000000000000000001661.000000000000000000016661.000000000000000000016611.000000000000000000001110.000000000000000000000000\",\"000000000015500000000000.000000001144410000000000.000000014444431000000000.000000014441431011100000.000011144444441133310011.001144554444444334441141.014555443344444444444411.145543331133444444333410.155331110013344443111111.111110000001344441444141.000000000001134441444441.000000000000134444444441.000000000000134444444441.000000000000133444444441.000000000000133344444441.000000000000013334443341.000000000000001333333331.000000000000000133333310.000000000000000011111110.000000000000000000001441.000000000000000000014431.000000000000000000013311.000000000000000000001110.000000000000000000000000\",\"000000000012100000000000.000000001155510000000000.000000015555551000000000.000000015561551011100000.000011155555551155510011.001155555555555555551151.015555555555555555555511.155555551155555555555510.155551110015555555111111.111110000001555551555151.000000000001155551555551.000000000000155555555551.000000000000155555555551.000000000000155555555551.000000000000155555555551.000000000000015555555551.000000000000001555555551.000000000000000155555510.000000000000000011111110.000000000000000000001551.000000000000000000015551.000000000000000000015511.000000000000000000001110.000000000000000000000000\",\"000000000012100000000066.000000001155510000000000.000000015555551000000000.000000015561551011100000.000011155555551155510011.001155555555555555551151.015555555555565555655511.155555551155555565555510.155551110015555555111111.111110000001565551555151.000000000001155551565551.000000000000155555555551.000000000000165655565551.000000000000155555555651.000000000000155555555551.000000000000015555555551.000000000000001556556551.000000000000000155555510.000000000000000011111110.000000000000000000001551.000000000000000000015651.000000000000000000015511.000000000000000000001110.000000000000000000000000\",\"000000000012100000000056.000000001155510000000000.000000011155551000000000.000000011161551011100000.000011155555551151510011.001115555551555515551151.015555155555555155555511.151155551151551555555510.151551110015551555111111.111110000001551551555551.000000000001151551555551.000000000000151555555151.000000000000115515551551.000000000000155515515551.000000000000155515555151.000000000000015115155551.000000000000001555555151.000000000000000155555510.000000000000000011111110.000000000000000000001151.000000000000000000015151.000000000000000000015511.000000000000000000001110.000000000000000000000000\",\"000000000012100000000056.000000001155510000000000.000000011155551000000000.000000011161551011100000.000011155555551151510011.001115555551555515551151.015555155555555155555511.151155551151551555555510.151551110015551555111111.111110000001551551555551.000000000001151551555551.000000000000151555555151.000000000000115515551551.000000000000155515515551.000000000000155515555151.000000000000015115155551.000000000000001555555151.000000000000000155555510.000000000000000011111110.000000000000000000001151.000000000000000000015151.000000000000000000015511.000000000000000000001110.000000000000000000000000\"];\n\t//var designs = [\"000000000000000000111000.000000000000000011633100.000000000000011113433100.000000000000133333411000.000000000001344444441100.000000000013344444444111.111000000133446644444431.154110000133446464444431.155541001334444646664431.014544001334446464444131.111554101333446644111331.151455101111344444333441.155144414441134444444441.145414444444133444444441.015541444444413444444441.014554444444413444414141.001441344444441444414141.000111344544441441114141.000000135134441141014141.000000134544413311001110.000000013444411331000000.000000001134301331000000.000000000011501111000000.000000000000000000000000\",\"000000000000000000111000.000000000000000011633100.000000000000011113433100.000000000000134444441000.000000000001344441144100.000000000013444441414411.111000000134411114144431.154110000134444441414431.155541001334444441144431.014544001334444444444131.111554101333444443111331.151455101111444444333441.155144414441144444444441.145414444444134444444441.015541444444413444444441.014554444444413444414141.001441344444441444414141.000111344444441441114141.000000134124441141014141.000000134444413311001110.000000013444411331000000.000000001134201331000000.000000000015201111000000.000000000000000000000000\",\"000000000000000000111000.000000000000000011633100.000000000000011113433100.000000000000133333411000.000000000001344444441100.000000000013346464644111.111000000133444464444431.154110000133446666644431.155541001334444464444431.014544001334446464644131.111554101333444444441331.151455101111344444433441.155144414441134444444441.145414444444133444444441.015541444444413444444441.014554444444413444414141.001441344444441444414141.000111344444441441114141.000000134124441141014141.000000134444413311001110.000000013444411331000000.000000001134201331000000.000000000011501111000000.000000000000000000000000\",\"000000000000000000111000.000000000000000011633100.000000000000011113433100.000000000000133333411000.000000000001344444441100.000000000013344222444111.111000000133444442444431.153110000133444422244431.155531001334444442444431.013533001334444444444131.111553101333444444111331.151355101111344244333441.155133314441134244444441.145414444444134222244441.015541444444414444444441.014554444444413444414141.001441344444441444414141.000111344544441441115151.000000135124441141015151.000000134544413311001110.000000013444411551000000.000000001134501551000000.000000000011501111000000.000000000000000000000000\",\"000000000000000000111000.000000000000000011633100.000000000000011113433100.000000000000133333411000.000000000001344444441100.000000000013344664444111.111000000133444656444431.154110000133444655644431.155541001334444633644431.014544001334444633644131.111554101333444655641331.151455101111344656443441.155144414441134664444441.145414444444133444444441.015541444444413444444441.014554444444413444414141.001441344444441444414141.000111344444441441114141.000000134124441141014141.000000134444413311001110.000000013444211331000000.000000001134201331000000.000000000011501111000000.000000000000000000000000\",\"000000000000000000111000.000000000000000011633100.000000000000011113433100.000000000000133333411000.000000000001344444441100.000000000013344222444111.111000000133444444244431.154110000133422244244431.155541001334422442444431.014544001334424224444131.111554101333444444111331.151455101111344444444441.155144414441134444444441.145414444444133444444441.015541444444413444444441.014554444444413444414141.001441344444441444414141.000111344444441441114141.000000134124441141014141.000000134444413311001110.000000013444411331000000.000000001134501331000000.000000000011501111000000.000000000000000000000000\",\"000000000000000000111000.000000000000000011166100.000000000000011113366100.000000000000133333411000.000000000001333334441100.000000000013333344444111.111000000133333344444431.152110000133333444444331.155521001333334441333311.012522001333334441333131.111552101333333444111431.151255101111333444444331.155122212221333344444341.125212222422133344444311.015521444442213344444316.012552444444213344444166.001221444444221344444311.000111445544421341143331.000000145634421141013331.000000145544413341001155.000000014444411341000000.000000001144101551000000.000000000011501111000000.000000000000000000000000\",\"000000000000000000111000.000000000000000011144100.000000000000011114444100.000000000000144442411000.000000000001444244441100.000000000014444444444111.111000000144444444244441.153110000142444444442441.155531001444444441444411.013543001444442441444141.111553101444444444111441.131353101111444444444441.153133314441444442442441.135313343444142444444411.013531344434414444244416.013553434444314444444166.001331444444441444444411.000111344544341441144451.000000145624441141014551.000000144544414441001150.000000014444411441000000.000000001144101551000000.000000000011501111000000.000000000000000000000000\",\"000000000000000000111000.000000000000000011136100.000000000000011114443200.000000000000144444411000.000000000001433444441100.000000000014443344444111.111000000144443334444431.154110000144443344444431.155561001444433441444411.016566001444444441444141.111556101444444444111441.156655101111444444444441.156166666441444444444441.165616664444144444444411.015561644444414444444416.016556644444414444444166.001661644444441444444411.000111644344441441144441.000000143624441141013551.000000144344413441001155.000000014444411551000000.000000001144301551000000.000000000011501111000000.000000000000000000000000\",\"000000000000000000111000.000000000000000011133100.000000000000011114443100.000000000000144445411000.000000000001455555541100.000000000015555555544111.111000000145555555554441.151110000145555555554441.155511001445555551454411.014511001445555551444141.111554101444555555111441.151151101111555555554441.155111115551555555554441.115111444455155555554411.015511444555515554444416.011551444445555554444166.001111444444455544444411.000111444534441441144441.000000145133441141014451.000000144534414441001155.000000014444411441000000.000000001144301551000000.000000000011501111000000.000000000000000000000000\",\"000000000000000000111000.000000000000000011144100.000000000000011114444100.000000000000145555411000.000000000005555545441100.000000000055556664444111.111000000155546664333341.154110000145546643333341.155541001455446433333311.014544001455436433333151.111554101454336433111551.151455101111336444445551.155144414341444555555551.145414444444145555555411.015541444344414555554416.014554444443414445554166.001441434444441444544411.000111444444441441144451.000000144264341141014551.000000144444414441001160.000000014444411441000000.000000001144601651000000.000000000011501111000000.000000000000000000000000\",\"000000000000000000112000.000000000000000011155100.000000000000011114415100.000000000000144444411000.000000000001444444441100.000000000044444444444111.111000000435353535344451.153110000153355555544451.155531001453533535344411.013533001445553555544141.111553101444535355341441.151355101111445535544441.155133313331444353544441.135313333433144453344411.015531444443314435444416.013553444444314444444166.001331444444331444444411.000111334444431441144441.000000134264431141014451.000000134444414441001150.000000033334411441000000.000000001134551551000000.000000000011301111000000.000000000000000000000000\",\"000000000000000000111000.000000000000000011144100.000000000000011114444100.000000000000144444411000.000000000001444444444100.000000000014444444444111.111000000144444444444441.154110000144434441444141.155541001444442241441441.014544001444442222224441.111554101444442241441441.151455101111434441444141.155144414441444444444441.145414444444144444444411.015541444444414444444416.014554444444414444444166.001441444444441444444411.000111444444441441144441.000000144264441141014441.000000144444414441001150.000000014444411441000000.000000001144101551000000.000000000011501111000000.000000000000000000000000\",\"000000000000000000111000.000000000000000011155100.000000000000011114445100.000000000000144444411000.000000000001444444441100.000000000014444444444111.111000000144444222224451.155110000144444244444451.155551001444444244444411.015555001444444244444141.111555101444444244411441.151555101111444221444441.155155514441444443444441.155515544444144443444411.015551444444414343434416.015555444444414435344166.001551444444441443444411.000111444444441444444441.000000144264441141014551.000000144444414441001150.000000014444411441000000.000000001144101551000000.000000000011501111000000.000000000000000000000000\",\"000000000000000000111000.000000000000000011135100.000000000000011113335100.000000000000144443311000.000000000001444444441100.000000000014444144444111.111000000144441314444441.154110000144414341444441.155541001444122222144411.014544001444414342444131.111554101444441314411331.151455101111444144443331.155144414441444444433331.145414444444144444333311.015541444444414444333316.014554444444414433333166.001441444444441333333311.000111444444441331133341.000000144624441131013351.000000144444413331001150.000000014444411331000000.000000001144101551000000.000000000011501111000000.000000000000000000000000\",\"000000000000000000111000.000000000000000011144100.000000000000011114444100.000000000000144446441000.000000000001444446444100.000000000014444446664111.111000000144444464444451.154110000144644644444451.155541003444646444444411.014544003444644444444141.111554103444666644441441.151455103555444444444451.155144414443444444444451.145414444443344444444411.015541444444334444444416.014554444444434444444166.001441444444433444444411.000111444434443441144441.000000144634443341014451.000000144434414441001150.000000014444411441000000.000000001144101551000000.000000000011501111000000.000000000000000000000000\",\"000000000000000000111000.000000000000000011133100.000000000000011164443100.000000000000144444411000.000000000001446444441100.000000000014444464644111.111000000144444444444451.153110000164644644444451.155541001444444441446411.013544001446444441444141.111554101444444464111441.151455101111444444444451.155144414441446444446451.145414442424144464444411.015541444444414444444416.014554444442414444644166.001441444444421444444411.000111443344221441144451.000000143254221141014451.000000143344214441001150.000000014444411441000000.000000001144101551000000.000000000011501111000000.000000000000000000000000\"]\n function RGBToHSL(r, g, b) {\n\tif (Array.isArray(r)) {\n\t g = r[1];\n\t b = r[2];\n\t r = r[0];\n\t}\n\tvar r = r / 255;\n\tvar g = g / 255;\n\tvar b = b / 255;\n\tvar cMax = Math.max(r, g, b);\n\tvar cMin = Math.min(r, g, b);\n\tvar delta = cMax - cMin;\n\tif (delta == 0) {\n\t var h = 0;\n\t} else if (cMax == r) {\n\t var h = 60 * (((g - b) / delta) % 6);\n\t} else if (cMax == g) {\n\t var h = 60 * ((b - r) / delta + 2);\n\t} else if (cMax == b) {\n\t var h = 60 * ((r - g) / delta + 4);\n\t}\n\tif (h < 0) {\n\t h += 360;\n\t}\n\tvar l = (cMax + cMin) / 2;\n\n\tif (delta == 0) {\n\t var s = 0;\n\t} else {\n\t var s = delta / (1 - Math.abs(2 * l - 1));\n\t}\n\n\treturn [h, s, l]\n }\n\n function HSLToRGB(h, s, l) {\n\tif (Array.isArray(h)) {\n\t s = h[1];\n\t l = h[2];\n\t h = h[0];\n\t}\n\tvar c = (1 - Math.abs(2 * l - 1)) * s;\n\tvar x = c * (1 - Math.abs((h / 60) % 2 - 1));\n\tvar m = l - c / 2;\n\tif (h >= 0 && h < 60) {\n\t var r = c,\n\t\tg = x,\n\t\tb = 0;\n\t} else if (h >= 60 && h < 120) {\n\t var r = x,\n\t\tg = c,\n\t\tb = 0;\n\t} else if (h >= 120 && h < 180) {\n\t var r = 0,\n\t\tg = c,\n\t\tb = x;\n\t} else if (h >= 180 && h < 240) {\n\t var r = 0,\n\t\tg = x,\n\t\tb = c;\n\t} else if (h >= 240 && h < 300) {\n\t var r = x,\n\t\tg = 0,\n\t\tb = c;\n\t} else if (h >= 300 && h < 360) {\n\t var r = c,\n\t\tg = 0,\n\t\tb = x;\n\t}\n\tr = Math.round((r + m) * 255);\n\tg = Math.round((g + m) * 255);\n\tb = Math.round((b + m) * 255);\n\treturn [r, g, b];\n }\n\n function RGBToHex(arr) {\n\tvar r = arr[0],\n\t g = arr[1],\n\t b = arr[2];\n\treturn \"#\" + (\"0\" + r.toString(16)).slice(-2) + (\"0\" + g.toString(16)).slice(-2) + (\"0\" + b.toString(16)).slice(-2);\n }\n\n function derivePalette(r, g, b, invert) {\n\tvar hsl = RGBToHSL(r, g, b);\n\n\tvar h = hsl[0];\n\tvar s = hsl[1];\n\tvar l = hsl[2];\n\tvar hx = h % 360;\n\tvar hy = (h + 320) % 360;\n\n\tvar c1 = HSLToRGB(hx, 1, 0.1);\n\tif (invert) {\n\t var c4 = HSLToRGB(hx, 1, 0.2);\n\t var c5 = HSLToRGB(hx, 1, 0.45);\n\t var c2 = HSLToRGB(hx, 1, 0.7);\n\t var c3 = HSLToRGB(hy, 1, 0.8);\n\t} else {\n\t var c2 = HSLToRGB(hx, 1, 0.2);\n\t var c3 = HSLToRGB(hx, 1, 0.45);\n\t var c4 = HSLToRGB(hx, 1, 0.7);\n\t var c5 = HSLToRGB(hy, 1, 0.8);\n\n\t}\n\n\n\treturn [\n\t null,\n\t RGBToHex(c1),\n\t RGBToHex(c2),\n\t RGBToHex(c3),\n\t RGBToHex(c4),\n\t RGBToHex(c5)\n\t];\n }\n\n\tfunction random(max) {\n\t\treturn Math.floor(Math.random() * max) + 1;\n\t}\n\t\t\n function hexToBytes(hex){\n\tvar result = []\n\tfor(var i = 0; i < hex.length; i+=2){\n\t result.push(parseInt(hex.slice(i, i+2),16));\n\t}\n\treturn result;\n }\n\n var mooncatparser = function (catId){\n\tif(catId.slice(0,2) == \"df\"){\n\t\t\n\t catId = catId.slice(2);\n\t}\n\tvar bytes = hexToBytes(catId);\n\tvar genesis = bytes[0],\n\t k = bytes[1],\n\t r = bytes[2],\n\t g = bytes[3],\n\t b = bytes[4];\n\n\tvar size = size || 10;\n\tvar invert = k >= 128;\n\tk = k % 128;\n\tk = k % (designs.length-1);\n\n\t//k = random(designs.length-1); // Number of the Cat\n\n\tvar design = designs[k].split(\".\");\n\tvar colors;\n\tif(genesis){\n\t\tk = random(genesis_design.length-1);\n\t\tdesign = genesis_design[k].split(\".\");\n\n\t if(k % 2 === 0 && invert || k % 2 === 1 && !invert){\n\t\tcolors = [null, \"#555555\", \"#d3d3d3\", \"#ffffff\", \"#000000\", \"#ff9999\"];\n\t }else{\n\t\tcolors = [null, \"#555555\", \"#222222\", \"#111111\", \"#000000\", \"#ff9999\"];\n\t }\n\t}else{\n\t colors = derivePalette(r, g, b, invert);\n\t}\n\n\treturn design.map(function(row){\n\t return row.split(\"\").map(function(cell){\n\t\treturn colors[cell];\n\t })\n\t})\n }\n\n mooncatparser.noConflict = function(){\n\troot.mooncatparser = prev_mooncatparser;\n\treturn mooncatparser;\n }\n\n if( typeof exports !== 'undefined' ) {\n\tif( typeof module !== 'undefined' && module.exports ) {\n\t exports = module.exports = mooncatparser;\n\t}\n\texports.mooncatparser = mooncatparser;\n } else {\n\troot.mooncatparser = mooncatparser;\n }\n}).call(this);\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tif(__webpack_module_cache__[moduleId]) {\n\t\treturn __webpack_module_cache__[moduleId].exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","import Pipe from 'buffer-pipe';\nimport { Buffer } from 'buffer/';\nexport function safeRead(pipe, num) {\n if (pipe.buffer.length < num) {\n throw new Error('unexpected end of buffer');\n }\n return pipe.read(num);\n}\n/**\n * Encode a positive number (or bigint) into a Buffer. The number will be floored to the\n * nearest integer.\n * @param value The number to encode.\n */\nexport function lebEncode(value) {\n if (typeof value === 'number') {\n value = BigInt(value);\n }\n if (value < BigInt(0)) {\n throw new Error('Cannot leb encode negative values.');\n }\n const pipe = new Pipe();\n while (true) {\n const i = Number(value & BigInt(0x7f));\n value /= BigInt(0x80);\n if (value === BigInt(0)) {\n pipe.write([i]);\n break;\n }\n else {\n pipe.write([i | 0x80]);\n }\n }\n return new Buffer(pipe.buffer);\n}\n/**\n * Decode a leb encoded buffer into a bigint. The number will always be positive (does not\n * support signed leb encoding).\n * @param pipe A Buffer containing the leb encoded bits.\n */\nexport function lebDecode(pipe) {\n let shift = BigInt(0);\n let value = BigInt(0);\n let byte;\n do {\n byte = safeRead(pipe, 1)[0];\n value += BigInt(byte & 0x7f).valueOf() * BigInt(2) ** shift;\n shift += BigInt(7);\n } while (byte >= 0x80);\n return value;\n}\n/**\n * Encode a number (or bigint) into a Buffer, with support for negative numbers. The number\n * will be floored to the nearest integer.\n * @param value The number to encode.\n */\nexport function slebEncode(value) {\n if (typeof value === 'number') {\n value = BigInt(value);\n }\n const isNeg = value < BigInt(0);\n if (isNeg) {\n value = -value - BigInt(1);\n }\n const pipe = new Pipe();\n while (true) {\n const i = getLowerBytes(value);\n value /= BigInt(0x80);\n // prettier-ignore\n if ((isNeg && value === BigInt(0) && (i & 0x40) !== 0)\n || (!isNeg && value === BigInt(0) && (i & 0x40) === 0)) {\n pipe.write([i]);\n break;\n }\n else {\n pipe.write([i | 0x80]);\n }\n }\n function getLowerBytes(num) {\n const bytes = num % BigInt(0x80);\n if (isNeg) {\n // We swap the bits here again, and remove 1 to do two's complement.\n return Number(BigInt(0x80) - bytes - BigInt(1));\n }\n else {\n return Number(bytes);\n }\n }\n return new Buffer(pipe.buffer);\n}\n/**\n * Decode a leb encoded buffer into a bigint. The number is decoded with support for negative\n * signed-leb encoding.\n * @param pipe A Buffer containing the signed leb encoded bits.\n */\nexport function slebDecode(pipe) {\n // Get the size of the buffer, then cut a buffer of that size.\n const pipeView = new Uint8Array(pipe.buffer);\n let len = 0;\n for (; len < pipeView.byteLength; len++) {\n if (pipeView[len] < 0x80) {\n // If it's a positive number, we reuse lebDecode.\n if ((pipeView[len] & 0x40) === 0) {\n return lebDecode(pipe);\n }\n break;\n }\n }\n const bytes = new Uint8Array(safeRead(pipe, len + 1));\n let value = BigInt(0);\n for (let i = bytes.byteLength - 1; i >= 0; i--) {\n value = value * BigInt(0x80) + BigInt(0x80 - (bytes[i] & 0x7f) - 1);\n }\n return -value - BigInt(1);\n}\nexport function writeUIntLE(value, byteLength) {\n if (BigInt(value) < BigInt(0)) {\n throw new Error('Cannot write negative values.');\n }\n return writeIntLE(value, byteLength);\n}\nexport function writeIntLE(value, byteLength) {\n value = BigInt(value);\n const pipe = new Pipe();\n let i = 0;\n let mul = BigInt(256);\n let sub = BigInt(0);\n let byte = Number(value % mul);\n pipe.write([byte]);\n while (++i < byteLength) {\n if (value < 0 && sub === BigInt(0) && byte !== 0) {\n sub = BigInt(1);\n }\n byte = Number((value / mul - sub) % BigInt(256));\n pipe.write([byte]);\n mul *= BigInt(256);\n }\n return new Buffer(pipe.buffer);\n}\nexport function readUIntLE(pipe, byteLength) {\n let val = BigInt(safeRead(pipe, 1)[0]);\n let mul = BigInt(1);\n let i = 0;\n while (++i < byteLength) {\n mul *= BigInt(256);\n const byte = BigInt(safeRead(pipe, 1)[0]);\n val = val + mul * byte;\n }\n return val;\n}\nexport function readIntLE(pipe, byteLength) {\n let val = readUIntLE(pipe, byteLength);\n const mul = BigInt(2) ** (BigInt(8) * BigInt(byteLength - 1) + BigInt(7));\n if (val >= mul) {\n val -= mul * BigInt(2);\n }\n return val;\n}\n//# sourceMappingURL=leb128.js.map","import { Buffer } from 'buffer/';\nimport { lebEncode } from './utils/leb128';\nexport function blobFromBuffer(b) {\n return b;\n}\nexport function blobFromUint8Array(arr) {\n return Buffer.from(arr);\n}\nexport function blobFromText(text) {\n return Buffer.from(text);\n}\nexport function blobFromUint32Array(arr) {\n return Buffer.from(arr);\n}\nexport function derBlobFromBlob(blob) {\n return blob;\n}\nexport function blobFromHex(hex) {\n return Buffer.from(hex, 'hex');\n}\nexport function blobToHex(blob) {\n return blob.toString('hex');\n}\n/**\n * Create a random Nonce, based on date and a random suffix.\n */\nexport function makeNonce() {\n return lebEncode(BigInt(+Date.now()) * BigInt(100000) + BigInt(Math.floor(Math.random() * 100000)));\n}\n//# sourceMappingURL=types.js.map","// tslint:disable:no-bitwise\nconst alphabet = 'abcdefghijklmnopqrstuvwxyz234567';\n// Build a lookup table for decoding.\nconst lookupTable = Object.create(null);\nfor (let i = 0; i < alphabet.length; i++) {\n lookupTable[alphabet[i]] = i;\n}\n// Add aliases for rfc4648.\nlookupTable['0'] = lookupTable.o;\nlookupTable['1'] = lookupTable.i;\n/**\n * @param input The input array to encode.\n * @returns A Base32 string encoding the input.\n */\nexport function encode(input) {\n // How many bits will we skip from the first byte.\n let skip = 0;\n // 5 high bits, carry from one byte to the next.\n let bits = 0;\n // The output string in base32.\n let output = '';\n function encodeByte(byte) {\n if (skip < 0) {\n // we have a carry from the previous byte\n bits |= (byte >> (-skip));\n }\n else {\n // no carry\n bits = (byte << skip) & 248;\n }\n if (skip > 3) {\n // Not enough data to produce a character, get us another one\n skip -= 8;\n return 1;\n }\n if (skip < 4) {\n // produce a character\n output += alphabet[bits >> 3];\n skip += 5;\n }\n return 0;\n }\n for (let i = 0; i < input.length;) {\n i += encodeByte(input[i]);\n }\n return output + (skip < 0 ? alphabet[bits >> 3] : '');\n}\n/**\n * @param input The base32 encoded string to decode.\n */\nexport function decode(input) {\n // how many bits we have from the previous character.\n let skip = 0;\n // current byte we're producing.\n let byte = 0;\n const output = new Uint8Array((input.length * 4 / 3) | 0);\n let o = 0;\n function decodeChar(char) {\n // Consume a character from the stream, store\n // the output in this.output. As before, better\n // to use update().\n let val = lookupTable[char.toLowerCase()];\n if (val === undefined) {\n throw new Error(`Invalid character: ${JSON.stringify(char)}`);\n }\n // move to the high bits\n val <<= 3;\n byte |= val >>> skip;\n skip += 5;\n if (skip >= 8) {\n // We have enough bytes to produce an output\n output[o++] = byte;\n skip -= 8;\n if (skip > 0) {\n byte = (val << (5 - skip)) & 255;\n }\n else {\n byte = 0;\n }\n }\n }\n for (const c of input) {\n decodeChar(c);\n }\n return output.slice(0, o);\n}\n//# sourceMappingURL=base32.js.map","// tslint:disable:no-bitwise\n// This file is translated to JavaScript from\n// https://lxp32.github.io/docs/a-simple-example-crc32-calculation/\nconst lookUpTable = new Uint32Array([\n 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA,\n 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3,\n 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988,\n 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91,\n 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE,\n 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7,\n 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC,\n 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5,\n 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172,\n 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B,\n 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940,\n 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59,\n 0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116,\n 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F,\n 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924,\n 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D,\n 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A,\n 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433,\n 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818,\n 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01,\n 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E,\n 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457,\n 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C,\n 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65,\n 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2,\n 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB,\n 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0,\n 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9,\n 0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086,\n 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F,\n 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4,\n 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD,\n 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A,\n 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683,\n 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8,\n 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1,\n 0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE,\n 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7,\n 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC,\n 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5,\n 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252,\n 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B,\n 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60,\n 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79,\n 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236,\n 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F,\n 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04,\n 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D,\n 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A,\n 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713,\n 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38,\n 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21,\n 0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E,\n 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777,\n 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C,\n 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45,\n 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2,\n 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB,\n 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0,\n 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9,\n 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6,\n 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF,\n 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94,\n 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D,\n]);\n/**\n * Calculate the CRC32 of a blob.\n * @param buf The blob to calculate the CRC32 of.\n */\nexport function getCrc32(buf) {\n const b = new Uint8Array(buf);\n let crc = -1;\n // tslint:disable-next-line:prefer-for-of\n for (let i = 0; i < b.length; i++) {\n const byte = b[i];\n const t = (byte ^ crc) & 0xFF;\n crc = lookUpTable[t] ^ (crc >>> 8);\n }\n return (crc ^ -1) >>> 0;\n}\n//# sourceMappingURL=getCrc.js.map","import { Buffer } from 'buffer/';\nimport { blobFromHex, blobFromUint8Array, blobToHex } from './types';\nimport { decode, encode } from './utils/base32';\nimport { getCrc32 } from './utils/getCrc';\nimport { sha224 } from './utils/sha224';\nconst SELF_AUTHENTICATING_SUFFIX = 2;\nconst ANONYMOUS_SUFFIX = 4;\nexport class Principal {\n constructor(_blob) {\n this._blob = _blob;\n this._isPrincipal = true;\n }\n static anonymous() {\n return new this(blobFromUint8Array(new Uint8Array([ANONYMOUS_SUFFIX])));\n }\n static selfAuthenticating(publicKey) {\n const sha = sha224(publicKey);\n return new this(blobFromUint8Array(new Uint8Array([...sha, SELF_AUTHENTICATING_SUFFIX])));\n }\n static from(other) {\n if (typeof other === 'string') {\n return Principal.fromText(other);\n }\n else if (typeof other === 'object'\n && other !== null\n && other._isPrincipal === true) {\n return new Principal(other._blob);\n }\n throw new Error(`Impossible to convert ${JSON.stringify(other)} to Principal.`);\n }\n static fromHex(hex) {\n return new this(blobFromHex(hex));\n }\n static fromText(text) {\n const canisterIdNoDash = text.toLowerCase().replace(/-/g, '');\n let arr = decode(canisterIdNoDash);\n arr = arr.slice(4, arr.length);\n const principal = new this(blobFromUint8Array(arr));\n if (principal.toText() !== text) {\n throw new Error(`Principal \"${principal.toText()}\" does not have a valid checksum.`);\n }\n return principal;\n }\n static fromBlob(blob) {\n return new this(blob);\n }\n isAnonymous() {\n return this._blob.byteLength === 1 && this._blob[0] === ANONYMOUS_SUFFIX;\n }\n toBlob() {\n return this._blob;\n }\n toHash() {\n return this._blob;\n }\n toHex() {\n return blobToHex(this._blob).toUpperCase();\n }\n toText() {\n const checksumArrayBuf = new ArrayBuffer(4);\n const view = new DataView(checksumArrayBuf);\n view.setUint32(0, getCrc32(this.toBlob()), false);\n const checksum = Uint8Array.from(Buffer.from(checksumArrayBuf));\n const bytes = Uint8Array.from(this._blob);\n const array = new Uint8Array([...checksum, ...bytes]);\n const result = encode(array);\n const matches = result.match(/.{1,5}/g);\n if (!matches) {\n // This should only happen if there's no character, which is unreachable.\n throw new Error();\n }\n return matches.join('-');\n }\n toString() {\n return this.toText();\n }\n}\n//# sourceMappingURL=principal.js.map","import { sha224 as jsSha224 } from 'js-sha256';\nimport { blobFromUint8Array } from '../types';\nexport function sha224(data) {\n const shaObj = jsSha224.create();\n shaObj.update(data);\n return blobFromUint8Array(new Uint8Array(shaObj.array()));\n}\n//# sourceMappingURL=sha224.js.map","import { sha256 as jsSha256 } from 'js-sha256';\nimport borc from 'borc';\nimport { Buffer } from 'buffer/';\nimport { blobFromBuffer, blobFromUint8Array, blobToHex } from './types';\nimport { lebEncode } from './utils/leb128';\n/**\n * get RequestId as hex-encoded blob.\n * @param requestId - RequestId to hex\n */\nexport function toHex(requestId) {\n return blobToHex(requestId);\n}\n/**\n * sha256 hash the provided Buffer\n * @param data - input to hash function\n */\nexport function hash(data) {\n const hashed = jsSha256.create().update(data).arrayBuffer();\n return blobFromUint8Array(new Uint8Array(hashed));\n}\nfunction hashValue(value) {\n if (value instanceof borc.Tagged) {\n return hashValue(value.value);\n }\n else if (typeof value === 'string') {\n return hashString(value);\n }\n else if (typeof value === 'number') {\n return hash(lebEncode(value));\n }\n else if (Buffer.isBuffer(value)) {\n return hash(blobFromUint8Array(new Uint8Array(value)));\n }\n else if (value instanceof Uint8Array || value instanceof ArrayBuffer) {\n return hash(blobFromUint8Array(new Uint8Array(value)));\n }\n else if (Array.isArray(value)) {\n const vals = value.map(hashValue);\n return hash(Buffer.concat(vals));\n }\n else if (typeof value === 'object' &&\n value !== null &&\n typeof value.toHash === 'function') {\n return hashValue(value.toHash());\n // TODO This should be move to a specific async method as the webauthn flow required\n // the flow to be synchronous to ensure Safari touch id works.\n // } else if (value instanceof Promise) {\n // return value.then(x => hashValue(x));\n }\n else if (typeof value === 'bigint') {\n // Do this check much later than the other bigint check because this one is much less\n // type-safe.\n // So we want to try all the high-assurance type guards before this 'probable' one.\n return hash(lebEncode(value));\n }\n throw Object.assign(new Error(`Attempt to hash a value of unsupported type: ${value}`), {\n // include so logs/callers can understand the confusing value.\n // (when stringified in error message, prototype info is lost)\n value,\n });\n}\nconst hashString = (value) => {\n const encoder = new TextEncoder();\n const encoded = encoder.encode(value);\n return hash(Buffer.from(encoded));\n};\n/**\n * Concatenate many blobs.\n * @param bs - blobs to concatenate\n */\nfunction concat(bs) {\n return blobFromBuffer(Buffer.concat(bs));\n}\n/**\n * Get the RequestId of the provided ic-ref request.\n * RequestId is the result of the representation-independent-hash function.\n * https://docs.dfinity.systems/public/#api-hash-of-map\n * @param request - ic-ref request to hash into RequestId\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function requestIdOf(request) {\n const hashed = Object.entries(request)\n .filter(([, value]) => value !== undefined)\n .map(([key, value]) => {\n const hashedKey = hashString(key);\n const hashedValue = hashValue(value);\n return [hashedKey, hashedValue];\n });\n const traversed = hashed;\n const sorted = traversed.sort(([k1], [k2]) => {\n return Buffer.compare(Buffer.from(k1), Buffer.from(k2));\n });\n const concatenated = concat(sorted.map(concat));\n const requestId = hash(concatenated);\n return requestId;\n}\n//# sourceMappingURL=request_id.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { Buffer } from 'buffer/';\nimport { Principal } from './principal';\nimport { requestIdOf } from './request_id';\nimport { blobFromBuffer } from './types';\nconst domainSeparator = Buffer.from(new TextEncoder().encode('\\x0Aic-request'));\n/**\n * An Identity that can sign blobs.\n */\nexport class SignIdentity {\n /**\n * Get the principal represented by this identity. Normally should be a\n * `Principal.selfAuthenticating()`.\n */\n getPrincipal() {\n return Principal.selfAuthenticating(this.getPublicKey().toDer());\n }\n /**\n * Transform a request into a signed version of the request. This is done last\n * after the transforms on the body of a request. The returned object can be\n * anything, but must be serializable to CBOR.\n * @param request - internet computer request to transform\n */\n async transformRequest(request) {\n const { body } = request, fields = __rest(request, [\"body\"]);\n const requestId = await requestIdOf(body);\n return Object.assign(Object.assign({}, fields), { body: {\n content: body,\n sender_pubkey: this.getPublicKey().toDer(),\n sender_sig: await this.sign(blobFromBuffer(Buffer.concat([domainSeparator, requestId]))),\n } });\n }\n}\nexport class AnonymousIdentity {\n getPrincipal() {\n return Principal.anonymous();\n }\n async transformRequest(request) {\n return Object.assign(Object.assign({}, request), { body: { content: request.body } });\n }\n}\n/**\n * Create an IdentityDescriptor from a @dfinity/authentication Identity\n * @param identity - identity describe in returned descriptor\n */\nexport function createIdentityDescriptor(identity) {\n const identityIndicator = 'getPublicKey' in identity\n ? { type: 'PublicKeyIdentity', publicKey: identity.getPublicKey().toDer().toString('hex') }\n : { type: 'AnonymousIdentity' };\n return identityIndicator;\n}\n/**\n * Type Guard for whether the unknown value is an IdentityDescriptor or not.\n * @param value - value to type guard\n */\nexport function isIdentityDescriptor(value) {\n var _a, _b;\n switch ((_a = value) === null || _a === void 0 ? void 0 : _a.type) {\n case 'AnonymousIdentity':\n return true;\n case 'PublicKeyIdentity':\n if (typeof ((_b = value) === null || _b === void 0 ? void 0 : _b.publicKey) !== 'string') {\n return false;\n }\n return true;\n }\n return false;\n}\n//# sourceMappingURL=auth.js.map","// tslint:disable:max-classes-per-file\n// This file is based on:\n// tslint:disable-next-line: max-line-length\n// https://github.com/dfinity-lab/dfinity/blob/9bca65f8edd65701ea6bdb00e0752f9186bbc893/docs/spec/public/index.adoc#cbor-encoding-of-requests-and-responses\nimport borc from 'borc';\nimport { Buffer } from 'buffer/';\nimport * as cbor from 'simple-cbor';\nimport { SelfDescribeCborSerializer } from 'simple-cbor';\nimport { blobFromBuffer, blobFromHex } from './types';\n// We are using hansl/simple-cbor for CBOR serialization, to avoid issues with\n// encoding the uint64 values that the HTTP handler of the client expects for\n// canister IDs. However, simple-cbor does not yet provide deserialization so\n// we are using `Uint8Array` so that we can use the dignifiedquire/borc CBOR\n// decoder.\nclass PrincipalEncoder {\n get name() {\n return 'Principal';\n }\n get priority() {\n return 0;\n }\n match(value) {\n return value && value._isPrincipal === true;\n }\n encode(v) {\n return cbor.value.bytes(v.toBlob());\n }\n}\nclass BufferEncoder {\n get name() {\n return 'Buffer';\n }\n get priority() {\n return 1;\n }\n match(value) {\n return Buffer.isBuffer(value);\n }\n encode(v) {\n return cbor.value.bytes(new Uint8Array(v));\n }\n}\nclass BigIntEncoder {\n get name() {\n return 'BigInt';\n }\n get priority() {\n return 1;\n }\n match(value) {\n return typeof value === `bigint`;\n }\n encode(v) {\n // Always use a bigint encoding.\n if (v > BigInt(0)) {\n return cbor.value.tagged(2, cbor.value.bytes(blobFromHex(v.toString(16))));\n }\n else {\n return cbor.value.tagged(3, cbor.value.bytes(blobFromHex((BigInt('-1') * v).toString(16))));\n }\n }\n}\nconst serializer = SelfDescribeCborSerializer.withDefaultEncoders(true);\nserializer.addEncoder(new PrincipalEncoder());\nserializer.addEncoder(new BufferEncoder());\nserializer.addEncoder(new BigIntEncoder());\nexport var CborTag;\n(function (CborTag) {\n CborTag[CborTag[\"Uint64LittleEndian\"] = 71] = \"Uint64LittleEndian\";\n CborTag[CborTag[\"Semantic\"] = 55799] = \"Semantic\";\n})(CborTag || (CborTag = {}));\nexport const encode = (value) => {\n return blobFromBuffer(Buffer.from(serializer.serialize(value)));\n};\nfunction decodePositiveBigInt(buf) {\n const len = buf.byteLength;\n let res = BigInt(0);\n for (let i = 0; i < len; i++) {\n // tslint:disable-next-line:no-bitwise\n res = res * BigInt(0x100) + BigInt(buf[i]);\n }\n return res;\n}\nexport function decode(input) {\n const decoder = new borc.Decoder({\n size: input.byteLength,\n tags: {\n // Override tags 2 and 3 for BigInt support (borc supports only BigNumber).\n 2: val => decodePositiveBigInt(val),\n 3: val => -decodePositiveBigInt(val),\n [CborTag.Semantic]: (value) => value,\n },\n });\n const result = decoder.decodeFirst(input);\n return result;\n}\n//# sourceMappingURL=cbor.js.map","import * as cbor from 'simple-cbor';\nimport { makeNonce } from '../../types';\nimport { lebEncode } from '../../utils/leb128';\nconst NANOSECONDS_PER_MILLISECONDS = BigInt(1000000);\nconst REPLICA_PERMITTED_DRIFT_MILLISECONDS = BigInt(60 * 1000);\nexport class Expiry {\n constructor(deltaInMSec) {\n // Use bigint because it can overflow the maximum number allowed in a double float.\n this._value = (BigInt(Date.now()) + BigInt(deltaInMSec) - REPLICA_PERMITTED_DRIFT_MILLISECONDS)\n * NANOSECONDS_PER_MILLISECONDS;\n }\n toCBOR() {\n // TODO: change this to take the minimum amount of space (it always takes 8 bytes now).\n return cbor.value.u64(this._value.toString(16), 16);\n }\n toHash() {\n return lebEncode(this._value);\n }\n}\n/**\n * Create a Nonce transform, which takes a function that returns a Buffer, and adds it\n * as the nonce to every call requests.\n * @param nonceFn A function that returns a buffer. By default uses a semi-random method.\n */\nexport function makeNonceTransform(nonceFn = makeNonce) {\n return async (request) => {\n // Nonce are only useful for async calls, to prevent replay attacks. Other types of\n // calls don't need Nonce so we just skip creating one.\n if (request.endpoint === \"call\" /* Call */) {\n request.body.nonce = nonceFn();\n }\n };\n}\n/**\n * Create a transform that adds a delay (by default 5 minutes) to the expiry.\n *\n * @param delayInMilliseconds The delay to add to the call time, in milliseconds.\n */\nexport function makeExpiryTransform(delayInMilliseconds) {\n return async (request) => {\n request.body.ingress_expiry = new Expiry(delayInMilliseconds);\n };\n}\n//# sourceMappingURL=transforms.js.map","// tslint:enable:camel-case\n// The types of values allowed in the `request_type` field for submit requests.\nexport var SubmitRequestType;\n(function (SubmitRequestType) {\n SubmitRequestType[\"Call\"] = \"call\";\n})(SubmitRequestType || (SubmitRequestType = {}));\n//# sourceMappingURL=types.js.map","import { Buffer } from 'buffer/';\nimport { AnonymousIdentity } from '../../auth';\nimport * as cbor from '../../cbor';\nimport { Principal } from '../../principal';\nimport { requestIdOf } from '../../request_id';\nimport { Expiry } from './transforms';\nimport { SubmitRequestType, } from './types';\nexport * from './transforms';\nexport var RequestStatusResponseStatus;\n(function (RequestStatusResponseStatus) {\n RequestStatusResponseStatus[\"Received\"] = \"received\";\n RequestStatusResponseStatus[\"Processing\"] = \"processing\";\n RequestStatusResponseStatus[\"Replied\"] = \"replied\";\n RequestStatusResponseStatus[\"Rejected\"] = \"rejected\";\n RequestStatusResponseStatus[\"Unknown\"] = \"unknown\";\n RequestStatusResponseStatus[\"Done\"] = \"done\";\n})(RequestStatusResponseStatus || (RequestStatusResponseStatus = {}));\n// Default delta for ingress expiry is 5 minutes.\nconst DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS = 5 * 60 * 1000;\nfunction getDefaultFetch() {\n const result = typeof window === 'undefined'\n ? typeof global === 'undefined'\n ? typeof self === 'undefined'\n ? undefined\n : self.fetch.bind(self)\n : global.fetch.bind(global)\n : window.fetch.bind(window);\n if (!result) {\n throw new Error('Could not find default `fetch` implementation.');\n }\n return result;\n}\n// A HTTP agent allows users to interact with a client of the internet computer\n// using the available methods. It exposes an API that closely follows the\n// public view of the internet computer, and is not intended to be exposed\n// directly to the majority of users due to its low-level interface.\n//\n// There is a pipeline to apply transformations to the request before sending\n// it to the client. This is to decouple signature, nonce generation and\n// other computations so that this class can stay as simple as possible while\n// allowing extensions.\nexport class HttpAgent {\n constructor(options = {}) {\n this._pipeline = [];\n if (options.source) {\n if (!(options.source instanceof HttpAgent)) {\n throw new Error('An Agent\\'s source can only be another HttpAgent');\n }\n this._pipeline = [...options.source._pipeline];\n this._identity = options.source._identity;\n this._fetch = options.source._fetch;\n this._host = options.source._host;\n this._credentials = options.source._credentials;\n }\n else {\n this._fetch = options.fetch || getDefaultFetch() || fetch.bind(global);\n }\n if (options.host) {\n if (!options.host.match(/^[a-z]+:/) && typeof window !== 'undefined') {\n this._host = new URL(window.location.protocol + '//' + options.host);\n }\n else {\n this._host = new URL(options.host);\n }\n }\n else if (options.source) {\n // Safe to ignore here.\n this._host = options.source._host;\n }\n else {\n const location = window === null || window === void 0 ? void 0 : window.location;\n if (!location) {\n throw new Error('Must specify a host to connect to.');\n }\n this._host = new URL(location + '');\n }\n if (options.credentials) {\n const { name, password } = options.credentials;\n this._credentials = `${name}${password ? ':' + password : ''}`;\n }\n this._identity = Promise.resolve(options.identity || new AnonymousIdentity());\n }\n addTransform(fn, priority = fn.priority || 0) {\n // Keep the pipeline sorted at all time, by priority.\n const i = this._pipeline.findIndex(x => (x.priority || 0) < priority);\n this._pipeline.splice(i >= 0 ? i : this._pipeline.length, 0, Object.assign(fn, { priority }));\n }\n async getPrincipal() {\n return (await this._identity).getPrincipal();\n }\n async call(canisterId, options, identity) {\n const id = await (identity !== undefined ? identity : this._identity);\n const canister = Principal.from(canisterId);\n const ecid = options.effectiveCanisterId\n ? Principal.from(options.effectiveCanisterId)\n : canister;\n const sender = (id === null || id === void 0 ? void 0 : id.getPrincipal()) || Principal.anonymous();\n const submit = {\n request_type: SubmitRequestType.Call,\n canister_id: canister,\n method_name: options.methodName,\n arg: options.arg,\n sender: sender.toBlob(),\n ingress_expiry: new Expiry(DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS),\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let transformedRequest = (await this._transform({\n request: {\n body: null,\n method: 'POST',\n headers: Object.assign({ 'Content-Type': 'application/cbor' }, (this._credentials ? { Authorization: 'Basic ' + btoa(this._credentials) } : {})),\n },\n endpoint: \"call\" /* Call */,\n body: submit,\n }));\n // Apply transform for identity.\n transformedRequest = await id.transformRequest(transformedRequest);\n const body = cbor.encode(transformedRequest.body);\n // Run both in parallel. The fetch is quite expensive, so we have plenty of time to\n // calculate the requestId locally.\n const [response, requestId] = await Promise.all([\n this._fetch('' + new URL(`/api/v2/canister/${ecid.toText()}/call`, this._host), Object.assign(Object.assign({}, transformedRequest.request), { body })),\n requestIdOf(submit),\n ]);\n if (!response.ok) {\n throw new Error(`Server returned an error:\\n` +\n ` Code: ${response.status} (${response.statusText})\\n` +\n ` Body: ${await response.text()}\\n`);\n }\n return {\n requestId,\n response: {\n ok: response.ok,\n status: response.status,\n statusText: response.statusText,\n },\n };\n }\n async query(canisterId, fields, identity) {\n const id = await (identity || this._identity);\n const canister = typeof canisterId === 'string' ? Principal.fromText(canisterId) : canisterId;\n const sender = (id === null || id === void 0 ? void 0 : id.getPrincipal()) || Principal.anonymous();\n const request = {\n request_type: \"query\" /* Query */,\n canister_id: canister,\n method_name: fields.methodName,\n arg: fields.arg,\n sender: sender.toBlob(),\n ingress_expiry: new Expiry(DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS),\n };\n // TODO: remove this any. This can be a Signed or UnSigned request.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let transformedRequest = await this._transform({\n request: {\n method: 'POST',\n headers: Object.assign({ 'Content-Type': 'application/cbor' }, (this._credentials ? { Authorization: 'Basic ' + btoa(this._credentials) } : {})),\n },\n endpoint: \"read\" /* Query */,\n body: request,\n });\n // Apply transform for identity.\n transformedRequest = await id.transformRequest(transformedRequest);\n const body = cbor.encode(transformedRequest.body);\n const response = await this._fetch('' + new URL(`/api/v2/canister/${canister.toText()}/query`, this._host), Object.assign(Object.assign({}, transformedRequest.request), { body }));\n if (!response.ok) {\n throw new Error(`Server returned an error:\\n` +\n ` Code: ${response.status} (${response.statusText})\\n` +\n ` Body: ${await response.text()}\\n`);\n }\n return cbor.decode(Buffer.from(await response.arrayBuffer()));\n }\n async readState(canisterId, fields, identity) {\n const canister = typeof canisterId === 'string' ? Principal.fromText(canisterId) : canisterId;\n const id = await (identity || this._identity);\n const sender = (id === null || id === void 0 ? void 0 : id.getPrincipal()) || Principal.anonymous();\n // TODO: remove this any. This can be a Signed or UnSigned request.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let transformedRequest = await this._transform({\n request: {\n method: 'POST',\n headers: Object.assign({ 'Content-Type': 'application/cbor' }, (this._credentials ? { Authorization: 'Basic ' + btoa(this._credentials) } : {})),\n },\n endpoint: \"read_state\" /* ReadState */,\n body: {\n request_type: \"read_state\" /* ReadState */,\n paths: fields.paths,\n sender: sender.toBlob(),\n ingress_expiry: new Expiry(DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS),\n },\n });\n // Apply transform for identity.\n transformedRequest = await id.transformRequest(transformedRequest);\n const body = cbor.encode(transformedRequest.body);\n const response = await this._fetch('' + new URL(`/api/v2/canister/${canister}/read_state`, this._host), Object.assign(Object.assign({}, transformedRequest.request), { body }));\n if (!response.ok) {\n throw new Error(`Server returned an error:\\n` +\n ` Code: ${response.status} (${response.statusText})\\n` +\n ` Body: ${await response.text()}\\n`);\n }\n return cbor.decode(Buffer.from(await response.arrayBuffer()));\n }\n async status() {\n const headers = this._credentials\n ? {\n Authorization: 'Basic ' + btoa(this._credentials),\n }\n : {};\n const response = await this._fetch('' + new URL(`/api/v2/status`, this._host), { headers });\n if (!response.ok) {\n throw new Error(`Server returned an error:\\n` +\n ` Code: ${response.status} (${response.statusText})\\n` +\n ` Body: ${await response.text()}\\n`);\n }\n const buffer = await response.arrayBuffer();\n return cbor.decode(new Uint8Array(buffer));\n }\n _transform(request) {\n let p = Promise.resolve(request);\n for (const fn of this._pipeline) {\n p = p.then(r => fn(r).then(r2 => r2 || r));\n }\n return p;\n }\n}\n//# sourceMappingURL=index.js.map","import { Principal, } from '..';\nexport var ProxyMessageKind;\n(function (ProxyMessageKind) {\n ProxyMessageKind[\"Error\"] = \"err\";\n ProxyMessageKind[\"GetPrincipal\"] = \"gp\";\n ProxyMessageKind[\"GetPrincipalResponse\"] = \"gpr\";\n ProxyMessageKind[\"Query\"] = \"q\";\n ProxyMessageKind[\"QueryResponse\"] = \"qr\";\n ProxyMessageKind[\"Call\"] = \"c\";\n ProxyMessageKind[\"CallResponse\"] = \"cr\";\n ProxyMessageKind[\"ReadState\"] = \"rs\";\n ProxyMessageKind[\"ReadStateResponse\"] = \"rsr\";\n ProxyMessageKind[\"Status\"] = \"s\";\n ProxyMessageKind[\"StatusResponse\"] = \"sr\";\n})(ProxyMessageKind || (ProxyMessageKind = {}));\n// A Stub Agent that forwards calls to another Agent implementation.\nexport class ProxyStubAgent {\n constructor(_frontend, _agent) {\n this._frontend = _frontend;\n this._agent = _agent;\n }\n onmessage(msg) {\n switch (msg.type) {\n case ProxyMessageKind.GetPrincipal:\n this._agent.getPrincipal().then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.GetPrincipalResponse,\n response: response.toText(),\n });\n });\n break;\n case ProxyMessageKind.Query:\n this._agent.query(...msg.args).then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.QueryResponse,\n response,\n });\n });\n break;\n case ProxyMessageKind.Call:\n this._agent.call(...msg.args).then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.CallResponse,\n response,\n });\n });\n break;\n case ProxyMessageKind.ReadState:\n this._agent.readState(...msg.args).then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.ReadStateResponse,\n response,\n });\n });\n break;\n case ProxyMessageKind.Status:\n this._agent.status().then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.StatusResponse,\n response,\n });\n });\n break;\n default:\n throw new Error(`Invalid message received: ${JSON.stringify(msg)}`);\n }\n }\n}\n// An Agent that forwards calls to a backend. The calls are serialized\nexport class ProxyAgent {\n constructor(_backend) {\n this._backend = _backend;\n this._nextId = 0;\n this._pendingCalls = new Map();\n }\n onmessage(msg) {\n const id = msg.id;\n const maybePromise = this._pendingCalls.get(id);\n if (!maybePromise) {\n throw new Error('A proxy get the same message twice...');\n }\n this._pendingCalls.delete(id);\n const [resolve, reject] = maybePromise;\n switch (msg.type) {\n case ProxyMessageKind.Error:\n return reject(msg.error);\n case ProxyMessageKind.GetPrincipalResponse:\n case ProxyMessageKind.CallResponse:\n case ProxyMessageKind.QueryResponse:\n case ProxyMessageKind.ReadStateResponse:\n case ProxyMessageKind.StatusResponse:\n return resolve(msg.response);\n default:\n throw new Error(`Invalid message being sent to ProxyAgent: ${JSON.stringify(msg)}`);\n }\n }\n async getPrincipal() {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.GetPrincipal,\n }).then(principal => {\n if (typeof principal !== 'string') {\n throw new Error('Invalid principal received.');\n }\n return Principal.fromText(principal);\n });\n }\n readState(canisterId, fields) {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.ReadState,\n args: [canisterId.toString(), fields],\n });\n }\n call(canisterId, fields) {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.Call,\n args: [canisterId.toString(), fields],\n });\n }\n status() {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.Status,\n });\n }\n query(canisterId, fields) {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.Query,\n args: [canisterId.toString(), fields],\n });\n }\n async _sendAndWait(msg) {\n return new Promise((resolve, reject) => {\n this._pendingCalls.set(msg.id, [resolve, reject]);\n this._backend(msg);\n });\n }\n}\n//# sourceMappingURL=proxy.js.map","/* tslint:disable */\n/* eslint-disable */\nlet wasm;\n// This WASM is generated from the BLS Rust code of the Agent RS (see\n// http://github.com/dfinity/agent-rs/)\n// Once the WASM is compiled, simply base64 encode it and include it in this string.\nconst wasmBytesBase64 = `\n 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\n g8AAEF8CQAJAIAZB6AFqEFoNACAGQShqEIQBDQAgBkGIPWoQS0EAIQcgBkGIwwBqQTgQchogBkG4IWpBOBByGiAGQYjA\n AGoQSyAGQcjEAGoQSyAGQcjJAGoQSyAGQcjMAGoQSyAGQagGahBLIAZBsAxqEEsgBkHIzwBqEEsgBkHQ1QBqEEsgBkHY\n 2wBqEEsgBkG4FWoQSyAGQZgjaiAGQcjJAGpBwAEQZxogBkHYJGogBkHIzABqQcABEGcaIAZBmCZqIAZBqAZqQcABEGca\n IAZB2CdqIAZBsAxqQcABEGcaIAZBmClqIAZByM8AakHAARBnGiAGQdgqaiAGQdDVAGpBwAEQZxogBkGYLGogBkHY2wBq\n QcABEGcaIAZB2C1qIAZBuBVqQcABEGcaIAZBuBVqQecAEHIaIAZBiMAAaiAGQShqEH8gBkGIwABqEBggBkGYI2ogBkEo\n ahB/A0AgB0HACkYEQCAGQbghaiAGQegBahBrIAYpA7ghIRcgBkG4IWpBARCdASAGQbghahBEIAYpA7ghIRYgBkGIwwBq\n IAZBuCFqEGsgBkGIwwBqQQEQnQEgBkGIwwBqEEQgBkG4IWogBkGIwwBqIBdCAoGnEE8gBkGIwABqIAZBKGogFkICgacQ\n bSAGQcjEAGogBkGIwABqEH8gBkG4IWoQKUEDaiIJQQJ2IgdBAWohAkEAIQgCQAJAAkADQAJAIAZBuCFqQQUQjAEhAyAC\n IAhGBEAgCUGYA0kNASACQecAQbCEwAAQPAALIAhB5wBGDQIgBkG4FWogCGogA0FwaiIDOgAAIAZBuCFqIANBGHRBGHUQ\n ngEgBkG4IWoQRCAGQbghakEEEDsgCEEBaiEIDAELCyAGQbgVaiACaiADOgAAIANBGHRBGHVBf2oiA0EBdiECIANBD0sN\n ASAGQYg9aiAGQZgjaiACQcABbGoQfwNAIAdBf0YEQCAGQYg9aiAGQcjEAGoQcyAGQZgjaiAGQYg9akHAARBnGgwICyAH\n QeYASw0DIAZBiMAAaiAGQZgjaiAGQbgVaiAHaiwAABAfIAdBf2ohByAGQYg9ahAYIAZBiD1qEBggBkGIPWoQGCAGQYg9\n ahAYIAZBiD1qIAZBiMAAahAMDAALAAtB5wBB5wBBoITAABA8AAsgAkEIQcCEwAAQPAALIAdB5wBB0ITAABA8AAUgBkHI\n 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\n UtcEAKAIAIgFBASACdCICcQRAIAAoAggMAQtB1LXBACABIAJyNgIAIAALIQEgACAENgIIIAEgBDYCDCAEIAA2AgwgBCAB\n NgIIC0EAIQVB6LjBACgCACIAIAZNDQBB6LjBACAAIAZrIgI2AgBB8LjBAEHwuMEAKAIAIgEgBmoiADYCACAAIAJBAXI2A\n gQgASAGQQNyNgIEIAFBCGoPCyAFDwsgASAHNgIYIAMoAhAiAARAIAEgADYCECAAIAE2AhgLIANBFGooAgAiAEUNACABQR\n RqIAA2AgAgACABNgIYCwJAIAVBEE8EQCADIAZBA3I2AgQgAyAGaiIEIAVBAXI2AgQgBCAFaiAFNgIAQeS4wQAoAgAiAAR\n AIABBA3YiAkEDdEHctcEAaiEAQey4wQAoAgAhBwJ/QdS1wQAoAgAiAUEBIAJBH3F0IgJxBEAgACgCCAwBC0HUtcEAIAEg\n AnI2AgAgAAshAiAAIAc2AgggAiAHNgIMIAcgADYCDCAHIAI2AggLQey4wQAgBDYCAEHkuMEAIAU2AgAMAQsgAyAFIAZqI\n gBBA3I2AgQgACADaiIAIAAoAgRBAXI2AgQLIANBCGoLtA8BA38jAEGAC2siAiQAIAJBCGoQSyACQcgBakE4EHIaIAJBAT\n YCgAIgAkGIAmpBOBByGiACQQE2AsACIAJByAJqQTgQchogAkEBNgKAAyACQYgDakE4EHIaIAJBATYCwAMgAkHIA2pBOBB\n yGiACQQE2AoAEIAJBiARqQQEQigEgAkHIBGpBOBByGiACQQE2AoAFIAJBiAVqQTgQchogAkEBNgLABSACQcgFaiABEIUB\n IAJBiAZqQTgQchogAkEBNgLABiACQcgGakE4EHIaIAJBATYCgAcgAkGIB2pBOBByGiACQQE2AsAHIAJByAdqQTgQchogA\n kEBNgKACCACQcgFahBYIQMgAkHICWpB4ITAABBfIAJBiApqIAJByAlqEIsBIAJByAFqIAJBiApqEKUBIAJByAlqQZiFwA\n AQXyACQYgKaiACQcgJahCLASACQYgCaiACQYgKahClASACQcgFahADIAJByAVqQQsQUiACQYgGaiACQcgFahClASACQYg\n GaiACQYgEahB4IAJBiAZqEEQgAkGIBmogAkHIBWoQSCACQYgFaiACQcgBahClASACQYgFaiACQYgGahBIIAJBiAZqIAJB\n iARqEHggAkGIBmoQRCACQYgGaiACQYgCahBIIAJBiAZqEEEgAkGIBmoQRCACQYgDaiACQYgGahClASACQcgDaiACQcgFa\n hClASACQcgDaiACQYgDahBIIAJByAdqIAJBiANqEKUBIAJByAdqEAMgAkHIBmogAkGIBWoQpQEgAkHIBmoQAyACQYgGai\n ACQcgBahClASACQYgGaiACQcgGahBIIAJByAdqIAJBiAZqEHggAkHIB2oQRCACQcgHaiACQYgDahBIIAJByAZqIAJBiAV\n qEEggAkGIBmogAkGIAmoQpQEgAkGIBmogAkHIBmoQSCACQcgHaiACQYgGahB4IAJByAdqEEQgAkGIBmogAkHIB2oQpQEg\n AkGIBmogAkGIBWoQSCACQYgGaiACQYgHahBcIQQgAkGIBWogAkGIBmoQpQEgAkGIBWogAkGIB2oQNCACQYgFaiACQcgHa\n hBIIAJBiANqIAJBiAVqEEggAkHIA2ogAkGIBWoQSCACQcgFaiABEEggAkHIBmogAkGIBWoQpQEgAkHIBmoQAyACQYgFai\n ACQcgGahClASACQYgFaiACQcgFahBIIAJByAVqIAJBiAZqEKUBIAJByAVqQQsQUiACQcgJakHQhcAAEF8gAkGICmogAkH\n ICWoQiwEgAkHIAmogAkGICmoQpQEgAkHIAmogAkGIB2oQSCACQYgDaiACQcgDakEBIARrIgEQeSACQcgGaiACQYgFaiAB\n EHkgAkGIBmogAkHIBWogARB5IAJBiAdqIAJByAJqIAEQeSACQYgKaiACQYgGaiACQYgHahAjIAJByARqIAJBiApqEKUBI\n AJByARqIAJByAZqEEggAkHIBGoQWCEBIAJBiAZqIAJByARqEKUBIAJBiAZqEEEgAkGIBmoQRCACQcgEaiACQYgGaiABIA\n NzEHkgAkGICmpBiIbAABBfIAJBiAhqIAJBiApqEIsBQTghAQNAIAFBoAVGRQRAIAJBiAhqIAJBiANqEEggAkHICWogAUG\n IhsAAahBfIAFBOGohASACQYgKaiACQcgJahCLASACQYgGaiACQYgKahClASACQYgIaiACQYgGahB4IAJBiAhqEEQMAQsL\n IAJByAhqIAJBiANqEIUBIAJByAlqQaiLwAAQXyACQYgKaiACQcgJahCLASACQYgGaiACQYgKahClASACQcgIaiACQYgGa\n hB4IAJByAhqEERBACEBA0AgAUH4A0ZFBEAgAkHICGogAkGIA2oQSCACQcgJaiABQeCLwABqEF8gAUE4aiEBIAJBiApqIA\n JByAlqEIsBIAJBiAZqIAJBiApqEKUBIAJByAhqIAJBiAZqEHggAkHICGoQRAwBCwsgAkGICmpB2I/AABBfIAJBiAlqIAJ\n BiApqEIsBQQAhAQNAIAFByAZGBEACQCACQcgJaiACQYgDahCFASACQcgKakHYlsAAEF8gAkGICmogAkHICmoQiwEgAkGI\n BmogAkGICmoQpQEgAkHICWogAkGIBmoQeCACQcgJahBEQQAhAQNAIAFBkAZGDQEgAkHICWogAkGIA2oQSCACQcgKaiABQ\n ZCXwABqEF8gAUE4aiEBIAJBiApqIAJByApqEIsBIAJBiAZqIAJBiApqEKUBIAJByAlqIAJBiAZqEHggAkHICWoQRAwACw\n ALBSACQYgJaiACQYgDahBIIAJByAlqIAFBkJDAAGoQXyABQThqIQEgAkGICmogAkHICWoQiwEgAkGIBmogAkGICmoQpQE\n gAkGICWogAkGIBmoQeCACQYgJahBEDAELCyACQYgJaiACQcgEahBIIAJBiAZqIAJBiAhqEKUBIAJBiAZqIAJByAlqEEgg\n AkEIaiACQYgGahClASACQYgGaiACQYgJahClASACQYgGaiACQcgIahBIIAJByABqIAJBiAZqEKUBIAJBiAZqIAJByAhqE\n KUBIAJBiAZqIAJByAlqEEggAkGIAWogAkGIBmoQpQEgACACQQhqQcABEGcaIAJBgAtqJAALzQ0CE38IfiMAQYADayIBJA\n AgADQCOCIUIBR+QoCAgBBaBEAgABASCyABQeABakHoABByGiABQcgBaiAAKQMAIhggGEI/hyIZIBggGRAxIAEgASkDyAE\n iFEL//////////wODNwPYASABQdABaikDACIXQgaGIBRCOoiEIRUgF0I6iCEaIABBCGoiCyEFIAAhBkEBIQcDQCAHQQZP\n BEAgAEEYaiEMIABBKGohCyAAQRBqIQcgACkDMCEYQQQhBkEAIQkgAUGgAWohDUEDIQpBAiEIQQchBQJAAkADQCAFQQpLD\n QIgBiAIIAYgCEsbIQ4gBiAKIAYgCksbQQN0QWhqIQ8gAUGYAWogBUEDdCIQIABqQVBqKQMAIhQgFEI/hyAYIBhCP4ciGR\n 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\n OBByGiACQQE2AvgMIAJBgA1qQTgQchogAkG4DWpBATYCACACQYAIakE4EHIaIAJBATYCuAggAkHACGpBOBByGiACQfgIa\n kEBNgIAIAJBgApqIABBgANqIgMQXiACQYAIaiACQYAKahCQASACQYAKaiABQYADaiIFEF4gAkGACGogAkGACmoQDyACQc\n AMahCpASAERQRAIAJBgApqIAMQXiACQcAMaiACQYAKahCQASACQYAKaiABQYACahBeIAJBwAxqIAJBgApqEA8LIAAoAoA\n GQQRHBEAgAkGACmogAEGAAmoQXiACQcAMaiACQYAKahCQASACQYAKaiAFEF4gAkHADGogAkGACmoQDwsgAkGABGogAkHA\n DGogAkGACGoQoQEgAkGABGoQZgsgAkGACGogABCOASACQYAKaiABEI4BIAJBgAhqIABBgAJqIgQQlgEgAkGACGoQrAEgA\n kGACmogAUGAAmoiBRCWASACQYAKahCsASACQYACaiACQYAIahCSASACQYACaiACQYAKahAZIAJBgAhqIAQQkgEgAkGACG\n ogAEGABGoiAxCWASACQYAIahCsASACQYAKaiAFEJIBIAJBgApqIAFBgARqIgUQlgEgAkGACmoQrAEgAkGABmogAkGACGo\n QkgEgAkGABmogAkGACmoQGSACQYAIaiACEJIBIAJBgAhqECsgAkGACmogAkGABGoQkgEgAkGACmoQKyACQYACaiACQYAI\n ahCWASAEIAJBgAJqEJIBIAQgAkGACmoQlgEgAkGABmogAkGACmoQlgEgAkGABGogAkGACGoQlgEgAkGACGogABCSASACQ\n YAIaiADEJYBIAJBgAhqEKwBIAJBgApqIAEQkgEgAkGACmogBRCWASACQYAKahCsASACQYAIaiACQYAKahAZIAJBgARqIA\n JBgAhqEJYBIAJBgAhqIAMQkgEgAkGACGogBRAZIAJBgApqIAJBgAhqEJIBIAJBgApqECsgAyACQYAEahCSASADIAJBgAp\n qEJYBIAJBgAZqIAJBgApqEJYBIAJBgAhqEGYgBCACQYAIahCWAQwDCyAAIAEQBgwECyACQcAMaiABQYAFahBeIAJBgAxq\n IAJBwAxqQcAAEGcaIAJBgAZqIAJBgAxqEKMBCyACQYAGahBmIAJBgAhqIAIQkgEgAkGACGoQKyACQYACaiACQYAIahCWA\n SAFIAJBgAJqEJIBIAJBgARqIAJBgAhqEJIBIAJBgAhqIAAQkgEgAkGACGogAxCWASACQYAIahCsASACQYAKaiABEJIBIA\n JBgApqIAFBgARqEJYBIAJBgApqEKwBIAJBgAhqIAJBgApqEBkgAkGABGogAkGACGoQlgEgAkGACGogAxCSAQJAIARBAkc\n EQCACQcAMaiABQYAFahBeIAJBgAhqIAJBwAxqEKIBDAELIAJBwAxqIAFBgAVqEF4gAkGADGogAkHADGpBwAAQZxogAkGA\n CGogAkGADGoQowELIAJBgAhqEGYgAkGACmogAkGACGoQkgEgAkGACmoQKyADIAJBgARqEJIBIAMgAkGACmoQlgEgAkGAB\n mogAkGACmoQlgEgAkGACGoQZiAFIAJBgAhqEJYBCyACQYAGahCsASACQYAGahBmIAAgAhCSASAAIAJBgAZqEJYBIABBBT\n YCgAYgABCZAQwBCyAAIAEQbAsgAkHADWokAAuaCQIPfwt+IwBBwAJrIgIkACACQeAAakGgp8AAEF8gAEE4EHIhDCACQZg\n BakHwABByGiACQZACakEwEHIaIAwQdCACIAEpAwAiFEL9//P/z///+QF+Qv//////////A4MiETcDiAIgAkHQAGogEUIA\n IAIpA2AiGCAYQj+HIhoQMSAUIAIpA1AiEXwiFiARVK0gAkHYAGopAwAgFEI/h3x8IhRCOocgASkDCCIRQj+HfCARIBRCB\n oYgFkI6iIQiEXwiEiARVK18IRNBASEDAkADQAJAIANBB0YEQCACQZACaiEJIAJB6ABqIQpBByEEIAJB4ABqIQ0gAkGIAm\n ohDkEGIQ8MAQsgA0EBdiIAQQFqIQUgCiAAayEGIAkgAEEDdCIHayEAIAdBCGohCCACQUBrIANBA3QiBCACQeAAamopAwA\n iFiAWQj+HIhQgAikDiAIiESARQj+HEDEgAkHIAGopAwAgEiAVfCIRIBJUrSATIBd8fHwgESACKQNAfCITIBFUrXwhEiAD\n QQFqIQcDQCADIAVNBEAgAkGIAmogBGogE0L9//P/z///+QF+Qv//////////A4MiETcDACACQTBqIBFCACAYIBoQMSACQ\n SBqIBFCACAWIBQQMSACQZgBaiADQQR0aiIAIAJBKGopAwAiGzcDCCAAIAIpAyAiGTcDACACKQMwIhEgE3wiFiARVK0gAk\n E4aikDACASfHwiFEI6hyABIAdBA3RqKQMAIhFCP4d8IBEgFEIGhiAWQjqIhCIRfCISIBFUrXwhEyAVIBl8IhUgGVStIBc\n gG3x8IRcgCUEIaiEJIApBAWohCiAHIQMMAwsgBkEGSw0DIAJBEGogAkHgAGogCGopAwAgAkHgAGogAGopAwB9IhEgEUI/\n hyACQYgCaiAAaikDACACQYgCaiAIaikDAH0iESARQj+HEDEgAikDECIRIBN8IhMgEVStIAJBGGopAwAgEnx8IRIgBUEBa\n iEFIABBeGohACAGQX9qIQYgCEEIaiEIDAALAAsLA0ACQCAEQQ1HBEAgDyAEQQF2IgBrIQUgDiAAQQN0IgtrIRAgDSALay\n EIIBMgF3wgEiAVfCITIBJUrXwhEiAEQQFqIQdBMCEAIAkhBiAKIQMDQCAAIAtGDQIgBUEGTQRAIAIgAyALaikDACAAIAh\n qKQMAfSIRIBFCP4cgACAQaikDACAGIAtqKQMAfSIRIBFCP4cQMSACKQMAIhEgE3wiEyARVK0gAkEIaikDACASfHwhEiAF\n QX9qIQUgBkEIaiEGIANBCGohAyAAQXhqIQAMAQsLIAVBB0HknsAAEDwACyAMIBJC//////////8DgzcDMCACQcACaiQAD\n wsgBEEDdCAMakFIaiATQv//////////A4M3AwAgEkI6hyABIAdBA3RqKQMAIhFCP4d8IBEgEkIGhiATQjqIhCIRfCISIB\n FUrXwhEyAXIARBBHQgAmpBOGoiAEEIaikDAH0gFSAAKQMAIhFUrX0hFyAOQQhqIQ4gDUEIaiENIA9BAWohDyAVIBF9IRU\n gByEEDAALAAsgBkEHQdSewAAQPAAL+QkBBH8jAEGACWsiAiQAIAJBgAhqIAAQXiACIAJBgAhqEF4gAkGACGogAEGAAWoi\n BBBeIAJBgAFqIAJBgAhqEF4gAkGACGogARBeIAIgAkGACGoQDyACQYAIaiABQYABaiIFEF4gAkGAAWogAkGACGoQDyAAK\n AKABiEDAkACQCABKAKABkECRwRAIANBAkYNASACQYAIaiAAQYAFahBeIAJBgAJqIAJBgAhqEF4gAkGACGogAUGABWoQXi\n ACQYACaiACQYAIahAPDAILIANBAkYEQCACQYAIaiAAQYAFahBeIAJBgAdqIAJBgAhqQcAAEGcaIAJBgAZqIAJBgAdqEIU\n BIAJBgAhqIAFBgAVqEF4gAkGAB2ogAkGACGpBwAAQZxogAkGABmogAkGAB2oQSCACQYAIakE4EHIaIAJBATYCuAggAkHA\n CGpBOBByIAJB+AhqQQE2AgAgAkGACGogAkGABmoQpQEQsgEgAkGAAmogAkGACGpBgAEQZxoMAgsgAkGACGogAEGABWoQX\n iACQYACaiACQYAIahBeIAJBgAhqIAFBgAVqEF4gAkGAB2ogAkGACGpBwAAQZxogAkGAAmogAkGAB2oQoAEMAQsgAkGACG\n ogAUGABWoQXiACQYACaiACQYAIahBeIAJBgAhqIABBgAVqEF4gAkGAB2ogAkGACGpBwAAQZxogAkGAAmogAkGAB2oQoAE\n LIAJBgAhqIAAQXiACQYADaiACQYAIahBeIAJBgAhqIAEQXiACQYAEaiACQYAIahBeIAJBgAhqIAQQXiACQYADaiACQYAI\n ahCVASACQYADahCoASACQYAIaiAFEF4gAkGABGogAkGACGoQlQEgAkGABGoQqAEgAkGABWogAkGAA2oQXiACQYAFaiACQ\n YAEahAPIAJBgAZqIAIQXiACQYAGaiACQYABahCVASACQYAGahA6IAJBgAVqIAJBgAZqEJUBIAJBgAhqIAAQXiACQYADai\n ACQYAIahCQASACQYAIaiAAQYAFaiIDEF4gAkGAA2ogAkGACGoQlQEgAkGAA2oQqAEgAkGACGogARBeIAJBgARqIAJBgAh\n qEJABIAJBgAhqIAFBgAVqIgEQXiACQYAEaiACQYAIahCVASACQYAEahCoASACQYAHaiACQYADahBeIAJBgAdqIAJBgARq\n EA8gAkGABmogAhCQASACQYAGaiACQYACahCVASACQYAGahA6IAJBgAdqIAJBgAZqEJUBIAJBgAhqIAQQXiACQYADaiACQ\n YAIahCQASACQYAIaiADEF4gAkGAA2ogAkGACGoQlQEgAkGAA2oQqAEgAkGACGogBRBeIAJBgARqIAJBgAhqEJABIAJBgA\n hqIAEQXiACQYAEaiACQYAIahCVASACQYAEahCoASACQYAIaiACQYADahBeIAJBgAhqIAJBgARqEA8gAkGABmogAkGAAWo\n QkAEgAkGABmogAkGAAmoQlQEgAkGABmoQOiACQYAIaiACQYAGahCVASACQYABahBVIAIgAkGAAWoQlQEgACACIAJBgAVq\n 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\n GogAkGABWoQfSACQYAEahCoASACQYAFaiAAEJABIAJBgAVqIAQQlQEgAkGABWoQqAEgAkGABmogARBeIAJBgAZqIAYQlQ\n EgAkGABmoQqAEgAkGABWogAkGABmoQDyACQYAGaiACEJABIAJBgAZqIAJBgAJqEJUBIAJBgAZqIAJBgAVqELUBIAJBgAZ\n qEKgBIAJBgAVqIAIQkAEgAkGABWogAhCVASACIAJBgAVqEJUBIAIQqAEgAkGAAmpBDBCfASACQYACahBVIAJBgAJqEKgB\n IAJBgAdqIAJBgAFqEF4gAkGAB2ogAkGAAmoQlQEgAkGAB2oQqAEgAkGAAWogAkGAAmoQfSACQYABahCoASACQYAGakEME\n J8BIAJBgAZqEFUgAkGABmoQqAEgAkGABWogAkGABmoQkAEgAkGABWogAkGABGoQDyACQYACaiACQYADahCQASACQYACai\n ACQYABahAPIAJBgAVqIAJBgAJqELUBIAJBgAZqIAIQDyACQYABaiACQYAHahAPIAJBgAZqIAJBgAFqEJUBIAIgAkGAA2o\n QDyACQYAHaiACQYAEahAPIAJBgAdqIAIQlQEgACACQYAFahCQASAAEKgBIAMgAkGABmoQkAEgAxCoASAEIAJBgAdqEJAB\n IAQQqAEgAkGACGokAAv2BQEFfyMAQYAEayICJAAgAiAAEIUBIAIgARBIIAJBQGsgAEFAayIDEIUBIAJBQGsgAUFAayIFE\n EggAkGAAWogAEGAAWoiBBCFASACQYABaiABQYABaiIGEEggAkHAAWogABCFASACQcABaiADEHggAkHAAWoQRCACQYACai\n ABEIUBIAJBgAJqIAUQeCACQYACahBEIAJBwAFqIAJBgAJqEEggAkGAAmogAhClASACQYACaiACQUBrEHggAkHAAWogAkG\n AAmoQgAEgAkHAAWoQRCACQYACaiADEKUBIAJBgAJqIAQQeCACQYACahBEIAJBwAJqIAUQhQEgAkHAAmogBhB4IAJBwAJq\n EEQgAkGAAmogAkHAAmoQSCACQcACaiACQUBrEKUBIAJBwAJqIAJBgAFqEHggAkGAAmogAkHAAmoQgAEgAkGAAmoQRCACQ\n cACaiAAEKUBIAJBwAJqIAQQeCACQcACahBEIAJBgANqIAEQhQEgAkGAA2ogBhB4IAJBgANqEEQgAkHAAmogAkGAA2oQSC\n ACQYADaiACEKUBIAJBgANqIAJBgAFqEHggAkGAA2ogAkHAAmoQswEgAkGAA2oQRCACQcACaiACEKUBIAJBwAJqIAIQeCA\n CIAJBwAJqEHggAhBEIAJBgAFqQQwQUiACQcADaiACQUBrEIUBIAJBwANqIAJBgAFqEHggAkHAA2oQRCACQUBrIAJBgAFq\n EIABIAJBQGsQRCACQYADakEMEFIgAkHAAmogAkGAA2oQpQEgAkHAAmogAkGAAmoQSCACQYABaiACQcABahClASACQYABa\n iACQUBrEEggAkHAAmogAkGAAWoQswEgAkGAA2ogAhBIIAJBQGsgAkHAA2oQSCACQYADaiACQUBrEHggAiACQcABahBIIA\n JBwANqIAJBgAJqEEggAkHAA2ogAhB4IAAgAkHAAmoQpQEgABBEIAMgAkGAA2oQpQEgAxBEIAQgAkHAA2oQpQEgBBBEIAJ\n BgARqJAALxQUBBH8jAEHwEmsiACQAIAAQOEF/IQEgABCIAUUEQCAAQYADakE4EHIaIABBuANqQTgQchogAEG4A2ogAEGA\n A2oQVCAAQfAKakG4gMAAEF8gAEHwDWpB8IDAABBfIABB8ANqIABB8ApqIABB8A1qEEkgAEHwBGpBOBByGiAAQQE2AqgFI\n ABBsAVqQTgQchogAEHoBWpBATYCACAAQfAFakE4EHIaIABBATYCqAYgAEGwBmpBOBByGiAAQegGakEBNgIAIABB8AZqQT\n gQchogAEEBNgKoByAAQbAHakE4EHIaIABB6AdqQQE2AgBBf2ohAyAAQfAHahAqIABB8AdqIAAQfiAAQfAKahAqIABB8Ap\n qIABB8AdqEH4gAEHwDWoQKiAAQfANaiAAQfAHahB+IABB8A1qEJwBAkACQAJAA0AgAiEBIANBAkkNAyAAQfAKaiAAQfAE\n aiAAQfAFaiAAQfAGahAlIAFBxABNBEAgAEHwEGogAEHwBGogAEHwBWogAEHwBmoQRiABQQh0QdCrwABqIABB8BBqEJIBI\n AFBAWohAgJAAkAgAEG4A2ogA0F/aiIDEFcgAEGAA2ogAxBXa0EBag4DAQMAAwsgAEHwCmogAEHwB2ogAEHwBGogAEHwBW\n ogAEHwBmoQHiABQcMASw0DIABB8BBqIABB8ARqIABB8AVqIABB8AZqEEYgAkEIdEHQq8AAaiAAQfAQahCSASABQQJqIQI\n MAgsgAEHwCmogAEHwDWogAEHwBGogAEHwBWogAEHwBmoQHiABQcMASw0DIABB8BBqIABB8ARqIABB8AVqIABB8AZqEEYg\n AkEIdEHQq8AAaiAAQfAQahCSASABQQJqIQIMAQsLIAFBxQBBvIHAABA8AAtBxQBBxQBBzIHAABA8AAtBxQBBxQBB3IHAA\n BA8AAtBACEBCyAAQfASaiQAIAEL8gQBBH8jAEGADGsiAiQAIAIgABCOASACQYACahAvIAJBgARqIABBgAJqIgMQjgEgAk\n GABmoQLyACQYAIaiAAEI4BIAJBgApqIAEQjgEgAiABEBkgAkGABGogAUGAAmoiBBAZIAJBgAhqIAMQlgEgAkGACmogBBC\n WASACQYAIahCsASACQYAKahCsASACQYACaiACQYAIahCSASACQYACaiACQYAKahAZIAJBgAhqIAMQkgEgAkGACGogAEGA\n BGoiBRCWASACQYAKaiAEEJIBIAJBgApqIAFBgARqIgQQlgEgAkGACGoQrAEgAkGACmoQrAEgAkGABmogAkGACGoQkgEgA\n kGABmogAkGACmoQGSACQYAIaiACEJIBIAJBgAhqECsgAkGACmogAkGABGoQkgEgAkGACmoQKyACQYACaiACQYAIahCWAS\n ADIAJBgAJqEJIBIAMgAkGACmoQlgEgAkGABmogAkGACmoQlgEgAkGABGogAkGACGoQlgEgAkGACGogABCSASACQYAIaiA\n FEJYBIAJBgAhqEKwBIAJBgApqIAEQkgEgAkGACmogBBCWASACQYAKahCsASACQYAIaiACQYAKahAZIAJBgARqIAJBgAhq\n EJYBIAJBgAhqIAUQkgEgAkGACGogBBAZIAJBgApqIAJBgAhqEJIBIAJBgApqECsgBSACQYAEahCSASAFIAJBgApqEJYBI\n AJBgAZqIAJBgApqEJYBIAJBgAhqEGYgAyACQYAIahCWASACQYAGahCsASACQYAGahBmIAAgAhCSASAAIAJBgAZqEJYBIA\n BBBTYCgAYgABCZASACQYAMaiQAC68EAQV/IwBBkAZrIgIkACAAQUBrIQQCQCABQfgAaigCACABKAI4aqwgAEH4AGooAgA\n iAyAAKAI4IgVqrH5CgICAEFMNACAFQQJOBH8gABASIAAoAngFIAMLQQJIDQAgBBASCyACQaCnwAAQX0EAIQMgAkE4akHw\n ABByGiABQUBrIQUDQCADQThGBEAgAkHwAGohBkEAIQMDQCADQThGRQRAIAMgBmogAiADaikDADcDACADQQhqIQMMAQsLI\n AJBqAFqIAAQXyACQeABaiABEF8gAkGYAmogACABEAggAkGIA2ogBCAFEAggAkGoAWogBBBhIAJBqAFqEEQgAkHgAWogBR\n BhIAJB4AFqEEQgAkH4A2ogAkGoAWogAkHgAWoQCEEAIQMgAkHoBGpB8AAQchoDQCADQfAARkUEQCACQegEaiADaiACQZg\n CaiADaikDADcDACADQQhqIQMMAQsLIAJB6ARqIAJBiANqEGVBACEDA0AgA0HwAEZFBEAgAkGIA2ogA2oiASACQThqIANq\n KQMAIAEpAwB9NwMAIANBCGohAwwBCwsgAkGYAmogAkGIA2oQZSACQZgCahBFIAJB+ANqIAJB6ARqEGQgAkH4A2oQRSACQ\n dgFaiACQZgCahAFIAAgAkHYBWoQayAAQQM2AjggAkHYBWogAkH4A2oQBSAEIAJB2AVqEGsgAEECNgJ4IAJBkAZqJAAFIA\n JBOGogA2pCADcDACADQQhqIQMMAQsLC5QEAQF/IwBB0CJrIgMkACADQcAWakG4gMAAEF8gA0HIHGpB8IDAABBfIANBCGo\n gA0HAFmogA0HIHGoQSSADQYgBakE4EHIaIANBwAFqQTgQchogA0H4AWoQKgJAIAIQhAFFBEAgA0H4BGoQKiADQfgEaiAB\n EH4gA0H4BGoQSiADQfgHahBLIANB+AdqIAIQfyADQfgHahBHIANByBxqIANB+AdqEIUBIANBuAlqIANByBxqEIUBIANBy\n BxqIANBuAhqEIUBIANB+AlqIANByBxqEIUBIANBuApqECogA0G4DWoQYCADQbgKaiADQfgEahB+IANBwBNqECogA0HAE2\n ogA0H4BGoQfiADQcATahCcASADQcABaiADQYgBahBUQX9qIQIDQCACQQFNBEAgA0G4DWoQkwEgACADQbgNakGIBhBnGgw\n DBSADQbgNahAbIANBwBZqIANBuApqIANBuAlqIANB+AlqEBcCQAJAAkAgA0HAAWogAkF/aiICEFcgA0GIAWogAhBXa0EB\n ag4DAQIAAgsgA0HIHGogA0G4CmogA0H4BGogA0G4CWogA0H4CWoQFiADQcAWaiADQcgcahAGDAELIANByBxqIANBuApqI\n ANBwBNqIANBuAlqIANB+AlqEBYgA0HAFmogA0HIHGoQBgsgA0G4DWogA0HAFmoQBAwBCwALAAsgABBgCyADQdAiaiQAC8\n MDARV/A0AgAUHAAUYEQAJAIABBKGohCyAAQRRqKAIAIgwhCCAAQRBqKAIAIg0hAyAAQQxqKAIAIg4hAiAAKAIIIg8hASA\n AQRhqKAIAIhAhCiAAQRxqKAIAIhEhBCAAQSBqKAIAIhIhByAAQSRqKAIAIhMhBgNAIAchCSAEIQcgCiEEIAVBgAJGDQEg\n AiADcSEUIAIgA3MhFSAFIAtqKAIAIAVB9J7AAGooAgAgBEEadyAEQRV3cyAEQQd3cyAGaiAJIARBf3NxIAQgB3FyampqI\n gYgCGohCiAFQQRqIQUgAyEIIAIhAyABIQIgAUEedyABQRN3cyABQQp3cyAUIAEgFXFzaiAGaiEBIAkhBgwACwALBSAAIA\n FqIgNB6ABqIANBzABqKAIAIANBKGooAgAgA0EsaigCACICQRl3IAJBDndzIAJBA3ZzIANB4ABqKAIAIgJBD3cgAkENd3M\n gAkEKdnNqamo2AgAgAUEEaiEBDAELCyAAIAYgE2o2AiQgACAJIBJqNgIgIAAgByARajYCHCAAIAQgEGo2AhggACAIIAxq\n NgIUIAAgAyANajYCECAAIAIgDmo2AgwgACABIA9qNgIIC9YDAgZ/An4jAEHwAGsiASQAIAFBoKfAABBfIAFBOGogARBfI\n AAQRAJAAkACQCABAn8gACgCOCICQRBMBEAgAkF/ahA5DAELIAEpAzAiCEIBfCIHIAhUDQEgACkDMCIIQoCAgICAgICAgH\n 9RQQAgB0J/URsNAiABQThqIAggB3+nECghByABIAEpA2ggB0I6hnw3A2ggACABQThqEGIgABBEQQILIgMQLSAAQQhqIQQ\n DQCADRQ0DIAEgASkDCEI5hkKAgICAgICAgAKDIAEpAwBCAYeEIgc3AwAgASAAKQMAIAd9IgdC//////////8DgzcDOEEA\n IQIDQCAHQjqHIQcgAkEoRkUEQCABIAJqIgVBCGoiBiAFQRBqKQMAQjmGQoCAgICAgICAAoMgBikDAEIBh4QiCDcDACABI\n AJqQUBrIAIgBGopAwAgCH0gB3wiB0L//////////wODNwMAIAJBCGohAgwBCwsgASABKQMwQgGHIgg3AzAgASAAKQMwIA\n h9IAd8Igc3A2ggACABQThqIAdCP4enQQFqEE8gA0F/aiEDDAALAAtBoKLAAEEZQbyiwAAQWwALQdCiwABBH0G8osAAEFs\n ACyAAQQE2AjggAUHwAGokAAuhAwEBfyMAQZADayIGJAAgBkEIakHAABByGiAGQcgAakGoAhByGiAGQcgAahBDA0AgAQRA\n IAZByABqQQAQPiABQX9qIQEMAQUCQCACBEAgBkHIAGogAiADEHoLIAQEQCAGQcgAaiAEIAUQegsgBkGIA2pCADcDACAGQ\n YADakIANwMAIAZB+AJqQgA3AwAgBkIANwPwAiAGKAJIIQEgBigCTCECIAZByABqQYABED4DQCAGKAJIQf8DcUHAA0ZFBE\n AgBkHIAGpBABA+DAELCyAGQawBaiABNgIAIAZBqAFqIAI2AgAgBkHIAGoQEUEAIQJBACEBA0AgAUEgRkUEQCAGQfACaiA\n BaiABQXxxIAZqQdAAaigCACACQX9zQRhxdjoAACACQQhqIQIgAUEBaiEBDAELCyAGQcgAahBDQQAhAQNAIAFBIEZFBEAg\n BkEIaiABaiAGQfACaiABai0AADoAACABQQFqIQEMAQsLQQAhAQNAIAFBIEYNASAAIAFqIAZBCGogAWotAAA6AAAgAUEBa\n iEBDAALAAsLCyAGQZADaiQAC6EDAQN/IwBBgAZrIgEkACABIABBgAFqIgMQXiABQYABaiADEF4gAUGAAWoQMiABQYACai\n ABEF4gAUGAAmogAEGAAmoiAhAPIAFBgANqIAIQXiABQYADahAyIAIgAUGAAWoQkAEgAiABQYABahCVASACEKgBIAIQpwE\n gAhCnASACEKgBIAFBgANqQQwQnwEgAUGAA2oQVSABQYADahCoASABQYAEaiABQYADahBeIAFBgARqIAIQDyABQYAFaiAB\n QYABahBeIAFBgAVqIAFBgANqEJUBIAFBgAVqEKgBIAIgAUGAAmoQDyABQYACaiABQYADahCQASABQYACaiABQYADahCVA\n SABQYADaiABQYACahCVASABQYADahCoASABQYABaiABQYADahB9IAFBgAFqEKgBIAFBgAVqIAFBgAFqEA8gAUGABWogAU\n GABGoQlQEgAUGAAmogABCQASABQYACaiABEA8gACABQYABahCQASAAEKgBIAAgAUGAAmoQDyAAEKcBIAAQqAEgAyABQYA\n FahCQASADEKgBIAFBgAZqJAALhQMBBH8CQAJAIAFBgAJPBEAgAEEYaigCACEEAkACQCAAIAAoAgwiAkYEQCAAQRRBECAA\n QRRqIgIoAgAiAxtqKAIAIgENAUEAIQIMAgsgACgCCCIBIAI2AgwgAiABNgIIDAELIAIgAEEQaiADGyEDA0AgAyEFIAEiA\n kEUaiIDKAIAIgFFBEAgAkEQaiEDIAIoAhAhAQsgAQ0ACyAFQQA2AgALIARFDQIgACAAQRxqKAIAQQJ0QeS3wQBqIgEoAg\n BHBEAgBEEQQRQgBCgCECAARhtqIAI2AgAgAkUNAwwCCyABIAI2AgAgAg0BQdi1wQBB2LXBACgCAEF+IAAoAhx3cTYCAA8\n LIABBDGooAgAiAiAAQQhqKAIAIgBHBEAgACACNgIMIAIgADYCCA8LQdS1wQBB1LXBACgCAEF+IAFBA3Z3cTYCAAwBCyAC\n IAQ2AhggACgCECIBBEAgAiABNgIQIAEgAjYCGAsgAEEUaigCACIARQ0AIAJBFGogADYCACAAIAI2AhgLC7MCAQF/IwBBg\n AtrIgUkACAFEC8gBUGAAmoQLyAFQYAEahAvIAVBgAZqQTgQchogBUEBNgK4BiAFQcAGakE4EHIaIAVB+AZqQQE2AgAgBU\n GAB2pBOBByGiAFQQE2ArgHIAVBwAdqQTgQchogBUH4B2pBATYCACAFQYAIakE4EHIaIAVBATYCuAggBUHACGpBOBByGiA\n FQfgIakEBNgIAIAEgAiAFQYAGaiAFQYAHaiAFQYAIahAeIAVBgAhqIAMQoAEgBUGABmogBBCgASAFQYAJaiAFQYAGaiAF\n QYAHahCRASAFIAVBgAlqEJIBIAVBgAlqIAVBgAhqEJsBIAVBgARqIAVBgAlqEJIBIAVBgARqEGYgACAFIAVBgAJqIAVBg\n ARqEHYgAEEDNgKABiAFQYALaiQAC7ECAQF/IwBBgAtrIgQkACAEEC8gBEGAAmoQLyAEQYAEahAvIARBgAZqQTgQchogBE\n EBNgK4BiAEQcAGakE4EHIaIARB+AZqQQE2AgAgBEGAB2pBOBByGiAEQQE2ArgHIARBwAdqQTgQchogBEH4B2pBATYCACA\n EQYAIakE4EHIaIARBATYCuAggBEHACGpBOBByGiAEQfgIakEBNgIAIAEgBEGABmogBEGAB2ogBEGACGoQJSAEQYAIaiAC\n EKABIARBgAZqIAMQoAEgBEGACWogBEGABmogBEGAB2oQkQEgBCAEQYAJahCSASAEQYAJaiAEQYAIahCbASAEQYAEaiAEQ\n YAJahCSASAEQYAEahBmIAAgBCAEQYACaiAEQYAEahB2IABBAzYCgAYgBEGAC2okAAvJAgEDfyMAQcACayIBJAAgASAAQU\n BrIgMQhQEgARADIAFBQGsgAxCFASABQUBrIABBgAFqIgIQSCABQYABaiACEIUBIAFBgAFqEAMgAiABEKUBIAIgARB4IAI\n QRCACEE4gAhBOIAIQRCABQYABakEMEFIgAUHAAWogAUGAAWoQhQEgAUHAAWogAhBIIAFBgAJqIAEQhQEgAUGAAmogAUGA\n AWoQeCABQYACahBEIAIgAUFAaxBIIAFBQGsgAUGAAWoQpQEgAUFAayABQYABahB4IAFBgAFqIAFBQGsQeCABIAFBgAFqE\n IABIAEQRCABQYACaiABEEggAUGAAmogAUHAAWoQeCABQUBrIAAQpQEgAUFAayADEEggACABEKUBIAAQRCAAIAFBQGsQSC\n AAEE4gABBEIAMgAUGAAmoQpQEgAxBEIAFBwAJqJAALrQIBA38jAEGABGsiAiQAIAIgABBeIAJBgAFqIABBgAFqIgMQXiA\n CQYACakE4EHIaIAJBATYCuAIgAkHAAmpBOBByGiACQfgCakEBNgIAIAJBgANqIAMQXiACIAEQDyACQYABaiABQYABaiIE\n EA8gAkGAAmogBBCQASACQYACaiABEJUBIAJBgANqIAAQlQEgAkGAAmoQqAEgAkGAA2oQqAEgAkGAA2ogAkGAAmoQDyACQ\n YACaiACEJABIAJBgAJqEDogAkGAA2ogAkGAAmoQlQEgAkGAA2oQqAEgAkGAAmogAkGAAWoQkAEgAkGAAmoQOiADIAJBgA\n NqEJABIAMgAkGAAmoQlQEgAkGAAWoQVSAAIAJBgAFqEJABIAAgAhCVASAAEKwBIAJBgARqJAALvQIBA38jAEGACGsiASQ\n AIAEgABCOASABQYACaiAAQYAEaiICEI4BIAFBgARqIABBgAJqIgMQjgEgAUGABmoQLyAAECIgAUGABmogABCSASABQYAG\n aiAAEJYBIAAgAUGABmoQlgEgABCsASABELYBIAEQrwEgACABEJYBIAFBgAJqECIgAUGAAmoQZiABQYAGaiABQYACahCSA\n SABQYAGaiABQYACahCWASABQYACaiABQYAGahCWASABQYACahCsASABQYAEahAiIAFBgAZqIAFBgARqEJIBIAFBgAZqIA\n FBgARqEJYBIAFBgARqIAFBgAZqEJYBIAFBgARqEKwBIAMQrgEgAxCvASACELYBIAIQrwEgAyABQYACahCWASACIAFBgAR\n qEJYBIABBBTYCgAYgABCaASABQYAIaiQAC7ICAQN/IwBBgAhrIgEkACAAKAKABkEBRwRAIAEgABCOASABQYACaiAAQYAC\n aiIDEI4BIAFBgARqIABBgARqIgIQjgEgAUGABmogABCOASABECIgAUGAAmogAhAZIAFBgAJqEK8BIAFBgAJqEKwBIAFBg\n ARqECIgAUGABmogAxAZIAFBgAZqEK8BIAIgABCWASACIAMQlgEgAhCsASACECIgACABEJIBIAEgAUGAAmoQlgEgARCsAS\n ABIAFBgARqEJYBIAEgAUGABmoQlgEgARCsASABECsgAUGAAmoQZiABQYAEahBmIAAgAUGAAmoQlgEgAyABQYAEahCSASA\n DIAFBgAZqEJYBIAIgARCWASAAQQRBBSAAKAKABkF+cUECRhs2AoAGIAAQmQELIAFBgAhqJAALigIBAn8jAEHgAWsiAiQA\n IAAQRCACQQhqQTAQchogAkIBNwMAIAJBOGogABBfIAJB8ABqIAEQXyACQagBakE4EHIaIAAQdANAIAJBOGogAkHwAGoQN\n UF/TARAA0ACQCADQQBMDQAgAkHwAGpBARA7IAJBARA7IAJBqAFqIAJBOGoQayACQagBaiACQfAAahBiIAJBqAFqEEQgAk\n E4aiACQagBaiACKQPYAUI/h6dBAWoiARBPIAJBqAFqIAAQayACQagBaiACEGEgAkGoAWoQRCAAIAJBqAFqIAEQTyADQX9\n qIQMMAQsLBSACQQEQLSACQfAAakEBEC0gA0EBaiEDDAELCyACQeABaiQAC54CAQF/IwBBgA1rIgMkACADIAEQaiADEJkB\n IANBiAZqIAIQXyADQYgGahBEIANBwAZqIANBiAZqEF8gA0HABmpBAxAoGiADQcAGahBEIANB+AZqIAMQagJAIANBwAZqE\n FpFBEAgA0HABmoQKUF/aiECA0AgAkEBTQRAIANB+AZqEJoBDAMLIANB+AZqEBoCQAJAIANBwAZqIAJBf2oiAhBXIANBiA\n ZqIAIQV2tBAWoOAwECAAILIANB+AZqIAMQDgwBCyADEJMBIANB+AZqIAMQDiADEJMBDAALAAsgA0H4BmoQsAEgA0H4B2o\n QqQEgA0H4CGoQrQEgA0H4CmoQrQEgA0EBNgL4DAsgACADQfgGakGIBhBnGiADQYANaiQAC5ACAQJ/IwBBgAJrIgUkACAF\n QYABaiAAEF4gAiAFQYABahCQASAFQYABaiAAQYABahBeIAQgBUGAAWoQkAEgBUGAAWogAEGAAmoiBhBeIAUgBUGAAWoQX\n iAFQYABaiAGEF4gAyAFQYABahCQASAFQYABaiABQYABaiIGEF4gBSAFQYABahAPIAVBgAFqIAEQXiADIAVBgAFqEA8gAi\n ADEH0gAhCoASAEIAUQfSAEEKgBIAUgAhCQASACEFUgAhCoASAFQYABaiAGEF4gBSAFQYABahAPIAMgBBCQASAFQYABaiA\n BEF4gAyAFQYABahAPIAMgBRB9IAMQqAEgBBA6IAQQqAEgACABEAsgBUGAAmokAAvkAQECfyMAQcABayIDJAAgAxBLIAAg\n ASACQR91IgQgAnMgBEF/c2pBAm0iAkF/akEfdhBtIAAgAUHAAWogAkEBc0F/akEfdhBtIAAgAUGAA2ogAkECc0F/akEfd\n hBtIAAgAUHABGogAkEDc0F/akEfdhBtIAAgAUGABmogAkEEc0F/akEfdhBtIAAgAUHAB2ogAkEFc0F/akEfdhBtIAAgAU\n GACWogAkEGc0F/akEfdhBtIAAgAUHACmogAkEHc0F/akEfdhBtIAMgABB/IAMQpgEgACADIARBAXEQbSADQcABaiQAC+Q\n BAQJ/IwBBgANrIgMkACADECogACABIAJBH3UiBCACcyAEQX9zakECbSICQX9qQR92EG8gACABQYADaiACQQFzQX9qQR92\n EG8gACABQYAGaiACQQJzQX9qQR92EG8gACABQYAJaiACQQNzQX9qQR92EG8gACABQYAMaiACQQRzQX9qQR92EG8gACABQ\n YAPaiACQQVzQX9qQR92EG8gACABQYASaiACQQZzQX9qQR92EG8gACABQYAVaiACQQdzQX9qQR92EG8gAyAAEH4gAxCcAS\n AAIAMgBEEBcRBvIANBgANqJAALvAEBAn8jAEGwAWsiAiQAIAJBMBByIQIDQCADQTBGBEACQCABQTBqIQEgAkEwaiACEHV\n BACEDA0AgA0EwRg0BIAIgA2ogASADai0AADoAACADQQFqIQMMAAsACwUgAiADaiABIANqLQAAOgAAIANBAWohAwwBCwsg\n AkHwAGogAhB1IABBOBByIgBBATYCOCAAQUBrQTgQciAAQfgAakEBNgIAIAAgAkHwAGoQpQEgAkEwahClASACQbABaiQAC\n 9QBAQJ/IwBBgANrIgEkACABIAAQXiABQYABaiAAQYABaiICEF4gAUGAAmogABBeIAFBgAJqIAIQDyABIAIQlQEgAUGAAW\n oQVSABQYABaiAAEJUBIAEQqAEgAUGAAWoQqAEgACABEJABIAAgAUGAAWoQDyABQYABaiABQYACahCQASABQYABahBVIAF\n BgAFqIAFBgAJqEJUBIAFBgAFqEKgBIAFBgAFqEDogACABQYABahCVASABQYACahCnASACIAFBgAJqEJABIAAQrAEgAUGA\n A2okAAvEAQEBfyMAQYADayIDJAAgA0EIaiABEIUBAkAgAkUEQCADQQhqEAcMAQsgA0EIaiACEKUBCyADQcgAakHYo8AAE\n F8gA0GAAWogA0HIAGoQiwEgA0HAAWogA0EIahCFASADQcABahADIANBwAFqIAEQSCAAIAEQhQEgACADQQhqEEggA0GAAm\n ogA0HAAWoQhQEgABBYIQEgA0HAAmogABCFASADQcACahBBIANBwAJqEEQgACADQcACaiABEHkgA0GAA2okAAufAQEBfyM\n AQfAAayICJAAgAiABEF9BACEBIAJBOGpBOBByGiAAEEQCQCAAIAIQNUEASA0AA0AgAkEBEC0gAUEBaiEBIAAgAhA1QX9K\n DQALA0AgAUEATA0BIAJBARA7IAJBOGogABBrIAJBOGogAhBiIAJBOGoQRCAAIAJBOGogAikDaEI/h6dBAWoQTyABQX9qI\n QEMAAsACyACQfAAaiQAC7IBAQF/IwBBgAJrIgQkACAEQYABaiAAEF4gAyAEQYABahCQASAEQYABaiAAQYABahBeIAQgBE\n GAAWoQXiAEQYABaiAAQYACahBeIAIgBEGAAWoQkAEgASAEEJABIAEgAhAPIAMQMiAEEDIgAhAyIAEQpwEgARA6IAEQqAE\n gARBVIAEQqAEgAkEMEJ8BIANBAxCfASACEFUgAhCoASACIAQQfSACEKgBIAAQFCAEQYACaiQAC58BAQJ/IwBBgAJrIgIk\n ACAAIAEQXiAAEDIgAkGIAWpB2KTAABBfIAJBCGpBOBByGiACQQE2AkAgAkHIAGpBOBByIAJBgAFqQQE2AgAgAkHAAWogA\n kGIAWoQiwEgAkEIaiACQcABahClARCyASACQQhqEKgBIAJBCGoQVSACQQhqEKgBIAAgARAPIAAgAkEIahCVASAAEKsBIA\n JBgAJqJAALowEBAX8jAEEwayIGJAAgBkEQaiAAIAEQsQEgBiAGKAIUIgA2AhwgBiAGKAIQIgE2AhggBkEIaiACIAMQsQE\n gBiAGKAIMIgI2AiQgBiAGKAIIIgM2AiAgBiAEIAUQsQEgBiAGKAIEIgQ2AiwgBiAGKAIAIgU2AiggASAAIAMgAiAFIAQQ\n ACAGQShqEKQBIAZBIGoQpAEgBkEYahCkASAGQTBqJAALiAECA38DfiMAQRBrIgIkAAN+IANBOEYEfiACQRBqJAAgBgUgA\n iAAIANqIgQpAwAiBSAFQj+HIAGsIgUgBUI/hxAxIAQgAikDACIHIAZ8IgVC//////////8DgzcDACAFIAdUrSACQQhqKQ\n MAIAZCP4d8fEIGhiAFQjqIhCEGIANBCGohAwwBCwsLhAECA38BfiMAQUBqIgEkACABQQhqIAAQXyABQQhqEEQgAUE4aiE\n CQQYhA0HcAiEAAn8DQEEAIANBAEgNARogAikDACIEUARAIAJBeGohAiAAQUZqIQAgA0F/aiEDDAELCwN/IARQBH8gAAUg\n AEEBaiEAIARCAn8hBAwBCwsLIAFBQGskAAuHAQEBfyMAQcABayIBJAAgAEE4EHIiAEEBNgI4IABBQGtBOBByGiAAQfgAa\n kEBNgIAIAEQUCABQYgBakE4EHIaIABBgAFqIAFBgAEQZxogAEGAAmpBOBByGiAAQbgCakEBNgIAIABBvAJqIAFBhAFqQT\n wQZxogAEH4AmpBATYCACABQcABaiQAC48BAQJ/IwBBgAJrIgEkACAAEKwBIAEgABBeIAFBgAFqQTgQchogAUEBNgK4ASA\n BQcABakE4EHIaIAFB+AFqQQE2AgAgASAAQYABaiICEJUBIAEQOiABQYABaiABEJABIAFBgAFqIAIQlQEgAiABEJABIAIg\n ABCVASAAIAFBgAFqEJABIAAQrAEgAUGAAmokAAt9AgF/An4jAEGAAWsiASQAIAFBCGogABCFASABQQhqEBIgAUHIAGogA\n UEIahCDAUEIIQADQCAAQThGRQRAIAFByABqIABqKQMAIAKEIQIgAEEIaiEADAELCyABKQNIIQMgAUGAAWokACACQn98IA\n NCAYVCf3yDQjqIp0EBcQuJAQIBfwJ+IAAgACkDMCABQT9xrSIDhiAAKQMoQTogAWtBP3GtIgSHhDcDMCAAQShqIQFBBiE\n CA0AgAkEBTQRAIAAgACkDACADhkL//////////wODNwMABSABIAEpAwAgA4ZC//////////8DgyABQXhqIgEpAwAgBIeE\n NwMAIAJBf2ohAgwBCwsLiQECAX8CfiAAIAApA2BBOiABQTpwIgFrrSIEhyAAKQNoIAGtIgOGhDcDaCAAQeAAaiEBQQ0hA\n gNAIAJBAU0EQCAAIAApAwAgA4ZC//////////8DgzcDAAUgASABKQMAIAOGQv//////////A4MgAUF4aiIBKQMAIASHhD\n cDACACQX9qIQIMAQsLC3EBAX8jAEFAaiIBJAAgAEE4EHIiAEEBNgI4IABBQGtBOBByGiAAQfgAakEBNgIAIAFBCGpBOBB\n yGiAAQYABakE4EHIaIABBuAFqQQE2AgAgAEG8AWogAUEEakE8EGcaIABB+AFqQQE2AgAgAUFAayQAC4EBAgF/AX4gAEHw\n ABByIQADQCACQThGBEACQCAAIAEpAzAiA0I6hzcDOCAAIANC//////////8DgzcDMCAAQUBrIQBBACECA0AgAkEwRg0BI\n AAgAmpCADcDACACQQhqIQIMAAsACwUgACACaiABIAJqKQMANwMAIAJBCGohAgwBCwsLdQECfiAAIANCIIgiBSABQiCIIg\n Z+IAIgA358IAEgBH58IANC/////w+DIgIgAUL/////D4MiAX4iA0IgiCACIAZ+fCICQiCIfCABIAV+IAJC/////w+DfCI\n BQiCIfDcDCCAAIANC/////w+DIAFCIIaENwMAC3YBAn8jAEHAAWsiASQAIAEgABCFASABQUBrIAAQhQEgAUGAAWogAEFA\n ayICEIUBIAEgAhB4IAFBQGsgABB4IAFBQGsQRCACIAFBQGsQSCABQYABahBBIAAgAUGAAWoQeCABEEQgABBEIAAgARBII\n AFBwAFqJAALkwEBAn9B0LXBAEHQtcEAKAIAQQFqNgIAAkACQEGYucEAKAIAQQFGBEBBnLnBAEGcucEAKAIAQQFqIgA2Ag\n AgAEECSw0CQaC5wQAoAgAiAUF/Sg0BDAILQZi5wQBCgYCAgBA3AwBBoLnBACgCACIAQQBIDQFBoLnBACAANgIAAAtBoLn\n BACABNgIAIABBAUsNAAALAAtnAQJ/IwBBQGoiAiQAIAAQRCACIAAQhQECQCABRQRAIAAQBwwBCyAAIAEQpQELQQAhAQNA\n IAFBAUsgA3JFBEAgABADIAFBAEchAyABIAFFaiEBDAELCyAAIAIQSCAAEBIgAkFAayQAC18CAX8EfkIBIQNBMCECA38gA\n kF4RgR/IARCAYYgA3ynQX9qBSABIAJqKQMAIgUgACACaikDACIGfUI6hyADgyAEhCEEIAJBeGohAiAFIAaFQn98QjqHIA\n ODIQMMAQsLC2ACAX8EfkIBIQNB6AAhAgN/IAJBeEYEfyAEQgGGIAN8p0F/agUgASACaikDACIFIAAgAmopAwAiBn1COoc\n gA4MgBIQhBCACQXhqIQIgBSAGhUJ/fEI6hyADgyEDDAELCwt3AQN/IwBBgAJrIgIkACACIAEQXiACQYABaiABEF4gAhAy\n IAJBgAFqIAIQDyAAIAJBgAFqEJcBIABBgAJqIgMgAkGAAWoQlwEgAEGABGoiBCACQYABahCXASADIAEQogEgBCACEKIBI\n ABBBTYCgAYgAkGAAmokAAt6AQF/IwBB4ANrIgEkACABQYABakHApcAAEF8gAUG4AWpB+KXAABBfIAEgAUGAAWogAUG4AW\n oQSSABQfACakGwpsAAEF8gAUGoA2pB6KbAABBfIAFB8AFqIAFB8AJqIAFBqANqEEkgACABIAFB8AFqED8gAUHgA2okAAt\n nACAAQQF2IAByIgBBAnYgAHIiAEEEdiAAciIAQQh2IAByIgBBEHYgAHIiACAAQQF2QdWq1aoFcWsiAEECdkGz5syZA3Eg\n AEGz5syZA3FqIgBBBHYgAGpBj568+ABxQYGChAhsQRh2C2cBAn8jAEGAAWsiASQAIAEgABCFASABQUBrQTgQchogAUEBN\n gJ4IAEgAEFAayICEHggARBBIAFBQGsgARClASABQUBrIAIQeCACIAEQpQEgAiAAEHggACABQUBrEKUBIAFBgAFqJAALaA\n IBfwJ+IAFBP3GtIQNBOiABa0E/ca0hBEEAIQEDQCABQTBGBEAgACAAKQMwIAOHNwMwBSAAIAFqIgIgAkEIaikDACAEhkL\n //////////wODIAIpAwAgA4eENwMAIAFBCGohAQwBCwsLbAEBfyMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBHGpBAjYC\n ACADQSxqQQI2AgAgA0ICNwIMIANBlKjAADYCCCADQQI2AiQgAyADQSBqNgIYIAMgAzYCKCADIANBBGo2AiAgA0EIaiACE\n HAAC2wBAX8jAEEwayIDJAAgAyABNgIEIAMgADYCACADQRxqQQI2AgAgA0EsakECNgIAIANCAjcCDCADQbCqwAA2AgggA0\n ECNgIkIAMgA0EgajYCGCADIANBBGo2AiggAyADNgIgIANBCGogAhBwAAtlAQJ/IAAgACgCACICQQhqIgM2AgAgACACQQN\n 2QTxxakEoaiICIAFB/wFxIAIoAgBBCHRyNgIAAkACQCADRQRAIABBADYCACAAIAAoAgRBAWo2AgQMAQsgA0H/A3ENAQsg\n ABARCwtnAQF/IwBBgAJrIgMkACAAECogACABEJABIABBgAFqIgEgAhCQASAAQYACahCwASAAEKgBIAMgABAmIANBgAFqI\n AEQXiADQYABahAyIANBgAFqIAMQe0UEQCAAEJgBCyADQYACaiQAC18BAn8jAEGAAWsiASQAIAAQqAEgASAAEIUBIAFBQG\n sgAEFAayICEIUBIAEQAyABQUBrEAMgASABQUBrEHggAUEAEDQgACABEEggARBBIAEQRCACIAEQSCABQYABaiQAC10BAn8\n jAEFAaiIBJAAgAUEIakGgp8AAEF8gAUEIaiAAKAI4QX9qEDkiAhAtIAAgAUEIahBjIABBASACQQFqQR9xdCICNgI4IAJB\n gICAEE4EQCAAEBILIAFBQGskAAtfAgF/AX4jAEHwAGsiASQAIAFBoKfAABBfIAApAwAhAiABQThqIAAQXyAAQQEQOyABQ\n ThqIAEQYSABQThqEEQgAUE4akEBEDsgACABQThqIAJCAoGnEE8gAUHwAGokAAt7AQJ/IABBKGohAgNAIAFBgAJGBEAgAE\n LnzKfQ1tDrs7t/NwIIIABCADcCACAAQSBqQquzj/yRo7Pw2wA3AgAgAEEYakL/pLmIxZHagpt/NwIAIABBEGpC8ua746O\n n/aelfzcCAAUgASACakEANgIAIAFBBGohAQwBCwsLaQICfwF+IAAgACkDACIDQv//////////A4M3AwBBCCEBA0AgA0I6\n hyEDIAFBMEYEQCAAIAApAzAgA3w3AzAFIAAgAWoiAiACKQMAIAN8IgNC//////////8DgzcDACABQQhqIQEMAQsLC2oCA\n n8BfiAAIAApAwAiA0L//////////wODNwMAQQghAQNAIANCOochAyABQegARgRAIAAgACkDaCADfDcDaAUgACABaiICIA\n IpAwAgA3wiA0L//////////wODNwMAIAFBCGohAQwBCwsLWQEBfyMAQYADayIEJAAgBCADEF4gBBBAIARBgAFqIAEQXiA\n EQYACaiACEF4gBEGAAWogBBAPIARBgAJqIAQQDyAAIARBgAFqIARBgAJqEJEBIARBgANqJAALWQECfyMAQUBqIgEkAAJA\n IAAQhAENACABQQEQigEgAEGAAWoiAiABEFkNACACQQAQNCAAIAIQSCAAEBIgAEFAayIAIAIQSCAAEBIgAiABEKUBCyABQ\n UBrJAALVwEBfyMAQbABayICJAAgATQCOCAANAI4fkKAgIAQWQRAIAAQEgsgAkEIaiAAIAEQCCACQfgAaiACQQhqEAUgAC\n ACQfgAahBrIABBAjYCOCACQbABaiQAC08BAn8jAEFAaiIDJAAgAEE4EHIiAEEBNgI4IABBQGtBOBByIABB+ABqQQE2AgA\n gAyABEIsBIAAgAxClASADIAIQiwEgAxClASADQUBrJAALWQECfyMAQYABayIBJAACQCAAEIgBDQAgARBQIABBgAJqIgIg\n ARB7DQAgAhBAIAAgAhAPIAAQqwEgAEGAAWoiACACEA8gABCrASACIAEQkAELIAFBgAFqJAALSwEBfyMAQUBqIgEkACAAQ\n TgQciIAQQE2AjggAUEBEIoBIABBQGsgAUHAABBnGiAAQYABakE4EHIaIABBuAFqQQE2AgAgAUFAayQAC0sBAn8jAEHwAG\n siASQAIAAQd0UEQCABQaCnwAAQXyABQThqIAAQgwEgASABQThqEGIgARBEIAFBOGogARA1IQILIAFB8ABqJAAgAgtPAQF\n /IwBBgAFrIgIkACAAIAEQhQEgABADIAJByABqQdikwAAQXyACQQhqIAJByABqEIsBIAAgARBIIAAgAkEIahB4IAAQEiAC\n QYABaiQAC0kBAn8DQCABQThGRQRAIAAgAWoiAiACKQMAQgGGNwMAIAFBCGohAQwBCwsgACAAKAI4QQF0IgE2AjggAUGAg\n IAQTgRAIAAQEgsLQgIBfwJ+QQAgAmusIQQDQCADQThHBEAgACADaiICIAIpAwAiBSABIANqKQMAhSAEgyAFhTcDACADQQ\n hqIQMMAQsLC0YBAn8jAEFAaiIBJAAgAEE4EHIiAEEBNgI4IABBQGtBOBByIABB+ABqQQE2AgAgAUEBEIoBIAAgARClARC\n yASABQUBrJAALTgEBfyMAQYAEayIBJAAgABAvIAEQLyABQYACahAvIABBgAJqIAFBgAIQZxogAEGABGogAUGAAmpBgAIQ\n ZxogAEEANgKABiABQYAEaiQAC0sBAX8jAEFAaiICJAACQCAAKAI4IAFsQYCAgBBOBEAgAiABEIoBIAAgAhBIDAELIAAgA\n RAoGiAAIAAoAjggAWw2AjgLIAJBQGskAAtKAAJ/IAFBgIDEAEcEQEEBIAAoAhggASAAQRxqKAIAKAIQEQMADQEaCyACRQ\n RAQQAPCyAAKAIYIAJBACAAQRxqKAIAKAIMEQUACwtCAQF/IwBBQGoiAiQAIAJBCGpBgIDAABBfIAEgAkEIahBrIAEQRCA\n AIAEQayAAQQMQKBogABBEIAAQKSACQUBrJAALSQECfyMAQcABayIBJAAgASAAEF4gAUGAAWogABCFASAAIABBQGsiAhCl\n ASAAEEEgAiABQYABahClASAAIAEQlQEgAUHAAWokAAtIAQF/IwBB4AFrIgEkACABQeihwAAQXyABQThqIAAgARAIIAFBq\n AFqIAFBOGoQBSAAIAFBqAFqEGsgAEECNgI4IAFB4AFqJAALPgEBfyABQTpuIQIgAUGVA00EQCAAIAJBA3RqKQMAQgEgAU\n H//wNxQTpwrYaDQgBVDwsgAkEHQdSdwAAQPAALQAIBfwF+IwBBgAFrIgEkACABQQhqIAAQhQEgAUEIahASIAFByABqIAF\n BCGoQgwEgASkDSCABQYABaiQAQgKBpws8AQF/IwBBgAFrIgIkACACIAAQhQEgAkFAayABEIUBIAIQEiACQUBrEBIgAiAC\n QUBrEDUgAkGAAWokAEULPAIBfwF+A38gAUE4RgR/IAJCf3xCgICAgICAgIAEg0I6iKcFIAAgAWopAwAgAoQhAiABQQhqI\n QEMAQsLC0cBAX8jAEEgayIDJAAgA0EUakEANgIAIANB9KrAADYCECADQgE3AgQgAyABNgIcIAMgADYCGCADIANBGGo2Ag\n AgAyACEHAACzkBAX8jAEFAaiICJAAgAiAAEIUBIAIQByABBEAgASACEKUBCyACEAMgAiAAEEggAhAsIAJBQGskAAs6AQF\n /IABBOBByIQADQCACQTBGRQRAIABBCBAtIAAgACkDACABIAJqMQAAfDcDACACQQFqIQIMAQsLCzQBAX8gAEE4EHIiAEEB\n NgI4IABBQGtBOBByIABB+ABqQQE2AgAgACABEKUBIAFBQGsQpQELMAEBfyAAQTgQciEAA0AgAkE4RwRAIAAgAmogASACa\n ikDADcDACACQQhqIQIMAQsLCz8BAX8jAEGAAmsiASQAIAAQUSABEG4gACABEJIBIABBgAJqEK0BIABBgARqEK0BIABBAT\n YCgAYgAUGAAmokAAswAQJ/A0AgAkE4RwRAIAAgAmoiAyADKQMAIAEgAmopAwB8NwMAIAJBCGohAgwBCwsLMAECfwNAIAJ\n BOEcEQCAAIAJqIgMgAykDACABIAJqKQMAfTcDACACQQhqIQIMAQsLCzABAn8DQCACQThHBEAgACACaiIDIAEgAmopAwAg\n AykDAH03AwAgAkEIaiECDAELCwsxAQJ/A0AgAkHwAEcEQCAAIAJqIgMgAykDACABIAJqKQMAfTcDACACQQhqIQIMAQsLC\n zEBAn8DQCACQfAARwRAIAAgAmoiAyADKQMAIAEgAmopAwB8NwMAIAJBCGohAgwBCwsLOQECfyMAQYABayIBJAAgASAAQY\n ABaiICEF4gAiAAEJABIAEQVSAAIAEQkAEgABCsASABQYABaiQACzMBAX8gAgRAIAAhAwNAIAMgAS0AADoAACABQQFqIQE\n gA0EBaiEDIAJBf2oiAg0ACwsgAAtIAQN/IwBBEGsiASQAIAAoAgwhAyAAKAIIIgJFBEBB9KrAAEErQaCrwAAQWwALIAEg\n AzYCCCABIAA2AgQgASACNgIAIAEQcQALMgEBfyAAQgE3AwBBCCEBA0AgAUE4RkUEQCAAIAFqQgA3AwAgAUEIaiEBDAELC\n yAAEFYLNwAgABBRIAAgARCSASAAQYACaiABQYACahCSASAAQYAEaiABQYAEahCSASAAIAEoAoAGNgKABgsoAQF/A0AgAk\n E4RwRAIAAgAmogASACaikDADcDACACQQhqIQIMAQsLCzMAIAAgARCSASAAQYACaiABQYACahCSASAAQYAEaiABQYAEahC\n SASAAIAEoAoAGNgKABgsoACAAIAEgAhB5IABBQGsgAUFAayACEHkgAEGAAWogAUGAAWogAhB5Cy4BAX8jAEGAAWsiASQA\n IAAQLyABEFAgACABEJABIABBgAFqEKkBIAFBgAFqJAALLQAgACABIAIQjwEgAEGAAWogAUGAAWogAhCPASAAQYACaiABQ\n YACaiACEI8BCzQBAX8jAEEQayICJAAgAiABNgIMIAIgADYCCCACQaSowAA2AgQgAkH0qsAANgIAIAIQaAALPgEBfyMAQR\n BrIgEkACABQQhqIABBCGooAgA2AgAgASAAKQIANwMAIAEoAgAiAEEUaigCABogACgCBBoQMwALKQEBfyABBEAgACECA0A\n gAkEAOgAAIAJBAWohAiABQX9qIgENAAsLIAALKwEBfyMAQcABayICJAAgAhBLIAIgARB/IAIQpgEgACACEAwgAkHAAWok\n AAsiAQF/A0AgAUE4RwRAIAAgAWpCADcDACABQQhqIQEMAQsLCycBAX8jAEFAaiICJAAgAkEIaiABEF0gACACQQhqEIsBI\n AJBQGskAAsrACAAEFEgACABEJIBIABBgAJqIAIQkgEgAEGABGogAxCSASAAQQU2AoAGCyMBAX8jAEFAaiIBJAAgASAAEI\n UBIAEQEiABEFogAUFAayQACykAIAAgARBhIAAgACgCOCABKAI4aiIBNgI4IAFBgICAEE4EQCAAEBILCyUAIAAgASACEE8\n gAEEAIAJrIAAoAjgiACABKAI4c3EgAHM2AjgLIwADQCACBEAgACABLQAAED4gAkF/aiECIAFBAWohAQwBCwsLIgACQCAA\n IAEQWUUNACAAQUBrIAFBQGsQWUUNAEEBDwtBAAskAAJAIABBfE0EQCAARQRAQQQhAAwCCyAAEAEiAA0BCwALIAALJwEBf\n yMAQYABayICJAAgAiABEF4gAhA6IAAgAhCVASACQYABaiQACycAIAAgARCQASAAQYABaiABQYABahCQASAAQYACaiABQY\n ACahCQAQslACAAIAEQpQEgAEFAayABQUBrEKUBIABBgAFqIAFBgAFqEKUBCyUBAX8jAEFAaiICJAAgAiABEIUBIAIQQSA\n AIAIQeCACQUBrJAALKAEBfyMAQYACayICJAAgAiABEI4BIAIQKyAAIAIQlgEgAkGAAmokAAsjAEGEAiACSQRAIAJBhAIg\n AxA9AAsgACACNgIEIAAgATYCAAsiAQF/IwBB8ABrIgIkACACIAEQMCAAIAIQBSACQfAAaiQACxwAAkAgABB3RQ0AIABBg\n AFqEHdFDQBBAQ8LQQALHwAgAEE4EHIiAEEBNgI4IAAgARBrIAAgASgCODYCOAseAAJAIAAQhwFFDQAgAEGAAWoQhwFFDQ\n BBAQ8LQQALGwACQCAAEHdFDQAgAEFAaxB3RQ0AQQEPC0EACx4AAkAgABCHAUUNACAAQYACahCHAUUNAEEBDwtBAAsaAQF\n /IAAQWCIBIABBQGsQWCABcyAAEHdxcwsaACAAQTgQciIAQQE2AjggACABEJ0BIAAQVgsZACAAQTgQciIAQQE2AjggACAB\n EGsgABBWCxcAIAAQRCAAKAIAQX8gAUEfcXRBf3NxCxoAIAAgARBfIAAgAhAkIAAgAhBjIAAgAhAkCxwAIAAQLyAAIAEQk\n AEgAEGAAWogAUGAAWoQkAELGAAgACABIAIQeSAAQUBrIAFBQGsgAhB5CxYAIAAgARClASAAQUBrIAFBQGsQpQELGAAgAB\n AvIAAgARCQASAAQYABaiACEJABCxgAIAAgARCQASAAQYABaiABQYABahCQAQsZACAAEK4BIABBgAJqELYBIABBgARqEK4\n BCxcAIAAQsgEgAEFAaxBpIABBgAFqELIBCxQAIAAgARB4IABBQGsgAUFAaxB4CxgAIAAgARCVASAAQYABaiABQYABahCV\n AQsYACAAEKYBIABBgAFqIgAQpgEgACABEA8LGQAgABCpASAAQYABahCwASAAQYACahCpAQsZACAAEKwBIABBgAJqEKwBI\n ABBgARqEKwBCxkAIAAQqgEgAEGAAmoQqgEgAEGABGoQqgELFgAgABAvIAAgARCQASAAQYABahCpAQsWACAAQYABaiIAEK\n gBIAAQOiAAEKgBCxQAIAAQRCAAIAApAwAgAax8NwMACxQAIAAQRCAAIAApAwAgAax9NwMACxEAIAAgARBSIABBQGsgARB\n SCxEAIAAgARBIIABBQGsgARBICxQAIAAgARCQASAAQYABaiACEJABCxIAIAAgARAPIABBgAFqIAEQDwsUACAAIAEQoAEg\n AEGAAWogARCgAQsRACAAKAIEBEAgACgCABAJCwsSACAAIAEQayAAIAEoAjg2AjgLDwAgAEFAayIAEEEgABBECw0AIAAQT\n iAAQUBrEE4LDQAgABBEIABBQGsQRAsPACAAELIBIABBQGsQsgELEAAgABCrASAAQYABahCrAQsNACAAEBIgAEFAaxASCx\n AAIAAQqAEgAEGAAWoQqAELEAAgABCpASAAQYABahCpAQsPACAAQYABahA6IAAQrAELEAAgABCnASAAQYABahCnAQsOACA\n AEGkgAEFAaxCyAQsQACAAIAI2AgQgACABNgIACw0AIAAQdCAAQQE2AjgLDAAgABBBIAAgARB4CwwAIAAgARBrIAAQVgsN\n ACAAEDogACABEJUBCwsAIAAQOiAAEKwBCwwAQunQotvMouq7RgsDAAELAwABCwv+PZoCAEGCgMAACwcBAAAAAQI0AEG4g\n MAAC9sBuF8jku11BwFjT+D5WE+pA2dPnKtLeD0Akew9ffXy9AMD1g8fDSwgAK1vjPCZwa4A8DtNkAEAAADzStxtEor3AI\n uwH1tTsFYDgvLFYx+X7AAysL/NHtseAkehVLifHyMCQHo6ogw4sQGz4sMPAAAAAHNyYy9ibHMxMjM4MS9wYWlyLnJzqAA\n QABQAAAAHAQAACQAAAKgAEAAUAAAADAEAAA0AAACoABAAFAAAABEBAAANAAAAAAAAAAEAAAD///8Dv/+W/78AaQM7VYAd\n moCAAefMIPV1pkwBp+1zAEGogsAACyz+//7///8BAosAgILYBPYB4Y1oiW++kwLOdqvfPagdAMZpulHOdt8Dy1nGFwBB4\n ILAAAuRAZABEAATAAAA0AEAABgAAACQARAAEwAAANQBAAARAAAAkAEQABMAAADWAQAAHAAAAHNyYy9ibHMxMjM4MS9lY3\n AucnMAkAEQABMAAAAZBQAADQAAAJABEAATAAAAGwUAAAkAAACQARAAEwAAABwFAAARAAAAkAEQABMAAAAfBQAAHAAAAAA\n AAAABAAEAAAABAjQAQaCEwAALuSCQARAAEwAAAGcEAAARAAAAkAEQABMAAABsBAAADQAAAJABEAATAAAAbgQAABUAAACQ\n ARAAEwAAAHAEAAAgAAAAHUxYLQgo9ADXXz44aOPbAInJGoj9roEBomOjmrkPTgGY6rCCSW3JAoBOWs9QOu4AimlEAQAAA\n ADgKxeO6UjMAXSpOluMVsgAolXvNe/8FADngsIBPcnDA8EWIDvuPnUAusRiAAwgWgDRCCkuAQAAALgh6L1iEMUA3/4Vlz\n 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\n GZYzb76G2KA7ycH+3PFk8AK2qmngEAAABhdHRlbXB0IHRvIGRpdmlkZSBieSB6ZXJvAAAAbxEQABIAAAB8AQAAFAAAAAA\n AAABhdHRlbXB0IHRvIGRpdmlkZSB3aXRoIG92ZXJmbG93c3JjL2JsczEyMzgxL2ZwLnJzAAAAbxEQABIAAAASAgAADQAA\n AG8REAASAAAAHgIAACYAAABvERAAEgAAAB4CAAAjAAAAbxEQABIAAAAkAgAAFwAAAG8REAASAAAAJAIAABQAAAAAAAAAq\n qr//////gHu//9UrP//AupBYg9rDyoBw5z9ShTOEwJLd2TXrEtDAu3pxpKm+V8Cox4RoAEAAABAEhAAFAAAABUBAAATAA\n AAQBIQABQAAAAeAQAAGAAAAEASEAAUAAAAJAEAABwAAABzcmMvYmxzMTIzODEvZWNwMi5ycwAAAAAEAEGQpcAAC7wGQBI\n QABQAAADmAgAACQAAAEASEAAUAAAA7gIAAA0AAABAEhAAFAAAAP4CAAAhAAAAuL0hwchWgAD1+24BqskAA7pwFz2uR7YA\n RNEK7ADpUwN65MZREMUtA0kBgkmkwiMALyuqJAAAAAB+KwRdBX2sAflVF+WERDwDNJME9ce9GwJp12rYgmRCA9BrWWVPJ\n 4gA6DRrH9hnnAAFtgI+AQAAAAEouAiGVJMBeKIo6w5zsgIjyRINFpWmAQq1nU73MqoCm/2tGjUu2gJxczJjhFufAHdSXc\n 4AAAAAvnlf8F8HqQJqaAc710nDAfOzmulytSoB0pm8jp0W+gEoPsuZi8IrAKw0qwwzzakDAkpsYAAAAACrqv/////+Ae7\n //1Ss//8C6kFiD2sPKgHDnP1KFM4TAkt3ZNesS0MC7enGkqb5XwKjHhGgAQAAAAgUEAALAAAAjwEAAA8AAAAIFBAACwAA\n AKcBAAATAAAACBQQAAsAAACqAQAADQAAAHNyYy9obWFjLnJzADQUEAAgAAAAVBQQABIAAAADAAAAAAAAAAEAAAAEAAAAa\n W5kZXggb3V0IG9mIGJvdW5kczogdGhlIGxlbiBpcyAgYnV0IHRoZSBpbmRleCBpcyAwMDAxMDIwMzA0MDUwNjA3MDgwOT\n EwMTExMjEzMTQxNTE2MTcxODE5MjAyMTIyMjMyNDI1MjYyNzI4MjkzMDMxMzIzMzM0MzUzNjM3MzgzOTQwNDE0MjQzNDQ\n 0NTQ2NDc0ODQ5NTA1MTUyNTM1NDU1NTY1NzU4NTk2MDYxNjI2MzY0NjU2NjY3Njg2OTcwNzE3MjczNzQ3NTc2Nzc3ODc5\n ODA4MTgyODM4NDg1ODY4Nzg4ODk5MDkxOTI5Mzk0OTU5Njk3OTg5OQAAQBUQABAAAABQFRAAIgAAAHJhbmdlIGVuZCBpb\n mRleCAgb3V0IG9mIHJhbmdlIGZvciBzbGljZSBvZiBsZW5ndGggAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIG\n EgYE5vbmVgIHZhbHVlALAVEAAcAAAA7gEAAB4AAABsaWJyYXJ5L3N0ZC9zcmMvcGFuaWNraW5nLnJzAEGIrMAACwEBAEH\n IrMAACwEBAEGIrcAACwEBAEHIrcAACwEBAEGIrsAACwEBAEHIrsAACwEBAEGIr8AACwEBAEHIr8AACwEBAEGIsMAACwEB\n AEHIsMAACwEBAEGIscAACwEBAEHIscAACwEBAEGIssAACwEBAEHIssAACwEBAEGIs8AACwEBAEHIs8AACwEBAEGItMAAC\n wEBAEHItMAACwEBAEGItcAACwEBAEHItcAACwEBAEGItsAACwEBAEHItsAACwEBAEGIt8AACwEBAEHIt8AACwEBAEGIuM\n AACwEBAEHIuMAACwEBAEGIucAACwEBAEHIucAACwEBAEGIusAACwEBAEHIusAACwEBAEGIu8AACwEBAEHIu8AACwEBAEG\n IvMAACwEBAEHIvMAACwEBAEGIvcAACwEBAEHIvcAACwEBAEGIvsAACwEBAEHIvsAACwEBAEGIv8AACwEBAEHIv8AACwEB\n AEGIwMAACwEBAEHIwMAACwEBAEGIwcAACwEBAEHIwcAACwEBAEGIwsAACwEBAEHIwsAACwEBAEGIw8AACwEBAEHIw8AAC\n wEBAEGIxMAACwEBAEHIxMAACwEBAEGIxcAACwEBAEHIxcAACwEBAEGIxsAACwEBAEHIxsAACwEBAEGIx8AACwEBAEHIx8\n AACwEBAEGIyMAACwEBAEHIyMAACwEBAEGIycAACwEBAEHIycAACwEBAEGIysAACwEBAEHIysAACwEBAEGIy8AACwEBAEH\n Iy8AACwEBAEGIzMAACwEBAEHIzMAACwEBAEGIzcAACwEBAEHIzcAACwEBAEGIzsAACwEBAEHIzsAACwEBAEGIz8AACwEB\n AEHIz8AACwEBAEGI0MAACwEBAEHI0MAACwEBAEGI0cAACwEBAEHI0cAACwEBAEGI0sAACwEBAEHI0sAACwEBAEGI08AAC\n wEBAEHI08AACwEBAEGI1MAACwEBAEHI1MAACwEBAEGI1cAACwEBAEHI1cAACwEBAEGI1sAACwEBAEHI1sAACwEBAEGI18\n AACwEBAEHI18AACwEBAEGI2MAACwEBAEHI2MAACwEBAEGI2cAACwEBAEHI2cAACwEBAEGI2sAACwEBAEHI2sAACwEBAEG\n I28AACwEBAEHI28AACwEBAEGI3MAACwEBAEHI3MAACwEBAEGI3cAACwEBAEHI3cAACwEBAEGI3sAACwEBAEHI3sAACwEB\n AEGI38AACwEBAEHI38AACwEBAEGI4MAACwEBAEHI4MAACwEBAEGI4cAACwEBAEHI4cAACwEBAEGI4sAACwEBAEHI4sAAC\n wEBAEGI48AACwEBAEHI48AACwEBAEGI5MAACwEBAEHI5MAACwEBAEGI5cAACwEBAEHI5cAACwEBAEGI5sAACwEBAEHI5s\n AACwEBAEGI58AACwEBAEHI58AACwEBAEGI6MAACwEBAEHI6MAACwEBAEGI6cAACwEBAEHI6cAACwEBAEGI6sAACwEBAEH\n I6sAACwEBAEGI68AACwEBAEHI68AACwEBAEGI7MAACwEBAEHI7MAACwEBAEGI7cAACwEBAEHI7cAACwEBAEGI7sAACwEB\n AEHI7sAACwEBAEGI78AACwEBAEHI78AACwEBAEGI8MAACwEBAEHI8MAACwEBAEGI8cAACwEBAEHI8cAACwEBAEGI8sAAC\n wEBAEHI8sAACwEBAEGI88AACwEBAEHI88AACwEBAEGI9MAACwEBAEHI9MAACwEBAEGI9cAACwEBAEHI9cAACwEBAEGI9s\n AACwEBAEHI9sAACwEBAEGI98AACwEBAEHI98AACwEBAEGI+MAACwEBAEHI+MAACwEBAEGI+cAACwEBAEHI+cAACwEBAEG\n I+sAACwEBAEHI+sAACwEBAEGI+8AACwEBAEHI+8AACwEBAEGI/MAACwEBAEHI/MAACwEBAEGI/cAACwEBAEHI/cAACwEB\n AEGI/sAACwEBAEHI/sAACwEBAEGI/8AACwEBAEHI/8AACwEBAEGIgMEACwEBAEHIgMEACwEBAEGIgcEACwEBAEHIgcEAC\n wEBAEGIgsEACwEBAEHIgsEACwEBAEGIg8EACwEBAEHIg8EACwEBAEGIhMEACwEBAEHIhMEACwEBAEGIhcEACwEBAEHIhc\n EACwEBAEGIhsEACwEBAEHIhsEACwEBAEGIh8EACwEBAEHIh8EACwEBAEGIiMEACwEBAEHIiMEACwEBAEGIicEACwEBAEH\n IicEACwEBAEGIisEACwEBAEHIisEACwEBAEGIi8EACwEBAEHIi8EACwEBAEGIjMEACwEBAEHIjMEACwEBAEGIjcEACwEB\n AEHIjcEACwEBAEGIjsEACwEBAEHIjsEACwEBAEGIj8EACwEBAEHIj8EACwEBAEGIkMEACwEBAEHIkMEACwEBAEGIkcEAC\n wEBAEHIkcEACwEBAEGIksEACwEBAEHIksEACwEBAEGIk8EACwEBAEHIk8EACwEBAEGIlMEACwEBAEHIlMEACwEBAEGIlc\n EACwEBAEHIlcEACwEBAEGIlsEACwEBAEHIlsEACwEBAEGIl8EACwEBAEHIl8EACwEBAEGImMEACwEBAEHImMEACwEBAEG\n ImcEACwEBAEHImcEACwEBAEGImsEACwEBAEHImsEACwEBAEGIm8EACwEBAEHIm8EACwEBAEGInMEACwEBAEHInMEACwEB\n AEGIncEACwEBAEHIncEACwEBAEGInsEACwEBAEHInsEACwEBAEGIn8EACwEBAEHIn8EACwEBAEGIoMEACwEBAEHIoMEAC\n wEBAEGIocEACwEBAEHIocEACwEBAEGIosEACwEBAEHIosEACwEBAEGIo8EACwEBAEHIo8EACwEBAEGIpMEACwEBAEHIpM\n EACwEBAEGIpcEACwEBAEHIpcEACwEBAEGIpsEACwEBAEHIpsEACwEBAEGIp8EACwEBAEHIp8EACwEBAEGIqMEACwEBAEH\n IqMEACwEBAEGIqcEACwEBAEHIqcEACwEBAEGIqsEACwEBAEHIqsEACwEBAEGIq8EACwEBAEHIq8EACwEBAEGIrMEACwEB\n AEHIrMEACwEBAEGIrcEACwEBAEHIrcEACwEBAEGIrsEACwEBAEHIrsEACwEBAEGIr8EACwEBAEHIr8EACwEBAEGIsMEAC\n wEBAEHIsMEACwEBAEGIscEACwEBAEHIscEACwEBAEGIssEACwEBAEHIssEACwEBAEGIs8EACwEBAEHIs8EACwEBAEGItM\n EACwEBAEHItMEACwEBAEGItcEACwEBAEHItcEACwEBAHsJcHJvZHVjZXJzAghsYW5ndWFnZQEEUnVzdAAMcHJvY2Vzc2V\n kLWJ5AwVydXN0Yx0xLjQ5LjAgKGUxODg0YThlMyAyMDIwLTEyLTI5KQZ3YWxydXMGMC4xOC4wDHdhc20tYmluZGdlbhIw\n LjIuNzAgKGI2MzU1YzI3MCk=\n`.replace(/[^0-9a-zA-Z/+]/g, '');\nconst wasmBytes = require('base64-arraybuffer').decode(wasmBytesBase64);\n/**\n * @returns {number}\n */\nexport function bls_init() {\n let ret = wasm.bls_init();\n return ret;\n}\nlet cachegetUint8Memory0 = null;\nfunction getUint8Memory0() {\n if (cachegetUint8Memory0 === null || cachegetUint8Memory0.buffer !== wasm.memory.buffer) {\n cachegetUint8Memory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachegetUint8Memory0;\n}\nfunction passArray8ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 1);\n getUint8Memory0().set(arg, ptr / 1);\n return [ptr, arg.length];\n}\n/**\n * @param {Uint8Array} sig\n * @param {Uint8Array} m\n * @param {Uint8Array} w\n * @returns {number}\n */\nexport function bls_verify(sig, m, w) {\n const [ptr0, len0] = passArray8ToWasm0(sig, wasm.__wbindgen_malloc);\n const [ptr1, len1] = passArray8ToWasm0(m, wasm.__wbindgen_malloc);\n const [ptr2, len2] = passArray8ToWasm0(w, wasm.__wbindgen_malloc);\n const ret = wasm.bls_verify(ptr0, len0, ptr1, len1, ptr2, len2);\n return ret;\n}\nasync function load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n }\n else {\n const instance = await WebAssembly.instantiate(module, imports);\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n }\n else {\n return instance;\n }\n }\n}\nasync function init() {\n const imports = {};\n const { instance, module } = await load(wasmBytes, imports);\n wasm = instance.exports;\n init.__wbindgen_wasm_module = module;\n return wasm;\n}\n/**\n * If `module_or_path` is {RequestInfo} or {URL}, makes a request and\n * for everything else, calls `WebAssembly.instantiate` directly.\n *\n * @param {InitInput | Promise} module_or_path\n *\n * @returns {Promise}\n */\nexport default init;\n//# sourceMappingURL=bls.js.map","import { Buffer } from 'buffer/';\nimport { getDefaultAgent } from './agent';\nimport * as cbor from './cbor';\nimport { hash } from './request_id';\nimport { blsVerify } from './utils/bls';\nasync function getRootKey(agent) {\n // TODO add the real root key for Mercury\n return (await agent.status()).root_key;\n}\nfunction isBufferEqual(a, b) {\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n}\nexport class Certificate {\n constructor(response, _agent = getDefaultAgent()) {\n this._agent = _agent;\n this.verified = false;\n this._rootKey = null;\n this.cert = cbor.decode(response.certificate);\n }\n lookup(path) {\n if (!this.verified) {\n throw new Error('Cannot lookup unverified certificate');\n }\n return lookup_path(path, this.cert.tree);\n }\n async verify() {\n const rootHash = await reconstruct(this.cert.tree);\n const derKey = await this._checkDelegation(this.cert.delegation);\n const sig = this.cert.signature;\n const key = extractDER(derKey);\n const msg = Buffer.concat([domain_sep('ic-state-root'), rootHash]);\n const res = await blsVerify(key, sig, msg);\n this.verified = res;\n return res;\n }\n async _checkDelegation(d) {\n if (!d) {\n if (!this._rootKey) {\n this._rootKey = await getRootKey(this._agent);\n }\n return this._rootKey;\n }\n const cert = new Certificate(d, this._agent);\n if (!(await cert.verify())) {\n throw new Error('fail to verify delegation certificate');\n }\n const res = cert.lookup([Buffer.from('subnet'), d.subnet_id, Buffer.from('public_key')]);\n return Promise.resolve(res);\n }\n}\nconst DER_PREFIX = Buffer.from('308182301d060d2b0601040182dc7c0503010201060c2b0601040182dc7c05030201036100', 'hex');\nconst KEY_LENGTH = 96;\nfunction extractDER(buf) {\n const expectedLength = DER_PREFIX.length + KEY_LENGTH;\n if (buf.length !== expectedLength) {\n throw new TypeError(`BLS DER-encoded public key must be ${expectedLength} bytes long`);\n }\n const prefix = buf.slice(0, DER_PREFIX.length);\n if (!isBufferEqual(prefix, DER_PREFIX)) {\n throw new TypeError(`BLS DER-encoded public key is invalid. Expect the following prefix: ${DER_PREFIX}, but get ${prefix}`);\n }\n return buf.slice(DER_PREFIX.length);\n}\n/**\n * @param t\n */\nexport async function reconstruct(t) {\n switch (t[0]) {\n case 0 /* Empty */:\n return hash(domain_sep('ic-hashtree-empty'));\n case 4 /* Pruned */:\n return Buffer.from(t[1]);\n case 3 /* Leaf */:\n return hash(Buffer.concat([\n domain_sep('ic-hashtree-leaf'),\n Buffer.from(t[1]),\n ]));\n case 2 /* Labeled */:\n return hash(Buffer.concat([\n domain_sep('ic-hashtree-labeled'),\n Buffer.from(t[1]),\n Buffer.from(await reconstruct(t[2])),\n ]));\n case 1 /* Fork */:\n return hash(Buffer.concat([\n domain_sep('ic-hashtree-fork'),\n Buffer.from(await reconstruct(t[1])),\n Buffer.from(await reconstruct(t[2])),\n ]));\n default:\n throw new Error('unreachable');\n }\n}\nfunction domain_sep(s) {\n const buf = Buffer.alloc(1);\n buf.writeUInt8(s.length, 0);\n return Buffer.concat([buf, Buffer.from(s)]);\n}\n/**\n * @param path\n * @param tree\n */\nexport function lookup_path(path, tree) {\n if (path.length === 0) {\n switch (tree[0]) {\n case 3 /* Leaf */: {\n return Buffer.from(tree[1]);\n }\n default: {\n return undefined;\n }\n }\n }\n const t = find_label(path[0], flatten_forks(tree));\n if (t) {\n return lookup_path(path.slice(1), t);\n }\n}\nfunction flatten_forks(t) {\n switch (t[0]) {\n case 0 /* Empty */:\n return [];\n case 1 /* Fork */:\n return flatten_forks(t[1]).concat(flatten_forks(t[2]));\n default:\n return [t];\n }\n}\nfunction find_label(l, trees) {\n if (trees.length === 0) {\n return undefined;\n }\n for (const t of trees) {\n if (t[0] === 2 /* Labeled */) {\n const p = Buffer.from(t[1]);\n if (isBufferEqual(l, p)) {\n return t[2];\n }\n }\n }\n}\n//# sourceMappingURL=certificate.js.map","// tslint:disable:max-classes-per-file\nimport Pipe from 'buffer-pipe';\nimport { Buffer } from 'buffer/';\nimport { Principal as PrincipalId } from './principal';\nimport { blobFromBuffer } from './types';\nimport { idlLabelToId } from './utils/hash';\nimport { lebDecode, lebEncode, safeRead, slebDecode, slebEncode } from './utils/leb128';\nimport { readIntLE, readUIntLE, writeIntLE, writeUIntLE } from './utils/leb128';\nconst magicNumber = 'DIDL';\nfunction zipWith(xs, ys, f) {\n return xs.map((x, i) => f(x, ys[i]));\n}\n/**\n * An IDL Type Table, which precedes the data in the stream.\n */\nclass TypeTable {\n constructor() {\n // List of types. Needs to be an array as the index needs to be stable.\n this._typs = [];\n this._idx = new Map();\n }\n has(obj) {\n return this._idx.has(obj.name);\n }\n add(type, buf) {\n const idx = this._typs.length;\n this._idx.set(type.name, idx);\n this._typs.push(buf);\n }\n merge(obj, knot) {\n const idx = this._idx.get(obj.name);\n const knotIdx = this._idx.get(knot);\n if (idx === undefined) {\n throw new Error('Missing type index for ' + obj);\n }\n if (knotIdx === undefined) {\n throw new Error('Missing type index for ' + knot);\n }\n this._typs[idx] = this._typs[knotIdx];\n // Delete the type.\n this._typs.splice(knotIdx, 1);\n this._idx.delete(knot);\n }\n encode() {\n const len = lebEncode(this._typs.length);\n const buf = Buffer.concat(this._typs);\n return Buffer.concat([len, buf]);\n }\n indexOf(typeName) {\n if (!this._idx.has(typeName)) {\n throw new Error('Missing type index for ' + typeName);\n }\n return slebEncode(this._idx.get(typeName) || 0);\n }\n}\nexport class Visitor {\n visitType(t, data) {\n throw new Error('Not implemented');\n }\n visitPrimitive(t, data) {\n return this.visitType(t, data);\n }\n visitEmpty(t, data) {\n return this.visitPrimitive(t, data);\n }\n visitBool(t, data) {\n return this.visitPrimitive(t, data);\n }\n visitNull(t, data) {\n return this.visitPrimitive(t, data);\n }\n visitReserved(t, data) {\n return this.visitPrimitive(t, data);\n }\n visitText(t, data) {\n return this.visitPrimitive(t, data);\n }\n visitNumber(t, data) {\n return this.visitPrimitive(t, data);\n }\n visitInt(t, data) {\n return this.visitNumber(t, data);\n }\n visitNat(t, data) {\n return this.visitNumber(t, data);\n }\n visitFloat(t, data) {\n return this.visitPrimitive(t, data);\n }\n visitFixedInt(t, data) {\n return this.visitNumber(t, data);\n }\n visitFixedNat(t, data) {\n return this.visitNumber(t, data);\n }\n visitPrincipal(t, data) {\n return this.visitPrimitive(t, data);\n }\n visitConstruct(t, data) {\n return this.visitType(t, data);\n }\n visitVec(t, ty, data) {\n return this.visitConstruct(t, data);\n }\n visitOpt(t, ty, data) {\n return this.visitConstruct(t, data);\n }\n visitRecord(t, fields, data) {\n return this.visitConstruct(t, data);\n }\n visitTuple(t, components, data) {\n const fields = components.map((ty, i) => [`_${i}_`, ty]);\n return this.visitRecord(t, fields, data);\n }\n visitVariant(t, fields, data) {\n return this.visitConstruct(t, data);\n }\n visitRec(t, ty, data) {\n return this.visitConstruct(ty, data);\n }\n visitFunc(t, data) {\n return this.visitConstruct(t, data);\n }\n visitService(t, data) {\n return this.visitConstruct(t, data);\n }\n}\n/**\n * Represents an IDL type.\n */\nexport class Type {\n /* Display type name */\n display() {\n return this.name;\n }\n valueToString(x) {\n return JSON.stringify(x);\n }\n /* Implement `T` in the IDL spec, only needed for non-primitive types */\n buildTypeTable(typeTable) {\n if (!typeTable.has(this)) {\n this._buildTypeTableImpl(typeTable);\n }\n }\n}\nexport class PrimitiveType extends Type {\n checkType(t) {\n if (this.name !== t.name) {\n throw new Error(`type mismatch: type on the wire ${t.name}, expect type ${this.name}`);\n }\n return t;\n }\n _buildTypeTableImpl(typeTable) {\n // No type table encoding for Primitive types.\n return;\n }\n}\nexport class ConstructType extends Type {\n checkType(t) {\n if (t instanceof RecClass) {\n const ty = t.getType();\n if (typeof ty === 'undefined') {\n throw new Error('type mismatch with uninitialized type');\n }\n return ty;\n }\n throw new Error(`type mismatch: type on the wire ${t.name}, expect type ${this.name}`);\n }\n encodeType(typeTable) {\n return typeTable.indexOf(this.name);\n }\n}\n/**\n * Represents an IDL Empty, a type which has no inhabitants.\n * Since no values exist for this type, it cannot be serialised or deserialised.\n * Result types like `Result` should always succeed.\n */\nexport class EmptyClass extends PrimitiveType {\n accept(v, d) {\n return v.visitEmpty(this, d);\n }\n covariant(x) {\n return false;\n }\n encodeValue() {\n throw new Error('Empty cannot appear as a function argument');\n }\n valueToString() {\n throw new Error('Empty cannot appear as a value');\n }\n encodeType() {\n return slebEncode(-17 /* Empty */);\n }\n decodeValue() {\n throw new Error('Empty cannot appear as an output');\n }\n get name() {\n return 'empty';\n }\n}\n/**\n * Represents an IDL Bool\n */\nexport class BoolClass extends PrimitiveType {\n accept(v, d) {\n return v.visitBool(this, d);\n }\n covariant(x) {\n return typeof x === 'boolean';\n }\n encodeValue(x) {\n const buf = Buffer.alloc(1);\n buf.writeInt8(x ? 1 : 0, 0);\n return buf;\n }\n encodeType() {\n return slebEncode(-2 /* Bool */);\n }\n decodeValue(b, t) {\n this.checkType(t);\n const x = safeRead(b, 1).toString('hex');\n if (x === '00') {\n return false;\n }\n else if (x === '01') {\n return true;\n }\n else {\n throw new Error('Boolean value out of range');\n }\n }\n get name() {\n return 'bool';\n }\n}\n/**\n * Represents an IDL Null\n */\nexport class NullClass extends PrimitiveType {\n accept(v, d) {\n return v.visitNull(this, d);\n }\n covariant(x) {\n return x === null;\n }\n encodeValue() {\n return Buffer.alloc(0);\n }\n encodeType() {\n return slebEncode(-1 /* Null */);\n }\n decodeValue(b, t) {\n this.checkType(t);\n return null;\n }\n get name() {\n return 'null';\n }\n}\n/**\n * Represents an IDL Reserved\n */\nexport class ReservedClass extends PrimitiveType {\n accept(v, d) {\n return v.visitReserved(this, d);\n }\n covariant(x) {\n return true;\n }\n encodeValue() {\n return Buffer.alloc(0);\n }\n encodeType() {\n return slebEncode(-16 /* Reserved */);\n }\n decodeValue(b, t) {\n if (t.name !== this.name) {\n t.decodeValue(b, t);\n }\n return null;\n }\n get name() {\n return 'reserved';\n }\n}\nfunction isValidUTF8(buf) {\n return Buffer.compare(new Buffer(buf.toString(), 'utf8'), buf) === 0;\n}\n/**\n * Represents an IDL Text\n */\nexport class TextClass extends PrimitiveType {\n accept(v, d) {\n return v.visitText(this, d);\n }\n covariant(x) {\n return typeof x === 'string';\n }\n encodeValue(x) {\n const buf = Buffer.from(x, 'utf8');\n const len = lebEncode(buf.length);\n return Buffer.concat([len, buf]);\n }\n encodeType() {\n return slebEncode(-15 /* Text */);\n }\n decodeValue(b, t) {\n this.checkType(t);\n const len = lebDecode(b);\n const buf = safeRead(b, Number(len));\n if (!isValidUTF8(buf)) {\n throw new Error('Not valid UTF8 text');\n }\n return buf.toString('utf8');\n }\n get name() {\n return 'text';\n }\n valueToString(x) {\n return '\"' + x + '\"';\n }\n}\n/**\n * Represents an IDL Int\n */\nexport class IntClass extends PrimitiveType {\n accept(v, d) {\n return v.visitInt(this, d);\n }\n covariant(x) {\n // We allow encoding of JavaScript plain numbers.\n // But we will always decode to bigint.\n return typeof x === 'bigint' || Number.isInteger(x);\n }\n encodeValue(x) {\n return slebEncode(x);\n }\n encodeType() {\n return slebEncode(-4 /* Int */);\n }\n decodeValue(b, t) {\n this.checkType(t);\n return slebDecode(b);\n }\n get name() {\n return 'int';\n }\n valueToString(x) {\n return x.toString();\n }\n}\n/**\n * Represents an IDL Nat\n */\nexport class NatClass extends PrimitiveType {\n accept(v, d) {\n return v.visitNat(this, d);\n }\n covariant(x) {\n // We allow encoding of JavaScript plain numbers.\n // But we will always decode to bigint.\n return (typeof x === 'bigint' && x >= BigInt(0)) || (Number.isInteger(x) && x >= 0);\n }\n encodeValue(x) {\n return lebEncode(x);\n }\n encodeType() {\n return slebEncode(-3 /* Nat */);\n }\n decodeValue(b, t) {\n this.checkType(t);\n return lebDecode(b);\n }\n get name() {\n return 'nat';\n }\n valueToString(x) {\n return x.toString();\n }\n}\n/**\n * Represents an IDL Float\n */\nexport class FloatClass extends PrimitiveType {\n constructor(_bits) {\n super();\n this._bits = _bits;\n if (_bits !== 32 && _bits !== 64) {\n throw new Error('not a valid float type');\n }\n }\n accept(v, d) {\n return v.visitFloat(this, d);\n }\n covariant(x) {\n return typeof x === 'number' || x instanceof Number;\n }\n encodeValue(x) {\n const buf = Buffer.allocUnsafe(this._bits / 8);\n if (this._bits === 32) {\n buf.writeFloatLE(x, 0);\n }\n else {\n buf.writeDoubleLE(x, 0);\n }\n return buf;\n }\n encodeType() {\n const opcode = this._bits === 32 ? -13 /* Float32 */ : -14 /* Float64 */;\n return slebEncode(opcode);\n }\n decodeValue(b, t) {\n this.checkType(t);\n const x = safeRead(b, this._bits / 8);\n if (this._bits === 32) {\n return x.readFloatLE(0);\n }\n else {\n return x.readDoubleLE(0);\n }\n }\n get name() {\n return 'float' + this._bits;\n }\n valueToString(x) {\n return x.toString();\n }\n}\n/**\n * Represents an IDL fixed-width Int(n)\n */\nexport class FixedIntClass extends PrimitiveType {\n constructor(_bits) {\n super();\n this._bits = _bits;\n }\n accept(v, d) {\n return v.visitFixedInt(this, d);\n }\n covariant(x) {\n const min = BigInt(2) ** BigInt(this._bits - 1) * BigInt(-1);\n const max = BigInt(2) ** BigInt(this._bits - 1) - BigInt(1);\n if (typeof x === 'bigint') {\n return x >= min && x <= max;\n }\n else if (Number.isInteger(x)) {\n const v = BigInt(x);\n return v >= min && v <= max;\n }\n else {\n return false;\n }\n }\n encodeValue(x) {\n return writeIntLE(x, this._bits / 8);\n }\n encodeType() {\n const offset = Math.log2(this._bits) - 3;\n return slebEncode(-9 - offset);\n }\n decodeValue(b, t) {\n this.checkType(t);\n const num = readIntLE(b, this._bits / 8);\n if (this._bits <= 32) {\n return Number(num);\n }\n else {\n return num;\n }\n }\n get name() {\n return `int${this._bits}`;\n }\n valueToString(x) {\n return x.toString();\n }\n}\n/**\n * Represents an IDL fixed-width Nat(n)\n */\nexport class FixedNatClass extends PrimitiveType {\n constructor(_bits) {\n super();\n this._bits = _bits;\n }\n accept(v, d) {\n return v.visitFixedNat(this, d);\n }\n covariant(x) {\n const max = BigInt(2) ** BigInt(this._bits);\n if (typeof x === 'bigint' && x > BigInt(0)) {\n return x < max;\n }\n else if (Number.isInteger(x) && x >= 0) {\n const v = BigInt(x);\n return v < max;\n }\n else {\n return false;\n }\n }\n encodeValue(x) {\n return writeUIntLE(x, this._bits / 8);\n }\n encodeType() {\n const offset = Math.log2(this._bits) - 3;\n return slebEncode(-5 - offset);\n }\n decodeValue(b, t) {\n this.checkType(t);\n const num = readUIntLE(b, this._bits / 8);\n if (this._bits <= 32) {\n return Number(num);\n }\n else {\n return num;\n }\n }\n get name() {\n return `nat${this._bits}`;\n }\n valueToString(x) {\n return x.toString();\n }\n}\n/**\n * Represents an IDL Array\n * @param {Type} t\n */\nexport class VecClass extends ConstructType {\n constructor(_type) {\n super();\n this._type = _type;\n }\n accept(v, d) {\n return v.visitVec(this, this._type, d);\n }\n covariant(x) {\n return Array.isArray(x) && x.every(v => this._type.covariant(v));\n }\n encodeValue(x) {\n const len = lebEncode(x.length);\n return Buffer.concat([len, ...x.map(d => this._type.encodeValue(d))]);\n }\n _buildTypeTableImpl(typeTable) {\n this._type.buildTypeTable(typeTable);\n const opCode = slebEncode(-19 /* Vector */);\n const buffer = this._type.encodeType(typeTable);\n typeTable.add(this, Buffer.concat([opCode, buffer]));\n }\n decodeValue(b, t) {\n const vec = this.checkType(t);\n if (!(vec instanceof VecClass)) {\n throw new Error('Not a vector type');\n }\n const len = Number(lebDecode(b));\n const rets = [];\n for (let i = 0; i < len; i++) {\n rets.push(this._type.decodeValue(b, vec._type));\n }\n return rets;\n }\n get name() {\n return `vec ${this._type.name}`;\n }\n display() {\n return `vec ${this._type.display()}`;\n }\n valueToString(x) {\n const elements = x.map(e => this._type.valueToString(e));\n return 'vec {' + elements.join('; ') + '}';\n }\n}\n/**\n * Represents an IDL Option\n * @param {Type} t\n */\nexport class OptClass extends ConstructType {\n constructor(_type) {\n super();\n this._type = _type;\n }\n accept(v, d) {\n return v.visitOpt(this, this._type, d);\n }\n covariant(x) {\n return Array.isArray(x) && (x.length === 0 || (x.length === 1 && this._type.covariant(x[0])));\n }\n encodeValue(x) {\n if (x.length === 0) {\n return Buffer.from([0]);\n }\n else {\n return Buffer.concat([Buffer.from([1]), this._type.encodeValue(x[0])]);\n }\n }\n _buildTypeTableImpl(typeTable) {\n this._type.buildTypeTable(typeTable);\n const opCode = slebEncode(-18 /* Opt */);\n const buffer = this._type.encodeType(typeTable);\n typeTable.add(this, Buffer.concat([opCode, buffer]));\n }\n decodeValue(b, t) {\n const opt = this.checkType(t);\n if (!(opt instanceof OptClass)) {\n throw new Error('Not an option type');\n }\n const len = safeRead(b, 1).toString('hex');\n if (len === '00') {\n return [];\n }\n else if (len === '01') {\n return [this._type.decodeValue(b, opt._type)];\n }\n else {\n throw new Error('Not an option value');\n }\n }\n get name() {\n return `opt ${this._type.name}`;\n }\n display() {\n return `opt ${this._type.display()}`;\n }\n valueToString(x) {\n if (x.length === 0) {\n return 'null';\n }\n else {\n return `opt ${this._type.valueToString(x[0])}`;\n }\n }\n}\n/**\n * Represents an IDL Record\n * @param {Object} [fields] - mapping of function name to Type\n */\nexport class RecordClass extends ConstructType {\n constructor(fields = {}) {\n super();\n this._fields = Object.entries(fields).sort((a, b) => idlLabelToId(a[0]) - idlLabelToId(b[0]));\n }\n accept(v, d) {\n return v.visitRecord(this, this._fields, d);\n }\n tryAsTuple() {\n const res = [];\n for (let i = 0; i < this._fields.length; i++) {\n const [key, type] = this._fields[i];\n if (key !== `_${i}_`) {\n return null;\n }\n res.push(type);\n }\n return res;\n }\n covariant(x) {\n return (typeof x === 'object' &&\n this._fields.every(([k, t]) => {\n if (!x.hasOwnProperty(k)) {\n throw new Error(`Record is missing key \"${k}\".`);\n }\n return t.covariant(x[k]);\n }));\n }\n encodeValue(x) {\n const values = this._fields.map(([key]) => x[key]);\n const bufs = zipWith(this._fields, values, ([, c], d) => c.encodeValue(d));\n return Buffer.concat(bufs);\n }\n _buildTypeTableImpl(T) {\n this._fields.forEach(([_, value]) => value.buildTypeTable(T));\n const opCode = slebEncode(-20 /* Record */);\n const len = lebEncode(this._fields.length);\n const fields = this._fields.map(([key, value]) => Buffer.concat([lebEncode(idlLabelToId(key)), value.encodeType(T)]));\n T.add(this, Buffer.concat([opCode, len, Buffer.concat(fields)]));\n }\n decodeValue(b, t) {\n const record = this.checkType(t);\n if (!(record instanceof RecordClass)) {\n throw new Error('Not a record type');\n }\n const x = {};\n let idx = 0;\n for (const [hash, type] of record._fields) {\n if (idx >= this._fields.length || idlLabelToId(this._fields[idx][0]) !== idlLabelToId(hash)) {\n // skip field\n type.decodeValue(b, type);\n continue;\n }\n const [expectKey, expectType] = this._fields[idx];\n x[expectKey] = expectType.decodeValue(b, type);\n idx++;\n }\n if (idx < this._fields.length) {\n throw new Error('Cannot find field ' + this._fields[idx][0]);\n }\n return x;\n }\n get name() {\n const fields = this._fields.map(([key, value]) => key + ':' + value.name);\n return `record {${fields.join('; ')}}`;\n }\n display() {\n const fields = this._fields.map(([key, value]) => key + ':' + value.display());\n return `record {${fields.join('; ')}}`;\n }\n valueToString(x) {\n const values = this._fields.map(([key]) => x[key]);\n const fields = zipWith(this._fields, values, ([k, c], d) => k + '=' + c.valueToString(d));\n return `record {${fields.join('; ')}}`;\n }\n}\n/**\n * Represents Tuple, a syntactic sugar for Record.\n * @param {Type} components\n */\nexport class TupleClass extends RecordClass {\n constructor(_components) {\n const x = {};\n _components.forEach((e, i) => (x['_' + i + '_'] = e));\n super(x);\n this._components = _components;\n }\n accept(v, d) {\n return v.visitTuple(this, this._components, d);\n }\n covariant(x) {\n // `>=` because tuples can be covariant when encoded.\n return (Array.isArray(x) &&\n x.length >= this._fields.length &&\n this._components.every((t, i) => t.covariant(x[i])));\n }\n encodeValue(x) {\n const bufs = zipWith(this._components, x, (c, d) => c.encodeValue(d));\n return Buffer.concat(bufs);\n }\n decodeValue(b, t) {\n const tuple = this.checkType(t);\n if (!(tuple instanceof TupleClass)) {\n throw new Error('not a tuple type');\n }\n if (tuple._components.length < this._components.length) {\n throw new Error('tuple mismatch');\n }\n const res = [];\n for (const [i, wireType] of tuple._components.entries()) {\n if (i >= this._components.length) {\n // skip value\n wireType.decodeValue(b, wireType);\n }\n else {\n res.push(this._components[i].decodeValue(b, wireType));\n }\n }\n return res;\n }\n display() {\n const fields = this._components.map(value => value.display());\n return `record {${fields.join('; ')}}`;\n }\n valueToString(values) {\n const fields = zipWith(this._components, values, (c, d) => c.valueToString(d));\n return `record {${fields.join('; ')}}`;\n }\n}\n/**\n * Represents an IDL Variant\n * @param {Object} [fields] - mapping of function name to Type\n */\nexport class VariantClass extends ConstructType {\n constructor(fields = {}) {\n super();\n this._fields = Object.entries(fields).sort((a, b) => idlLabelToId(a[0]) - idlLabelToId(b[0]));\n }\n accept(v, d) {\n return v.visitVariant(this, this._fields, d);\n }\n covariant(x) {\n return (typeof x === 'object' &&\n Object.entries(x).length === 1 &&\n this._fields.every(([k, v]) => {\n return !x.hasOwnProperty(k) || v.covariant(x[k]);\n }));\n }\n encodeValue(x) {\n for (let i = 0; i < this._fields.length; i++) {\n const [name, type] = this._fields[i];\n if (x.hasOwnProperty(name)) {\n const idx = lebEncode(i);\n const buf = type.encodeValue(x[name]);\n return Buffer.concat([idx, buf]);\n }\n }\n throw Error('Variant has no data: ' + x);\n }\n _buildTypeTableImpl(typeTable) {\n this._fields.forEach(([, type]) => {\n type.buildTypeTable(typeTable);\n });\n const opCode = slebEncode(-21 /* Variant */);\n const len = lebEncode(this._fields.length);\n const fields = this._fields.map(([key, value]) => Buffer.concat([lebEncode(idlLabelToId(key)), value.encodeType(typeTable)]));\n typeTable.add(this, Buffer.concat([opCode, len, ...fields]));\n }\n decodeValue(b, t) {\n const variant = this.checkType(t);\n if (!(variant instanceof VariantClass)) {\n throw new Error('Not a variant type');\n }\n const idx = Number(lebDecode(b));\n if (idx >= variant._fields.length) {\n throw Error('Invalid variant index: ' + idx);\n }\n const [wireHash, wireType] = variant._fields[idx];\n for (const [key, expectType] of this._fields) {\n if (idlLabelToId(wireHash) === idlLabelToId(key)) {\n const value = expectType.decodeValue(b, wireType);\n return { [key]: value };\n }\n }\n throw new Error('Cannot find field hash ' + wireHash);\n }\n get name() {\n const fields = this._fields.map(([key, type]) => key + ':' + type.name);\n return `variant {${fields.join('; ')}}`;\n }\n display() {\n const fields = this._fields.map(([key, type]) => key + (type.name === 'null' ? '' : `:${type.display()}`));\n return `variant {${fields.join('; ')}}`;\n }\n valueToString(x) {\n for (const [name, type] of this._fields) {\n if (x.hasOwnProperty(name)) {\n const value = type.valueToString(x[name]);\n if (value === 'null') {\n return `variant {${name}}`;\n }\n else {\n return `variant {${name}=${value}}`;\n }\n }\n }\n throw new Error('Variant has no data: ' + x);\n }\n}\n/**\n * Represents a reference to an IDL type, used for defining recursive data\n * types.\n */\nexport class RecClass extends ConstructType {\n constructor() {\n super(...arguments);\n this._id = RecClass._counter++;\n this._type = undefined;\n }\n accept(v, d) {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n return v.visitRec(this, this._type, d);\n }\n fill(t) {\n this._type = t;\n }\n getType() {\n return this._type;\n }\n covariant(x) {\n return this._type ? this._type.covariant(x) : false;\n }\n encodeValue(x) {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n return this._type.encodeValue(x);\n }\n _buildTypeTableImpl(typeTable) {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n typeTable.add(this, Buffer.alloc(0));\n this._type.buildTypeTable(typeTable);\n typeTable.merge(this, this._type.name);\n }\n decodeValue(b, t) {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n return this._type.decodeValue(b, t);\n }\n get name() {\n return `rec_${this._id}`;\n }\n display() {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n return `μ${this.name}.${this._type.name}`;\n }\n valueToString(x) {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n return this._type.valueToString(x);\n }\n}\nRecClass._counter = 0;\nfunction decodePrincipalId(b) {\n const x = safeRead(b, 1).toString('hex');\n if (x !== '01') {\n throw new Error('Cannot decode principal');\n }\n const len = Number(lebDecode(b));\n const hex = safeRead(b, len).toString('hex').toUpperCase();\n return PrincipalId.fromHex(hex);\n}\n/**\n * Represents an IDL principal reference\n */\nexport class PrincipalClass extends PrimitiveType {\n accept(v, d) {\n return v.visitPrincipal(this, d);\n }\n covariant(x) {\n return x && x._isPrincipal;\n }\n encodeValue(x) {\n const hex = x.toHex();\n const buf = Buffer.from(hex, 'hex');\n const len = lebEncode(buf.length);\n return Buffer.concat([Buffer.from([1]), len, buf]);\n }\n encodeType() {\n return slebEncode(-24 /* Principal */);\n }\n decodeValue(b, t) {\n this.checkType(t);\n return decodePrincipalId(b);\n }\n get name() {\n return 'principal';\n }\n valueToString(x) {\n return `${this.name} \"${x.toText()}\"`;\n }\n}\n/**\n * Represents an IDL function reference.\n * @param argTypes Argument types.\n * @param retTypes Return types.\n * @param annotations Function annotations.\n */\nexport class FuncClass extends ConstructType {\n constructor(argTypes, retTypes, annotations = []) {\n super();\n this.argTypes = argTypes;\n this.retTypes = retTypes;\n this.annotations = annotations;\n }\n static argsToString(types, v) {\n if (types.length !== v.length) {\n throw new Error('arity mismatch');\n }\n return '(' + types.map((t, i) => t.valueToString(v[i])).join(', ') + ')';\n }\n accept(v, d) {\n return v.visitFunc(this, d);\n }\n covariant(x) {\n return (Array.isArray(x) && x.length === 2 && x[0] && x[0]._isPrincipal && typeof x[1] === 'string');\n }\n encodeValue(x) {\n const hex = x[0].toHex();\n const buf = Buffer.from(hex, 'hex');\n const len = lebEncode(buf.length);\n const canister = Buffer.concat([Buffer.from([1]), len, buf]);\n const method = Buffer.from(x[1], 'utf8');\n const methodLen = lebEncode(method.length);\n return Buffer.concat([Buffer.from([1]), canister, methodLen, method]);\n }\n _buildTypeTableImpl(T) {\n this.argTypes.forEach(arg => arg.buildTypeTable(T));\n this.retTypes.forEach(arg => arg.buildTypeTable(T));\n const opCode = slebEncode(-22 /* Func */);\n const argLen = lebEncode(this.argTypes.length);\n const args = Buffer.concat(this.argTypes.map(arg => arg.encodeType(T)));\n const retLen = lebEncode(this.retTypes.length);\n const rets = Buffer.concat(this.retTypes.map(arg => arg.encodeType(T)));\n const annLen = lebEncode(this.annotations.length);\n const anns = Buffer.concat(this.annotations.map(a => this.encodeAnnotation(a)));\n T.add(this, Buffer.concat([opCode, argLen, args, retLen, rets, annLen, anns]));\n }\n decodeValue(b) {\n const x = safeRead(b, 1).toString('hex');\n if (x !== '01') {\n throw new Error('Cannot decode function reference');\n }\n const canister = decodePrincipalId(b);\n const mLen = Number(lebDecode(b));\n const buf = safeRead(b, mLen);\n if (!isValidUTF8(buf)) {\n throw new Error('Not valid UTF8 method name');\n }\n const method = buf.toString('utf8');\n return [canister, method];\n }\n get name() {\n const args = this.argTypes.map(arg => arg.name).join(', ');\n const rets = this.retTypes.map(arg => arg.name).join(', ');\n const annon = ' ' + this.annotations.join(' ');\n return `(${args}) -> (${rets})${annon}`;\n }\n valueToString([principal, str]) {\n return `func \"${principal.toText()}\".${str}`;\n }\n display() {\n const args = this.argTypes.map(arg => arg.display()).join(', ');\n const rets = this.retTypes.map(arg => arg.display()).join(', ');\n const annon = ' ' + this.annotations.join(' ');\n return `(${args}) → (${rets})${annon}`;\n }\n encodeAnnotation(ann) {\n if (ann === 'query') {\n return Buffer.from([1]);\n }\n else if (ann === 'oneway') {\n return Buffer.from([2]);\n }\n else {\n throw new Error('Illeagal function annotation');\n }\n }\n}\nexport class ServiceClass extends ConstructType {\n constructor(fields) {\n super();\n this._fields = Object.entries(fields).sort((a, b) => idlLabelToId(a[0]) - idlLabelToId(b[0]));\n }\n accept(v, d) {\n return v.visitService(this, d);\n }\n covariant(x) {\n return x && x._isPrincipal;\n }\n encodeValue(x) {\n const hex = x.toHex();\n const buf = Buffer.from(hex, 'hex');\n const len = lebEncode(buf.length);\n return Buffer.concat([Buffer.from([1]), len, buf]);\n }\n _buildTypeTableImpl(T) {\n this._fields.forEach(([_, func]) => func.buildTypeTable(T));\n const opCode = slebEncode(-23 /* Service */);\n const len = lebEncode(this._fields.length);\n const meths = this._fields.map(([label, func]) => {\n const labelBuf = Buffer.from(label, 'utf8');\n const labelLen = lebEncode(labelBuf.length);\n return Buffer.concat([labelLen, labelBuf, func.encodeType(T)]);\n });\n T.add(this, Buffer.concat([opCode, len, Buffer.concat(meths)]));\n }\n decodeValue(b) {\n return decodePrincipalId(b);\n }\n get name() {\n const fields = this._fields.map(([key, value]) => key + ':' + value.name);\n return `service {${fields.join('; ')}}`;\n }\n valueToString(x) {\n return `service \"${x.toText()}\"`;\n }\n}\n/**\n *\n * @param x\n * @returns {string}\n */\nfunction toReadableString(x) {\n if (typeof x === 'bigint') {\n return `BigInt(${x})`;\n }\n else {\n return JSON.stringify(x);\n }\n}\n/**\n * Encode a array of values\n * @returns {Buffer} serialised value\n */\nexport function encode(argTypes, args) {\n if (args.length < argTypes.length) {\n throw Error('Wrong number of message arguments');\n }\n const typeTable = new TypeTable();\n argTypes.forEach(t => t.buildTypeTable(typeTable));\n const magic = Buffer.from(magicNumber, 'utf8');\n const table = typeTable.encode();\n const len = lebEncode(args.length);\n const typs = Buffer.concat(argTypes.map(t => t.encodeType(typeTable)));\n const vals = Buffer.concat(zipWith(argTypes, args, (t, x) => {\n if (!t.covariant(x)) {\n throw new Error(`Invalid ${t.display()} argument: ${toReadableString(x)}`);\n }\n return t.encodeValue(x);\n }));\n return blobFromBuffer(Buffer.concat([magic, table, len, typs, vals]));\n}\n/**\n * Decode a binary value\n * @param retTypes - Types expected in the buffer.\n * @param bytes - hex-encoded string, or buffer.\n * @returns Value deserialised to JS type\n */\nexport function decode(retTypes, bytes) {\n const b = new Pipe(bytes);\n if (bytes.byteLength < magicNumber.length) {\n throw new Error('Message length smaller than magic number');\n }\n const magic = safeRead(b, magicNumber.length).toString();\n if (magic !== magicNumber) {\n throw new Error('Wrong magic number: ' + magic);\n }\n function readTypeTable(pipe) {\n const typeTable = [];\n const len = Number(lebDecode(pipe));\n for (let i = 0; i < len; i++) {\n const ty = Number(slebDecode(pipe));\n switch (ty) {\n case -18 /* Opt */:\n case -19 /* Vector */: {\n const t = Number(slebDecode(pipe));\n typeTable.push([ty, t]);\n break;\n }\n case -20 /* Record */:\n case -21 /* Variant */: {\n const fields = [];\n let objectLength = Number(lebDecode(pipe));\n let prevHash;\n while (objectLength--) {\n const hash = Number(lebDecode(pipe));\n if (hash >= Math.pow(2, 32)) {\n throw new Error('field id out of 32-bit range');\n }\n if (typeof prevHash === 'number' && prevHash >= hash) {\n throw new Error('field id collision or not sorted');\n }\n prevHash = hash;\n const t = Number(slebDecode(pipe));\n fields.push([hash, t]);\n }\n typeTable.push([ty, fields]);\n break;\n }\n case -22 /* Func */: {\n for (let k = 0; k < 2; k++) {\n let funcLength = Number(lebDecode(pipe));\n while (funcLength--) {\n slebDecode(pipe);\n }\n }\n const annLen = Number(lebDecode(pipe));\n safeRead(pipe, annLen);\n typeTable.push([ty, undefined]);\n break;\n }\n case -23 /* Service */: {\n let servLength = Number(lebDecode(pipe));\n while (servLength--) {\n const l = Number(lebDecode(pipe));\n safeRead(pipe, l);\n slebDecode(pipe);\n }\n typeTable.push([ty, undefined]);\n break;\n }\n default:\n throw new Error('Illegal op_code: ' + ty);\n }\n }\n const rawList = [];\n const length = Number(lebDecode(pipe));\n for (let i = 0; i < length; i++) {\n rawList.push(Number(slebDecode(pipe)));\n }\n return [typeTable, rawList];\n }\n const [rawTable, rawTypes] = readTypeTable(b);\n if (rawTypes.length < retTypes.length) {\n throw new Error('Wrong number of return values');\n }\n const table = rawTable.map(_ => Rec());\n function getType(t) {\n if (t < -24) {\n throw new Error('future value not supported');\n }\n if (t < 0) {\n switch (t) {\n case -1:\n return Null;\n case -2:\n return Bool;\n case -3:\n return Nat;\n case -4:\n return Int;\n case -5:\n return Nat8;\n case -6:\n return Nat16;\n case -7:\n return Nat32;\n case -8:\n return Nat64;\n case -9:\n return Int8;\n case -10:\n return Int16;\n case -11:\n return Int32;\n case -12:\n return Int64;\n case -13:\n return Float32;\n case -14:\n return Float64;\n case -15:\n return Text;\n case -16:\n return Reserved;\n case -17:\n return Empty;\n case -24:\n return Principal;\n default:\n throw new Error('Illegal op_code: ' + t);\n }\n }\n if (t >= rawTable.length) {\n throw new Error('type index out of range');\n }\n return table[t];\n }\n function buildType(entry) {\n switch (entry[0]) {\n case -19 /* Vector */: {\n const ty = getType(entry[1]);\n return Vec(ty);\n }\n case -18 /* Opt */: {\n const ty = getType(entry[1]);\n return Opt(ty);\n }\n case -20 /* Record */: {\n const fields = {};\n for (const [hash, ty] of entry[1]) {\n const name = `_${hash}_`;\n fields[name] = getType(ty);\n }\n const record = Record(fields);\n const tuple = record.tryAsTuple();\n if (Array.isArray(tuple)) {\n return Tuple(...tuple);\n }\n else {\n return record;\n }\n }\n case -21 /* Variant */: {\n const fields = {};\n for (const [hash, ty] of entry[1]) {\n const name = `_${hash}_`;\n fields[name] = getType(ty);\n }\n return Variant(fields);\n }\n case -22 /* Func */: {\n return Func([], [], []);\n }\n case -23 /* Service */: {\n return Service({});\n }\n default:\n throw new Error('Illegal op_code: ' + entry[0]);\n }\n }\n rawTable.forEach((entry, i) => {\n const t = buildType(entry);\n table[i].fill(t);\n });\n const types = rawTypes.map(t => getType(t));\n const output = retTypes.map((t, i) => {\n return t.decodeValue(b, types[i]);\n });\n // skip unused values\n for (let ind = retTypes.length; ind < types.length; ind++) {\n types[ind].decodeValue(b, types[ind]);\n }\n if (b.buffer.length > 0) {\n throw new Error('decode: Left-over bytes');\n }\n return output;\n}\n// Export Types instances.\nexport const Empty = new EmptyClass();\nexport const Reserved = new ReservedClass();\nexport const Bool = new BoolClass();\nexport const Null = new NullClass();\nexport const Text = new TextClass();\nexport const Int = new IntClass();\nexport const Nat = new NatClass();\nexport const Float32 = new FloatClass(32);\nexport const Float64 = new FloatClass(64);\nexport const Int8 = new FixedIntClass(8);\nexport const Int16 = new FixedIntClass(16);\nexport const Int32 = new FixedIntClass(32);\nexport const Int64 = new FixedIntClass(64);\nexport const Nat8 = new FixedNatClass(8);\nexport const Nat16 = new FixedNatClass(16);\nexport const Nat32 = new FixedNatClass(32);\nexport const Nat64 = new FixedNatClass(64);\nexport const Principal = new PrincipalClass();\nexport function Tuple(...types) {\n return new TupleClass(types);\n}\nexport function Vec(t) {\n return new VecClass(t);\n}\nexport function Opt(t) {\n return new OptClass(t);\n}\nexport function Record(t) {\n return new RecordClass(t);\n}\nexport function Variant(fields) {\n return new VariantClass(fields);\n}\nexport function Rec() {\n return new RecClass();\n}\nexport function Func(args, ret, annotations = []) {\n return new FuncClass(args, ret, annotations);\n}\nexport function Service(t) {\n return new ServiceClass(t);\n}\n//# sourceMappingURL=idl.js.map","import { Buffer } from 'buffer/';\nimport { getDefaultAgent, RequestStatusResponseStatus } from './agent';\nimport { getManagementCanister } from './canisters/management';\nimport { Certificate } from './certificate';\nimport * as IDL from './idl';\nimport { Principal } from './principal';\nimport { toHex as requestIdToHex } from './request_id';\nimport { blobFromText } from './types';\n/**\n * The mode used when installing a canister.\n */\nexport var CanisterInstallMode;\n(function (CanisterInstallMode) {\n CanisterInstallMode[\"Install\"] = \"install\";\n CanisterInstallMode[\"Reinstall\"] = \"reinstall\";\n CanisterInstallMode[\"Upgrade\"] = \"upgrade\";\n})(CanisterInstallMode || (CanisterInstallMode = {}));\nconst metadataSymbol = Symbol.for('ic-agent-metadata');\n/**\n * An actor base class. An actor is an object containing only functions that will\n * return a promise. These functions are derived from the IDL definition.\n */\nexport class Actor {\n constructor(metadata) {\n this[metadataSymbol] = Object.freeze(metadata);\n }\n /**\n * Get the Agent class this Actor would call, or undefined if the Actor would use\n * the default agent (global.ic.agent).\n */\n static agentOf(actor) {\n return actor[metadataSymbol].config.agent;\n }\n /**\n * Get the interface of an actor, in the form of an instance of a Service.\n * @param actor The actor to get the interface of.\n */\n static interfaceOf(actor) {\n return actor[metadataSymbol].service;\n }\n static canisterIdOf(actor) {\n return Principal.from(actor[metadataSymbol].config.canisterId);\n }\n static async install(fields, config) {\n const mode = fields.mode === undefined ? CanisterInstallMode.Install : fields.mode;\n // Need to transform the arg into a number array.\n const arg = fields.arg ? [...fields.arg] : [];\n // Same for module.\n const wasmModule = [...fields.module];\n const canisterId = typeof config.canisterId === 'string'\n ? Principal.fromText(config.canisterId)\n : config.canisterId;\n const computerAllocation = fields.computerAllocation !== undefined ? [fields.computerAllocation] : [];\n const memoryAllocation = fields.memoryAllocation !== undefined ? [fields.memoryAllocation] : [];\n await getManagementCanister(config).install_code({\n mode: { [mode]: null },\n arg,\n wasm_module: wasmModule,\n canister_id: canisterId,\n compute_allocation: computerAllocation,\n memory_allocation: memoryAllocation,\n });\n }\n static async createCanister(config) {\n const { canister_id: canisterId } = await getManagementCanister(config || {})\n .provisional_create_canister_with_cycles({ amount: [] });\n return canisterId;\n }\n static async createAndInstallCanister(interfaceFactory, fields, config) {\n const canisterId = await this.createCanister(config);\n await this.install(Object.assign({}, fields), Object.assign(Object.assign({}, config), { canisterId }));\n return this.createActor(interfaceFactory, Object.assign(Object.assign({}, config), { canisterId }));\n }\n static createActorClass(interfaceFactory) {\n const service = interfaceFactory({ IDL });\n class CanisterActor extends Actor {\n constructor(config) {\n const canisterId = typeof config.canisterId === 'string'\n ? Principal.fromText(config.canisterId)\n : config.canisterId;\n super({\n config: Object.assign(Object.assign(Object.assign({}, DEFAULT_ACTOR_CONFIG), config), { canisterId }),\n service,\n });\n for (const [methodName, func] of service._fields) {\n this[methodName] = _createActorMethod(this, methodName, func);\n }\n }\n }\n return CanisterActor;\n }\n static createActor(interfaceFactory, configuration) {\n return new (this.createActorClass(interfaceFactory))(configuration);\n }\n}\n// IDL functions can have multiple return values, so decoding always\n// produces an array. Ensure that functions with single or zero return\n// values behave as expected.\nfunction decodeReturnValue(types, msg) {\n const returnValues = IDL.decode(types, Buffer.from(msg));\n switch (returnValues.length) {\n case 0:\n return undefined;\n case 1:\n return returnValues[0];\n default:\n return returnValues;\n }\n}\nconst REQUEST_STATUS_RETRY_WAIT_DURATION_IN_MSECS = 1000;\nconst DEFAULT_ACTOR_CONFIG = {\n maxAttempts: 300,\n throttleDurationInMSecs: REQUEST_STATUS_RETRY_WAIT_DURATION_IN_MSECS,\n};\nfunction _createActorMethod(actor, methodName, func) {\n let caller;\n if (func.annotations.includes('query')) {\n caller = async (options, ...args) => {\n var _a, _b;\n // First, if there's a config transformation, call it.\n options = Object.assign(Object.assign({}, options), (_b = (_a = actor[metadataSymbol].config).queryTransform) === null || _b === void 0 ? void 0 : _b.call(_a, methodName, args, Object.assign(Object.assign({}, actor[metadataSymbol].config), options)));\n const agent = options.agent || actor[metadataSymbol].config.agent || getDefaultAgent();\n const cid = options.canisterId || actor[metadataSymbol].config.canisterId;\n const arg = IDL.encode(func.argTypes, args);\n const result = await agent.query(cid, { methodName, arg });\n switch (result.status) {\n case \"rejected\" /* Rejected */:\n throw new Error(`Query failed:\\n` +\n ` Status: ${result.status}\\n` +\n ` Message: ${result.reject_message}\\n`);\n case \"replied\" /* Replied */:\n return decodeReturnValue(func.retTypes, result.reply.arg);\n }\n };\n }\n else {\n caller = async (options, ...args) => {\n var _a, _b;\n // First, if there's a config transformation, call it.\n options = Object.assign(Object.assign({}, options), (_b = (_a = actor[metadataSymbol].config).callTransform) === null || _b === void 0 ? void 0 : _b.call(_a, methodName, args, Object.assign(Object.assign({}, actor[metadataSymbol].config), options)));\n const agent = options.agent || actor[metadataSymbol].config.agent || getDefaultAgent();\n const { canisterId, effectiveCanisterId, maxAttempts, throttleDurationInMSecs } = Object.assign(Object.assign(Object.assign({}, DEFAULT_ACTOR_CONFIG), actor[metadataSymbol].config), options);\n const cid = Principal.from(canisterId);\n const ecid = effectiveCanisterId !== undefined ? Principal.from(effectiveCanisterId) : cid;\n const arg = IDL.encode(func.argTypes, args);\n const { requestId, response } = await agent.call(cid, {\n methodName,\n arg,\n effectiveCanisterId: ecid,\n });\n if (!response.ok) {\n throw new Error([\n 'Call failed:',\n ` Method: ${methodName}(${args})`,\n ` Canister ID: ${cid}`,\n ` Request ID: ${requestIdToHex(requestId)}`,\n ` HTTP status code: ${response.status}`,\n ` HTTP status text: ${response.statusText}`,\n ].join('\\n'));\n }\n return _requestStatusAndLoop(agent, ecid, requestId, bytes => {\n if (bytes !== undefined) {\n return decodeReturnValue(func.retTypes, bytes);\n }\n else if (func.retTypes.length === 0) {\n return undefined;\n }\n else {\n throw new Error(`Call was returned undefined, but type [${func.retTypes.join(',')}].`);\n }\n }, maxAttempts, maxAttempts, throttleDurationInMSecs);\n };\n }\n const handler = (...args) => caller({}, ...args);\n handler.withOptions = (options) => (...args) => caller(options, ...args);\n return handler;\n}\nasync function _requestStatusAndLoop(agent, canisterId, requestId, decoder, attempts, maxAttempts, throttle) {\n const path = [blobFromText('request_status'), requestId];\n const state = await agent.readState(canisterId, { paths: [path] });\n const cert = new Certificate(state, agent);\n const verified = await cert.verify();\n if (!verified) {\n throw new Error('Fail to verify certificate');\n }\n const maybeBuf = cert.lookup([...path, blobFromText('status')]);\n let status;\n if (typeof maybeBuf === 'undefined') {\n // Missing requestId means we need to wait\n status = RequestStatusResponseStatus.Unknown;\n }\n else {\n status = maybeBuf.toString();\n }\n switch (status) {\n case RequestStatusResponseStatus.Replied: {\n const response = cert.lookup([...path, blobFromText('reply')]);\n return decoder(response);\n }\n case RequestStatusResponseStatus.Received:\n case RequestStatusResponseStatus.Unknown:\n case RequestStatusResponseStatus.Processing:\n if (--attempts <= 0) {\n throw new Error(`Failed to retrieve a reply for request after ${maxAttempts} attempts:\\n` +\n ` Request ID: ${requestIdToHex(requestId)}\\n` +\n ` Request status: ${status}\\n`);\n }\n // Wait a little, then retry.\n return new Promise(resolve => setTimeout(resolve, throttle)).then(() => _requestStatusAndLoop(agent, canisterId, requestId, decoder, attempts, maxAttempts, throttle));\n case RequestStatusResponseStatus.Rejected: {\n const rejectCode = cert.lookup([...path, blobFromText('reject_code')]).toString();\n const rejectMessage = cert.lookup([...path, blobFromText('reject_message')]).toString();\n throw new Error(`Call was rejected:\\n` +\n ` Request ID: ${requestIdToHex(requestId)}\\n` +\n ` Reject code: ${rejectCode}\\n` +\n ` Reject text: ${rejectMessage}\\n`);\n }\n case RequestStatusResponseStatus.Done:\n // This is _technically_ not an error, but we still didn't see the `Replied` status so\n // we don't know the result and cannot decode it.\n throw new Error(`Call was marked as done but we never saw the reply:\\n` +\n ` Request ID: ${requestIdToHex(requestId)}\\n`);\n }\n throw new Error('unreachable');\n}\n//# sourceMappingURL=actor.js.map","import Pipe from 'buffer-pipe';\nimport { Buffer } from 'buffer/';\nexport function safeRead(pipe, num) {\n if (pipe.buffer.length < num) {\n throw new Error('unexpected end of buffer');\n }\n return pipe.read(num);\n}\n/**\n * Encode a positive number (or bigint) into a Buffer. The number will be floored to the\n * nearest integer.\n * @param value The number to encode.\n */\nexport function lebEncode(value) {\n if (typeof value === 'number') {\n value = BigInt(value);\n }\n if (value < BigInt(0)) {\n throw new Error('Cannot leb encode negative values.');\n }\n const pipe = new Pipe();\n while (true) {\n const i = Number(value & BigInt(0x7f));\n value /= BigInt(0x80);\n if (value === BigInt(0)) {\n pipe.write([i]);\n break;\n }\n else {\n pipe.write([i | 0x80]);\n }\n }\n return new Buffer(pipe.buffer);\n}\n/**\n * Decode a leb encoded buffer into a bigint. The number will always be positive (does not\n * support signed leb encoding).\n * @param pipe A Buffer containing the leb encoded bits.\n */\nexport function lebDecode(pipe) {\n let weight = BigInt(1);\n let value = BigInt(0);\n let byte;\n do {\n byte = safeRead(pipe, 1)[0];\n value += BigInt(byte & 0x7f).valueOf() * weight;\n weight *= BigInt(128);\n } while (byte >= 0x80);\n return value;\n}\n/**\n * Encode a number (or bigint) into a Buffer, with support for negative numbers. The number\n * will be floored to the nearest integer.\n * @param value The number to encode.\n */\nexport function slebEncode(value) {\n if (typeof value === 'number') {\n value = BigInt(value);\n }\n const isNeg = value < BigInt(0);\n if (isNeg) {\n value = -value - BigInt(1);\n }\n const pipe = new Pipe();\n while (true) {\n const i = getLowerBytes(value);\n value /= BigInt(0x80);\n // prettier-ignore\n if ((isNeg && value === BigInt(0) && (i & 0x40) !== 0)\n || (!isNeg && value === BigInt(0) && (i & 0x40) === 0)) {\n pipe.write([i]);\n break;\n }\n else {\n pipe.write([i | 0x80]);\n }\n }\n function getLowerBytes(num) {\n const bytes = num % BigInt(0x80);\n if (isNeg) {\n // We swap the bits here again, and remove 1 to do two's complement.\n return Number(BigInt(0x80) - bytes - BigInt(1));\n }\n else {\n return Number(bytes);\n }\n }\n return new Buffer(pipe.buffer);\n}\n/**\n * Decode a leb encoded buffer into a bigint. The number is decoded with support for negative\n * signed-leb encoding.\n * @param pipe A Buffer containing the signed leb encoded bits.\n */\nexport function slebDecode(pipe) {\n // Get the size of the buffer, then cut a buffer of that size.\n const pipeView = new Uint8Array(pipe.buffer);\n let len = 0;\n for (; len < pipeView.byteLength; len++) {\n if (pipeView[len] < 0x80) {\n // If it's a positive number, we reuse lebDecode.\n if ((pipeView[len] & 0x40) === 0) {\n return lebDecode(pipe);\n }\n break;\n }\n }\n const bytes = new Uint8Array(safeRead(pipe, len + 1));\n let value = BigInt(0);\n for (let i = bytes.byteLength - 1; i >= 0; i--) {\n value = value * BigInt(0x80) + BigInt(0x80 - (bytes[i] & 0x7f) - 1);\n }\n return -value - BigInt(1);\n}\nexport function writeUIntLE(value, byteLength) {\n if (BigInt(value) < BigInt(0)) {\n throw new Error('Cannot write negative values.');\n }\n return writeIntLE(value, byteLength);\n}\nexport function writeIntLE(value, byteLength) {\n value = BigInt(value);\n const pipe = new Pipe();\n let i = 0;\n let mul = BigInt(256);\n let sub = BigInt(0);\n let byte = Number(value % mul);\n pipe.write([byte]);\n while (++i < byteLength) {\n if (value < 0 && sub === BigInt(0) && byte !== 0) {\n sub = BigInt(1);\n }\n byte = Number((value / mul - sub) % BigInt(256));\n pipe.write([byte]);\n mul *= BigInt(256);\n }\n return new Buffer(pipe.buffer);\n}\nexport function readUIntLE(pipe, byteLength) {\n let val = BigInt(safeRead(pipe, 1)[0]);\n let mul = BigInt(1);\n let i = 0;\n while (++i < byteLength) {\n mul *= BigInt(256);\n const byte = BigInt(safeRead(pipe, 1)[0]);\n val = val + mul * byte;\n }\n return val;\n}\nexport function readIntLE(pipe, byteLength) {\n let val = readUIntLE(pipe, byteLength);\n const mul = BigInt(2) ** (BigInt(8) * BigInt(byteLength - 1) + BigInt(7));\n if (val >= mul) {\n val -= mul * BigInt(2);\n }\n return val;\n}\n//# sourceMappingURL=leb128.js.map","import { Buffer } from 'buffer/';\nimport { lebEncode } from './utils/leb128';\nexport function blobFromBuffer(b) {\n return b;\n}\nexport function blobFromUint8Array(arr) {\n return Buffer.from(arr);\n}\nexport function blobFromText(text) {\n return Buffer.from(text);\n}\nexport function blobFromUint32Array(arr) {\n return Buffer.from(arr);\n}\nexport function derBlobFromBlob(blob) {\n return blob;\n}\nexport function blobFromHex(hex) {\n return Buffer.from(hex, 'hex');\n}\nexport function blobToHex(blob) {\n return blob.toString('hex');\n}\nexport function blobToUint8Array(blob) {\n return new Uint8Array(blob.slice(0, blob.byteLength));\n}\n/**\n * Create a random Nonce, based on date and a random suffix.\n */\nexport function makeNonce() {\n return lebEncode(BigInt(+Date.now()) * BigInt(100000) + BigInt(Math.floor(Math.random() * 100000)));\n}\n//# sourceMappingURL=types.js.map","// tslint:disable:no-bitwise\nconst alphabet = 'abcdefghijklmnopqrstuvwxyz234567';\n// Build a lookup table for decoding.\nconst lookupTable = Object.create(null);\nfor (let i = 0; i < alphabet.length; i++) {\n lookupTable[alphabet[i]] = i;\n}\n// Add aliases for rfc4648.\nlookupTable['0'] = lookupTable.o;\nlookupTable['1'] = lookupTable.i;\n/**\n * @param input The input array to encode.\n * @returns A Base32 string encoding the input.\n */\nexport function encode(input) {\n // How many bits will we skip from the first byte.\n let skip = 0;\n // 5 high bits, carry from one byte to the next.\n let bits = 0;\n // The output string in base32.\n let output = '';\n function encodeByte(byte) {\n if (skip < 0) {\n // we have a carry from the previous byte\n bits |= (byte >> (-skip));\n }\n else {\n // no carry\n bits = (byte << skip) & 248;\n }\n if (skip > 3) {\n // Not enough data to produce a character, get us another one\n skip -= 8;\n return 1;\n }\n if (skip < 4) {\n // produce a character\n output += alphabet[bits >> 3];\n skip += 5;\n }\n return 0;\n }\n for (let i = 0; i < input.length;) {\n i += encodeByte(input[i]);\n }\n return output + (skip < 0 ? alphabet[bits >> 3] : '');\n}\n/**\n * @param input The base32 encoded string to decode.\n */\nexport function decode(input) {\n // how many bits we have from the previous character.\n let skip = 0;\n // current byte we're producing.\n let byte = 0;\n const output = new Uint8Array((input.length * 4 / 3) | 0);\n let o = 0;\n function decodeChar(char) {\n // Consume a character from the stream, store\n // the output in this.output. As before, better\n // to use update().\n let val = lookupTable[char.toLowerCase()];\n if (val === undefined) {\n throw new Error(`Invalid character: ${JSON.stringify(char)}`);\n }\n // move to the high bits\n val <<= 3;\n byte |= val >>> skip;\n skip += 5;\n if (skip >= 8) {\n // We have enough bytes to produce an output\n output[o++] = byte;\n skip -= 8;\n if (skip > 0) {\n byte = (val << (5 - skip)) & 255;\n }\n else {\n byte = 0;\n }\n }\n }\n for (const c of input) {\n decodeChar(c);\n }\n return output.slice(0, o);\n}\n//# sourceMappingURL=base32.js.map","// tslint:disable:no-bitwise\n// This file is translated to JavaScript from\n// https://lxp32.github.io/docs/a-simple-example-crc32-calculation/\nconst lookUpTable = new Uint32Array([\n 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA,\n 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3,\n 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988,\n 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91,\n 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE,\n 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7,\n 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC,\n 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5,\n 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172,\n 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B,\n 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940,\n 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59,\n 0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116,\n 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F,\n 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924,\n 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D,\n 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A,\n 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433,\n 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818,\n 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01,\n 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E,\n 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457,\n 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C,\n 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65,\n 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2,\n 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB,\n 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0,\n 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9,\n 0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086,\n 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F,\n 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4,\n 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD,\n 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A,\n 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683,\n 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8,\n 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1,\n 0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE,\n 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7,\n 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC,\n 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5,\n 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252,\n 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B,\n 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60,\n 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79,\n 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236,\n 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F,\n 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04,\n 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D,\n 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A,\n 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713,\n 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38,\n 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21,\n 0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E,\n 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777,\n 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C,\n 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45,\n 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2,\n 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB,\n 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0,\n 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9,\n 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6,\n 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF,\n 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94,\n 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D,\n]);\n/**\n * Calculate the CRC32 of a blob.\n * @param buf The blob to calculate the CRC32 of.\n */\nexport function getCrc32(buf) {\n const b = new Uint8Array(buf);\n let crc = -1;\n // tslint:disable-next-line:prefer-for-of\n for (let i = 0; i < b.length; i++) {\n const byte = b[i];\n const t = (byte ^ crc) & 0xFF;\n crc = lookUpTable[t] ^ (crc >>> 8);\n }\n return (crc ^ -1) >>> 0;\n}\n//# sourceMappingURL=getCrc.js.map","import { Buffer } from 'buffer/';\nimport { blobFromHex, blobFromUint8Array, blobToHex } from './types';\nimport { decode, encode } from './utils/base32';\nimport { getCrc32 } from './utils/getCrc';\nimport { sha224 } from './utils/sha224';\nconst SELF_AUTHENTICATING_SUFFIX = 2;\nconst ANONYMOUS_SUFFIX = 4;\nexport class Principal {\n constructor(_blob) {\n this._blob = _blob;\n this._isPrincipal = true;\n }\n static anonymous() {\n return new this(blobFromUint8Array(new Uint8Array([ANONYMOUS_SUFFIX])));\n }\n static selfAuthenticating(publicKey) {\n const sha = sha224(publicKey);\n return new this(blobFromUint8Array(new Uint8Array([...sha, SELF_AUTHENTICATING_SUFFIX])));\n }\n static from(other) {\n if (typeof other === 'string') {\n return Principal.fromText(other);\n }\n else if (typeof other === 'object'\n && other !== null\n && other._isPrincipal === true) {\n return new Principal(other._blob);\n }\n throw new Error(`Impossible to convert ${JSON.stringify(other)} to Principal.`);\n }\n static fromHex(hex) {\n return new this(blobFromHex(hex));\n }\n static fromText(text) {\n const canisterIdNoDash = text.toLowerCase().replace(/-/g, '');\n let arr = decode(canisterIdNoDash);\n arr = arr.slice(4, arr.length);\n const principal = new this(blobFromUint8Array(arr));\n if (principal.toText() !== text) {\n throw new Error(`Principal \"${principal.toText()}\" does not have a valid checksum.`);\n }\n return principal;\n }\n static fromBlob(blob) {\n return new this(blob);\n }\n isAnonymous() {\n return this._blob.byteLength === 1 && this._blob[0] === ANONYMOUS_SUFFIX;\n }\n toBlob() {\n return this._blob;\n }\n toHash() {\n return this._blob;\n }\n toHex() {\n return blobToHex(this._blob).toUpperCase();\n }\n toText() {\n const checksumArrayBuf = new ArrayBuffer(4);\n const view = new DataView(checksumArrayBuf);\n view.setUint32(0, getCrc32(this.toBlob()), false);\n const checksum = Uint8Array.from(Buffer.from(checksumArrayBuf));\n const bytes = Uint8Array.from(this._blob);\n const array = new Uint8Array([...checksum, ...bytes]);\n const result = encode(array);\n const matches = result.match(/.{1,5}/g);\n if (!matches) {\n // This should only happen if there's no character, which is unreachable.\n throw new Error();\n }\n return matches.join('-');\n }\n toString() {\n return this.toText();\n }\n}\n//# sourceMappingURL=principal.js.map","import { sha224 as jsSha224 } from 'js-sha256';\nimport { blobFromUint8Array } from '../types';\nexport function sha224(data) {\n const shaObj = jsSha224.create();\n shaObj.update(data);\n return blobFromUint8Array(new Uint8Array(shaObj.array()));\n}\n//# sourceMappingURL=sha224.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { Buffer } from 'buffer/';\nimport { Principal } from './principal';\nimport { requestIdOf } from './request_id';\nimport { blobFromBuffer } from './types';\nconst domainSeparator = Buffer.from(new TextEncoder().encode('\\x0Aic-request'));\n/**\n * An Identity that can sign blobs.\n */\nexport class SignIdentity {\n /**\n * Get the principal represented by this identity. Normally should be a\n * `Principal.selfAuthenticating()`.\n */\n getPrincipal() {\n if (!this._principal) {\n this._principal = Principal.selfAuthenticating(this.getPublicKey().toDer());\n }\n return this._principal;\n }\n /**\n * Transform a request into a signed version of the request. This is done last\n * after the transforms on the body of a request. The returned object can be\n * anything, but must be serializable to CBOR.\n * @param request - internet computer request to transform\n */\n async transformRequest(request) {\n const { body } = request, fields = __rest(request, [\"body\"]);\n const requestId = await requestIdOf(body);\n return Object.assign(Object.assign({}, fields), { body: {\n content: body,\n sender_pubkey: this.getPublicKey().toDer(),\n sender_sig: await this.sign(blobFromBuffer(Buffer.concat([domainSeparator, requestId]))),\n } });\n }\n}\nexport class AnonymousIdentity {\n getPrincipal() {\n return Principal.anonymous();\n }\n async transformRequest(request) {\n return Object.assign(Object.assign({}, request), { body: { content: request.body } });\n }\n}\n/**\n * Create an IdentityDescriptor from a @dfinity/authentication Identity\n * @param identity - identity describe in returned descriptor\n */\nexport function createIdentityDescriptor(identity) {\n const identityIndicator = 'getPublicKey' in identity\n ? { type: 'PublicKeyIdentity', publicKey: identity.getPublicKey().toDer().toString('hex') }\n : { type: 'AnonymousIdentity' };\n return identityIndicator;\n}\n/**\n * Type Guard for whether the unknown value is an IdentityDescriptor or not.\n * @param value - value to type guard\n */\nexport function isIdentityDescriptor(value) {\n var _a, _b;\n switch ((_a = value) === null || _a === void 0 ? void 0 : _a.type) {\n case 'AnonymousIdentity':\n return true;\n case 'PublicKeyIdentity':\n if (typeof ((_b = value) === null || _b === void 0 ? void 0 : _b.publicKey) !== 'string') {\n return false;\n }\n return true;\n }\n return false;\n}\n//# sourceMappingURL=auth.js.map","// tslint:disable:max-classes-per-file\n// This file is based on:\n// tslint:disable-next-line: max-line-length\n// https://github.com/dfinity-lab/dfinity/blob/9bca65f8edd65701ea6bdb00e0752f9186bbc893/docs/spec/public/index.adoc#cbor-encoding-of-requests-and-responses\nimport borc from 'borc';\nimport { Buffer } from 'buffer/';\nimport * as cbor from 'simple-cbor';\nimport { SelfDescribeCborSerializer } from 'simple-cbor';\nimport { blobFromBuffer, blobFromHex } from './types';\n// We are using hansl/simple-cbor for CBOR serialization, to avoid issues with\n// encoding the uint64 values that the HTTP handler of the client expects for\n// canister IDs. However, simple-cbor does not yet provide deserialization so\n// we are using `Uint8Array` so that we can use the dignifiedquire/borc CBOR\n// decoder.\nclass PrincipalEncoder {\n get name() {\n return 'Principal';\n }\n get priority() {\n return 0;\n }\n match(value) {\n return value && value._isPrincipal === true;\n }\n encode(v) {\n return cbor.value.bytes(v.toBlob());\n }\n}\nclass BufferEncoder {\n get name() {\n return 'Buffer';\n }\n get priority() {\n return 1;\n }\n match(value) {\n return Buffer.isBuffer(value);\n }\n encode(v) {\n return cbor.value.bytes(new Uint8Array(v));\n }\n}\nclass BigIntEncoder {\n get name() {\n return 'BigInt';\n }\n get priority() {\n return 1;\n }\n match(value) {\n return typeof value === `bigint`;\n }\n encode(v) {\n // Always use a bigint encoding.\n if (v > BigInt(0)) {\n return cbor.value.tagged(2, cbor.value.bytes(blobFromHex(v.toString(16))));\n }\n else {\n return cbor.value.tagged(3, cbor.value.bytes(blobFromHex((BigInt('-1') * v).toString(16))));\n }\n }\n}\nconst serializer = SelfDescribeCborSerializer.withDefaultEncoders(true);\nserializer.addEncoder(new PrincipalEncoder());\nserializer.addEncoder(new BufferEncoder());\nserializer.addEncoder(new BigIntEncoder());\nexport var CborTag;\n(function (CborTag) {\n CborTag[CborTag[\"Uint64LittleEndian\"] = 71] = \"Uint64LittleEndian\";\n CborTag[CborTag[\"Semantic\"] = 55799] = \"Semantic\";\n})(CborTag || (CborTag = {}));\nexport const encode = (value) => {\n return blobFromBuffer(Buffer.from(serializer.serialize(value)));\n};\nfunction decodePositiveBigInt(buf) {\n const len = buf.byteLength;\n let res = BigInt(0);\n for (let i = 0; i < len; i++) {\n // tslint:disable-next-line:no-bitwise\n res = res * BigInt(0x100) + BigInt(buf[i]);\n }\n return res;\n}\nexport function decode(input) {\n const decoder = new borc.Decoder({\n size: input.byteLength,\n tags: {\n // Override tags 2 and 3 for BigInt support (borc supports only BigNumber).\n 2: val => decodePositiveBigInt(val),\n 3: val => -decodePositiveBigInt(val),\n [CborTag.Semantic]: (value) => value,\n },\n });\n const result = decoder.decodeFirst(input);\n return result;\n}\n//# sourceMappingURL=cbor.js.map","import * as cbor from 'simple-cbor';\nimport { makeNonce } from '../../types';\nimport { lebEncode } from '../../utils/leb128';\nconst NANOSECONDS_PER_MILLISECONDS = BigInt(1000000);\nconst REPLICA_PERMITTED_DRIFT_MILLISECONDS = BigInt(60 * 1000);\nexport class Expiry {\n constructor(deltaInMSec) {\n // Use bigint because it can overflow the maximum number allowed in a double float.\n this._value = (BigInt(Date.now()) + BigInt(deltaInMSec) - REPLICA_PERMITTED_DRIFT_MILLISECONDS)\n * NANOSECONDS_PER_MILLISECONDS;\n }\n toCBOR() {\n // TODO: change this to take the minimum amount of space (it always takes 8 bytes now).\n return cbor.value.u64(this._value.toString(16), 16);\n }\n toHash() {\n return lebEncode(this._value);\n }\n}\n/**\n * Create a Nonce transform, which takes a function that returns a Buffer, and adds it\n * as the nonce to every call requests.\n * @param nonceFn A function that returns a buffer. By default uses a semi-random method.\n */\nexport function makeNonceTransform(nonceFn = makeNonce) {\n return async (request) => {\n // Nonce are only useful for async calls, to prevent replay attacks. Other types of\n // calls don't need Nonce so we just skip creating one.\n if (request.endpoint === \"call\" /* Call */) {\n request.body.nonce = nonceFn();\n }\n };\n}\n/**\n * Create a transform that adds a delay (by default 5 minutes) to the expiry.\n *\n * @param delayInMilliseconds The delay to add to the call time, in milliseconds.\n */\nexport function makeExpiryTransform(delayInMilliseconds) {\n return async (request) => {\n request.body.ingress_expiry = new Expiry(delayInMilliseconds);\n };\n}\n//# sourceMappingURL=transforms.js.map","// tslint:enable:camel-case\n// The types of values allowed in the `request_type` field for submit requests.\nexport var SubmitRequestType;\n(function (SubmitRequestType) {\n SubmitRequestType[\"Call\"] = \"call\";\n})(SubmitRequestType || (SubmitRequestType = {}));\n//# sourceMappingURL=types.js.map","import { Buffer } from 'buffer/';\nimport { AnonymousIdentity } from '../../auth';\nimport * as cbor from '../../cbor';\nimport { Principal } from '../../principal';\nimport { requestIdOf } from '../../request_id';\nimport { blobFromHex, blobFromUint8Array } from '../../types';\nimport { Expiry } from './transforms';\nimport { SubmitRequestType, } from './types';\nexport * from './transforms';\nexport var RequestStatusResponseStatus;\n(function (RequestStatusResponseStatus) {\n RequestStatusResponseStatus[\"Received\"] = \"received\";\n RequestStatusResponseStatus[\"Processing\"] = \"processing\";\n RequestStatusResponseStatus[\"Replied\"] = \"replied\";\n RequestStatusResponseStatus[\"Rejected\"] = \"rejected\";\n RequestStatusResponseStatus[\"Unknown\"] = \"unknown\";\n RequestStatusResponseStatus[\"Done\"] = \"done\";\n})(RequestStatusResponseStatus || (RequestStatusResponseStatus = {}));\n// Default delta for ingress expiry is 5 minutes.\nconst DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS = 5 * 60 * 1000;\n// Root public key for the IC, encoded as hex\nconst IC_ROOT_KEY = '308182301d060d2b0601040182dc7c0503010201060c2b0601040182dc7c05030201036100814' +\n 'c0e6ec71fab583b08bd81373c255c3c371b2e84863c98a4f1e08b74235d14fb5d9c0cd546d968' +\n '5f913a0c0b2cc5341583bf4b4392e467db96d65b9bb4cb717112f8472e0d5a4d14505ffd7484' +\n 'b01291091c5f87b98883463f98091a0baaae';\nfunction getDefaultFetch() {\n const result = typeof window === 'undefined'\n ? typeof global === 'undefined'\n ? typeof self === 'undefined'\n ? undefined\n : self.fetch.bind(self)\n : global.fetch.bind(global)\n : window.fetch.bind(window);\n if (!result) {\n throw new Error('Could not find default `fetch` implementation.');\n }\n return result;\n}\n// A HTTP agent allows users to interact with a client of the internet computer\n// using the available methods. It exposes an API that closely follows the\n// public view of the internet computer, and is not intended to be exposed\n// directly to the majority of users due to its low-level interface.\n//\n// There is a pipeline to apply transformations to the request before sending\n// it to the client. This is to decouple signature, nonce generation and\n// other computations so that this class can stay as simple as possible while\n// allowing extensions.\nexport class HttpAgent {\n constructor(options = {}) {\n this._pipeline = [];\n this.rootKey = blobFromHex(IC_ROOT_KEY);\n if (options.source) {\n if (!(options.source instanceof HttpAgent)) {\n throw new Error(\"An Agent's source can only be another HttpAgent\");\n }\n this._pipeline = [...options.source._pipeline];\n this._identity = options.source._identity;\n this._fetch = options.source._fetch;\n this._host = options.source._host;\n this._credentials = options.source._credentials;\n }\n else {\n this._fetch = options.fetch || getDefaultFetch() || fetch.bind(global);\n }\n if (options.host !== undefined) {\n if (!options.host.match(/^[a-z]+:/) && typeof window !== 'undefined') {\n this._host = new URL(window.location.protocol + '//' + options.host);\n }\n else {\n this._host = new URL(options.host);\n }\n }\n else if (options.source !== undefined) {\n // Safe to ignore here.\n this._host = options.source._host;\n }\n else {\n const location = typeof window !== 'undefined' ? window.location : undefined;\n if (!location) {\n throw new Error('Must specify a host to connect to.');\n }\n this._host = new URL(location + '');\n }\n if (options.credentials) {\n const { name, password } = options.credentials;\n this._credentials = `${name}${password ? ':' + password : ''}`;\n }\n this._identity = Promise.resolve(options.identity || new AnonymousIdentity());\n }\n addTransform(fn, priority = fn.priority || 0) {\n // Keep the pipeline sorted at all time, by priority.\n const i = this._pipeline.findIndex(x => (x.priority || 0) < priority);\n this._pipeline.splice(i >= 0 ? i : this._pipeline.length, 0, Object.assign(fn, { priority }));\n }\n async getPrincipal() {\n return (await this._identity).getPrincipal();\n }\n async call(canisterId, options, identity) {\n const id = await (identity !== undefined ? identity : this._identity);\n const canister = Principal.from(canisterId);\n const ecid = options.effectiveCanisterId\n ? Principal.from(options.effectiveCanisterId)\n : canister;\n const sender = (id === null || id === void 0 ? void 0 : id.getPrincipal()) || Principal.anonymous();\n const submit = {\n request_type: SubmitRequestType.Call,\n canister_id: canister,\n method_name: options.methodName,\n arg: options.arg,\n sender: sender.toBlob(),\n ingress_expiry: new Expiry(DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS),\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let transformedRequest = (await this._transform({\n request: {\n body: null,\n method: 'POST',\n headers: Object.assign({ 'Content-Type': 'application/cbor' }, (this._credentials ? { Authorization: 'Basic ' + btoa(this._credentials) } : {})),\n },\n endpoint: \"call\" /* Call */,\n body: submit,\n }));\n // Apply transform for identity.\n transformedRequest = await id.transformRequest(transformedRequest);\n const body = cbor.encode(transformedRequest.body);\n // Run both in parallel. The fetch is quite expensive, so we have plenty of time to\n // calculate the requestId locally.\n const [response, requestId] = await Promise.all([\n this._fetch('' + new URL(`/api/v2/canister/${ecid.toText()}/call`, this._host), Object.assign(Object.assign({}, transformedRequest.request), { body })),\n requestIdOf(submit),\n ]);\n if (!response.ok) {\n throw new Error(`Server returned an error:\\n` +\n ` Code: ${response.status} (${response.statusText})\\n` +\n ` Body: ${await response.text()}\\n`);\n }\n return {\n requestId,\n response: {\n ok: response.ok,\n status: response.status,\n statusText: response.statusText,\n },\n };\n }\n async query(canisterId, fields, identity) {\n const id = await (identity || this._identity);\n const canister = typeof canisterId === 'string' ? Principal.fromText(canisterId) : canisterId;\n const sender = (id === null || id === void 0 ? void 0 : id.getPrincipal()) || Principal.anonymous();\n const request = {\n request_type: \"query\" /* Query */,\n canister_id: canister,\n method_name: fields.methodName,\n arg: fields.arg,\n sender: sender.toBlob(),\n ingress_expiry: new Expiry(DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS),\n };\n // TODO: remove this any. This can be a Signed or UnSigned request.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let transformedRequest = await this._transform({\n request: {\n method: 'POST',\n headers: Object.assign({ 'Content-Type': 'application/cbor' }, (this._credentials ? { Authorization: 'Basic ' + btoa(this._credentials) } : {})),\n },\n endpoint: \"read\" /* Query */,\n body: request,\n });\n // Apply transform for identity.\n transformedRequest = await id.transformRequest(transformedRequest);\n const body = cbor.encode(transformedRequest.body);\n const response = await this._fetch('' + new URL(`/api/v2/canister/${canister.toText()}/query`, this._host), Object.assign(Object.assign({}, transformedRequest.request), { body }));\n if (!response.ok) {\n throw new Error(`Server returned an error:\\n` +\n ` Code: ${response.status} (${response.statusText})\\n` +\n ` Body: ${await response.text()}\\n`);\n }\n return cbor.decode(Buffer.from(await response.arrayBuffer()));\n }\n async readState(canisterId, fields, identity) {\n const canister = typeof canisterId === 'string' ? Principal.fromText(canisterId) : canisterId;\n const id = await (identity || this._identity);\n const sender = (id === null || id === void 0 ? void 0 : id.getPrincipal()) || Principal.anonymous();\n // TODO: remove this any. This can be a Signed or UnSigned request.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let transformedRequest = await this._transform({\n request: {\n method: 'POST',\n headers: Object.assign({ 'Content-Type': 'application/cbor' }, (this._credentials ? { Authorization: 'Basic ' + btoa(this._credentials) } : {})),\n },\n endpoint: \"read_state\" /* ReadState */,\n body: {\n request_type: \"read_state\" /* ReadState */,\n paths: fields.paths,\n sender: sender.toBlob(),\n ingress_expiry: new Expiry(DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS),\n },\n });\n // Apply transform for identity.\n transformedRequest = await id.transformRequest(transformedRequest);\n const body = cbor.encode(transformedRequest.body);\n const response = await this._fetch('' + new URL(`/api/v2/canister/${canister}/read_state`, this._host), Object.assign(Object.assign({}, transformedRequest.request), { body }));\n if (!response.ok) {\n throw new Error(`Server returned an error:\\n` +\n ` Code: ${response.status} (${response.statusText})\\n` +\n ` Body: ${await response.text()}\\n`);\n }\n return cbor.decode(Buffer.from(await response.arrayBuffer()));\n }\n async status() {\n const headers = this._credentials\n ? {\n Authorization: 'Basic ' + btoa(this._credentials),\n }\n : {};\n const response = await this._fetch('' + new URL(`/api/v2/status`, this._host), { headers });\n if (!response.ok) {\n throw new Error(`Server returned an error:\\n` +\n ` Code: ${response.status} (${response.statusText})\\n` +\n ` Body: ${await response.text()}\\n`);\n }\n const buffer = await response.arrayBuffer();\n return cbor.decode(new Uint8Array(buffer));\n }\n async fetchRootKey() {\n // Hex-encoded version of the replica root key\n this.rootKey = blobFromUint8Array((await this.status()).root_key);\n return this.rootKey;\n }\n _transform(request) {\n let p = Promise.resolve(request);\n for (const fn of this._pipeline) {\n p = p.then(r => fn(r).then(r2 => r2 || r));\n }\n return p;\n }\n}\n//# sourceMappingURL=index.js.map","import { Principal, } from '..';\nexport var ProxyMessageKind;\n(function (ProxyMessageKind) {\n ProxyMessageKind[\"Error\"] = \"err\";\n ProxyMessageKind[\"GetPrincipal\"] = \"gp\";\n ProxyMessageKind[\"GetPrincipalResponse\"] = \"gpr\";\n ProxyMessageKind[\"Query\"] = \"q\";\n ProxyMessageKind[\"QueryResponse\"] = \"qr\";\n ProxyMessageKind[\"Call\"] = \"c\";\n ProxyMessageKind[\"CallResponse\"] = \"cr\";\n ProxyMessageKind[\"ReadState\"] = \"rs\";\n ProxyMessageKind[\"ReadStateResponse\"] = \"rsr\";\n ProxyMessageKind[\"Status\"] = \"s\";\n ProxyMessageKind[\"StatusResponse\"] = \"sr\";\n})(ProxyMessageKind || (ProxyMessageKind = {}));\n// A Stub Agent that forwards calls to another Agent implementation.\nexport class ProxyStubAgent {\n constructor(_frontend, _agent) {\n this._frontend = _frontend;\n this._agent = _agent;\n }\n onmessage(msg) {\n switch (msg.type) {\n case ProxyMessageKind.GetPrincipal:\n this._agent.getPrincipal().then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.GetPrincipalResponse,\n response: response.toText(),\n });\n });\n break;\n case ProxyMessageKind.Query:\n this._agent.query(...msg.args).then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.QueryResponse,\n response,\n });\n });\n break;\n case ProxyMessageKind.Call:\n this._agent.call(...msg.args).then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.CallResponse,\n response,\n });\n });\n break;\n case ProxyMessageKind.ReadState:\n this._agent.readState(...msg.args).then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.ReadStateResponse,\n response,\n });\n });\n break;\n case ProxyMessageKind.Status:\n this._agent.status().then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.StatusResponse,\n response,\n });\n });\n break;\n default:\n throw new Error(`Invalid message received: ${JSON.stringify(msg)}`);\n }\n }\n}\n// An Agent that forwards calls to a backend. The calls are serialized\nexport class ProxyAgent {\n constructor(_backend) {\n this._backend = _backend;\n this._nextId = 0;\n this._pendingCalls = new Map();\n this.rootKey = null;\n }\n onmessage(msg) {\n const id = msg.id;\n const maybePromise = this._pendingCalls.get(id);\n if (!maybePromise) {\n throw new Error('A proxy get the same message twice...');\n }\n this._pendingCalls.delete(id);\n const [resolve, reject] = maybePromise;\n switch (msg.type) {\n case ProxyMessageKind.Error:\n return reject(msg.error);\n case ProxyMessageKind.GetPrincipalResponse:\n case ProxyMessageKind.CallResponse:\n case ProxyMessageKind.QueryResponse:\n case ProxyMessageKind.ReadStateResponse:\n case ProxyMessageKind.StatusResponse:\n return resolve(msg.response);\n default:\n throw new Error(`Invalid message being sent to ProxyAgent: ${JSON.stringify(msg)}`);\n }\n }\n async getPrincipal() {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.GetPrincipal,\n }).then(principal => {\n if (typeof principal !== 'string') {\n throw new Error('Invalid principal received.');\n }\n return Principal.fromText(principal);\n });\n }\n readState(canisterId, fields) {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.ReadState,\n args: [canisterId.toString(), fields],\n });\n }\n call(canisterId, fields) {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.Call,\n args: [canisterId.toString(), fields],\n });\n }\n status() {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.Status,\n });\n }\n query(canisterId, fields) {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.Query,\n args: [canisterId.toString(), fields],\n });\n }\n async _sendAndWait(msg) {\n return new Promise((resolve, reject) => {\n this._pendingCalls.set(msg.id, [resolve, reject]);\n this._backend(msg);\n });\n }\n async fetchRootKey() {\n // Hex-encoded version of the replica root key\n const rootKey = (await this.status()).root_key;\n this.rootKey = rootKey;\n return rootKey;\n }\n}\n//# sourceMappingURL=proxy.js.map","// tslint:disable:max-classes-per-file\nimport Pipe from 'buffer-pipe';\nimport { Buffer } from 'buffer/';\nimport { Principal as PrincipalId } from './principal';\nimport { blobFromBuffer } from './types';\nimport { idlLabelToId } from './utils/hash';\nimport { lebDecode, lebEncode, safeRead, slebDecode, slebEncode } from './utils/leb128';\nimport { readIntLE, readUIntLE, writeIntLE, writeUIntLE } from './utils/leb128';\nconst magicNumber = 'DIDL';\nfunction zipWith(xs, ys, f) {\n return xs.map((x, i) => f(x, ys[i]));\n}\n/**\n * An IDL Type Table, which precedes the data in the stream.\n */\nclass TypeTable {\n constructor() {\n // List of types. Needs to be an array as the index needs to be stable.\n this._typs = [];\n this._idx = new Map();\n }\n has(obj) {\n return this._idx.has(obj.name);\n }\n add(type, buf) {\n const idx = this._typs.length;\n this._idx.set(type.name, idx);\n this._typs.push(buf);\n }\n merge(obj, knot) {\n const idx = this._idx.get(obj.name);\n const knotIdx = this._idx.get(knot);\n if (idx === undefined) {\n throw new Error('Missing type index for ' + obj);\n }\n if (knotIdx === undefined) {\n throw new Error('Missing type index for ' + knot);\n }\n this._typs[idx] = this._typs[knotIdx];\n // Delete the type.\n this._typs.splice(knotIdx, 1);\n this._idx.delete(knot);\n }\n encode() {\n const len = lebEncode(this._typs.length);\n const buf = Buffer.concat(this._typs);\n return Buffer.concat([len, buf]);\n }\n indexOf(typeName) {\n if (!this._idx.has(typeName)) {\n throw new Error('Missing type index for ' + typeName);\n }\n return slebEncode(this._idx.get(typeName) || 0);\n }\n}\nexport class Visitor {\n visitType(t, data) {\n throw new Error('Not implemented');\n }\n visitPrimitive(t, data) {\n return this.visitType(t, data);\n }\n visitEmpty(t, data) {\n return this.visitPrimitive(t, data);\n }\n visitBool(t, data) {\n return this.visitPrimitive(t, data);\n }\n visitNull(t, data) {\n return this.visitPrimitive(t, data);\n }\n visitReserved(t, data) {\n return this.visitPrimitive(t, data);\n }\n visitText(t, data) {\n return this.visitPrimitive(t, data);\n }\n visitNumber(t, data) {\n return this.visitPrimitive(t, data);\n }\n visitInt(t, data) {\n return this.visitNumber(t, data);\n }\n visitNat(t, data) {\n return this.visitNumber(t, data);\n }\n visitFloat(t, data) {\n return this.visitPrimitive(t, data);\n }\n visitFixedInt(t, data) {\n return this.visitNumber(t, data);\n }\n visitFixedNat(t, data) {\n return this.visitNumber(t, data);\n }\n visitPrincipal(t, data) {\n return this.visitPrimitive(t, data);\n }\n visitConstruct(t, data) {\n return this.visitType(t, data);\n }\n visitVec(t, ty, data) {\n return this.visitConstruct(t, data);\n }\n visitOpt(t, ty, data) {\n return this.visitConstruct(t, data);\n }\n visitRecord(t, fields, data) {\n return this.visitConstruct(t, data);\n }\n visitTuple(t, components, data) {\n const fields = components.map((ty, i) => [`_${i}_`, ty]);\n return this.visitRecord(t, fields, data);\n }\n visitVariant(t, fields, data) {\n return this.visitConstruct(t, data);\n }\n visitRec(t, ty, data) {\n return this.visitConstruct(ty, data);\n }\n visitFunc(t, data) {\n return this.visitConstruct(t, data);\n }\n visitService(t, data) {\n return this.visitConstruct(t, data);\n }\n}\n/**\n * Represents an IDL type.\n */\nexport class Type {\n /* Display type name */\n display() {\n return this.name;\n }\n valueToString(x) {\n return JSON.stringify(x);\n }\n /* Implement `T` in the IDL spec, only needed for non-primitive types */\n buildTypeTable(typeTable) {\n if (!typeTable.has(this)) {\n this._buildTypeTableImpl(typeTable);\n }\n }\n}\nexport class PrimitiveType extends Type {\n checkType(t) {\n if (this.name !== t.name) {\n throw new Error(`type mismatch: type on the wire ${t.name}, expect type ${this.name}`);\n }\n return t;\n }\n _buildTypeTableImpl(typeTable) {\n // No type table encoding for Primitive types.\n return;\n }\n}\nexport class ConstructType extends Type {\n checkType(t) {\n if (t instanceof RecClass) {\n const ty = t.getType();\n if (typeof ty === 'undefined') {\n throw new Error('type mismatch with uninitialized type');\n }\n return ty;\n }\n throw new Error(`type mismatch: type on the wire ${t.name}, expect type ${this.name}`);\n }\n encodeType(typeTable) {\n return typeTable.indexOf(this.name);\n }\n}\n/**\n * Represents an IDL Empty, a type which has no inhabitants.\n * Since no values exist for this type, it cannot be serialised or deserialised.\n * Result types like `Result` should always succeed.\n */\nexport class EmptyClass extends PrimitiveType {\n accept(v, d) {\n return v.visitEmpty(this, d);\n }\n covariant(x) {\n return false;\n }\n encodeValue() {\n throw new Error('Empty cannot appear as a function argument');\n }\n valueToString() {\n throw new Error('Empty cannot appear as a value');\n }\n encodeType() {\n return slebEncode(-17 /* Empty */);\n }\n decodeValue() {\n throw new Error('Empty cannot appear as an output');\n }\n get name() {\n return 'empty';\n }\n}\n/**\n * Represents an IDL Bool\n */\nexport class BoolClass extends PrimitiveType {\n accept(v, d) {\n return v.visitBool(this, d);\n }\n covariant(x) {\n return typeof x === 'boolean';\n }\n encodeValue(x) {\n const buf = Buffer.alloc(1);\n buf.writeInt8(x ? 1 : 0, 0);\n return buf;\n }\n encodeType() {\n return slebEncode(-2 /* Bool */);\n }\n decodeValue(b, t) {\n this.checkType(t);\n const x = safeRead(b, 1).toString('hex');\n if (x === '00') {\n return false;\n }\n else if (x === '01') {\n return true;\n }\n else {\n throw new Error('Boolean value out of range');\n }\n }\n get name() {\n return 'bool';\n }\n}\n/**\n * Represents an IDL Null\n */\nexport class NullClass extends PrimitiveType {\n accept(v, d) {\n return v.visitNull(this, d);\n }\n covariant(x) {\n return x === null;\n }\n encodeValue() {\n return Buffer.alloc(0);\n }\n encodeType() {\n return slebEncode(-1 /* Null */);\n }\n decodeValue(b, t) {\n this.checkType(t);\n return null;\n }\n get name() {\n return 'null';\n }\n}\n/**\n * Represents an IDL Reserved\n */\nexport class ReservedClass extends PrimitiveType {\n accept(v, d) {\n return v.visitReserved(this, d);\n }\n covariant(x) {\n return true;\n }\n encodeValue() {\n return Buffer.alloc(0);\n }\n encodeType() {\n return slebEncode(-16 /* Reserved */);\n }\n decodeValue(b, t) {\n if (t.name !== this.name) {\n t.decodeValue(b, t);\n }\n return null;\n }\n get name() {\n return 'reserved';\n }\n}\nfunction isValidUTF8(buf) {\n return Buffer.compare(new Buffer(buf.toString(), 'utf8'), buf) === 0;\n}\n/**\n * Represents an IDL Text\n */\nexport class TextClass extends PrimitiveType {\n accept(v, d) {\n return v.visitText(this, d);\n }\n covariant(x) {\n return typeof x === 'string';\n }\n encodeValue(x) {\n const buf = Buffer.from(x, 'utf8');\n const len = lebEncode(buf.length);\n return Buffer.concat([len, buf]);\n }\n encodeType() {\n return slebEncode(-15 /* Text */);\n }\n decodeValue(b, t) {\n this.checkType(t);\n const len = lebDecode(b);\n const buf = safeRead(b, Number(len));\n if (!isValidUTF8(buf)) {\n throw new Error('Not valid UTF8 text');\n }\n return buf.toString('utf8');\n }\n get name() {\n return 'text';\n }\n valueToString(x) {\n return '\"' + x + '\"';\n }\n}\n/**\n * Represents an IDL Int\n */\nexport class IntClass extends PrimitiveType {\n accept(v, d) {\n return v.visitInt(this, d);\n }\n covariant(x) {\n // We allow encoding of JavaScript plain numbers.\n // But we will always decode to bigint.\n return typeof x === 'bigint' || Number.isInteger(x);\n }\n encodeValue(x) {\n return slebEncode(x);\n }\n encodeType() {\n return slebEncode(-4 /* Int */);\n }\n decodeValue(b, t) {\n this.checkType(t);\n return slebDecode(b);\n }\n get name() {\n return 'int';\n }\n valueToString(x) {\n return x.toString();\n }\n}\n/**\n * Represents an IDL Nat\n */\nexport class NatClass extends PrimitiveType {\n accept(v, d) {\n return v.visitNat(this, d);\n }\n covariant(x) {\n // We allow encoding of JavaScript plain numbers.\n // But we will always decode to bigint.\n return (typeof x === 'bigint' && x >= BigInt(0)) || (Number.isInteger(x) && x >= 0);\n }\n encodeValue(x) {\n return lebEncode(x);\n }\n encodeType() {\n return slebEncode(-3 /* Nat */);\n }\n decodeValue(b, t) {\n this.checkType(t);\n return lebDecode(b);\n }\n get name() {\n return 'nat';\n }\n valueToString(x) {\n return x.toString();\n }\n}\n/**\n * Represents an IDL Float\n */\nexport class FloatClass extends PrimitiveType {\n constructor(_bits) {\n super();\n this._bits = _bits;\n if (_bits !== 32 && _bits !== 64) {\n throw new Error('not a valid float type');\n }\n }\n accept(v, d) {\n return v.visitFloat(this, d);\n }\n covariant(x) {\n return typeof x === 'number' || x instanceof Number;\n }\n encodeValue(x) {\n const buf = Buffer.allocUnsafe(this._bits / 8);\n if (this._bits === 32) {\n buf.writeFloatLE(x, 0);\n }\n else {\n buf.writeDoubleLE(x, 0);\n }\n return buf;\n }\n encodeType() {\n const opcode = this._bits === 32 ? -13 /* Float32 */ : -14 /* Float64 */;\n return slebEncode(opcode);\n }\n decodeValue(b, t) {\n this.checkType(t);\n const x = safeRead(b, this._bits / 8);\n if (this._bits === 32) {\n return x.readFloatLE(0);\n }\n else {\n return x.readDoubleLE(0);\n }\n }\n get name() {\n return 'float' + this._bits;\n }\n valueToString(x) {\n return x.toString();\n }\n}\n/**\n * Represents an IDL fixed-width Int(n)\n */\nexport class FixedIntClass extends PrimitiveType {\n constructor(_bits) {\n super();\n this._bits = _bits;\n }\n accept(v, d) {\n return v.visitFixedInt(this, d);\n }\n covariant(x) {\n const min = BigInt(2) ** BigInt(this._bits - 1) * BigInt(-1);\n const max = BigInt(2) ** BigInt(this._bits - 1) - BigInt(1);\n if (typeof x === 'bigint') {\n return x >= min && x <= max;\n }\n else if (Number.isInteger(x)) {\n const v = BigInt(x);\n return v >= min && v <= max;\n }\n else {\n return false;\n }\n }\n encodeValue(x) {\n return writeIntLE(x, this._bits / 8);\n }\n encodeType() {\n const offset = Math.log2(this._bits) - 3;\n return slebEncode(-9 - offset);\n }\n decodeValue(b, t) {\n this.checkType(t);\n const num = readIntLE(b, this._bits / 8);\n if (this._bits <= 32) {\n return Number(num);\n }\n else {\n return num;\n }\n }\n get name() {\n return `int${this._bits}`;\n }\n valueToString(x) {\n return x.toString();\n }\n}\n/**\n * Represents an IDL fixed-width Nat(n)\n */\nexport class FixedNatClass extends PrimitiveType {\n constructor(bits) {\n super();\n this.bits = bits;\n }\n accept(v, d) {\n return v.visitFixedNat(this, d);\n }\n covariant(x) {\n const max = BigInt(2) ** BigInt(this.bits);\n if (typeof x === 'bigint' && x > BigInt(0)) {\n return x < max;\n }\n else if (Number.isInteger(x) && x >= 0) {\n const v = BigInt(x);\n return v < max;\n }\n else {\n return false;\n }\n }\n encodeValue(x) {\n return writeUIntLE(x, this.bits / 8);\n }\n encodeType() {\n const offset = Math.log2(this.bits) - 3;\n return slebEncode(-5 - offset);\n }\n decodeValue(b, t) {\n this.checkType(t);\n const num = readUIntLE(b, this.bits / 8);\n if (this.bits <= 32) {\n return Number(num);\n }\n else {\n return num;\n }\n }\n get name() {\n return `nat${this.bits}`;\n }\n valueToString(x) {\n return x.toString();\n }\n}\n/**\n * Represents an IDL Array\n * @param {Type} t\n */\nexport class VecClass extends ConstructType {\n constructor(_type) {\n super();\n this._type = _type;\n // If true, this vector is really a blob and we can just use memcpy.\n this._blobOptimization = false;\n if (_type instanceof FixedNatClass && _type.bits === 8) {\n this._blobOptimization = true;\n }\n }\n accept(v, d) {\n return v.visitVec(this, this._type, d);\n }\n covariant(x) {\n return Array.isArray(x) && x.every(v => this._type.covariant(v));\n }\n encodeValue(x) {\n const len = lebEncode(x.length);\n if (this._blobOptimization) {\n return Buffer.concat([len, Buffer.from(x)]);\n }\n return Buffer.concat([len, ...x.map(d => this._type.encodeValue(d))]);\n }\n _buildTypeTableImpl(typeTable) {\n this._type.buildTypeTable(typeTable);\n const opCode = slebEncode(-19 /* Vector */);\n const buffer = this._type.encodeType(typeTable);\n typeTable.add(this, Buffer.concat([opCode, buffer]));\n }\n decodeValue(b, t) {\n const vec = this.checkType(t);\n if (!(vec instanceof VecClass)) {\n throw new Error('Not a vector type');\n }\n const len = Number(lebDecode(b));\n if (this._blobOptimization) {\n return [...new Uint8Array(b.read(len))];\n }\n const rets = [];\n for (let i = 0; i < len; i++) {\n rets.push(this._type.decodeValue(b, vec._type));\n }\n return rets;\n }\n get name() {\n return `vec ${this._type.name}`;\n }\n display() {\n return `vec ${this._type.display()}`;\n }\n valueToString(x) {\n const elements = x.map(e => this._type.valueToString(e));\n return 'vec {' + elements.join('; ') + '}';\n }\n}\n/**\n * Represents an IDL Option\n * @param {Type} t\n */\nexport class OptClass extends ConstructType {\n constructor(_type) {\n super();\n this._type = _type;\n }\n accept(v, d) {\n return v.visitOpt(this, this._type, d);\n }\n covariant(x) {\n return Array.isArray(x) && (x.length === 0 || (x.length === 1 && this._type.covariant(x[0])));\n }\n encodeValue(x) {\n if (x.length === 0) {\n return Buffer.from([0]);\n }\n else {\n return Buffer.concat([Buffer.from([1]), this._type.encodeValue(x[0])]);\n }\n }\n _buildTypeTableImpl(typeTable) {\n this._type.buildTypeTable(typeTable);\n const opCode = slebEncode(-18 /* Opt */);\n const buffer = this._type.encodeType(typeTable);\n typeTable.add(this, Buffer.concat([opCode, buffer]));\n }\n decodeValue(b, t) {\n const opt = this.checkType(t);\n if (!(opt instanceof OptClass)) {\n throw new Error('Not an option type');\n }\n const len = safeRead(b, 1).toString('hex');\n if (len === '00') {\n return [];\n }\n else if (len === '01') {\n return [this._type.decodeValue(b, opt._type)];\n }\n else {\n throw new Error('Not an option value');\n }\n }\n get name() {\n return `opt ${this._type.name}`;\n }\n display() {\n return `opt ${this._type.display()}`;\n }\n valueToString(x) {\n if (x.length === 0) {\n return 'null';\n }\n else {\n return `opt ${this._type.valueToString(x[0])}`;\n }\n }\n}\n/**\n * Represents an IDL Record\n * @param {Object} [fields] - mapping of function name to Type\n */\nexport class RecordClass extends ConstructType {\n constructor(fields = {}) {\n super();\n this._fields = Object.entries(fields).sort((a, b) => idlLabelToId(a[0]) - idlLabelToId(b[0]));\n }\n accept(v, d) {\n return v.visitRecord(this, this._fields, d);\n }\n tryAsTuple() {\n const res = [];\n for (let i = 0; i < this._fields.length; i++) {\n const [key, type] = this._fields[i];\n if (key !== `_${i}_`) {\n return null;\n }\n res.push(type);\n }\n return res;\n }\n covariant(x) {\n return (typeof x === 'object' &&\n this._fields.every(([k, t]) => {\n if (!x.hasOwnProperty(k)) {\n throw new Error(`Record is missing key \"${k}\".`);\n }\n return t.covariant(x[k]);\n }));\n }\n encodeValue(x) {\n const values = this._fields.map(([key]) => x[key]);\n const bufs = zipWith(this._fields, values, ([, c], d) => c.encodeValue(d));\n return Buffer.concat(bufs);\n }\n _buildTypeTableImpl(T) {\n this._fields.forEach(([_, value]) => value.buildTypeTable(T));\n const opCode = slebEncode(-20 /* Record */);\n const len = lebEncode(this._fields.length);\n const fields = this._fields.map(([key, value]) => Buffer.concat([lebEncode(idlLabelToId(key)), value.encodeType(T)]));\n T.add(this, Buffer.concat([opCode, len, Buffer.concat(fields)]));\n }\n decodeValue(b, t) {\n const record = this.checkType(t);\n if (!(record instanceof RecordClass)) {\n throw new Error('Not a record type');\n }\n const x = {};\n let idx = 0;\n for (const [hash, type] of record._fields) {\n if (idx >= this._fields.length || idlLabelToId(this._fields[idx][0]) !== idlLabelToId(hash)) {\n // skip field\n type.decodeValue(b, type);\n continue;\n }\n const [expectKey, expectType] = this._fields[idx];\n x[expectKey] = expectType.decodeValue(b, type);\n idx++;\n }\n if (idx < this._fields.length) {\n throw new Error('Cannot find field ' + this._fields[idx][0]);\n }\n return x;\n }\n get name() {\n const fields = this._fields.map(([key, value]) => key + ':' + value.name);\n return `record {${fields.join('; ')}}`;\n }\n display() {\n const fields = this._fields.map(([key, value]) => key + ':' + value.display());\n return `record {${fields.join('; ')}}`;\n }\n valueToString(x) {\n const values = this._fields.map(([key]) => x[key]);\n const fields = zipWith(this._fields, values, ([k, c], d) => k + '=' + c.valueToString(d));\n return `record {${fields.join('; ')}}`;\n }\n}\n/**\n * Represents Tuple, a syntactic sugar for Record.\n * @param {Type} components\n */\nexport class TupleClass extends RecordClass {\n constructor(_components) {\n const x = {};\n _components.forEach((e, i) => (x['_' + i + '_'] = e));\n super(x);\n this._components = _components;\n }\n accept(v, d) {\n return v.visitTuple(this, this._components, d);\n }\n covariant(x) {\n // `>=` because tuples can be covariant when encoded.\n return (Array.isArray(x) &&\n x.length >= this._fields.length &&\n this._components.every((t, i) => t.covariant(x[i])));\n }\n encodeValue(x) {\n const bufs = zipWith(this._components, x, (c, d) => c.encodeValue(d));\n return Buffer.concat(bufs);\n }\n decodeValue(b, t) {\n const tuple = this.checkType(t);\n if (!(tuple instanceof TupleClass)) {\n throw new Error('not a tuple type');\n }\n if (tuple._components.length < this._components.length) {\n throw new Error('tuple mismatch');\n }\n const res = [];\n for (const [i, wireType] of tuple._components.entries()) {\n if (i >= this._components.length) {\n // skip value\n wireType.decodeValue(b, wireType);\n }\n else {\n res.push(this._components[i].decodeValue(b, wireType));\n }\n }\n return res;\n }\n display() {\n const fields = this._components.map(value => value.display());\n return `record {${fields.join('; ')}}`;\n }\n valueToString(values) {\n const fields = zipWith(this._components, values, (c, d) => c.valueToString(d));\n return `record {${fields.join('; ')}}`;\n }\n}\n/**\n * Represents an IDL Variant\n * @param {Object} [fields] - mapping of function name to Type\n */\nexport class VariantClass extends ConstructType {\n constructor(fields = {}) {\n super();\n this._fields = Object.entries(fields).sort((a, b) => idlLabelToId(a[0]) - idlLabelToId(b[0]));\n }\n accept(v, d) {\n return v.visitVariant(this, this._fields, d);\n }\n covariant(x) {\n return (typeof x === 'object' &&\n Object.entries(x).length === 1 &&\n this._fields.every(([k, v]) => {\n return !x.hasOwnProperty(k) || v.covariant(x[k]);\n }));\n }\n encodeValue(x) {\n for (let i = 0; i < this._fields.length; i++) {\n const [name, type] = this._fields[i];\n if (x.hasOwnProperty(name)) {\n const idx = lebEncode(i);\n const buf = type.encodeValue(x[name]);\n return Buffer.concat([idx, buf]);\n }\n }\n throw Error('Variant has no data: ' + x);\n }\n _buildTypeTableImpl(typeTable) {\n this._fields.forEach(([, type]) => {\n type.buildTypeTable(typeTable);\n });\n const opCode = slebEncode(-21 /* Variant */);\n const len = lebEncode(this._fields.length);\n const fields = this._fields.map(([key, value]) => Buffer.concat([lebEncode(idlLabelToId(key)), value.encodeType(typeTable)]));\n typeTable.add(this, Buffer.concat([opCode, len, ...fields]));\n }\n decodeValue(b, t) {\n const variant = this.checkType(t);\n if (!(variant instanceof VariantClass)) {\n throw new Error('Not a variant type');\n }\n const idx = Number(lebDecode(b));\n if (idx >= variant._fields.length) {\n throw Error('Invalid variant index: ' + idx);\n }\n const [wireHash, wireType] = variant._fields[idx];\n for (const [key, expectType] of this._fields) {\n if (idlLabelToId(wireHash) === idlLabelToId(key)) {\n const value = expectType.decodeValue(b, wireType);\n return { [key]: value };\n }\n }\n throw new Error('Cannot find field hash ' + wireHash);\n }\n get name() {\n const fields = this._fields.map(([key, type]) => key + ':' + type.name);\n return `variant {${fields.join('; ')}}`;\n }\n display() {\n const fields = this._fields.map(([key, type]) => key + (type.name === 'null' ? '' : `:${type.display()}`));\n return `variant {${fields.join('; ')}}`;\n }\n valueToString(x) {\n for (const [name, type] of this._fields) {\n if (x.hasOwnProperty(name)) {\n const value = type.valueToString(x[name]);\n if (value === 'null') {\n return `variant {${name}}`;\n }\n else {\n return `variant {${name}=${value}}`;\n }\n }\n }\n throw new Error('Variant has no data: ' + x);\n }\n}\n/**\n * Represents a reference to an IDL type, used for defining recursive data\n * types.\n */\nexport class RecClass extends ConstructType {\n constructor() {\n super(...arguments);\n this._id = RecClass._counter++;\n this._type = undefined;\n }\n accept(v, d) {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n return v.visitRec(this, this._type, d);\n }\n fill(t) {\n this._type = t;\n }\n getType() {\n return this._type;\n }\n covariant(x) {\n return this._type ? this._type.covariant(x) : false;\n }\n encodeValue(x) {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n return this._type.encodeValue(x);\n }\n _buildTypeTableImpl(typeTable) {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n typeTable.add(this, Buffer.alloc(0));\n this._type.buildTypeTable(typeTable);\n typeTable.merge(this, this._type.name);\n }\n decodeValue(b, t) {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n return this._type.decodeValue(b, t);\n }\n get name() {\n return `rec_${this._id}`;\n }\n display() {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n return `μ${this.name}.${this._type.name}`;\n }\n valueToString(x) {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n return this._type.valueToString(x);\n }\n}\nRecClass._counter = 0;\nfunction decodePrincipalId(b) {\n const x = safeRead(b, 1).toString('hex');\n if (x !== '01') {\n throw new Error('Cannot decode principal');\n }\n const len = Number(lebDecode(b));\n const hex = safeRead(b, len).toString('hex').toUpperCase();\n return PrincipalId.fromHex(hex);\n}\n/**\n * Represents an IDL principal reference\n */\nexport class PrincipalClass extends PrimitiveType {\n accept(v, d) {\n return v.visitPrincipal(this, d);\n }\n covariant(x) {\n return x && x._isPrincipal;\n }\n encodeValue(x) {\n const hex = x.toHex();\n const buf = Buffer.from(hex, 'hex');\n const len = lebEncode(buf.length);\n return Buffer.concat([Buffer.from([1]), len, buf]);\n }\n encodeType() {\n return slebEncode(-24 /* Principal */);\n }\n decodeValue(b, t) {\n this.checkType(t);\n return decodePrincipalId(b);\n }\n get name() {\n return 'principal';\n }\n valueToString(x) {\n return `${this.name} \"${x.toText()}\"`;\n }\n}\n/**\n * Represents an IDL function reference.\n * @param argTypes Argument types.\n * @param retTypes Return types.\n * @param annotations Function annotations.\n */\nexport class FuncClass extends ConstructType {\n constructor(argTypes, retTypes, annotations = []) {\n super();\n this.argTypes = argTypes;\n this.retTypes = retTypes;\n this.annotations = annotations;\n }\n static argsToString(types, v) {\n if (types.length !== v.length) {\n throw new Error('arity mismatch');\n }\n return '(' + types.map((t, i) => t.valueToString(v[i])).join(', ') + ')';\n }\n accept(v, d) {\n return v.visitFunc(this, d);\n }\n covariant(x) {\n return (Array.isArray(x) && x.length === 2 && x[0] && x[0]._isPrincipal && typeof x[1] === 'string');\n }\n encodeValue(x) {\n const hex = x[0].toHex();\n const buf = Buffer.from(hex, 'hex');\n const len = lebEncode(buf.length);\n const canister = Buffer.concat([Buffer.from([1]), len, buf]);\n const method = Buffer.from(x[1], 'utf8');\n const methodLen = lebEncode(method.length);\n return Buffer.concat([Buffer.from([1]), canister, methodLen, method]);\n }\n _buildTypeTableImpl(T) {\n this.argTypes.forEach(arg => arg.buildTypeTable(T));\n this.retTypes.forEach(arg => arg.buildTypeTable(T));\n const opCode = slebEncode(-22 /* Func */);\n const argLen = lebEncode(this.argTypes.length);\n const args = Buffer.concat(this.argTypes.map(arg => arg.encodeType(T)));\n const retLen = lebEncode(this.retTypes.length);\n const rets = Buffer.concat(this.retTypes.map(arg => arg.encodeType(T)));\n const annLen = lebEncode(this.annotations.length);\n const anns = Buffer.concat(this.annotations.map(a => this.encodeAnnotation(a)));\n T.add(this, Buffer.concat([opCode, argLen, args, retLen, rets, annLen, anns]));\n }\n decodeValue(b) {\n const x = safeRead(b, 1).toString('hex');\n if (x !== '01') {\n throw new Error('Cannot decode function reference');\n }\n const canister = decodePrincipalId(b);\n const mLen = Number(lebDecode(b));\n const buf = safeRead(b, mLen);\n if (!isValidUTF8(buf)) {\n throw new Error('Not valid UTF8 method name');\n }\n const method = buf.toString('utf8');\n return [canister, method];\n }\n get name() {\n const args = this.argTypes.map(arg => arg.name).join(', ');\n const rets = this.retTypes.map(arg => arg.name).join(', ');\n const annon = ' ' + this.annotations.join(' ');\n return `(${args}) -> (${rets})${annon}`;\n }\n valueToString([principal, str]) {\n return `func \"${principal.toText()}\".${str}`;\n }\n display() {\n const args = this.argTypes.map(arg => arg.display()).join(', ');\n const rets = this.retTypes.map(arg => arg.display()).join(', ');\n const annon = ' ' + this.annotations.join(' ');\n return `(${args}) → (${rets})${annon}`;\n }\n encodeAnnotation(ann) {\n if (ann === 'query') {\n return Buffer.from([1]);\n }\n else if (ann === 'oneway') {\n return Buffer.from([2]);\n }\n else {\n throw new Error('Illeagal function annotation');\n }\n }\n}\nexport class ServiceClass extends ConstructType {\n constructor(fields) {\n super();\n this._fields = Object.entries(fields).sort((a, b) => idlLabelToId(a[0]) - idlLabelToId(b[0]));\n }\n accept(v, d) {\n return v.visitService(this, d);\n }\n covariant(x) {\n return x && x._isPrincipal;\n }\n encodeValue(x) {\n const hex = x.toHex();\n const buf = Buffer.from(hex, 'hex');\n const len = lebEncode(buf.length);\n return Buffer.concat([Buffer.from([1]), len, buf]);\n }\n _buildTypeTableImpl(T) {\n this._fields.forEach(([_, func]) => func.buildTypeTable(T));\n const opCode = slebEncode(-23 /* Service */);\n const len = lebEncode(this._fields.length);\n const meths = this._fields.map(([label, func]) => {\n const labelBuf = Buffer.from(label, 'utf8');\n const labelLen = lebEncode(labelBuf.length);\n return Buffer.concat([labelLen, labelBuf, func.encodeType(T)]);\n });\n T.add(this, Buffer.concat([opCode, len, Buffer.concat(meths)]));\n }\n decodeValue(b) {\n return decodePrincipalId(b);\n }\n get name() {\n const fields = this._fields.map(([key, value]) => key + ':' + value.name);\n return `service {${fields.join('; ')}}`;\n }\n valueToString(x) {\n return `service \"${x.toText()}\"`;\n }\n}\n/**\n *\n * @param x\n * @returns {string}\n */\nfunction toReadableString(x) {\n if (typeof x === 'bigint') {\n return `BigInt(${x})`;\n }\n else {\n return JSON.stringify(x);\n }\n}\n/**\n * Encode a array of values\n * @returns {Buffer} serialised value\n */\nexport function encode(argTypes, args) {\n if (args.length < argTypes.length) {\n throw Error('Wrong number of message arguments');\n }\n const typeTable = new TypeTable();\n argTypes.forEach(t => t.buildTypeTable(typeTable));\n const magic = Buffer.from(magicNumber, 'utf8');\n const table = typeTable.encode();\n const len = lebEncode(args.length);\n const typs = Buffer.concat(argTypes.map(t => t.encodeType(typeTable)));\n const vals = Buffer.concat(zipWith(argTypes, args, (t, x) => {\n if (!t.covariant(x)) {\n throw new Error(`Invalid ${t.display()} argument: ${toReadableString(x)}`);\n }\n return t.encodeValue(x);\n }));\n return blobFromBuffer(Buffer.concat([magic, table, len, typs, vals]));\n}\n/**\n * Decode a binary value\n * @param retTypes - Types expected in the buffer.\n * @param bytes - hex-encoded string, or buffer.\n * @returns Value deserialised to JS type\n */\nexport function decode(retTypes, bytes) {\n const b = new Pipe(bytes);\n if (bytes.byteLength < magicNumber.length) {\n throw new Error('Message length smaller than magic number');\n }\n const magic = safeRead(b, magicNumber.length).toString();\n if (magic !== magicNumber) {\n throw new Error('Wrong magic number: ' + magic);\n }\n function readTypeTable(pipe) {\n const typeTable = [];\n const len = Number(lebDecode(pipe));\n for (let i = 0; i < len; i++) {\n const ty = Number(slebDecode(pipe));\n switch (ty) {\n case -18 /* Opt */:\n case -19 /* Vector */: {\n const t = Number(slebDecode(pipe));\n typeTable.push([ty, t]);\n break;\n }\n case -20 /* Record */:\n case -21 /* Variant */: {\n const fields = [];\n let objectLength = Number(lebDecode(pipe));\n let prevHash;\n while (objectLength--) {\n const hash = Number(lebDecode(pipe));\n if (hash >= Math.pow(2, 32)) {\n throw new Error('field id out of 32-bit range');\n }\n if (typeof prevHash === 'number' && prevHash >= hash) {\n throw new Error('field id collision or not sorted');\n }\n prevHash = hash;\n const t = Number(slebDecode(pipe));\n fields.push([hash, t]);\n }\n typeTable.push([ty, fields]);\n break;\n }\n case -22 /* Func */: {\n for (let k = 0; k < 2; k++) {\n let funcLength = Number(lebDecode(pipe));\n while (funcLength--) {\n slebDecode(pipe);\n }\n }\n const annLen = Number(lebDecode(pipe));\n safeRead(pipe, annLen);\n typeTable.push([ty, undefined]);\n break;\n }\n case -23 /* Service */: {\n let servLength = Number(lebDecode(pipe));\n while (servLength--) {\n const l = Number(lebDecode(pipe));\n safeRead(pipe, l);\n slebDecode(pipe);\n }\n typeTable.push([ty, undefined]);\n break;\n }\n default:\n throw new Error('Illegal op_code: ' + ty);\n }\n }\n const rawList = [];\n const length = Number(lebDecode(pipe));\n for (let i = 0; i < length; i++) {\n rawList.push(Number(slebDecode(pipe)));\n }\n return [typeTable, rawList];\n }\n const [rawTable, rawTypes] = readTypeTable(b);\n if (rawTypes.length < retTypes.length) {\n throw new Error('Wrong number of return values');\n }\n const table = rawTable.map(_ => Rec());\n function getType(t) {\n if (t < -24) {\n throw new Error('future value not supported');\n }\n if (t < 0) {\n switch (t) {\n case -1:\n return Null;\n case -2:\n return Bool;\n case -3:\n return Nat;\n case -4:\n return Int;\n case -5:\n return Nat8;\n case -6:\n return Nat16;\n case -7:\n return Nat32;\n case -8:\n return Nat64;\n case -9:\n return Int8;\n case -10:\n return Int16;\n case -11:\n return Int32;\n case -12:\n return Int64;\n case -13:\n return Float32;\n case -14:\n return Float64;\n case -15:\n return Text;\n case -16:\n return Reserved;\n case -17:\n return Empty;\n case -24:\n return Principal;\n default:\n throw new Error('Illegal op_code: ' + t);\n }\n }\n if (t >= rawTable.length) {\n throw new Error('type index out of range');\n }\n return table[t];\n }\n function buildType(entry) {\n switch (entry[0]) {\n case -19 /* Vector */: {\n const ty = getType(entry[1]);\n return Vec(ty);\n }\n case -18 /* Opt */: {\n const ty = getType(entry[1]);\n return Opt(ty);\n }\n case -20 /* Record */: {\n const fields = {};\n for (const [hash, ty] of entry[1]) {\n const name = `_${hash}_`;\n fields[name] = getType(ty);\n }\n const record = Record(fields);\n const tuple = record.tryAsTuple();\n if (Array.isArray(tuple)) {\n return Tuple(...tuple);\n }\n else {\n return record;\n }\n }\n case -21 /* Variant */: {\n const fields = {};\n for (const [hash, ty] of entry[1]) {\n const name = `_${hash}_`;\n fields[name] = getType(ty);\n }\n return Variant(fields);\n }\n case -22 /* Func */: {\n return Func([], [], []);\n }\n case -23 /* Service */: {\n return Service({});\n }\n default:\n throw new Error('Illegal op_code: ' + entry[0]);\n }\n }\n rawTable.forEach((entry, i) => {\n const t = buildType(entry);\n table[i].fill(t);\n });\n const types = rawTypes.map(t => getType(t));\n const output = retTypes.map((t, i) => {\n return t.decodeValue(b, types[i]);\n });\n // skip unused values\n for (let ind = retTypes.length; ind < types.length; ind++) {\n types[ind].decodeValue(b, types[ind]);\n }\n if (b.buffer.length > 0) {\n throw new Error('decode: Left-over bytes');\n }\n return output;\n}\n// Export Types instances.\nexport const Empty = new EmptyClass();\nexport const Reserved = new ReservedClass();\nexport const Bool = new BoolClass();\nexport const Null = new NullClass();\nexport const Text = new TextClass();\nexport const Int = new IntClass();\nexport const Nat = new NatClass();\nexport const Float32 = new FloatClass(32);\nexport const Float64 = new FloatClass(64);\nexport const Int8 = new FixedIntClass(8);\nexport const Int16 = new FixedIntClass(16);\nexport const Int32 = new FixedIntClass(32);\nexport const Int64 = new FixedIntClass(64);\nexport const Nat8 = new FixedNatClass(8);\nexport const Nat16 = new FixedNatClass(16);\nexport const Nat32 = new FixedNatClass(32);\nexport const Nat64 = new FixedNatClass(64);\nexport const Principal = new PrincipalClass();\nexport function Tuple(...types) {\n return new TupleClass(types);\n}\nexport function Vec(t) {\n return new VecClass(t);\n}\nexport function Opt(t) {\n return new OptClass(t);\n}\nexport function Record(t) {\n return new RecordClass(t);\n}\nexport function Variant(fields) {\n return new VariantClass(fields);\n}\nexport function Rec() {\n return new RecClass();\n}\nexport function Func(args, ret, annotations = []) {\n return new FuncClass(args, ret, annotations);\n}\nexport function Service(t) {\n return new ServiceClass(t);\n}\n//# sourceMappingURL=idl.js.map","import * as base64Arraybuffer from 'base64-arraybuffer';\n/* tslint:disable */\n/* eslint-disable */\nlet wasm;\n// This WASM is generated from the BLS Rust code of the Agent RS (see\n// http://github.com/dfinity/agent-rs/)\n// Once the WASM is compiled, simply base64 encode it and include it in this string.\nconst wasmBytesBase64 = `\n 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\n g8AAEF8CQAJAIAZB6AFqEFoNACAGQShqEIQBDQAgBkGIPWoQS0EAIQcgBkGIwwBqQTgQchogBkG4IWpBOBByGiAGQYjA\n AGoQSyAGQcjEAGoQSyAGQcjJAGoQSyAGQcjMAGoQSyAGQagGahBLIAZBsAxqEEsgBkHIzwBqEEsgBkHQ1QBqEEsgBkHY\n 2wBqEEsgBkG4FWoQSyAGQZgjaiAGQcjJAGpBwAEQZxogBkHYJGogBkHIzABqQcABEGcaIAZBmCZqIAZBqAZqQcABEGca\n IAZB2CdqIAZBsAxqQcABEGcaIAZBmClqIAZByM8AakHAARBnGiAGQdgqaiAGQdDVAGpBwAEQZxogBkGYLGogBkHY2wBq\n QcABEGcaIAZB2C1qIAZBuBVqQcABEGcaIAZBuBVqQecAEHIaIAZBiMAAaiAGQShqEH8gBkGIwABqEBggBkGYI2ogBkEo\n ahB/A0AgB0HACkYEQCAGQbghaiAGQegBahBrIAYpA7ghIRcgBkG4IWpBARCdASAGQbghahBEIAYpA7ghIRYgBkGIwwBq\n IAZBuCFqEGsgBkGIwwBqQQEQnQEgBkGIwwBqEEQgBkG4IWogBkGIwwBqIBdCAoGnEE8gBkGIwABqIAZBKGogFkICgacQ\n bSAGQcjEAGogBkGIwABqEH8gBkG4IWoQKUEDaiIJQQJ2IgdBAWohAkEAIQgCQAJAAkADQAJAIAZBuCFqQQUQjAEhAyAC\n IAhGBEAgCUGYA0kNASACQecAQbCEwAAQPAALIAhB5wBGDQIgBkG4FWogCGogA0FwaiIDOgAAIAZBuCFqIANBGHRBGHUQ\n ngEgBkG4IWoQRCAGQbghakEEEDsgCEEBaiEIDAELCyAGQbgVaiACaiADOgAAIANBGHRBGHVBf2oiA0EBdiECIANBD0sN\n ASAGQYg9aiAGQZgjaiACQcABbGoQfwNAIAdBf0YEQCAGQYg9aiAGQcjEAGoQcyAGQZgjaiAGQYg9akHAARBnGgwICyAH\n QeYASw0DIAZBiMAAaiAGQZgjaiAGQbgVaiAHaiwAABAfIAdBf2ohByAGQYg9ahAYIAZBiD1qEBggBkGIPWoQGCAGQYg9\n ahAYIAZBiD1qIAZBiMAAahAMDAALAAtB5wBB5wBBoITAABA8AAsgAkEIQcCEwAAQPAALIAdB5wBB0ITAABA8AAUgBkHI\n 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\n UtcEAKAIAIgFBASACdCICcQRAIAAoAggMAQtB1LXBACABIAJyNgIAIAALIQEgACAENgIIIAEgBDYCDCAEIAA2AgwgBCAB\n NgIIC0EAIQVB6LjBACgCACIAIAZNDQBB6LjBACAAIAZrIgI2AgBB8LjBAEHwuMEAKAIAIgEgBmoiADYCACAAIAJBAXI2A\n gQgASAGQQNyNgIEIAFBCGoPCyAFDwsgASAHNgIYIAMoAhAiAARAIAEgADYCECAAIAE2AhgLIANBFGooAgAiAEUNACABQR\n RqIAA2AgAgACABNgIYCwJAIAVBEE8EQCADIAZBA3I2AgQgAyAGaiIEIAVBAXI2AgQgBCAFaiAFNgIAQeS4wQAoAgAiAAR\n AIABBA3YiAkEDdEHctcEAaiEAQey4wQAoAgAhBwJ/QdS1wQAoAgAiAUEBIAJBH3F0IgJxBEAgACgCCAwBC0HUtcEAIAEg\n AnI2AgAgAAshAiAAIAc2AgggAiAHNgIMIAcgADYCDCAHIAI2AggLQey4wQAgBDYCAEHkuMEAIAU2AgAMAQsgAyAFIAZqI\n gBBA3I2AgQgACADaiIAIAAoAgRBAXI2AgQLIANBCGoLtA8BA38jAEGAC2siAiQAIAJBCGoQSyACQcgBakE4EHIaIAJBAT\n YCgAIgAkGIAmpBOBByGiACQQE2AsACIAJByAJqQTgQchogAkEBNgKAAyACQYgDakE4EHIaIAJBATYCwAMgAkHIA2pBOBB\n yGiACQQE2AoAEIAJBiARqQQEQigEgAkHIBGpBOBByGiACQQE2AoAFIAJBiAVqQTgQchogAkEBNgLABSACQcgFaiABEIUB\n IAJBiAZqQTgQchogAkEBNgLABiACQcgGakE4EHIaIAJBATYCgAcgAkGIB2pBOBByGiACQQE2AsAHIAJByAdqQTgQchogA\n kEBNgKACCACQcgFahBYIQMgAkHICWpB4ITAABBfIAJBiApqIAJByAlqEIsBIAJByAFqIAJBiApqEKUBIAJByAlqQZiFwA\n AQXyACQYgKaiACQcgJahCLASACQYgCaiACQYgKahClASACQcgFahADIAJByAVqQQsQUiACQYgGaiACQcgFahClASACQYg\n GaiACQYgEahB4IAJBiAZqEEQgAkGIBmogAkHIBWoQSCACQYgFaiACQcgBahClASACQYgFaiACQYgGahBIIAJBiAZqIAJB\n iARqEHggAkGIBmoQRCACQYgGaiACQYgCahBIIAJBiAZqEEEgAkGIBmoQRCACQYgDaiACQYgGahClASACQcgDaiACQcgFa\n hClASACQcgDaiACQYgDahBIIAJByAdqIAJBiANqEKUBIAJByAdqEAMgAkHIBmogAkGIBWoQpQEgAkHIBmoQAyACQYgGai\n ACQcgBahClASACQYgGaiACQcgGahBIIAJByAdqIAJBiAZqEHggAkHIB2oQRCACQcgHaiACQYgDahBIIAJByAZqIAJBiAV\n qEEggAkGIBmogAkGIAmoQpQEgAkGIBmogAkHIBmoQSCACQcgHaiACQYgGahB4IAJByAdqEEQgAkGIBmogAkHIB2oQpQEg\n AkGIBmogAkGIBWoQSCACQYgGaiACQYgHahBcIQQgAkGIBWogAkGIBmoQpQEgAkGIBWogAkGIB2oQNCACQYgFaiACQcgHa\n hBIIAJBiANqIAJBiAVqEEggAkHIA2ogAkGIBWoQSCACQcgFaiABEEggAkHIBmogAkGIBWoQpQEgAkHIBmoQAyACQYgFai\n ACQcgGahClASACQYgFaiACQcgFahBIIAJByAVqIAJBiAZqEKUBIAJByAVqQQsQUiACQcgJakHQhcAAEF8gAkGICmogAkH\n ICWoQiwEgAkHIAmogAkGICmoQpQEgAkHIAmogAkGIB2oQSCACQYgDaiACQcgDakEBIARrIgEQeSACQcgGaiACQYgFaiAB\n EHkgAkGIBmogAkHIBWogARB5IAJBiAdqIAJByAJqIAEQeSACQYgKaiACQYgGaiACQYgHahAjIAJByARqIAJBiApqEKUBI\n AJByARqIAJByAZqEEggAkHIBGoQWCEBIAJBiAZqIAJByARqEKUBIAJBiAZqEEEgAkGIBmoQRCACQcgEaiACQYgGaiABIA\n NzEHkgAkGICmpBiIbAABBfIAJBiAhqIAJBiApqEIsBQTghAQNAIAFBoAVGRQRAIAJBiAhqIAJBiANqEEggAkHICWogAUG\n IhsAAahBfIAFBOGohASACQYgKaiACQcgJahCLASACQYgGaiACQYgKahClASACQYgIaiACQYgGahB4IAJBiAhqEEQMAQsL\n IAJByAhqIAJBiANqEIUBIAJByAlqQaiLwAAQXyACQYgKaiACQcgJahCLASACQYgGaiACQYgKahClASACQcgIaiACQYgGa\n hB4IAJByAhqEERBACEBA0AgAUH4A0ZFBEAgAkHICGogAkGIA2oQSCACQcgJaiABQeCLwABqEF8gAUE4aiEBIAJBiApqIA\n JByAlqEIsBIAJBiAZqIAJBiApqEKUBIAJByAhqIAJBiAZqEHggAkHICGoQRAwBCwsgAkGICmpB2I/AABBfIAJBiAlqIAJ\n BiApqEIsBQQAhAQNAIAFByAZGBEACQCACQcgJaiACQYgDahCFASACQcgKakHYlsAAEF8gAkGICmogAkHICmoQiwEgAkGI\n BmogAkGICmoQpQEgAkHICWogAkGIBmoQeCACQcgJahBEQQAhAQNAIAFBkAZGDQEgAkHICWogAkGIA2oQSCACQcgKaiABQ\n ZCXwABqEF8gAUE4aiEBIAJBiApqIAJByApqEIsBIAJBiAZqIAJBiApqEKUBIAJByAlqIAJBiAZqEHggAkHICWoQRAwACw\n ALBSACQYgJaiACQYgDahBIIAJByAlqIAFBkJDAAGoQXyABQThqIQEgAkGICmogAkHICWoQiwEgAkGIBmogAkGICmoQpQE\n gAkGICWogAkGIBmoQeCACQYgJahBEDAELCyACQYgJaiACQcgEahBIIAJBiAZqIAJBiAhqEKUBIAJBiAZqIAJByAlqEEgg\n AkEIaiACQYgGahClASACQYgGaiACQYgJahClASACQYgGaiACQcgIahBIIAJByABqIAJBiAZqEKUBIAJBiAZqIAJByAhqE\n KUBIAJBiAZqIAJByAlqEEggAkGIAWogAkGIBmoQpQEgACACQQhqQcABEGcaIAJBgAtqJAALzQ0CE38IfiMAQYADayIBJA\n AgADQCOCIUIBR+QoCAgBBaBEAgABASCyABQeABakHoABByGiABQcgBaiAAKQMAIhggGEI/hyIZIBggGRAxIAEgASkDyAE\n iFEL//////////wODNwPYASABQdABaikDACIXQgaGIBRCOoiEIRUgF0I6iCEaIABBCGoiCyEFIAAhBkEBIQcDQCAHQQZP\n BEAgAEEYaiEMIABBKGohCyAAQRBqIQcgACkDMCEYQQQhBkEAIQkgAUGgAWohDUEDIQpBAiEIQQchBQJAAkADQCAFQQpLD\n QIgBiAIIAYgCEsbIQ4gBiAKIAYgCksbQQN0QWhqIQ8gAUGYAWogBUEDdCIQIABqQVBqKQMAIhQgFEI/hyAYIBhCP4ciGR\n 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\n OBByGiACQQE2AvgMIAJBgA1qQTgQchogAkG4DWpBATYCACACQYAIakE4EHIaIAJBATYCuAggAkHACGpBOBByGiACQfgIa\n kEBNgIAIAJBgApqIABBgANqIgMQXiACQYAIaiACQYAKahCQASACQYAKaiABQYADaiIFEF4gAkGACGogAkGACmoQDyACQc\n AMahCpASAERQRAIAJBgApqIAMQXiACQcAMaiACQYAKahCQASACQYAKaiABQYACahBeIAJBwAxqIAJBgApqEA8LIAAoAoA\n GQQRHBEAgAkGACmogAEGAAmoQXiACQcAMaiACQYAKahCQASACQYAKaiAFEF4gAkHADGogAkGACmoQDwsgAkGABGogAkHA\n DGogAkGACGoQoQEgAkGABGoQZgsgAkGACGogABCOASACQYAKaiABEI4BIAJBgAhqIABBgAJqIgQQlgEgAkGACGoQrAEgA\n kGACmogAUGAAmoiBRCWASACQYAKahCsASACQYACaiACQYAIahCSASACQYACaiACQYAKahAZIAJBgAhqIAQQkgEgAkGACG\n ogAEGABGoiAxCWASACQYAIahCsASACQYAKaiAFEJIBIAJBgApqIAFBgARqIgUQlgEgAkGACmoQrAEgAkGABmogAkGACGo\n QkgEgAkGABmogAkGACmoQGSACQYAIaiACEJIBIAJBgAhqECsgAkGACmogAkGABGoQkgEgAkGACmoQKyACQYACaiACQYAI\n ahCWASAEIAJBgAJqEJIBIAQgAkGACmoQlgEgAkGABmogAkGACmoQlgEgAkGABGogAkGACGoQlgEgAkGACGogABCSASACQ\n YAIaiADEJYBIAJBgAhqEKwBIAJBgApqIAEQkgEgAkGACmogBRCWASACQYAKahCsASACQYAIaiACQYAKahAZIAJBgARqIA\n JBgAhqEJYBIAJBgAhqIAMQkgEgAkGACGogBRAZIAJBgApqIAJBgAhqEJIBIAJBgApqECsgAyACQYAEahCSASADIAJBgAp\n qEJYBIAJBgAZqIAJBgApqEJYBIAJBgAhqEGYgBCACQYAIahCWAQwDCyAAIAEQBgwECyACQcAMaiABQYAFahBeIAJBgAxq\n IAJBwAxqQcAAEGcaIAJBgAZqIAJBgAxqEKMBCyACQYAGahBmIAJBgAhqIAIQkgEgAkGACGoQKyACQYACaiACQYAIahCWA\n SAFIAJBgAJqEJIBIAJBgARqIAJBgAhqEJIBIAJBgAhqIAAQkgEgAkGACGogAxCWASACQYAIahCsASACQYAKaiABEJIBIA\n JBgApqIAFBgARqEJYBIAJBgApqEKwBIAJBgAhqIAJBgApqEBkgAkGABGogAkGACGoQlgEgAkGACGogAxCSAQJAIARBAkc\n EQCACQcAMaiABQYAFahBeIAJBgAhqIAJBwAxqEKIBDAELIAJBwAxqIAFBgAVqEF4gAkGADGogAkHADGpBwAAQZxogAkGA\n CGogAkGADGoQowELIAJBgAhqEGYgAkGACmogAkGACGoQkgEgAkGACmoQKyADIAJBgARqEJIBIAMgAkGACmoQlgEgAkGAB\n mogAkGACmoQlgEgAkGACGoQZiAFIAJBgAhqEJYBCyACQYAGahCsASACQYAGahBmIAAgAhCSASAAIAJBgAZqEJYBIABBBT\n YCgAYgABCZAQwBCyAAIAEQbAsgAkHADWokAAuaCQIPfwt+IwBBwAJrIgIkACACQeAAakGgp8AAEF8gAEE4EHIhDCACQZg\n BakHwABByGiACQZACakEwEHIaIAwQdCACIAEpAwAiFEL9//P/z///+QF+Qv//////////A4MiETcDiAIgAkHQAGogEUIA\n IAIpA2AiGCAYQj+HIhoQMSAUIAIpA1AiEXwiFiARVK0gAkHYAGopAwAgFEI/h3x8IhRCOocgASkDCCIRQj+HfCARIBRCB\n oYgFkI6iIQiEXwiEiARVK18IRNBASEDAkADQAJAIANBB0YEQCACQZACaiEJIAJB6ABqIQpBByEEIAJB4ABqIQ0gAkGIAm\n ohDkEGIQ8MAQsgA0EBdiIAQQFqIQUgCiAAayEGIAkgAEEDdCIHayEAIAdBCGohCCACQUBrIANBA3QiBCACQeAAamopAwA\n iFiAWQj+HIhQgAikDiAIiESARQj+HEDEgAkHIAGopAwAgEiAVfCIRIBJUrSATIBd8fHwgESACKQNAfCITIBFUrXwhEiAD\n QQFqIQcDQCADIAVNBEAgAkGIAmogBGogE0L9//P/z///+QF+Qv//////////A4MiETcDACACQTBqIBFCACAYIBoQMSACQ\n SBqIBFCACAWIBQQMSACQZgBaiADQQR0aiIAIAJBKGopAwAiGzcDCCAAIAIpAyAiGTcDACACKQMwIhEgE3wiFiARVK0gAk\n E4aikDACASfHwiFEI6hyABIAdBA3RqKQMAIhFCP4d8IBEgFEIGhiAWQjqIhCIRfCISIBFUrXwhEyAVIBl8IhUgGVStIBc\n gG3x8IRcgCUEIaiEJIApBAWohCiAHIQMMAwsgBkEGSw0DIAJBEGogAkHgAGogCGopAwAgAkHgAGogAGopAwB9IhEgEUI/\n hyACQYgCaiAAaikDACACQYgCaiAIaikDAH0iESARQj+HEDEgAikDECIRIBN8IhMgEVStIAJBGGopAwAgEnx8IRIgBUEBa\n iEFIABBeGohACAGQX9qIQYgCEEIaiEIDAALAAsLA0ACQCAEQQ1HBEAgDyAEQQF2IgBrIQUgDiAAQQN0IgtrIRAgDSALay\n EIIBMgF3wgEiAVfCITIBJUrXwhEiAEQQFqIQdBMCEAIAkhBiAKIQMDQCAAIAtGDQIgBUEGTQRAIAIgAyALaikDACAAIAh\n qKQMAfSIRIBFCP4cgACAQaikDACAGIAtqKQMAfSIRIBFCP4cQMSACKQMAIhEgE3wiEyARVK0gAkEIaikDACASfHwhEiAF\n QX9qIQUgBkEIaiEGIANBCGohAyAAQXhqIQAMAQsLIAVBB0HknsAAEDwACyAMIBJC//////////8DgzcDMCACQcACaiQAD\n wsgBEEDdCAMakFIaiATQv//////////A4M3AwAgEkI6hyABIAdBA3RqKQMAIhFCP4d8IBEgEkIGhiATQjqIhCIRfCISIB\n FUrXwhEyAXIARBBHQgAmpBOGoiAEEIaikDAH0gFSAAKQMAIhFUrX0hFyAOQQhqIQ4gDUEIaiENIA9BAWohDyAVIBF9IRU\n gByEEDAALAAsgBkEHQdSewAAQPAAL+QkBBH8jAEGACWsiAiQAIAJBgAhqIAAQXiACIAJBgAhqEF4gAkGACGogAEGAAWoi\n BBBeIAJBgAFqIAJBgAhqEF4gAkGACGogARBeIAIgAkGACGoQDyACQYAIaiABQYABaiIFEF4gAkGAAWogAkGACGoQDyAAK\n AKABiEDAkACQCABKAKABkECRwRAIANBAkYNASACQYAIaiAAQYAFahBeIAJBgAJqIAJBgAhqEF4gAkGACGogAUGABWoQXi\n ACQYACaiACQYAIahAPDAILIANBAkYEQCACQYAIaiAAQYAFahBeIAJBgAdqIAJBgAhqQcAAEGcaIAJBgAZqIAJBgAdqEIU\n BIAJBgAhqIAFBgAVqEF4gAkGAB2ogAkGACGpBwAAQZxogAkGABmogAkGAB2oQSCACQYAIakE4EHIaIAJBATYCuAggAkHA\n CGpBOBByIAJB+AhqQQE2AgAgAkGACGogAkGABmoQpQEQsgEgAkGAAmogAkGACGpBgAEQZxoMAgsgAkGACGogAEGABWoQX\n iACQYACaiACQYAIahBeIAJBgAhqIAFBgAVqEF4gAkGAB2ogAkGACGpBwAAQZxogAkGAAmogAkGAB2oQoAEMAQsgAkGACG\n ogAUGABWoQXiACQYACaiACQYAIahBeIAJBgAhqIABBgAVqEF4gAkGAB2ogAkGACGpBwAAQZxogAkGAAmogAkGAB2oQoAE\n LIAJBgAhqIAAQXiACQYADaiACQYAIahBeIAJBgAhqIAEQXiACQYAEaiACQYAIahBeIAJBgAhqIAQQXiACQYADaiACQYAI\n ahCVASACQYADahCoASACQYAIaiAFEF4gAkGABGogAkGACGoQlQEgAkGABGoQqAEgAkGABWogAkGAA2oQXiACQYAFaiACQ\n YAEahAPIAJBgAZqIAIQXiACQYAGaiACQYABahCVASACQYAGahA6IAJBgAVqIAJBgAZqEJUBIAJBgAhqIAAQXiACQYADai\n ACQYAIahCQASACQYAIaiAAQYAFaiIDEF4gAkGAA2ogAkGACGoQlQEgAkGAA2oQqAEgAkGACGogARBeIAJBgARqIAJBgAh\n qEJABIAJBgAhqIAFBgAVqIgEQXiACQYAEaiACQYAIahCVASACQYAEahCoASACQYAHaiACQYADahBeIAJBgAdqIAJBgARq\n EA8gAkGABmogAhCQASACQYAGaiACQYACahCVASACQYAGahA6IAJBgAdqIAJBgAZqEJUBIAJBgAhqIAQQXiACQYADaiACQ\n YAIahCQASACQYAIaiADEF4gAkGAA2ogAkGACGoQlQEgAkGAA2oQqAEgAkGACGogBRBeIAJBgARqIAJBgAhqEJABIAJBgA\n hqIAEQXiACQYAEaiACQYAIahCVASACQYAEahCoASACQYAIaiACQYADahBeIAJBgAhqIAJBgARqEA8gAkGABmogAkGAAWo\n QkAEgAkGABmogAkGAAmoQlQEgAkGABmoQOiACQYAIaiACQYAGahCVASACQYABahBVIAIgAkGAAWoQlQEgACACIAJBgAVq\n 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\n GogAkGABWoQfSACQYAEahCoASACQYAFaiAAEJABIAJBgAVqIAQQlQEgAkGABWoQqAEgAkGABmogARBeIAJBgAZqIAYQlQ\n EgAkGABmoQqAEgAkGABWogAkGABmoQDyACQYAGaiACEJABIAJBgAZqIAJBgAJqEJUBIAJBgAZqIAJBgAVqELUBIAJBgAZ\n qEKgBIAJBgAVqIAIQkAEgAkGABWogAhCVASACIAJBgAVqEJUBIAIQqAEgAkGAAmpBDBCfASACQYACahBVIAJBgAJqEKgB\n IAJBgAdqIAJBgAFqEF4gAkGAB2ogAkGAAmoQlQEgAkGAB2oQqAEgAkGAAWogAkGAAmoQfSACQYABahCoASACQYAGakEME\n J8BIAJBgAZqEFUgAkGABmoQqAEgAkGABWogAkGABmoQkAEgAkGABWogAkGABGoQDyACQYACaiACQYADahCQASACQYACai\n ACQYABahAPIAJBgAVqIAJBgAJqELUBIAJBgAZqIAIQDyACQYABaiACQYAHahAPIAJBgAZqIAJBgAFqEJUBIAIgAkGAA2o\n QDyACQYAHaiACQYAEahAPIAJBgAdqIAIQlQEgACACQYAFahCQASAAEKgBIAMgAkGABmoQkAEgAxCoASAEIAJBgAdqEJAB\n IAQQqAEgAkGACGokAAv2BQEFfyMAQYAEayICJAAgAiAAEIUBIAIgARBIIAJBQGsgAEFAayIDEIUBIAJBQGsgAUFAayIFE\n EggAkGAAWogAEGAAWoiBBCFASACQYABaiABQYABaiIGEEggAkHAAWogABCFASACQcABaiADEHggAkHAAWoQRCACQYACai\n ABEIUBIAJBgAJqIAUQeCACQYACahBEIAJBwAFqIAJBgAJqEEggAkGAAmogAhClASACQYACaiACQUBrEHggAkHAAWogAkG\n AAmoQgAEgAkHAAWoQRCACQYACaiADEKUBIAJBgAJqIAQQeCACQYACahBEIAJBwAJqIAUQhQEgAkHAAmogBhB4IAJBwAJq\n EEQgAkGAAmogAkHAAmoQSCACQcACaiACQUBrEKUBIAJBwAJqIAJBgAFqEHggAkGAAmogAkHAAmoQgAEgAkGAAmoQRCACQ\n cACaiAAEKUBIAJBwAJqIAQQeCACQcACahBEIAJBgANqIAEQhQEgAkGAA2ogBhB4IAJBgANqEEQgAkHAAmogAkGAA2oQSC\n ACQYADaiACEKUBIAJBgANqIAJBgAFqEHggAkGAA2ogAkHAAmoQswEgAkGAA2oQRCACQcACaiACEKUBIAJBwAJqIAIQeCA\n CIAJBwAJqEHggAhBEIAJBgAFqQQwQUiACQcADaiACQUBrEIUBIAJBwANqIAJBgAFqEHggAkHAA2oQRCACQUBrIAJBgAFq\n EIABIAJBQGsQRCACQYADakEMEFIgAkHAAmogAkGAA2oQpQEgAkHAAmogAkGAAmoQSCACQYABaiACQcABahClASACQYABa\n iACQUBrEEggAkHAAmogAkGAAWoQswEgAkGAA2ogAhBIIAJBQGsgAkHAA2oQSCACQYADaiACQUBrEHggAiACQcABahBIIA\n JBwANqIAJBgAJqEEggAkHAA2ogAhB4IAAgAkHAAmoQpQEgABBEIAMgAkGAA2oQpQEgAxBEIAQgAkHAA2oQpQEgBBBEIAJ\n BgARqJAALxQUBBH8jAEHwEmsiACQAIAAQOEF/IQEgABCIAUUEQCAAQYADakE4EHIaIABBuANqQTgQchogAEG4A2ogAEGA\n A2oQVCAAQfAKakG4gMAAEF8gAEHwDWpB8IDAABBfIABB8ANqIABB8ApqIABB8A1qEEkgAEHwBGpBOBByGiAAQQE2AqgFI\n ABBsAVqQTgQchogAEHoBWpBATYCACAAQfAFakE4EHIaIABBATYCqAYgAEGwBmpBOBByGiAAQegGakEBNgIAIABB8AZqQT\n gQchogAEEBNgKoByAAQbAHakE4EHIaIABB6AdqQQE2AgBBf2ohAyAAQfAHahAqIABB8AdqIAAQfiAAQfAKahAqIABB8Ap\n qIABB8AdqEH4gAEHwDWoQKiAAQfANaiAAQfAHahB+IABB8A1qEJwBAkACQAJAA0AgAiEBIANBAkkNAyAAQfAKaiAAQfAE\n aiAAQfAFaiAAQfAGahAlIAFBxABNBEAgAEHwEGogAEHwBGogAEHwBWogAEHwBmoQRiABQQh0QdCrwABqIABB8BBqEJIBI\n AFBAWohAgJAAkAgAEG4A2ogA0F/aiIDEFcgAEGAA2ogAxBXa0EBag4DAQMAAwsgAEHwCmogAEHwB2ogAEHwBGogAEHwBW\n ogAEHwBmoQHiABQcMASw0DIABB8BBqIABB8ARqIABB8AVqIABB8AZqEEYgAkEIdEHQq8AAaiAAQfAQahCSASABQQJqIQI\n MAgsgAEHwCmogAEHwDWogAEHwBGogAEHwBWogAEHwBmoQHiABQcMASw0DIABB8BBqIABB8ARqIABB8AVqIABB8AZqEEYg\n AkEIdEHQq8AAaiAAQfAQahCSASABQQJqIQIMAQsLIAFBxQBBvIHAABA8AAtBxQBBxQBBzIHAABA8AAtBxQBBxQBB3IHAA\n BA8AAtBACEBCyAAQfASaiQAIAEL8gQBBH8jAEGADGsiAiQAIAIgABCOASACQYACahAvIAJBgARqIABBgAJqIgMQjgEgAk\n GABmoQLyACQYAIaiAAEI4BIAJBgApqIAEQjgEgAiABEBkgAkGABGogAUGAAmoiBBAZIAJBgAhqIAMQlgEgAkGACmogBBC\n WASACQYAIahCsASACQYAKahCsASACQYACaiACQYAIahCSASACQYACaiACQYAKahAZIAJBgAhqIAMQkgEgAkGACGogAEGA\n BGoiBRCWASACQYAKaiAEEJIBIAJBgApqIAFBgARqIgQQlgEgAkGACGoQrAEgAkGACmoQrAEgAkGABmogAkGACGoQkgEgA\n kGABmogAkGACmoQGSACQYAIaiACEJIBIAJBgAhqECsgAkGACmogAkGABGoQkgEgAkGACmoQKyACQYACaiACQYAIahCWAS\n ADIAJBgAJqEJIBIAMgAkGACmoQlgEgAkGABmogAkGACmoQlgEgAkGABGogAkGACGoQlgEgAkGACGogABCSASACQYAIaiA\n FEJYBIAJBgAhqEKwBIAJBgApqIAEQkgEgAkGACmogBBCWASACQYAKahCsASACQYAIaiACQYAKahAZIAJBgARqIAJBgAhq\n EJYBIAJBgAhqIAUQkgEgAkGACGogBBAZIAJBgApqIAJBgAhqEJIBIAJBgApqECsgBSACQYAEahCSASAFIAJBgApqEJYBI\n AJBgAZqIAJBgApqEJYBIAJBgAhqEGYgAyACQYAIahCWASACQYAGahCsASACQYAGahBmIAAgAhCSASAAIAJBgAZqEJYBIA\n BBBTYCgAYgABCZASACQYAMaiQAC68EAQV/IwBBkAZrIgIkACAAQUBrIQQCQCABQfgAaigCACABKAI4aqwgAEH4AGooAgA\n iAyAAKAI4IgVqrH5CgICAEFMNACAFQQJOBH8gABASIAAoAngFIAMLQQJIDQAgBBASCyACQaCnwAAQX0EAIQMgAkE4akHw\n ABByGiABQUBrIQUDQCADQThGBEAgAkHwAGohBkEAIQMDQCADQThGRQRAIAMgBmogAiADaikDADcDACADQQhqIQMMAQsLI\n AJBqAFqIAAQXyACQeABaiABEF8gAkGYAmogACABEAggAkGIA2ogBCAFEAggAkGoAWogBBBhIAJBqAFqEEQgAkHgAWogBR\n BhIAJB4AFqEEQgAkH4A2ogAkGoAWogAkHgAWoQCEEAIQMgAkHoBGpB8AAQchoDQCADQfAARkUEQCACQegEaiADaiACQZg\n CaiADaikDADcDACADQQhqIQMMAQsLIAJB6ARqIAJBiANqEGVBACEDA0AgA0HwAEZFBEAgAkGIA2ogA2oiASACQThqIANq\n KQMAIAEpAwB9NwMAIANBCGohAwwBCwsgAkGYAmogAkGIA2oQZSACQZgCahBFIAJB+ANqIAJB6ARqEGQgAkH4A2oQRSACQ\n dgFaiACQZgCahAFIAAgAkHYBWoQayAAQQM2AjggAkHYBWogAkH4A2oQBSAEIAJB2AVqEGsgAEECNgJ4IAJBkAZqJAAFIA\n JBOGogA2pCADcDACADQQhqIQMMAQsLC5QEAQF/IwBB0CJrIgMkACADQcAWakG4gMAAEF8gA0HIHGpB8IDAABBfIANBCGo\n gA0HAFmogA0HIHGoQSSADQYgBakE4EHIaIANBwAFqQTgQchogA0H4AWoQKgJAIAIQhAFFBEAgA0H4BGoQKiADQfgEaiAB\n EH4gA0H4BGoQSiADQfgHahBLIANB+AdqIAIQfyADQfgHahBHIANByBxqIANB+AdqEIUBIANBuAlqIANByBxqEIUBIANBy\n BxqIANBuAhqEIUBIANB+AlqIANByBxqEIUBIANBuApqECogA0G4DWoQYCADQbgKaiADQfgEahB+IANBwBNqECogA0HAE2\n ogA0H4BGoQfiADQcATahCcASADQcABaiADQYgBahBUQX9qIQIDQCACQQFNBEAgA0G4DWoQkwEgACADQbgNakGIBhBnGgw\n DBSADQbgNahAbIANBwBZqIANBuApqIANBuAlqIANB+AlqEBcCQAJAAkAgA0HAAWogAkF/aiICEFcgA0GIAWogAhBXa0EB\n ag4DAQIAAgsgA0HIHGogA0G4CmogA0H4BGogA0G4CWogA0H4CWoQFiADQcAWaiADQcgcahAGDAELIANByBxqIANBuApqI\n ANBwBNqIANBuAlqIANB+AlqEBYgA0HAFmogA0HIHGoQBgsgA0G4DWogA0HAFmoQBAwBCwALAAsgABBgCyADQdAiaiQAC8\n MDARV/A0AgAUHAAUYEQAJAIABBKGohCyAAQRRqKAIAIgwhCCAAQRBqKAIAIg0hAyAAQQxqKAIAIg4hAiAAKAIIIg8hASA\n AQRhqKAIAIhAhCiAAQRxqKAIAIhEhBCAAQSBqKAIAIhIhByAAQSRqKAIAIhMhBgNAIAchCSAEIQcgCiEEIAVBgAJGDQEg\n AiADcSEUIAIgA3MhFSAFIAtqKAIAIAVB9J7AAGooAgAgBEEadyAEQRV3cyAEQQd3cyAGaiAJIARBf3NxIAQgB3FyampqI\n gYgCGohCiAFQQRqIQUgAyEIIAIhAyABIQIgAUEedyABQRN3cyABQQp3cyAUIAEgFXFzaiAGaiEBIAkhBgwACwALBSAAIA\n FqIgNB6ABqIANBzABqKAIAIANBKGooAgAgA0EsaigCACICQRl3IAJBDndzIAJBA3ZzIANB4ABqKAIAIgJBD3cgAkENd3M\n gAkEKdnNqamo2AgAgAUEEaiEBDAELCyAAIAYgE2o2AiQgACAJIBJqNgIgIAAgByARajYCHCAAIAQgEGo2AhggACAIIAxq\n NgIUIAAgAyANajYCECAAIAIgDmo2AgwgACABIA9qNgIIC9YDAgZ/An4jAEHwAGsiASQAIAFBoKfAABBfIAFBOGogARBfI\n AAQRAJAAkACQCABAn8gACgCOCICQRBMBEAgAkF/ahA5DAELIAEpAzAiCEIBfCIHIAhUDQEgACkDMCIIQoCAgICAgICAgH\n 9RQQAgB0J/URsNAiABQThqIAggB3+nECghByABIAEpA2ggB0I6hnw3A2ggACABQThqEGIgABBEQQILIgMQLSAAQQhqIQQ\n DQCADRQ0DIAEgASkDCEI5hkKAgICAgICAgAKDIAEpAwBCAYeEIgc3AwAgASAAKQMAIAd9IgdC//////////8DgzcDOEEA\n IQIDQCAHQjqHIQcgAkEoRkUEQCABIAJqIgVBCGoiBiAFQRBqKQMAQjmGQoCAgICAgICAAoMgBikDAEIBh4QiCDcDACABI\n AJqQUBrIAIgBGopAwAgCH0gB3wiB0L//////////wODNwMAIAJBCGohAgwBCwsgASABKQMwQgGHIgg3AzAgASAAKQMwIA\n h9IAd8Igc3A2ggACABQThqIAdCP4enQQFqEE8gA0F/aiEDDAALAAtBoKLAAEEZQbyiwAAQWwALQdCiwABBH0G8osAAEFs\n ACyAAQQE2AjggAUHwAGokAAuhAwEBfyMAQZADayIGJAAgBkEIakHAABByGiAGQcgAakGoAhByGiAGQcgAahBDA0AgAQRA\n IAZByABqQQAQPiABQX9qIQEMAQUCQCACBEAgBkHIAGogAiADEHoLIAQEQCAGQcgAaiAEIAUQegsgBkGIA2pCADcDACAGQ\n YADakIANwMAIAZB+AJqQgA3AwAgBkIANwPwAiAGKAJIIQEgBigCTCECIAZByABqQYABED4DQCAGKAJIQf8DcUHAA0ZFBE\n AgBkHIAGpBABA+DAELCyAGQawBaiABNgIAIAZBqAFqIAI2AgAgBkHIAGoQEUEAIQJBACEBA0AgAUEgRkUEQCAGQfACaiA\n BaiABQXxxIAZqQdAAaigCACACQX9zQRhxdjoAACACQQhqIQIgAUEBaiEBDAELCyAGQcgAahBDQQAhAQNAIAFBIEZFBEAg\n BkEIaiABaiAGQfACaiABai0AADoAACABQQFqIQEMAQsLQQAhAQNAIAFBIEYNASAAIAFqIAZBCGogAWotAAA6AAAgAUEBa\n iEBDAALAAsLCyAGQZADaiQAC6EDAQN/IwBBgAZrIgEkACABIABBgAFqIgMQXiABQYABaiADEF4gAUGAAWoQMiABQYACai\n ABEF4gAUGAAmogAEGAAmoiAhAPIAFBgANqIAIQXiABQYADahAyIAIgAUGAAWoQkAEgAiABQYABahCVASACEKgBIAIQpwE\n gAhCnASACEKgBIAFBgANqQQwQnwEgAUGAA2oQVSABQYADahCoASABQYAEaiABQYADahBeIAFBgARqIAIQDyABQYAFaiAB\n QYABahBeIAFBgAVqIAFBgANqEJUBIAFBgAVqEKgBIAIgAUGAAmoQDyABQYACaiABQYADahCQASABQYACaiABQYADahCVA\n SABQYADaiABQYACahCVASABQYADahCoASABQYABaiABQYADahB9IAFBgAFqEKgBIAFBgAVqIAFBgAFqEA8gAUGABWogAU\n GABGoQlQEgAUGAAmogABCQASABQYACaiABEA8gACABQYABahCQASAAEKgBIAAgAUGAAmoQDyAAEKcBIAAQqAEgAyABQYA\n FahCQASADEKgBIAFBgAZqJAALhQMBBH8CQAJAIAFBgAJPBEAgAEEYaigCACEEAkACQCAAIAAoAgwiAkYEQCAAQRRBECAA\n QRRqIgIoAgAiAxtqKAIAIgENAUEAIQIMAgsgACgCCCIBIAI2AgwgAiABNgIIDAELIAIgAEEQaiADGyEDA0AgAyEFIAEiA\n kEUaiIDKAIAIgFFBEAgAkEQaiEDIAIoAhAhAQsgAQ0ACyAFQQA2AgALIARFDQIgACAAQRxqKAIAQQJ0QeS3wQBqIgEoAg\n BHBEAgBEEQQRQgBCgCECAARhtqIAI2AgAgAkUNAwwCCyABIAI2AgAgAg0BQdi1wQBB2LXBACgCAEF+IAAoAhx3cTYCAA8\n LIABBDGooAgAiAiAAQQhqKAIAIgBHBEAgACACNgIMIAIgADYCCA8LQdS1wQBB1LXBACgCAEF+IAFBA3Z3cTYCAAwBCyAC\n IAQ2AhggACgCECIBBEAgAiABNgIQIAEgAjYCGAsgAEEUaigCACIARQ0AIAJBFGogADYCACAAIAI2AhgLC7MCAQF/IwBBg\n AtrIgUkACAFEC8gBUGAAmoQLyAFQYAEahAvIAVBgAZqQTgQchogBUEBNgK4BiAFQcAGakE4EHIaIAVB+AZqQQE2AgAgBU\n GAB2pBOBByGiAFQQE2ArgHIAVBwAdqQTgQchogBUH4B2pBATYCACAFQYAIakE4EHIaIAVBATYCuAggBUHACGpBOBByGiA\n FQfgIakEBNgIAIAEgAiAFQYAGaiAFQYAHaiAFQYAIahAeIAVBgAhqIAMQoAEgBUGABmogBBCgASAFQYAJaiAFQYAGaiAF\n QYAHahCRASAFIAVBgAlqEJIBIAVBgAlqIAVBgAhqEJsBIAVBgARqIAVBgAlqEJIBIAVBgARqEGYgACAFIAVBgAJqIAVBg\n ARqEHYgAEEDNgKABiAFQYALaiQAC7ECAQF/IwBBgAtrIgQkACAEEC8gBEGAAmoQLyAEQYAEahAvIARBgAZqQTgQchogBE\n EBNgK4BiAEQcAGakE4EHIaIARB+AZqQQE2AgAgBEGAB2pBOBByGiAEQQE2ArgHIARBwAdqQTgQchogBEH4B2pBATYCACA\n EQYAIakE4EHIaIARBATYCuAggBEHACGpBOBByGiAEQfgIakEBNgIAIAEgBEGABmogBEGAB2ogBEGACGoQJSAEQYAIaiAC\n EKABIARBgAZqIAMQoAEgBEGACWogBEGABmogBEGAB2oQkQEgBCAEQYAJahCSASAEQYAJaiAEQYAIahCbASAEQYAEaiAEQ\n YAJahCSASAEQYAEahBmIAAgBCAEQYACaiAEQYAEahB2IABBAzYCgAYgBEGAC2okAAvJAgEDfyMAQcACayIBJAAgASAAQU\n BrIgMQhQEgARADIAFBQGsgAxCFASABQUBrIABBgAFqIgIQSCABQYABaiACEIUBIAFBgAFqEAMgAiABEKUBIAIgARB4IAI\n QRCACEE4gAhBOIAIQRCABQYABakEMEFIgAUHAAWogAUGAAWoQhQEgAUHAAWogAhBIIAFBgAJqIAEQhQEgAUGAAmogAUGA\n AWoQeCABQYACahBEIAIgAUFAaxBIIAFBQGsgAUGAAWoQpQEgAUFAayABQYABahB4IAFBgAFqIAFBQGsQeCABIAFBgAFqE\n IABIAEQRCABQYACaiABEEggAUGAAmogAUHAAWoQeCABQUBrIAAQpQEgAUFAayADEEggACABEKUBIAAQRCAAIAFBQGsQSC\n AAEE4gABBEIAMgAUGAAmoQpQEgAxBEIAFBwAJqJAALrQIBA38jAEGABGsiAiQAIAIgABBeIAJBgAFqIABBgAFqIgMQXiA\n CQYACakE4EHIaIAJBATYCuAIgAkHAAmpBOBByGiACQfgCakEBNgIAIAJBgANqIAMQXiACIAEQDyACQYABaiABQYABaiIE\n EA8gAkGAAmogBBCQASACQYACaiABEJUBIAJBgANqIAAQlQEgAkGAAmoQqAEgAkGAA2oQqAEgAkGAA2ogAkGAAmoQDyACQ\n YACaiACEJABIAJBgAJqEDogAkGAA2ogAkGAAmoQlQEgAkGAA2oQqAEgAkGAAmogAkGAAWoQkAEgAkGAAmoQOiADIAJBgA\n NqEJABIAMgAkGAAmoQlQEgAkGAAWoQVSAAIAJBgAFqEJABIAAgAhCVASAAEKwBIAJBgARqJAALvQIBA38jAEGACGsiASQ\n AIAEgABCOASABQYACaiAAQYAEaiICEI4BIAFBgARqIABBgAJqIgMQjgEgAUGABmoQLyAAECIgAUGABmogABCSASABQYAG\n aiAAEJYBIAAgAUGABmoQlgEgABCsASABELYBIAEQrwEgACABEJYBIAFBgAJqECIgAUGAAmoQZiABQYAGaiABQYACahCSA\n SABQYAGaiABQYACahCWASABQYACaiABQYAGahCWASABQYACahCsASABQYAEahAiIAFBgAZqIAFBgARqEJIBIAFBgAZqIA\n FBgARqEJYBIAFBgARqIAFBgAZqEJYBIAFBgARqEKwBIAMQrgEgAxCvASACELYBIAIQrwEgAyABQYACahCWASACIAFBgAR\n qEJYBIABBBTYCgAYgABCaASABQYAIaiQAC7ICAQN/IwBBgAhrIgEkACAAKAKABkEBRwRAIAEgABCOASABQYACaiAAQYAC\n aiIDEI4BIAFBgARqIABBgARqIgIQjgEgAUGABmogABCOASABECIgAUGAAmogAhAZIAFBgAJqEK8BIAFBgAJqEKwBIAFBg\n ARqECIgAUGABmogAxAZIAFBgAZqEK8BIAIgABCWASACIAMQlgEgAhCsASACECIgACABEJIBIAEgAUGAAmoQlgEgARCsAS\n ABIAFBgARqEJYBIAEgAUGABmoQlgEgARCsASABECsgAUGAAmoQZiABQYAEahBmIAAgAUGAAmoQlgEgAyABQYAEahCSASA\n DIAFBgAZqEJYBIAIgARCWASAAQQRBBSAAKAKABkF+cUECRhs2AoAGIAAQmQELIAFBgAhqJAALigIBAn8jAEHgAWsiAiQA\n IAAQRCACQQhqQTAQchogAkIBNwMAIAJBOGogABBfIAJB8ABqIAEQXyACQagBakE4EHIaIAAQdANAIAJBOGogAkHwAGoQN\n UF/TARAA0ACQCADQQBMDQAgAkHwAGpBARA7IAJBARA7IAJBqAFqIAJBOGoQayACQagBaiACQfAAahBiIAJBqAFqEEQgAk\n E4aiACQagBaiACKQPYAUI/h6dBAWoiARBPIAJBqAFqIAAQayACQagBaiACEGEgAkGoAWoQRCAAIAJBqAFqIAEQTyADQX9\n qIQMMAQsLBSACQQEQLSACQfAAakEBEC0gA0EBaiEDDAELCyACQeABaiQAC54CAQF/IwBBgA1rIgMkACADIAEQaiADEJkB\n IANBiAZqIAIQXyADQYgGahBEIANBwAZqIANBiAZqEF8gA0HABmpBAxAoGiADQcAGahBEIANB+AZqIAMQagJAIANBwAZqE\n FpFBEAgA0HABmoQKUF/aiECA0AgAkEBTQRAIANB+AZqEJoBDAMLIANB+AZqEBoCQAJAIANBwAZqIAJBf2oiAhBXIANBiA\n ZqIAIQV2tBAWoOAwECAAILIANB+AZqIAMQDgwBCyADEJMBIANB+AZqIAMQDiADEJMBDAALAAsgA0H4BmoQsAEgA0H4B2o\n QqQEgA0H4CGoQrQEgA0H4CmoQrQEgA0EBNgL4DAsgACADQfgGakGIBhBnGiADQYANaiQAC5ACAQJ/IwBBgAJrIgUkACAF\n QYABaiAAEF4gAiAFQYABahCQASAFQYABaiAAQYABahBeIAQgBUGAAWoQkAEgBUGAAWogAEGAAmoiBhBeIAUgBUGAAWoQX\n iAFQYABaiAGEF4gAyAFQYABahCQASAFQYABaiABQYABaiIGEF4gBSAFQYABahAPIAVBgAFqIAEQXiADIAVBgAFqEA8gAi\n ADEH0gAhCoASAEIAUQfSAEEKgBIAUgAhCQASACEFUgAhCoASAFQYABaiAGEF4gBSAFQYABahAPIAMgBBCQASAFQYABaiA\n BEF4gAyAFQYABahAPIAMgBRB9IAMQqAEgBBA6IAQQqAEgACABEAsgBUGAAmokAAvkAQECfyMAQcABayIDJAAgAxBLIAAg\n ASACQR91IgQgAnMgBEF/c2pBAm0iAkF/akEfdhBtIAAgAUHAAWogAkEBc0F/akEfdhBtIAAgAUGAA2ogAkECc0F/akEfd\n hBtIAAgAUHABGogAkEDc0F/akEfdhBtIAAgAUGABmogAkEEc0F/akEfdhBtIAAgAUHAB2ogAkEFc0F/akEfdhBtIAAgAU\n GACWogAkEGc0F/akEfdhBtIAAgAUHACmogAkEHc0F/akEfdhBtIAMgABB/IAMQpgEgACADIARBAXEQbSADQcABaiQAC+Q\n BAQJ/IwBBgANrIgMkACADECogACABIAJBH3UiBCACcyAEQX9zakECbSICQX9qQR92EG8gACABQYADaiACQQFzQX9qQR92\n EG8gACABQYAGaiACQQJzQX9qQR92EG8gACABQYAJaiACQQNzQX9qQR92EG8gACABQYAMaiACQQRzQX9qQR92EG8gACABQ\n YAPaiACQQVzQX9qQR92EG8gACABQYASaiACQQZzQX9qQR92EG8gACABQYAVaiACQQdzQX9qQR92EG8gAyAAEH4gAxCcAS\n AAIAMgBEEBcRBvIANBgANqJAALvAEBAn8jAEGwAWsiAiQAIAJBMBByIQIDQCADQTBGBEACQCABQTBqIQEgAkEwaiACEHV\n BACEDA0AgA0EwRg0BIAIgA2ogASADai0AADoAACADQQFqIQMMAAsACwUgAiADaiABIANqLQAAOgAAIANBAWohAwwBCwsg\n AkHwAGogAhB1IABBOBByIgBBATYCOCAAQUBrQTgQciAAQfgAakEBNgIAIAAgAkHwAGoQpQEgAkEwahClASACQbABaiQAC\n 9QBAQJ/IwBBgANrIgEkACABIAAQXiABQYABaiAAQYABaiICEF4gAUGAAmogABBeIAFBgAJqIAIQDyABIAIQlQEgAUGAAW\n oQVSABQYABaiAAEJUBIAEQqAEgAUGAAWoQqAEgACABEJABIAAgAUGAAWoQDyABQYABaiABQYACahCQASABQYABahBVIAF\n BgAFqIAFBgAJqEJUBIAFBgAFqEKgBIAFBgAFqEDogACABQYABahCVASABQYACahCnASACIAFBgAJqEJABIAAQrAEgAUGA\n A2okAAvEAQEBfyMAQYADayIDJAAgA0EIaiABEIUBAkAgAkUEQCADQQhqEAcMAQsgA0EIaiACEKUBCyADQcgAakHYo8AAE\n F8gA0GAAWogA0HIAGoQiwEgA0HAAWogA0EIahCFASADQcABahADIANBwAFqIAEQSCAAIAEQhQEgACADQQhqEEggA0GAAm\n ogA0HAAWoQhQEgABBYIQEgA0HAAmogABCFASADQcACahBBIANBwAJqEEQgACADQcACaiABEHkgA0GAA2okAAufAQEBfyM\n AQfAAayICJAAgAiABEF9BACEBIAJBOGpBOBByGiAAEEQCQCAAIAIQNUEASA0AA0AgAkEBEC0gAUEBaiEBIAAgAhA1QX9K\n DQALA0AgAUEATA0BIAJBARA7IAJBOGogABBrIAJBOGogAhBiIAJBOGoQRCAAIAJBOGogAikDaEI/h6dBAWoQTyABQX9qI\n QEMAAsACyACQfAAaiQAC7IBAQF/IwBBgAJrIgQkACAEQYABaiAAEF4gAyAEQYABahCQASAEQYABaiAAQYABahBeIAQgBE\n GAAWoQXiAEQYABaiAAQYACahBeIAIgBEGAAWoQkAEgASAEEJABIAEgAhAPIAMQMiAEEDIgAhAyIAEQpwEgARA6IAEQqAE\n gARBVIAEQqAEgAkEMEJ8BIANBAxCfASACEFUgAhCoASACIAQQfSACEKgBIAAQFCAEQYACaiQAC58BAQJ/IwBBgAJrIgIk\n ACAAIAEQXiAAEDIgAkGIAWpB2KTAABBfIAJBCGpBOBByGiACQQE2AkAgAkHIAGpBOBByIAJBgAFqQQE2AgAgAkHAAWogA\n kGIAWoQiwEgAkEIaiACQcABahClARCyASACQQhqEKgBIAJBCGoQVSACQQhqEKgBIAAgARAPIAAgAkEIahCVASAAEKsBIA\n JBgAJqJAALowEBAX8jAEEwayIGJAAgBkEQaiAAIAEQsQEgBiAGKAIUIgA2AhwgBiAGKAIQIgE2AhggBkEIaiACIAMQsQE\n gBiAGKAIMIgI2AiQgBiAGKAIIIgM2AiAgBiAEIAUQsQEgBiAGKAIEIgQ2AiwgBiAGKAIAIgU2AiggASAAIAMgAiAFIAQQ\n ACAGQShqEKQBIAZBIGoQpAEgBkEYahCkASAGQTBqJAALiAECA38DfiMAQRBrIgIkAAN+IANBOEYEfiACQRBqJAAgBgUgA\n iAAIANqIgQpAwAiBSAFQj+HIAGsIgUgBUI/hxAxIAQgAikDACIHIAZ8IgVC//////////8DgzcDACAFIAdUrSACQQhqKQ\n MAIAZCP4d8fEIGhiAFQjqIhCEGIANBCGohAwwBCwsLhAECA38BfiMAQUBqIgEkACABQQhqIAAQXyABQQhqEEQgAUE4aiE\n CQQYhA0HcAiEAAn8DQEEAIANBAEgNARogAikDACIEUARAIAJBeGohAiAAQUZqIQAgA0F/aiEDDAELCwN/IARQBH8gAAUg\n AEEBaiEAIARCAn8hBAwBCwsLIAFBQGskAAuHAQEBfyMAQcABayIBJAAgAEE4EHIiAEEBNgI4IABBQGtBOBByGiAAQfgAa\n kEBNgIAIAEQUCABQYgBakE4EHIaIABBgAFqIAFBgAEQZxogAEGAAmpBOBByGiAAQbgCakEBNgIAIABBvAJqIAFBhAFqQT\n wQZxogAEH4AmpBATYCACABQcABaiQAC48BAQJ/IwBBgAJrIgEkACAAEKwBIAEgABBeIAFBgAFqQTgQchogAUEBNgK4ASA\n BQcABakE4EHIaIAFB+AFqQQE2AgAgASAAQYABaiICEJUBIAEQOiABQYABaiABEJABIAFBgAFqIAIQlQEgAiABEJABIAIg\n ABCVASAAIAFBgAFqEJABIAAQrAEgAUGAAmokAAt9AgF/An4jAEGAAWsiASQAIAFBCGogABCFASABQQhqEBIgAUHIAGogA\n UEIahCDAUEIIQADQCAAQThGRQRAIAFByABqIABqKQMAIAKEIQIgAEEIaiEADAELCyABKQNIIQMgAUGAAWokACACQn98IA\n NCAYVCf3yDQjqIp0EBcQuJAQIBfwJ+IAAgACkDMCABQT9xrSIDhiAAKQMoQTogAWtBP3GtIgSHhDcDMCAAQShqIQFBBiE\n CA0AgAkEBTQRAIAAgACkDACADhkL//////////wODNwMABSABIAEpAwAgA4ZC//////////8DgyABQXhqIgEpAwAgBIeE\n NwMAIAJBf2ohAgwBCwsLiQECAX8CfiAAIAApA2BBOiABQTpwIgFrrSIEhyAAKQNoIAGtIgOGhDcDaCAAQeAAaiEBQQ0hA\n gNAIAJBAU0EQCAAIAApAwAgA4ZC//////////8DgzcDAAUgASABKQMAIAOGQv//////////A4MgAUF4aiIBKQMAIASHhD\n cDACACQX9qIQIMAQsLC3EBAX8jAEFAaiIBJAAgAEE4EHIiAEEBNgI4IABBQGtBOBByGiAAQfgAakEBNgIAIAFBCGpBOBB\n yGiAAQYABakE4EHIaIABBuAFqQQE2AgAgAEG8AWogAUEEakE8EGcaIABB+AFqQQE2AgAgAUFAayQAC4EBAgF/AX4gAEHw\n ABByIQADQCACQThGBEACQCAAIAEpAzAiA0I6hzcDOCAAIANC//////////8DgzcDMCAAQUBrIQBBACECA0AgAkEwRg0BI\n AAgAmpCADcDACACQQhqIQIMAAsACwUgACACaiABIAJqKQMANwMAIAJBCGohAgwBCwsLdQECfiAAIANCIIgiBSABQiCIIg\n Z+IAIgA358IAEgBH58IANC/////w+DIgIgAUL/////D4MiAX4iA0IgiCACIAZ+fCICQiCIfCABIAV+IAJC/////w+DfCI\n BQiCIfDcDCCAAIANC/////w+DIAFCIIaENwMAC3YBAn8jAEHAAWsiASQAIAEgABCFASABQUBrIAAQhQEgAUGAAWogAEFA\n ayICEIUBIAEgAhB4IAFBQGsgABB4IAFBQGsQRCACIAFBQGsQSCABQYABahBBIAAgAUGAAWoQeCABEEQgABBEIAAgARBII\n AFBwAFqJAALkwEBAn9B0LXBAEHQtcEAKAIAQQFqNgIAAkACQEGYucEAKAIAQQFGBEBBnLnBAEGcucEAKAIAQQFqIgA2Ag\n AgAEECSw0CQaC5wQAoAgAiAUF/Sg0BDAILQZi5wQBCgYCAgBA3AwBBoLnBACgCACIAQQBIDQFBoLnBACAANgIAAAtBoLn\n BACABNgIAIABBAUsNAAALAAtnAQJ/IwBBQGoiAiQAIAAQRCACIAAQhQECQCABRQRAIAAQBwwBCyAAIAEQpQELQQAhAQNA\n IAFBAUsgA3JFBEAgABADIAFBAEchAyABIAFFaiEBDAELCyAAIAIQSCAAEBIgAkFAayQAC18CAX8EfkIBIQNBMCECA38gA\n kF4RgR/IARCAYYgA3ynQX9qBSABIAJqKQMAIgUgACACaikDACIGfUI6hyADgyAEhCEEIAJBeGohAiAFIAaFQn98QjqHIA\n ODIQMMAQsLC2ACAX8EfkIBIQNB6AAhAgN/IAJBeEYEfyAEQgGGIAN8p0F/agUgASACaikDACIFIAAgAmopAwAiBn1COoc\n gA4MgBIQhBCACQXhqIQIgBSAGhUJ/fEI6hyADgyEDDAELCwt3AQN/IwBBgAJrIgIkACACIAEQXiACQYABaiABEF4gAhAy\n IAJBgAFqIAIQDyAAIAJBgAFqEJcBIABBgAJqIgMgAkGAAWoQlwEgAEGABGoiBCACQYABahCXASADIAEQogEgBCACEKIBI\n ABBBTYCgAYgAkGAAmokAAt6AQF/IwBB4ANrIgEkACABQYABakHApcAAEF8gAUG4AWpB+KXAABBfIAEgAUGAAWogAUG4AW\n oQSSABQfACakGwpsAAEF8gAUGoA2pB6KbAABBfIAFB8AFqIAFB8AJqIAFBqANqEEkgACABIAFB8AFqED8gAUHgA2okAAt\n nACAAQQF2IAByIgBBAnYgAHIiAEEEdiAAciIAQQh2IAByIgBBEHYgAHIiACAAQQF2QdWq1aoFcWsiAEECdkGz5syZA3Eg\n AEGz5syZA3FqIgBBBHYgAGpBj568+ABxQYGChAhsQRh2C2cBAn8jAEGAAWsiASQAIAEgABCFASABQUBrQTgQchogAUEBN\n gJ4IAEgAEFAayICEHggARBBIAFBQGsgARClASABQUBrIAIQeCACIAEQpQEgAiAAEHggACABQUBrEKUBIAFBgAFqJAALaA\n IBfwJ+IAFBP3GtIQNBOiABa0E/ca0hBEEAIQEDQCABQTBGBEAgACAAKQMwIAOHNwMwBSAAIAFqIgIgAkEIaikDACAEhkL\n //////////wODIAIpAwAgA4eENwMAIAFBCGohAQwBCwsLbAEBfyMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBHGpBAjYC\n ACADQSxqQQI2AgAgA0ICNwIMIANBlKjAADYCCCADQQI2AiQgAyADQSBqNgIYIAMgAzYCKCADIANBBGo2AiAgA0EIaiACE\n HAAC2wBAX8jAEEwayIDJAAgAyABNgIEIAMgADYCACADQRxqQQI2AgAgA0EsakECNgIAIANCAjcCDCADQbCqwAA2AgggA0\n ECNgIkIAMgA0EgajYCGCADIANBBGo2AiggAyADNgIgIANBCGogAhBwAAtlAQJ/IAAgACgCACICQQhqIgM2AgAgACACQQN\n 2QTxxakEoaiICIAFB/wFxIAIoAgBBCHRyNgIAAkACQCADRQRAIABBADYCACAAIAAoAgRBAWo2AgQMAQsgA0H/A3ENAQsg\n ABARCwtnAQF/IwBBgAJrIgMkACAAECogACABEJABIABBgAFqIgEgAhCQASAAQYACahCwASAAEKgBIAMgABAmIANBgAFqI\n AEQXiADQYABahAyIANBgAFqIAMQe0UEQCAAEJgBCyADQYACaiQAC18BAn8jAEGAAWsiASQAIAAQqAEgASAAEIUBIAFBQG\n sgAEFAayICEIUBIAEQAyABQUBrEAMgASABQUBrEHggAUEAEDQgACABEEggARBBIAEQRCACIAEQSCABQYABaiQAC10BAn8\n jAEFAaiIBJAAgAUEIakGgp8AAEF8gAUEIaiAAKAI4QX9qEDkiAhAtIAAgAUEIahBjIABBASACQQFqQR9xdCICNgI4IAJB\n gICAEE4EQCAAEBILIAFBQGskAAtfAgF/AX4jAEHwAGsiASQAIAFBoKfAABBfIAApAwAhAiABQThqIAAQXyAAQQEQOyABQ\n ThqIAEQYSABQThqEEQgAUE4akEBEDsgACABQThqIAJCAoGnEE8gAUHwAGokAAt7AQJ/IABBKGohAgNAIAFBgAJGBEAgAE\n LnzKfQ1tDrs7t/NwIIIABCADcCACAAQSBqQquzj/yRo7Pw2wA3AgAgAEEYakL/pLmIxZHagpt/NwIAIABBEGpC8ua746O\n n/aelfzcCAAUgASACakEANgIAIAFBBGohAQwBCwsLaQICfwF+IAAgACkDACIDQv//////////A4M3AwBBCCEBA0AgA0I6\n hyEDIAFBMEYEQCAAIAApAzAgA3w3AzAFIAAgAWoiAiACKQMAIAN8IgNC//////////8DgzcDACABQQhqIQEMAQsLC2oCA\n n8BfiAAIAApAwAiA0L//////////wODNwMAQQghAQNAIANCOochAyABQegARgRAIAAgACkDaCADfDcDaAUgACABaiICIA\n IpAwAgA3wiA0L//////////wODNwMAIAFBCGohAQwBCwsLWQEBfyMAQYADayIEJAAgBCADEF4gBBBAIARBgAFqIAEQXiA\n EQYACaiACEF4gBEGAAWogBBAPIARBgAJqIAQQDyAAIARBgAFqIARBgAJqEJEBIARBgANqJAALWQECfyMAQUBqIgEkAAJA\n IAAQhAENACABQQEQigEgAEGAAWoiAiABEFkNACACQQAQNCAAIAIQSCAAEBIgAEFAayIAIAIQSCAAEBIgAiABEKUBCyABQ\n UBrJAALVwEBfyMAQbABayICJAAgATQCOCAANAI4fkKAgIAQWQRAIAAQEgsgAkEIaiAAIAEQCCACQfgAaiACQQhqEAUgAC\n ACQfgAahBrIABBAjYCOCACQbABaiQAC08BAn8jAEFAaiIDJAAgAEE4EHIiAEEBNgI4IABBQGtBOBByIABB+ABqQQE2AgA\n gAyABEIsBIAAgAxClASADIAIQiwEgAxClASADQUBrJAALWQECfyMAQYABayIBJAACQCAAEIgBDQAgARBQIABBgAJqIgIg\n ARB7DQAgAhBAIAAgAhAPIAAQqwEgAEGAAWoiACACEA8gABCrASACIAEQkAELIAFBgAFqJAALSwEBfyMAQUBqIgEkACAAQ\n TgQciIAQQE2AjggAUEBEIoBIABBQGsgAUHAABBnGiAAQYABakE4EHIaIABBuAFqQQE2AgAgAUFAayQAC0sBAn8jAEHwAG\n siASQAIAAQd0UEQCABQaCnwAAQXyABQThqIAAQgwEgASABQThqEGIgARBEIAFBOGogARA1IQILIAFB8ABqJAAgAgtPAQF\n /IwBBgAFrIgIkACAAIAEQhQEgABADIAJByABqQdikwAAQXyACQQhqIAJByABqEIsBIAAgARBIIAAgAkEIahB4IAAQEiAC\n QYABaiQAC0kBAn8DQCABQThGRQRAIAAgAWoiAiACKQMAQgGGNwMAIAFBCGohAQwBCwsgACAAKAI4QQF0IgE2AjggAUGAg\n IAQTgRAIAAQEgsLQgIBfwJ+QQAgAmusIQQDQCADQThHBEAgACADaiICIAIpAwAiBSABIANqKQMAhSAEgyAFhTcDACADQQ\n hqIQMMAQsLC0YBAn8jAEFAaiIBJAAgAEE4EHIiAEEBNgI4IABBQGtBOBByIABB+ABqQQE2AgAgAUEBEIoBIAAgARClARC\n yASABQUBrJAALTgEBfyMAQYAEayIBJAAgABAvIAEQLyABQYACahAvIABBgAJqIAFBgAIQZxogAEGABGogAUGAAmpBgAIQ\n ZxogAEEANgKABiABQYAEaiQAC0sBAX8jAEFAaiICJAACQCAAKAI4IAFsQYCAgBBOBEAgAiABEIoBIAAgAhBIDAELIAAgA\n RAoGiAAIAAoAjggAWw2AjgLIAJBQGskAAtKAAJ/IAFBgIDEAEcEQEEBIAAoAhggASAAQRxqKAIAKAIQEQMADQEaCyACRQ\n RAQQAPCyAAKAIYIAJBACAAQRxqKAIAKAIMEQUACwtCAQF/IwBBQGoiAiQAIAJBCGpBgIDAABBfIAEgAkEIahBrIAEQRCA\n AIAEQayAAQQMQKBogABBEIAAQKSACQUBrJAALSQECfyMAQcABayIBJAAgASAAEF4gAUGAAWogABCFASAAIABBQGsiAhCl\n ASAAEEEgAiABQYABahClASAAIAEQlQEgAUHAAWokAAtIAQF/IwBB4AFrIgEkACABQeihwAAQXyABQThqIAAgARAIIAFBq\n AFqIAFBOGoQBSAAIAFBqAFqEGsgAEECNgI4IAFB4AFqJAALPgEBfyABQTpuIQIgAUGVA00EQCAAIAJBA3RqKQMAQgEgAU\n H//wNxQTpwrYaDQgBVDwsgAkEHQdSdwAAQPAALQAIBfwF+IwBBgAFrIgEkACABQQhqIAAQhQEgAUEIahASIAFByABqIAF\n BCGoQgwEgASkDSCABQYABaiQAQgKBpws8AQF/IwBBgAFrIgIkACACIAAQhQEgAkFAayABEIUBIAIQEiACQUBrEBIgAiAC\n QUBrEDUgAkGAAWokAEULPAIBfwF+A38gAUE4RgR/IAJCf3xCgICAgICAgIAEg0I6iKcFIAAgAWopAwAgAoQhAiABQQhqI\n QEMAQsLC0cBAX8jAEEgayIDJAAgA0EUakEANgIAIANB9KrAADYCECADQgE3AgQgAyABNgIcIAMgADYCGCADIANBGGo2Ag\n AgAyACEHAACzkBAX8jAEFAaiICJAAgAiAAEIUBIAIQByABBEAgASACEKUBCyACEAMgAiAAEEggAhAsIAJBQGskAAs6AQF\n /IABBOBByIQADQCACQTBGRQRAIABBCBAtIAAgACkDACABIAJqMQAAfDcDACACQQFqIQIMAQsLCzQBAX8gAEE4EHIiAEEB\n NgI4IABBQGtBOBByIABB+ABqQQE2AgAgACABEKUBIAFBQGsQpQELMAEBfyAAQTgQciEAA0AgAkE4RwRAIAAgAmogASACa\n ikDADcDACACQQhqIQIMAQsLCz8BAX8jAEGAAmsiASQAIAAQUSABEG4gACABEJIBIABBgAJqEK0BIABBgARqEK0BIABBAT\n YCgAYgAUGAAmokAAswAQJ/A0AgAkE4RwRAIAAgAmoiAyADKQMAIAEgAmopAwB8NwMAIAJBCGohAgwBCwsLMAECfwNAIAJ\n BOEcEQCAAIAJqIgMgAykDACABIAJqKQMAfTcDACACQQhqIQIMAQsLCzABAn8DQCACQThHBEAgACACaiIDIAEgAmopAwAg\n AykDAH03AwAgAkEIaiECDAELCwsxAQJ/A0AgAkHwAEcEQCAAIAJqIgMgAykDACABIAJqKQMAfTcDACACQQhqIQIMAQsLC\n zEBAn8DQCACQfAARwRAIAAgAmoiAyADKQMAIAEgAmopAwB8NwMAIAJBCGohAgwBCwsLOQECfyMAQYABayIBJAAgASAAQY\n ABaiICEF4gAiAAEJABIAEQVSAAIAEQkAEgABCsASABQYABaiQACzMBAX8gAgRAIAAhAwNAIAMgAS0AADoAACABQQFqIQE\n gA0EBaiEDIAJBf2oiAg0ACwsgAAtIAQN/IwBBEGsiASQAIAAoAgwhAyAAKAIIIgJFBEBB9KrAAEErQaCrwAAQWwALIAEg\n AzYCCCABIAA2AgQgASACNgIAIAEQcQALMgEBfyAAQgE3AwBBCCEBA0AgAUE4RkUEQCAAIAFqQgA3AwAgAUEIaiEBDAELC\n yAAEFYLNwAgABBRIAAgARCSASAAQYACaiABQYACahCSASAAQYAEaiABQYAEahCSASAAIAEoAoAGNgKABgsoAQF/A0AgAk\n E4RwRAIAAgAmogASACaikDADcDACACQQhqIQIMAQsLCzMAIAAgARCSASAAQYACaiABQYACahCSASAAQYAEaiABQYAEahC\n SASAAIAEoAoAGNgKABgsoACAAIAEgAhB5IABBQGsgAUFAayACEHkgAEGAAWogAUGAAWogAhB5Cy4BAX8jAEGAAWsiASQA\n IAAQLyABEFAgACABEJABIABBgAFqEKkBIAFBgAFqJAALLQAgACABIAIQjwEgAEGAAWogAUGAAWogAhCPASAAQYACaiABQ\n YACaiACEI8BCzQBAX8jAEEQayICJAAgAiABNgIMIAIgADYCCCACQaSowAA2AgQgAkH0qsAANgIAIAIQaAALPgEBfyMAQR\n BrIgEkACABQQhqIABBCGooAgA2AgAgASAAKQIANwMAIAEoAgAiAEEUaigCABogACgCBBoQMwALKQEBfyABBEAgACECA0A\n gAkEAOgAAIAJBAWohAiABQX9qIgENAAsLIAALKwEBfyMAQcABayICJAAgAhBLIAIgARB/IAIQpgEgACACEAwgAkHAAWok\n AAsiAQF/A0AgAUE4RwRAIAAgAWpCADcDACABQQhqIQEMAQsLCycBAX8jAEFAaiICJAAgAkEIaiABEF0gACACQQhqEIsBI\n AJBQGskAAsrACAAEFEgACABEJIBIABBgAJqIAIQkgEgAEGABGogAxCSASAAQQU2AoAGCyMBAX8jAEFAaiIBJAAgASAAEI\n UBIAEQEiABEFogAUFAayQACykAIAAgARBhIAAgACgCOCABKAI4aiIBNgI4IAFBgICAEE4EQCAAEBILCyUAIAAgASACEE8\n gAEEAIAJrIAAoAjgiACABKAI4c3EgAHM2AjgLIwADQCACBEAgACABLQAAED4gAkF/aiECIAFBAWohAQwBCwsLIgACQCAA\n IAEQWUUNACAAQUBrIAFBQGsQWUUNAEEBDwtBAAskAAJAIABBfE0EQCAARQRAQQQhAAwCCyAAEAEiAA0BCwALIAALJwEBf\n yMAQYABayICJAAgAiABEF4gAhA6IAAgAhCVASACQYABaiQACycAIAAgARCQASAAQYABaiABQYABahCQASAAQYACaiABQY\n ACahCQAQslACAAIAEQpQEgAEFAayABQUBrEKUBIABBgAFqIAFBgAFqEKUBCyUBAX8jAEFAaiICJAAgAiABEIUBIAIQQSA\n AIAIQeCACQUBrJAALKAEBfyMAQYACayICJAAgAiABEI4BIAIQKyAAIAIQlgEgAkGAAmokAAsjAEGEAiACSQRAIAJBhAIg\n AxA9AAsgACACNgIEIAAgATYCAAsiAQF/IwBB8ABrIgIkACACIAEQMCAAIAIQBSACQfAAaiQACxwAAkAgABB3RQ0AIABBg\n AFqEHdFDQBBAQ8LQQALHwAgAEE4EHIiAEEBNgI4IAAgARBrIAAgASgCODYCOAseAAJAIAAQhwFFDQAgAEGAAWoQhwFFDQ\n BBAQ8LQQALGwACQCAAEHdFDQAgAEFAaxB3RQ0AQQEPC0EACx4AAkAgABCHAUUNACAAQYACahCHAUUNAEEBDwtBAAsaAQF\n /IAAQWCIBIABBQGsQWCABcyAAEHdxcwsaACAAQTgQciIAQQE2AjggACABEJ0BIAAQVgsZACAAQTgQciIAQQE2AjggACAB\n EGsgABBWCxcAIAAQRCAAKAIAQX8gAUEfcXRBf3NxCxoAIAAgARBfIAAgAhAkIAAgAhBjIAAgAhAkCxwAIAAQLyAAIAEQk\n AEgAEGAAWogAUGAAWoQkAELGAAgACABIAIQeSAAQUBrIAFBQGsgAhB5CxYAIAAgARClASAAQUBrIAFBQGsQpQELGAAgAB\n AvIAAgARCQASAAQYABaiACEJABCxgAIAAgARCQASAAQYABaiABQYABahCQAQsZACAAEK4BIABBgAJqELYBIABBgARqEK4\n BCxcAIAAQsgEgAEFAaxBpIABBgAFqELIBCxQAIAAgARB4IABBQGsgAUFAaxB4CxgAIAAgARCVASAAQYABaiABQYABahCV\n AQsYACAAEKYBIABBgAFqIgAQpgEgACABEA8LGQAgABCpASAAQYABahCwASAAQYACahCpAQsZACAAEKwBIABBgAJqEKwBI\n ABBgARqEKwBCxkAIAAQqgEgAEGAAmoQqgEgAEGABGoQqgELFgAgABAvIAAgARCQASAAQYABahCpAQsWACAAQYABaiIAEK\n gBIAAQOiAAEKgBCxQAIAAQRCAAIAApAwAgAax8NwMACxQAIAAQRCAAIAApAwAgAax9NwMACxEAIAAgARBSIABBQGsgARB\n SCxEAIAAgARBIIABBQGsgARBICxQAIAAgARCQASAAQYABaiACEJABCxIAIAAgARAPIABBgAFqIAEQDwsUACAAIAEQoAEg\n AEGAAWogARCgAQsRACAAKAIEBEAgACgCABAJCwsSACAAIAEQayAAIAEoAjg2AjgLDwAgAEFAayIAEEEgABBECw0AIAAQT\n iAAQUBrEE4LDQAgABBEIABBQGsQRAsPACAAELIBIABBQGsQsgELEAAgABCrASAAQYABahCrAQsNACAAEBIgAEFAaxASCx\n AAIAAQqAEgAEGAAWoQqAELEAAgABCpASAAQYABahCpAQsPACAAQYABahA6IAAQrAELEAAgABCnASAAQYABahCnAQsOACA\n AEGkgAEFAaxCyAQsQACAAIAI2AgQgACABNgIACw0AIAAQdCAAQQE2AjgLDAAgABBBIAAgARB4CwwAIAAgARBrIAAQVgsN\n ACAAEDogACABEJUBCwsAIAAQOiAAEKwBCwwAQunQotvMouq7RgsDAAELAwABCwv+PZoCAEGCgMAACwcBAAAAAQI0AEG4g\n MAAC9sBuF8jku11BwFjT+D5WE+pA2dPnKtLeD0Akew9ffXy9AMD1g8fDSwgAK1vjPCZwa4A8DtNkAEAAADzStxtEor3AI\n uwH1tTsFYDgvLFYx+X7AAysL/NHtseAkehVLifHyMCQHo6ogw4sQGz4sMPAAAAAHNyYy9ibHMxMjM4MS9wYWlyLnJzqAA\n QABQAAAAHAQAACQAAAKgAEAAUAAAADAEAAA0AAACoABAAFAAAABEBAAANAAAAAAAAAAEAAAD///8Dv/+W/78AaQM7VYAd\n moCAAefMIPV1pkwBp+1zAEGogsAACyz+//7///8BAosAgILYBPYB4Y1oiW++kwLOdqvfPagdAMZpulHOdt8Dy1nGFwBB4\n ILAAAuRAZABEAATAAAA0AEAABgAAACQARAAEwAAANQBAAARAAAAkAEQABMAAADWAQAAHAAAAHNyYy9ibHMxMjM4MS9lY3\n AucnMAkAEQABMAAAAZBQAADQAAAJABEAATAAAAGwUAAAkAAACQARAAEwAAABwFAAARAAAAkAEQABMAAAAfBQAAHAAAAAA\n AAAABAAEAAAABAjQAQaCEwAALuSCQARAAEwAAAGcEAAARAAAAkAEQABMAAABsBAAADQAAAJABEAATAAAAbgQAABUAAACQ\n ARAAEwAAAHAEAAAgAAAAHUxYLQgo9ADXXz44aOPbAInJGoj9roEBomOjmrkPTgGY6rCCSW3JAoBOWs9QOu4AimlEAQAAA\n ADgKxeO6UjMAXSpOluMVsgAolXvNe/8FADngsIBPcnDA8EWIDvuPnUAusRiAAwgWgDRCCkuAQAAALgh6L1iEMUA3/4Vlz\n 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\n GZYzb76G2KA7ycH+3PFk8AK2qmngEAAABhdHRlbXB0IHRvIGRpdmlkZSBieSB6ZXJvAAAAbxEQABIAAAB8AQAAFAAAAAA\n AAABhdHRlbXB0IHRvIGRpdmlkZSB3aXRoIG92ZXJmbG93c3JjL2JsczEyMzgxL2ZwLnJzAAAAbxEQABIAAAASAgAADQAA\n AG8REAASAAAAHgIAACYAAABvERAAEgAAAB4CAAAjAAAAbxEQABIAAAAkAgAAFwAAAG8REAASAAAAJAIAABQAAAAAAAAAq\n qr//////gHu//9UrP//AupBYg9rDyoBw5z9ShTOEwJLd2TXrEtDAu3pxpKm+V8Cox4RoAEAAABAEhAAFAAAABUBAAATAA\n AAQBIQABQAAAAeAQAAGAAAAEASEAAUAAAAJAEAABwAAABzcmMvYmxzMTIzODEvZWNwMi5ycwAAAAAEAEGQpcAAC7wGQBI\n QABQAAADmAgAACQAAAEASEAAUAAAA7gIAAA0AAABAEhAAFAAAAP4CAAAhAAAAuL0hwchWgAD1+24BqskAA7pwFz2uR7YA\n RNEK7ADpUwN65MZREMUtA0kBgkmkwiMALyuqJAAAAAB+KwRdBX2sAflVF+WERDwDNJME9ce9GwJp12rYgmRCA9BrWWVPJ\n 4gA6DRrH9hnnAAFtgI+AQAAAAEouAiGVJMBeKIo6w5zsgIjyRINFpWmAQq1nU73MqoCm/2tGjUu2gJxczJjhFufAHdSXc\n 4AAAAAvnlf8F8HqQJqaAc710nDAfOzmulytSoB0pm8jp0W+gEoPsuZi8IrAKw0qwwzzakDAkpsYAAAAACrqv/////+Ae7\n //1Ss//8C6kFiD2sPKgHDnP1KFM4TAkt3ZNesS0MC7enGkqb5XwKjHhGgAQAAAAgUEAALAAAAjwEAAA8AAAAIFBAACwAA\n AKcBAAATAAAACBQQAAsAAACqAQAADQAAAHNyYy9obWFjLnJzADQUEAAgAAAAVBQQABIAAAADAAAAAAAAAAEAAAAEAAAAa\n W5kZXggb3V0IG9mIGJvdW5kczogdGhlIGxlbiBpcyAgYnV0IHRoZSBpbmRleCBpcyAwMDAxMDIwMzA0MDUwNjA3MDgwOT\n EwMTExMjEzMTQxNTE2MTcxODE5MjAyMTIyMjMyNDI1MjYyNzI4MjkzMDMxMzIzMzM0MzUzNjM3MzgzOTQwNDE0MjQzNDQ\n 0NTQ2NDc0ODQ5NTA1MTUyNTM1NDU1NTY1NzU4NTk2MDYxNjI2MzY0NjU2NjY3Njg2OTcwNzE3MjczNzQ3NTc2Nzc3ODc5\n ODA4MTgyODM4NDg1ODY4Nzg4ODk5MDkxOTI5Mzk0OTU5Njk3OTg5OQAAQBUQABAAAABQFRAAIgAAAHJhbmdlIGVuZCBpb\n mRleCAgb3V0IG9mIHJhbmdlIGZvciBzbGljZSBvZiBsZW5ndGggAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIG\n EgYE5vbmVgIHZhbHVlALAVEAAcAAAA7gEAAB4AAABsaWJyYXJ5L3N0ZC9zcmMvcGFuaWNraW5nLnJzAEGIrMAACwEBAEH\n IrMAACwEBAEGIrcAACwEBAEHIrcAACwEBAEGIrsAACwEBAEHIrsAACwEBAEGIr8AACwEBAEHIr8AACwEBAEGIsMAACwEB\n AEHIsMAACwEBAEGIscAACwEBAEHIscAACwEBAEGIssAACwEBAEHIssAACwEBAEGIs8AACwEBAEHIs8AACwEBAEGItMAAC\n wEBAEHItMAACwEBAEGItcAACwEBAEHItcAACwEBAEGItsAACwEBAEHItsAACwEBAEGIt8AACwEBAEHIt8AACwEBAEGIuM\n AACwEBAEHIuMAACwEBAEGIucAACwEBAEHIucAACwEBAEGIusAACwEBAEHIusAACwEBAEGIu8AACwEBAEHIu8AACwEBAEG\n IvMAACwEBAEHIvMAACwEBAEGIvcAACwEBAEHIvcAACwEBAEGIvsAACwEBAEHIvsAACwEBAEGIv8AACwEBAEHIv8AACwEB\n AEGIwMAACwEBAEHIwMAACwEBAEGIwcAACwEBAEHIwcAACwEBAEGIwsAACwEBAEHIwsAACwEBAEGIw8AACwEBAEHIw8AAC\n wEBAEGIxMAACwEBAEHIxMAACwEBAEGIxcAACwEBAEHIxcAACwEBAEGIxsAACwEBAEHIxsAACwEBAEGIx8AACwEBAEHIx8\n AACwEBAEGIyMAACwEBAEHIyMAACwEBAEGIycAACwEBAEHIycAACwEBAEGIysAACwEBAEHIysAACwEBAEGIy8AACwEBAEH\n Iy8AACwEBAEGIzMAACwEBAEHIzMAACwEBAEGIzcAACwEBAEHIzcAACwEBAEGIzsAACwEBAEHIzsAACwEBAEGIz8AACwEB\n AEHIz8AACwEBAEGI0MAACwEBAEHI0MAACwEBAEGI0cAACwEBAEHI0cAACwEBAEGI0sAACwEBAEHI0sAACwEBAEGI08AAC\n wEBAEHI08AACwEBAEGI1MAACwEBAEHI1MAACwEBAEGI1cAACwEBAEHI1cAACwEBAEGI1sAACwEBAEHI1sAACwEBAEGI18\n AACwEBAEHI18AACwEBAEGI2MAACwEBAEHI2MAACwEBAEGI2cAACwEBAEHI2cAACwEBAEGI2sAACwEBAEHI2sAACwEBAEG\n I28AACwEBAEHI28AACwEBAEGI3MAACwEBAEHI3MAACwEBAEGI3cAACwEBAEHI3cAACwEBAEGI3sAACwEBAEHI3sAACwEB\n AEGI38AACwEBAEHI38AACwEBAEGI4MAACwEBAEHI4MAACwEBAEGI4cAACwEBAEHI4cAACwEBAEGI4sAACwEBAEHI4sAAC\n wEBAEGI48AACwEBAEHI48AACwEBAEGI5MAACwEBAEHI5MAACwEBAEGI5cAACwEBAEHI5cAACwEBAEGI5sAACwEBAEHI5s\n AACwEBAEGI58AACwEBAEHI58AACwEBAEGI6MAACwEBAEHI6MAACwEBAEGI6cAACwEBAEHI6cAACwEBAEGI6sAACwEBAEH\n I6sAACwEBAEGI68AACwEBAEHI68AACwEBAEGI7MAACwEBAEHI7MAACwEBAEGI7cAACwEBAEHI7cAACwEBAEGI7sAACwEB\n AEHI7sAACwEBAEGI78AACwEBAEHI78AACwEBAEGI8MAACwEBAEHI8MAACwEBAEGI8cAACwEBAEHI8cAACwEBAEGI8sAAC\n wEBAEHI8sAACwEBAEGI88AACwEBAEHI88AACwEBAEGI9MAACwEBAEHI9MAACwEBAEGI9cAACwEBAEHI9cAACwEBAEGI9s\n AACwEBAEHI9sAACwEBAEGI98AACwEBAEHI98AACwEBAEGI+MAACwEBAEHI+MAACwEBAEGI+cAACwEBAEHI+cAACwEBAEG\n I+sAACwEBAEHI+sAACwEBAEGI+8AACwEBAEHI+8AACwEBAEGI/MAACwEBAEHI/MAACwEBAEGI/cAACwEBAEHI/cAACwEB\n AEGI/sAACwEBAEHI/sAACwEBAEGI/8AACwEBAEHI/8AACwEBAEGIgMEACwEBAEHIgMEACwEBAEGIgcEACwEBAEHIgcEAC\n wEBAEGIgsEACwEBAEHIgsEACwEBAEGIg8EACwEBAEHIg8EACwEBAEGIhMEACwEBAEHIhMEACwEBAEGIhcEACwEBAEHIhc\n EACwEBAEGIhsEACwEBAEHIhsEACwEBAEGIh8EACwEBAEHIh8EACwEBAEGIiMEACwEBAEHIiMEACwEBAEGIicEACwEBAEH\n IicEACwEBAEGIisEACwEBAEHIisEACwEBAEGIi8EACwEBAEHIi8EACwEBAEGIjMEACwEBAEHIjMEACwEBAEGIjcEACwEB\n AEHIjcEACwEBAEGIjsEACwEBAEHIjsEACwEBAEGIj8EACwEBAEHIj8EACwEBAEGIkMEACwEBAEHIkMEACwEBAEGIkcEAC\n wEBAEHIkcEACwEBAEGIksEACwEBAEHIksEACwEBAEGIk8EACwEBAEHIk8EACwEBAEGIlMEACwEBAEHIlMEACwEBAEGIlc\n EACwEBAEHIlcEACwEBAEGIlsEACwEBAEHIlsEACwEBAEGIl8EACwEBAEHIl8EACwEBAEGImMEACwEBAEHImMEACwEBAEG\n ImcEACwEBAEHImcEACwEBAEGImsEACwEBAEHImsEACwEBAEGIm8EACwEBAEHIm8EACwEBAEGInMEACwEBAEHInMEACwEB\n AEGIncEACwEBAEHIncEACwEBAEGInsEACwEBAEHInsEACwEBAEGIn8EACwEBAEHIn8EACwEBAEGIoMEACwEBAEHIoMEAC\n wEBAEGIocEACwEBAEHIocEACwEBAEGIosEACwEBAEHIosEACwEBAEGIo8EACwEBAEHIo8EACwEBAEGIpMEACwEBAEHIpM\n EACwEBAEGIpcEACwEBAEHIpcEACwEBAEGIpsEACwEBAEHIpsEACwEBAEGIp8EACwEBAEHIp8EACwEBAEGIqMEACwEBAEH\n IqMEACwEBAEGIqcEACwEBAEHIqcEACwEBAEGIqsEACwEBAEHIqsEACwEBAEGIq8EACwEBAEHIq8EACwEBAEGIrMEACwEB\n AEHIrMEACwEBAEGIrcEACwEBAEHIrcEACwEBAEGIrsEACwEBAEHIrsEACwEBAEGIr8EACwEBAEHIr8EACwEBAEGIsMEAC\n wEBAEHIsMEACwEBAEGIscEACwEBAEHIscEACwEBAEGIssEACwEBAEHIssEACwEBAEGIs8EACwEBAEHIs8EACwEBAEGItM\n EACwEBAEHItMEACwEBAEGItcEACwEBAEHItcEACwEBAHsJcHJvZHVjZXJzAghsYW5ndWFnZQEEUnVzdAAMcHJvY2Vzc2V\n kLWJ5AwVydXN0Yx0xLjQ5LjAgKGUxODg0YThlMyAyMDIwLTEyLTI5KQZ3YWxydXMGMC4xOC4wDHdhc20tYmluZGdlbhIw\n LjIuNzAgKGI2MzU1YzI3MCk=\n`.replace(/[^0-9a-zA-Z/+]/g, '');\nconst wasmBytes = base64Arraybuffer.decode(wasmBytesBase64);\n/**\n * @returns {number}\n */\nexport function bls_init() {\n let ret = wasm.bls_init();\n return ret;\n}\nlet cachegetUint8Memory0 = null;\nfunction getUint8Memory0() {\n if (cachegetUint8Memory0 === null || cachegetUint8Memory0.buffer !== wasm.memory.buffer) {\n cachegetUint8Memory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachegetUint8Memory0;\n}\nfunction passArray8ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 1);\n getUint8Memory0().set(arg, ptr / 1);\n return [ptr, arg.length];\n}\n/**\n * @param {Uint8Array} sig\n * @param {Uint8Array} m\n * @param {Uint8Array} w\n * @returns {number}\n */\nexport function bls_verify(sig, m, w) {\n const [ptr0, len0] = passArray8ToWasm0(sig, wasm.__wbindgen_malloc);\n const [ptr1, len1] = passArray8ToWasm0(m, wasm.__wbindgen_malloc);\n const [ptr2, len2] = passArray8ToWasm0(w, wasm.__wbindgen_malloc);\n const ret = wasm.bls_verify(ptr0, len0, ptr1, len1, ptr2, len2);\n return ret;\n}\nasync function load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n }\n else {\n const instance = await WebAssembly.instantiate(module, imports);\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n }\n else {\n return instance;\n }\n }\n}\nasync function init() {\n const imports = {};\n const { instance, module } = await load(wasmBytes, imports);\n wasm = instance.exports;\n init.__wbindgen_wasm_module = module;\n return wasm;\n}\n/**\n * If `module_or_path` is {RequestInfo} or {URL}, makes a request and\n * for everything else, calls `WebAssembly.instantiate` directly.\n *\n * @param {InitInput | Promise} module_or_path\n *\n * @returns {Promise}\n */\nexport default init;\n//# sourceMappingURL=bls.js.map","import { Buffer } from 'buffer/';\nimport { getDefaultAgent } from './agent';\nimport * as cbor from './cbor';\nimport { hash } from './request_id';\nimport { blobFromBuffer, blobFromText, blobFromUint8Array, blobToHex, blobToUint8Array, } from './types';\nimport { blsVerify } from './utils/bls';\n/**\n * Make a human readable string out of a hash tree.\n * @param tree\n */\nexport function hashTreeToString(tree) {\n const indent = (s) => s.split('\\n').map(x => ' ' + x).join('\\n');\n function labelToString(label) {\n const decoder = new TextDecoder(undefined, { fatal: true });\n try {\n return JSON.stringify(decoder.decode(label));\n }\n catch (e) {\n return `data(...${label.byteLength} bytes)`;\n }\n }\n switch (tree[0]) {\n case 0: return '()';\n case 1: {\n const left = hashTreeToString(tree[1]);\n const right = hashTreeToString(tree[2]);\n return `sub(\\n left:\\n${indent(left)}\\n---\\n right:\\n${indent(right)}\\n)`;\n }\n case 2: {\n const label = labelToString(tree[1]);\n const sub = hashTreeToString(tree[2]);\n return `label(\\n label:\\n${indent(label)}\\n sub:\\n${indent(sub)}\\n)`;\n }\n case 3: {\n return `leaf(...${tree[1].byteLength} bytes)`;\n }\n case 4: {\n return `pruned(${blobToHex(blobFromUint8Array(new Uint8Array(tree[1])))}`;\n }\n default: {\n return `unknown(${JSON.stringify(tree[0])})`;\n }\n }\n}\nfunction isBufferEqual(a, b) {\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n}\nexport class Certificate {\n constructor(response, _agent = getDefaultAgent()) {\n this._agent = _agent;\n this.verified = false;\n this._rootKey = null;\n this.cert = cbor.decode(response.certificate);\n }\n lookupEx(path) {\n if (!this.verified) {\n throw new Error('Cannot lookup unverified certificate');\n }\n return lookupPathEx(path, this.cert.tree);\n }\n lookup(path) {\n if (!this.verified) {\n throw new Error('Cannot lookup unverified certificate');\n }\n return lookup_path(path, this.cert.tree);\n }\n async verify() {\n const rootHash = await reconstruct(this.cert.tree);\n const derKey = await this._checkDelegation(this.cert.delegation);\n const sig = this.cert.signature;\n const key = extractDER(derKey);\n const msg = Buffer.concat([domain_sep('ic-state-root'), rootHash]);\n const res = await blsVerify(key, sig, msg);\n this.verified = res;\n return res;\n }\n async fetchRootKey() {\n await this._agent.fetchRootKey();\n this._rootKey = this._agent.rootKey;\n }\n async _checkDelegation(d) {\n if (!d) {\n if (!this._rootKey) {\n if (this._agent.rootKey) {\n this._rootKey = this._agent.rootKey;\n return this._rootKey;\n }\n this._rootKey = await this._agent.fetchRootKey();\n }\n return this._rootKey;\n }\n const cert = new Certificate(d, this._agent);\n if (!(await cert.verify())) {\n throw new Error('fail to verify delegation certificate');\n }\n const res = cert.lookup([Buffer.from('subnet'), d.subnet_id, Buffer.from('public_key')]);\n return Promise.resolve(res);\n }\n}\nconst DER_PREFIX = Buffer.from('308182301d060d2b0601040182dc7c0503010201060c2b0601040182dc7c05030201036100', 'hex');\nconst KEY_LENGTH = 96;\nfunction extractDER(buf) {\n const expectedLength = DER_PREFIX.length + KEY_LENGTH;\n if (buf.length !== expectedLength) {\n throw new TypeError(`BLS DER-encoded public key must be ${expectedLength} bytes long`);\n }\n const prefix = buf.slice(0, DER_PREFIX.length);\n if (!isBufferEqual(prefix, DER_PREFIX)) {\n throw new TypeError(`BLS DER-encoded public key is invalid. Expect the following prefix: ${DER_PREFIX}, but get ${prefix}`);\n }\n return buf.slice(DER_PREFIX.length);\n}\n/**\n * @param t\n */\nexport async function reconstruct(t) {\n switch (t[0]) {\n case 0 /* Empty */:\n return hash(domain_sep('ic-hashtree-empty'));\n case 4 /* Pruned */:\n return Buffer.from(t[1]);\n case 3 /* Leaf */:\n return hash(Buffer.concat([\n domain_sep('ic-hashtree-leaf'),\n Buffer.from(t[1]),\n ]));\n case 2 /* Labeled */:\n return hash(Buffer.concat([\n domain_sep('ic-hashtree-labeled'),\n Buffer.from(t[1]),\n Buffer.from(await reconstruct(t[2])),\n ]));\n case 1 /* Fork */:\n return hash(Buffer.concat([\n domain_sep('ic-hashtree-fork'),\n Buffer.from(await reconstruct(t[1])),\n Buffer.from(await reconstruct(t[2])),\n ]));\n default:\n throw new Error('unreachable');\n }\n}\nfunction domain_sep(s) {\n const buf = Buffer.alloc(1);\n buf.writeUInt8(s.length, 0);\n return Buffer.concat([buf, Buffer.from(s)]);\n}\n/**\n *\n * @param path\n * @param tree\n */\nexport function lookupPathEx(path, tree) {\n const maybeReturn = lookup_path(path.map(p => {\n if (typeof p === 'string') {\n return blobFromText(p);\n }\n else {\n return blobFromUint8Array(new Uint8Array(p));\n }\n }), tree);\n return maybeReturn && blobToUint8Array(blobFromBuffer(maybeReturn));\n}\n/**\n * @param path\n * @param tree\n */\nexport function lookup_path(path, tree) {\n if (path.length === 0) {\n switch (tree[0]) {\n case 3 /* Leaf */: {\n return Buffer.from(tree[1]);\n }\n default: {\n return undefined;\n }\n }\n }\n const t = find_label(path[0], flatten_forks(tree));\n if (t) {\n return lookup_path(path.slice(1), t);\n }\n}\nfunction flatten_forks(t) {\n switch (t[0]) {\n case 0 /* Empty */:\n return [];\n case 1 /* Fork */:\n return flatten_forks(t[1]).concat(flatten_forks(t[2]));\n default:\n return [t];\n }\n}\nfunction find_label(l, trees) {\n if (trees.length === 0) {\n return undefined;\n }\n for (const t of trees) {\n if (t[0] === 2 /* Labeled */) {\n const p = Buffer.from(t[1]);\n if (isBufferEqual(l, p)) {\n return t[2];\n }\n }\n }\n}\n//# sourceMappingURL=certificate.js.map","import { Buffer } from 'buffer/';\nimport { getDefaultAgent } from './agent';\nimport { getManagementCanister } from './canisters/management';\nimport * as IDL from './idl';\nimport { pollForResponse, strategy } from './polling';\nimport { Principal } from './principal';\nimport { toHex as requestIdToHex } from './request_id';\n/**\n * The mode used when installing a canister.\n */\nexport var CanisterInstallMode;\n(function (CanisterInstallMode) {\n CanisterInstallMode[\"Install\"] = \"install\";\n CanisterInstallMode[\"Reinstall\"] = \"reinstall\";\n CanisterInstallMode[\"Upgrade\"] = \"upgrade\";\n})(CanisterInstallMode || (CanisterInstallMode = {}));\nconst metadataSymbol = Symbol.for('ic-agent-metadata');\n/**\n * An actor base class. An actor is an object containing only functions that will\n * return a promise. These functions are derived from the IDL definition.\n */\nexport class Actor {\n constructor(metadata) {\n this[metadataSymbol] = Object.freeze(metadata);\n }\n /**\n * Get the Agent class this Actor would call, or undefined if the Actor would use\n * the default agent (global.ic.agent).\n * @param actor The actor to get the agent of.\n */\n static agentOf(actor) {\n return actor[metadataSymbol].config.agent;\n }\n /**\n * Get the interface of an actor, in the form of an instance of a Service.\n * @param actor The actor to get the interface of.\n */\n static interfaceOf(actor) {\n return actor[metadataSymbol].service;\n }\n static canisterIdOf(actor) {\n return Principal.from(actor[metadataSymbol].config.canisterId);\n }\n static async install(fields, config) {\n const mode = fields.mode === undefined ? CanisterInstallMode.Install : fields.mode;\n // Need to transform the arg into a number array.\n const arg = fields.arg ? [...fields.arg] : [];\n // Same for module.\n const wasmModule = [...fields.module];\n const canisterId = typeof config.canisterId === 'string'\n ? Principal.fromText(config.canisterId)\n : config.canisterId;\n await getManagementCanister(config).install_code({\n mode: { [mode]: null },\n arg,\n wasm_module: wasmModule,\n canister_id: canisterId,\n });\n }\n static async createCanister(config) {\n const { canister_id: canisterId } = await getManagementCanister(config || {}).provisional_create_canister_with_cycles({ amount: [], settings: [] });\n return canisterId;\n }\n static async createAndInstallCanister(interfaceFactory, fields, config) {\n const canisterId = await this.createCanister(config);\n await this.install(Object.assign({}, fields), Object.assign(Object.assign({}, config), { canisterId }));\n return this.createActor(interfaceFactory, Object.assign(Object.assign({}, config), { canisterId }));\n }\n static createActorClass(interfaceFactory) {\n const service = interfaceFactory({ IDL });\n class CanisterActor extends Actor {\n constructor(config) {\n const canisterId = typeof config.canisterId === 'string'\n ? Principal.fromText(config.canisterId)\n : config.canisterId;\n super({\n config: Object.assign(Object.assign(Object.assign({}, DEFAULT_ACTOR_CONFIG), config), { canisterId }),\n service,\n });\n for (const [methodName, func] of service._fields) {\n this[methodName] = _createActorMethod(this, methodName, func);\n }\n }\n }\n return CanisterActor;\n }\n static createActor(interfaceFactory, configuration) {\n return new (this.createActorClass(interfaceFactory))(configuration);\n }\n}\n// IDL functions can have multiple return values, so decoding always\n// produces an array. Ensure that functions with single or zero return\n// values behave as expected.\nfunction decodeReturnValue(types, msg) {\n const returnValues = IDL.decode(types, Buffer.from(msg));\n switch (returnValues.length) {\n case 0:\n return undefined;\n case 1:\n return returnValues[0];\n default:\n return returnValues;\n }\n}\nconst DEFAULT_ACTOR_CONFIG = {\n pollingStrategyFactory: strategy.defaultStrategy,\n};\nfunction _createActorMethod(actor, methodName, func) {\n let caller;\n if (func.annotations.includes('query')) {\n caller = async (options, ...args) => {\n var _a, _b;\n // First, if there's a config transformation, call it.\n options = Object.assign(Object.assign({}, options), (_b = (_a = actor[metadataSymbol].config).queryTransform) === null || _b === void 0 ? void 0 : _b.call(_a, methodName, args, Object.assign(Object.assign({}, actor[metadataSymbol].config), options)));\n const agent = options.agent || actor[metadataSymbol].config.agent || getDefaultAgent();\n const cid = options.canisterId || actor[metadataSymbol].config.canisterId;\n const arg = IDL.encode(func.argTypes, args);\n const result = await agent.query(cid, { methodName, arg });\n switch (result.status) {\n case \"rejected\" /* Rejected */:\n throw new Error(`Query failed:\\n` +\n ` Status: ${result.status}\\n` +\n ` Message: ${result.reject_message}\\n`);\n case \"replied\" /* Replied */:\n return decodeReturnValue(func.retTypes, result.reply.arg);\n }\n };\n }\n else {\n caller = async (options, ...args) => {\n var _a, _b;\n // First, if there's a config transformation, call it.\n options = Object.assign(Object.assign({}, options), (_b = (_a = actor[metadataSymbol].config).callTransform) === null || _b === void 0 ? void 0 : _b.call(_a, methodName, args, Object.assign(Object.assign({}, actor[metadataSymbol].config), options)));\n const agent = options.agent || actor[metadataSymbol].config.agent || getDefaultAgent();\n const { canisterId, effectiveCanisterId, pollingStrategyFactory } = Object.assign(Object.assign(Object.assign({}, DEFAULT_ACTOR_CONFIG), actor[metadataSymbol].config), options);\n const cid = Principal.from(canisterId);\n const ecid = effectiveCanisterId !== undefined ? Principal.from(effectiveCanisterId) : cid;\n const arg = IDL.encode(func.argTypes, args);\n const { requestId, response } = await agent.call(cid, {\n methodName,\n arg,\n effectiveCanisterId: ecid,\n });\n if (!response.ok) {\n throw new Error([\n 'Call failed:',\n ` Method: ${methodName}(${args})`,\n ` Canister ID: ${cid}`,\n ` Request ID: ${requestIdToHex(requestId)}`,\n ` HTTP status code: ${response.status}`,\n ` HTTP status text: ${response.statusText}`,\n ].join('\\n'));\n }\n const pollStrategy = pollingStrategyFactory();\n const responseBytes = await pollForResponse(agent, ecid, requestId, pollStrategy);\n if (responseBytes !== undefined) {\n return decodeReturnValue(func.retTypes, responseBytes);\n }\n else if (func.retTypes.length === 0) {\n return undefined;\n }\n else {\n throw new Error(`Call was returned undefined, but type [${func.retTypes.join(',')}].`);\n }\n };\n }\n const handler = (...args) => caller({}, ...args);\n handler.withOptions = (options) => (...args) => caller(options, ...args);\n return handler;\n}\n//# sourceMappingURL=actor.js.map","import { blobFromHex, blobFromUint8Array, blobToHex, derBlobFromBlob, SignIdentity, blobFromBuffer, } from '@dfinity/agent';\nimport { Buffer } from 'buffer/';\nimport * as tweetnacl from 'tweetnacl';\nexport class Ed25519PublicKey {\n // `fromRaw` and `fromDer` should be used for instantiation, not this constructor.\n constructor(key) {\n this.rawKey = key;\n this.derKey = Ed25519PublicKey.derEncode(key);\n }\n static from(key) {\n return this.fromDer(key.toDer());\n }\n static fromRaw(rawKey) {\n return new Ed25519PublicKey(rawKey);\n }\n static fromDer(derKey) {\n return new Ed25519PublicKey(this.derDecode(derKey));\n }\n static derEncode(publicKey) {\n if (publicKey.byteLength !== Ed25519PublicKey.RAW_KEY_LENGTH) {\n const bl = publicKey.byteLength;\n throw new TypeError(`ed25519 public key must be ${Ed25519PublicKey.RAW_KEY_LENGTH} bytes long (is ${bl})`);\n }\n // https://github.com/dfinity/agent-js/issues/42#issuecomment-716356288\n const derPublicKey = Uint8Array.from([\n ...Ed25519PublicKey.DER_PREFIX,\n ...new Uint8Array(publicKey),\n ]);\n return derBlobFromBlob(blobFromUint8Array(derPublicKey));\n }\n static derDecode(key) {\n const expectedLength = Ed25519PublicKey.DER_PREFIX.length + Ed25519PublicKey.RAW_KEY_LENGTH;\n if (key.byteLength !== expectedLength) {\n const bl = key.byteLength;\n throw new TypeError(`Ed25519 DER-encoded public key must be ${expectedLength} bytes long (is ${bl})`);\n }\n const rawKey = blobFromUint8Array(key.subarray(Ed25519PublicKey.DER_PREFIX.length));\n if (!this.derEncode(rawKey).equals(key)) {\n throw new TypeError('Ed25519 DER-encoded public key is invalid. A valid Ed25519 DER-encoded public key ' +\n `must have the following prefix: ${Ed25519PublicKey.DER_PREFIX}`);\n }\n return rawKey;\n }\n toDer() {\n return this.derKey;\n }\n toRaw() {\n return this.rawKey;\n }\n}\n// The length of Ed25519 public keys is always 32 bytes.\nEd25519PublicKey.RAW_KEY_LENGTH = 32;\n// Adding this prefix to a raw public key is sufficient to DER-encode it.\n// See https://github.com/dfinity/agent-js/issues/42#issuecomment-716356288\nEd25519PublicKey.DER_PREFIX = Uint8Array.from([\n ...[48, 42],\n ...[48, 5],\n ...[6, 3],\n ...[43, 101, 112],\n ...[3],\n ...[Ed25519PublicKey.RAW_KEY_LENGTH + 1],\n ...[0], // 'no padding'\n]);\nexport class Ed25519KeyIdentity extends SignIdentity {\n // `fromRaw` and `fromDer` should be used for instantiation, not this constructor.\n constructor(publicKey, _privateKey) {\n super();\n this._privateKey = _privateKey;\n this._publicKey = Ed25519PublicKey.from(publicKey);\n }\n static generate(seed) {\n if (seed && seed.length !== 32) {\n throw new Error('Ed25519 Seed needs to be 32 bytes long.');\n }\n const { publicKey, secretKey } = seed === undefined ? tweetnacl.sign.keyPair() : tweetnacl.sign.keyPair.fromSeed(seed);\n return new this(Ed25519PublicKey.fromRaw(blobFromUint8Array(publicKey)), blobFromUint8Array(secretKey));\n }\n static fromParsedJson(obj) {\n const [publicKeyDer, privateKeyRaw] = obj;\n return new Ed25519KeyIdentity(Ed25519PublicKey.fromDer(blobFromHex(publicKeyDer)), blobFromHex(privateKeyRaw));\n }\n static fromJSON(json) {\n const parsed = JSON.parse(json);\n if (Array.isArray(parsed)) {\n if (typeof parsed[0] === 'string' && typeof parsed[1] === 'string') {\n return this.fromParsedJson([parsed[0], parsed[1]]);\n }\n else {\n throw new Error('Deserialization error: JSON must have at least 2 items.');\n }\n }\n else if (typeof parsed === 'object' && parsed !== null) {\n const { publicKey, _publicKey, secretKey, _privateKey } = parsed;\n const pk = publicKey\n ? Ed25519PublicKey.fromRaw(blobFromUint8Array(new Uint8Array(publicKey.data)))\n : Ed25519PublicKey.fromDer(blobFromUint8Array(new Uint8Array(_publicKey.data)));\n if (publicKey && secretKey && secretKey.data) {\n return new Ed25519KeyIdentity(pk, blobFromUint8Array(new Uint8Array(secretKey.data)));\n }\n else if (_publicKey && _privateKey && _privateKey.data) {\n return new Ed25519KeyIdentity(pk, blobFromUint8Array(new Uint8Array(_privateKey.data)));\n }\n }\n throw new Error(`Deserialization error: Invalid JSON type for string: ${JSON.stringify(json)}`);\n }\n static fromKeyPair(publicKey, privateKey) {\n return new Ed25519KeyIdentity(Ed25519PublicKey.fromRaw(publicKey), privateKey);\n }\n static fromSecretKey(secretKey) {\n const keyPair = tweetnacl.sign.keyPair.fromSecretKey(new Uint8Array(secretKey));\n const identity = Ed25519KeyIdentity.fromKeyPair(blobFromUint8Array(keyPair.publicKey), blobFromUint8Array(keyPair.secretKey));\n return identity;\n }\n /**\n * Serialize this key to JSON.\n */\n toJSON() {\n return [blobToHex(this._publicKey.toDer()), blobToHex(this._privateKey)];\n }\n /**\n * Return a copy of the key pair.\n */\n getKeyPair() {\n return {\n secretKey: blobFromUint8Array(new Uint8Array(this._privateKey)),\n publicKey: this._publicKey,\n };\n }\n /**\n * Return the public key.\n */\n getPublicKey() {\n return this._publicKey;\n }\n /**\n * Signs a blob of data, with this identity's private key.\n * @param challenge - challenge to sign with this identity's secretKey, producing a signature\n */\n async sign(challenge) {\n const blob = challenge instanceof Buffer\n ? blobFromBuffer(challenge)\n : blobFromUint8Array(new Uint8Array(challenge));\n const signature = tweetnacl.sign.detached(blob, this._privateKey);\n return blobFromUint8Array(signature);\n }\n}\n//# sourceMappingURL=ed25519.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { blobFromHex, blobFromUint8Array, derBlobFromBlob, Principal, requestIdOf, SignIdentity, } from '@dfinity/agent';\nimport { Buffer } from 'buffer/';\nimport * as cbor from 'simple-cbor';\nconst domainSeparator = new TextEncoder().encode('\\x1Aic-request-auth-delegation');\nconst requestDomainSeparator = Buffer.from(new TextEncoder().encode('\\x0Aic-request'));\nfunction _parseBlob(value) {\n if (typeof value !== 'string' || value.length < 64) {\n throw new Error('Invalid public key.');\n }\n return blobFromHex(value);\n}\n/**\n * A single delegation object that is signed by a private key. This is constructed by\n * `DelegationChain.create()`.\n *\n * {@see DelegationChain}\n */\nexport class Delegation {\n constructor(pubkey, expiration, targets) {\n this.pubkey = pubkey;\n this.expiration = expiration;\n this.targets = targets;\n }\n toCBOR() {\n // Expiration field needs to be encoded as a u64 specifically.\n return cbor.value.map(Object.assign({ pubkey: cbor.value.bytes(this.pubkey), expiration: cbor.value.u64(this.expiration.toString(16), 16) }, (this.targets && {\n targets: cbor.value.array(this.targets.map(t => cbor.value.bytes(t.toBlob()))),\n })));\n }\n toJSON() {\n // every string should be hex and once-de-hexed,\n // discoverable what it is (e.g. de-hex to get JSON with a 'type' property, or de-hex to DER with an OID)\n // After de-hex, if it's not obvious what it is, it's an ArrayBuffer.\n return Object.assign({ expiration: this.expiration.toString(16), pubkey: this.pubkey.toString('hex') }, (this.targets && { targets: this.targets.map(p => p.toBlob().toString('hex')) }));\n }\n}\n/**\n * Sign a single delegation object for a period of time.\n *\n * @param from The identity that lends its delegation.\n * @param to The identity that receives the delegation.\n * @param expiration An expiration date for this delegation.\n * @param targets Limit this delegation to the target principals.\n */\nasync function _createSingleDelegation(from, to, expiration, targets) {\n const delegation = new Delegation(to.toDer(), BigInt(+expiration) * BigInt(1000000), // In nanoseconds.\n targets);\n // The signature is calculated by signing the concatenation of the domain separator\n // and the message.\n // Note: To ensure Safari treats this as a user gesture, ensure to not use async methods\n // besides the actualy webauthn functionality (such as `sign`). Safari will de-register\n // a user gesture if you await an async call thats not fetch, xhr, or setTimeout.\n const challenge = new Uint8Array([...domainSeparator, ...requestIdOf(delegation)]);\n const signature = await from.sign(blobFromUint8Array(challenge));\n return {\n delegation,\n signature,\n };\n}\n/**\n * A chain of delegations. This is JSON Serializable.\n * This is the object to serialize and pass to a DelegationIdentity. It does not keep any\n * private keys.\n */\nexport class DelegationChain {\n constructor(delegations, publicKey) {\n this.delegations = delegations;\n this.publicKey = publicKey;\n }\n /**\n * Create a delegation chain between two (or more) keys. By default, the expiration time\n * will be very short (15 minutes).\n *\n * To build a chain of more than 2 identities, this function needs to be called multiple times,\n * passing the previous delegation chain into the options argument. For example:\n *\n * @example\n * const rootKey = createKey();\n * const middleKey = createKey();\n * const bottomeKey = createKey();\n *\n * const rootToMiddle = await DelegationChain.create(\n * root, middle.getPublicKey(), Date.parse('2100-01-01'),\n * );\n * const middleToBottom = await DelegationChain.create(\n * middle, bottom.getPublicKey(), Date.parse('2100-01-01'), { previous: rootToMiddle },\n * );\n *\n * // We can now use a delegation identity that uses the delegation above:\n * const identity = DelegationIdentity.fromDelegation(bottomKey, middleToBottom);\n *\n * @param from The identity that will delegate.\n * @param to The identity that gets delegated. It can now sign messages as if it was the\n * identity above.\n * @param expiration The length the delegation is valid. By default, 15 minutes from calling\n * this function.\n * @param options A set of options for this delegation. expiration and previous\n * @param options.previous - Another DelegationChain that this chain should start with.\n * @param options.targets - targets that scope the delegation (e.g. Canister Principals)\n */\n static async create(from, to, expiration = new Date(Date.now() + 15 * 60 * 1000), options = {}) {\n var _a, _b;\n const delegation = await _createSingleDelegation(from, to, expiration, options.targets);\n return new DelegationChain([...(((_a = options.previous) === null || _a === void 0 ? void 0 : _a.delegations) || []), delegation], ((_b = options.previous) === null || _b === void 0 ? void 0 : _b.publicKey) || from.getPublicKey().toDer());\n }\n /**\n * Creates a DelegationChain object from a JSON string.\n *\n * @param json The JSON string to parse.\n */\n static fromJSON(json) {\n const { publicKey, delegations } = typeof json === 'string' ? JSON.parse(json) : json;\n if (!Array.isArray(delegations)) {\n throw new Error('Invalid delegations.');\n }\n const parsedDelegations = delegations.map(signedDelegation => {\n const { delegation, signature } = signedDelegation;\n const { pubkey, expiration, targets } = delegation;\n if (targets !== undefined && !Array.isArray(targets)) {\n throw new Error('Invalid targets.');\n }\n return {\n delegation: new Delegation(_parseBlob(pubkey), BigInt(`0x${expiration}`), // expiration in JSON is an hexa string (See toJSON() below).\n targets &&\n targets.map((t) => {\n if (typeof t !== 'string') {\n throw new Error('Invalid target.');\n }\n return Principal.fromHex(t);\n })),\n signature: _parseBlob(signature),\n };\n });\n return new this(parsedDelegations, derBlobFromBlob(_parseBlob(publicKey)));\n }\n /**\n * Creates a DelegationChain object from a list of delegations and a DER-encoded public key.\n *\n * @param delegations The list of delegations.\n * @param publicKey The DER-encoded public key of the key-pair signing the first delegation.\n */\n static fromDelegations(delegations, publicKey) {\n return new this(delegations, publicKey);\n }\n toJSON() {\n return {\n delegations: this.delegations.map(signedDelegation => {\n const { delegation, signature } = signedDelegation;\n const { targets } = delegation;\n return {\n delegation: Object.assign({ expiration: delegation.expiration.toString(16), pubkey: delegation.pubkey.toString('hex') }, (targets && {\n targets: targets.map(t => t.toBlob().toString('hex')),\n })),\n signature: signature.toString('hex'),\n };\n }),\n publicKey: this.publicKey.toString('hex'),\n };\n }\n}\n/**\n * An Identity that adds delegation to a request. Everywhere in this class, the name\n * innerKey refers to the SignIdentity that is being used to sign the requests, while\n * originalKey is the identity that is being borrowed. More identities can be used\n * in the middle to delegate.\n */\nexport class DelegationIdentity extends SignIdentity {\n constructor(_inner, _delegation) {\n super();\n this._inner = _inner;\n this._delegation = _delegation;\n }\n /**\n * Create a delegation without having access to delegateKey.\n *\n * @param key The key used to sign the reqyests.\n * @param delegation A delegation object created using `createDelegation`.\n */\n static fromDelegation(key, delegation) {\n return new this(key, delegation);\n }\n getDelegation() {\n return this._delegation;\n }\n getPublicKey() {\n return {\n toDer: () => this._delegation.publicKey,\n };\n }\n sign(blob) {\n return this._inner.sign(blob);\n }\n async transformRequest(request) {\n const { body } = request, fields = __rest(request, [\"body\"]);\n const requestId = await requestIdOf(body);\n return Object.assign(Object.assign({}, fields), { body: {\n content: body,\n sender_sig: await this.sign(blobFromUint8Array(Buffer.concat([requestDomainSeparator, requestId]))),\n sender_delegation: this._delegation.delegations,\n sender_pubkey: this._delegation.publicKey,\n } });\n }\n}\n//# sourceMappingURL=delegation.js.map","import { blobFromHex, blobFromUint8Array, derBlobFromBlob, SignIdentity, } from '@dfinity/agent';\nimport borc from 'borc';\nimport * as tweetnacl from 'tweetnacl';\nfunction _coseToDerEncodedBlob(cose) {\n const c = new Uint8Array(cose);\n if (c.byteLength > 230) {\n // 'Tis true, 'tis too much.\n throw new Error('Cannot encode byte length of more than 230.');\n }\n // prettier-ignore\n const der = new Uint8Array([\n 0x30, 0x10 + c.byteLength + 1,\n 0x30, 0x0C,\n // OID 1.3.6.1.4.1.56387.1.1\n 0x06, 0x0A, 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0xB8, 0x43, 0x01, 0x01,\n 0x03, 1 + c.byteLength, 0x00,\n ...c,\n ]);\n return derBlobFromBlob(blobFromUint8Array(der));\n}\n/**\n * From the documentation;\n * The authData is a byte array described in the spec. Parsing it will involve slicing bytes from\n * the array and converting them into usable objects.\n *\n * See https://webauthn.guide/#registration (subsection \"Example: Parsing the authenticator data\").\n *\n * @param authData The authData field of the attestation response.\n * @returns The COSE key of the authData.\n */\nfunction _authDataToCose(authData) {\n const dataView = new DataView(new ArrayBuffer(2));\n const idLenBytes = authData.slice(53, 55);\n [...new Uint8Array(idLenBytes)].forEach((v, i) => dataView.setUint8(i, v));\n const credentialIdLength = dataView.getUint16(0);\n // Get the public key object.\n return authData.slice(55 + credentialIdLength);\n}\nexport class CosePublicKey {\n constructor(_cose) {\n this._cose = _cose;\n this._encodedKey = _coseToDerEncodedBlob(_cose);\n }\n toDer() {\n return this._encodedKey;\n }\n getCose() {\n return this._cose;\n }\n}\n/**\n * Create a challenge from a string or array. The default challenge is always the same\n * because we don't need to verify the authenticity of the key on the server (we don't\n * register our keys with the IC). Any challenge would do, even one per key, randomly\n * generated.\n *\n * @param challenge The challenge to transform into a byte array. By default a hard\n * coded string.\n */\nfunction _createChallengeBuffer(challenge = '') {\n if (typeof challenge === 'string') {\n return Uint8Array.from(challenge, c => c.charCodeAt(0));\n }\n else {\n return challenge;\n }\n}\n/**\n * Create a credentials to authenticate with a server. This is necessary in order in\n * WebAuthn to get credentials IDs (which give us the public key and allow us to\n * sign), but in the case of the Internet Computer, we don't actually need to register\n * it, so we don't.\n * @param credentialCreationOptions an optional CredentialCreationOptions object\n */\nasync function _createCredential(credentialCreationOptions) {\n const creds = (await navigator.credentials.create(credentialCreationOptions !== null && credentialCreationOptions !== void 0 ? credentialCreationOptions : {\n publicKey: {\n authenticatorSelection: {\n userVerification: 'preferred',\n },\n attestation: 'direct',\n challenge: _createChallengeBuffer(),\n pubKeyCredParams: [{ type: 'public-key', alg: PubKeyCoseAlgo.ECDSA_WITH_SHA256 }],\n rp: {\n name: 'Internet Identity Service',\n },\n user: {\n id: tweetnacl.randomBytes(16),\n name: 'Internet Identity',\n displayName: 'Internet Identity',\n },\n },\n }));\n // Validate that it's the correct type at runtime, since WebAuthn does not HAVE to\n // reply with a PublicKeyCredential.\n if (creds.response === undefined || !(creds.rawId instanceof ArrayBuffer)) {\n return null;\n }\n else {\n return creds;\n }\n}\n// See https://www.iana.org/assignments/cose/cose.xhtml#algorithms for a complete\n// list of these algorithms. We only list the ones we support here.\nvar PubKeyCoseAlgo;\n(function (PubKeyCoseAlgo) {\n PubKeyCoseAlgo[PubKeyCoseAlgo[\"ECDSA_WITH_SHA256\"] = -7] = \"ECDSA_WITH_SHA256\";\n})(PubKeyCoseAlgo || (PubKeyCoseAlgo = {}));\n/**\n * A SignIdentity that uses `navigator.credentials`. See https://webauthn.guide/ for\n * more information about WebAuthentication.\n */\nexport class WebAuthnIdentity extends SignIdentity {\n constructor(rawId, cose) {\n super();\n this.rawId = rawId;\n this._publicKey = new CosePublicKey(cose);\n }\n /**\n * Create an identity from a JSON serialization.\n * @param json - json to parse\n */\n static fromJSON(json) {\n const { publicKey, rawId } = JSON.parse(json);\n if (typeof publicKey !== 'string' || typeof rawId !== 'string') {\n throw new Error('Invalid JSON string.');\n }\n return new this(blobFromHex(rawId), blobFromHex(publicKey));\n }\n /**\n * Create an identity.\n * @param credentialCreationOptions an optional CredentialCreationOptions Challenge\n */\n static async create(credentialCreationOptions) {\n const creds = await _createCredential(credentialCreationOptions);\n if (!creds || creds.type !== 'public-key') {\n throw new Error('Could not create credentials.');\n }\n const response = creds.response;\n if (!(response.attestationObject instanceof ArrayBuffer)) {\n throw new Error('Was expecting an attestation response.');\n }\n // Parse the attestationObject as CBOR.\n const attObject = borc.decodeFirst(new Uint8Array(response.attestationObject));\n return new this(blobFromUint8Array(new Uint8Array(creds.rawId)), blobFromUint8Array(new Uint8Array(_authDataToCose(attObject.authData))));\n }\n getPublicKey() {\n return this._publicKey;\n }\n async sign(blob) {\n const result = (await navigator.credentials.get({\n publicKey: {\n allowCredentials: [\n {\n type: 'public-key',\n id: this.rawId,\n },\n ],\n challenge: blob,\n userVerification: 'preferred',\n },\n }));\n const response = result.response;\n if (response.signature instanceof ArrayBuffer &&\n response.authenticatorData instanceof ArrayBuffer) {\n const cbor = borc.encode(new borc.Tagged(55799, {\n authenticator_data: new Uint8Array(response.authenticatorData),\n client_data_json: new TextDecoder().decode(response.clientDataJSON),\n signature: new Uint8Array(response.signature),\n }));\n if (!cbor) {\n throw new Error('failed to encode cbor');\n }\n return blobFromUint8Array(new Uint8Array(cbor));\n }\n else {\n throw new Error('Invalid response from WebAuthn.');\n }\n }\n /**\n * Allow for JSON serialization of all information needed to reuse this identity.\n */\n toJSON() {\n return {\n publicKey: this._publicKey.getCose().toString('hex'),\n rawId: this.rawId.toString('hex'),\n };\n }\n}\n//# sourceMappingURL=webauthn.js.map","// tslint:disable:no-bitwise\n// This file is translated to JavaScript from\n// https://lxp32.github.io/docs/a-simple-example-crc32-calculation/\nconst lookUpTable = new Uint32Array([\n 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3,\n 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91,\n 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,\n 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5,\n 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,\n 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,\n 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f,\n 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d,\n 0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,\n 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,\n 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457,\n 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,\n 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb,\n 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9,\n 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,\n 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad,\n 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683,\n 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,\n 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7,\n 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,\n 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,\n 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79,\n 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f,\n 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,\n 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,\n 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21,\n 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,\n 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45,\n 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db,\n 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,\n 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf,\n 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d,\n]);\n/**\n * Calculate the CRC32 of an ArrayBufferLike.\n * @param buf The BufferLike to calculate the CRC32 of.\n */\nexport function getCrc32(buf) {\n const b = new Uint8Array(buf);\n let crc = -1;\n // tslint:disable-next-line:prefer-for-of\n for (let i = 0; i < b.length; i++) {\n const byte = b[i];\n const t = (byte ^ crc) & 0xff;\n crc = lookUpTable[t] ^ (crc >>> 8);\n }\n return (crc ^ -1) >>> 0;\n}\n//# sourceMappingURL=getCrc.js.map","// tslint:disable:no-bitwise\nconst alphabet = 'abcdefghijklmnopqrstuvwxyz234567';\n// Build a lookup table for decoding.\nconst lookupTable = Object.create(null);\nfor (let i = 0; i < alphabet.length; i++) {\n lookupTable[alphabet[i]] = i;\n}\n// Add aliases for rfc4648.\nlookupTable['0'] = lookupTable.o;\nlookupTable['1'] = lookupTable.i;\n/**\n * @param input The input array to encode.\n * @returns A Base32 string encoding the input.\n */\nexport function encode(input) {\n // How many bits will we skip from the first byte.\n let skip = 0;\n // 5 high bits, carry from one byte to the next.\n let bits = 0;\n // The output string in base32.\n let output = '';\n function encodeByte(byte) {\n if (skip < 0) {\n // we have a carry from the previous byte\n bits |= byte >> -skip;\n }\n else {\n // no carry\n bits = (byte << skip) & 248;\n }\n if (skip > 3) {\n // Not enough data to produce a character, get us another one\n skip -= 8;\n return 1;\n }\n if (skip < 4) {\n // produce a character\n output += alphabet[bits >> 3];\n skip += 5;\n }\n return 0;\n }\n for (let i = 0; i < input.length;) {\n i += encodeByte(input[i]);\n }\n return output + (skip < 0 ? alphabet[bits >> 3] : '');\n}\n/**\n * @param input The base32 encoded string to decode.\n */\nexport function decode(input) {\n // how many bits we have from the previous character.\n let skip = 0;\n // current byte we're producing.\n let byte = 0;\n const output = new Uint8Array(((input.length * 4) / 3) | 0);\n let o = 0;\n function decodeChar(char) {\n // Consume a character from the stream, store\n // the output in this.output. As before, better\n // to use update().\n let val = lookupTable[char.toLowerCase()];\n if (val === undefined) {\n throw new Error(`Invalid character: ${JSON.stringify(char)}`);\n }\n // move to the high bits\n val <<= 3;\n byte |= val >>> skip;\n skip += 5;\n if (skip >= 8) {\n // We have enough bytes to produce an output\n output[o++] = byte;\n skip -= 8;\n if (skip > 0) {\n byte = (val << (5 - skip)) & 255;\n }\n else {\n byte = 0;\n }\n }\n }\n for (const c of input) {\n decodeChar(c);\n }\n return output.slice(0, o);\n}\n//# sourceMappingURL=base32.js.map","import { Actor, HttpAgent } from '@dfinity/agent';\nimport { AuthClient } from \"@dfinity/auth-client\";\nimport { sha224 } from '@dfinity/principal/lib/esm/utils/sha224';\nimport { getCrc32 } from '@dfinity/principal/lib/esm/utils/getCrc';\nimport { Principal } from \"@dfinity/agent\"; \nimport {MyPrincipal} from '@dfinity/principal';\nimport { mooncatparser } from \"./bunny/bunnyparser.js\";\nimport { bunnycolors } from \"./bunny/bunnycolors.js\";\n\n/********************************* */\nimport { idlFactory as icp_bunny_idl, canisterId as icp_bunny_id } from 'dfx-generated/prod_icpbunny';\n\n\n// Canister Id as an example\nconst ckBTCCanister = 'mxzaz-hqaaa-aaaar-qaada-cai';\nconst bitcoinCanisterId = 'cepwu-pyaaa-aaaal-acpiq-cai';\n\nconst punkCanisterId = 'qcg3w-tyaaa-aaaah-qakea-cai';\nconst bunnyImageCanId = 'emtmi-oyaaa-aaaaf-qaecq-cai';\nconst financeCanisterID = 'hhf2l-iaaaa-aaaaf-qaeia-cai';\n\nconst storage = [];\n\nstorage[0] = 'efqhu-yqaaa-aaaaf-qaeda-cai';\nstorage[1] = 'ecrba-viaaa-aaaaf-qaedq-cai';\nstorage[2] = 'fp7fo-2aaaa-aaaaf-qaeea-cai';\nstorage[3] = 'fi6d2-xyaaa-aaaaf-qaeeq-cai';\nstorage[4] = 'fb5ig-bqaaa-aaaaf-qaefa-cai';\n\nstorage[5] = 'fg4os-miaaa-aaaaf-qaefq-cai';\nstorage[6] = 'ft377-naaaa-aaaaf-qaega-cai';\nstorage[7] = 'fu2zl-ayaaa-aaaaf-qaegq-cai';\nstorage[8] = 'f5zsx-wqaaa-aaaaf-qaeha-cai';\nstorage[9] = 'f2yud-3iaaa-aaaaf-qaehq-cai';\nstorage[10]= 'emtmi-oyaaa-aaaaf-qaecq-cai'; //Used in Stage0 Testing\n\n\nconst Breed = [];\nBreed[0] = 'Pointed Beveren'; \n \nconst EarningCapacity = [];\nEarningCapacity[0] = \"2\";\n \n\nconst LifeSpan = [];\nLifeSpan[0] = \"66\";\n \n\nconst BreedingCapacity = [];\nBreedingCapacity[0] = \"10\";\n \n\nvar rareIndex = 0;\nvar trait = {\n \"Breed\": Breed[rareIndex], \n \"EarningCapacity\": EarningCapacity[rareIndex], \n \"LifeSpan\": LifeSpan[rareIndex], \n \"BreedingCapacity\": BreedingCapacity[rareIndex],\n \"Gender\": true, \n \"Fertility\": true, \n \"ThreeD_Breedable\": false\n };\n\n/***********************************************/\n\nconst connectionState = false;\nvar isSingleImage = false;\n\n\nvar co_ordinates = [\"(9,-10)\"];\nvar emptyTokens = [16500];\n\n\nvar ImageChange = [887];\nvar NFTImageCounter = 0;\n\nconst agent = new HttpAgent();\nlet principal = new Principal();\nvar i = 0;\n\nlet amountPaid = 0;\nvar price = 0.0;\nlet nextAccountID = 0;\nlet punkCount = 0;\nvar seconds = 0;\nvar rareBunnyEnabled = false;\nvar isPunkHolder = false;\nvar adoptInProgress = false;\n\nlet totalLength = emptyTokens.length;\n\n\n\nvar isPrincipalClaimed = false;\nconst whitelist = [bitcoinCanisterId,ckBTCCanister];\n\n\n/********************************************************************************/\n// Bitcoin Bunny Starts here \n/********************************************************************************/\n\n//bitcoinCanisterId\nconst bitcoinFactory = ({ IDL }) => {\n const BitcoinAddress = IDL.Text;\n const Satoshi = IDL.Nat64;\n const Account = IDL.Record({\n 'owner' : IDL.Principal,\n 'subaccount' : IDL.Opt(IDL.Vec(IDL.Nat8)),\n }); \n const Invoice = IDL.Record({ 'to' : Account, 'amount' : IDL.Nat });\n\n const loanDetails = IDL.Record({\n 'loan_amount' : IDL.Text,\n 'inscription' : IDL.Text,\n 'loan_maturity' : IDL.Text,\n 'loan_period' : IDL.Text,\n 'inscriptionID' : IDL.Text,\n });\n\n return IDL.Service({\n 'acceptCycles' : IDL.Func([], [], []),\n 'availableCycles' : IDL.Func([], [IDL.Nat], ['query']),\n 'getAddress' : IDL.Func([IDL.Nat], [IDL.Opt(IDL.Text)], ['query']),\n 'getAddressCount' : IDL.Func([], [IDL.Nat], ['query']),\n 'getBTCAddress' : IDL.Func([], [IDL.Text], []),\n 'getUsedAddressCount' : IDL.Func([], [IDL.Nat], ['query']),\n 'checkBalance' : IDL.Func([], [IDL.Nat], []),\n 'get_balance' : IDL.Func([BitcoinAddress], [Satoshi], []),\n 'myBTCAddress' : IDL.Func([], [IDL.Vec(IDL.Text)], []),\n 'getMyInscriptionId' : IDL.Func([IDL.Text], [IDL.Vec(IDL.Text)], ['query']),\n 'getMyInscriptions' : IDL.Func([IDL.Text], [IDL.Vec(IDL.Text)], ['query']),\n 'getAllKeys' : IDL.Func([], [IDL.Text], ['query']),\n 'getInvoice' : IDL.Func([], [IDL.Text], []),\n 'getPaymentDetails' : IDL.Func([IDL.Nat], [Invoice], []),\n 'myPrincipal' : IDL.Func([], [IDL.Principal], []),\n 'setWithdrawOrdinals' : IDL.Func(\n [IDL.Text, IDL.Text, IDL.Text],\n [IDL.Text],\n [],\n ), \n 'setLoanDetails' : IDL.Func(\n [IDL.Text, IDL.Text, IDL.Text, IDL.Text, IDL.Text],\n [IDL.Text],\n [],\n ),\n 'getLoanDetails' : IDL.Func(\n [IDL.Principal],\n [IDL.Opt(IDL.Vec(loanDetails))],\n ['query'],\n ),\n 'setAddress' : IDL.Func([IDL.Text], [IDL.Text], []),\n 'setInscriptions' : IDL.Func(\n [IDL.Text, IDL.Text, IDL.Text],\n [IDL.Text],\n [],\n ),\n 'userBTCAddress' : IDL.Func([IDL.Principal], [IDL.Vec(IDL.Text)], []),\n 'wallet_receive' : IDL.Func(\n [],\n [IDL.Record({ 'accepted' : IDL.Nat64 })],\n [],\n ),\n });\n};\n\n/*****************************************************************************************/\nconst ckBTCFactory = ({ IDL }) => {\n const Value = IDL.Rec();\n const Vec = IDL.Rec();\n const GetBlocksRequest = IDL.Record({\n 'start' : IDL.Nat,\n 'length' : IDL.Nat,\n });\n Vec.fill(\n IDL.Vec(\n IDL.Variant({\n 'Int' : IDL.Int,\n 'Map' : IDL.Vec(IDL.Tuple(IDL.Text, Value)),\n 'Nat' : IDL.Nat,\n 'Nat64' : IDL.Nat64,\n 'Blob' : IDL.Vec(IDL.Nat8),\n 'Text' : IDL.Text,\n 'Array' : Vec,\n })\n )\n );\n Value.fill(\n IDL.Variant({\n 'Int' : IDL.Int,\n 'Map' : IDL.Vec(IDL.Tuple(IDL.Text, Value)),\n 'Nat' : IDL.Nat,\n 'Nat64' : IDL.Nat64,\n 'Blob' : IDL.Vec(IDL.Nat8),\n 'Text' : IDL.Text,\n 'Array' : Vec,\n })\n );\n\n\n const Transfer = IDL.Record({\n 'to' : Account,\n 'fee' : IDL.Opt(IDL.Nat),\n 'from' : Account,\n 'memo' : IDL.Opt(IDL.Vec(IDL.Nat8)),\n 'created_at_time' : IDL.Opt(IDL.Nat64),\n 'amount' : IDL.Nat,\n });\n const Transaction = IDL.Record({\n 'burn' : IDL.Opt(Burn),\n 'kind' : IDL.Text,\n 'mint' : IDL.Opt(Mint),\n 'timestamp' : IDL.Nat64,\n 'transfer' : IDL.Opt(Transfer),\n });\n\n const GetTransactionsResponse = IDL.Record({\n 'first_index' : IDL.Nat,\n 'log_length' : IDL.Nat,\n 'transactions' : IDL.Vec(Transaction),\n 'archived_transactions' : IDL.Vec(ArchivedRange_1),\n });\n const StandardRecord = IDL.Record({ 'url' : IDL.Text, 'name' : IDL.Text });\n const TransferArg = IDL.Record({\n 'to' : Account,\n 'fee' : IDL.Opt(IDL.Nat),\n 'memo' : IDL.Opt(IDL.Vec(IDL.Nat8)),\n 'from_subaccount' : IDL.Opt(IDL.Vec(IDL.Nat8)),\n 'created_at_time' : IDL.Opt(IDL.Nat64),\n 'amount' : IDL.Nat,\n });\n const TransferError = IDL.Variant({\n 'GenericError' : IDL.Record({\n 'message' : IDL.Text,\n 'error_code' : IDL.Nat,\n }),\n 'TemporarilyUnavailable' : IDL.Null,\n 'BadBurn' : IDL.Record({ 'min_burn_amount' : IDL.Nat }),\n 'Duplicate' : IDL.Record({ 'duplicate_of' : IDL.Nat }),\n 'BadFee' : IDL.Record({ 'expected_fee' : IDL.Nat }),\n 'CreatedInFuture' : IDL.Record({ 'ledger_time' : IDL.Nat64 }),\n 'TooOld' : IDL.Null,\n 'InsufficientFunds' : IDL.Record({ 'balance' : IDL.Nat }),\n });\n const Result = IDL.Variant({ 'Ok' : IDL.Nat, 'Err' : TransferError });\n return IDL.Service({\n 'get_blocks' : IDL.Func([GetBlocksRequest], [GetBlocksResponse], ['query']),\n 'get_data_certificate' : IDL.Func([], [DataCertificate], ['query']),\n 'get_transactions' : IDL.Func(\n [GetBlocksRequest],\n [GetTransactionsResponse],\n ['query'],\n ),\n\n 'icrc1_balance_of' : IDL.Func([Account], [IDL.Nat], ['query']),\n 'icrc1_transfer' : IDL.Func([TransferArg], [Result], []),\n });\n}; \n/*****************************************************************************************/\n\n(async () => {\n const result = await window?.ic?.plug?.requestConnect({\n whitelist,\n host:\"https://mainnet.dfinity.network\",\n }); \n const connectionState = result ? true : false;\n console.log(`The Connection Result ${result}!`);\n console.log(`The Connection was ${connectionState}!`);\n\n var getAddress = document.getElementById('get-ordinal-address');\n\n getAddress.click();\n\n \n})();\n\n\ndocument.getElementById(\"get-ordinal-address\").addEventListener(\"click\", async () => {\n \n\n const bitcoinActor = await window.ic.plug.createActor({\n canisterId: bitcoinCanisterId,\n interfaceFactory: bitcoinFactory,\n });\n\n startBar();\n document.getElementById(\"status\").innerText = \"⏰, Generating taproot address...\";\n\n\n const principal = await window.ic.plug.agent.getPrincipal();\n\n \n\n console.log(principal.toText());\n console.log(principal.toString());\n\n let userPrincipal = Principal.fromText(principal.toText());\n\n var ordinalAddress = await bitcoinActor.getBTCAddress();\n\n \n var amountPay = 100;\n var paymentDetails = await bitcoinActor.getPaymentDetails(amountPay);\n console.log(\"Payment Details \\n\" + paymentDetails);\n\n console.log(\"Payment Details \\n\" + paymentDetails.to.subaccount);\n console.log(\"Payment Details \\n\" + paymentDetails.to.owner);\n\n\n\n //document.getElementById(\"principal\").value = userPrincipal;\n document.getElementById(\"ordinal-addy-label\").innerHTML = \"You can send your ordinals to below address\";\n document.getElementById(\"ordinal-address\").value = ordinalAddress;\n\n document.getElementById(\"status\").innerText = \"✅ Address generation completed \\n\" + ordinalAddress;\n stopBar();\n //Next Start the Ordinals Check\n var checkOrdinals = document.getElementById('check-ordinals');\n checkOrdinals.click();\n\n});\n\n\n\n\ndocument.getElementById(\"withdraw-ordinals\").addEventListener(\"click\", async () => {\n\n const bitcoinActor = await window.ic.plug.createActor({\n canisterId: bitcoinCanisterId,\n interfaceFactory: bitcoinFactory,\n });\n const principal = await window.ic.plug.agent.getPrincipal();\n let userPrincipal = Principal.fromText(principal.toText());\n\n document.getElementById(\"withdraw-ordinals\").innerText = \"⏰, Processing...\";\n\n document.getElementById(\"status\").innerHTML = \"⏰, With draw request in progress...\";\n\n\n\n var userWallet = document.getElementById(\"user_wallet\").value;\n var loanInscriptionId = document.getElementById(\"loan-inscriptionid\").value; \n\n\n console.log(\"userWallet \" + userWallet);\n console.log(\"loanInscriptionId \" + loanInscriptionId);\n console.log(principal.toString());\n\n var principal_ = principal.toString();\n \n var withOrdinals = await bitcoinActor.setWithdrawOrdinals(userWallet,loanInscriptionId,principal_);\n\n document.getElementById(\"status\").innerHTML = \"✅ \" + withOrdinals;\n document.getElementById(\"withdraw-ordinals\").innerText = \"✅ \" + withOrdinals;\n console.log(withOrdinals);\n\n});\n\n\n\ndocument.getElementById(\"addLoan\").addEventListener(\"click\", async () => {\n\n const bitcoinActor = await window.ic.plug.createActor({\n canisterId: bitcoinCanisterId,\n interfaceFactory: bitcoinFactory,\n });\n\n document.getElementById(\"addLoan\").innerText = \"⏰, Processing...\";\n\n document.getElementById(\"status\").innerHTML = \"⏰, Please wait...\";\n\n\n var loanAmount = document.getElementById(\"loan-amount\").value;\n var loanPeriod = document.getElementById(\"loan-period\").value;\n var loanMaturity = document.getElementById(\"loan-maturity\").value; \n var loanInscription = document.getElementById(\"loan-inscription\").value; \n var loanInscriptionId = document.getElementById(\"loan-inscriptionid\").value; \n\n console.log(\"loanInscriptionId \" + loanInscriptionId);\n console.log(\"loanInscription \" + loanInscription);\n console.log(\"loanMaturity \" + loanMaturity);\n console.log(\"loanPeriod \" + loanPeriod);\n console.log(\"loanAmount \" + loanAmount);\n\n\n var setLoan = await bitcoinActor.setLoanDetails(loanInscriptionId,loanInscription, loanAmount, loanPeriod, loanMaturity);\n\n document.getElementById(\"status\").innerHTML = \"✅ \" + setLoan;\n document.getElementById(\"addLoan\").innerText = \"✅ \" + setLoan;\n console.log(setLoan);\n\n});\n\nasync function AcceptLoan(inscription_id)\n{\n console.log(inscription_id);\n\n const bitcoinActor = await window.ic.plug.createActor({\n canisterId: bitcoinCanisterId,\n interfaceFactory: bitcoinFactory,\n });\n\n var allAddress = await bitcoinActor.getInvoice();\n console.log(\"..................................\" + allAddress);\n document.getElementById(\"principal\").value = allAddress;\n\n}\n\n\nfunction ImageClick(inscription_id, inscriptions,imageLink)\n{\n console.log(inscription_id + \"....\"+ inscriptions);\n document.getElementById(\"loan-inscription\").value = inscriptions; \n document.getElementById(\"loan-inscriptionid\").value = inscription_id;\n document.getElementById(\"ordinalImage\").src = imageLink; \n document.getElementById(\"withordinalImage\").src = imageLink; \n \n}\n\n document.getElementById(\"clear-table\").addEventListener(\"click\", async () => {\n\n var loanTable = document.getElementById (\"loanTable\");\n var ordTable = document.getElementById (\"ordinalsTable\");\n \n \n\n for(var k = 0; k <= ordTable.rows.length-1; k++)\n {\n console.log(\"Ord Table \" + k);\n ordTable.deleteRow(k);\n }\n\n for(var k = 1; k<= loanTable.rows.length; k++)\n {\n console.log(\"Loan Table \" + k);\n loanTable.deleteRow(k);\n }\n });\n\n\n document.getElementById(\"check-loans\").addEventListener(\"click\", async () => {\n\n \n const bitcoinActor = await window.ic.plug.createActor({\n canisterId: bitcoinCanisterId,\n interfaceFactory: bitcoinFactory,\n });\n \n var canisterBalance = await bitcoinActor.checkBalance();\n document.getElementById(\"canister-balance\").innerHTML = \"💰\" + canisterBalance + \" ckBTC\" ;\n \n var allAddress = await bitcoinActor.getAllKeys();\n\n console.log(\"..................................\" + allAddress);\n\n\n var table = document.getElementById (\"loanTable\");\n var ordTable = document.getElementById (\"ordinalsTable\");\n \n\n\n document.getElementById(\"status\").innerHTML = \"💰 Fetching Loan details\";\n var address_ = allAddress.split(\",\");\n \n \n for (var i = 0; i < address_.length; i++) {\n\n var loanDetails = await bitcoinActor.getLoanDetails(address_[i]);\n \n if (loanDetails.length > 0) {\n var loanCount = 1;\n \n for (var i = 0; i < loanDetails[0].length; i++) {\n\n\n var loanDetailsChild = loanDetails[0][i];\n var loanTr = table.insertRow(-1);\n\n var ordContent = \"https://ordinals.com/content/\" + loanDetailsChild.inscriptionID;\n var loanTd = loanTr.insertCell(-1);\n var oImg = document.createElement(\"img\");\n oImg.setAttribute('src', ordContent);\n oImg.setAttribute('alt', loanDetailsChild.inscription);\n oImg.width = '60';\n oImg.height = '60';\n loanTd.appendChild(oImg);\n\n loanTd = loanTr.insertCell(-1);\n loanTd.appendChild(document.createTextNode(loanDetailsChild.inscription));\n\n loanTd = loanTr.insertCell(-1);\n loanTd.appendChild(document.createTextNode(loanDetailsChild.loan_amount));\n\n loanTd = loanTr.insertCell(-1);\n loanTd.appendChild(document.createTextNode(loanDetailsChild.loan_period));\n\n loanTd = loanTr.insertCell(-1);\n loanTd.appendChild(document.createTextNode(loanDetailsChild.loan_maturity));\n\n\n loanTd = loanTr.insertCell(-1);\n const btn = document.createElement(\"BUTTON\");\n\n btn.innerHTML = \"Accept Loan:\" + loanCount + \" 💰\";\n btn.setAttribute('name',loanDetailsChild.inscription);\n\n btn.onclick = function() { \n AcceptLoan(this.name);\n };\n\n \n btn.setAttribute(\"class\", \"btn\");\n loanTd.appendChild(btn);\n\n loanCount++;\n\n document.getElementById(\"check-ordinals\").innerText = \"I sent Ordinals 🚀 Check now\";\n\n }\n }\n \n }\n \n});\n\n\n\n\ndocument.getElementById(\"check-ordinals\").addEventListener(\"click\", async () => {\n\n const bitcoinActor = await window.ic.plug.createActor({\n canisterId: bitcoinCanisterId,\n interfaceFactory: bitcoinFactory,\n });\n\n document.getElementById(\"check-ordinals\").innerText = \"⏰, Processing...\";\n\n document.getElementById(\"status\").innerHTML = \"⏰, Searching for Ordinals, \\n Please wait...\";\n\n var ordinalAddress = document.getElementById(\"ordinal-address\").value;\n var ordinalsBalance = await bitcoinActor.get_balance(ordinalAddress);\n\n\n var canisterBalance = await bitcoinActor.checkBalance();\n document.getElementById(\"canister-balance\").innerHTML = \"💰\" + canisterBalance + \" ckBTC\" ;\n \n console.log(canisterBalance.toString());\n\n\n console.log(ordinalsBalance);\n console.log(ordinalsBalance.toString());\n\n var ordinal = ordinalsBalance.toString();\n\n var table = document.getElementById (\"loanTable\");\n var ordTable = document.getElementById (\"ordinalsTable\");\n\n console.log(parseInt(ordinal));\n\n if(parseInt(ordinal) > 0)\n {\n document.getElementById(\"check-ordinals\").innerText = \"🎉 Yes, we received your ordinals\";\n\n document.getElementById(\"status\").innerHTML = \"✅ Ordinals Found\" ;\n\n const principal = await window.ic.plug.agent.getPrincipal();\n\n console.log(principal.toText());\n console.log(principal.toString());\n \n let userPrincipal = Principal.fromText(principal.toText());\n\n document.getElementById(\"status\").innerHTML = \"✅ Fetching Ordinals details\" ;\n\n var inscriptions = await bitcoinActor.getMyInscriptions(ordinalAddress);\n var inscriptionId = await bitcoinActor.getMyInscriptionId(ordinalAddress);\n\n document.getElementById(\"status\").innerHTML = \"💰 Fetching Loan details\" ;\n var loanDetails = await bitcoinActor.getLoanDetails(principal);\n\n\n console.log(loanDetails);\n\n if(loanDetails.length > 0)\n {\n console.log(loanDetails[0][0].loan_amount);\n console.log(loanDetails[0][0].inscription);\n console.log(loanDetails[0][0].loan_maturity);\n console.log(loanDetails[0][0].loan_period);\n console.log(loanDetails[0][0].inscriptionID);\n\n\n console.log(\"Complete List \\n\");\n\n console.log(loanDetails);\n\n console.log(loanDetails[0].length);\n console.log(\"Only the first array \")\n console.log(loanDetails[0]);\n\n\n var loanCount = 1;\n for (var i = 0; i < loanDetails[0].length; i++){\n\n console.log(\"Looping....\" + i);\n\n var loanDetailsChild = loanDetails[0][i];\n\n var loanTr = table.insertRow(-1);\n\n var ordContent = \"https://ordinals.com/content/\"+loanDetailsChild.inscriptionID; \n var loanTd = loanTr.insertCell(-1);\n var oImg = document.createElement(\"img\");\n oImg.setAttribute('src', ordContent);\n oImg.setAttribute('alt', loanDetailsChild.inscription);\n oImg.width = '60';\n oImg.height = '60';\n loanTd.appendChild(oImg); \n\n loanTd = loanTr.insertCell(-1);\n loanTd.appendChild(document.createTextNode(loanDetailsChild.inscription));\n\n loanTd = loanTr.insertCell(-1);\n loanTd.appendChild(document.createTextNode(loanDetailsChild.loan_amount));\n\n loanTd = loanTr.insertCell(-1);\n loanTd.appendChild(document.createTextNode(loanDetailsChild.loan_period));\n\n loanTd = loanTr.insertCell(-1);\n loanTd.appendChild(document.createTextNode(loanDetailsChild.loan_maturity)); \n \n\n loanTd = loanTr.insertCell(-1);\n const btn = document.createElement(\"BUTTON\");\n //btn.innerHTML = \"Accept Loan:\"+ loanCount +\" 💰\";\n //btn.onclick = function() { alert('Accept111111111 Loan'); };\n\n btn.innerHTML = \"Accept Loan:\" + loanCount + \" 💰\";\n btn.setAttribute('name',loanDetailsChild.inscription);\n\n btn.onclick = function() { \n AcceptLoan(this.name);\n };\n\n btn.setAttribute(\"class\",\"btn\");\n loanTd.appendChild(btn); \n\n loanCount++;\n \n document.getElementById(\"check-ordinals\").innerText = \"I sent Ordinals 🚀 Check now\";\n\n }\n\n\n console.log(loanDetails.length);\n console.log(loanDetails[0].length);\n\n \n }\n console.log(\"Inscription = \" + inscriptions);\n\n var inscriptions_ = inscriptions.toString();\n\n var inscriptionIds_ = inscriptionId.toString();\n\n\n var inscriptionToken = inscriptions_.split(\",\");\n\n var inscriptionID = inscriptionIds_.split(\",\");\n\n console.log(inscriptionToken + \" now we will see the length\");\n console.log(inscriptionToken.length);\n\n console.log(\"Inscription ID = \");\n console.log(inscriptionID);\n\n\n\n var ordTr = ordTable.insertRow(-1);\n var ordTrLink = ordTable.insertRow(-1);\n\n var no_of_cols = 0;\n\n for (var i = 0; i < inscriptionToken.length; i++){\n\n\n var ordLink = \"https://ordinals.com/inscription/\"+inscriptions[i];\n var ordimg = \"https://ordinals.com/content/\"+inscriptions[i];\n\n console.log(\"Creating td dynamically and adding image and link\");\n console.log(\"Adding single row\")\n \n \n var td = ordTr.insertCell(-1);\n var oImg = document.createElement(\"img\");\n oImg.setAttribute('src', ordimg);\n oImg.setAttribute('alt', inscriptions[i]);\n oImg.setAttribute('name', inscriptionID[i]);\n\n oImg.width = '60';\n oImg.height = '60';\n\n var id = inscriptionID[i];\n var name = inscriptions[i];\n\n console.log(\"Id = \" + id + \"Name \" + name);\n \n oImg.onclick = function() { \n ImageClick(this.alt, this.name,this.src);\n };\n td.appendChild(oImg);\n\n\n var tdlink = ordTrLink.insertCell(-1);\n var oLink = document.createElement(\"a\");\n oLink.href = ordLink;\n oLink.setAttribute('target',\"_\");\n // set link text\n oLink.text = inscriptionID[i]; \n tdlink.appendChild(oLink); \n\n no_of_cols = no_of_cols + 1;\n if(no_of_cols >= 3)\n {\n ordTr = ordTable.insertRow(-1);\n ordTrLink = ordTable.insertRow(-1); \n no_of_cols = 0;\n }\n console.log(\"Creating td dynamically End here\"); \n }\n }\n else\n {\n document.getElementById(\"status\").innerHTML = \"🥺 No Ordinals Found\" ;\n }\n});\n\n\n\n/********************************************************************************/\n// Bitcoin Bunny Ends here \n/********************************************************************************/\n\n/*\nconst bunnyFactory = ({ IDL }) => {\n const Property = IDL.Record({ 'value' : IDL.Text, 'name' : IDL.Text });\n const MintRequest_2 = IDL.Record({\n 'url' : IDL.Text,\n 'dataurl' : IDL.Text,\n 'accountid' : IDL.Text,\n 'contentType' : IDL.Text,\n 'data' : IDL.Vec(IDL.Nat8),\n 'desc' : IDL.Text,\n 'name' : IDL.Text,\n 'properties' : IDL.Vec(Property),\n });\n const MintRequest = MintRequest_2;\n const Time = IDL.Int;\n const TokenDesc_2 = IDL.Record({\n 'id' : IDL.Nat,\n 'url' : IDL.Text,\n 'owner' : IDL.Principal,\n 'desc' : IDL.Text,\n 'name' : IDL.Text,\n 'properties' : IDL.Vec(Property),\n 'date_of_birth' : Time,\n 'storage_canister' : IDL.Text,\n });\n const RarirtyRequest_2 = IDL.Record({\n 'desc' : IDL.Text,\n 'name' : IDL.Text,\n 'properties' : IDL.Vec(Property),\n });\n const RarirtyRequest = RarirtyRequest_2; \n const TokenDesc = TokenDesc_2;\nreturn IDL.Service({\n 'getPrice' : IDL.Func([], [IDL.Nat64], []),\n 'getCurrentToken' : IDL.Func([], [IDL.Nat], ['query']),\n 'nextAccount' : IDL.Func([], [], []),\n 'claim' : IDL.Func([], [IDL.Nat], []),\n 'mint' : IDL.Func([MintRequest], [IDL.Nat], []),\n 'setRarity' : IDL.Func([IDL.Nat, RarirtyRequest, IDL.Nat], [TokenDesc], []),\n 'my_tokens' : IDL.Func([], [IDL.Vec(IDL.Nat)], []),\n 'transfer_to' : IDL.Func([IDL.Principal, IDL.Nat], [IDL.Bool], []),\n 'user_tokens' : IDL.Func([IDL.Principal], [IDL.Vec(IDL.Nat)], ['query']),\n});\n};\n\n*/\n\n/*\nconst financeFactory = ({ IDL }) => {\n\nreturn IDL.Service({\n'getNormalPrice' : IDL.Func([], [IDL.Nat64], ['query']),\n'getPunkPrice' : IDL.Func([], [IDL.Nat64], ['query']),\n'isPunkHolderClaimed' : IDL.Func([IDL.Principal], [IDL.Bool], ['query']),\n'savePrincipal' : IDL.Func([IDL.Principal], [], []),\n'claimedPrincipal' : IDL.Func([], [], []),\n'isClaimed' : IDL.Func([IDL.Principal], [IDL.Bool], ['query']),\n'getAccountIndex' : IDL.Func(\n[IDL.Principal],\n[IDL.Opt(IDL.Nat)],\n['query'],\n),\n});\n};\n\nconst bunnyImageFactory = ({ IDL }) => {\nconst TokenData_2 = IDL.Record({\n'id' : IDL.Nat,\n'contentType' : IDL.Text,\n'data' : IDL.Vec(IDL.Nat8),\n});\nconst TokenData = TokenData_2; \nreturn IDL.Service({\n'saveBunny' : IDL.Func([TokenData, IDL.Nat], [IDL.Nat], []),\n});\n};\n\n\nconst punkFactory = ({ IDL }) => {\nreturn IDL.Service({\n'user_tokens' : IDL.Func([IDL.Principal], [IDL.Vec(IDL.Nat)], ['query']),\n});\n};\n\n\nconst icp_bunny = Actor.createActor(icp_bunny_idl, { agent, canisterId: icp_bunny_id });\n\n\nvar el = document.getElementById('seconds-counter');\n*/\n/*\nfunction start() {\n var tick = function(){\n // console.log(\"Ticket \" + seconds);\n seconds += 1;\n el.innerText = \"Minting Time \" + seconds + \" seconds.\";\n };\n\n var timerId = setTimeout(tick, 1000);\n return timerId\n};\n\nfunction stop(timerId) {\n clearTimeout(timerId);\n};\n*/\n\n/*************************************** */\nvar mess = document.getElementById(\"bunnyBody\");\nmess.style.visibility = \"visible\";\n/************************************************/\nvar stopFlag = false;\nvar running = false;\nvar timerId = 0;\n\nfunction stopBar()\n{\n\tstopFlag = true;\n running = false;\n //stop(timerId);\n}\n\nfunction startBar() {\n\n //timerId = start();\n\n stopFlag = false;\n running = true;\n if (i == 0) {\n i = 1;\n var elem = document.getElementById(\"myBar\");\n var width = 1;\n var id = setInterval(frame, 50);\n function frame() {\n if(stopFlag)\n {\n running = false;\n \tclearInterval(id);\n width = 100;\n elem.style.width = width + \"%\";\n }\n if (width >= 100) {\n width = 0;\n i = 0;\n } else {\n width++;\n elem.style.width = width + \"%\";\n }\n }\n }\n}\n"],"sourceRoot":""}