{"version":3,"sources":["webpack://reversi_assets/./node_modules/base64-arraybuffer/lib/base64-arraybuffer.js","webpack://reversi_assets/./node_modules/base64-js/index.js","webpack://reversi_assets/./node_modules/bignumber.js/bignumber.js","webpack://reversi_assets/./node_modules/borc/node_modules/buffer/index.js","webpack://reversi_assets/./node_modules/borc/src/constants.js","webpack://reversi_assets/./node_modules/borc/src/decoder.asm.js","webpack://reversi_assets/./node_modules/borc/src/decoder.js","webpack://reversi_assets/./node_modules/borc/src/diagnose.js","webpack://reversi_assets/./node_modules/borc/src/encoder.js","webpack://reversi_assets/./node_modules/borc/src/index.js","webpack://reversi_assets/./node_modules/borc/src/simple.js","webpack://reversi_assets/./node_modules/borc/src/tagged.js","webpack://reversi_assets/./node_modules/borc/src/utils.js","webpack://reversi_assets/./node_modules/buffer-pipe/index.js","webpack://reversi_assets/./node_modules/buffer/index.js","webpack://reversi_assets/./src/reversi_assets/public/style.css","webpack://reversi_assets/./node_modules/css-loader/dist/runtime/api.js","webpack://reversi_assets/./node_modules/ieee754/index.js","webpack://reversi_assets/./node_modules/iso-url/index.js","webpack://reversi_assets/./node_modules/iso-url/src/relative.js","webpack://reversi_assets/./node_modules/iso-url/src/url-browser.js","webpack://reversi_assets/./node_modules/js-sha256/src/sha256.js","webpack://reversi_assets/./node_modules/mithril/api/mount-redraw.js","webpack://reversi_assets/./node_modules/mithril/api/router.js","webpack://reversi_assets/./node_modules/mithril/hyperscript.js","webpack://reversi_assets/./node_modules/mithril/index.js","webpack://reversi_assets/./node_modules/mithril/mount-redraw.js","webpack://reversi_assets/./node_modules/mithril/pathname/assign.js","webpack://reversi_assets/./node_modules/mithril/pathname/build.js","webpack://reversi_assets/./node_modules/mithril/pathname/compileTemplate.js","webpack://reversi_assets/./node_modules/mithril/pathname/parse.js","webpack://reversi_assets/./node_modules/mithril/promise/polyfill.js","webpack://reversi_assets/./node_modules/mithril/promise/promise.js","webpack://reversi_assets/./node_modules/mithril/querystring/build.js","webpack://reversi_assets/./node_modules/mithril/querystring/parse.js","webpack://reversi_assets/./node_modules/mithril/render.js","webpack://reversi_assets/./node_modules/mithril/render/fragment.js","webpack://reversi_assets/./node_modules/mithril/render/hyperscript.js","webpack://reversi_assets/./node_modules/mithril/render/hyperscriptVnode.js","webpack://reversi_assets/./node_modules/mithril/render/render.js","webpack://reversi_assets/./node_modules/mithril/render/trust.js","webpack://reversi_assets/./node_modules/mithril/render/vnode.js","webpack://reversi_assets/./node_modules/mithril/request.js","webpack://reversi_assets/./node_modules/mithril/request/request.js","webpack://reversi_assets/./node_modules/mithril/route.js","webpack://reversi_assets/./node_modules/process/browser.js","webpack://reversi_assets/./node_modules/safe-buffer/index.js","webpack://reversi_assets/./node_modules/simple-cbor/src/index.js","webpack://reversi_assets/./node_modules/simple-cbor/src/serializer.js","webpack://reversi_assets/./node_modules/simple-cbor/src/value.js","webpack://reversi_assets/./src/reversi_assets/public/style.css?e878","webpack://reversi_assets/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack://reversi_assets/./node_modules/tweetnacl/nacl-fast.js","webpack://reversi_assets/webpack/bootstrap","webpack://reversi_assets/webpack/runtime/amd options","webpack://reversi_assets/webpack/runtime/compat get default export","webpack://reversi_assets/webpack/runtime/define property getters","webpack://reversi_assets/webpack/runtime/global","webpack://reversi_assets/webpack/runtime/hasOwnProperty shorthand","webpack://reversi_assets/webpack/runtime/make namespace object","webpack://reversi_assets/./node_modules/@dfinity/agent/lib/esm/agent/api.js","webpack://reversi_assets/./node_modules/@dfinity/principal/lib/esm/utils/base32.js","webpack://reversi_assets/./node_modules/@dfinity/principal/lib/esm/utils/getCrc.js","webpack://reversi_assets/./node_modules/@dfinity/principal/lib/esm/index.js","webpack://reversi_assets/./node_modules/@dfinity/principal/lib/esm/utils/sha224.js","webpack://reversi_assets/./node_modules/@dfinity/candid/lib/esm/utils/leb128.js","webpack://reversi_assets/./node_modules/@dfinity/candid/lib/esm/types.js","webpack://reversi_assets/./node_modules/@dfinity/candid/lib/esm/utils/hash.js","webpack://reversi_assets/./node_modules/@dfinity/candid/lib/esm/idl.js","webpack://reversi_assets/./node_modules/@dfinity/agent/lib/esm/request_id.js","webpack://reversi_assets/./node_modules/@dfinity/agent/lib/esm/auth.js","webpack://reversi_assets/./node_modules/@dfinity/agent/lib/esm/cbor.js","webpack://reversi_assets/./node_modules/@dfinity/agent/lib/esm/agent/http/transforms.js","webpack://reversi_assets/./node_modules/@dfinity/agent/lib/esm/agent/http/types.js","webpack://reversi_assets/./node_modules/@dfinity/agent/lib/esm/agent/http/index.js","webpack://reversi_assets/./node_modules/@dfinity/agent/lib/esm/agent/proxy.js","webpack://reversi_assets/./node_modules/@dfinity/agent/lib/esm/agent/index.js","webpack://reversi_assets/./node_modules/@dfinity/agent/lib/esm/canisters/management_idl.js","webpack://reversi_assets/./node_modules/@dfinity/agent/lib/esm/canisters/management.js","webpack://reversi_assets/./node_modules/@dfinity/agent/lib/esm/errors.js","webpack://reversi_assets/./node_modules/@dfinity/agent/lib/esm/vendor/bls/bls.js","webpack://reversi_assets/./node_modules/@dfinity/agent/lib/esm/utils/bls.js","webpack://reversi_assets/./node_modules/@dfinity/agent/lib/esm/certificate.js","webpack://reversi_assets/./node_modules/@dfinity/agent/lib/esm/polling/index.js","webpack://reversi_assets/./node_modules/@dfinity/agent/lib/esm/actor.js","webpack://reversi_assets/./node_modules/@dfinity/agent/lib/esm/polling/strategy.js","webpack://reversi_assets/./.dfx/ic/canisters/reversi/reversi.did.js","webpack://reversi_assets/./.dfx/ic/canisters/reversi/reversi.js","webpack://reversi_assets/./.dfx/ic/canisters/reversi_assets/reversi_assets.js","webpack://reversi_assets/./.dfx/ic/canisters/reversi_assets/reversi_assets.did.js","webpack://reversi_assets/./node_modules/@dfinity/identity/lib/esm/identity/ed25519.js","webpack://reversi_assets/./node_modules/@dfinity/identity/lib/esm/identity/delegation.js","webpack://reversi_assets/./node_modules/@dfinity/identity/lib/esm/identity/webauthn.js","webpack://reversi_assets/./node_modules/ic-stoic-identity/src/index.js","webpack://reversi_assets/./src/reversi_assets/public/game.js","webpack://reversi_assets/./src/reversi_assets/public/error.js","webpack://reversi_assets/./src/reversi_assets/public/ui.js","webpack://reversi_assets/./src/reversi_assets/public/index.js","webpack://reversi_assets/./src/reversi_assets/public/logo.png"],"names":["chars","lookup","Uint8Array","i","length","charCodeAt","arraybuffer","bytes","len","base64","substring","exports","encoded1","encoded2","encoded3","encoded4","bufferLength","p","ArrayBuffer","byteLength","b64","lens","getLens","validLen","placeHoldersLen","toByteArray","tmp","arr","Arr","_byteLength","curByte","revLookup","fromByteArray","uint8","extraBytes","parts","maxChunkLength","len2","push","encodeChunk","join","Array","code","Error","indexOf","start","end","num","output","globalObject","BigNumber","isNumeric","mathceil","Math","ceil","mathfloor","floor","bignumberError","tooManyDigits","BASE","LOG_BASE","MAX_SAFE_INTEGER","POWS_TEN","SQRT_BASE","MAX","bitFloor","n","coeffToString","a","s","z","j","r","slice","compare","x","y","b","xc","c","yc","k","e","l","intCheck","min","max","name","String","isOdd","toExponential","str","charAt","toFixedPoint","zs","clone","configObject","div","convertBase","parseNumeric","pow2_53","random53bitInt","basePrefix","dotAfter","dotBefore","isInfinityOrNaN","whitespaceOrPlus","P","prototype","constructor","toString","valueOf","ONE","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","v","alphabet","caseChanged","isNum","this","_isBigNumber","test","replace","search","round","DEBUG","toUpperCase","toLowerCase","format","rm","id","c0","ne","maxOrMin","args","method","m","call","normalise","pop","sd","d","ni","rd","pows10","out","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","set","obj","hasOwnProperty","crypto","getRandomValues","randomBytes","EXPONENTIAL_AT","RANGE","isBigNumber","maximum","arguments","lt","minimum","gt","random","dp","rand","Uint32Array","copy","splice","sum","plus","decimal","toBaseOut","baseIn","baseOut","arrL","reverse","sign","callerIsToString","pow","concat","multiply","base","temp","xlo","xhi","carry","klo","khi","aL","bL","cmp","subtract","more","prod","prodL","q","qc","rem","remL","rem0","xi","xL","yc0","yL","yz","NaN","isNaN","p1","p2","absoluteValue","abs","comparedTo","decimalPlaces","dividedBy","dividedToIntegerBy","idiv","exponentiatedBy","half","isModExp","nIsBig","nIsNeg","nIsOdd","isInteger","mod","times","integerValue","isEqualTo","eq","isFinite","isGreaterThan","isGreaterThanOrEqualTo","gte","isLessThan","isLessThanOrEqualTo","lte","isNegative","isPositive","isZero","minus","t","xLTy","xe","ye","modulo","multipliedBy","xcL","ycL","ylo","yhi","zc","sqrtBase","negated","precision","shiftedBy","squareRoot","sqrt","rep","toFixed","toFormat","split","g1","g2","intPart","fractionPart","isNeg","intDigits","substr","RegExp","toFraction","md","d0","d1","d2","exp","n0","n1","toNumber","toPrecision","toJSON","ieee754","customInspectSymbol","Symbol","Buffer","SlowBuffer","alloc","INSPECT_MAX_BYTES","K_MAX_LENGTH","createBuffer","RangeError","buf","Object","setPrototypeOf","arg","encodingOrOffset","TypeError","allocUnsafe","from","value","string","encoding","isEncoding","actual","write","fromString","isView","arrayView","isInstance","fromArrayBuffer","buffer","byteOffset","fromArrayLike","fromArrayView","SharedArrayBuffer","isBuffer","checked","undefined","numberIsNaN","type","isArray","data","fromObject","toPrimitive","assertSize","size","array","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","val","dir","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","read","readUInt16BE","foundIndex","found","hexWrite","offset","Number","remaining","strLen","parsed","parseInt","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","res","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","apply","decodeCodePointsArray","kMaxLength","TYPED_ARRAY_SUPPORT","proto","foo","typedArraySupport","console","error","defineProperty","enumerable","get","poolSize","fill","allocUnsafeSlow","_isBuffer","list","pos","swap16","swap32","swap64","toLocaleString","equals","inspect","trim","target","thisStart","thisEnd","thisCopy","targetCopy","includes","_arr","ret","hexSliceLookupTable","checkOffset","ext","checkInt","checkIEEE754","writeFloat","littleEndian","noAssert","writeDouble","newBuf","subarray","readUintLE","readUIntLE","mul","readUintBE","readUIntBE","readUint8","readUInt8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUintLE","writeUIntLE","writeUintBE","writeUIntBE","writeUint8","writeUInt8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUInt16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","INVALID_BASE64_RE","Infinity","leadSurrogate","base64clean","src","dst","table","i16","Bignumber","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","TWO","FOUR","EIGHT","INDEFINITE","SIMPLE","FALSE","TRUE","NULL","UNDEFINED","SYMS","PARENT","BREAK","STREAM","SHIFT32","SHIFT16","MAX_SAFE_HIGH","NEG_ONE","TEN","OBJECT","module","stdlib","foreign","heap","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","inputLength","parse","input","jumpTable","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","UINT_N_32","UINT_N_64","step","BYTE_STRING_8","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","mant","SIMPLE_FLOAT_SINGLE","SIMPLE_FLOAT_DOUBLE","ERROR","parser","utils","Simple","Tagged","URL","Decoder","opts","nextPowerOf2","_heap","_heap8","_buffer","_reset","_knownTags","assign","0","Date","1","2","arrayBufferToBignumber","3","4","5","32","35","tags","log","bind","_parents","_depth","_currentParent","ref","_push","createTag","createByteString","createUtf8String","values","createMap","createObject","createArray","_dec","_closeParent","hasChildren","_ref","tmpKey","buildMap","_res","tagNumber","typ","raw","buildInt32","f1","f2","buildInt64","h","createInt","createInt32","createInt64","createFloat","createFloatSingle","createFloatDouble","createInt32Neg","createInt64Neg","createTrue","createFalse","createNull","createUndefined","createInfinity","createInfinityNeg","createNaN","createNaNNeg","_createParent","_createArrayStartFixed","len1","len3","len4","_createObjectStartFixed","createByteStringFromHeap","createUtf8StringFromHeap","createSimpleUnassigned","tag","_decode","enc","decodeFirst","decodeAll","decode","Diagnose","super","fl","isNegativeZero","map","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","addSemanticType","fun","old","result","resultMethod","resultLength","finalize","pushWrite","b2","writeHalf","parseHalf","_pushUInt8","b4","_pushDoubleBE","mt","orig","_pushUInt16BE","_pushUInt32BE","_pushFloat","_pushInt","_pushNaN","_pushInfinity","_pushIntNum","gen","pushAny","_pushTag","_pushBuffer","source","_pushBigint","dec","slide","_pushRawMap","encodeCBOR","keyLength","encode","sort","keySorter","toType","_pushNumber","_pushString","_pushBoolean","_pushObject","_pushArray","_pushUndefined","_pushMap","_pushSet","_pushDate","_pushRegexp","index","o","diagnose","hasParent","err","JSON","stringify","converters","er","Map","u32","u","s16","lenA","lenB","count","_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","___CSS_LOADER_API_IMPORT___","useSourceMap","item","content","cssMapping","btoa","sourceMapping","sourceMap","unescape","encodeURIComponent","sourceURLs","sources","sourceRoot","cssWithMappingToString","modules","mediaQuery","dedupe","alreadyImportedModules","_i","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","rt","LN2","URLWithLegacySupport","URLSearchParams","defaultBase","relative","url","location","protocolMap","defaultProtocol","urlParsed","protocol","host","self","path","pathname","auth","username","password","query","startsWith","hash","hostname","href","origin","port","searchParams","createObjectURL","revokeObjectURL","userPass","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","Vnode","render","schedule","subscriptions","rendering","pending","sync","redraw","mount","component","view","Promise","buildPathname","parsePathname","compileTemplate","sentinel","$window","mountRedraw","fireAsync","setPath","state","title","history","replaceState","route","pushState","attrs","currentPath","lastUpdate","currentResolver","SKIP","defaultRoute","routes","onremove","compiled","SyntaxError","check","callAsync","setImmediate","setTimeout","resolve","scheduled","defaultData","some","ReferenceError","resolveRoute","decodeURIComponent","fail","params","loop","payload","matchedRoute","localComp","comp","onmatch","then","removeEventListener","addEventListener","onbeforeupdate","oncreate","vnode","Link","onclick","selector","oninit","onupdate","onbeforeremove","child","children","disabled","Boolean","currentTarget","handleEvent","defaultPrevented","button","which","ctrlKey","metaKey","shiftKey","altKey","preventDefault","param","hyperscript","trust","fragment","request","jsonp","parseQueryString","buildQueryString","PromisePolyfill","requestAnimationFrame","forEach","template","queryIndex","hashIndex","queryEnd","pathEnd","resolved","variadic","newQueryIndex","newHashIndex","newQueryEnd","newPathEnd","querystring","templateData","templateKeys","regexp","extra","exec","executor","resolvers","rejectors","resolveCurrent","handler","rejectCurrent","instance","_instance","shouldAbsorb","execute","retry","executeOnce","runs","run","onerror","onFulfilled","onRejection","resolveNext","rejectNext","handle","callback","next","promise","reject","catch","finally","reason","all","total","consume","race","object","destructure","entries","counters","entry","levels","cursor","level","nextLevel","isNumber","desc","getOwnPropertyDescriptor","hyperscriptVnode","normalizeChildren","selectorParser","selectorCache","hasOwn","isEmpty","compileSelector","match","classes","attrValue","className","execSelector","hasClass","class","newAttrs","text","currentRedraw","$doc","document","nameSpace","svg","math","getNameSpace","xmlns","checkState","original","callHook","activeElement","createNodes","parent","vnodes","hooks","nextSibling","ns","createNode","initLifecycle","dom","createTextNode","insertNode","createText","createHTML","createDocumentFragment","firstChild","domSize","childNodes","createFragment","is","element","createElementNS","createElement","setAttr","setAttrs","maybeSetContentEditable","textContent","selectedIndex","normalized","setLateSelectAttrs","$$reentrantLock$$","normalize","initComponent","createComponent","possibleParents","caption","thead","tbody","tfoot","tr","th","td","colgroup","col","innerHTML","appendChild","updateNodes","removeNodes","isOldKeyed","isKeyed","oldStart","oe","ve","topSibling","oldEnd","updateNode","getNextSibling","moveNodes","lisIndices","originalNextSibling","vnodesLength","oldIndices","li","matched","getKeyMap","oldIndex","il","lisTemp","makeLisIndices","commonLength","removeNode","oldTag","events","force","shouldNotUpdate","updateLifecycle","nodeValue","updateText","removeHTML","updateHTML","updateFragment","removeAttr","updateAttrs","updateElement","updateComponent","frag","moveChildToFrag","parentNode","insertBefore","contenteditable","contentEditable","stateResult","attrsResult","mask","reallyRemove","removeChild","isLifecycleMethod","attr","isFormAttribute","updateEvent","setAttributeNS","updateStyle","hasPropertyKey","setAttribute","removeAttribute","nsLastIndex","uppercaseRegex","capital","normalizeKey","style","cssText","setProperty","removeProperty","EventDict","_","ev","stopPropagation","active","namespace","namespaceURI","prevRedraw","focus","html","oncompletion","callbackCount","PromiseProxy","makeRequest","factory","background","complete","wrap","hasHeader","headers","__proto__","replacedAbort","body","assumeJSON","serialize","FormData","responseType","extract","xhr","XMLHttpRequest","aborted","abort","open","async","user","setRequestHeader","deserialize","withCredentials","timeout","onreadystatechange","readyState","success","status","response","responseText","send","callbackName","script","callbackKey","documentElement","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","marker","runClearTimeout","Item","noop","nextTick","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","undefined_","bool","number","doubleFloat","null_","serializeValue","find","getOwnPropertyNames","ToCborEncoder","toCBOR","CborSerializer","_encoders","Set","stable","addEncoder","encoder","delete","add","chosenEncoder","getEncoderFor","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","api","default","locals","memo","isOldIE","atob","getTarget","styleTarget","querySelector","HTMLIFrameElement","contentDocument","head","stylesInDom","getIndexByIdentifier","identifier","modulesToDom","idCountMap","identifiers","css","media","references","updater","addStyle","insertStyleElement","attributes","nonce","insert","textStore","replaceText","replacement","filter","applyToSingletonTag","remove","styleSheet","cssNode","applyToTag","singleton","singletonCounter","styleIndex","removeStyleElement","newObj","lastIdentifiers","newList","newLastIdentifiers","_index","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","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","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","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","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","amdO","getter","definition","globalThis","Function","prop","toStringTag","ReplicaRejectCode","lookupTable","lookUpTable","_isPrincipal","sha","shaObj","other","fromText","_a","skip","decodeChar","char","principal","toText","checksumArrayBuf","crc","getCrc32","checksum","matches","bits","safeRead","pipe","lebDecode","weight","slebEncode","getLowerBytes","slebDecode","pipeView","blobFromText","idlLabelToId","label","isSafeInteger","TextEncoder","idlHash","magicNumber","zipWith","xs","ys","TypeTable","_typs","_idx","has","idx","knot","knotIdx","typeName","Visitor","visitType","visitPrimitive","visitNumber","visitConstruct","fields","components","visitRecord","Type","typeTable","_buildTypeTableImpl","PrimitiveType","ConstructType","RecClass","getType","EmptyClass","visitEmpty","BoolClass","visitBool","checkType","NullClass","visitNull","ReservedClass","visitReserved","decodeValue","isValidUTF8","TextClass","visitText","IntClass","visitInt","NatClass","visitNat","FloatClass","_bits","visitFloat","FixedIntClass","visitFixedInt","log2","FixedNatClass","visitFixedNat","VecClass","_type","_blobOptimization","visitVec","every","covariant","encodeValue","buildTypeTable","opCode","encodeType","vec","rets","display","valueToString","OptClass","visitOpt","opt","RecordClass","_fields","bufs","T","record","expectKey","expectType","TupleClass","_components","visitTuple","tuple","wireType","VariantClass","visitVariant","variant","wireHash","_id","_counter","visitRec","merge","decodePrincipalId","PrincipalClass","visitPrincipal","toHex","FuncClass","argTypes","retTypes","annotations","types","visitFunc","canister","methodLen","argLen","retLen","annLen","anns","encodeAnnotation","ann","ServiceClass","visitService","func","meths","labelBuf","labelLen","magic","typs","vals","toReadableString","rawTable","rawTypes","prevHash","objectLength","funcLength","servLength","rawList","readTypeTable","Rec","Null","Bool","Nat","Int","Nat8","Nat16","Nat32","Nat64","Int8","Int16","Int32","Int64","Float32","Float64","Text","Reserved","Empty","Vec","Opt","Record","tryAsTuple","Tuple","Variant","Func","Service","buildType","ind","requestId","hashValue","hashString","toUint8Array","toHash","encoded","bs","k1","k2","__rest","getOwnPropertySymbols","propertyIsEnumerable","domainSeparator","AnonymousIdentity","serializer","CborTag","decodePositiveBigInt","Semantic","NANOSECONDS_PER_MILLISECONDS","REPLICA_PERMITTED_DRIFT_MILLISECONDS","Expiry","deltaInMSec","_value","now","SubmitRequestType","RequestStatusResponseStatus","DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS","HttpAgent","_pipeline","_rootKeyFetched","rootKey","_identity","_fetch","_host","_credentials","fetch","getDefaultFetch","credentials","identity","findIndex","getPrincipal","canisterId","ecid","effectiveCanisterId","sender","submit","request_type","Call","canister_id","method_name","methodName","ingress_expiry","transformedRequest","_transform","Authorization","endpoint","transformRequest","ok","statusText","paths","root_key","ProxyMessageKind","getDefaultAgent","agent","ic","IDL","Principal","wasm_module","CanisterSettings","compute_allocation","memory_allocation","provisional_create_canister_with_cycles","amount","settings","create_canister","install_code","mode","install","reinstall","upgrade","set_controller","new_controller","getManagementCanister","transform","callConfig","callTransform","queryTransform","AgentError","wasm","wasmBytesBase64","wasmBytes","cachegetUint8Memory0","passArray8ToWasm0","malloc","ptr","memory","imports","Response","WebAssembly","instantiate","Instance","load","__wbindgen_wasm_module","blsVerify","bls_init","pk1","sig1","msg1","w","ptr0","len0","__wbindgen_malloc","ptr1","ptr2","bls_verify","UnverifiedCertificateError","isBufferEqual","Certificate","_agent","verified","_rootKey","cert","certificate","tree","maybeReturn","lookup_path","blob","lookupPathEx","rootHash","reconstruct","derKey","_checkDelegation","delegation","signature","expectedLength","DER_PREFIX","extractDER","domain_sep","lookupEx","subnet_id","trees","find_label","flatten_forks","pollForResponse","strategy","readState","maybeBuf","Unknown","Replied","Received","Processing","Rejected","rejectCode","rejectMessage","Done","ActorCallError","props","QueryCallRejectedError","Status","Code","reject_code","Message","reject_message","UpdateCallRejectedError","CanisterInstallMode","metadataSymbol","for","metadata","freeze","actor","service","Install","wasmModule","interfaceFactory","createCanister","createActor","DEFAULT_ACTOR_CONFIG","_createActorMethod","configuration","createActorClass","decodeReturnValue","returnValues","pollingStrategyFactory","strategies","chain","condition","timeInMsec","startingThrottleInMsec","backoffFactor","currentThrottling","backoff","caller","_b","cid","reply","pollStrategy","responseBytes","withOptions","idlFactory","PlayerName","Score","PlayerView","ColorCount","Color","PlayerId","GamePlayer","GameView_2","ListResult","Metadata","RegisterCallback","Player","Score_2","MoveResult","PlayerView_2","RegistrationError","Result_4","Result","GameView","StartError","Result_2","ClearArguments","BatchId","Key","CreateAssetArguments","UnsetAssetContentArguments","DeleteAssetArguments","ChunkId","SetAssetContentArguments","BatchOperationKind","HeaderField","HttpRequest","StreamingCallbackToken","StreamingCallbackHttpResponse","StreamingStrategy","HttpResponse","Time","Ed25519PublicKey","rawKey","derEncode","fromDer","toDer","derDecode","RAW_KEY_LENGTH","bl","_parseBlob","Delegation","pubkey","expiration","targets","DelegationChain","delegations","to","challenge","_createSingleDelegation","previous","getPublicKey","json","signedDelegation","PubKeyCoseAlgo","_stoicOrigin","PublicKey","der","_der","StoicIdentity","_principal","sender_pubkey","sender_sig","_publicKey","_stoicLogout","_stoicLogin","_stoicInit","accounts","_transport","buf2hex","_stoicSign","hex2buf","signed","DIC","fromJSON","sender_delegation","_stoicWindow","_stoicWindowCB","_stoicApiKey","_stoicApp","_listenerIndex","_listener","_frames","localStorage","getItem","removeItem","app","keypair","subtle","generateKey","namedCurve","pubk","exportKey","secretkey","privateKey","apikey","setItem","action","encdata","privk","importKey","thisIndex","ii","getElementById","listener","contentWindow","postMessage","_postToFrame","opponent","color","exists","N","board","eventually","valid_move","flip","set_and_flip","replay","moves","close","set_error","get_error_message","NoSelfGame","InvalidName","InvalidOpponentName","NameAlreadyExists","GameCancelled","StartGameError","OpponentInAnotherGame","RegisterError","PlayerNotFound","putsound","play_put_sound","sound","audioSource","context","createBufferSource","connect","destination","noteOn","playAudio","factor","clientWidth","clientHeight","boardLength","animateTimeout","get_player_name","player","black","white","same_color","color1","color2","equalIgnoreCase","successHash","spinner_overlay","spinner","main","start_loading","stop_loading","refreshTimeout","make_player_list","players","ordered","make_player_link","score","inited","player_name","player_score","set_player_info","info","Tips","tips","games","charts","classList","reversi","render_name","render_play","game","expiring","player_id","top_players","top","recent_players","recent","available","tip","chart","connectStoic","stoicConnected","stoicPrincipal","reversi_assets","tips_on","opponent_name","set_tips_on","set_tips_off","play","register","against","error_code","fetchRootKey","form","oninput","onsubmit","boards","last_move_length","player_color","next_color","refresh","black_name","white_name","opponent_piece","dimension","row","AudioContext","decodeAudioData","next_move","evt","piece","move","onClick","onDismiss","white_player","black_player","animate_list","dot_start","dot_color","dots","cx","cy","dotsHeight","attributeName","dur","repeatCount","begin","restart","cellSize","cells","dx","dy","stdDeviation","my_piece","hintColor","hintOn","hintStrokeWidth","nextMove","width","height","stroke","strokeWidth","pieceColor","opponentColor","strokeColor","elems","radius","degree","rx","ry","querySelectorAll","animate","beginElement","shift","Board"],"mappings":"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SAASyR,GAAOxD,GACdA,EAAQA,EAAQ,EAEhB,OAAO,EAGT,SAASrD,GAAOqD,GACdA,EAAQA,EAAQ,EAEhBR,IAEAzN,EAAUA,EAAS,EAAK,EAExB,OAAO,EAKT,IAAI6N,GAAY,CAEdG,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,EACAoD,GACAA,GACAA,GACAA,GAEAnD,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,EAEAC,GAEAC,GACA+C,GACAA,GACAA,GACAA,GAEA/I,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GAEAkG,GAEAC,GAEAC,GAEAC,GACA0C,GACAA,GACAA,GAEAzC,GAEArG,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GAEAsG,GAEAC,GAEAC,GAEAC,GAEAqC,GACAA,GACAA,GACApC,GAEAzG,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GAEA0G,GAEAC,GAEAC,GAEAC,GAEAgC,GACAA,GACAA,GACA/B,GAEA7G,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACA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","file":"index.js","sourcesContent":["/*\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","/*!\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 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","'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","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"body {\\n padding: 0;\\n background: #b7bf76;\\n height: 100%;\\n}\\n\\n@font-face {\\n font-family: \\\"Akbar-Plain\\\";\\n src: url(\\\"https://thev.net/fonts/akbar/Akbar-Plain.ttf.woff\\\") format(\\\"woff\\\"),\\n url(\\\"https://thev.net/fonts/akbar/Akbar-Plain.ttf.svg#Akbar-Plain\\\")\\n format(\\\"svg\\\"),\\n url(\\\"https://thev.net/fonts/akbar/Akbar-Plain.ttf.eot\\\"),\\n url(\\\"https://thev.net/fonts/akbar/Akbar-Plain.ttf.eot?#iefix\\\")\\n format(\\\"embedded-opentype\\\");\\n font-weight: normal;\\n font-style: normal;\\n}\\n\\nh1 {\\n margin: 5px;\\n line-height: 1.2;\\n}\\n\\n.logo {\\n height: 4em;\\n}\\n\\n.top-centered {\\n position: fixed;\\n top: 65%;\\n left: 50%;\\n transform: translate(-50%, -100%);\\n width: 20em;\\n}\\n\\n.bottom-centered {\\n position: fixed;\\n top: 65%;\\n left: 50%;\\n transform: translate(-50%, 0%);\\n width: 20em;\\n}\\n\\n.bottom {\\n position: absolute;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n padding: 1rem;\\n text-align: center;\\n font-size: 0.8em;\\n}\\n\\ndiv {\\n margin: auto;\\n font-family: \\\"Akbar-Plain\\\";\\n text-align: center;\\n}\\n\\nsvg {\\n margin: auto;\\n display: block;\\n}\\n\\n.no-flicker {\\n -webkit-transform-style: preserve-3d;\\n}\\n\\n.players {\\n display: flex;\\n margin-top: 20px;\\n color: #060;\\n}\\n\\n.black-player {\\n font: bold 2em \\\"Akbar-Plain\\\";\\n color: black;\\n text-align: left;\\n flex-grow: 1;\\n}\\n\\n.white-player {\\n font: bold 2em \\\"Akbar-Plain\\\";\\n color: white;\\n text-align: right;\\n flex-grow: 1;\\n}\\n\\n.dots {\\n margin-bottom: 10px;\\n}\\n\\n.board {\\n margin-bottom: 20px;\\n}\\n\\n.dimension {\\n color: #060;\\n}\\n\\n.player-score {\\n color: #c42;\\n}\\n\\n.score {\\n font-size: 3em;\\n pointer-events: none;\\n}\\n\\n.error {\\n color: #060;\\n font-family: \\\"Akbar-Plain\\\";\\n margin-bottom: 20px;\\n}\\n\\n.dot {\\n stroke: none;\\n}\\n\\n.hollow {\\n fill: none;\\n stroke: #888;\\n stroke-width: 1px;\\n stroke-linecap: butt;\\n stroke-linejoin: miter;\\n stroke-opacity: 1;\\n}\\n\\n.white {\\n fill: #fff;\\n fill-opacity: 1;\\n}\\n\\n.black {\\n fill: #000;\\n fill-opacity: 1;\\n}\\n\\n.fancy {\\n animation: fade-in 1s;\\n}\\n\\n@keyframes fade-in {\\n from {\\n opacity: 0;\\n }\\n to {\\n opacity: 1;\\n }\\n}\\n\\n.exit {\\n animation: fade-out 1s;\\n}\\n\\n@keyframes fade-out {\\n from {\\n opacity: 1;\\n }\\n to {\\n opacity: 0;\\n }\\n}\\n\\n.player-name {\\n color: #060;\\n}\\n\\n.tips {\\n margin-top: 10px;\\n margin-left: 10px;\\n font-size: 0.8em;\\n color: #363;\\n width: 100%;\\n height: 8em;\\n}\\n\\n.tip {\\n text-align: left;\\n}\\n\\na,\\na:link,\\na:hover,\\na:active,\\na:visited {\\n color: #363;\\n text-decoration: none;\\n}\\n\\n.tip ol {\\n margin-left: 0;\\n margin-top: 5px;\\n padding-left: 1em;\\n padding-right: 0;\\n}\\n\\n.tip ul {\\n margin-left: 0;\\n margin-top: 5px;\\n list-style: none;\\n padding-left: 0em;\\n padding-right: 0;\\n}\\n\\n.tip li {\\n margin-bottom: 3px;\\n}\\n\\nh4 {\\n font-weight: normal;\\n font-size: 1em;\\n margin: 5px 5px 0 0;\\n}\\n\\n.left-list {\\n text-align: left;\\n float: left;\\n width: 50%;\\n}\\n\\n.right-list {\\n text-align: left;\\n float: right;\\n width: 50%;\\n}\\n\\nbody,\\n.input,\\n.label,\\n.button {\\n font-family: \\\"Akbar-Plain\\\";\\n margin: 10px;\\n}\\n\\n.input {\\n border: 1px solid #ddd;\\n border-radius: 3px;\\n box-sizing: border-box;\\n display: block;\\n margin: 10px 0 10px 10px;\\n padding: 10px 15px;\\n width: 100%;\\n}\\n\\n.button {\\n background: #eee;\\n border: 1px solid #ddd;\\n border-radius: 3px;\\n color: #333;\\n display: inline-block;\\n margin: 0 0 10px;\\n padding: 10px 15px;\\n text-decoration: none;\\n}\\n\\n.button:hover {\\n background: #e8e8e8;\\n}\\n\\n#spinner_overlay {\\n position: fixed;\\n z-index: 3;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n background: rgba(100, 100, 100, 0.5);\\n}\\n\\n#spinner {\\n width: 60px;\\n height: 60px;\\n margin: 50% auto;\\n\\n border-radius: 100%;\\n -webkit-animation: sk-scaleout 4s infinite ease-in-out;\\n animation: sk-scaleout 2s infinite ease-in-out;\\n}\\n\\n@-webkit-keyframes sk-scaleout {\\n 0% {\\n -webkit-transform: scale(0);\\n background-color: #333;\\n color: #333;\\n opacity: 0;\\n }\\n 25% {\\n -webkit-transform: scale(1);\\n background-color: #333;\\n color: #333;\\n opacity: 1;\\n }\\n 50% {\\n -webkit-transform: scale(0);\\n background-color: #333;\\n color: #333;\\n opacity: 0;\\n }\\n 51% {\\n -webkit-transform: scale(0);\\n background-color: #fff;\\n color: #fff;\\n opacity: 0;\\n }\\n 75% {\\n -webkit-transform: scale(1);\\n background-color: #fff;\\n color: #fff;\\n opacity: 1;\\n }\\n 100% {\\n -webkit-transform: scale(0);\\n background-color: #fff;\\n color: #fff;\\n opacity: 0;\\n }\\n}\\n\\n@keyframes sk-scaleout {\\n 0% {\\n -webkit-transform: scale(0);\\n transform: scale(0);\\n background-color: #333;\\n color: #333;\\n opacity: 0;\\n }\\n 25% {\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n background-color: #333;\\n color: #333;\\n opacity: 1;\\n }\\n 50% {\\n -webkit-transform: scale(0);\\n transform: scale(0);\\n background-color: #333;\\n color: #333;\\n opacity: 0;\\n }\\n 51% {\\n -webkit-transform: scale(0);\\n transform: scale(0);\\n background-color: #fff;\\n color: #fff;\\n opacity: 0;\\n }\\n 75% {\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n background-color: #fff;\\n color: #fff;\\n opacity: 1;\\n }\\n 100% {\\n -webkit-transform: scale(0);\\n transform: scale(0);\\n background-color: #fff;\\n color: #fff;\\n opacity: 0;\\n }\\n}\\n\\n.white-name {\\n color: white;\\n}\\n\\n.black-name {\\n color: black;\\n}\\n\\n.blink {\\n animation: blinker 1s infinite;\\n}\\n\\n@keyframes blinker {\\n from {\\n opacity: 1;\\n }\\n 50% {\\n opacity: 0.5;\\n }\\n to {\\n opacity: 1;\\n }\\n}\\n\\n#main {\\n width: 100%;\\n height: 100%;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (useSourceMap) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item, useSourceMap);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join('');\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === 'string') {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, '']];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring\n\n var cssMapping = item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (useSourceMap && typeof btoa === 'function') {\n var sourceMapping = toComment(cssMapping);\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || '').concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n }\n\n return [content].join('\\n');\n} // Adapted from convert-source-map (MIT)\n\n\nfunction toComment(sourceMap) {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n return \"/*# \".concat(data, \" */\");\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","'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 * [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","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\n\nmodule.exports = function(render, schedule, console) {\n\tvar subscriptions = []\n\tvar rendering = false\n\tvar pending = false\n\n\tfunction sync() {\n\t\tif (rendering) throw new Error(\"Nested m.redraw.sync() call\")\n\t\trendering = true\n\t\tfor (var i = 0; i < subscriptions.length; i += 2) {\n\t\t\ttry { render(subscriptions[i], Vnode(subscriptions[i + 1]), redraw) }\n\t\t\tcatch (e) { console.error(e) }\n\t\t}\n\t\trendering = false\n\t}\n\n\tfunction redraw() {\n\t\tif (!pending) {\n\t\t\tpending = true\n\t\t\tschedule(function() {\n\t\t\t\tpending = false\n\t\t\t\tsync()\n\t\t\t})\n\t\t}\n\t}\n\n\tredraw.sync = sync\n\n\tfunction mount(root, component) {\n\t\tif (component != null && component.view == null && typeof component !== \"function\") {\n\t\t\tthrow new TypeError(\"m.mount(element, component) expects a component, not a vnode\")\n\t\t}\n\n\t\tvar index = subscriptions.indexOf(root)\n\t\tif (index >= 0) {\n\t\t\tsubscriptions.splice(index, 2)\n\t\t\trender(root, [], redraw)\n\t\t}\n\n\t\tif (component != null) {\n\t\t\tsubscriptions.push(root, component)\n\t\t\trender(root, Vnode(component), redraw)\n\t\t}\n\t}\n\n\treturn {mount: mount, redraw: redraw}\n}\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\nvar m = require(\"../render/hyperscript\")\nvar Promise = require(\"../promise/promise\")\n\nvar buildPathname = require(\"../pathname/build\")\nvar parsePathname = require(\"../pathname/parse\")\nvar compileTemplate = require(\"../pathname/compileTemplate\")\nvar assign = require(\"../pathname/assign\")\n\nvar sentinel = {}\n\nmodule.exports = function($window, mountRedraw) {\n\tvar fireAsync\n\n\tfunction setPath(path, data, options) {\n\t\tpath = buildPathname(path, data)\n\t\tif (fireAsync != null) {\n\t\t\tfireAsync()\n\t\t\tvar state = options ? options.state : null\n\t\t\tvar title = options ? options.title : null\n\t\t\tif (options && options.replace) $window.history.replaceState(state, title, route.prefix + path)\n\t\t\telse $window.history.pushState(state, title, route.prefix + path)\n\t\t}\n\t\telse {\n\t\t\t$window.location.href = route.prefix + path\n\t\t}\n\t}\n\n\tvar currentResolver = sentinel, component, attrs, currentPath, lastUpdate\n\n\tvar SKIP = route.SKIP = {}\n\n\tfunction route(root, defaultRoute, routes) {\n\t\tif (root == null) throw new Error(\"Ensure the DOM element that was passed to `m.route` is not undefined\")\n\t\t// 0 = start\n\t\t// 1 = init\n\t\t// 2 = ready\n\t\tvar state = 0\n\n\t\tvar compiled = Object.keys(routes).map(function(route) {\n\t\t\tif (route[0] !== \"/\") throw new SyntaxError(\"Routes must start with a `/`\")\n\t\t\tif ((/:([^\\/\\.-]+)(\\.{3})?:/).test(route)) {\n\t\t\t\tthrow new SyntaxError(\"Route parameter names must be separated with either `/`, `.`, or `-`\")\n\t\t\t}\n\t\t\treturn {\n\t\t\t\troute: route,\n\t\t\t\tcomponent: routes[route],\n\t\t\t\tcheck: compileTemplate(route),\n\t\t\t}\n\t\t})\n\t\tvar callAsync = typeof setImmediate === \"function\" ? setImmediate : setTimeout\n\t\tvar p = Promise.resolve()\n\t\tvar scheduled = false\n\t\tvar onremove\n\n\t\tfireAsync = null\n\n\t\tif (defaultRoute != null) {\n\t\t\tvar defaultData = parsePathname(defaultRoute)\n\n\t\t\tif (!compiled.some(function (i) { return i.check(defaultData) })) {\n\t\t\t\tthrow new ReferenceError(\"Default route doesn't match any known routes\")\n\t\t\t}\n\t\t}\n\n\t\tfunction resolveRoute() {\n\t\t\tscheduled = false\n\t\t\t// Consider the pathname holistically. The prefix might even be invalid,\n\t\t\t// but that's not our problem.\n\t\t\tvar prefix = $window.location.hash\n\t\t\tif (route.prefix[0] !== \"#\") {\n\t\t\t\tprefix = $window.location.search + prefix\n\t\t\t\tif (route.prefix[0] !== \"?\") {\n\t\t\t\t\tprefix = $window.location.pathname + prefix\n\t\t\t\t\tif (prefix[0] !== \"/\") prefix = \"/\" + prefix\n\t\t\t\t}\n\t\t\t}\n\t\t\t// This seemingly useless `.concat()` speeds up the tests quite a bit,\n\t\t\t// since the representation is consistently a relatively poorly\n\t\t\t// optimized cons string.\n\t\t\tvar path = prefix.concat()\n\t\t\t\t.replace(/(?:%[a-f89][a-f0-9])+/gim, decodeURIComponent)\n\t\t\t\t.slice(route.prefix.length)\n\t\t\tvar data = parsePathname(path)\n\n\t\t\tassign(data.params, $window.history.state)\n\n\t\t\tfunction fail() {\n\t\t\t\tif (path === defaultRoute) throw new Error(\"Could not resolve default route \" + defaultRoute)\n\t\t\t\tsetPath(defaultRoute, null, {replace: true})\n\t\t\t}\n\n\t\t\tloop(0)\n\t\t\tfunction loop(i) {\n\t\t\t\t// 0 = init\n\t\t\t\t// 1 = scheduled\n\t\t\t\t// 2 = done\n\t\t\t\tfor (; i < compiled.length; i++) {\n\t\t\t\t\tif (compiled[i].check(data)) {\n\t\t\t\t\t\tvar payload = compiled[i].component\n\t\t\t\t\t\tvar matchedRoute = compiled[i].route\n\t\t\t\t\t\tvar localComp = payload\n\t\t\t\t\t\tvar update = lastUpdate = function(comp) {\n\t\t\t\t\t\t\tif (update !== lastUpdate) return\n\t\t\t\t\t\t\tif (comp === SKIP) return loop(i + 1)\n\t\t\t\t\t\t\tcomponent = comp != null && (typeof comp.view === \"function\" || typeof comp === \"function\")? comp : \"div\"\n\t\t\t\t\t\t\tattrs = data.params, currentPath = path, lastUpdate = null\n\t\t\t\t\t\t\tcurrentResolver = payload.render ? payload : null\n\t\t\t\t\t\t\tif (state === 2) mountRedraw.redraw()\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tstate = 2\n\t\t\t\t\t\t\t\tmountRedraw.redraw.sync()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// There's no understating how much I *wish* I could\n\t\t\t\t\t\t// use `async`/`await` here...\n\t\t\t\t\t\tif (payload.view || typeof payload === \"function\") {\n\t\t\t\t\t\t\tpayload = {}\n\t\t\t\t\t\t\tupdate(localComp)\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (payload.onmatch) {\n\t\t\t\t\t\t\tp.then(function () {\n\t\t\t\t\t\t\t\treturn payload.onmatch(data.params, path, matchedRoute)\n\t\t\t\t\t\t\t}).then(update, fail)\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse update(\"div\")\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfail()\n\t\t\t}\n\t\t}\n\n\t\t// Set it unconditionally so `m.route.set` and `m.route.Link` both work,\n\t\t// even if neither `pushState` nor `hashchange` are supported. It's\n\t\t// cleared if `hashchange` is used, since that makes it automatically\n\t\t// async.\n\t\tfireAsync = function() {\n\t\t\tif (!scheduled) {\n\t\t\t\tscheduled = true\n\t\t\t\tcallAsync(resolveRoute)\n\t\t\t}\n\t\t}\n\n\t\tif (typeof $window.history.pushState === \"function\") {\n\t\t\tonremove = function() {\n\t\t\t\t$window.removeEventListener(\"popstate\", fireAsync, false)\n\t\t\t}\n\t\t\t$window.addEventListener(\"popstate\", fireAsync, false)\n\t\t} else if (route.prefix[0] === \"#\") {\n\t\t\tfireAsync = null\n\t\t\tonremove = function() {\n\t\t\t\t$window.removeEventListener(\"hashchange\", resolveRoute, false)\n\t\t\t}\n\t\t\t$window.addEventListener(\"hashchange\", resolveRoute, false)\n\t\t}\n\n\t\treturn mountRedraw.mount(root, {\n\t\t\tonbeforeupdate: function() {\n\t\t\t\tstate = state ? 2 : 1\n\t\t\t\treturn !(!state || sentinel === currentResolver)\n\t\t\t},\n\t\t\toncreate: resolveRoute,\n\t\t\tonremove: onremove,\n\t\t\tview: function() {\n\t\t\t\tif (!state || sentinel === currentResolver) return\n\t\t\t\t// Wrap in a fragment to preserve existing key semantics\n\t\t\t\tvar vnode = [Vnode(component, attrs.key, attrs)]\n\t\t\t\tif (currentResolver) vnode = currentResolver.render(vnode[0])\n\t\t\t\treturn vnode\n\t\t\t},\n\t\t})\n\t}\n\troute.set = function(path, data, options) {\n\t\tif (lastUpdate != null) {\n\t\t\toptions = options || {}\n\t\t\toptions.replace = true\n\t\t}\n\t\tlastUpdate = null\n\t\tsetPath(path, data, options)\n\t}\n\troute.get = function() {return currentPath}\n\troute.prefix = \"#!\"\n\troute.Link = {\n\t\tview: function(vnode) {\n\t\t\tvar options = vnode.attrs.options\n\t\t\t// Remove these so they don't get overwritten\n\t\t\tvar attrs = {}, onclick, href\n\t\t\tassign(attrs, vnode.attrs)\n\t\t\t// The first two are internal, but the rest are magic attributes\n\t\t\t// that need censored to not screw up rendering.\n\t\t\tattrs.selector = attrs.options = attrs.key = attrs.oninit =\n\t\t\tattrs.oncreate = attrs.onbeforeupdate = attrs.onupdate =\n\t\t\tattrs.onbeforeremove = attrs.onremove = null\n\n\t\t\t// Do this now so we can get the most current `href` and `disabled`.\n\t\t\t// Those attributes may also be specified in the selector, and we\n\t\t\t// should honor that.\n\t\t\tvar child = m(vnode.attrs.selector || \"a\", attrs, vnode.children)\n\n\t\t\t// Let's provide a *right* way to disable a route link, rather than\n\t\t\t// letting people screw up accessibility on accident.\n\t\t\t//\n\t\t\t// The attribute is coerced so users don't get surprised over\n\t\t\t// `disabled: 0` resulting in a button that's somehow routable\n\t\t\t// despite being visibly disabled.\n\t\t\tif (child.attrs.disabled = Boolean(child.attrs.disabled)) {\n\t\t\t\tchild.attrs.href = null\n\t\t\t\tchild.attrs[\"aria-disabled\"] = \"true\"\n\t\t\t\t// If you *really* do want to do this on a disabled link, use\n\t\t\t\t// an `oncreate` hook to add it.\n\t\t\t\tchild.attrs.onclick = null\n\t\t\t} else {\n\t\t\t\tonclick = child.attrs.onclick\n\t\t\t\thref = child.attrs.href\n\t\t\t\tchild.attrs.href = route.prefix + href\n\t\t\t\tchild.attrs.onclick = function(e) {\n\t\t\t\t\tvar result\n\t\t\t\t\tif (typeof onclick === \"function\") {\n\t\t\t\t\t\tresult = onclick.call(e.currentTarget, e)\n\t\t\t\t\t} else if (onclick == null || typeof onclick !== \"object\") {\n\t\t\t\t\t\t// do nothing\n\t\t\t\t\t} else if (typeof onclick.handleEvent === \"function\") {\n\t\t\t\t\t\tonclick.handleEvent(e)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Adapted from React Router's implementation:\n\t\t\t\t\t// https://github.com/ReactTraining/react-router/blob/520a0acd48ae1b066eb0b07d6d4d1790a1d02482/packages/react-router-dom/modules/Link.js\n\t\t\t\t\t//\n\t\t\t\t\t// Try to be flexible and intuitive in how we handle links.\n\t\t\t\t\t// Fun fact: links aren't as obvious to get right as you\n\t\t\t\t\t// would expect. There's a lot more valid ways to click a\n\t\t\t\t\t// link than this, and one might want to not simply click a\n\t\t\t\t\t// link, but right click or command-click it to copy the\n\t\t\t\t\t// link target, etc. Nope, this isn't just for blind people.\n\t\t\t\t\tif (\n\t\t\t\t\t\t// Skip if `onclick` prevented default\n\t\t\t\t\t\tresult !== false && !e.defaultPrevented &&\n\t\t\t\t\t\t// Ignore everything but left clicks\n\t\t\t\t\t\t(e.button === 0 || e.which === 0 || e.which === 1) &&\n\t\t\t\t\t\t// Let the browser handle `target=_blank`, etc.\n\t\t\t\t\t\t(!e.currentTarget.target || e.currentTarget.target === \"_self\") &&\n\t\t\t\t\t\t// No modifier keys\n\t\t\t\t\t\t!e.ctrlKey && !e.metaKey && !e.shiftKey && !e.altKey\n\t\t\t\t\t) {\n\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\te.redraw = false\n\t\t\t\t\t\troute.set(href, null, options)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn child\n\t\t},\n\t}\n\troute.param = function(key) {\n\t\treturn attrs && key != null ? attrs[key] : attrs\n\t}\n\n\treturn route\n}\n","\"use strict\"\n\nvar hyperscript = require(\"./render/hyperscript\")\n\nhyperscript.trust = require(\"./render/trust\")\nhyperscript.fragment = require(\"./render/fragment\")\n\nmodule.exports = hyperscript\n","\"use strict\"\n\nvar hyperscript = require(\"./hyperscript\")\nvar request = require(\"./request\")\nvar mountRedraw = require(\"./mount-redraw\")\n\nvar m = function m() { return hyperscript.apply(this, arguments) }\nm.m = hyperscript\nm.trust = hyperscript.trust\nm.fragment = hyperscript.fragment\nm.mount = mountRedraw.mount\nm.route = require(\"./route\")\nm.render = require(\"./render\")\nm.redraw = mountRedraw.redraw\nm.request = request.request\nm.jsonp = request.jsonp\nm.parseQueryString = require(\"./querystring/parse\")\nm.buildQueryString = require(\"./querystring/build\")\nm.parsePathname = require(\"./pathname/parse\")\nm.buildPathname = require(\"./pathname/build\")\nm.vnode = require(\"./render/vnode\")\nm.PromisePolyfill = require(\"./promise/polyfill\")\n\nmodule.exports = m\n","\"use strict\"\n\nvar render = require(\"./render\")\n\nmodule.exports = require(\"./api/mount-redraw\")(render, requestAnimationFrame, console)\n","\"use strict\"\n\nmodule.exports = Object.assign || function(target, source) {\n\tif(source) Object.keys(source).forEach(function(key) { target[key] = source[key] })\n}\n","\"use strict\"\n\nvar buildQueryString = require(\"../querystring/build\")\nvar assign = require(\"./assign\")\n\n// Returns `path` from `template` + `params`\nmodule.exports = function(template, params) {\n\tif ((/:([^\\/\\.-]+)(\\.{3})?:/).test(template)) {\n\t\tthrow new SyntaxError(\"Template parameter names *must* be separated\")\n\t}\n\tif (params == null) return template\n\tvar queryIndex = template.indexOf(\"?\")\n\tvar hashIndex = template.indexOf(\"#\")\n\tvar queryEnd = hashIndex < 0 ? template.length : hashIndex\n\tvar pathEnd = queryIndex < 0 ? queryEnd : queryIndex\n\tvar path = template.slice(0, pathEnd)\n\tvar query = {}\n\n\tassign(query, params)\n\n\tvar resolved = path.replace(/:([^\\/\\.-]+)(\\.{3})?/g, function(m, key, variadic) {\n\t\tdelete query[key]\n\t\t// If no such parameter exists, don't interpolate it.\n\t\tif (params[key] == null) return m\n\t\t// Escape normal parameters, but not variadic ones.\n\t\treturn variadic ? params[key] : encodeURIComponent(String(params[key]))\n\t})\n\n\t// In case the template substitution adds new query/hash parameters.\n\tvar newQueryIndex = resolved.indexOf(\"?\")\n\tvar newHashIndex = resolved.indexOf(\"#\")\n\tvar newQueryEnd = newHashIndex < 0 ? resolved.length : newHashIndex\n\tvar newPathEnd = newQueryIndex < 0 ? newQueryEnd : newQueryIndex\n\tvar result = resolved.slice(0, newPathEnd)\n\n\tif (queryIndex >= 0) result += template.slice(queryIndex, queryEnd)\n\tif (newQueryIndex >= 0) result += (queryIndex < 0 ? \"?\" : \"&\") + resolved.slice(newQueryIndex, newQueryEnd)\n\tvar querystring = buildQueryString(query)\n\tif (querystring) result += (queryIndex < 0 && newQueryIndex < 0 ? \"?\" : \"&\") + querystring\n\tif (hashIndex >= 0) result += template.slice(hashIndex)\n\tif (newHashIndex >= 0) result += (hashIndex < 0 ? \"\" : \"&\") + resolved.slice(newHashIndex)\n\treturn result\n}\n","\"use strict\"\n\nvar parsePathname = require(\"./parse\")\n\n// Compiles a template into a function that takes a resolved path (without query\n// strings) and returns an object containing the template parameters with their\n// parsed values. This expects the input of the compiled template to be the\n// output of `parsePathname`. Note that it does *not* remove query parameters\n// specified in the template.\nmodule.exports = function(template) {\n\tvar templateData = parsePathname(template)\n\tvar templateKeys = Object.keys(templateData.params)\n\tvar keys = []\n\tvar regexp = new RegExp(\"^\" + templateData.path.replace(\n\t\t// I escape literal text so people can use things like `:file.:ext` or\n\t\t// `:lang-:locale` in routes. This is all merged into one pass so I\n\t\t// don't also accidentally escape `-` and make it harder to detect it to\n\t\t// ban it from template parameters.\n\t\t/:([^\\/.-]+)(\\.{3}|\\.(?!\\.)|-)?|[\\\\^$*+.()|\\[\\]{}]/g,\n\t\tfunction(m, key, extra) {\n\t\t\tif (key == null) return \"\\\\\" + m\n\t\t\tkeys.push({k: key, r: extra === \"...\"})\n\t\t\tif (extra === \"...\") return \"(.*)\"\n\t\t\tif (extra === \".\") return \"([^/]+)\\\\.\"\n\t\t\treturn \"([^/]+)\" + (extra || \"\")\n\t\t}\n\t) + \"$\")\n\treturn function(data) {\n\t\t// First, check the params. Usually, there isn't any, and it's just\n\t\t// checking a static set.\n\t\tfor (var i = 0; i < templateKeys.length; i++) {\n\t\t\tif (templateData.params[templateKeys[i]] !== data.params[templateKeys[i]]) return false\n\t\t}\n\t\t// If no interpolations exist, let's skip all the ceremony\n\t\tif (!keys.length) return regexp.test(data.path)\n\t\tvar values = regexp.exec(data.path)\n\t\tif (values == null) return false\n\t\tfor (var i = 0; i < keys.length; i++) {\n\t\t\tdata.params[keys[i].k] = keys[i].r ? values[i + 1] : decodeURIComponent(values[i + 1])\n\t\t}\n\t\treturn true\n\t}\n}\n","\"use strict\"\n\nvar parseQueryString = require(\"../querystring/parse\")\n\n// Returns `{path, params}` from `url`\nmodule.exports = function(url) {\n\tvar queryIndex = url.indexOf(\"?\")\n\tvar hashIndex = url.indexOf(\"#\")\n\tvar queryEnd = hashIndex < 0 ? url.length : hashIndex\n\tvar pathEnd = queryIndex < 0 ? queryEnd : queryIndex\n\tvar path = url.slice(0, pathEnd).replace(/\\/{2,}/g, \"/\")\n\n\tif (!path) path = \"/\"\n\telse {\n\t\tif (path[0] !== \"/\") path = \"/\" + path\n\t\tif (path.length > 1 && path[path.length - 1] === \"/\") path = path.slice(0, -1)\n\t}\n\treturn {\n\t\tpath: path,\n\t\tparams: queryIndex < 0\n\t\t\t? {}\n\t\t\t: parseQueryString(url.slice(queryIndex + 1, queryEnd)),\n\t}\n}\n","\"use strict\"\n/** @constructor */\nvar PromisePolyfill = function(executor) {\n\tif (!(this instanceof PromisePolyfill)) throw new Error(\"Promise must be called with `new`\")\n\tif (typeof executor !== \"function\") throw new TypeError(\"executor must be a function\")\n\n\tvar self = this, resolvers = [], rejectors = [], resolveCurrent = handler(resolvers, true), rejectCurrent = handler(rejectors, false)\n\tvar instance = self._instance = {resolvers: resolvers, rejectors: rejectors}\n\tvar callAsync = typeof setImmediate === \"function\" ? setImmediate : setTimeout\n\tfunction handler(list, shouldAbsorb) {\n\t\treturn function execute(value) {\n\t\t\tvar then\n\t\t\ttry {\n\t\t\t\tif (shouldAbsorb && value != null && (typeof value === \"object\" || typeof value === \"function\") && typeof (then = value.then) === \"function\") {\n\t\t\t\t\tif (value === self) throw new TypeError(\"Promise can't be resolved w/ itself\")\n\t\t\t\t\texecuteOnce(then.bind(value))\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tcallAsync(function() {\n\t\t\t\t\t\tif (!shouldAbsorb && list.length === 0) console.error(\"Possible unhandled promise rejection:\", value)\n\t\t\t\t\t\tfor (var i = 0; i < list.length; i++) list[i](value)\n\t\t\t\t\t\tresolvers.length = 0, rejectors.length = 0\n\t\t\t\t\t\tinstance.state = shouldAbsorb\n\t\t\t\t\t\tinstance.retry = function() {execute(value)}\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch (e) {\n\t\t\t\trejectCurrent(e)\n\t\t\t}\n\t\t}\n\t}\n\tfunction executeOnce(then) {\n\t\tvar runs = 0\n\t\tfunction run(fn) {\n\t\t\treturn function(value) {\n\t\t\t\tif (runs++ > 0) return\n\t\t\t\tfn(value)\n\t\t\t}\n\t\t}\n\t\tvar onerror = run(rejectCurrent)\n\t\ttry {then(run(resolveCurrent), onerror)} catch (e) {onerror(e)}\n\t}\n\n\texecuteOnce(executor)\n}\nPromisePolyfill.prototype.then = function(onFulfilled, onRejection) {\n\tvar self = this, instance = self._instance\n\tfunction handle(callback, list, next, state) {\n\t\tlist.push(function(value) {\n\t\t\tif (typeof callback !== \"function\") next(value)\n\t\t\telse try {resolveNext(callback(value))} catch (e) {if (rejectNext) rejectNext(e)}\n\t\t})\n\t\tif (typeof instance.retry === \"function\" && state === instance.state) instance.retry()\n\t}\n\tvar resolveNext, rejectNext\n\tvar promise = new PromisePolyfill(function(resolve, reject) {resolveNext = resolve, rejectNext = reject})\n\thandle(onFulfilled, instance.resolvers, resolveNext, true), handle(onRejection, instance.rejectors, rejectNext, false)\n\treturn promise\n}\nPromisePolyfill.prototype.catch = function(onRejection) {\n\treturn this.then(null, onRejection)\n}\nPromisePolyfill.prototype.finally = function(callback) {\n\treturn this.then(\n\t\tfunction(value) {\n\t\t\treturn PromisePolyfill.resolve(callback()).then(function() {\n\t\t\t\treturn value\n\t\t\t})\n\t\t},\n\t\tfunction(reason) {\n\t\t\treturn PromisePolyfill.resolve(callback()).then(function() {\n\t\t\t\treturn PromisePolyfill.reject(reason);\n\t\t\t})\n\t\t}\n\t)\n}\nPromisePolyfill.resolve = function(value) {\n\tif (value instanceof PromisePolyfill) return value\n\treturn new PromisePolyfill(function(resolve) {resolve(value)})\n}\nPromisePolyfill.reject = function(value) {\n\treturn new PromisePolyfill(function(resolve, reject) {reject(value)})\n}\nPromisePolyfill.all = function(list) {\n\treturn new PromisePolyfill(function(resolve, reject) {\n\t\tvar total = list.length, count = 0, values = []\n\t\tif (list.length === 0) resolve([])\n\t\telse for (var i = 0; i < list.length; i++) {\n\t\t\t(function(i) {\n\t\t\t\tfunction consume(value) {\n\t\t\t\t\tcount++\n\t\t\t\t\tvalues[i] = value\n\t\t\t\t\tif (count === total) resolve(values)\n\t\t\t\t}\n\t\t\t\tif (list[i] != null && (typeof list[i] === \"object\" || typeof list[i] === \"function\") && typeof list[i].then === \"function\") {\n\t\t\t\t\tlist[i].then(consume, reject)\n\t\t\t\t}\n\t\t\t\telse consume(list[i])\n\t\t\t})(i)\n\t\t}\n\t})\n}\nPromisePolyfill.race = function(list) {\n\treturn new PromisePolyfill(function(resolve, reject) {\n\t\tfor (var i = 0; i < list.length; i++) {\n\t\t\tlist[i].then(resolve, reject)\n\t\t}\n\t})\n}\n\nmodule.exports = PromisePolyfill\n","\"use strict\"\n\nvar PromisePolyfill = require(\"./polyfill\")\n\nif (typeof window !== \"undefined\") {\n\tif (typeof window.Promise === \"undefined\") {\n\t\twindow.Promise = PromisePolyfill\n\t} else if (!window.Promise.prototype.finally) {\n\t\twindow.Promise.prototype.finally = PromisePolyfill.prototype.finally\n\t}\n\tmodule.exports = window.Promise\n} else if (typeof global !== \"undefined\") {\n\tif (typeof global.Promise === \"undefined\") {\n\t\tglobal.Promise = PromisePolyfill\n\t} else if (!global.Promise.prototype.finally) {\n\t\tglobal.Promise.prototype.finally = PromisePolyfill.prototype.finally\n\t}\n\tmodule.exports = global.Promise\n} else {\n\tmodule.exports = PromisePolyfill\n}\n","\"use strict\"\n\nmodule.exports = function(object) {\n\tif (Object.prototype.toString.call(object) !== \"[object Object]\") return \"\"\n\n\tvar args = []\n\tfor (var key in object) {\n\t\tdestructure(key, object[key])\n\t}\n\n\treturn args.join(\"&\")\n\n\tfunction destructure(key, value) {\n\t\tif (Array.isArray(value)) {\n\t\t\tfor (var i = 0; i < value.length; i++) {\n\t\t\t\tdestructure(key + \"[\" + i + \"]\", value[i])\n\t\t\t}\n\t\t}\n\t\telse if (Object.prototype.toString.call(value) === \"[object Object]\") {\n\t\t\tfor (var i in value) {\n\t\t\t\tdestructure(key + \"[\" + i + \"]\", value[i])\n\t\t\t}\n\t\t}\n\t\telse args.push(encodeURIComponent(key) + (value != null && value !== \"\" ? \"=\" + encodeURIComponent(value) : \"\"))\n\t}\n}\n","\"use strict\"\n\nmodule.exports = function(string) {\n\tif (string === \"\" || string == null) return {}\n\tif (string.charAt(0) === \"?\") string = string.slice(1)\n\n\tvar entries = string.split(\"&\"), counters = {}, data = {}\n\tfor (var i = 0; i < entries.length; i++) {\n\t\tvar entry = entries[i].split(\"=\")\n\t\tvar key = decodeURIComponent(entry[0])\n\t\tvar value = entry.length === 2 ? decodeURIComponent(entry[1]) : \"\"\n\n\t\tif (value === \"true\") value = true\n\t\telse if (value === \"false\") value = false\n\n\t\tvar levels = key.split(/\\]\\[?|\\[/)\n\t\tvar cursor = data\n\t\tif (key.indexOf(\"[\") > -1) levels.pop()\n\t\tfor (var j = 0; j < levels.length; j++) {\n\t\t\tvar level = levels[j], nextLevel = levels[j + 1]\n\t\t\tvar isNumber = nextLevel == \"\" || !isNaN(parseInt(nextLevel, 10))\n\t\t\tif (level === \"\") {\n\t\t\t\tvar key = levels.slice(0, j).join()\n\t\t\t\tif (counters[key] == null) {\n\t\t\t\t\tcounters[key] = Array.isArray(cursor) ? cursor.length : 0\n\t\t\t\t}\n\t\t\t\tlevel = counters[key]++\n\t\t\t}\n\t\t\t// Disallow direct prototype pollution\n\t\t\telse if (level === \"__proto__\") break\n\t\t\tif (j === levels.length - 1) cursor[level] = value\n\t\t\telse {\n\t\t\t\t// Read own properties exclusively to disallow indirect\n\t\t\t\t// prototype pollution\n\t\t\t\tvar desc = Object.getOwnPropertyDescriptor(cursor, level)\n\t\t\t\tif (desc != null) desc = desc.value\n\t\t\t\tif (desc == null) cursor[level] = desc = isNumber ? [] : {}\n\t\t\t\tcursor = desc\n\t\t\t}\n\t\t}\n\t}\n\treturn data\n}\n","\"use strict\"\n\nmodule.exports = require(\"./render/render\")(window)\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\nvar hyperscriptVnode = require(\"./hyperscriptVnode\")\n\nmodule.exports = function() {\n\tvar vnode = hyperscriptVnode.apply(0, arguments)\n\n\tvnode.tag = \"[\"\n\tvnode.children = Vnode.normalizeChildren(vnode.children)\n\treturn vnode\n}\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\nvar hyperscriptVnode = require(\"./hyperscriptVnode\")\n\nvar selectorParser = /(?:(^|#|\\.)([^#\\.\\[\\]]+))|(\\[(.+?)(?:\\s*=\\s*(\"|'|)((?:\\\\[\"'\\]]|.)*?)\\5)?\\])/g\nvar selectorCache = {}\nvar hasOwn = {}.hasOwnProperty\n\nfunction isEmpty(object) {\n\tfor (var key in object) if (hasOwn.call(object, key)) return false\n\treturn true\n}\n\nfunction compileSelector(selector) {\n\tvar match, tag = \"div\", classes = [], attrs = {}\n\twhile (match = selectorParser.exec(selector)) {\n\t\tvar type = match[1], value = match[2]\n\t\tif (type === \"\" && value !== \"\") tag = value\n\t\telse if (type === \"#\") attrs.id = value\n\t\telse if (type === \".\") classes.push(value)\n\t\telse if (match[3][0] === \"[\") {\n\t\t\tvar attrValue = match[6]\n\t\t\tif (attrValue) attrValue = attrValue.replace(/\\\\([\"'])/g, \"$1\").replace(/\\\\\\\\/g, \"\\\\\")\n\t\t\tif (match[4] === \"class\") classes.push(attrValue)\n\t\t\telse attrs[match[4]] = attrValue === \"\" ? attrValue : attrValue || true\n\t\t}\n\t}\n\tif (classes.length > 0) attrs.className = classes.join(\" \")\n\treturn selectorCache[selector] = {tag: tag, attrs: attrs}\n}\n\nfunction execSelector(state, vnode) {\n\tvar attrs = vnode.attrs\n\tvar children = Vnode.normalizeChildren(vnode.children)\n\tvar hasClass = hasOwn.call(attrs, \"class\")\n\tvar className = hasClass ? attrs.class : attrs.className\n\n\tvnode.tag = state.tag\n\tvnode.attrs = null\n\tvnode.children = undefined\n\n\tif (!isEmpty(state.attrs) && !isEmpty(attrs)) {\n\t\tvar newAttrs = {}\n\n\t\tfor (var key in attrs) {\n\t\t\tif (hasOwn.call(attrs, key)) newAttrs[key] = attrs[key]\n\t\t}\n\n\t\tattrs = newAttrs\n\t}\n\n\tfor (var key in state.attrs) {\n\t\tif (hasOwn.call(state.attrs, key) && key !== \"className\" && !hasOwn.call(attrs, key)){\n\t\t\tattrs[key] = state.attrs[key]\n\t\t}\n\t}\n\tif (className != null || state.attrs.className != null) attrs.className =\n\t\tclassName != null\n\t\t\t? state.attrs.className != null\n\t\t\t\t? String(state.attrs.className) + \" \" + String(className)\n\t\t\t\t: className\n\t\t\t: state.attrs.className != null\n\t\t\t\t? state.attrs.className\n\t\t\t\t: null\n\n\tif (hasClass) attrs.class = null\n\n\tfor (var key in attrs) {\n\t\tif (hasOwn.call(attrs, key) && key !== \"key\") {\n\t\t\tvnode.attrs = attrs\n\t\t\tbreak\n\t\t}\n\t}\n\n\tif (Array.isArray(children) && children.length === 1 && children[0] != null && children[0].tag === \"#\") {\n\t\tvnode.text = children[0].children\n\t} else {\n\t\tvnode.children = children\n\t}\n\n\treturn vnode\n}\n\nfunction hyperscript(selector) {\n\tif (selector == null || typeof selector !== \"string\" && typeof selector !== \"function\" && typeof selector.view !== \"function\") {\n\t\tthrow Error(\"The selector must be either a string or a component.\");\n\t}\n\n\tvar vnode = hyperscriptVnode.apply(1, arguments)\n\n\tif (typeof selector === \"string\") {\n\t\tvnode.children = Vnode.normalizeChildren(vnode.children)\n\t\tif (selector !== \"[\") return execSelector(selectorCache[selector] || compileSelector(selector), vnode)\n\t}\n\n\tvnode.tag = selector\n\treturn vnode\n}\n\nmodule.exports = hyperscript\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\n\n// Call via `hyperscriptVnode.apply(startOffset, arguments)`\n//\n// The reason I do it this way, forwarding the arguments and passing the start\n// offset in `this`, is so I don't have to create a temporary array in a\n// performance-critical path.\n//\n// In native ES6, I'd instead add a final `...args` parameter to the\n// `hyperscript` and `fragment` factories and define this as\n// `hyperscriptVnode(...args)`, since modern engines do optimize that away. But\n// ES5 (what Mithril requires thanks to IE support) doesn't give me that luxury,\n// and engines aren't nearly intelligent enough to do either of these:\n//\n// 1. Elide the allocation for `[].slice.call(arguments, 1)` when it's passed to\n// another function only to be indexed.\n// 2. Elide an `arguments` allocation when it's passed to any function other\n// than `Function.prototype.apply` or `Reflect.apply`.\n//\n// In ES6, it'd probably look closer to this (I'd need to profile it, though):\n// module.exports = function(attrs, ...children) {\n// if (attrs == null || typeof attrs === \"object\" && attrs.tag == null && !Array.isArray(attrs)) {\n// if (children.length === 1 && Array.isArray(children[0])) children = children[0]\n// } else {\n// children = children.length === 0 && Array.isArray(attrs) ? attrs : [attrs, ...children]\n// attrs = undefined\n// }\n//\n// if (attrs == null) attrs = {}\n// return Vnode(\"\", attrs.key, attrs, children)\n// }\nmodule.exports = function() {\n\tvar attrs = arguments[this], start = this + 1, children\n\n\tif (attrs == null) {\n\t\tattrs = {}\n\t} else if (typeof attrs !== \"object\" || attrs.tag != null || Array.isArray(attrs)) {\n\t\tattrs = {}\n\t\tstart = this\n\t}\n\n\tif (arguments.length === start + 1) {\n\t\tchildren = arguments[start]\n\t\tif (!Array.isArray(children)) children = [children]\n\t} else {\n\t\tchildren = []\n\t\twhile (start < arguments.length) children.push(arguments[start++])\n\t}\n\n\treturn Vnode(\"\", attrs.key, attrs, children)\n}\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\n\nmodule.exports = function($window) {\n\tvar $doc = $window && $window.document\n\tvar currentRedraw\n\n\tvar nameSpace = {\n\t\tsvg: \"http://www.w3.org/2000/svg\",\n\t\tmath: \"http://www.w3.org/1998/Math/MathML\"\n\t}\n\n\tfunction getNameSpace(vnode) {\n\t\treturn vnode.attrs && vnode.attrs.xmlns || nameSpace[vnode.tag]\n\t}\n\n\t//sanity check to discourage people from doing `vnode.state = ...`\n\tfunction checkState(vnode, original) {\n\t\tif (vnode.state !== original) throw new Error(\"`vnode.state` must not be modified\")\n\t}\n\n\t//Note: the hook is passed as the `this` argument to allow proxying the\n\t//arguments without requiring a full array allocation to do so. It also\n\t//takes advantage of the fact the current `vnode` is the first argument in\n\t//all lifecycle methods.\n\tfunction callHook(vnode) {\n\t\tvar original = vnode.state\n\t\ttry {\n\t\t\treturn this.apply(original, arguments)\n\t\t} finally {\n\t\t\tcheckState(vnode, original)\n\t\t}\n\t}\n\n\t// IE11 (at least) throws an UnspecifiedError when accessing document.activeElement when\n\t// inside an iframe. Catch and swallow this error, and heavy-handidly return null.\n\tfunction activeElement() {\n\t\ttry {\n\t\t\treturn $doc.activeElement\n\t\t} catch (e) {\n\t\t\treturn null\n\t\t}\n\t}\n\t//create\n\tfunction createNodes(parent, vnodes, start, end, hooks, nextSibling, ns) {\n\t\tfor (var i = start; i < end; i++) {\n\t\t\tvar vnode = vnodes[i]\n\t\t\tif (vnode != null) {\n\t\t\t\tcreateNode(parent, vnode, hooks, ns, nextSibling)\n\t\t\t}\n\t\t}\n\t}\n\tfunction createNode(parent, vnode, hooks, ns, nextSibling) {\n\t\tvar tag = vnode.tag\n\t\tif (typeof tag === \"string\") {\n\t\t\tvnode.state = {}\n\t\t\tif (vnode.attrs != null) initLifecycle(vnode.attrs, vnode, hooks)\n\t\t\tswitch (tag) {\n\t\t\t\tcase \"#\": createText(parent, vnode, nextSibling); break\n\t\t\t\tcase \"<\": createHTML(parent, vnode, ns, nextSibling); break\n\t\t\t\tcase \"[\": createFragment(parent, vnode, hooks, ns, nextSibling); break\n\t\t\t\tdefault: createElement(parent, vnode, hooks, ns, nextSibling)\n\t\t\t}\n\t\t}\n\t\telse createComponent(parent, vnode, hooks, ns, nextSibling)\n\t}\n\tfunction createText(parent, vnode, nextSibling) {\n\t\tvnode.dom = $doc.createTextNode(vnode.children)\n\t\tinsertNode(parent, vnode.dom, nextSibling)\n\t}\n\tvar possibleParents = {caption: \"table\", thead: \"table\", tbody: \"table\", tfoot: \"table\", tr: \"tbody\", th: \"tr\", td: \"tr\", colgroup: \"table\", col: \"colgroup\"}\n\tfunction createHTML(parent, vnode, ns, nextSibling) {\n\t\tvar match = vnode.children.match(/^\\s*?<(\\w+)/im) || []\n\t\t// not using the proper parent makes the child element(s) vanish.\n\t\t// var div = document.createElement(\"div\")\n\t\t// div.innerHTML = \"ij\"\n\t\t// console.log(div.innerHTML)\n\t\t// --> \"ij\", no in sight.\n\t\tvar temp = $doc.createElement(possibleParents[match[1]] || \"div\")\n\t\tif (ns === \"http://www.w3.org/2000/svg\") {\n\t\t\ttemp.innerHTML = \"\" + vnode.children + \"\"\n\t\t\ttemp = temp.firstChild\n\t\t} else {\n\t\t\ttemp.innerHTML = vnode.children\n\t\t}\n\t\tvnode.dom = temp.firstChild\n\t\tvnode.domSize = temp.childNodes.length\n\t\t// Capture nodes to remove, so we don't confuse them.\n\t\tvnode.instance = []\n\t\tvar fragment = $doc.createDocumentFragment()\n\t\tvar child\n\t\twhile (child = temp.firstChild) {\n\t\t\tvnode.instance.push(child)\n\t\t\tfragment.appendChild(child)\n\t\t}\n\t\tinsertNode(parent, fragment, nextSibling)\n\t}\n\tfunction createFragment(parent, vnode, hooks, ns, nextSibling) {\n\t\tvar fragment = $doc.createDocumentFragment()\n\t\tif (vnode.children != null) {\n\t\t\tvar children = vnode.children\n\t\t\tcreateNodes(fragment, children, 0, children.length, hooks, null, ns)\n\t\t}\n\t\tvnode.dom = fragment.firstChild\n\t\tvnode.domSize = fragment.childNodes.length\n\t\tinsertNode(parent, fragment, nextSibling)\n\t}\n\tfunction createElement(parent, vnode, hooks, ns, nextSibling) {\n\t\tvar tag = vnode.tag\n\t\tvar attrs = vnode.attrs\n\t\tvar is = attrs && attrs.is\n\n\t\tns = getNameSpace(vnode) || ns\n\n\t\tvar element = ns ?\n\t\t\tis ? $doc.createElementNS(ns, tag, {is: is}) : $doc.createElementNS(ns, tag) :\n\t\t\tis ? $doc.createElement(tag, {is: is}) : $doc.createElement(tag)\n\t\tvnode.dom = element\n\n\t\tif (attrs != null) {\n\t\t\tsetAttrs(vnode, attrs, ns)\n\t\t}\n\n\t\tinsertNode(parent, element, nextSibling)\n\n\t\tif (!maybeSetContentEditable(vnode)) {\n\t\t\tif (vnode.text != null) {\n\t\t\t\tif (vnode.text !== \"\") element.textContent = vnode.text\n\t\t\t\telse vnode.children = [Vnode(\"#\", undefined, undefined, vnode.text, undefined, undefined)]\n\t\t\t}\n\t\t\tif (vnode.children != null) {\n\t\t\t\tvar children = vnode.children\n\t\t\t\tcreateNodes(element, children, 0, children.length, hooks, null, ns)\n\t\t\t\tif (vnode.tag === \"select\" && attrs != null) setLateSelectAttrs(vnode, attrs)\n\t\t\t}\n\t\t}\n\t}\n\tfunction initComponent(vnode, hooks) {\n\t\tvar sentinel\n\t\tif (typeof vnode.tag.view === \"function\") {\n\t\t\tvnode.state = Object.create(vnode.tag)\n\t\t\tsentinel = vnode.state.view\n\t\t\tif (sentinel.$$reentrantLock$$ != null) return\n\t\t\tsentinel.$$reentrantLock$$ = true\n\t\t} else {\n\t\t\tvnode.state = void 0\n\t\t\tsentinel = vnode.tag\n\t\t\tif (sentinel.$$reentrantLock$$ != null) return\n\t\t\tsentinel.$$reentrantLock$$ = true\n\t\t\tvnode.state = (vnode.tag.prototype != null && typeof vnode.tag.prototype.view === \"function\") ? new vnode.tag(vnode) : vnode.tag(vnode)\n\t\t}\n\t\tinitLifecycle(vnode.state, vnode, hooks)\n\t\tif (vnode.attrs != null) initLifecycle(vnode.attrs, vnode, hooks)\n\t\tvnode.instance = Vnode.normalize(callHook.call(vnode.state.view, vnode))\n\t\tif (vnode.instance === vnode) throw Error(\"A view cannot return the vnode it received as argument\")\n\t\tsentinel.$$reentrantLock$$ = null\n\t}\n\tfunction createComponent(parent, vnode, hooks, ns, nextSibling) {\n\t\tinitComponent(vnode, hooks)\n\t\tif (vnode.instance != null) {\n\t\t\tcreateNode(parent, vnode.instance, hooks, ns, nextSibling)\n\t\t\tvnode.dom = vnode.instance.dom\n\t\t\tvnode.domSize = vnode.dom != null ? vnode.instance.domSize : 0\n\t\t}\n\t\telse {\n\t\t\tvnode.domSize = 0\n\t\t}\n\t}\n\n\t//update\n\t/**\n\t * @param {Element|Fragment} parent - the parent element\n\t * @param {Vnode[] | null} old - the list of vnodes of the last `render()` call for\n\t * this part of the tree\n\t * @param {Vnode[] | null} vnodes - as above, but for the current `render()` call.\n\t * @param {Function[]} hooks - an accumulator of post-render hooks (oncreate/onupdate)\n\t * @param {Element | null} nextSibling - the next DOM node if we're dealing with a\n\t * fragment that is not the last item in its\n\t * parent\n\t * @param {'svg' | 'math' | String | null} ns) - the current XML namespace, if any\n\t * @returns void\n\t */\n\t// This function diffs and patches lists of vnodes, both keyed and unkeyed.\n\t//\n\t// We will:\n\t//\n\t// 1. describe its general structure\n\t// 2. focus on the diff algorithm optimizations\n\t// 3. discuss DOM node operations.\n\n\t// ## Overview:\n\t//\n\t// The updateNodes() function:\n\t// - deals with trivial cases\n\t// - determines whether the lists are keyed or unkeyed based on the first non-null node\n\t// of each list.\n\t// - diffs them and patches the DOM if needed (that's the brunt of the code)\n\t// - manages the leftovers: after diffing, are there:\n\t// - old nodes left to remove?\n\t// \t - new nodes to insert?\n\t// \t deal with them!\n\t//\n\t// The lists are only iterated over once, with an exception for the nodes in `old` that\n\t// are visited in the fourth part of the diff and in the `removeNodes` loop.\n\n\t// ## Diffing\n\t//\n\t// Reading https://github.com/localvoid/ivi/blob/ddc09d06abaef45248e6133f7040d00d3c6be853/packages/ivi/src/vdom/implementation.ts#L617-L837\n\t// may be good for context on longest increasing subsequence-based logic for moving nodes.\n\t//\n\t// In order to diff keyed lists, one has to\n\t//\n\t// 1) match nodes in both lists, per key, and update them accordingly\n\t// 2) create the nodes present in the new list, but absent in the old one\n\t// 3) remove the nodes present in the old list, but absent in the new one\n\t// 4) figure out what nodes in 1) to move in order to minimize the DOM operations.\n\t//\n\t// To achieve 1) one can create a dictionary of keys => index (for the old list), then iterate\n\t// over the new list and for each new vnode, find the corresponding vnode in the old list using\n\t// the map.\n\t// 2) is achieved in the same step: if a new node has no corresponding entry in the map, it is new\n\t// and must be created.\n\t// For the removals, we actually remove the nodes that have been updated from the old list.\n\t// The nodes that remain in that list after 1) and 2) have been performed can be safely removed.\n\t// The fourth step is a bit more complex and relies on the longest increasing subsequence (LIS)\n\t// algorithm.\n\t//\n\t// the longest increasing subsequence is the list of nodes that can remain in place. Imagine going\n\t// from `1,2,3,4,5` to `4,5,1,2,3` where the numbers are not necessarily the keys, but the indices\n\t// corresponding to the keyed nodes in the old list (keyed nodes `e,d,c,b,a` => `b,a,e,d,c` would\n\t// match the above lists, for example).\n\t//\n\t// In there are two increasing subsequences: `4,5` and `1,2,3`, the latter being the longest. We\n\t// can update those nodes without moving them, and only call `insertNode` on `4` and `5`.\n\t//\n\t// @localvoid adapted the algo to also support node deletions and insertions (the `lis` is actually\n\t// the longest increasing subsequence *of old nodes still present in the new list*).\n\t//\n\t// It is a general algorithm that is fireproof in all circumstances, but it requires the allocation\n\t// and the construction of a `key => oldIndex` map, and three arrays (one with `newIndex => oldIndex`,\n\t// the `LIS` and a temporary one to create the LIS).\n\t//\n\t// So we cheat where we can: if the tails of the lists are identical, they are guaranteed to be part of\n\t// the LIS and can be updated without moving them.\n\t//\n\t// If two nodes are swapped, they are guaranteed not to be part of the LIS, and must be moved (with\n\t// the exception of the last node if the list is fully reversed).\n\t//\n\t// ## Finding the next sibling.\n\t//\n\t// `updateNode()` and `createNode()` expect a nextSibling parameter to perform DOM operations.\n\t// When the list is being traversed top-down, at any index, the DOM nodes up to the previous\n\t// vnode reflect the content of the new list, whereas the rest of the DOM nodes reflect the old\n\t// list. The next sibling must be looked for in the old list using `getNextSibling(... oldStart + 1 ...)`.\n\t//\n\t// In the other scenarios (swaps, upwards traversal, map-based diff),\n\t// the new vnodes list is traversed upwards. The DOM nodes at the bottom of the list reflect the\n\t// bottom part of the new vnodes list, and we can use the `v.dom` value of the previous node\n\t// as the next sibling (cached in the `nextSibling` variable).\n\n\n\t// ## DOM node moves\n\t//\n\t// In most scenarios `updateNode()` and `createNode()` perform the DOM operations. However,\n\t// this is not the case if the node moved (second and fourth part of the diff algo). We move\n\t// the old DOM nodes before updateNode runs because it enables us to use the cached `nextSibling`\n\t// variable rather than fetching it using `getNextSibling()`.\n\t//\n\t// The fourth part of the diff currently inserts nodes unconditionally, leading to issues\n\t// like #1791 and #1999. We need to be smarter about those situations where adjascent old\n\t// nodes remain together in the new list in a way that isn't covered by parts one and\n\t// three of the diff algo.\n\n\tfunction updateNodes(parent, old, vnodes, hooks, nextSibling, ns) {\n\t\tif (old === vnodes || old == null && vnodes == null) return\n\t\telse if (old == null || old.length === 0) createNodes(parent, vnodes, 0, vnodes.length, hooks, nextSibling, ns)\n\t\telse if (vnodes == null || vnodes.length === 0) removeNodes(parent, old, 0, old.length)\n\t\telse {\n\t\t\tvar isOldKeyed = old[0] != null && old[0].key != null\n\t\t\tvar isKeyed = vnodes[0] != null && vnodes[0].key != null\n\t\t\tvar start = 0, oldStart = 0\n\t\t\tif (!isOldKeyed) while (oldStart < old.length && old[oldStart] == null) oldStart++\n\t\t\tif (!isKeyed) while (start < vnodes.length && vnodes[start] == null) start++\n\t\t\tif (isKeyed === null && isOldKeyed == null) return // both lists are full of nulls\n\t\t\tif (isOldKeyed !== isKeyed) {\n\t\t\t\tremoveNodes(parent, old, oldStart, old.length)\n\t\t\t\tcreateNodes(parent, vnodes, start, vnodes.length, hooks, nextSibling, ns)\n\t\t\t} else if (!isKeyed) {\n\t\t\t\t// Don't index past the end of either list (causes deopts).\n\t\t\t\tvar commonLength = old.length < vnodes.length ? old.length : vnodes.length\n\t\t\t\t// Rewind if necessary to the first non-null index on either side.\n\t\t\t\t// We could alternatively either explicitly create or remove nodes when `start !== oldStart`\n\t\t\t\t// but that would be optimizing for sparse lists which are more rare than dense ones.\n\t\t\t\tstart = start < oldStart ? start : oldStart\n\t\t\t\tfor (; start < commonLength; start++) {\n\t\t\t\t\to = old[start]\n\t\t\t\t\tv = vnodes[start]\n\t\t\t\t\tif (o === v || o == null && v == null) continue\n\t\t\t\t\telse if (o == null) createNode(parent, v, hooks, ns, getNextSibling(old, start + 1, nextSibling))\n\t\t\t\t\telse if (v == null) removeNode(parent, o)\n\t\t\t\t\telse updateNode(parent, o, v, hooks, getNextSibling(old, start + 1, nextSibling), ns)\n\t\t\t\t}\n\t\t\t\tif (old.length > commonLength) removeNodes(parent, old, start, old.length)\n\t\t\t\tif (vnodes.length > commonLength) createNodes(parent, vnodes, start, vnodes.length, hooks, nextSibling, ns)\n\t\t\t} else {\n\t\t\t\t// keyed diff\n\t\t\t\tvar oldEnd = old.length - 1, end = vnodes.length - 1, map, o, v, oe, ve, topSibling\n\n\t\t\t\t// bottom-up\n\t\t\t\twhile (oldEnd >= oldStart && end >= start) {\n\t\t\t\t\toe = old[oldEnd]\n\t\t\t\t\tve = vnodes[end]\n\t\t\t\t\tif (oe.key !== ve.key) break\n\t\t\t\t\tif (oe !== ve) updateNode(parent, oe, ve, hooks, nextSibling, ns)\n\t\t\t\t\tif (ve.dom != null) nextSibling = ve.dom\n\t\t\t\t\toldEnd--, end--\n\t\t\t\t}\n\t\t\t\t// top-down\n\t\t\t\twhile (oldEnd >= oldStart && end >= start) {\n\t\t\t\t\to = old[oldStart]\n\t\t\t\t\tv = vnodes[start]\n\t\t\t\t\tif (o.key !== v.key) break\n\t\t\t\t\toldStart++, start++\n\t\t\t\t\tif (o !== v) updateNode(parent, o, v, hooks, getNextSibling(old, oldStart, nextSibling), ns)\n\t\t\t\t}\n\t\t\t\t// swaps and list reversals\n\t\t\t\twhile (oldEnd >= oldStart && end >= start) {\n\t\t\t\t\tif (start === end) break\n\t\t\t\t\tif (o.key !== ve.key || oe.key !== v.key) break\n\t\t\t\t\ttopSibling = getNextSibling(old, oldStart, nextSibling)\n\t\t\t\t\tmoveNodes(parent, oe, topSibling)\n\t\t\t\t\tif (oe !== v) updateNode(parent, oe, v, hooks, topSibling, ns)\n\t\t\t\t\tif (++start <= --end) moveNodes(parent, o, nextSibling)\n\t\t\t\t\tif (o !== ve) updateNode(parent, o, ve, hooks, nextSibling, ns)\n\t\t\t\t\tif (ve.dom != null) nextSibling = ve.dom\n\t\t\t\t\toldStart++; oldEnd--\n\t\t\t\t\toe = old[oldEnd]\n\t\t\t\t\tve = vnodes[end]\n\t\t\t\t\to = old[oldStart]\n\t\t\t\t\tv = vnodes[start]\n\t\t\t\t}\n\t\t\t\t// bottom up once again\n\t\t\t\twhile (oldEnd >= oldStart && end >= start) {\n\t\t\t\t\tif (oe.key !== ve.key) break\n\t\t\t\t\tif (oe !== ve) updateNode(parent, oe, ve, hooks, nextSibling, ns)\n\t\t\t\t\tif (ve.dom != null) nextSibling = ve.dom\n\t\t\t\t\toldEnd--, end--\n\t\t\t\t\toe = old[oldEnd]\n\t\t\t\t\tve = vnodes[end]\n\t\t\t\t}\n\t\t\t\tif (start > end) removeNodes(parent, old, oldStart, oldEnd + 1)\n\t\t\t\telse if (oldStart > oldEnd) createNodes(parent, vnodes, start, end + 1, hooks, nextSibling, ns)\n\t\t\t\telse {\n\t\t\t\t\t// inspired by ivi https://github.com/ivijs/ivi/ by Boris Kaul\n\t\t\t\t\tvar originalNextSibling = nextSibling, vnodesLength = end - start + 1, oldIndices = new Array(vnodesLength), li=0, i=0, pos = 2147483647, matched = 0, map, lisIndices\n\t\t\t\t\tfor (i = 0; i < vnodesLength; i++) oldIndices[i] = -1\n\t\t\t\t\tfor (i = end; i >= start; i--) {\n\t\t\t\t\t\tif (map == null) map = getKeyMap(old, oldStart, oldEnd + 1)\n\t\t\t\t\t\tve = vnodes[i]\n\t\t\t\t\t\tvar oldIndex = map[ve.key]\n\t\t\t\t\t\tif (oldIndex != null) {\n\t\t\t\t\t\t\tpos = (oldIndex < pos) ? oldIndex : -1 // becomes -1 if nodes were re-ordered\n\t\t\t\t\t\t\toldIndices[i-start] = oldIndex\n\t\t\t\t\t\t\toe = old[oldIndex]\n\t\t\t\t\t\t\told[oldIndex] = null\n\t\t\t\t\t\t\tif (oe !== ve) updateNode(parent, oe, ve, hooks, nextSibling, ns)\n\t\t\t\t\t\t\tif (ve.dom != null) nextSibling = ve.dom\n\t\t\t\t\t\t\tmatched++\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tnextSibling = originalNextSibling\n\t\t\t\t\tif (matched !== oldEnd - oldStart + 1) removeNodes(parent, old, oldStart, oldEnd + 1)\n\t\t\t\t\tif (matched === 0) createNodes(parent, vnodes, start, end + 1, hooks, nextSibling, ns)\n\t\t\t\t\telse {\n\t\t\t\t\t\tif (pos === -1) {\n\t\t\t\t\t\t\t// the indices of the indices of the items that are part of the\n\t\t\t\t\t\t\t// longest increasing subsequence in the oldIndices list\n\t\t\t\t\t\t\tlisIndices = makeLisIndices(oldIndices)\n\t\t\t\t\t\t\tli = lisIndices.length - 1\n\t\t\t\t\t\t\tfor (i = end; i >= start; i--) {\n\t\t\t\t\t\t\t\tv = vnodes[i]\n\t\t\t\t\t\t\t\tif (oldIndices[i-start] === -1) createNode(parent, v, hooks, ns, nextSibling)\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tif (lisIndices[li] === i - start) li--\n\t\t\t\t\t\t\t\t\telse moveNodes(parent, v, nextSibling)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (v.dom != null) nextSibling = vnodes[i].dom\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfor (i = end; i >= start; i--) {\n\t\t\t\t\t\t\t\tv = vnodes[i]\n\t\t\t\t\t\t\t\tif (oldIndices[i-start] === -1) createNode(parent, v, hooks, ns, nextSibling)\n\t\t\t\t\t\t\t\tif (v.dom != null) nextSibling = vnodes[i].dom\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tfunction updateNode(parent, old, vnode, hooks, nextSibling, ns) {\n\t\tvar oldTag = old.tag, tag = vnode.tag\n\t\tif (oldTag === tag) {\n\t\t\tvnode.state = old.state\n\t\t\tvnode.events = old.events\n\t\t\tif (shouldNotUpdate(vnode, old)) return\n\t\t\tif (typeof oldTag === \"string\") {\n\t\t\t\tif (vnode.attrs != null) {\n\t\t\t\t\tupdateLifecycle(vnode.attrs, vnode, hooks)\n\t\t\t\t}\n\t\t\t\tswitch (oldTag) {\n\t\t\t\t\tcase \"#\": updateText(old, vnode); break\n\t\t\t\t\tcase \"<\": updateHTML(parent, old, vnode, ns, nextSibling); break\n\t\t\t\t\tcase \"[\": updateFragment(parent, old, vnode, hooks, nextSibling, ns); break\n\t\t\t\t\tdefault: updateElement(old, vnode, hooks, ns)\n\t\t\t\t}\n\t\t\t}\n\t\t\telse updateComponent(parent, old, vnode, hooks, nextSibling, ns)\n\t\t}\n\t\telse {\n\t\t\tremoveNode(parent, old)\n\t\t\tcreateNode(parent, vnode, hooks, ns, nextSibling)\n\t\t}\n\t}\n\tfunction updateText(old, vnode) {\n\t\tif (old.children.toString() !== vnode.children.toString()) {\n\t\t\told.dom.nodeValue = vnode.children\n\t\t}\n\t\tvnode.dom = old.dom\n\t}\n\tfunction updateHTML(parent, old, vnode, ns, nextSibling) {\n\t\tif (old.children !== vnode.children) {\n\t\t\tremoveHTML(parent, old)\n\t\t\tcreateHTML(parent, vnode, ns, nextSibling)\n\t\t}\n\t\telse {\n\t\t\tvnode.dom = old.dom\n\t\t\tvnode.domSize = old.domSize\n\t\t\tvnode.instance = old.instance\n\t\t}\n\t}\n\tfunction updateFragment(parent, old, vnode, hooks, nextSibling, ns) {\n\t\tupdateNodes(parent, old.children, vnode.children, hooks, nextSibling, ns)\n\t\tvar domSize = 0, children = vnode.children\n\t\tvnode.dom = null\n\t\tif (children != null) {\n\t\t\tfor (var i = 0; i < children.length; i++) {\n\t\t\t\tvar child = children[i]\n\t\t\t\tif (child != null && child.dom != null) {\n\t\t\t\t\tif (vnode.dom == null) vnode.dom = child.dom\n\t\t\t\t\tdomSize += child.domSize || 1\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (domSize !== 1) vnode.domSize = domSize\n\t\t}\n\t}\n\tfunction updateElement(old, vnode, hooks, ns) {\n\t\tvar element = vnode.dom = old.dom\n\t\tns = getNameSpace(vnode) || ns\n\n\t\tif (vnode.tag === \"textarea\") {\n\t\t\tif (vnode.attrs == null) vnode.attrs = {}\n\t\t\tif (vnode.text != null) {\n\t\t\t\tvnode.attrs.value = vnode.text //FIXME handle multiple children\n\t\t\t\tvnode.text = undefined\n\t\t\t}\n\t\t}\n\t\tupdateAttrs(vnode, old.attrs, vnode.attrs, ns)\n\t\tif (!maybeSetContentEditable(vnode)) {\n\t\t\tif (old.text != null && vnode.text != null && vnode.text !== \"\") {\n\t\t\t\tif (old.text.toString() !== vnode.text.toString()) old.dom.firstChild.nodeValue = vnode.text\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (old.text != null) old.children = [Vnode(\"#\", undefined, undefined, old.text, undefined, old.dom.firstChild)]\n\t\t\t\tif (vnode.text != null) vnode.children = [Vnode(\"#\", undefined, undefined, vnode.text, undefined, undefined)]\n\t\t\t\tupdateNodes(element, old.children, vnode.children, hooks, null, ns)\n\t\t\t}\n\t\t}\n\t}\n\tfunction updateComponent(parent, old, vnode, hooks, nextSibling, ns) {\n\t\tvnode.instance = Vnode.normalize(callHook.call(vnode.state.view, vnode))\n\t\tif (vnode.instance === vnode) throw Error(\"A view cannot return the vnode it received as argument\")\n\t\tupdateLifecycle(vnode.state, vnode, hooks)\n\t\tif (vnode.attrs != null) updateLifecycle(vnode.attrs, vnode, hooks)\n\t\tif (vnode.instance != null) {\n\t\t\tif (old.instance == null) createNode(parent, vnode.instance, hooks, ns, nextSibling)\n\t\t\telse updateNode(parent, old.instance, vnode.instance, hooks, nextSibling, ns)\n\t\t\tvnode.dom = vnode.instance.dom\n\t\t\tvnode.domSize = vnode.instance.domSize\n\t\t}\n\t\telse if (old.instance != null) {\n\t\t\tremoveNode(parent, old.instance)\n\t\t\tvnode.dom = undefined\n\t\t\tvnode.domSize = 0\n\t\t}\n\t\telse {\n\t\t\tvnode.dom = old.dom\n\t\t\tvnode.domSize = old.domSize\n\t\t}\n\t}\n\tfunction getKeyMap(vnodes, start, end) {\n\t\tvar map = Object.create(null)\n\t\tfor (; start < end; start++) {\n\t\t\tvar vnode = vnodes[start]\n\t\t\tif (vnode != null) {\n\t\t\t\tvar key = vnode.key\n\t\t\t\tif (key != null) map[key] = start\n\t\t\t}\n\t\t}\n\t\treturn map\n\t}\n\t// Lifted from ivi https://github.com/ivijs/ivi/\n\t// takes a list of unique numbers (-1 is special and can\n\t// occur multiple times) and returns an array with the indices\n\t// of the items that are part of the longest increasing\n\t// subsequece\n\tvar lisTemp = []\n\tfunction makeLisIndices(a) {\n\t\tvar result = [0]\n\t\tvar u = 0, v = 0, i = 0\n\t\tvar il = lisTemp.length = a.length\n\t\tfor (var i = 0; i < il; i++) lisTemp[i] = a[i]\n\t\tfor (var i = 0; i < il; ++i) {\n\t\t\tif (a[i] === -1) continue\n\t\t\tvar j = result[result.length - 1]\n\t\t\tif (a[j] < a[i]) {\n\t\t\t\tlisTemp[i] = j\n\t\t\t\tresult.push(i)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tu = 0\n\t\t\tv = result.length - 1\n\t\t\twhile (u < v) {\n\t\t\t\t// Fast integer average without overflow.\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tvar c = (u >>> 1) + (v >>> 1) + (u & v & 1)\n\t\t\t\tif (a[result[c]] < a[i]) {\n\t\t\t\t\tu = c + 1\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tv = c\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (a[i] < a[result[u]]) {\n\t\t\t\tif (u > 0) lisTemp[i] = result[u - 1]\n\t\t\t\tresult[u] = i\n\t\t\t}\n\t\t}\n\t\tu = result.length\n\t\tv = result[u - 1]\n\t\twhile (u-- > 0) {\n\t\t\tresult[u] = v\n\t\t\tv = lisTemp[v]\n\t\t}\n\t\tlisTemp.length = 0\n\t\treturn result\n\t}\n\n\tfunction getNextSibling(vnodes, i, nextSibling) {\n\t\tfor (; i < vnodes.length; i++) {\n\t\t\tif (vnodes[i] != null && vnodes[i].dom != null) return vnodes[i].dom\n\t\t}\n\t\treturn nextSibling\n\t}\n\n\t// This covers a really specific edge case:\n\t// - Parent node is keyed and contains child\n\t// - Child is removed, returns unresolved promise in `onbeforeremove`\n\t// - Parent node is moved in keyed diff\n\t// - Remaining children still need moved appropriately\n\t//\n\t// Ideally, I'd track removed nodes as well, but that introduces a lot more\n\t// complexity and I'm not exactly interested in doing that.\n\tfunction moveNodes(parent, vnode, nextSibling) {\n\t\tvar frag = $doc.createDocumentFragment()\n\t\tmoveChildToFrag(parent, frag, vnode)\n\t\tinsertNode(parent, frag, nextSibling)\n\t}\n\tfunction moveChildToFrag(parent, frag, vnode) {\n\t\t// Dodge the recursion overhead in a few of the most common cases.\n\t\twhile (vnode.dom != null && vnode.dom.parentNode === parent) {\n\t\t\tif (typeof vnode.tag !== \"string\") {\n\t\t\t\tvnode = vnode.instance\n\t\t\t\tif (vnode != null) continue\n\t\t\t} else if (vnode.tag === \"<\") {\n\t\t\t\tfor (var i = 0; i < vnode.instance.length; i++) {\n\t\t\t\t\tfrag.appendChild(vnode.instance[i])\n\t\t\t\t}\n\t\t\t} else if (vnode.tag !== \"[\") {\n\t\t\t\t// Don't recurse for text nodes *or* elements, just fragments\n\t\t\t\tfrag.appendChild(vnode.dom)\n\t\t\t} else if (vnode.children.length === 1) {\n\t\t\t\tvnode = vnode.children[0]\n\t\t\t\tif (vnode != null) continue\n\t\t\t} else {\n\t\t\t\tfor (var i = 0; i < vnode.children.length; i++) {\n\t\t\t\t\tvar child = vnode.children[i]\n\t\t\t\t\tif (child != null) moveChildToFrag(parent, frag, child)\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t}\n\n\tfunction insertNode(parent, dom, nextSibling) {\n\t\tif (nextSibling != null) parent.insertBefore(dom, nextSibling)\n\t\telse parent.appendChild(dom)\n\t}\n\n\tfunction maybeSetContentEditable(vnode) {\n\t\tif (vnode.attrs == null || (\n\t\t\tvnode.attrs.contenteditable == null && // attribute\n\t\t\tvnode.attrs.contentEditable == null // property\n\t\t)) return false\n\t\tvar children = vnode.children\n\t\tif (children != null && children.length === 1 && children[0].tag === \"<\") {\n\t\t\tvar content = children[0].children\n\t\t\tif (vnode.dom.innerHTML !== content) vnode.dom.innerHTML = content\n\t\t}\n\t\telse if (vnode.text != null || children != null && children.length !== 0) throw new Error(\"Child node of a contenteditable must be trusted\")\n\t\treturn true\n\t}\n\n\t//remove\n\tfunction removeNodes(parent, vnodes, start, end) {\n\t\tfor (var i = start; i < end; i++) {\n\t\t\tvar vnode = vnodes[i]\n\t\t\tif (vnode != null) removeNode(parent, vnode)\n\t\t}\n\t}\n\tfunction removeNode(parent, vnode) {\n\t\tvar mask = 0\n\t\tvar original = vnode.state\n\t\tvar stateResult, attrsResult\n\t\tif (typeof vnode.tag !== \"string\" && typeof vnode.state.onbeforeremove === \"function\") {\n\t\t\tvar result = callHook.call(vnode.state.onbeforeremove, vnode)\n\t\t\tif (result != null && typeof result.then === \"function\") {\n\t\t\t\tmask = 1\n\t\t\t\tstateResult = result\n\t\t\t}\n\t\t}\n\t\tif (vnode.attrs && typeof vnode.attrs.onbeforeremove === \"function\") {\n\t\t\tvar result = callHook.call(vnode.attrs.onbeforeremove, vnode)\n\t\t\tif (result != null && typeof result.then === \"function\") {\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tmask |= 2\n\t\t\t\tattrsResult = result\n\t\t\t}\n\t\t}\n\t\tcheckState(vnode, original)\n\n\t\t// If we can, try to fast-path it and avoid all the overhead of awaiting\n\t\tif (!mask) {\n\t\t\tonremove(vnode)\n\t\t\tremoveChild(parent, vnode)\n\t\t} else {\n\t\t\tif (stateResult != null) {\n\t\t\t\tvar next = function () {\n\t\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\t\tif (mask & 1) { mask &= 2; if (!mask) reallyRemove() }\n\t\t\t\t}\n\t\t\t\tstateResult.then(next, next)\n\t\t\t}\n\t\t\tif (attrsResult != null) {\n\t\t\t\tvar next = function () {\n\t\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\t\tif (mask & 2) { mask &= 1; if (!mask) reallyRemove() }\n\t\t\t\t}\n\t\t\t\tattrsResult.then(next, next)\n\t\t\t}\n\t\t}\n\n\t\tfunction reallyRemove() {\n\t\t\tcheckState(vnode, original)\n\t\t\tonremove(vnode)\n\t\t\tremoveChild(parent, vnode)\n\t\t}\n\t}\n\tfunction removeHTML(parent, vnode) {\n\t\tfor (var i = 0; i < vnode.instance.length; i++) {\n\t\t\tparent.removeChild(vnode.instance[i])\n\t\t}\n\t}\n\tfunction removeChild(parent, vnode) {\n\t\t// Dodge the recursion overhead in a few of the most common cases.\n\t\twhile (vnode.dom != null && vnode.dom.parentNode === parent) {\n\t\t\tif (typeof vnode.tag !== \"string\") {\n\t\t\t\tvnode = vnode.instance\n\t\t\t\tif (vnode != null) continue\n\t\t\t} else if (vnode.tag === \"<\") {\n\t\t\t\tremoveHTML(parent, vnode)\n\t\t\t} else {\n\t\t\t\tif (vnode.tag !== \"[\") {\n\t\t\t\t\tparent.removeChild(vnode.dom)\n\t\t\t\t\tif (!Array.isArray(vnode.children)) break\n\t\t\t\t}\n\t\t\t\tif (vnode.children.length === 1) {\n\t\t\t\t\tvnode = vnode.children[0]\n\t\t\t\t\tif (vnode != null) continue\n\t\t\t\t} else {\n\t\t\t\t\tfor (var i = 0; i < vnode.children.length; i++) {\n\t\t\t\t\t\tvar child = vnode.children[i]\n\t\t\t\t\t\tif (child != null) removeChild(parent, child)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t}\n\tfunction onremove(vnode) {\n\t\tif (typeof vnode.tag !== \"string\" && typeof vnode.state.onremove === \"function\") callHook.call(vnode.state.onremove, vnode)\n\t\tif (vnode.attrs && typeof vnode.attrs.onremove === \"function\") callHook.call(vnode.attrs.onremove, vnode)\n\t\tif (typeof vnode.tag !== \"string\") {\n\t\t\tif (vnode.instance != null) onremove(vnode.instance)\n\t\t} else {\n\t\t\tvar children = vnode.children\n\t\t\tif (Array.isArray(children)) {\n\t\t\t\tfor (var i = 0; i < children.length; i++) {\n\t\t\t\t\tvar child = children[i]\n\t\t\t\t\tif (child != null) onremove(child)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t//attrs\n\tfunction setAttrs(vnode, attrs, ns) {\n\t\tfor (var key in attrs) {\n\t\t\tsetAttr(vnode, key, null, attrs[key], ns)\n\t\t}\n\t}\n\tfunction setAttr(vnode, key, old, value, ns) {\n\t\tif (key === \"key\" || key === \"is\" || value == null || isLifecycleMethod(key) || (old === value && !isFormAttribute(vnode, key)) && typeof value !== \"object\") return\n\t\tif (key[0] === \"o\" && key[1] === \"n\") return updateEvent(vnode, key, value)\n\t\tif (key.slice(0, 6) === \"xlink:\") vnode.dom.setAttributeNS(\"http://www.w3.org/1999/xlink\", key.slice(6), value)\n\t\telse if (key === \"style\") updateStyle(vnode.dom, old, value)\n\t\telse if (hasPropertyKey(vnode, key, ns)) {\n\t\t\tif (key === \"value\") {\n\t\t\t\t// Only do the coercion if we're actually going to check the value.\n\t\t\t\t/* eslint-disable no-implicit-coercion */\n\t\t\t\t//setting input[value] to same value by typing on focused element moves cursor to end in Chrome\n\t\t\t\tif ((vnode.tag === \"input\" || vnode.tag === \"textarea\") && vnode.dom.value === \"\" + value && vnode.dom === activeElement()) return\n\t\t\t\t//setting select[value] to same value while having select open blinks select dropdown in Chrome\n\t\t\t\tif (vnode.tag === \"select\" && old !== null && vnode.dom.value === \"\" + value) return\n\t\t\t\t//setting option[value] to same value while having select open blinks select dropdown in Chrome\n\t\t\t\tif (vnode.tag === \"option\" && old !== null && vnode.dom.value === \"\" + value) return\n\t\t\t\t/* eslint-enable no-implicit-coercion */\n\t\t\t}\n\t\t\t// If you assign an input type that is not supported by IE 11 with an assignment expression, an error will occur.\n\t\t\tif (vnode.tag === \"input\" && key === \"type\") vnode.dom.setAttribute(key, value)\n\t\t\telse vnode.dom[key] = value\n\t\t} else {\n\t\t\tif (typeof value === \"boolean\") {\n\t\t\t\tif (value) vnode.dom.setAttribute(key, \"\")\n\t\t\t\telse vnode.dom.removeAttribute(key)\n\t\t\t}\n\t\t\telse vnode.dom.setAttribute(key === \"className\" ? \"class\" : key, value)\n\t\t}\n\t}\n\tfunction removeAttr(vnode, key, old, ns) {\n\t\tif (key === \"key\" || key === \"is\" || old == null || isLifecycleMethod(key)) return\n\t\tif (key[0] === \"o\" && key[1] === \"n\" && !isLifecycleMethod(key)) updateEvent(vnode, key, undefined)\n\t\telse if (key === \"style\") updateStyle(vnode.dom, old, null)\n\t\telse if (\n\t\t\thasPropertyKey(vnode, key, ns)\n\t\t\t&& key !== \"className\"\n\t\t\t&& !(key === \"value\" && (\n\t\t\t\tvnode.tag === \"option\"\n\t\t\t\t|| vnode.tag === \"select\" && vnode.dom.selectedIndex === -1 && vnode.dom === activeElement()\n\t\t\t))\n\t\t\t&& !(vnode.tag === \"input\" && key === \"type\")\n\t\t) {\n\t\t\tvnode.dom[key] = null\n\t\t} else {\n\t\t\tvar nsLastIndex = key.indexOf(\":\")\n\t\t\tif (nsLastIndex !== -1) key = key.slice(nsLastIndex + 1)\n\t\t\tif (old !== false) vnode.dom.removeAttribute(key === \"className\" ? \"class\" : key)\n\t\t}\n\t}\n\tfunction setLateSelectAttrs(vnode, attrs) {\n\t\tif (\"value\" in attrs) {\n\t\t\tif(attrs.value === null) {\n\t\t\t\tif (vnode.dom.selectedIndex !== -1) vnode.dom.value = null\n\t\t\t} else {\n\t\t\t\tvar normalized = \"\" + attrs.value // eslint-disable-line no-implicit-coercion\n\t\t\t\tif (vnode.dom.value !== normalized || vnode.dom.selectedIndex === -1) {\n\t\t\t\t\tvnode.dom.value = normalized\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (\"selectedIndex\" in attrs) setAttr(vnode, \"selectedIndex\", null, attrs.selectedIndex, undefined)\n\t}\n\tfunction updateAttrs(vnode, old, attrs, ns) {\n\t\tif (attrs != null) {\n\t\t\tfor (var key in attrs) {\n\t\t\t\tsetAttr(vnode, key, old && old[key], attrs[key], ns)\n\t\t\t}\n\t\t}\n\t\tvar val\n\t\tif (old != null) {\n\t\t\tfor (var key in old) {\n\t\t\t\tif (((val = old[key]) != null) && (attrs == null || attrs[key] == null)) {\n\t\t\t\t\tremoveAttr(vnode, key, val, ns)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tfunction isFormAttribute(vnode, attr) {\n\t\treturn attr === \"value\" || attr === \"checked\" || attr === \"selectedIndex\" || attr === \"selected\" && vnode.dom === activeElement() || vnode.tag === \"option\" && vnode.dom.parentNode === $doc.activeElement\n\t}\n\tfunction isLifecycleMethod(attr) {\n\t\treturn attr === \"oninit\" || attr === \"oncreate\" || attr === \"onupdate\" || attr === \"onremove\" || attr === \"onbeforeremove\" || attr === \"onbeforeupdate\"\n\t}\n\tfunction hasPropertyKey(vnode, key, ns) {\n\t\t// Filter out namespaced keys\n\t\treturn ns === undefined && (\n\t\t\t// If it's a custom element, just keep it.\n\t\t\tvnode.tag.indexOf(\"-\") > -1 || vnode.attrs != null && vnode.attrs.is ||\n\t\t\t// If it's a normal element, let's try to avoid a few browser bugs.\n\t\t\tkey !== \"href\" && key !== \"list\" && key !== \"form\" && key !== \"width\" && key !== \"height\"// && key !== \"type\"\n\t\t\t// Defer the property check until *after* we check everything.\n\t\t) && key in vnode.dom\n\t}\n\n\t//style\n\tvar uppercaseRegex = /[A-Z]/g\n\tfunction toLowerCase(capital) { return \"-\" + capital.toLowerCase() }\n\tfunction normalizeKey(key) {\n\t\treturn key[0] === \"-\" && key[1] === \"-\" ? key :\n\t\t\tkey === \"cssFloat\" ? \"float\" :\n\t\t\t\tkey.replace(uppercaseRegex, toLowerCase)\n\t}\n\tfunction updateStyle(element, old, style) {\n\t\tif (old === style) {\n\t\t\t// Styles are equivalent, do nothing.\n\t\t} else if (style == null) {\n\t\t\t// New style is missing, just clear it.\n\t\t\telement.style.cssText = \"\"\n\t\t} else if (typeof style !== \"object\") {\n\t\t\t// New style is a string, let engine deal with patching.\n\t\t\telement.style.cssText = style\n\t\t} else if (old == null || typeof old !== \"object\") {\n\t\t\t// `old` is missing or a string, `style` is an object.\n\t\t\telement.style.cssText = \"\"\n\t\t\t// Add new style properties\n\t\t\tfor (var key in style) {\n\t\t\t\tvar value = style[key]\n\t\t\t\tif (value != null) element.style.setProperty(normalizeKey(key), String(value))\n\t\t\t}\n\t\t} else {\n\t\t\t// Both old & new are (different) objects.\n\t\t\t// Update style properties that have changed\n\t\t\tfor (var key in style) {\n\t\t\t\tvar value = style[key]\n\t\t\t\tif (value != null && (value = String(value)) !== String(old[key])) {\n\t\t\t\t\telement.style.setProperty(normalizeKey(key), value)\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Remove style properties that no longer exist\n\t\t\tfor (var key in old) {\n\t\t\t\tif (old[key] != null && style[key] == null) {\n\t\t\t\t\telement.style.removeProperty(normalizeKey(key))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Here's an explanation of how this works:\n\t// 1. The event names are always (by design) prefixed by `on`.\n\t// 2. The EventListener interface accepts either a function or an object\n\t// with a `handleEvent` method.\n\t// 3. The object does not inherit from `Object.prototype`, to avoid\n\t// any potential interference with that (e.g. setters).\n\t// 4. The event name is remapped to the handler before calling it.\n\t// 5. In function-based event handlers, `ev.target === this`. We replicate\n\t// that below.\n\t// 6. In function-based event handlers, `return false` prevents the default\n\t// action and stops event propagation. We replicate that below.\n\tfunction EventDict() {\n\t\t// Save this, so the current redraw is correctly tracked.\n\t\tthis._ = currentRedraw\n\t}\n\tEventDict.prototype = Object.create(null)\n\tEventDict.prototype.handleEvent = function (ev) {\n\t\tvar handler = this[\"on\" + ev.type]\n\t\tvar result\n\t\tif (typeof handler === \"function\") result = handler.call(ev.currentTarget, ev)\n\t\telse if (typeof handler.handleEvent === \"function\") handler.handleEvent(ev)\n\t\tif (this._ && ev.redraw !== false) (0, this._)()\n\t\tif (result === false) {\n\t\t\tev.preventDefault()\n\t\t\tev.stopPropagation()\n\t\t}\n\t}\n\n\t//event\n\tfunction updateEvent(vnode, key, value) {\n\t\tif (vnode.events != null) {\n\t\t\tif (vnode.events[key] === value) return\n\t\t\tif (value != null && (typeof value === \"function\" || typeof value === \"object\")) {\n\t\t\t\tif (vnode.events[key] == null) vnode.dom.addEventListener(key.slice(2), vnode.events, false)\n\t\t\t\tvnode.events[key] = value\n\t\t\t} else {\n\t\t\t\tif (vnode.events[key] != null) vnode.dom.removeEventListener(key.slice(2), vnode.events, false)\n\t\t\t\tvnode.events[key] = undefined\n\t\t\t}\n\t\t} else if (value != null && (typeof value === \"function\" || typeof value === \"object\")) {\n\t\t\tvnode.events = new EventDict()\n\t\t\tvnode.dom.addEventListener(key.slice(2), vnode.events, false)\n\t\t\tvnode.events[key] = value\n\t\t}\n\t}\n\n\t//lifecycle\n\tfunction initLifecycle(source, vnode, hooks) {\n\t\tif (typeof source.oninit === \"function\") callHook.call(source.oninit, vnode)\n\t\tif (typeof source.oncreate === \"function\") hooks.push(callHook.bind(source.oncreate, vnode))\n\t}\n\tfunction updateLifecycle(source, vnode, hooks) {\n\t\tif (typeof source.onupdate === \"function\") hooks.push(callHook.bind(source.onupdate, vnode))\n\t}\n\tfunction shouldNotUpdate(vnode, old) {\n\t\tdo {\n\t\t\tif (vnode.attrs != null && typeof vnode.attrs.onbeforeupdate === \"function\") {\n\t\t\t\tvar force = callHook.call(vnode.attrs.onbeforeupdate, vnode, old)\n\t\t\t\tif (force !== undefined && !force) break\n\t\t\t}\n\t\t\tif (typeof vnode.tag !== \"string\" && typeof vnode.state.onbeforeupdate === \"function\") {\n\t\t\t\tvar force = callHook.call(vnode.state.onbeforeupdate, vnode, old)\n\t\t\t\tif (force !== undefined && !force) break\n\t\t\t}\n\t\t\treturn false\n\t\t} while (false); // eslint-disable-line no-constant-condition\n\t\tvnode.dom = old.dom\n\t\tvnode.domSize = old.domSize\n\t\tvnode.instance = old.instance\n\t\t// One would think having the actual latest attributes would be ideal,\n\t\t// but it doesn't let us properly diff based on our current internal\n\t\t// representation. We have to save not only the old DOM info, but also\n\t\t// the attributes used to create it, as we diff *that*, not against the\n\t\t// DOM directly (with a few exceptions in `setAttr`). And, of course, we\n\t\t// need to save the children and text as they are conceptually not\n\t\t// unlike special \"attributes\" internally.\n\t\tvnode.attrs = old.attrs\n\t\tvnode.children = old.children\n\t\tvnode.text = old.text\n\t\treturn true\n\t}\n\n\treturn function(dom, vnodes, redraw) {\n\t\tif (!dom) throw new TypeError(\"Ensure the DOM element being passed to m.route/m.mount/m.render is not undefined.\")\n\t\tvar hooks = []\n\t\tvar active = activeElement()\n\t\tvar namespace = dom.namespaceURI\n\n\t\t// First time rendering into a node clears it out\n\t\tif (dom.vnodes == null) dom.textContent = \"\"\n\n\t\tvnodes = Vnode.normalizeChildren(Array.isArray(vnodes) ? vnodes : [vnodes])\n\t\tvar prevRedraw = currentRedraw\n\t\ttry {\n\t\t\tcurrentRedraw = typeof redraw === \"function\" ? redraw : undefined\n\t\t\tupdateNodes(dom, dom.vnodes, vnodes, hooks, null, namespace === \"http://www.w3.org/1999/xhtml\" ? undefined : namespace)\n\t\t} finally {\n\t\t\tcurrentRedraw = prevRedraw\n\t\t}\n\t\tdom.vnodes = vnodes\n\t\t// `document.activeElement` can return null: https://html.spec.whatwg.org/multipage/interaction.html#dom-document-activeelement\n\t\tif (active != null && activeElement() !== active && typeof active.focus === \"function\") active.focus()\n\t\tfor (var i = 0; i < hooks.length; i++) hooks[i]()\n\t}\n}\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\n\nmodule.exports = function(html) {\n\tif (html == null) html = \"\"\n\treturn Vnode(\"<\", undefined, undefined, html, undefined, undefined)\n}\n","\"use strict\"\n\nfunction Vnode(tag, key, attrs, children, text, dom) {\n\treturn {tag: tag, key: key, attrs: attrs, children: children, text: text, dom: dom, domSize: undefined, state: undefined, events: undefined, instance: undefined}\n}\nVnode.normalize = function(node) {\n\tif (Array.isArray(node)) return Vnode(\"[\", undefined, undefined, Vnode.normalizeChildren(node), undefined, undefined)\n\tif (node == null || typeof node === \"boolean\") return null\n\tif (typeof node === \"object\") return node\n\treturn Vnode(\"#\", undefined, undefined, String(node), undefined, undefined)\n}\nVnode.normalizeChildren = function(input) {\n\tvar children = []\n\tif (input.length) {\n\t\tvar isKeyed = input[0] != null && input[0].key != null\n\t\t// Note: this is a *very* perf-sensitive check.\n\t\t// Fun fact: merging the loop like this is somehow faster than splitting\n\t\t// it, noticeably so.\n\t\tfor (var i = 1; i < input.length; i++) {\n\t\t\tif ((input[i] != null && input[i].key != null) !== isKeyed) {\n\t\t\t\tthrow new TypeError(\"Vnodes must either always have keys or never have keys!\")\n\t\t\t}\n\t\t}\n\t\tfor (var i = 0; i < input.length; i++) {\n\t\t\tchildren[i] = Vnode.normalize(input[i])\n\t\t}\n\t}\n\treturn children\n}\n\nmodule.exports = Vnode\n","\"use strict\"\n\nvar PromisePolyfill = require(\"./promise/promise\")\nvar mountRedraw = require(\"./mount-redraw\")\n\nmodule.exports = require(\"./request/request\")(window, PromisePolyfill, mountRedraw.redraw)\n","\"use strict\"\n\nvar buildPathname = require(\"../pathname/build\")\n\nmodule.exports = function($window, Promise, oncompletion) {\n\tvar callbackCount = 0\n\n\tfunction PromiseProxy(executor) {\n\t\treturn new Promise(executor)\n\t}\n\n\t// In case the global Promise is some userland library's where they rely on\n\t// `foo instanceof this.constructor`, `this.constructor.resolve(value)`, or\n\t// similar. Let's *not* break them.\n\tPromiseProxy.prototype = Promise.prototype\n\tPromiseProxy.__proto__ = Promise // eslint-disable-line no-proto\n\n\tfunction makeRequest(factory) {\n\t\treturn function(url, args) {\n\t\t\tif (typeof url !== \"string\") { args = url; url = url.url }\n\t\t\telse if (args == null) args = {}\n\t\t\tvar promise = new Promise(function(resolve, reject) {\n\t\t\t\tfactory(buildPathname(url, args.params), args, function (data) {\n\t\t\t\t\tif (typeof args.type === \"function\") {\n\t\t\t\t\t\tif (Array.isArray(data)) {\n\t\t\t\t\t\t\tfor (var i = 0; i < data.length; i++) {\n\t\t\t\t\t\t\t\tdata[i] = new args.type(data[i])\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse data = new args.type(data)\n\t\t\t\t\t}\n\t\t\t\t\tresolve(data)\n\t\t\t\t}, reject)\n\t\t\t})\n\t\t\tif (args.background === true) return promise\n\t\t\tvar count = 0\n\t\t\tfunction complete() {\n\t\t\t\tif (--count === 0 && typeof oncompletion === \"function\") oncompletion()\n\t\t\t}\n\n\t\t\treturn wrap(promise)\n\n\t\t\tfunction wrap(promise) {\n\t\t\t\tvar then = promise.then\n\t\t\t\t// Set the constructor, so engines know to not await or resolve\n\t\t\t\t// this as a native promise. At the time of writing, this is\n\t\t\t\t// only necessary for V8, but their behavior is the correct\n\t\t\t\t// behavior per spec. See this spec issue for more details:\n\t\t\t\t// https://github.com/tc39/ecma262/issues/1577. Also, see the\n\t\t\t\t// corresponding comment in `request/tests/test-request.js` for\n\t\t\t\t// a bit more background on the issue at hand.\n\t\t\t\tpromise.constructor = PromiseProxy\n\t\t\t\tpromise.then = function() {\n\t\t\t\t\tcount++\n\t\t\t\t\tvar next = then.apply(promise, arguments)\n\t\t\t\t\tnext.then(complete, function(e) {\n\t\t\t\t\t\tcomplete()\n\t\t\t\t\t\tif (count === 0) throw e\n\t\t\t\t\t})\n\t\t\t\t\treturn wrap(next)\n\t\t\t\t}\n\t\t\t\treturn promise\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction hasHeader(args, name) {\n\t\tfor (var key in args.headers) {\n\t\t\tif ({}.hasOwnProperty.call(args.headers, key) && name.test(key)) return true\n\t\t}\n\t\treturn false\n\t}\n\n\treturn {\n\t\trequest: makeRequest(function(url, args, resolve, reject) {\n\t\t\tvar method = args.method != null ? args.method.toUpperCase() : \"GET\"\n\t\t\tvar body = args.body\n\t\t\tvar assumeJSON = (args.serialize == null || args.serialize === JSON.serialize) && !(body instanceof $window.FormData)\n\t\t\tvar responseType = args.responseType || (typeof args.extract === \"function\" ? \"\" : \"json\")\n\n\t\t\tvar xhr = new $window.XMLHttpRequest(), aborted = false\n\t\t\tvar original = xhr, replacedAbort\n\t\t\tvar abort = xhr.abort\n\n\t\t\txhr.abort = function() {\n\t\t\t\taborted = true\n\t\t\t\tabort.call(this)\n\t\t\t}\n\n\t\t\txhr.open(method, url, args.async !== false, typeof args.user === \"string\" ? args.user : undefined, typeof args.password === \"string\" ? args.password : undefined)\n\n\t\t\tif (assumeJSON && body != null && !hasHeader(args, /^content-type$/i)) {\n\t\t\t\txhr.setRequestHeader(\"Content-Type\", \"application/json; charset=utf-8\")\n\t\t\t}\n\t\t\tif (typeof args.deserialize !== \"function\" && !hasHeader(args, /^accept$/i)) {\n\t\t\t\txhr.setRequestHeader(\"Accept\", \"application/json, text/*\")\n\t\t\t}\n\t\t\tif (args.withCredentials) xhr.withCredentials = args.withCredentials\n\t\t\tif (args.timeout) xhr.timeout = args.timeout\n\t\t\txhr.responseType = responseType\n\n\t\t\tfor (var key in args.headers) {\n\t\t\t\tif ({}.hasOwnProperty.call(args.headers, key)) {\n\t\t\t\t\txhr.setRequestHeader(key, args.headers[key])\n\t\t\t\t}\n\t\t\t}\n\n\t\t\txhr.onreadystatechange = function(ev) {\n\t\t\t\t// Don't throw errors on xhr.abort().\n\t\t\t\tif (aborted) return\n\n\t\t\t\tif (ev.target.readyState === 4) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tvar success = (ev.target.status >= 200 && ev.target.status < 300) || ev.target.status === 304 || (/^file:\\/\\//i).test(url)\n\t\t\t\t\t\t// When the response type isn't \"\" or \"text\",\n\t\t\t\t\t\t// `xhr.responseText` is the wrong thing to use.\n\t\t\t\t\t\t// Browsers do the right thing and throw here, and we\n\t\t\t\t\t\t// should honor that and do the right thing by\n\t\t\t\t\t\t// preferring `xhr.response` where possible/practical.\n\t\t\t\t\t\tvar response = ev.target.response, message\n\n\t\t\t\t\t\tif (responseType === \"json\") {\n\t\t\t\t\t\t\t// For IE and Edge, which don't implement\n\t\t\t\t\t\t\t// `responseType: \"json\"`.\n\t\t\t\t\t\t\tif (!ev.target.responseType && typeof args.extract !== \"function\") response = JSON.parse(ev.target.responseText)\n\t\t\t\t\t\t} else if (!responseType || responseType === \"text\") {\n\t\t\t\t\t\t\t// Only use this default if it's text. If a parsed\n\t\t\t\t\t\t\t// document is needed on old IE and friends (all\n\t\t\t\t\t\t\t// unsupported), the user should use a custom\n\t\t\t\t\t\t\t// `config` instead. They're already using this at\n\t\t\t\t\t\t\t// their own risk.\n\t\t\t\t\t\t\tif (response == null) response = ev.target.responseText\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (typeof args.extract === \"function\") {\n\t\t\t\t\t\t\tresponse = args.extract(ev.target, args)\n\t\t\t\t\t\t\tsuccess = true\n\t\t\t\t\t\t} else if (typeof args.deserialize === \"function\") {\n\t\t\t\t\t\t\tresponse = args.deserialize(response)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (success) resolve(response)\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\ttry { message = ev.target.responseText }\n\t\t\t\t\t\t\tcatch (e) { message = response }\n\t\t\t\t\t\t\tvar error = new Error(message)\n\t\t\t\t\t\t\terror.code = ev.target.status\n\t\t\t\t\t\t\terror.response = response\n\t\t\t\t\t\t\treject(error)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcatch (e) {\n\t\t\t\t\t\treject(e)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (typeof args.config === \"function\") {\n\t\t\t\txhr = args.config(xhr, args, url) || xhr\n\n\t\t\t\t// Propagate the `abort` to any replacement XHR as well.\n\t\t\t\tif (xhr !== original) {\n\t\t\t\t\treplacedAbort = xhr.abort\n\t\t\t\t\txhr.abort = function() {\n\t\t\t\t\t\taborted = true\n\t\t\t\t\t\treplacedAbort.call(this)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (body == null) xhr.send()\n\t\t\telse if (typeof args.serialize === \"function\") xhr.send(args.serialize(body))\n\t\t\telse if (body instanceof $window.FormData) xhr.send(body)\n\t\t\telse xhr.send(JSON.stringify(body))\n\t\t}),\n\t\tjsonp: makeRequest(function(url, args, resolve, reject) {\n\t\t\tvar callbackName = args.callbackName || \"_mithril_\" + Math.round(Math.random() * 1e16) + \"_\" + callbackCount++\n\t\t\tvar script = $window.document.createElement(\"script\")\n\t\t\t$window[callbackName] = function(data) {\n\t\t\t\tdelete $window[callbackName]\n\t\t\t\tscript.parentNode.removeChild(script)\n\t\t\t\tresolve(data)\n\t\t\t}\n\t\t\tscript.onerror = function() {\n\t\t\t\tdelete $window[callbackName]\n\t\t\t\tscript.parentNode.removeChild(script)\n\t\t\t\treject(new Error(\"JSONP request failed\"))\n\t\t\t}\n\t\t\tscript.src = url + (url.indexOf(\"?\") < 0 ? \"?\" : \"&\") +\n\t\t\t\tencodeURIComponent(args.callbackKey || \"callback\") + \"=\" +\n\t\t\t\tencodeURIComponent(callbackName)\n\t\t\t$window.document.documentElement.appendChild(script)\n\t\t}),\n\t}\n}\n","\"use strict\"\n\nvar mountRedraw = require(\"./mount-redraw\")\n\nmodule.exports = require(\"./api/router\")(window, mountRedraw)\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","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js!./style.css\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.id, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","\"use strict\";\n\nvar isOldIE = function isOldIE() {\n var memo;\n return function memorize() {\n if (typeof memo === 'undefined') {\n // Test for IE <= 9 as proposed by Browserhacks\n // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n // Tests for existence of standard globals is to allow style-loader\n // to operate correctly into non-standard environments\n // @see https://github.com/webpack-contrib/style-loader/issues/177\n memo = Boolean(window && document && document.all && !window.atob);\n }\n\n return memo;\n };\n}();\n\nvar getTarget = function getTarget() {\n var memo = {};\n return function memorize(target) {\n if (typeof memo[target] === 'undefined') {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n };\n}();\n\nvar stylesInDom = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDom.length; i++) {\n if (stylesInDom[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var index = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3]\n };\n\n if (index !== -1) {\n stylesInDom[index].references++;\n stylesInDom[index].updater(obj);\n } else {\n stylesInDom.push({\n identifier: identifier,\n updater: addStyle(obj, options),\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction insertStyleElement(options) {\n var style = document.createElement('style');\n var attributes = options.attributes || {};\n\n if (typeof attributes.nonce === 'undefined') {\n var nonce = typeof __webpack_nonce__ !== 'undefined' ? __webpack_nonce__ : null;\n\n if (nonce) {\n attributes.nonce = nonce;\n }\n }\n\n Object.keys(attributes).forEach(function (key) {\n style.setAttribute(key, attributes[key]);\n });\n\n if (typeof options.insert === 'function') {\n options.insert(style);\n } else {\n var target = getTarget(options.insert || 'head');\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n }\n\n return style;\n}\n\nfunction removeStyleElement(style) {\n // istanbul ignore if\n if (style.parentNode === null) {\n return false;\n }\n\n style.parentNode.removeChild(style);\n}\n/* istanbul ignore next */\n\n\nvar replaceText = function replaceText() {\n var textStore = [];\n return function replace(index, replacement) {\n textStore[index] = replacement;\n return textStore.filter(Boolean).join('\\n');\n };\n}();\n\nfunction applyToSingletonTag(style, index, remove, obj) {\n var css = remove ? '' : obj.media ? \"@media \".concat(obj.media, \" {\").concat(obj.css, \"}\") : obj.css; // For old IE\n\n /* istanbul ignore if */\n\n if (style.styleSheet) {\n style.styleSheet.cssText = replaceText(index, css);\n } else {\n var cssNode = document.createTextNode(css);\n var childNodes = style.childNodes;\n\n if (childNodes[index]) {\n style.removeChild(childNodes[index]);\n }\n\n if (childNodes.length) {\n style.insertBefore(cssNode, childNodes[index]);\n } else {\n style.appendChild(cssNode);\n }\n }\n}\n\nfunction applyToTag(style, options, obj) {\n var css = obj.css;\n var media = obj.media;\n var sourceMap = obj.sourceMap;\n\n if (media) {\n style.setAttribute('media', media);\n } else {\n style.removeAttribute('media');\n }\n\n if (sourceMap && typeof btoa !== 'undefined') {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n while (style.firstChild) {\n style.removeChild(style.firstChild);\n }\n\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar singleton = null;\nvar singletonCounter = 0;\n\nfunction addStyle(obj, options) {\n var style;\n var update;\n var remove;\n\n if (options.singleton) {\n var styleIndex = singletonCounter++;\n style = singleton || (singleton = insertStyleElement(options));\n update = applyToSingletonTag.bind(null, style, styleIndex, false);\n remove = applyToSingletonTag.bind(null, style, styleIndex, true);\n } else {\n style = insertStyleElement(options);\n update = applyToTag.bind(null, style, options);\n\n remove = function remove() {\n removeStyleElement(style);\n };\n }\n\n update(obj);\n return function updateStyle(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n return;\n }\n\n update(obj = newObj);\n } else {\n remove();\n }\n };\n}\n\nmodule.exports = function (list, options) {\n options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of