{"version":3,"file":"static/js/main.ca34ec64.js","mappings":"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AY,WAAY,UAAY,WAAY,WAAY,WACpF,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WACpF,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WACpF,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WACpF,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WACpF,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WACpF,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WACpF,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WACpF,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WACpF,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WACpF,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WACpF,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WACpF,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WACpF,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,SAAY,WACpF,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WACpF,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WACpF,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WACpF,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WACpF,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WACpF,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WACpF,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WACpF,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,SACpF,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UACpF,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UACpF,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UACpF,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WACpF,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UACpF,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UACpF,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,0BCrBhF,MAAO5T,EA0DX4C,WAAAA,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AAO,CACT,CAEA,SAASnD,GAAOmD,GACdA,EAAQA,EAAQ,EAEhBP,IAEApwB,EAAUA,EAAS,EAAK,EAExB,OAAO,CACT,CAIA,IAAIuwB,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,EACAmD,GACAA,GACAA,GACAA,GAEAlD,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,GACA8C,GACAA,GACAA,GACAA,GAEA5I,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GAEAgG,GAEAC,GAEAC,GAEAC,GACAyC,GACAA,GACAA,GAEAxC,GAEAnG,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GAEAoG,GAEAC,GAEAC,GAEAC,GAEAoC,GACAA,GACAA,GACAnC,GAEAvG,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GAEAwG,GAEAC,GAEAC,GAEAC,GAEA+B,GACAA,GACAA,GACA9B,GAEA3G,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,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AS,EAAK,GAAK,GAG3BA,EAAUA,EAAS,EAAK,EAExB,OAAO,CACT,CAEA,SAASk0B,GAAOvD,GACdA,EAAQA,EAAQ,EAEhB,OAAO,CACT,CAEA,SAASnD,GAAOmD,GACdA,EAAQA,EAAQ,EAEhBP,IAEApwB,EAAUA,EAAS,EAAK,EAExB,OAAO,CACT,CAIA,IAAIuwB,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,EACAmD,GACAA,GACAA,GACAA,GAEAlD,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,GACA8C,GACAA,GACAA,GACAA,GAEA5I,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GAEAgG,GAEAC,GAEAC,GAEAC,GACAyC,GACAA,GACAA,GAEAxC,GAEAnG,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GAEAoG,GAEAC,GAEAC,GAEAC,GAEAoC,GACAA,GACAA,GACAnC,GAEAvG,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GAEAwG,GAEAC,GAEAC,GAEAC,GAEA+B,GACAA,GACAA,GACA9B,GAEA3G,GACAA,GACAA,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AA,GACAA,GACAA,GAEA5I,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GAEAgG,GAEAC,GAEAC,GAEAC,GACAyC,GACAA,GACAA,GAEAxC,GAEAnG,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GAEAoG,GAEAC,GAEAC,GAEAC,GAEAoC,GACAA,GACAA,GACAnC,GAEAvG,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GAEAwG,GAEAC,GAEAC,GAEAC,GAEA+B,GACAA,GACAA,GACA9B,GAEA3G,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GAEA4G,GAEAC,GAEAC,GAEAC,GACA0B,GACAA,GACAA,GAEAzB,GAEAC,GAEAA,GAEAA,GAEAA,GAEAA,GAEAA,GAEAK,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GAEAA,GACAA,GACAA,GAEAI,GACAC,GACAC,GACAC,GACAY,GACAA,GACAA,GACAA,GAEAX,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GAEAC,GAEAC,GAEAC,GAEAC,GAEAC,GAEAC,GAEAG,GAEAC,GACAC,GACAA,GACAA,GAEA1G,IAKF,MAAO,CACL8C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","sources":["../node_modules/@slide-computer/tokens/lib/esm/logos|lazy|/^/.//.*/.js$/|groupOptions: {}|namespace object","../node_modules/@dfinity/agent/src/canisterStatus/index.ts","../node_modules/@dfinity/agent/src/cbor.ts","../node_modules/@dfinity/agent/src/certificate.ts","../node_modules/@dfinity/agent/src/errors.ts","../node_modules/@dfinity/agent/src/request_id.ts","../node_modules/@dfinity/agent/src/vendor/bls/bls.ts","../node_modules/@dfinity/agent/src/vendor/bls/wasm.ts","../node_modules/@dfinity/agent/src/utils/bls.ts","../node_modules/@dfinity/agent/src/utils/buffer.ts","../node_modules/@dfinity/candid/src/utils/buffer.ts","../node_modules/@dfinity/candid/src/utils/hash.ts","../node_modules/@dfinity/candid/src/utils/leb128.ts","../node_modules/@dfinity/candid/src/utils/bigint-math.ts","../node_modules/@dfinity/candid/src/idl.ts","../node_modules/@dfinity/principal/src/utils/base32.ts","../node_modules/@dfinity/principal/src/utils/getCrc.ts","../node_modules/@dfinity/principal/src/index.ts","../node_modules/@dfinity/principal/src/utils/sha224.ts","../node_modules/@slide-computer/identity/node_modules/@dfinity/agent/src/canisterStatus/index.ts","../node_modules/@slide-computer/identity/node_modules/@dfinity/agent/src/cbor.ts","../node_modules/@slide-computer/identity/node_modules/@dfinity/agent/src/certificate.ts","../node_modules/@slide-computer/identity/node_modules/@dfinity/agent/src/errors.ts","../node_modules/@slide-computer/identity/node_modules/@dfinity/agent/src/request_id.ts","../node_modules/@slide-computer/identity/node_modules/@dfinity/agent/src/vendor/bls/bls.ts","../node_modules/@slide-computer/identity/node_modules/@dfinity/agent/src/vendor/bls/wasm.ts","../node_modules/@slide-computer/identity/node_modules/@dfinity/agent/src/utils/bls.ts","../node_modules/@slide-computer/identity/node_modules/@dfinity/agent/src/utils/buffer.ts","../node_modules/@slide-computer/identity/node_modules/@dfinity/candid/src/utils/buffer.ts","../node_modules/@slide-computer/identity/node_modules/@dfinity/candid/src/utils/leb128.ts","../node_modules/@slide-computer/identity/node_modules/@dfinity/candid/src/utils/bigint-math.ts","../node_modules/@slide-computer/identity/node_modules/@dfinity/candid/src/idl.ts","../node_modules/@slide-computer/identity/node_modules/@dfinity/principal/src/utils/base32.ts","../node_modules/@slide-computer/identity/node_modules/@dfinity/principal/src/utils/getCrc.ts","../node_modules/@slide-computer/identity/node_modules/@dfinity/principal/src/index.ts","../node_modules/@slide-computer/identity/node_modules/@dfinity/principal/src/utils/sha224.ts","../node_modules/@slide-computer/identity/node_modules/base64-arraybuffer/lib/base64-arraybuffer.js","../node_modules/@slide-computer/identity/node_modules/base64-js/index.js","../node_modules/@slide-computer/identity/node_modules/bignumber.js/bignumber.js","../node_modules/@slide-computer/identity/node_modules/borc/node_modules/buffer/index.js","../node_modules/@slide-computer/identity/node_modules/borc/src/constants.js","../node_modules/@slide-computer/identity/node_modules/borc/src/decoder.asm.js","../node_modules/@slide-computer/identity/node_modules/borc/src/decoder.js","../node_modules/@slide-computer/identity/node_modules/borc/src/diagnose.js","../node_modules/@slide-computer/identity/node_modules/borc/src/encoder.js","../node_modules/@slide-computer/identity/node_modules/borc/src/index.js","../node_modules/@slide-computer/identity/node_modules/borc/src/simple.js","../node_modules/@slide-computer/identity/node_modules/borc/src/tagged.js","../node_modules/@slide-computer/identity/node_modules/borc/src/utils.js","../node_modules/@slide-computer/identity/node_modules/buffer/index.js","../node_modules/@slide-computer/identity/node_modules/ieee754/index.js","../node_modules/@slide-computer/identity/node_modules/iso-url/index.js","../node_modules/@slide-computer/identity/node_modules/iso-url/src/relative.js","../node_modules/@slide-computer/identity/node_modules/iso-url/src/url-browser.js","../index.ts","../serializer.ts","../value.ts","../node_modules/@slide-computer/identity/node_modules/tweetnacl/nacl-fast.js","../node_modules/@slide-computer/tokens/node_modules/@dfinity/agent/src/canisterStatus/index.ts","../node_modules/@slide-computer/tokens/node_modules/@dfinity/agent/src/cbor.ts","../node_modules/@slide-computer/tokens/node_modules/@dfinity/agent/src/certificate.ts","../node_modules/@slide-computer/tokens/node_modules/@dfinity/agent/src/errors.ts","../node_modules/@slide-computer/tokens/node_modules/@dfinity/agent/src/request_id.ts","../node_modules/@slide-computer/tokens/node_modules/@dfinity/agent/src/vendor/bls/bls.ts","../node_modules/@slide-computer/tokens/node_modules/@dfinity/agent/src/vendor/bls/wasm.ts","../node_modules/@slide-computer/tokens/node_modules/@dfinity/agent/src/utils/bls.ts","../node_modules/@slide-computer/tokens/node_modules/@dfinity/agent/src/utils/buffer.ts","../node_modules/@slide-computer/tokens/node_modules/@dfinity/candid/src/utils/buffer.ts","../node_modules/@slide-computer/tokens/node_modules/@dfinity/candid/src/utils/hash.ts","../node_modules/@slide-computer/tokens/node_modules/@dfinity/candid/src/utils/leb128.ts","../node_modules/@slide-computer/tokens/node_modules/@dfinity/candid/src/utils/bigint-math.ts","../node_modules/@slide-computer/tokens/node_modules/@dfinity/candid/src/idl.ts","../node_modules/@slide-computer/tokens/node_modules/@dfinity/principal/src/utils/base32.ts","../node_modules/@slide-computer/tokens/node_modules/@dfinity/principal/src/utils/getCrc.ts","../node_modules/@slide-computer/tokens/node_modules/@dfinity/principal/src/index.ts","../node_modules/@slide-computer/tokens/node_modules/@dfinity/principal/src/utils/sha224.ts","../node_modules/@slide-computer/tokens/node_modules/base64-arraybuffer/lib/base64-arraybuffer.js","../node_modules/@slide-computer/tokens/node_modules/base64-js/index.js","../node_modules/@slide-computer/tokens/node_modules/bignumber.js/bignumber.js","../node_modules/@slide-computer/tokens/node_modules/borc/node_modules/buffer/index.js","../node_modules/@slide-computer/tokens/node_modules/borc/src/constants.js","../node_modules/@slide-computer/tokens/node_modules/borc/src/decoder.asm.js","../node_modules/@slide-computer/tokens/node_modules/borc/src/decoder.js","../node_modules/@slide-computer/tokens/node_modules/borc/src/diagnose.js","../node_modules/@slide-computer/tokens/node_modules/borc/src/encoder.js","../node_modules/@slide-computer/tokens/node_modules/borc/src/index.js","../node_modules/@slide-computer/tokens/node_modules/borc/src/simple.js","../node_modules/@slide-computer/tokens/node_modules/borc/src/tagged.js","../node_modules/@slide-computer/tokens/node_modules/borc/src/utils.js","../node_modules/@slide-computer/tokens/node_modules/buffer-crc32/index.js","../node_modules/@slide-computer/tokens/node_modules/buffer/index.js","../node_modules/@slide-computer/tokens/node_modules/ieee754/index.js","../node_modules/@slide-computer/tokens/node_modules/iso-url/index.js","../node_modules/@slide-computer/tokens/node_modules/iso-url/src/relative.js","../node_modules/@slide-computer/tokens/node_modules/iso-url/src/url-browser.js","../node_modules/base64-arraybuffer/lib/base64-arraybuffer.js","../node_modules/base64-js/index.js","../node_modules/bignumber.js/bignumber.js","../node_modules/borc/node_modules/buffer/index.js","../node_modules/borc/src/constants.js","../node_modules/borc/src/decoder.asm.js","../node_modules/borc/src/decoder.js","../node_modules/borc/src/diagnose.js","../node_modules/borc/src/encoder.js","../node_modules/borc/src/index.js","../node_modules/borc/src/simple.js","../node_modules/borc/src/tagged.js","../node_modules/borc/src/utils.js","../node_modules/buffer/index.js","../node_modules/ieee754/index.js","../node_modules/iso-url/index.js","../node_modules/iso-url/src/relative.js","../node_modules/iso-url/src/url-browser.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/tweetnacl/nacl-fast.js","../node_modules/@noble/hashes/src/_assert.ts","../node_modules/@noble/hashes/src/utils.ts","../node_modules/@noble/hashes/src/_sha2.ts","../node_modules/@noble/hashes/src/sha256.ts","../node_modules/@slide-computer/identity/node_modules/@noble/hashes/src/_assert.ts","../node_modules/@slide-computer/identity/node_modules/@noble/hashes/src/_sha2.ts","../node_modules/@slide-computer/identity/node_modules/@noble/hashes/src/sha256.ts","../node_modules/@slide-computer/identity/node_modules/@noble/hashes/src/crypto.ts","../node_modules/@slide-computer/identity/node_modules/@noble/hashes/src/utils.ts","../node_modules/@slide-computer/tokens/node_modules/@noble/hashes/src/_assert.ts","../node_modules/@slide-computer/tokens/node_modules/@noble/hashes/src/utils.ts","../node_modules/@slide-computer/tokens/node_modules/@noble/hashes/src/_sha2.ts","../node_modules/@slide-computer/tokens/node_modules/@noble/hashes/src/sha256.ts","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../node_modules/@slide-computer/identity/node_modules/@dfinity/agent/src/agent/api.ts","../node_modules/@slide-computer/identity/node_modules/@dfinity/agent/src/auth.ts","../node_modules/@slide-computer/identity/node_modules/@dfinity/agent/src/utils/random.ts","../node_modules/@slide-computer/identity/node_modules/@dfinity/agent/src/agent/http/types.ts","../node_modules/@slide-computer/identity/node_modules/@dfinity/agent/src/agent/http/transforms.ts","../node_modules/@slide-computer/identity/node_modules/@dfinity/agent/src/agent/http/errors.ts","../node_modules/@slide-computer/identity/node_modules/@dfinity/agent/src/agent/http/index.ts","../node_modules/@slide-computer/identity/node_modules/@dfinity/agent/src/agent/proxy.ts","../node_modules/@slide-computer/identity/node_modules/@dfinity/agent/src/actor.ts","../node_modules/@slide-computer/identity/node_modules/@dfinity/identity/src/identity/der.ts","../node_modules/@slide-computer/identity/node_modules/@dfinity/identity/src/identity/ed25519.ts","../node_modules/@slide-computer/identity/node_modules/@dfinity/identity/src/buffer.ts","../node_modules/@slide-computer/identity/node_modules/@dfinity/identity/src/identity/delegation.ts","../node_modules/@slide-computer/identity/node_modules/@dfinity/identity/src/identity/webauthn.ts","../node_modules/@slide-computer/identity/node_modules/@noble/hashes/src/hmac.ts","../node_modules/@slide-computer/identity/node_modules/@noble/curves/src/abstract/utils.ts","../node_modules/@slide-computer/identity/node_modules/@noble/curves/src/abstract/modular.ts","../node_modules/@slide-computer/identity/node_modules/@noble/curves/src/abstract/curve.ts","../node_modules/@slide-computer/identity/node_modules/@noble/curves/src/abstract/weierstrass.ts","../node_modules/@slide-computer/identity/node_modules/@noble/curves/src/_shortw_utils.ts","../node_modules/@slide-computer/identity/node_modules/@noble/curves/src/p256.ts","../node_modules/@slide-computer/identity/src/signature/p256.ts","../node_modules/@slide-computer/identity/node_modules/@noble/ed25519/index.js","../node_modules/@slide-computer/identity/node_modules/@noble/hashes/src/_u64.ts","../node_modules/@slide-computer/identity/node_modules/@noble/hashes/src/sha512.ts","../node_modules/@slide-computer/identity/src/signature/ed25519.ts","../node_modules/@slide-computer/identity/node_modules/@noble/curves/src/secp256k1.ts","../node_modules/@slide-computer/identity/src/signature/secp256k1.ts","../node_modules/@slide-computer/identity/src/utils/cbor.ts","../node_modules/@slide-computer/identity/src/signature/canister.ts","../node_modules/@slide-computer/identity/src/signature/identity.ts","../node_modules/@slide-computer/identity/src/signature/index.ts","../node_modules/@slide-computer/identity/src/index.ts","../node_modules/@slide-computer/tokens/node_modules/@dfinity/agent/src/agent/api.ts","../node_modules/@slide-computer/tokens/node_modules/@dfinity/agent/src/auth.ts","../node_modules/@slide-computer/tokens/node_modules/@dfinity/agent/src/utils/random.ts","../node_modules/@slide-computer/tokens/node_modules/@dfinity/agent/src/agent/http/types.ts","../node_modules/@slide-computer/tokens/node_modules/@dfinity/agent/src/agent/http/transforms.ts","../node_modules/@slide-computer/tokens/node_modules/@dfinity/agent/src/agent/http/errors.ts","../node_modules/@slide-computer/tokens/node_modules/@dfinity/agent/src/agent/http/index.ts","../node_modules/@slide-computer/tokens/node_modules/@dfinity/agent/src/agent/proxy.ts","../node_modules/@slide-computer/tokens/node_modules/@dfinity/agent/src/agent/index.ts","../node_modules/@slide-computer/tokens/node_modules/@dfinity/agent/src/polling/index.ts","../node_modules/@slide-computer/tokens/node_modules/@dfinity/agent/src/canisters/management_idl.ts","../node_modules/@slide-computer/tokens/node_modules/@dfinity/agent/src/actor.ts","../node_modules/@slide-computer/tokens/node_modules/@dfinity/agent/src/polling/strategy.ts","../node_modules/@slide-computer/tokens/src/utils.ts","../node_modules/@slide-computer/tokens/src/tokens/icp/icp.did.js","../node_modules/@slide-computer/tokens/src/tokens/token.ts","../node_modules/@slide-computer/tokens/src/tokens/icpToken.ts","../node_modules/@slide-computer/tokens/src/tokens/ext/ext.did.js","../node_modules/@slide-computer/tokens/src/tokens/extToken.ts","../node_modules/@slide-computer/tokens/src/tokens/dip721V2/dip721V2.did.js","../node_modules/@slide-computer/tokens/src/tokens/dip721V2Token.ts","../node_modules/@slide-computer/tokens/src/tokens/dip721V2Beta/dip721V2Beta.did.js","../node_modules/@slide-computer/tokens/src/tokens/dip721V2BetaToken.ts","../node_modules/@slide-computer/tokens/src/tokens/dip721Legacy/dip721Legacy.did.js","../node_modules/@slide-computer/tokens/src/tokens/dip721LegacyToken.ts","../node_modules/@slide-computer/tokens/src/tokens/icrc1/icrc1.did.js","../node_modules/@slide-computer/tokens/src/tokens/icrc1Token.ts","../node_modules/@slide-computer/tokens/src/tokens/dip20/dip20.did.js","../node_modules/@slide-computer/tokens/src/tokens/dip20Token.ts","../node_modules/@slide-computer/tokens/src/index.ts","../node_modules/@dfinity/agent/src/agent/api.ts","../node_modules/@dfinity/agent/src/auth.ts","../node_modules/@dfinity/agent/src/utils/random.ts","../node_modules/@dfinity/agent/src/agent/http/types.ts","../node_modules/@dfinity/agent/src/agent/http/transforms.ts","../node_modules/@dfinity/agent/src/agent/http/errors.ts","../node_modules/@dfinity/agent/src/agent/http/index.ts","../node_modules/@dfinity/agent/src/agent/proxy.ts","../node_modules/@dfinity/agent/src/agent/index.ts","../node_modules/@dfinity/agent/src/polling/index.ts","../node_modules/@dfinity/agent/src/canisters/management_idl.ts","../node_modules/@dfinity/agent/src/actor.ts","../node_modules/@dfinity/agent/src/polling/strategy.ts","../node_modules/@dfinity/identity/src/buffer.ts","../node_modules/@dfinity/identity/src/identity/der.ts","../node_modules/@dfinity/identity/src/identity/ed25519.ts","../node_modules/@dfinity/identity/src/identity/delegation.ts","../node_modules/@dfinity/identity/src/identity/webauthn.ts","App.tsx","../node_modules/@slide-computer/identity/src/transport/mixedTransport.ts","../node_modules/@slide-computer/identity/src/transport/postMessageTransport.ts","../node_modules/@slide-computer/identity/src/transport/linkTransport.ts","reportWebVitals.ts","index.tsx"],"sourcesContent":["var map = {\n\t\"./2ouva-viaaa-aaaaq-aaamq-cai.js\": [\n\t\t8565,\n\t\t565\n\t],\n\t\"./6rdgd-kyaaa-aaaaq-aaavq-cai.js\": [\n\t\t9864,\n\t\t864\n\t],\n\t\"./73mez-iiaaa-aaaaq-aaasq-cai.js\": [\n\t\t4586,\n\t\t586\n\t],\n\t\"./ryjl3-tyaaa-aaaaa-aaaba-cai.js\": [\n\t\t8854,\n\t\t854\n\t],\n\t\"./zfcdd-tqaaa-aaaaq-aaaga-cai.js\": [\n\t\t6547,\n\t\t547\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(() => {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(() => {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = () => (Object.keys(map));\nwebpackAsyncContext.id = 8090;\nmodule.exports = webpackAsyncContext;","/** @module CanisterStatus */\n\nimport { lebDecode, PipeArrayBuffer } from '@dfinity/candid';\nimport { Principal } from '@dfinity/principal';\nimport { AgentError } from '../errors';\nimport { HttpAgent } from '../agent/http';\nimport { Certificate, CreateCertificateOptions } from '../certificate';\nimport { toHex } from '../utils/buffer';\nimport * as Cbor from '../cbor';\n\n/**\n * Types of an entry on the canisterStatus map.\n * An entry of null indicates that the request failed, due to lack of permissions or the result being missing.\n */\nexport type Status = string | ArrayBuffer | Date | ArrayBuffer[] | Principal[] | bigint | null;\n\n/**\n * Interface to define a custom path. Nested paths will be represented as individual buffers, and can be created from text using {@link TextEncoder}\n */\nexport interface CustomPath {\n key: string;\n path: ArrayBuffer[] | string;\n decodeStrategy: 'cbor' | 'hex' | 'leb128' | 'utf-8' | 'raw';\n}\n\n/**\n * Interface to request metadata from the icp:public or icp:private sections.\n * Similar to {@link CustomPath}, but accepts a simple string argument.\n * Private metadata will require the ${@link Identity} used by the ${@link HttpAgent} will need to be requested using an identity that controlls the canister.\n */\nexport interface MetaData {\n kind: 'metadata';\n key: string;\n path: string | ArrayBuffer;\n decodeStrategy: 'cbor' | 'hex' | 'leb128' | 'utf-8' | 'raw';\n}\n\n/**\n * Pre-configured fields for canister status paths\n */\nexport type Path =\n | 'time'\n | 'controllers'\n | 'subnet'\n | 'module_hash'\n | 'candid'\n | MetaData\n | CustomPath;\n\nexport type StatusMap = Map;\n\nexport type CanisterStatusOptions = {\n canisterId: Principal;\n agent: HttpAgent;\n paths?: Path[] | Set;\n blsVerify?: CreateCertificateOptions['blsVerify'];\n};\n\n/**\n *\n * @param {CanisterStatusOptions} options {@link CanisterStatusOptions}\n * @param {CanisterStatusOptions['canisterId']} options.canisterId {@link Principal}\n * @param {CanisterStatusOptions['agent']} options.agent {@link HttpAgent} optional authenticated agent to use to make the canister request. Useful for accessing private metadata under icp:private\n * @param {CanisterStatusOptions['paths']} options.paths {@link Path[]}\n * @returns {Status} object populated with data from the requested paths\n * @example\n * const status = await canisterStatus({\n * paths: ['controllers', 'candid'],\n * ...options\n * });\n *\n * const controllers = status.get('controllers');\n */\nexport const request = async (options: {\n canisterId: Principal;\n agent: HttpAgent;\n paths?: Path[] | Set;\n}): Promise => {\n const { canisterId, agent, paths } = options;\n\n const uniquePaths = [...new Set(paths)];\n\n // Map path options to their correct formats\n const encodedPaths = uniquePaths.map(path => {\n return encodePath(path, canisterId);\n });\n const status = new Map();\n\n const promises = uniquePaths.map((path, index) => {\n return (async () => {\n try {\n const response = await agent.readState(canisterId, {\n paths: [encodedPaths[index]],\n });\n const cert = await Certificate.create({\n certificate: response.certificate,\n rootKey: agent.rootKey,\n canisterId: canisterId,\n });\n\n const data = cert.lookup(encodePath(uniquePaths[index], canisterId));\n if (!data) {\n // Typically, the cert lookup will throw\n console.warn(`Expected to find result for path ${path}, but instead found nothing.`);\n if (typeof path === 'string') {\n status.set(path, null);\n } else {\n status.set(path.key, null);\n }\n } else {\n switch (path) {\n case 'time': {\n status.set(path, decodeTime(data));\n break;\n }\n case 'controllers': {\n status.set(path, decodeControllers(data));\n break;\n }\n case 'module_hash': {\n status.set(path, decodeHex(data));\n break;\n }\n case 'candid': {\n status.set(path, new TextDecoder().decode(data));\n break;\n }\n default: {\n // Check for CustomPath signature\n if (typeof path !== 'string' && 'key' in path && 'path' in path) {\n switch (path.decodeStrategy) {\n case 'raw':\n status.set(path.key, data);\n break;\n case 'leb128': {\n status.set(path.key, decodeLeb128(data));\n break;\n }\n case 'cbor': {\n status.set(path.key, decodeCbor(data));\n break;\n }\n case 'hex': {\n status.set(path.key, decodeHex(data));\n break;\n }\n case 'utf-8': {\n status.set(path.key, decodeUtf8(data));\n }\n }\n }\n }\n }\n }\n } catch (error) {\n // Break on signature verification errors\n if ((error as AgentError)?.message?.includes('Invalid certificate')) {\n throw new AgentError((error as AgentError).message);\n }\n if (typeof path !== 'string' && 'key' in path && 'path' in path) {\n status.set(path.key, null);\n } else {\n status.set(path, null);\n }\n console.group();\n console.warn(`Expected to find result for path ${path}, but instead found nothing.`);\n console.warn(error);\n console.groupEnd();\n }\n })();\n });\n\n // Fetch all values separately, as each option can fail\n await Promise.all(promises);\n\n return status;\n};\n\nexport const encodePath = (path: Path, canisterId: Principal): ArrayBuffer[] => {\n const encoder = new TextEncoder();\n\n const encode = (arg: string): ArrayBuffer => {\n return new DataView(encoder.encode(arg).buffer).buffer;\n };\n const canisterBuffer = new DataView(canisterId.toUint8Array().buffer).buffer;\n switch (path) {\n case 'time':\n return [encode('time')];\n case 'controllers':\n return [encode('canister'), canisterBuffer, encode('controllers')];\n case 'module_hash':\n return [encode('canister'), canisterBuffer, encode('module_hash')];\n case 'subnet':\n return [encode('subnet')];\n case 'candid':\n return [encode('canister'), canisterBuffer, encode('metadata'), encode('candid:service')];\n default: {\n // Check for CustomPath signature\n if ('key' in path && 'path' in path) {\n // For simplified metadata queries\n if (typeof path['path'] === 'string' || path['path'] instanceof ArrayBuffer) {\n const metaPath = path.path;\n const encoded = typeof metaPath === 'string' ? encode(metaPath) : metaPath;\n\n return [encode('canister'), canisterBuffer, encode('metadata'), encoded];\n\n // For non-metadata, return the provided custompath\n } else {\n return path['path'];\n }\n }\n }\n }\n throw new Error(\n `An unexpeected error was encountered while encoding your path for canister status. Please ensure that your path, ${path} was formatted correctly.`,\n );\n};\n\nconst decodeHex = (buf: ArrayBuffer): string => {\n return toHex(buf);\n};\n\nconst decodeLeb128 = (buf: ArrayBuffer): bigint => {\n return lebDecode(new PipeArrayBuffer(buf));\n};\n\nconst decodeCbor = (buf: ArrayBuffer): ArrayBuffer[] => {\n return Cbor.decode(buf);\n};\n\nconst decodeUtf8 = (buf: ArrayBuffer): string => {\n return new TextDecoder().decode(buf);\n};\n\n// time is a LEB128-encoded Nat\nconst decodeTime = (buf: ArrayBuffer): Date => {\n const decoded = decodeLeb128(buf);\n return new Date(Number(decoded / BigInt(1_000_000)));\n};\n\n// Controllers are CBOR-encoded buffers, starting with a Tag we don't need\nconst decodeControllers = (buf: ArrayBuffer): Principal[] => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [tag, ...controllersRaw] = decodeCbor(buf);\n return controllersRaw.map((buf: ArrayBuffer) => {\n return Principal.fromUint8Array(new Uint8Array(buf));\n });\n};\n","// tslint:disable:max-classes-per-file\n// This file is based on:\n// tslint:disable-next-line: max-line-length\n// https://github.com/dfinity-lab/dfinity/blob/9bca65f8edd65701ea6bdb00e0752f9186bbc893/docs/spec/public/index.adoc#cbor-encoding-of-requests-and-responses\nimport borc from 'borc';\nimport * as cbor from 'simple-cbor';\nimport { CborEncoder, SelfDescribeCborSerializer } from 'simple-cbor';\nimport { Principal } from '@dfinity/principal';\nimport { concat, fromHex } from './utils/buffer';\n\n// We are using hansl/simple-cbor for CBOR serialization, to avoid issues with\n// encoding the uint64 values that the HTTP handler of the client expects for\n// canister IDs. However, simple-cbor does not yet provide deserialization so\n// we are using `Uint8Array` so that we can use the dignifiedquire/borc CBOR\n// decoder.\n\nclass PrincipalEncoder implements CborEncoder {\n public get name() {\n return 'Principal';\n }\n\n public get priority() {\n return 0;\n }\n\n public match(value: any): boolean {\n return value && value._isPrincipal === true;\n }\n\n public encode(v: Principal): cbor.CborValue {\n return cbor.value.bytes(v.toUint8Array());\n }\n}\n\nclass BufferEncoder implements CborEncoder {\n public get name() {\n return 'Buffer';\n }\n\n public get priority() {\n return 1;\n }\n\n public match(value: any): boolean {\n return value instanceof ArrayBuffer || ArrayBuffer.isView(value);\n }\n\n public encode(v: ArrayBuffer): cbor.CborValue {\n return cbor.value.bytes(new Uint8Array(v));\n }\n}\n\nclass BigIntEncoder implements CborEncoder {\n public get name() {\n return 'BigInt';\n }\n\n public get priority() {\n return 1;\n }\n\n public match(value: any): boolean {\n return typeof value === `bigint`;\n }\n\n public encode(v: bigint): cbor.CborValue {\n // Always use a bigint encoding.\n if (v > BigInt(0)) {\n return cbor.value.tagged(2, cbor.value.bytes(fromHex(v.toString(16))));\n } else {\n return cbor.value.tagged(3, cbor.value.bytes(fromHex((BigInt('-1') * v).toString(16))));\n }\n }\n}\n\nconst serializer = SelfDescribeCborSerializer.withDefaultEncoders(true);\nserializer.addEncoder(new PrincipalEncoder());\nserializer.addEncoder(new BufferEncoder());\nserializer.addEncoder(new BigIntEncoder());\n\nexport enum CborTag {\n Uint64LittleEndian = 71,\n Semantic = 55799,\n}\n\n/**\n * Encode a JavaScript value into CBOR.\n */\nexport function encode(value: any): ArrayBuffer {\n return serializer.serialize(value);\n}\n\nfunction decodePositiveBigInt(buf: Uint8Array): bigint {\n const len = buf.byteLength;\n let res = BigInt(0);\n for (let i = 0; i < len; i++) {\n // tslint:disable-next-line:no-bitwise\n res = res * BigInt(0x100) + BigInt(buf[i]);\n }\n\n return res;\n}\n\n// A BORC subclass that decodes byte strings to ArrayBuffer instead of the Buffer class.\nclass Uint8ArrayDecoder extends borc.Decoder {\n public createByteString(raw: ArrayBuffer[]): ArrayBuffer {\n return concat(...raw);\n }\n\n public createByteStringFromHeap(start: number, end: number): ArrayBuffer {\n if (start === end) {\n return new ArrayBuffer(0);\n }\n\n return new Uint8Array((this as any)._heap.slice(start, end));\n }\n}\n\nexport function decode(input: ArrayBuffer): T {\n const buffer = new Uint8Array(input);\n const decoder = new Uint8ArrayDecoder({\n size: buffer.byteLength,\n tags: {\n // Override tags 2 and 3 for BigInt support (borc supports only BigNumber).\n 2: val => decodePositiveBigInt(val),\n 3: val => -decodePositiveBigInt(val),\n [CborTag.Semantic]: (value: T): T => value,\n },\n });\n\n return decoder.decodeFirst(buffer);\n}\n","import * as cbor from './cbor';\nimport { AgentError } from './errors';\nimport { hash } from './request_id';\nimport { concat, fromHex, toHex } from './utils/buffer';\nimport { Principal } from '@dfinity/principal';\nimport * as bls from './utils/bls';\n\n/**\n * A certificate may fail verification with respect to the provided public key\n */\nexport class CertificateVerificationError extends AgentError {\n constructor(reason: string) {\n super(`Invalid certificate: ${reason}`);\n }\n}\n\ninterface Cert {\n tree: HashTree;\n signature: ArrayBuffer;\n delegation?: Delegation;\n}\n\nconst enum NodeId {\n Empty = 0,\n Fork = 1,\n Labeled = 2,\n Leaf = 3,\n Pruned = 4,\n}\n\nexport type HashTree =\n | [NodeId.Empty]\n | [NodeId.Fork, HashTree, HashTree]\n | [NodeId.Labeled, ArrayBuffer, HashTree]\n | [NodeId.Leaf, ArrayBuffer]\n | [NodeId.Pruned, ArrayBuffer];\n\n/**\n * Make a human readable string out of a hash tree.\n * @param tree\n */\nexport function hashTreeToString(tree: HashTree): string {\n const indent = (s: string) =>\n s\n .split('\\n')\n .map(x => ' ' + x)\n .join('\\n');\n function labelToString(label: ArrayBuffer): string {\n const decoder = new TextDecoder(undefined, { fatal: true });\n try {\n return JSON.stringify(decoder.decode(label));\n } catch (e) {\n return `data(...${label.byteLength} bytes)`;\n }\n }\n\n switch (tree[0]) {\n case NodeId.Empty:\n return '()';\n case NodeId.Fork: {\n const left = hashTreeToString(tree[1]);\n const right = hashTreeToString(tree[2]);\n return `sub(\\n left:\\n${indent(left)}\\n---\\n right:\\n${indent(right)}\\n)`;\n }\n case NodeId.Labeled: {\n const label = labelToString(tree[1]);\n const sub = hashTreeToString(tree[2]);\n return `label(\\n label:\\n${indent(label)}\\n sub:\\n${indent(sub)}\\n)`;\n }\n case NodeId.Leaf: {\n return `leaf(...${tree[1].byteLength} bytes)`;\n }\n case NodeId.Pruned: {\n return `pruned(${toHex(new Uint8Array(tree[1]))}`;\n }\n default: {\n return `unknown(${JSON.stringify(tree[0])})`;\n }\n }\n}\n\ninterface Delegation extends Record {\n subnet_id: ArrayBuffer;\n certificate: ArrayBuffer;\n}\n\nfunction isBufferEqual(a: ArrayBuffer, b: ArrayBuffer): boolean {\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n const a8 = new Uint8Array(a);\n const b8 = new Uint8Array(b);\n for (let i = 0; i < a8.length; i++) {\n if (a8[i] !== b8[i]) {\n return false;\n }\n }\n return true;\n}\n\ntype VerifyFunc = (pk: Uint8Array, sig: Uint8Array, msg: Uint8Array) => Promise;\n\nexport interface CreateCertificateOptions {\n /**\n * The bytes encoding the certificate to be verified\n */\n certificate: ArrayBuffer;\n /**\n * The root key against which to verify the certificate\n * (normally, the root key of the IC main network)\n */\n rootKey: ArrayBuffer;\n /**\n * The effective canister ID of the request when verifying a response, or\n * the signing canister ID when verifying a certified variable.\n */\n canisterId: Principal;\n /**\n * BLS Verification strategy. Default strategy uses wasm for performance, but that may not be available in all contexts.\n */\n blsVerify?: VerifyFunc;\n}\n\nexport class Certificate {\n private readonly cert: Cert;\n\n /**\n * Create a new instance of a certificate, automatically verifying it. Throws a\n * CertificateVerificationError if the certificate cannot be verified.\n * @constructs {@link AuthClient}\n * @param {CreateCertificateOptions} options\n * @see {@link CreateCertificateOptions}\n * @param {ArrayBuffer} options.certificate The bytes of the certificate\n * @param {ArrayBuffer} options.rootKey The root key to verify against\n * @param {Principal} options.canisterId The effective or signing canister ID\n * @throws {CertificateVerificationError}\n */\n public static async create(options: CreateCertificateOptions): Promise {\n let blsVerify = options.blsVerify;\n if (!blsVerify) {\n blsVerify = bls.blsVerify;\n }\n const cert = new Certificate(\n options.certificate,\n options.rootKey,\n options.canisterId,\n blsVerify,\n );\n await cert.verify();\n return cert;\n }\n\n private constructor(\n certificate: ArrayBuffer,\n private _rootKey: ArrayBuffer,\n private _canisterId: Principal,\n private _blsVerify: VerifyFunc,\n ) {\n this.cert = cbor.decode(new Uint8Array(certificate));\n }\n\n public lookup(path: Array): ArrayBuffer | undefined {\n return lookup_path(path, this.cert.tree);\n }\n\n private async verify(): Promise {\n const rootHash = await reconstruct(this.cert.tree);\n const derKey = await this._checkDelegationAndGetKey(this.cert.delegation);\n const sig = this.cert.signature;\n const key = extractDER(derKey);\n const msg = concat(domain_sep('ic-state-root'), rootHash);\n let sigVer = false;\n try {\n sigVer = await this._blsVerify(new Uint8Array(key), new Uint8Array(sig), new Uint8Array(msg));\n } catch (err) {\n sigVer = false;\n }\n if (!sigVer) {\n throw new CertificateVerificationError('Signature verification failed');\n }\n }\n\n private async _checkDelegationAndGetKey(d?: Delegation): Promise {\n if (!d) {\n return this._rootKey;\n }\n const cert: Certificate = await Certificate.create({\n certificate: d.certificate,\n rootKey: this._rootKey,\n canisterId: this._canisterId,\n });\n\n const rangeLookup = cert.lookup(['subnet', d.subnet_id, 'canister_ranges']);\n if (!rangeLookup) {\n throw new CertificateVerificationError(\n `Could not find canister ranges for subnet 0x${toHex(d.subnet_id)}`,\n );\n }\n const ranges_arr: Array<[Uint8Array, Uint8Array]> = cbor.decode(rangeLookup);\n const ranges: Array<[Principal, Principal]> = ranges_arr.map(v => [\n Principal.fromUint8Array(v[0]),\n Principal.fromUint8Array(v[1]),\n ]);\n\n const canisterInRange = ranges.some(\n r => r[0].ltEq(this._canisterId) && r[1].gtEq(this._canisterId),\n );\n if (!canisterInRange) {\n throw new CertificateVerificationError(\n `Canister ${this._canisterId} not in range of delegations for subnet 0x${toHex(\n d.subnet_id,\n )}`,\n );\n }\n const publicKeyLookup = cert.lookup(['subnet', d.subnet_id, 'public_key']);\n if (!publicKeyLookup) {\n throw new Error(`Could not find subnet key for subnet 0x${toHex(d.subnet_id)}`);\n }\n return publicKeyLookup;\n }\n}\n\nconst DER_PREFIX = fromHex(\n '308182301d060d2b0601040182dc7c0503010201060c2b0601040182dc7c05030201036100',\n);\nconst KEY_LENGTH = 96;\n\nfunction extractDER(buf: ArrayBuffer): ArrayBuffer {\n const expectedLength = DER_PREFIX.byteLength + KEY_LENGTH;\n if (buf.byteLength !== expectedLength) {\n throw new TypeError(`BLS DER-encoded public key must be ${expectedLength} bytes long`);\n }\n const prefix = buf.slice(0, DER_PREFIX.byteLength);\n if (!isBufferEqual(prefix, DER_PREFIX)) {\n throw new TypeError(\n `BLS DER-encoded public key is invalid. Expect the following prefix: ${DER_PREFIX}, but get ${prefix}`,\n );\n }\n\n return buf.slice(DER_PREFIX.byteLength);\n}\n\n/**\n * @param t\n */\nexport async function reconstruct(t: HashTree): Promise {\n switch (t[0]) {\n case NodeId.Empty:\n return hash(domain_sep('ic-hashtree-empty'));\n case NodeId.Pruned:\n return t[1] as ArrayBuffer;\n case NodeId.Leaf:\n return hash(concat(domain_sep('ic-hashtree-leaf'), t[1] as ArrayBuffer));\n case NodeId.Labeled:\n return hash(\n concat(\n domain_sep('ic-hashtree-labeled'),\n t[1] as ArrayBuffer,\n await reconstruct(t[2] as HashTree),\n ),\n );\n case NodeId.Fork:\n return hash(\n concat(\n domain_sep('ic-hashtree-fork'),\n await reconstruct(t[1] as HashTree),\n await reconstruct(t[2] as HashTree),\n ),\n );\n default:\n throw new Error('unreachable');\n }\n}\n\nfunction domain_sep(s: string): ArrayBuffer {\n const len = new Uint8Array([s.length]);\n const str = new TextEncoder().encode(s);\n return concat(len, str);\n}\n\n/**\n * @param path\n * @param tree\n */\nexport function lookup_path(\n path: Array,\n tree: HashTree,\n): ArrayBuffer | undefined {\n if (path.length === 0) {\n switch (tree[0]) {\n case NodeId.Leaf: {\n return new Uint8Array(tree[1]).buffer;\n }\n default: {\n return undefined;\n }\n }\n }\n\n const label = typeof path[0] === 'string' ? new TextEncoder().encode(path[0]) : path[0];\n const t = find_label(label, flatten_forks(tree));\n if (t) {\n return lookup_path(path.slice(1), t);\n }\n}\nfunction flatten_forks(t: HashTree): HashTree[] {\n switch (t[0]) {\n case NodeId.Empty:\n return [];\n case NodeId.Fork:\n return flatten_forks(t[1] as HashTree).concat(flatten_forks(t[2] as HashTree));\n default:\n return [t];\n }\n}\nfunction find_label(l: ArrayBuffer, trees: HashTree[]): HashTree | undefined {\n if (trees.length === 0) {\n return undefined;\n }\n for (const t of trees) {\n if (t[0] === NodeId.Labeled) {\n const p = t[1] as ArrayBuffer;\n if (isBufferEqual(l, p)) {\n return t[2];\n }\n }\n }\n}\n","/**\n * An error that happens in the Agent. This is the root of all errors and should be used\n * everywhere in the Agent code (this package).\n *\n * @todo https://github.com/dfinity/agent-js/issues/420\n */\nexport class AgentError extends Error {\n constructor(public readonly message: string) {\n super(message);\n Object.setPrototypeOf(this, AgentError.prototype);\n }\n}\n","import { lebEncode } from '@dfinity/candid';\nimport { Principal } from '@dfinity/principal';\nimport borc from 'borc';\nimport { sha256 } from '@noble/hashes/sha256';\nimport { compare, concat, uint8ToBuf } from './utils/buffer';\n\nexport type RequestId = ArrayBuffer & { __requestId__: void };\n\n/**\n * sha256 hash the provided Buffer\n * @param data - input to hash function\n */\nexport function hash(data: ArrayBuffer): ArrayBuffer {\n return uint8ToBuf(sha256.create().update(new Uint8Array(data)).digest());\n}\n\ninterface ToHashable {\n toHash(): unknown;\n}\n\n/**\n *\n * @param value unknown value\n * @returns ArrayBuffer\n */\nexport function hashValue(value: unknown): ArrayBuffer {\n if (value instanceof borc.Tagged) {\n return hashValue(value.value);\n } else if (typeof value === 'string') {\n return hashString(value);\n } else if (typeof value === 'number') {\n return hash(lebEncode(value));\n } else if (value instanceof ArrayBuffer || ArrayBuffer.isView(value)) {\n return hash(value as ArrayBuffer);\n } else if (Array.isArray(value)) {\n const vals = value.map(hashValue);\n return hash(concat(...vals));\n } else if (value && typeof value === 'object' && (value as any)._isPrincipal) {\n return hash((value as Principal).toUint8Array());\n } else if (\n typeof value === 'object' &&\n value !== null &&\n typeof (value as ToHashable).toHash === 'function'\n ) {\n return hashValue((value as ToHashable).toHash());\n // TODO This should be move to a specific async method as the webauthn flow required\n // the flow to be synchronous to ensure Safari touch id works.\n // } else if (value instanceof Promise) {\n // return value.then(x => hashValue(x));\n } else if (typeof value === 'bigint') {\n // Do this check much later than the other bigint check because this one is much less\n // type-safe.\n // So we want to try all the high-assurance type guards before this 'probable' one.\n return hash(lebEncode(value));\n }\n throw Object.assign(new Error(`Attempt to hash a value of unsupported type: ${value}`), {\n // include so logs/callers can understand the confusing value.\n // (when stringified in error message, prototype info is lost)\n value,\n });\n}\n\nconst hashString = (value: string): ArrayBuffer => {\n const encoded = new TextEncoder().encode(value);\n return hash(encoded);\n};\n\n/**\n * Get the RequestId of the provided ic-ref request.\n * RequestId is the result of the representation-independent-hash function.\n * https://sdk.dfinity.org/docs/interface-spec/index.html#hash-of-map\n * @param request - ic-ref request to hash into RequestId\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function requestIdOf(request: Record): RequestId {\n const hashed: Array<[ArrayBuffer, ArrayBuffer]> = Object.entries(request)\n .filter(([, value]) => value !== undefined)\n .map(([key, value]: [string, unknown]) => {\n const hashedKey = hashString(key);\n const hashedValue = hashValue(value);\n\n return [hashedKey, hashedValue] as [ArrayBuffer, ArrayBuffer];\n });\n\n const traversed: Array<[ArrayBuffer, ArrayBuffer]> = hashed;\n\n const sorted: Array<[ArrayBuffer, ArrayBuffer]> = traversed.sort(([k1], [k2]) => {\n return compare(k1, k2);\n });\n\n const concatenated: ArrayBuffer = concat(...sorted.map(x => concat(...x)));\n const requestId = hash(concatenated) as RequestId;\n return requestId;\n}\n","import * as base64Arraybuffer from 'base64-arraybuffer';\n\n// This WASM is generated from the miracl BLS Rust code (see\n// https://github.com/dfinity/miracl_core_bls12381/)\nimport { wasmBytesBase64 } from './wasm';\n\n/* tslint:disable */\n/* eslint-disable */\nlet wasm: InitOutput;\n\nconst wasmBytes = base64Arraybuffer.decode(wasmBytesBase64);\n\n/**\n * @returns {number}\n */\nexport function bls_init() {\n let ret = wasm.bls_init();\n return ret;\n}\n\nlet cachegetUint8Memory0: any = null;\nfunction getUint8Memory0() {\n if (cachegetUint8Memory0 === null || cachegetUint8Memory0.buffer !== wasm.memory.buffer) {\n cachegetUint8Memory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachegetUint8Memory0;\n}\n\nfunction passArray8ToWasm0(arg: any, malloc: any): [number, number] {\n const ptr = malloc(arg.length * 1);\n getUint8Memory0().set(arg, ptr / 1);\n return [ptr, arg.length];\n}\n\n/**\n * @param {Uint8Array} sig\n * @param {Uint8Array} m\n * @param {Uint8Array} w\n * @returns {number}\n */\nexport function bls_verify(sig: Uint8Array, m: Uint8Array, w: Uint8Array): number {\n const [ptr0, len0] = passArray8ToWasm0(sig, wasm.__wbindgen_malloc);\n const [ptr1, len1] = passArray8ToWasm0(m, wasm.__wbindgen_malloc);\n const [ptr2, len2] = passArray8ToWasm0(w, wasm.__wbindgen_malloc);\n\n const ret = wasm.bls_verify(ptr0, len0, ptr1, len1, ptr2, len2);\n return ret;\n}\n\nasync function load(module: any, imports: any) {\n if (typeof Response === 'function' && module instanceof Response) {\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n } else {\n return instance;\n }\n }\n}\n\nasync function init(): Promise {\n const imports = {};\n const { instance, module } = await load(wasmBytes, imports);\n\n wasm = instance.exports as any as InitOutput;\n (init as any).__wbindgen_wasm_module = module;\n\n return wasm;\n}\n\nexport type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module;\n\nexport interface InitOutput {\n readonly memory: WebAssembly.Memory;\n readonly bls_init: () => number;\n readonly bls_verify: (a: number, b: number, c: number, d: number, e: number, f: number) => number;\n readonly __wbindgen_malloc: (a: number) => number;\n}\n\n/**\n * If `module_or_path` is {RequestInfo} or {URL}, makes a request and\n * for everything else, calls `WebAssembly.instantiate` directly.\n *\n * @param {InitInput | Promise} module_or_path\n *\n * @returns {Promise}\n */\nexport default init;\n","export const wasmBytesBase64 = `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akE4ENABGiACQbgDakEBNgIAIAJBwANqQTgQ0AEaIAJB+ANqQQE2AgAgAkGABGpBOBDQARogAkEBNgK4BCACQcAEakE4ENABGiACQfgEakEBNgIAIAJBgAVqQTgQ0AEaIAJBuAVqQQE2AgAgAkHABWpBOBDQARogAkH4BWpBATYCACACQYAGakE4ENABGiACQQE2ArgGIAJBwAZqQTgQ0AEaIAJB+AZqQQE2AgAgAkGAB2pBOBDQARogAkG4B2pBATYCACACQcAHakE4ENABGiACQfgHakEBNgIAIAIgARAYAkAgASgCgAZBBEYNACAAKAKABkEERg0AIAJBgARqIgMgAEGAAmoQlgEgAyABQYACahAYDAYLIAJBwAxqIgdBOBDQARogAkEBNgL4DCACQYANakE4ENABGiACQbgNakEBNgIAIAJBgAhqIgRBOBDQARogAkEBNgK4CCACQcAIakE4ENABGiACQfgIakEBNgIAIAJBgApqIgMgAEGAA2oiBRBeIAQgAxCZASADIAFBgANqIgYQXiAEIAMQESAHELYBIAEoAoAGQQRHDQMMBAsgACABEAMMBgsgAkHADGoiAyABQYAFahBeIAJBgAxqIgQgA0HAABDRARogAkGABmogBBCnAQsgAkGABmoQZCACQYAIaiIDIAIQlgEgAxArIAJBgAJqIgQgAxCXASAGIAQQlgEgAkGABGoiByADEJYBIAMgABCWASADIAUQlwEgAxCwASACQYAKaiIEIAEQlgEgBCABQYAEahCXASAEELABIAMgBBAYIAcgAxCXASADIAUQlgECQCABKAKABkECRwRAIAJBwAxqIgMgAUGABWoQXiACQYAIaiADEKYBDAELIAJBwAxqIgMgAUGABWoQXiACQYAMaiIBIANBwAAQ0QEaIAJBgAhqIAEQpwELIAJBgAhqIgEQZCACQYAKaiIDIAEQlgEgAxArIAUgAkGABGoQlgEgBSADEJcBIAJBgAZqIgQgAxCXASABEGQgBiABEJcBIAQQsAEgBBBkIAAgAhCWASAAIAQQlwEMAwsgAkGACmoiAyAFEF4gAkHADGoiBCADEJkBIAMgAUGAAmoQXiAEIAMQEQsgACgCgAZBBEcEQCACQYAKaiIDIABBgAJqEF4gAkHADGoiBCADEJkBIAMgBhBeIAQgAxARCyACQYAEaiIDIAJB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AEHcu8AAKAIAQX4gA0EDdndxNgIACyAAIAEQoAEgAEH0vsAAKAIARw0BQey+wAAgATYCAAsPCyABQYACTwRAIAAgARAWDwsgAUEDdiICQQN0QeS7wABqIQECf0Hcu8AAKAIAIgNBASACdCICcQRAIAEoAggMAQtB3LvAACACIANyNgIAIAELIQIgASAANgIIIAIgADYCDCAAIAE2AgwgACACNgIIC+UDAQN/IwBB0CJrIgMkACADQcAWaiIEQcitwAAQSSADQcgcaiIFQYCuwAAQSSADQQhqIAQgBRBLIANBiAFqQTgQ0AEaIANBwAFqQTgQ0AEaIANB+AFqED0CQCACEIYBBEAgABBVDAELIANB+ARqIgQQPSAEIAEQfSAEEEcgA0H4B2oiARBnIAEgAhB4IAEQRiADQcgcaiICIAEQkAEgA0G4CWogAhCQASACIANBuAhqEJABIANB+AlqIAIQkAEgA0G4CmoiARA9IANBuA1qEFUgASAEEH0gA0HAE2oiARA9IAEgBBB9IAEQogEgA0HAAWogA0GIAWoQUEECayECA0AgAkEBakEBTQRAIANBuA1qIgEQngEgACABQYgGENEBGgUgA0G4DWoQGiADQcAWaiADQbgKaiADQbgJaiADQfgJahALAkACQAJAIANBwAFqIAIQUyADQYgBaiACEFNrQQFqDgMBAgACCyADQcgcaiIBIANBuApqIANB+ARqIANBuAlqIANB+AlqEAogA0HAFmogARADDAELIANByBxqIgEgA0G4CmogA0HAE2ogA0G4CWogA0H4CWoQCiADQcAWaiABEAMLIAJBAWshAiADQbgNaiADQcAWahABDAELCwsgA0HQImokAAvBAwEVfwNAIANBwAFGBEACQCAAQShqIQsgAEEUaigCACIMIQggAEEQaigCACINIQIgAEEMaigCACIOIQEgACgCCCIPIQMgAEEYaigCACIQIQogAEEcaigCACIRIQQgAEEgaigCACISIQcgAEEkaigCACITIQYDQCAHIQkgBCEHIAohBCAFQYACRg0BIAEgAnEhFCABIAJzIRUgBSALaigCACAFQcCiwABqKAIAIAkgBEF/c3EgBCAHcXIgBmogBEEadyAEQRV3cyAEQQd3c2pqaiIGIAhqIQogBUEEaiEFIAIhCCABIQIgAyIBQR53IAFBE3dzIAFBCndzIBQgASAVcXNqIAZqIQMgCSEGDAALAAsFIAAgA2oiAkHoAGogAkEoaigCACACQcwAaigCACACQeAAaigCACIBQQ93IAFBDXdzIAFBCnZzamogAkEsaigCACIBQRl3IAFBDndzIAFBA3ZzajYCACADQQRqIQMMAQsLIAAgBiATajYCJCAAIAkgEmo2AiAgACAHIBFqNgIcIAAgBCAQajYCGCAAIAggDGo2AhQgACACIA1qNgIQIAAgASAOajYCDCAAIAMgD2o2AggL5AEBAn8jAEGAA2siAyQAIAMQPSAAIAEgAkEfdSIEIAJzIARBf3NqQQJtIgJBAWtBH3YQbyAAIAFBgANqIAJBAXNBAWtBH3YQbyAAIAFBgAZqIAJBAnNBAWtBH3YQbyAAIAFBgAlqIAJBA3NBAWtBH3YQbyAAIAFBgAxqIAJBBHNBAWtBH3YQbyAAIAFBgA9qIAJBBXNBAWtBH3YQbyAAIAFBgBJqIAJBBnNBAWtBH3YQbyAAIAFBgBVqIAJBB3NBAWtBH3YQbyADIAAQfSADEKIBIAAgAyAEQQFxEG8gA0GAA2okAAvlAwEIfyMAQZAGayICJAAgAEFAayEIAkAgAUH4AGooAgAgASgCOGqsIABB+ABqKAIAIgcgACgCOCIEaqx+Qv///w9XDQAgBEEBSgR/IAAQHiAAKAJ4BSAHC0EBTA0AIAgQHgsgAkHYpMAAEEkgAkE4aiIHQfAAENABGiACIQNBACECA0AgAkE4RgRAAkAgB0E4aiEEQQAhAgNAIAJBOEYNASACIARqIAIgA2opAwA3AwAgAkEIaiECDAALAAsFIAIgB2pCADcDACACQQhqIQIMAQsLIANBqAFqIgYgABBdIANB4AFqIgUgARBdIANBmAJqIgIgACABEAUgA0GIA2oiBCAIIAFBQGsiARAFIAYgCBBgIAYQQiAFIAEQYCAFEEIgA0H4A2oiCSAGIAUQBUEAIQEgA0HoBGoiBkHwABDQASEFA0AgAUHwAEcEQCABIAVqIAEgAmopAwA3AwAgAUEIaiEBDAELCyAGIAQQYkEAIQEDQCABQfAARwRAIAEgBGoiBSABIAdqKQMAIAUpAwB9NwMAIAFBCGohAQwBCwsgAiAEEGIgAhBIIAkgBhBjIAkQSCADQdgFaiIBIAIQayAAIAEQaiAAQQM2AjggASAJEGsgCCABEGogAEECNgJ4IANBkAZqJAALowIBCH8jAEGABmsiAiQAIAIgAEGAAWoiBxBeIAJBgAFqIgQgBxBeIAQQLSACQYACaiIFIAIQXiAFIABBgAJqIgMQESACQYADaiIBIAMQXiABEC0gAyAEEJkBIAMgBBCaASADEKkBIAMQuAEgAxC4ASADEKkBIAFBDBCrASABEHwgARCpASACQYAEaiIIIAEQXiAIIAMQESACQYAFaiIGIAQQXiAGIAEQmgEgBhCpASADIAUQESAFIAEQmQEgBSABEJoBIAEgBRCaASABEKkBIAQgARB7IAQQqQEgBiAEEBEgBiAIEJoBIAUgABCZASAFIAIQESAAIAQQmQEgABCpASAAIAUQESAAELgBIAAQqQEgByAGEJkBIAcQqQEgAkGABmokAAu8AgEGfyMAQYAIayIBJAAgASAAEIwBIAFBgAJqIgMgAEGABGoiBRCMASABQYAEaiIEIABBgAJqIgYQjAEgAUGABmoiAkE4ENABGiABQQE2ArgGIAFBwAZqQTgQ0AEaIAFB+AZqQQE2AgAgAUGAB2pBOBDQARogAUG4B2pBATYCACABQcAHakE4ENABGiABQfgHakEBNgIAIAAQISACIAAQlgEgAiAAEJcBIAAgAhCXASAAELABIAEQyQEgARCzASAAIAEQlwEgAxAhIAMQZCACIAMQlgEgAiADEJcBIAMgAhCXASADELABIAQQISACIAQQlgEgAiAEEJcBIAQgAhCXASAEELABIAYQsgEgBhCzASAFEMkBIAUQswEgBiADEJcBIAUgBBCXASAAQQU2AoAGIAAQnAEgAUGACGokAAv/AQEHfyMAQcACayIBJAAgASAAQUBrIgYQkAEgARBMIAFBQGsiAyAGEJABIAMgAEGAAWoiAhBKIAFBgAFqIgQgAhCQASAEEEwgAiABEK4BIAIgARB3IAIQQiACEIIBIAIQggEgAhBCIARBDBA0IAFBwAFqIgcgBBCQASAHIAIQSiABQYACaiIFIAEQkAEgBSAEEHcgBRBCIAIgAxBKIAMgBBCuASADIAQQdyAEIAMQdyABIAQQfiABEEIgBSABEEogBSAHEHcgAyAAEK4BIAMgBhBKIAAgARCuASAAEEIgACADEEogABCCASAAEEIgBiAFEK4BIAYQQiABQcACaiQAC84CAgd/An4CQAJAAkBBDSABQTpuIgJrIgRBDU0EQEEMIAJrIgNBDk8NASAAIAAgA0EDdGopAwBBOiABIAJBOmxrIgNrrSIKhyAAIARBA3RqKQMAIAOtIgmGhDcDaCAEQQ1rIQUgAEHgAGohBCACQQFqIQZBACACQQN0ayEHQQshAwNAAkAgA0ECaiAGTQRAIAFBrAZPDQEgACACQQN0aiAAKQMAIAmGQv//////////A4M3AwADQCACRQ0HIABCADcDACACQQFrIQIgAEEIaiEADAALAAsgAyAFakEOTw0EIAQgBCAHaiIIQQhrKQMAIAqHIAgpAwAgCYZC//////////8Dg4Q3AwAgA0EBayEDIARBCGshBAwBCwsgAkEOQYCywAAQOwALIARBDkHQscAAEDsACyADQQ5B4LHAABA7AAtBf0EOQfCxwAAQOwALC6cCAQR/IABCADcCECAAAn9BACABQYACSQ0AGkEfIAFB////B0sNABogAUEGIAFBCHZnIgNrdkEBcSADQQF0a0E+agsiBDYCHCAEQQJ0Qey9wABqIQMgACECAkACQAJAAkBB4LvAACgCACIAQQEgBHQiBXEEQCADKAIAIQMgBBCfASEAIAMQywEgAUcNASADIQAMAgtB4LvAACAAIAVyNgIAIAMgAjYCAAwDCyABIAB0IQQDQCADIARBHXZBBHFqQRBqIgUoAgAiAEUNAiAEQQF0IQQgACIDEMsBIAFHDQALCyAAKAIIIgEgAjYCDCAAIAI2AgggAiAANgIMIAIgATYCCCACQQA2AhgPCyAFIAI2AgALIAIgAzYCGCACIAI2AgggAiACNgIMC7YCAQV/IAAoAhghBAJAAkAgACAAKAIMRgRAIABBFEEQIABBFGoiASgCACIDG2ooAgAiAg0BQQAhAQwCCyAAKAIIIgIgACgCDCIBNgIMIAEgAjYCCAwBCyABIABBEGogAxshAwNAIAMhBSACIgFBFGoiAygCACICRQRAIAFBEGohAyABKAIQIQILIAINAAsgBUEANgIACwJAIARFDQACQCAAIAAoAhxBAnRB7L3AAGoiAigCAEcEQCAEQRBBFCAEKAIQIABGG2ogATYCACABDQEMAgsgAiABNgIAIAENAEHgu8AAQeC7wAAoAgBBfiAAKAIcd3E2AgAPCyABIAQ2AhggACgCECICBEAgASACNgIQIAIgATYCGAsgAEEUaigCACIARQ0AIAFBFGogADYCACAAIAE2AhgLC+UBAQZ/IwBBgARrIgIkACACIAAQXiACQYABaiIFIABBgAFqIgYQXiACQYACaiIDQTgQ0AEaIAJBATYCuAIgAkHAAmpBOBDQARogAkH4AmpBATYCACACQYADaiIEIAYQXiACIAEQESAFIAFBgAFqIgcQESADIAcQmQEgAyABEJoBIAQgABCaASADEKkBIAQQqQEgBCADEBEgAyACEJkBIAMQNiAEIAMQmgEgBBCpASADIAUQmQEgAxA2IAYgBBCZASAGIAMQmgEgBRB8IAAgBRCZASAAIAIQmgEgABCwASACQYAEaiQAC28BDH9BjL/AACgCACICRQRAQZy/wABB/x82AgBBAA8LQYS/wAAhBgNAIAIiASgCCCECIAEoAgQhAyABKAIAIQQgAUEMaigCABogASEGIAVBAWohBSACDQALQZy/wAAgBUH/HyAFQf8fSxs2AgBBAAuAAgEGfyMAQYAIayIBJAAgACgCgAZBAUcEQCABIAAQjAEgAUGAAmoiAiAAQYACaiIEEIwBIAFBgARqIgUgAEGABGoiAxCMASABQYAGaiIGIAAQjAEgARAhIAIgAxAYIAIQswEgAhCwASAFECEgBiAEEBggBhCzASADIAAQlwEgAyAEEJcBIAMQsAEgAxAhIAAgARCWASABIAIQlwEgARCwASABIAUQlwEgASAGEJcBIAEQsAEgARArIAIQZCAFEGQgACACEJcBIAQgBRCWASAEIAYQlwEgAyABEJcBIABBBEEFIAAoAoAGQX5xQQJGGzYCgAYgABCdAQsgAUGACGokAAuZAgEBfyMAQYANayIDJAAgAyABEGkgAxCdASADQYgGaiIBIAIQXSABEEIgA0HABmoiAiABEF0gAkEDECkaIAIQQiADQfgGaiADEGkCQCACEFdFBEAgA0HABmoQKkECayECA0AgAkEBakEBTQRAIANB+AZqIgEQnAEMAwUgA0H4BmoQEwJAAkACQCADQcAGaiACEFMgA0GIBmogAhBTa0EBag4DAQIAAgsgA0H4BmogAxAHDAELIAMQngEgA0H4BmogAxAHIAMQngELIAJBAWshAgwBCwALAAsgA0H4BmoiARC3ASABQYABahC2ASABQYACahCxASABQYAEahCxASABQQE2AoAGCyAAIAFBiAYQ0QEaIANBgA1qJAALhgICBH8BfiMAQTBrIgIkACABQQRqIQQgASgCBEUEQCABKAIAIQMgAkEQaiIFQQA2AgAgAkIBNwMIIAIgAkEIajYCFCACQShqIANBEGopAgA3AwAgAkEgaiADQQhqKQIANwMAIAIgAykCADcDGCACQRRqIAJBGGoQDBogBEEIaiAFKAIANgIAIAQgAikDCDcCAAsgAkEgaiIDIARBCGooAgA2AgAgAUEMakEANgIAIAQpAgAhBiABQgE3AgQgAiAGNwMYQQxBBBC5ASIBRQRAQQxBBBDPAQALIAEgAikDGDcCACABQQhqIAMoAgA2AgAgAEGEt8AANgIEIAAgATYCACACQTBqJAAL5AEBAn8jAEHAAWsiAyQAIAMQZyAAIAEgAkEfdSIEIAJzIARBf3NqQQJtIgJBAWtBH3YQbiAAIAFBwAFqIAJBAXNBAWtBH3YQbiAAIAFBgANqIAJBAnNBAWtBH3YQbiAAIAFBwARqIAJBA3NBAWtBH3YQbiAAIAFBgAZqIAJBBHNBAWtBH3YQbiAAIAFBwAdqIAJBBXNBAWtBH3YQbiAAIAFBgAlqIAJBBnNBAWtBH3YQbiAAIAFBwApqIAJBB3NBAWtBH3YQbiADIAAQeCADEKQBIAAgAyAEQQFxEG4gA0HAAWokAAvDAwIGfwN+IwBB8ABrIgEkACABQcCywAAQSSABQThqIAEQXSAAEEICQAJAAkAgAQJ/IAAoAjgiAkEQTARAIAJBAWsQNQwBCyABKQMwIghCAXwiByAIVA0BIAApAzAiCEKAgICAgICAgIB/USAHQn9RcQ0CIAFBOGoiAiAIIAd/pxApIQcgASABKQNoIAdCOoZ8NwNoIAAgAhBhIAAQQkECCyIEECgDQCAERQ0DQQAhAyABIAEpAwgiCEI5hkKAgICAgICAgAKDIAEpAwBCAYeEIgc3AwAgACkDACAHfSEHIABBCGohBSAAIAFBOGoiAkEBA38gAiADaiAHQv//////////A4M3AwAgB0I6hyEHIANBKEYEfyABIAEpAzBCAYciCDcDMCACIAApAzAgCH0gB3wiBzcDMCAHQj+IpwUgASADaiIGQQhqIAhCAYcgBkEQaikDACIIQjmGQoCAgICAgICAAoOEIgk3AwAgAyAFaikDACAHfCAJfSEHIANBCGohAwwBCwtrEDAgBEEBayEEDAALAAtB4LPAAEEZQcSzwAAQWQALQYC0wABBH0HEs8AAEFkACyAAQQE2AjggAUHwAGokAAvuAQECfyMAQbABayIDJAAgA0EwENABIQMCQAJAA0AgAkEwRgRAIANBMGogAxBwIAFBMGohAUEAIQIDQCACQTBGDQMgAkEwRg0EIAIgA2ogASACai0AADoAACACQQFqIQIMAAsACyACQeAARwRAIAIgA2ogASACai0AADoAACACQQFqIQIMAQsLQeAAQeAAQYCmwAAQOwALIANB8ABqIgEgAxBwIABBOBDQASIAQQE2AjggAEFAa0E4ENABIABB+ABqQQE2AgAgACABEK4BIANBMGoQrgEgA0GwAWokAA8LIAJBMGpB4ABBkKbAABA7AAuPAgEDfyMAQSBrIgUkAEEBIQZB2LvAAEHYu8AAKAIAIgdBAWo2AgACQEGgv8AALQAABEBBpL/AACgCAEEBaiEGDAELQaC/wABBAToAAAtBpL/AACAGNgIAAkACQCAHQQBIIAZBAktyDQAgBSAEOgAYIAUgAzYCFCAFIAI2AhBBzLvAACgCACICQQBIDQBBzLvAACACQQFqIgI2AgBBzLvAAEHUu8AAKAIAIgMEf0HQu8AAKAIAIAUgACABKAIQEQAAIAUgBSkDADcDCCAFQQhqIAMoAhQRAABBzLvAACgCAAUgAgtBAWs2AgAgBkEBSw0AIAQNAQsACyMAQRBrIgIkACACIAE2AgwgAiAANgIIAAucAQEEfyMAQYADayICJAAgAiAAEF4gAkGAAWoiASAAQYABaiIEEF4gAkGAAmoiAyAAEF4gAyAEEBEgAiAEEJoBIAEQfCABIAAQmgEgAhCpASABEKkBIAAgAhCZASAAIAEQESABIAMQmQEgARB8IAEgAxCaASABEKkBIAEQNiAAIAEQmgEgAxC4ASAEIAMQmQEgABCwASACQYADaiQAC7kBAQJ/IwBBIGsiAyQAAkAgASABIAJqIgFLDQAgAEEEaigCACICQQF0IgQgASABIARJGyIBQQggAUEISxshAQJAIAIEQCADQRhqQQE2AgAgAyACNgIUIAMgACgCADYCEAwBCyADQQA2AhALIAMgASADQRBqECYgAygCAARAIANBCGooAgAiAEUNASADKAIEIAAQzwEACyADKAIEIQIgAEEEaiABNgIAIAAgAjYCACADQSBqJAAPCxBlAAusAQECfyMAQYADayIDJAAgA0EIaiABEJABAkAgAgRAIANBCGogAhCuAQwBCyADQQhqEDoLIANByABqIgJB8LTAABBJIANBgAFqIAIQjgEgA0HAAWoiAiADQQhqIgQQkAEgAhBMIAIgARBKIAAgARCQASAAIAQQSiADQYACaiACEJABIAAQViEBIANBwAJqIgIgABCQASACEEMgAhBCIAAgAiABEHIgA0GAA2okAAueAQEFfyMAQYABayICJAAgAkE4ENABIgJBATYCOCACQUBrIgNBOBDQARogAkEBNgJ4IAIgABCuASACIAFBgAFqIgUQSiADIAEQrgEgAyAAQYABaiIGEEoCQCACIAMQWEUNACACIABBQGsQrgEgAiAFEEogAkFAayIAIAFBQGsQrgEgACAGEEogAiAAEFhFDQBBASEECyACQYABaiQAIAQLpwEBA38jAEEwayICJAAgAUEEaiEDIAEoAgRFBEAgASgCACEBIAJBEGoiBEEANgIAIAJCATcDCCACIAJBCGo2AhQgAkEoaiABQRBqKQIANwMAIAJBIGogAUEIaikCADcDACACIAEpAgA3AxggAkEUaiACQRhqEAwaIANBCGogBCgCADYCACADIAIpAwg3AgALIABBhLfAADYCBCAAIAM2AgAgAkEwaiQAC5UBAQJ/AkACQAJAAkACfwJAAkACf0EBIgMgAUEASA0AGiACKAIAIgRFDQEgAigCBCICDQQgAQ0CQQEMAwshA0EAIQEMBgsgAQ0AQQEMAQsgAUEBELkBCyICRQ0BDAILIAQgARCsASICDQELIAAgATYCBEEBIQEMAQsgACACNgIEQQAhAwsgACADNgIAIABBCGogATYCAAvvMwISfwV+IwBBMGsiDiQAIA5BEGogACABEFsgDiAOKAIUIgA2AhwgDiAOKAIQIgg2AhggDkEIaiACIAMQWyAOIA4oAgwiATYCJCAOIA4oAggiAzYCICAOIAQgBRBbIA4gDigCBCIFNgIsIA4gDigCACINNgIoIAAhBCMAQZAVayICJAAjAEGwBmsiCiQAIApBEGpBOBDQARogCkHQAGpBOBDQASEVIApBiAFqQQE2AgAgCkEBNgJIIApBkAFqIgBB2KTAABBJIAAQKiEPIApByAFqIhNBgAIQ0AEaIApB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ABBJAkACQAJAAkADQAJAIAxBMEYEQCAAIAAtAABBH3E6AAAgAEHoAGogABC+ASAEDQFBAEEAQZiBwAAQOwALIAQgDEYNAiAAIAxqIAggDGotAAA6AAAgDEEBaiEMDAELC0EAIQwgCCwAACIJQQBIDQIgCEEwaiEDIARBMCAEQTBLG0EwayEIA0AgDEEwRgRAIABBoAFqIgQgABC+ASMAQYABayIDJAAgARBnIAEgAEHoAGoQwAEgAUFAayIIIAQQwAEgAUGAAWoQygEgARBCIAMgARBPIANBQGsiBCAIEJABIAQQTCAEIAMQWEUEQCABEJIBCyADQYABaiQADAULIAggDEYNAiAAIAxqIAMgDGotAAA6AAAgDEEBaiEMDAALAAsgBCAEQYiBwAAQOwALIAxBMGogBEGogcAAEDsACyMAQcABayIDJAAgAEGgAWoiBBBnIANBOBDQASIDQQE2AjggBCAAQegAahDAASAEEEIgBEGAAWoQygEgA0FAayIIIAQQTwJAAkACQCAIIAMQWkEBRgRAIANBgAFqIgggA0FAayADECMgCBBWDQEMAgsgBBCSAQwCCyADQYABaiIIEEMgCBBCCyAEQUBrIANBgAFqEK4BCyADQcABaiQAIAlBIHEiA0EAIABB4AFqEE0iBEEBRxtBASADIARBAUdyGwRAIABBoAFqEKQBCyABIABBoAFqQcABENEBGgsgAEHgAmokAAJ/QQAhAyMAQcAFayIAJAACQCABEIYBDQAgAEEIaiIIQZCtwAAQSSAAQYAEaiIEQbiuwAAQSSAAQUBrIgkgBBCOASAAQYABaiIEEGcgBCABEHggBCAJEEogAEHAAmoiBCABIAgQvQEgASAEECQNACAAQYAEaiIEIABBwAJqIgEgAEEIahC9ASABIARBwAEQ0QEaIAEQpAEgAEGAAWogARAkRQ0AQQEhAwsgAEHABWokAEF/IANFDQAaIAJBwAFqEKQBIAJBgANqIQhBACEAIwBB4ARrIgEkACABQeAAENABIQECQCAFBEADQCAAQeAARgRAIAEgAS0AAEEfcToAACABQeAAaiABEB9BACEAAkAgDSwAACILQQBOBEAgDUHgAGohAyAFQeAAIAVB4ABLG0HgAGshBANAIABB4ABGBEAgAUHgAWoiACABEB8gCCABQeAAaiAAED8MAwsgACAERwRA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AWoQmQEgACAEEBEgAEGAAWoiASAFQYABahCZASABIAgQESAAIAEQeg0BC0EADAELQQELIQEgAEGAAmokACANQcAHaiQAQX8gAUUNABojAEHgA2siACQAIABBgAFqIgFBwKjAABBJIABBuAFqIgNB+KjAABBJIAAgASADEEsgAEHwAmoiAUGwqcAAEEkgAEGoA2oiA0HoqcAAEEkgAEHwAWoiBCABIAMQSyACQYAGaiIBIAAgBBA/IABB4ANqJAAgAkGACWohByACQYADaiEIIwBBkDRrIgAkACAAQYAoaiIDQcitwAAQSSAAQYguaiIEQYCuwAAQSSAAIAMgBBBLIABBgAFqQTgQ0AEaIABBuAFqQTgQ0AEaIABB8AFqED0CQCACQcABaiIEEIYBRQRAIAIQhgEEQCAHIAEgBBAODAILIABB8ARqIgMQPSADIAEQfSADEEcgAEHwB2oiBRBnIAUgBBB4IAUQRiAAQbAJaiIEED0gBCAIEH0gBBBHIABBsAxqIggQZyAIIAIQeCAIEEYgAEGILmoiASAFEJABIABB8A1qIAEQkAEgASAAQbAIahCQASAAQbAOaiABEJABIAEgCBCQASAAQfAOaiABEJABIAEgAEHwDGoQkAEgAEGwD2ogARCQASAAQfAPaiIBED0gAEHwEmoiBRA9IABB8BVqEFUgASADEH0gBSAEEH0gAEH4G2oiARA9IAEgAxB9IAEQogEgAEH4HmoiARA9IAEgBBB9IAEQogEgAEG4AWogAEGAAWoQUEECayEBA0AgAUEBakEBTQRAIABB8BVqIgEQngEgByABQYgGENEBGgwDBSAAQfAVaiIEEBogAEH4IWoiAyAAQfAPaiAAQfANaiAAQbAOahALIABBgChqIgUgAEHwEmogAEHwDmogAEGwD2oQCyADIAUQAyAEIAMQAQJAAkACQCAAQbgBaiABEFMgAEGAAWogARBTa0EBag4DAQIAAgsgAEGILmoiAyAAQfAPaiAAQfAEaiAAQfANaiAAQbAOahAKIABB+CFqIgQgA0GIBhDRARogAyAAQfASaiAAQbAJaiAAQfAOaiAAQbAPahAKIAQgAxADIABB8BVqIAQQAQwBCyAAQYguaiIDIABB8A9qIABB+BtqIABB8A1qIABBsA5qEAogAEH4IWoiBCADQYgGENEBGiADIABB8BJqIABB+B5qIABB8A5qIABBsA9qEAogBCADEAMgAEHwFWogBBABCyABQQFrIQEMAQsACwALIAcgCCACEA4LIABBkDRqJAAjAEHgH2siCCQAIAhB0BNqIgFByK3AABBJIAhB2BlqIg1BgK7AABBJIAggASANEEsgCEGAAWoiC0GQrcAAEEkgAkGID2oiACAHEGkgCEG4AWoiBSAAEGkjAEGACGsiAyQAIAMgBRCMASADQYACaiIJIAVBgAJqIg8QjAEgA0GABGoiCiAFEIwBIANBgAZqIgRBOBDQARogA0EBNgK4BiADQcAGakE4ENABGiADQfgGakEBNgIAIANBgAdqQTgQ0AEaIANBuAdqQQE2AgAgA0HAB2pBOBDQARogA0H4B2pBATYCACAFEJ0BIAMQISAJIAVBgARqIgwQGCAJEGQgAyAJEHkgAxCwASAJIAwQlgEgCRAhIAkQZCAKIA8QGCAJIAoQeSAJELABIAogDxCWASAKECEgBCAFEJYBIAQgDBAYIAogBBB5IAoQsAEgBCAPEJYBIAQgChAYIAQQZCAFIAMQGCAEIAUQlwEgDCAJEBggDBBkIAQgDBCXASAEELABIwBBgAJrIgYkACAGIAQQXiAGQYABaiIQIARBgAFqIhIQXiAGEC0gEBAtIBAQfCAQEKkBIAYgEBB7IAYQPiAEIAYQESAGEDYgBhCpASASIAYQESAGQYACaiQAIAUgAxCWASAFIAQQGCAPIAkQlgEgDyAEEBggDCAKEJYBIAwgBBAYIAVBBTYCgAYgA0GACGokACAAEJ4BIAAgBRAHIAUgABBtIAAgCBAyIAAgCBAyIAAgBRAHIAhBwAdqIgQgABBpIAQQEyAEIAAQByANIAAgCxAbIAhByA1qIgMgDRBpIAMQngEgASAAEGkgARCeASAAIAMQbSAAIAEQByANIAAgCxAbIAMgDRBtIAMQngEgASAAEG0gARCeASAAIAMQbSAAIAEQByANIAAgCxAbIAMgDRBtIAMQngEgASAAEG0gASAIEDIgACADEG0gACABEAcgDSAAIAsQGyADIA0QbSANIAMgCxAbIAMgDRBtIAEgABBtIAEgCBAyIAEgCBAyIAMgARAHIAEgABBtIAEQngEgACADEG0gACABEAcgACAEEAcgABCcASAIQeAfaiQAIAcgAEGIBhDRARpBACEAIwBBgAJrIgEkACABEGwCQCAHIAEQegR/IAdBgAFqIAFBgAFqEHoFQQALRQ0AIAdBgAJqEIcBRQ0AIAdBgARqEIcBIQALIAFBgAJqJABBACAADQAaQX8LIAJBkBVqJAAgDkEoahC0ASAOQSBqELQBIA5BGGoQtAEgDkEwaiQAC58BAgJ/BX4gAEEwaiICKQMAIAFBP3GtIgSGIQUgACkDKCIGQTogAWtBP3GtIgiHIQdBBiEBA38gAiAFIAeENwMAIAFBAU0EfyAAIAApAwAgBIZC//////////8DgzcDACAAKQMwQiSHpwUgAUEBayEBIAJBEGsiA0EIaiECIAYgBIZC//////////8DgyEHIAMpAwAiBiAIhyEFDAELCxoLiAECA34DfyMAQRBrIgUkAAN+IAZBOEYEfiAFQRBqJAAgAwUgBSAAIAZqIgcpAwAiAiACQj+HIAGsIgIgAkI/hxAvIAcgBSkDACIEIAN8IgJC//////////8DgzcDACACIARUrSAFQQhqKQMAIANCP4d8fEIGhiACQjqIhCEDIAZBCGohBgwBCwsLigECA38BfiMAQUBqIgIkACACQQhqIgEgABBdIAEQQiACQThqIQFBBiEDQdwCIQACQAJAA0AgA0EATgRAIAEpAwAiBEIAUg0CIAFBCGshASAAQTprIQAgA0EBayEDDAELC0EAIQAMAQsDQCAEUA0BIABBAWohACAEQgJ/IQQMAAsACyACQUBrJAAgAAuHAQEDfyMAQYACayIBJAAgABCwASABIAAQXiABQYABaiICQTgQ0AEaIAFBATYCuAEgAUHAAWpBOBDQARogAUH4AWpBATYCACABIABBgAFqIgMQmgEgARA2IAIgARCZASACIAMQmgEgAyABEJkBIAMgABCaASAAIAIQmQEgABCwASABQYACaiQAC30CBH4BfyABQT9xrSECQTogAWtBP3GtIQRBACEBIAApAwAiBSEDA38gAUEwRgR/IAAgACkDMCAChzcDMCAFQn8gAoZCf4WDpwUgACABaiIGIAMgAocgBkEIaikDACIDIASGQv//////////A4OENwMAIAFBCGohAQwBCwsaC2kBBH8jAEHAAWsiASQAIAEgABCQASABQUBrIgIgABCQASABQYABaiIDIABBQGsiBBCQASABIAQQdyACIAAQdyACEEIgBCACEEogAxBDIAAgAxB3IAEQQiAAEEIgACABEEogAUHAAWokAAuCAQIBfwF+IABB8AAQ0AEhAANAIAJBOEYEQAJAIAAgASkDMCIDQjqHNwM4IAAgA0L//////////wODNwMwIABBQGshAEEAIQIDQCACQTBGDQEgACACakIANwMAIAJBCGohAgwACwALBSAAIAJqIAEgAmopAwA3AwAgAkEIaiECDAELCwtuAQZ+IAAgA0L/////D4MiBSABQv////8PgyIGfiIHIAUgAUIgiCIIfiIJIAYgA0IgiCIGfnwiBUIghnwiCjcDACAAIAcgClatIAYgCH4gBSAJVK1CIIYgBUIgiIR8fCABIAR+IAIgA358fDcDCAtqAgF/BX4gASkDCCAAKQMAhSIGQgGGQgGHIQdBACACa6whCAN+IANBOEYEfiAFBSAAIANqIgIgAikDACIEIAaFIAEgA2opAwAgBIUgCIOFIgQgB4U3AwAgBCAFhSEFIANBCGohAwwBCwsaC18CAX8EfkIBIQNBMCECA38gAkF4RgR/IARCAYYgA3ynQQFrBSABIAJqKQMAIgUgACACaikDACIGfUI6hyADgyAEhCEEIAJBCGshAiAFIAaFQgF9QjqHIAODIQMMAQsLC2kBBH8jAEGAAmsiAiQAIAIgARBeIAJBgAFqIgMgARBeIAIQLSADIAIQESAAIAMQmAEgAEGAAmoiBCADEJgBIABBgARqIgUgAxCYASAEIAEQpgEgBSACEKYBIABBBTYCgAYgAkGAAmokAAtiAQJ/IwBBQGoiAiQAIAAQQiACIAAQkAECQCABBEAgACABEK4BDAELIAAQOgtBACEBA0AgA0UEQCAAEExBASABQQFqIAFBAUYiAxshAQwBCwsgACACEEogABAeIAJBQGskAAtnAQJ/IwBBQGoiAyQAAkAgASABQR91IgJqIAJzIgIgACgCOGxBgICAEE4EQCADIAIQOSAAIAMQSgwBCyAAIAIQKRogACAAKAI4IAJsNgI4CyABQQBIBEAgABBDIAAQQgsgA0FAayQAC2cAIABBAXYgAHIiAEECdiAAciIAQQR2IAByIgBBCHYgAHIiAEEQdiAAciIAIABBAXZB1arVqgVxayIAQQJ2QbPmzJkDcSAAQbPmzJkDcWoiAEEEdiAAakGPnrz4AHFBgYKECGxBGHYLYQEDfyMAQYABayIBJAAgASAAEJABIAFBQGsiAkE4ENABGiABQQE2AnggASAAQUBrIgMQdyABEEMgAiABEK4BIAIgAxB3IAMgARCuASADIAAQdyAAIAIQrgEgAUGAAWokAAtVAgJ/AX4jAEHwAGsiASQAIAFBwLLAABBJIAApAwAhAyABQThqIgIgABBdIABBARAsIAIgARBgIAIQQiACQQEQLCAAIAIgA0ICgacQMCABQfAAaiQAC5gBAQZ/IwBBwAFrIgMkACAAIAEQXiAAEC0gA0GIAWoiBkHop8AAEEkjAEFAaiIEJAAgA0EIaiICQTgQ0AEiBUEBNgI4IAVBQGtBOBDQASAFQfgAakEBNgIAIAQgBhCOASAFIAQQrgEQwQEgBEFAayQAIAIQqQEgAhB8IAIQqQEgACABEBEgACACEJoBIAAQtQEgA0HAAWokAAtZAQJ/IwBBQGoiAyQAIABBOBDQASIAQQE2AjgCQCABQQBOBEAgACABEJMBDAELIANBCGoiAkHAssAAEEkgAiABEJMBIAIQQiAAIAIQagsgABBUIANBQGskAAu9CAEKfyMAQYABayIHJAAgB0EIaiIDQcCywAAQSSADQQEQlAECQAJAA0AgAUEwRgRAIANBMGogAykDMEIBhzcDACADQThqIQEDQCACRQ0EIAFCADcDACACQQFrIQIgAUEIaiEBDAALAAsgAUE4Rg0BIAFBOEcEQCABIANqIAEgA2oiBEEIaikDAEI5hkL//////////wODIAQpAwBCAYeENwMAIAVBAWohBSABQQhqIQEMAQsLQQdBB0GEm8AAEDsACyAFQQdB9JrAABA7AAsgA0EBEJQBIANBARAsIAdBQGshBUEAIQIjAEGgCmsiASQAIAFBOBDQASIBQUBrQTgQ0AEhBiABQYABakE4ENABGiABQcABakE4ENABGiABQYACakE4ENABGiABQcACakE4ENABGiABQYADakE4ENABGiABQcADakE4ENABGiABQYAEakE4ENABGiABQcAEakE4ENABGiABQYAFakE4ENABGiABQcAFakE4ENABGiABQYAGakE4ENABGiABQcAGakE4ENABGiABQYAHakE4ENABGiABQcAHakE4ENABGiABQfgHakEBNgIAIAFBuAdqQQE2AgAgAUH4BmpBATYCACABQbgGakEBNgIAIAFB+AVqQQE2AgAgAUG4BWpBATYCACABQfgEakEBNgIAIAFBuARqQQE2AgAgAUH4A2pBATYCACABQbgDakEBNgIAIAFB+AJqQQE2AgAgAUG4AmpBATYCACABQfgBakEBNgIAIAFBuAFqQQE2AgAgAUH4AGpBATYCACABQQE2AjggAUGBCGpB5wAQ0AEaIAFB6AhqIgQgABCQASAEEEIgAUGoCWoiBCADEF0gBBBCIAQQKkEDaiIIQQJ2IgNBAWohCQJAA0AgAiAJRgRAIAEQygEgBiABQegIahCuASABQeAJakE4ENABGiABQQE2ApgKQYB5IQIMAgsgAUGoCWoiBCAEQQQQjwEiChCUASAEEEIgAkHnAEcEQCABQYEIaiACaiAKOgAAIAFBqAlqQQQQLCACQQFqIQIMAQsLQecAQecAQaC0wAAQOwALA0AgAgRAIAFB4AlqIgQgASACaiIGQcAHahCuASAGQYAIaiIGIAQQrgEgBiABQegIahBKIAJBQGshAgwBCwsCQAJAAkACQCAIQZwDSQRAIAFBgQhqIANqLAAAIgJBEE8NASAFIAEgAkEGdGoQkAEgA0EBayICQeYASyEEA0AgAkF/Rg0DIAUQTCAFEEwgBRBMIAUQTCAEDQQgAUGBCGogAmotAAAiA0EQSQRAIAUgASADQQZ0ahBKIAJBAWshAgwBCwsgA0EYdEEYdUEQQeC0wAAQOwALIANB5wBBsLTAABA7AAsgAkEQQcC0wAAQOwALIAUQHiABQaAKaiQADAELIAJB5wBB0LTAABA7AAsgACAFEK4BIAdBgAFqJAALbAEBfyMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBHGpBAjYCACADQSxqQQE2AgAgA0ICNwIMIANB2LjAADYCCCADQQE2AiQgAyADQSBqNgIYIAMgAzYCKCADIANBBGo2AiAgA0EIaiACEGYAC2UBAn8gACAAKAIAIgJBCGoiAzYCACAAIAJBA3ZBPHFqQShqIgIgAUH/AXEgAigCAEEIdHI2AgACQAJAIANFBEAgAEEANgIAIAAgACgCBEEBajYCBAwBCyADQf8DcQ0BCyAAEA8LC1wAIABBOBDQASIAQQE2AjggAEFAa0E4ENABGiAAQfgAakEBNgIAIABBgAFqEFEgAEGAAmpBOBDQARogAEG4AmpBATYCACAAQcACakE4ENABGiAAQfgCakEBNgIAC1sBA38jAEGAAWsiASQAIAAQqQEgASAAEJABIAFBQGsiAiAAQUBrIgMQkAEgARBMIAIQTCABIAIQdyABQQAQMyAAIAEQSiABEEMgARBCIAMgARBKIAFBgAFqJAALYQEBfyMAQYACayIDJAAgABA9IAAgARCZASAAQYABaiIBIAIQmQEgAEGAAmoQtwEgABCpASADIAAQOCADQYABaiICIAEQXiACEC0gAiADEHpFBEAgABCbAQsgA0GAAmokAAtUAQF/IwBBIGsiAiQAIAIgACgCADYCBCACQRhqIAFBEGopAgA3AwAgAkEQaiABQQhqKQIANwMAIAIgASkCADcDCCACQQRqIAJBCGoQDCACQSBqJAALZwAjAEEwayIBJABBpLvAAC0AAARAIAFBHGpBATYCACABQgI3AgwgAUGQtsAANgIIIAFBATYCJCABIAA2AiwgASABQSBqNgIYIAEgAUEsajYCICABQQhqQbi2wAAQZgALIAFBMGokAAtiAgF+An8gACkDACEBA34gACACaiIDIAFC//////////8DgzcDACABQjqHIQEgAkEoRgR+IAAgACkDMCABfCIBNwMwIAFCJIcFIAJBCGohAiADQQhqKQMAIAF8IQEMAQsLGgt8AQV/IwBBQGoiAyQAIANBCGoiAkHAssAAEEkgAiAAKAI4QQFrEDUiBBAoA0AgAUE4RwRAIAAgAWoiBSABIAJqKQMAIAUpAwB9NwMAIAFBCGohAQwBCwsgAEEBIARBAWp0IgI2AjggAkH///8PSgRAIAAQHgsgA0FAayQAC3sBAn8gAEEoaiECA0AgAUGAAkYEQCAAQufMp9DW0Ouzu383AgggAEIANwIAIABBIGpCq7OP/JGjs/DbADcCACAAQRhqQv+kuYjFkdqCm383AgAgAEEQakLy5rvjo6f9p6V/NwIABSABIAJqQQA2AgAgAUEEaiEBDAELCwtUACAAQTgQ0AEiAEEBNgI4IABBQGtBOBDQARogAEH4AGpBATYCACAAQYABakE4ENABGiAAQbgBakEBNgIAIABBwAFqQTgQ0AEaIABB+AFqQQE2AgALWAECfyMAQUBqIgEkAAJAIAAQhgENACABQQEQOSAAQYABaiICIAEQWA0AIAJBABAzIAAgAhBKIAAQHiAAQUBrIgAgAhBKIAAQHiACIAEQrgELIAFBQGskAAtZAQJ/IwBBgAFrIgEkAAJAIAAQigENACABEFEgAEGAAmoiAiABEHoNACACED4gACACEBEgABC1ASAAQYABaiIAIAIQESAAELUBIAIgARCZAQsgAUGAAWokAAtbAgF+An8gACkDACEBA0AgACACaiIDIAFC//////////8DgzcDACABQjqHIQEgAkHgAEYEQCAAIAApA2ggAXw3A2gFIAJBCGohAiADQQhqKQMAIAF8IQEMAQsLC08BAX8gAEE4ENABGgJAA0AgAkEHRwRAIAJBB0YNAiAAIAEpAwA3AwAgAEEIaiEAIAFBCGohASACQQFqIQIMAQsLDwtBB0EHQeSawAAQOwALVAECfyMAQbABayICJAAgATQCOCAANAI4fkL///8PVQRAIAAQHgsgAkEIaiIDIAAgARAFIAJB+ABqIgEgAxBrIAAgARBqIABBAjYCOCACQbABaiQAC1EBAn8jAEFAaiIDJAAgAEE4ENABIgBBATYCOCAAQUBrQTgQ0AEgAEH4AGpBATYCACADIAEQjgEgACADEK4BIAMgAhCOASADEK4BIANBQGskAAvwDAIRfwh+IwBBsAFrIg8kACAANAI4IhIgEn5C////D1YEQCAAEB4LIwBB0AFrIgEkACAPQQhqIgZBCGpB0AAQ0AEaIAFBwAFqIAApAwAiFyAXQj+HIhYgFyAWEC8gBiABKQPAASISQv//////////A4M3AwAgAUHIAWopAwAiFUIGhiASQjqIhCETIBVCOoghGCAAQQhqIgwhDSAAIQlBASEKQQEhBwJAA0AgCkEERgRAIABBGGohCiAAQRBqIQkgAEEoaiEMIAApAzAhF0EHIQUgAUHIAGohCwNAIAVBC0kEQCABQUBrIAVBA3QiCCAAakEwaykDACISIBJCP4cgFyAXQj+HIhYQLyAFQQFqIg1BAXYhByALKQMAIRUgASkDQCESIAkhAiAMIQQgBUEFayIOIQMDQCADIAdJBEAgASACKQMAIhQgFEI/hyAEKQMAIhQgFEI/hxAvIAEpAwAiFCASfCISIBRUrSABQQhqKQMAIBV8fCEVIAJBCGohAiAEQQhrIQQgA0EBaiEDDAELCyAGIAhqIBJCAYYiFCATfCITQv//////////A4M3AwAgAUEwaiAAIA5BA3RqKQMAIhkgGUI/hyAXIBYQLyATIBRU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aikDADcDACACQQhqIQIMAQsLC4QJAg1/Cn4jAEFAaiILJAAgC0EIaiIJQcCywAAQSSMAQZACayICJAAgAEEwENABIQogAkHoAGpB8AAQ0AEaIAJB4AFqQTAQ0AEaIAoQcSACIAEiDCkDACIQQv3/8//P///5AX5C//////////8DgyISNwPYASACQdgAaiASQgAgCSkDACIXIBdCP4ciGBAvIBAgAikDWCIPfCITIA9UrSACQeAAaikDACAQQj+HfHwiEEI6hyABKQMIIg9CP4d8IA8gEEIGhiATQjqIhCITfCIQIBNUrXwhD0EBIQBCACETAkACQANAAkAgAEEHRgRAQQYhB0EAIQhBByEADAELIABBAXYiAUEBaiEGIAggAWshAyABQQN0IgFBCGohBCAHIAFrIQUgAkHIAGogCSAAQQN0Ig1qKQMAIhUgFUI/hyIWIBJCABAvIAJB0ABqKQMAIBAgECATfCIRVq0gDyAUfHx8IBEgAikDSHwiDyARVK18IRAgAEEBaiEBA0AgACAGTQRAIAJB2AFqIA1qIA9C/f/z/8////kBfkL//////////wODIhE3AwAgAkE4aiARQgAgFyAYEC8gAkEoaiARQgAgFSAWEC8gAkHoAGogAEEEdGoiACACQTBqKQMAIhE3AwggACACKQMoIhU3AwAgDyACKQM4IhZ8Ig8gFlStIAJBQGspAwAgEHx8IhBCOocgDCABQQN0aikDACIWQj+HfCAWIBBCBoYgD0I6iIQiD3wiECAPVK18IQ8gEyAVfCITIBVUrSARIBR8fCEUIAdBCGohByAIQQFqIQggASEADAMLIANBB08NAyACQRhqIAQgCWopAwAgBSAJaikDAH0iESARQj+HIAJB2AFqIg4gBWopAwAgBCAOaikDAH0iESARQj+HEC8gAikDGCIRIA98Ig8gEVStIAJBIGopAwAgEHx8IRAgBkEBaiEGIARBCGohBCAFQQhrIQUgA0EBayEDDAALAAsLA0ACQAJAIABBDUcEQCAHIABBAXYiBmshAyAIIAZBA3QiAWshBCABQQhqIQUgDyAUfCAQIBN8Ig8gEFStfCEQIABBAWohAQNAIAZBBUsNAyADQQdPDQIgAkEIaiAFIAlqKQMAIAQgCWpBMGopAwB9IhIgEkI/hyACIARqQYgCaikDACACQdgBaiAFaikDAH0iEiASQj+HEC8gAikDCCISIA98Ig8gElStIAJBEGopAwAgEHx8IRAgBkEBaiEGIARBCGshBCADQQFrIQMgBUEIaiEFDAALAAsgCiAQQv//////////A4M3AzAgAkGQAmokAAwECyADQQdBpJzAABA7AAsgAEEDdCAKakE4ayAPQv//////////A4M3AwAgEEI6hyAMIAFBA3RqKQMAIhJCP4d8IBIgEEIGhiAPQjqIhCIPfCIQIA9UrXwhDyAUIABBBHQgAmpBCGoiAEEIaikDAH0gEyAAKQMAIhJUrX0hFCAIQQhqIQggB0EBaiEHIBMgEn0hEyABIQAMAAsACyADQQdBlJzAABA7AAsgC0FAayQACy4BAX8jAEGAAWsiASQAIAAQRSABEFEgACABEJkBIABBgAFqELYBIAFBgAFqJAALMwAgACABEJYBIABBgAJqIAFBgAJqEJYBIABBgARqIAFBgARqEJYBIAAgASgCgAY2AoAGCygAIAAgASACEHIgAEFAayABQUBrIAIQciAAQYABaiABQYABaiACEHILLQAgACABIAIQjQEgAEGAAWogAUGAAWogAhCNASAAQYACaiABQYACaiACEI0BCycBAn8jAEFAaiICJAAgAkEIaiIDIAEQvgEgACADEI4BIAJBQGskAAsiAQF/A0AgAUE4RwRAIAAgAWpCADcDACABQQhqIQEMAQsLCyUAIAAgASACEDAgAEEAIAJrIAAoAjgiACABKAI4c3EgAHM2AjgLJwAgACAAKAIEQQFxIAFyQQJyNgIEIAAgAWoiACAAKAIEQQFyNgIECyMAA0AgAgRAIAAgAS0AABA8IAJBAWshAiABQQFqIQEMAQsLCywAIAAQiwEgACABEJYBIABBgAJqIAIQlgEgAEGABGogAxCWASAAQQU2AoAGCyMBAX8jAEFAaiIBJAAgASAAEJABIAEQHiABEFcgAUFAayQACykAIAAgARBgIAAgACgCOCABKAI4aiIBNgI4IAFB////D0oEQCAAEB4LCyUAIAAgARCuASAAQUBrIAFBQGsQrgEgAEGAAWogAUGAAWoQrgELKAEBfyMAQYACayICJAAgAiABEIwBIAIQKyAAIAIQlwEgAkGAAmokAAscAQF/IAAgARBYBH8gAEFAayABQUBrEFgFQQALCycBAX8jAEGAAWsiAiQAIAIg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DCELDQALCyAMpyICQeMASwRAIABBAmsiACAGQQlqaiAMpyICIAJB//8DcUHkAG4iAkHkAGxrQf//A3FBAXRB6LjAAGovAAA7AAALAkAgAkEKTwRAIABBAmsiACAGQQlqaiACQQF0Qei4wABqLwAAOwAADAELIABBAWsiACAGQQlqaiACQTBqOgAACwJ/IAZBCWogAGohCEErQYCAxAAgASgCACIDQQFxIgIbIQQgAkEnIABrIglqIQJBlLjAAEEAIANBBHEbIQUCQAJAIAEoAghFBEBBASEAIAEgBCAFEFINAQwCCwJAAkACQAJAIAIgAUEMaigCACIDSQRAIAEtAABBCHENBEEAIQAgAyACayICIQNBASABLQAgIgcgB0EDRhtBA3FBAWsOAgECAwtBASEAIAEgBCAFEFINBAwFC0EAIQMgAiEADAELIAJBAXYhACACQQFqQQF2IQMLIABBAWohACABQRxqKAIAIQcgASgCBCECIAEoAhghCgJAA0AgAEEBayIARQ0BIAogAiAHKAIQEQQARQ0AC0EBDAQLQQEhACACQYCAxABGDQEgASAEIAUQUg0BIAEoAhggCCAJIAEoAhwoAgwRBQANASABKAIcIQQgASgCGCEBQQAhAAJ/A0AgAyAAIANGDQEaIABBAWohACABIAIgBCgCEBEEAEUNAAsgAEEBawsgA0khAAwBCyABKAIEIQcgAUEwNgIEIAEtACAhCkEBIQAgAUEBOgAgIAEgBCAFEFINAEEAIQAgAyACayICIQMCQAJAAkBBASABLQAgIgQgBEEDRhtBA3FBAWsOAgABAgtBACEDIAIhAAwBCyACQQF2IQAgAkEBakEBdiEDCyAAQQFqIQAgAUEcaigCACECIAEoAgQhBCABKAIYIQUCQANAIABBAWsiAEUNASAFIAQgAigCEBEEAEUNAAtBAQwDC0EBIQAgBEGAgMQARg0AIAEoAhggCCAJIAEoAhwoAgwRBQANACABKAIcIQAgASgCGCEFQQAhAgJAA0AgAiADRg0BIAJBAWohAiAFIAQgACgCEBEEAEUNAAtBASEAIAJBAWsgA0kNAQsgASAKOgAgIAEgBzYCBEEADAILIAAMAQsgASgCGCAIIAkgAUEcaigCACgCDBEFAAsgBkEwaiQACwsAIAAQNiAAELABCysCAX8BfkIBIQIDQCAAIAFq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AAANAEHgs8AAC8EHYXR0ZW1wdCB0byBkaXZpZGUgYnkgemVybwAAAAAAAABhdHRlbXB0IHRvIGRpdmlkZSB3aXRoIG92ZXJmbG93ALAZEAASAAAADAIAAA0AAACwGRAAEgAAABgCAAAmAAAAsBkQABIAAAAYAgAAIwAAALAZEAASAAAAHgIAABcAAACwGRAAEgAAAB4CAAAUAAAAqqr//////gHu//9UrP//AupBYg9rDyoBw5z9ShTOEwJLd2TXrEtDAu3pxpKm+V8Cox4RoAEAAAADAAAABAAAAAQAAAAEAAAABQAAAAYAAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlbWVtb3J5IGFsbG9jYXRpb24gb2YgIGJ5dGVzIGZhaWxlZAoAAOsaEAAVAAAAABsQAA4AAABsaWJyYXJ5L3N0ZC9zcmMvYWxsb2MucnMgGxAAGAAAAEkBAAAJAAAAbGlicmFyeS9zdGQvc3JjL3Bhbmlja2luZy5yc0gbEAAcAAAARgIAAB8AAABIGxAAHAAAAEcCAAAeAAAABwAAAAwAAAAEAAAACAAAAAMAAAAIAAAABAAAAAkAAAAKAAAAEAAAAAQAAAALAAAADAAAAAMAAAAIAAAABAAAAA0AAAAOAAAAbGlicmFyeS9hbGxvYy9zcmMvcmF3X3ZlYy5yc2NhcGFjaXR5IG92ZXJmbG93AAAA6BsQABEAAADMGxAAHAAAAAUCAAAFAAAAEAAAAAAAAAABAAAAEQAAAGluZGV4IG91dCBvZiBib3VuZHM6IHRoZSBsZW4gaXMgIGJ1dCB0aGUgaW5kZXggaXMgAAAkHBAAIAAAAEQcEAASAAAAMDAwMTAyMDMwNDA1MDYwNzA4MDkxMDExMTIxMzE0MTUxNjE3MTgxOTIwMjEyMjIzMjQyNTI2MjcyODI5MzAzMTMyMzMzNDM1MzYzNzM4Mzk0MDQxNDI0MzQ0NDU0NjQ3NDg0OTUwNTE1MjUzNTQ1NTU2NTc1ODU5NjA2MTYyNjM2NDY1NjY2NzY4Njk3MDcxNzI3Mzc0NzU3Njc3Nzg3OTgwODE4MjgzODQ4NTg2ODc4ODg5OTA5MTkyOTM5NDk1OTY5Nzk4OTkgb3V0IG9mIHJhbmdlIGZvciBzbGljZSBvZiBsZW5ndGggbGlicmFyeS9jb3JlL3NyYy9zbGljZS9pbmRleC5yc3JhbmdlIGVuZCBpbmRleCAAAABxHRAAEAAAADAdEAAiAAAAUh0QAB8AAABJAAAABQB7CXByb2R1Y2VycwIIbGFuZ3VhZ2UBBFJ1c3QADHByb2Nlc3NlZC1ieQMFcnVzdGMdMS42MS4wIChmZTViMTNkNjggMjAyMi0wNS0xOCkGd2FscnVzBjAuMTkuMAx3YXNtLWJpbmRnZW4SMC4yLjgxICgwNjJhYTVmNzAp`;\n","import init, { bls_init, bls_verify } from '../vendor/bls/bls';\n\nexport let verify: (pk: Uint8Array, sig: Uint8Array, msg: Uint8Array) => boolean;\n\n/**\n *\n * @param pk primary key: Uint8Array\n * @param sig signature: Uint8Array\n * @param msg message: Uint8Array\n * @returns Promise resolving a boolean\n */\nexport async function blsVerify(\n pk: Uint8Array,\n sig: Uint8Array,\n msg: Uint8Array,\n): Promise {\n if (!verify) {\n await init();\n if (bls_init() !== 0) {\n throw new Error('Cannot initialize BLS');\n }\n verify = (pk1, sig1, msg1) => {\n // Reorder things from what the WASM expects (sig, m, w).\n return bls_verify(sig1, msg1, pk1) === 0;\n };\n }\n return verify(pk, sig, msg);\n}\n","/**\n * Concatenate multiple array buffers.\n * @param buffers The buffers to concatenate.\n */\nexport function concat(...buffers: ArrayBuffer[]): ArrayBuffer {\n const result = new Uint8Array(buffers.reduce((acc, curr) => acc + curr.byteLength, 0));\n let index = 0;\n for (const b of buffers) {\n result.set(new Uint8Array(b), index);\n index += b.byteLength;\n }\n return result.buffer;\n}\n\n/**\n * Transforms a buffer to an hexadecimal string. This will use the buffer as an Uint8Array.\n * @param buffer The buffer to return the hexadecimal string of.\n */\nexport function toHex(buffer: ArrayBuffer): string {\n return [...new Uint8Array(buffer)].map(x => x.toString(16).padStart(2, '0')).join('');\n}\n\nconst hexRe = new RegExp(/^([0-9A-F]{2})*$/i);\n\n/**\n * Transforms a hexadecimal string into an array buffer.\n * @param hex The hexadecimal string to use.\n */\nexport function fromHex(hex: string): ArrayBuffer {\n if (!hexRe.test(hex)) {\n throw new Error('Invalid hexadecimal string.');\n }\n const buffer = [...hex]\n .reduce((acc, curr, i) => {\n // tslint:disable-next-line:no-bitwise\n acc[(i / 2) | 0] = (acc[(i / 2) | 0] || '') + curr;\n return acc;\n }, [] as string[])\n .map(x => Number.parseInt(x, 16));\n\n return new Uint8Array(buffer).buffer;\n}\n\nexport function compare(b1: ArrayBuffer, b2: ArrayBuffer): number {\n if (b1.byteLength !== b2.byteLength) {\n return b1.byteLength - b2.byteLength;\n }\n\n const u1 = new Uint8Array(b1);\n const u2 = new Uint8Array(b2);\n for (let i = 0; i < u1.length; i++) {\n if (u1[i] !== u2[i]) {\n return u1[i] - u2[i];\n }\n }\n return 0;\n}\n\n/**\n * Returns a true ArrayBuffer from a Uint8Array, as Uint8Array.buffer is unsafe.\n * @param {Uint8Array} arr Uint8Array to convert\n * @returns ArrayBuffer\n */\nexport function uint8ToBuf(arr: Uint8Array): ArrayBuffer {\n return new DataView(arr.buffer, arr.byteOffset, arr.byteLength).buffer;\n}\n","/**\n * Concatenate multiple array buffers.\n * @param buffers The buffers to concatenate.\n */\nexport function concat(...buffers: ArrayBuffer[]): ArrayBuffer {\n const result = new Uint8Array(buffers.reduce((acc, curr) => acc + curr.byteLength, 0));\n let index = 0;\n for (const b of buffers) {\n result.set(new Uint8Array(b), index);\n index += b.byteLength;\n }\n return result;\n}\n\n/**\n * Returns an hexadecimal representation of an array buffer.\n * @param bytes The array buffer.\n */\nexport function toHexString(bytes: ArrayBuffer): string {\n return new Uint8Array(bytes).reduce((str, byte) => str + byte.toString(16).padStart(2, '0'), '');\n}\n\n/**\n * Return an array buffer from its hexadecimal representation.\n * @param hexString The hexadecimal string.\n */\nexport function fromHexString(hexString: string): ArrayBuffer {\n return new Uint8Array((hexString.match(/.{1,2}/g) ?? []).map(byte => parseInt(byte, 16)));\n}\n\n/**\n * A class that abstracts a pipe-like ArrayBuffer.\n */\nexport class PipeArrayBuffer {\n /**\n * The reading view. It's a sliding window as we read and write, pointing to the buffer.\n * @private\n */\n private _view: Uint8Array;\n\n /**\n * The actual buffer containing the bytes.\n * @private\n */\n private _buffer: ArrayBuffer;\n\n /**\n * Creates a new instance of a pipe\n * @param buffer an optional buffer to start with\n * @param length an optional amount of bytes to use for the length.\n */\n constructor(buffer?: ArrayBuffer, length = buffer?.byteLength || 0) {\n this._buffer = buffer || new ArrayBuffer(0);\n this._view = new Uint8Array(this._buffer, 0, length);\n }\n\n get buffer(): ArrayBuffer {\n // Return a copy of the buffer.\n return this._view.slice();\n }\n\n get byteLength(): number {\n return this._view.byteLength;\n }\n\n /**\n * Read `num` number of bytes from the front of the pipe.\n * @param num The number of bytes to read.\n */\n public read(num: number): ArrayBuffer {\n const result = this._view.subarray(0, num);\n this._view = this._view.subarray(num);\n return result.slice().buffer;\n }\n\n public readUint8(): number | undefined {\n const result = this._view[0];\n this._view = this._view.subarray(1);\n return result;\n }\n\n /**\n * Write a buffer to the end of the pipe.\n * @param buf The bytes to write.\n */\n public write(buf: ArrayBuffer): void {\n const b = new Uint8Array(buf);\n const offset = this._view.byteLength;\n if (this._view.byteOffset + this._view.byteLength + b.byteLength >= this._buffer.byteLength) {\n // Alloc grow the view to include the new bytes.\n this.alloc(b.byteLength);\n } else {\n // Update the view to include the new bytes.\n this._view = new Uint8Array(\n this._buffer,\n this._view.byteOffset,\n this._view.byteLength + b.byteLength,\n );\n }\n\n this._view.set(b, offset);\n }\n\n /**\n * Whether or not there is more data to read from the buffer\n */\n public get end(): boolean {\n return this._view.byteLength === 0;\n }\n\n /**\n * Allocate a fixed amount of memory in the buffer. This does not affect the view.\n * @param amount A number of bytes to add to the buffer.\n */\n public alloc(amount: number) {\n // Add a little bit of exponential growth.\n // tslint:disable-next-line:no-bitwise\n const b = new ArrayBuffer(((this._buffer.byteLength + amount) * 1.2) | 0);\n const v = new Uint8Array(b, 0, this._view.byteLength + amount);\n v.set(this._view);\n this._buffer = b;\n this._view = v;\n }\n}\n","/**\n * Hashes a string to a number. Algorithm can be found here:\n * https://caml.inria.fr/pub/papers/garrigue-polymorphic_variants-ml98.pdf\n * @param s\n */\nfunction idlHash(s: string): number {\n const utf8encoder = new TextEncoder();\n const array = utf8encoder.encode(s);\n\n let h = 0;\n for (const c of array) {\n h = (h * 223 + c) % 2 ** 32;\n }\n return h;\n}\n\n/**\n *\n * @param label string\n * @returns number representing hashed label\n */\nexport function idlLabelToId(label: string): number {\n if (/^_\\d+_$/.test(label) || /^_0x[0-9a-fA-F]+_$/.test(label)) {\n const num = +label.slice(1, -1);\n if (Number.isSafeInteger(num) && num >= 0 && num < 2 ** 32) {\n return num;\n }\n }\n return idlHash(label);\n}\n","/* eslint-disable no-constant-condition */\n// tslint:disable:no-bitwise\n// Note: this file uses buffer-pipe, which on Node only, uses the Node Buffer\n// implementation, which isn't compatible with the NPM buffer package\n// which we use everywhere else. This means that we have to transform\n// one into the other, hence why every function that returns a Buffer\n// actually return `new Buffer(pipe.buffer)`.\n// TODO: The best solution would be to have our own buffer type around\n// Uint8Array which is standard.\nimport { PipeArrayBuffer as Pipe } from './buffer';\n\nfunction eob(): never {\n throw new Error('unexpected end of buffer');\n}\n\n/**\n *\n * @param pipe Pipe from buffer-pipe\n * @param num number\n * @returns Buffer\n */\nexport function safeRead(pipe: Pipe, num: number): ArrayBuffer {\n if (pipe.byteLength < num) {\n eob();\n }\n return pipe.read(num);\n}\n\n/**\n * @param pipe\n */\nexport function safeReadUint8(pipe: Pipe): number {\n const byte = pipe.readUint8();\n if (byte === undefined) {\n eob();\n }\n return byte;\n}\n\n/**\n * Encode a positive number (or bigint) into a Buffer. The number will be floored to the\n * nearest integer.\n * @param value The number to encode.\n */\nexport function lebEncode(value: bigint | number): ArrayBuffer {\n if (typeof value === 'number') {\n value = BigInt(value);\n }\n\n if (value < BigInt(0)) {\n throw new Error('Cannot leb encode negative values.');\n }\n\n const byteLength = (value === BigInt(0) ? 0 : Math.ceil(Math.log2(Number(value)))) + 1;\n const pipe = new Pipe(new ArrayBuffer(byteLength), 0);\n while (true) {\n const i = Number(value & BigInt(0x7f));\n value /= BigInt(0x80);\n if (value === BigInt(0)) {\n pipe.write(new Uint8Array([i]));\n break;\n } else {\n pipe.write(new Uint8Array([i | 0x80]));\n }\n }\n\n return pipe.buffer;\n}\n\n/**\n * Decode a leb encoded buffer into a bigint. The number will always be positive (does not\n * support signed leb encoding).\n * @param pipe A Buffer containing the leb encoded bits.\n */\nexport function lebDecode(pipe: Pipe): bigint {\n let weight = BigInt(1);\n let value = BigInt(0);\n let byte;\n\n do {\n byte = safeReadUint8(pipe);\n value += BigInt(byte & 0x7f).valueOf() * weight;\n weight *= BigInt(128);\n } while (byte >= 0x80);\n\n return value;\n}\n\n/**\n * Encode a number (or bigint) into a Buffer, with support for negative numbers. The number\n * will be floored to the nearest integer.\n * @param value The number to encode.\n */\nexport function slebEncode(value: bigint | number): ArrayBuffer {\n if (typeof value === 'number') {\n value = BigInt(value);\n }\n\n const isNeg = value < BigInt(0);\n if (isNeg) {\n value = -value - BigInt(1);\n }\n const byteLength = (value === BigInt(0) ? 0 : Math.ceil(Math.log2(Number(value)))) + 1;\n const pipe = new Pipe(new ArrayBuffer(byteLength), 0);\n while (true) {\n const i = getLowerBytes(value);\n value /= BigInt(0x80);\n\n // prettier-ignore\n if ( ( isNeg && value === BigInt(0) && (i & 0x40) !== 0)\n || (!isNeg && value === BigInt(0) && (i & 0x40) === 0)) {\n pipe.write(new Uint8Array([i]));\n break;\n } else {\n pipe.write(new Uint8Array([i | 0x80]));\n }\n }\n\n function getLowerBytes(num: bigint): number {\n const bytes = num % BigInt(0x80);\n if (isNeg) {\n // We swap the bits here again, and remove 1 to do two's complement.\n return Number(BigInt(0x80) - bytes - BigInt(1));\n } else {\n return Number(bytes);\n }\n }\n return pipe.buffer;\n}\n\n/**\n * Decode a leb encoded buffer into a bigint. The number is decoded with support for negative\n * signed-leb encoding.\n * @param pipe A Buffer containing the signed leb encoded bits.\n */\nexport function slebDecode(pipe: Pipe): bigint {\n // Get the size of the buffer, then cut a buffer of that size.\n const pipeView = new Uint8Array(pipe.buffer);\n let len = 0;\n for (; len < pipeView.byteLength; len++) {\n if (pipeView[len] < 0x80) {\n // If it's a positive number, we reuse lebDecode.\n if ((pipeView[len] & 0x40) === 0) {\n return lebDecode(pipe);\n }\n break;\n }\n }\n\n const bytes = new Uint8Array(safeRead(pipe, len + 1));\n let value = BigInt(0);\n for (let i = bytes.byteLength - 1; i >= 0; i--) {\n value = value * BigInt(0x80) + BigInt(0x80 - (bytes[i] & 0x7f) - 1);\n }\n return -value - BigInt(1);\n}\n\n/**\n *\n * @param value bigint or number\n * @param byteLength number\n * @returns Buffer\n */\nexport function writeUIntLE(value: bigint | number, byteLength: number): ArrayBuffer {\n if (BigInt(value) < BigInt(0)) {\n throw new Error('Cannot write negative values.');\n }\n return writeIntLE(value, byteLength);\n}\n\n/**\n *\n * @param value\n * @param byteLength\n */\nexport function writeIntLE(value: bigint | number, byteLength: number): ArrayBuffer {\n value = BigInt(value);\n\n const pipe = new Pipe(new ArrayBuffer(Math.min(1, byteLength)), 0);\n let i = 0;\n let mul = BigInt(256);\n let sub = BigInt(0);\n let byte = Number(value % mul);\n pipe.write(new Uint8Array([byte]));\n while (++i < byteLength) {\n if (value < 0 && sub === BigInt(0) && byte !== 0) {\n sub = BigInt(1);\n }\n byte = Number((value / mul - sub) % BigInt(256));\n pipe.write(new Uint8Array([byte]));\n mul *= BigInt(256);\n }\n\n return pipe.buffer;\n}\n\n/**\n *\n * @param pipe Pipe from buffer-pipe\n * @param byteLength number\n * @returns bigint\n */\nexport function readUIntLE(pipe: Pipe, byteLength: number): bigint {\n let val = BigInt(safeReadUint8(pipe));\n let mul = BigInt(1);\n let i = 0;\n while (++i < byteLength) {\n mul *= BigInt(256);\n const byte = BigInt(safeReadUint8(pipe));\n val = val + mul * byte;\n }\n return val;\n}\n\n/**\n *\n * @param pipe Pipe from buffer-pipe\n * @param byteLength number\n * @returns bigint\n */\nexport function readIntLE(pipe: Pipe, byteLength: number): bigint {\n let val = readUIntLE(pipe, byteLength);\n const mul = BigInt(2) ** (BigInt(8) * BigInt(byteLength - 1) + BigInt(7));\n if (val >= mul) {\n val -= mul * BigInt(2);\n }\n return val;\n}\n","/**\n * Equivalent to `Math.log2(n)` with support for `BigInt` values\n *\n * @param n bigint or integer\n * @returns integer\n */\nexport function ilog2(n: bigint | number): number {\n const nBig = BigInt(n);\n if (n <= 0) {\n throw new RangeError('Input must be positive');\n }\n return nBig.toString(2).length - 1;\n}\n\n/**\n * Equivalent to `2 ** n` with support for `BigInt` values\n * (necessary for browser preprocessors which replace the `**` operator with `Math.pow`)\n *\n * @param n bigint or integer\n * @returns bigint\n */\nexport function iexp2(n: bigint | number): bigint {\n const nBig = BigInt(n);\n if (n < 0) {\n throw new RangeError('Input must be non-negative');\n }\n return BigInt(1) << nBig;\n}\n","// tslint:disable:max-classes-per-file\nimport { Principal as PrincipalId } from '@dfinity/principal';\nimport { JsonValue } from './types';\nimport { concat, PipeArrayBuffer as Pipe } from './utils/buffer';\nimport { idlLabelToId } from './utils/hash';\nimport {\n lebDecode,\n lebEncode,\n readIntLE,\n readUIntLE,\n safeRead,\n safeReadUint8,\n slebDecode,\n slebEncode,\n writeIntLE,\n writeUIntLE,\n} from './utils/leb128';\nimport { iexp2 } from './utils/bigint-math';\n\n// tslint:disable:max-line-length\n/**\n * This module provides a combinator library to create serializers/deserializers\n * between JavaScript values and IDL used by canisters on the Internet Computer,\n * as documented at https://github.com/dfinity/candid/blob/119703ba342d2fef6ab4972d2541b9fe36ae8e36/spec/Candid.md\n */\n// tslint:enable:max-line-length\n\nconst enum IDLTypeIds {\n Null = -1,\n Bool = -2,\n Nat = -3,\n Int = -4,\n Float32 = -13,\n Float64 = -14,\n Text = -15,\n Reserved = -16,\n Empty = -17,\n Opt = -18,\n Vector = -19,\n Record = -20,\n Variant = -21,\n Func = -22,\n Service = -23,\n Principal = -24,\n}\n\nconst magicNumber = 'DIDL';\nconst toReadableString_max = 400; // will not display arguments after 400chars. Makes sure 2mb blobs don't get inside the error\n\nfunction zipWith(xs: TX[], ys: TY[], f: (a: TX, b: TY) => TR): TR[] {\n return xs.map((x, i) => f(x, ys[i]));\n}\n\n/**\n * An IDL Type Table, which precedes the data in the stream.\n */\nclass TypeTable {\n // List of types. Needs to be an array as the index needs to be stable.\n private _typs: ArrayBuffer[] = [];\n private _idx = new Map();\n\n public has(obj: ConstructType) {\n return this._idx.has(obj.name);\n }\n\n public add(type: ConstructType, buf: ArrayBuffer) {\n const idx = this._typs.length;\n this._idx.set(type.name, idx);\n this._typs.push(buf);\n }\n\n public merge(obj: ConstructType, knot: string) {\n const idx = this._idx.get(obj.name);\n const knotIdx = this._idx.get(knot);\n if (idx === undefined) {\n throw new Error('Missing type index for ' + obj);\n }\n if (knotIdx === undefined) {\n throw new Error('Missing type index for ' + knot);\n }\n this._typs[idx] = this._typs[knotIdx];\n\n // Delete the type.\n this._typs.splice(knotIdx, 1);\n this._idx.delete(knot);\n }\n\n public encode() {\n const len = lebEncode(this._typs.length);\n const buf = concat(...this._typs);\n return concat(len, buf);\n }\n\n public indexOf(typeName: string) {\n if (!this._idx.has(typeName)) {\n throw new Error('Missing type index for ' + typeName);\n }\n return slebEncode(this._idx.get(typeName) || 0);\n }\n}\n\nexport abstract class Visitor {\n public visitType(t: Type, data: D): R {\n throw new Error('Not implemented');\n }\n public visitPrimitive(t: PrimitiveType, data: D): R {\n return this.visitType(t, data);\n }\n public visitEmpty(t: EmptyClass, data: D): R {\n return this.visitPrimitive(t, data);\n }\n public visitBool(t: BoolClass, data: D): R {\n return this.visitPrimitive(t, data);\n }\n public visitNull(t: NullClass, data: D): R {\n return this.visitPrimitive(t, data);\n }\n public visitReserved(t: ReservedClass, data: D): R {\n return this.visitPrimitive(t, data);\n }\n public visitText(t: TextClass, data: D): R {\n return this.visitPrimitive(t, data);\n }\n public visitNumber(t: PrimitiveType, data: D): R {\n return this.visitPrimitive(t, data);\n }\n public visitInt(t: IntClass, data: D): R {\n return this.visitNumber(t, data);\n }\n public visitNat(t: NatClass, data: D): R {\n return this.visitNumber(t, data);\n }\n public visitFloat(t: FloatClass, data: D): R {\n return this.visitPrimitive(t, data);\n }\n public visitFixedInt(t: FixedIntClass, data: D): R {\n return this.visitNumber(t, data);\n }\n public visitFixedNat(t: FixedNatClass, data: D): R {\n return this.visitNumber(t, data);\n }\n public visitPrincipal(t: PrincipalClass, data: D): R {\n return this.visitPrimitive(t, data);\n }\n\n public visitConstruct(t: ConstructType, data: D): R {\n return this.visitType(t, data);\n }\n public visitVec(t: VecClass, ty: Type, data: D): R {\n return this.visitConstruct(t, data);\n }\n public visitOpt(t: OptClass, ty: Type, data: D): R {\n return this.visitConstruct(t, data);\n }\n public visitRecord(t: RecordClass, fields: Array<[string, Type]>, data: D): R {\n return this.visitConstruct(t, data);\n }\n public visitTuple(t: TupleClass, components: Type[], data: D): R {\n const fields: Array<[string, Type]> = components.map((ty, i) => [`_${i}_`, ty]);\n return this.visitRecord(t, fields, data);\n }\n public visitVariant(t: VariantClass, fields: Array<[string, Type]>, data: D): R {\n return this.visitConstruct(t, data);\n }\n public visitRec(t: RecClass, ty: ConstructType, data: D): R {\n return this.visitConstruct(ty, data);\n }\n public visitFunc(t: FuncClass, data: D): R {\n return this.visitConstruct(t, data);\n }\n public visitService(t: ServiceClass, data: D): R {\n return this.visitConstruct(t, data);\n }\n}\n\n/**\n * Represents an IDL type.\n */\nexport abstract class Type {\n public abstract readonly name: string;\n public abstract accept(v: Visitor, d: D): R;\n\n /* Display type name */\n public display(): string {\n return this.name;\n }\n\n public valueToString(x: T): string {\n return toReadableString(x);\n }\n\n /* Implement `T` in the IDL spec, only needed for non-primitive types */\n public buildTypeTable(typeTable: TypeTable): void {\n if (!typeTable.has(this)) {\n this._buildTypeTableImpl(typeTable);\n }\n }\n\n /**\n * Assert that JavaScript's `x` is the proper type represented by this\n * Type.\n */\n public abstract covariant(x: any): x is T;\n\n /**\n * Encode the value. This needs to be public because it is used by\n * encodeValue() from different types.\n * @internal\n */\n public abstract encodeValue(x: T): ArrayBuffer;\n\n /**\n * Implement `I` in the IDL spec.\n * Encode this type for the type table.\n */\n public abstract encodeType(typeTable: TypeTable): ArrayBuffer;\n\n public abstract checkType(t: Type): Type;\n public abstract decodeValue(x: Pipe, t: Type): T;\n\n protected abstract _buildTypeTableImpl(typeTable: TypeTable): void;\n}\n\nexport abstract class PrimitiveType extends Type {\n public checkType(t: Type): Type {\n if (this.name !== t.name) {\n throw new Error(`type mismatch: type on the wire ${t.name}, expect type ${this.name}`);\n }\n return t;\n }\n public _buildTypeTableImpl(typeTable: TypeTable): void {\n // No type table encoding for Primitive types.\n return;\n }\n}\n\nexport abstract class ConstructType extends Type {\n public checkType(t: Type): ConstructType {\n if (t instanceof RecClass) {\n const ty = t.getType();\n if (typeof ty === 'undefined') {\n throw new Error('type mismatch with uninitialized type');\n }\n return ty;\n }\n throw new Error(`type mismatch: type on the wire ${t.name}, expect type ${this.name}`);\n }\n public encodeType(typeTable: TypeTable) {\n return typeTable.indexOf(this.name);\n }\n}\n\n/**\n * Represents an IDL Empty, a type which has no inhabitants.\n * Since no values exist for this type, it cannot be serialised or deserialised.\n * Result types like `Result` should always succeed.\n */\nexport class EmptyClass extends PrimitiveType {\n public accept(v: Visitor, d: D): R {\n return v.visitEmpty(this, d);\n }\n\n public covariant(x: any): x is never {\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(): never {\n throw new Error('Empty cannot appear as a function argument');\n }\n\n public valueToString(): never {\n throw new Error('Empty cannot appear as a value');\n }\n\n public encodeType() {\n return slebEncode(IDLTypeIds.Empty);\n }\n\n public decodeValue(): never {\n throw new Error('Empty cannot appear as an output');\n }\n\n get name() {\n return 'empty';\n }\n}\n\n/**\n * Represents an IDL Unknown, a placeholder type for deserialization only.\n * When decoding a value as Unknown, all fields will be retained but the names are only available in\n * hashed form.\n * A deserialized unknown will offer it's actual type by calling the `type()` function.\n * Unknown cannot be serialized and attempting to do so will throw an error.\n */\nexport class UnknownClass extends Type {\n public checkType(t: Type): Type {\n throw new Error('Method not implemented for unknown.');\n }\n\n public accept(v: Visitor, d: D): R {\n throw v.visitType(this, d);\n }\n\n public covariant(x: any): x is any {\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(): never {\n throw new Error('Unknown cannot appear as a function argument');\n }\n\n public valueToString(): never {\n throw new Error('Unknown cannot appear as a value');\n }\n\n public encodeType(): never {\n throw new Error('Unknown cannot be serialized');\n }\n\n public decodeValue(b: Pipe, t: Type): any {\n let decodedValue = t.decodeValue(b, t);\n\n if (Object(decodedValue) !== decodedValue) {\n // decodedValue is primitive. Box it, otherwise we cannot add the type() function.\n // The type() function is important for primitives because otherwise we cannot tell apart the\n // different number types.\n decodedValue = Object(decodedValue);\n }\n\n let typeFunc;\n if (t instanceof RecClass) {\n typeFunc = () => t.getType();\n } else {\n typeFunc = () => t;\n }\n // Do not use 'decodedValue.type = typeFunc' because this would lead to an enumerable property\n // 'type' which means it would be serialized if the value would be candid encoded again.\n // This in turn leads to problems if the decoded value is a variant because these values are\n // only allowed to have a single property.\n Object.defineProperty(decodedValue, 'type', {\n value: typeFunc,\n writable: true,\n enumerable: false,\n configurable: true,\n });\n return decodedValue;\n }\n\n protected _buildTypeTableImpl(): void {\n throw new Error('Unknown cannot be serialized');\n }\n\n get name() {\n return 'Unknown';\n }\n}\n\n/**\n * Represents an IDL Bool\n */\nexport class BoolClass extends PrimitiveType {\n public accept(v: Visitor, d: D): R {\n return v.visitBool(this, d);\n }\n\n public covariant(x: any): x is boolean {\n if (typeof x === 'boolean') return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: boolean): ArrayBuffer {\n return new Uint8Array([x ? 1 : 0]);\n }\n\n public encodeType() {\n return slebEncode(IDLTypeIds.Bool);\n }\n\n public decodeValue(b: Pipe, t: Type) {\n this.checkType(t);\n switch (safeReadUint8(b)) {\n case 0:\n return false;\n case 1:\n return true;\n default:\n throw new Error('Boolean value out of range');\n }\n }\n\n get name() {\n return 'bool';\n }\n}\n\n/**\n * Represents an IDL Null\n */\nexport class NullClass extends PrimitiveType {\n public accept(v: Visitor, d: D): R {\n return v.visitNull(this, d);\n }\n\n public covariant(x: any): x is null {\n if (x === null) return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue() {\n return new ArrayBuffer(0);\n }\n\n public encodeType() {\n return slebEncode(IDLTypeIds.Null);\n }\n\n public decodeValue(b: Pipe, t: Type) {\n this.checkType(t);\n return null;\n }\n\n get name() {\n return 'null';\n }\n}\n\n/**\n * Represents an IDL Reserved\n */\nexport class ReservedClass extends PrimitiveType {\n public accept(v: Visitor, d: D): R {\n return v.visitReserved(this, d);\n }\n\n public covariant(x: any): x is any {\n return true;\n }\n\n public encodeValue() {\n return new ArrayBuffer(0);\n }\n\n public encodeType() {\n return slebEncode(IDLTypeIds.Reserved);\n }\n\n public decodeValue(b: Pipe, t: Type) {\n if (t.name !== this.name) {\n t.decodeValue(b, t);\n }\n return null;\n }\n\n get name() {\n return 'reserved';\n }\n}\n\n/**\n * Represents an IDL Text\n */\nexport class TextClass extends PrimitiveType {\n public accept(v: Visitor, d: D): R {\n return v.visitText(this, d);\n }\n\n public covariant(x: any): x is string {\n if (typeof x === 'string') return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: string) {\n const buf = new TextEncoder().encode(x);\n const len = lebEncode(buf.byteLength);\n return concat(len, buf);\n }\n\n public encodeType() {\n return slebEncode(IDLTypeIds.Text);\n }\n\n public decodeValue(b: Pipe, t: Type) {\n this.checkType(t);\n const len = lebDecode(b);\n const buf = safeRead(b, Number(len));\n const decoder = new TextDecoder('utf8', { fatal: true });\n return decoder.decode(buf);\n }\n\n get name() {\n return 'text';\n }\n\n public valueToString(x: string) {\n return '\"' + x + '\"';\n }\n}\n\n/**\n * Represents an IDL Int\n */\nexport class IntClass extends PrimitiveType {\n public accept(v: Visitor, d: D): R {\n return v.visitInt(this, d);\n }\n\n public covariant(x: any): x is bigint {\n // We allow encoding of JavaScript plain numbers.\n // But we will always decode to bigint.\n if (typeof x === 'bigint' || Number.isInteger(x)) return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: bigint | number) {\n return slebEncode(x);\n }\n\n public encodeType() {\n return slebEncode(IDLTypeIds.Int);\n }\n\n public decodeValue(b: Pipe, t: Type) {\n this.checkType(t);\n return slebDecode(b);\n }\n\n get name() {\n return 'int';\n }\n\n public valueToString(x: bigint) {\n return x.toString();\n }\n}\n\n/**\n * Represents an IDL Nat\n */\nexport class NatClass extends PrimitiveType {\n public accept(v: Visitor, d: D): R {\n return v.visitNat(this, d);\n }\n\n public covariant(x: any): x is bigint {\n // We allow encoding of JavaScript plain numbers.\n // But we will always decode to bigint.\n if ((typeof x === 'bigint' && x >= BigInt(0)) || (Number.isInteger(x) && x >= 0)) return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: bigint | number) {\n return lebEncode(x);\n }\n\n public encodeType() {\n return slebEncode(IDLTypeIds.Nat);\n }\n\n public decodeValue(b: Pipe, t: Type) {\n this.checkType(t);\n return lebDecode(b);\n }\n\n get name() {\n return 'nat';\n }\n\n public valueToString(x: bigint) {\n return x.toString();\n }\n}\n\n/**\n * Represents an IDL Float\n */\nexport class FloatClass extends PrimitiveType {\n constructor(private _bits: number) {\n super();\n if (_bits !== 32 && _bits !== 64) {\n throw new Error('not a valid float type');\n }\n }\n public accept(v: Visitor, d: D): R {\n return v.visitFloat(this, d);\n }\n\n public covariant(x: any): x is number {\n if (typeof x === 'number' || x instanceof Number) return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: number) {\n const buf = new ArrayBuffer(this._bits / 8);\n const view = new DataView(buf);\n if (this._bits === 32) {\n view.setFloat32(0, x, true);\n } else {\n view.setFloat64(0, x, true);\n }\n return buf;\n }\n\n public encodeType() {\n const opcode = this._bits === 32 ? IDLTypeIds.Float32 : IDLTypeIds.Float64;\n return slebEncode(opcode);\n }\n\n public decodeValue(b: Pipe, t: Type) {\n this.checkType(t);\n const bytes = safeRead(b, this._bits / 8);\n const view = new DataView(bytes);\n if (this._bits === 32) {\n return view.getFloat32(0, true);\n } else {\n return view.getFloat64(0, true);\n }\n }\n\n get name() {\n return 'float' + this._bits;\n }\n\n public valueToString(x: number) {\n return x.toString();\n }\n}\n\n/**\n * Represents an IDL fixed-width Int(n)\n */\nexport class FixedIntClass extends PrimitiveType {\n constructor(public readonly _bits: number) {\n super();\n }\n\n public accept(v: Visitor, d: D): R {\n return v.visitFixedInt(this, d);\n }\n\n public covariant(x: any): x is bigint {\n const min = iexp2(this._bits - 1) * BigInt(-1);\n const max = iexp2(this._bits - 1) - BigInt(1);\n let ok = false;\n if (typeof x === 'bigint') {\n ok = x >= min && x <= max;\n } else if (Number.isInteger(x)) {\n const v = BigInt(x);\n ok = v >= min && v <= max;\n } else {\n ok = false;\n }\n\n if (ok) return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: bigint | number) {\n return writeIntLE(x, this._bits / 8);\n }\n\n public encodeType() {\n const offset = Math.log2(this._bits) - 3;\n return slebEncode(-9 - offset);\n }\n\n public decodeValue(b: Pipe, t: Type) {\n this.checkType(t);\n const num = readIntLE(b, this._bits / 8);\n if (this._bits <= 32) {\n return Number(num);\n } else {\n return num;\n }\n }\n\n get name() {\n return `int${this._bits}`;\n }\n\n public valueToString(x: bigint | number) {\n return x.toString();\n }\n}\n\n/**\n * Represents an IDL fixed-width Nat(n)\n */\nexport class FixedNatClass extends PrimitiveType {\n constructor(public readonly _bits: number) {\n super();\n }\n\n public accept(v: Visitor, d: D): R {\n return v.visitFixedNat(this, d);\n }\n\n public covariant(x: any): x is bigint {\n const max = iexp2(this._bits);\n let ok = false;\n if (typeof x === 'bigint' && x >= BigInt(0)) {\n ok = x < max;\n } else if (Number.isInteger(x) && x >= 0) {\n const v = BigInt(x);\n ok = v < max;\n } else {\n ok = false;\n }\n if (ok) return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: bigint | number) {\n return writeUIntLE(x, this._bits / 8);\n }\n\n public encodeType() {\n const offset = Math.log2(this._bits) - 3;\n return slebEncode(-5 - offset);\n }\n\n public decodeValue(b: Pipe, t: Type) {\n this.checkType(t);\n const num = readUIntLE(b, this._bits / 8);\n if (this._bits <= 32) {\n return Number(num);\n } else {\n return num;\n }\n }\n\n get name() {\n return `nat${this._bits}`;\n }\n\n public valueToString(x: bigint | number) {\n return x.toString();\n }\n}\n\n/**\n * Represents an IDL Array\n *\n * Arrays of fixed-sized nat/int type (e.g. nat8), are encoded from and decoded to TypedArrays (e.g. Uint8Array).\n * Arrays of float or other non-primitive types are encoded/decoded as untyped array in Javascript.\n *\n * @param {Type} t\n */\nexport class VecClass extends ConstructType {\n // If true, this vector is really a blob and we can just use memcpy.\n //\n // NOTE:\n // With support of encoding/dencoding of TypedArrays, this optimization is\n // only used when plain array of bytes are passed as encoding input in order\n // to be backward compatible.\n private _blobOptimization = false;\n\n constructor(protected _type: Type) {\n super();\n if (_type instanceof FixedNatClass && _type._bits === 8) {\n this._blobOptimization = true;\n }\n }\n\n public accept(v: Visitor, d: D): R {\n return v.visitVec(this, this._type, d);\n }\n\n public covariant(x: any): x is T[] {\n // Special case for ArrayBuffer\n const bits =\n this._type instanceof FixedNatClass\n ? this._type._bits\n : this._type instanceof FixedIntClass\n ? this._type._bits\n : 0;\n\n if (\n (ArrayBuffer.isView(x) && bits == (x as any).BYTES_PER_ELEMENT * 8) ||\n (Array.isArray(x) &&\n x.every((v, idx) => {\n try {\n return this._type.covariant(v);\n } catch (e: any) {\n throw new Error(`Invalid ${this.display()} argument: \\n\\nindex ${idx} -> ${e.message}`);\n }\n }))\n )\n return true;\n\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: T[]) {\n const len = lebEncode(x.length);\n if (this._blobOptimization) {\n return concat(len, new Uint8Array(x as unknown as number[]));\n }\n if (ArrayBuffer.isView(x)) {\n return concat(len, new Uint8Array(x.buffer));\n }\n const buf = new Pipe(new ArrayBuffer(len.byteLength + x.length), 0);\n buf.write(len);\n for (const d of x) {\n const encoded = this._type.encodeValue(d);\n buf.write(new Uint8Array(encoded));\n }\n return buf.buffer;\n }\n\n public _buildTypeTableImpl(typeTable: TypeTable) {\n this._type.buildTypeTable(typeTable);\n\n const opCode = slebEncode(IDLTypeIds.Vector);\n const buffer = this._type.encodeType(typeTable);\n typeTable.add(this, concat(opCode, buffer));\n }\n\n public decodeValue(b: Pipe, t: Type): T[] {\n const vec = this.checkType(t);\n if (!(vec instanceof VecClass)) {\n throw new Error('Not a vector type');\n }\n const len = Number(lebDecode(b));\n\n if (this._type instanceof FixedNatClass) {\n if (this._type._bits == 8) {\n return new Uint8Array(b.read(len)) as unknown as T[];\n }\n if (this._type._bits == 16) {\n return new Uint16Array(b.read(len * 2)) as unknown as T[];\n }\n if (this._type._bits == 32) {\n return new Uint32Array(b.read(len * 4)) as unknown as T[];\n }\n if (this._type._bits == 64) {\n return new BigUint64Array(b.read(len * 8)) as unknown as T[];\n }\n }\n\n if (this._type instanceof FixedIntClass) {\n if (this._type._bits == 8) {\n return new Int8Array(b.read(len)) as unknown as T[];\n }\n if (this._type._bits == 16) {\n return new Int16Array(b.read(len * 2)) as unknown as T[];\n }\n if (this._type._bits == 32) {\n return new Int32Array(b.read(len * 4)) as unknown as T[];\n }\n if (this._type._bits == 64) {\n return new BigInt64Array(b.read(len * 8)) as unknown as T[];\n }\n }\n\n const rets: T[] = [];\n for (let i = 0; i < len; i++) {\n rets.push(this._type.decodeValue(b, vec._type));\n }\n return rets;\n }\n\n get name() {\n return `vec ${this._type.name}`;\n }\n\n public display() {\n return `vec ${this._type.display()}`;\n }\n\n public valueToString(x: T[]) {\n const elements = x.map(e => this._type.valueToString(e));\n return 'vec {' + elements.join('; ') + '}';\n }\n}\n\n/**\n * Represents an IDL Option\n * @param {Type} t\n */\nexport class OptClass extends ConstructType<[T] | []> {\n constructor(protected _type: Type) {\n super();\n }\n\n public accept(v: Visitor, d: D): R {\n return v.visitOpt(this, this._type, d);\n }\n\n public covariant(x: any): x is [T] | [] {\n try {\n if (Array.isArray(x) && (x.length === 0 || (x.length === 1 && this._type.covariant(x[0]))))\n return true;\n } catch (e: any) {\n throw new Error(\n `Invalid ${this.display()} argument: ${toReadableString(x)} \\n\\n-> ${e.message}`,\n );\n }\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: [T] | []) {\n if (x.length === 0) {\n return new Uint8Array([0]);\n } else {\n return concat(new Uint8Array([1]), this._type.encodeValue(x[0]));\n }\n }\n\n public _buildTypeTableImpl(typeTable: TypeTable) {\n this._type.buildTypeTable(typeTable);\n\n const opCode = slebEncode(IDLTypeIds.Opt);\n const buffer = this._type.encodeType(typeTable);\n typeTable.add(this, concat(opCode, buffer));\n }\n\n public decodeValue(b: Pipe, t: Type): [T] | [] {\n const opt = this.checkType(t);\n if (!(opt instanceof OptClass)) {\n throw new Error('Not an option type');\n }\n switch (safeReadUint8(b)) {\n case 0:\n return [];\n case 1:\n return [this._type.decodeValue(b, opt._type)];\n default:\n throw new Error('Not an option value');\n }\n }\n\n get name() {\n return `opt ${this._type.name}`;\n }\n\n public display() {\n return `opt ${this._type.display()}`;\n }\n\n public valueToString(x: [T] | []) {\n if (x.length === 0) {\n return 'null';\n } else {\n return `opt ${this._type.valueToString(x[0])}`;\n }\n }\n}\n\n/**\n * Represents an IDL Record\n * @param {Object} [fields] - mapping of function name to Type\n */\nexport class RecordClass extends ConstructType> {\n protected readonly _fields: Array<[string, Type]>;\n\n constructor(fields: Record = {}) {\n super();\n this._fields = Object.entries(fields).sort((a, b) => idlLabelToId(a[0]) - idlLabelToId(b[0]));\n }\n\n public accept(v: Visitor, d: D): R {\n return v.visitRecord(this, this._fields, d);\n }\n\n public tryAsTuple(): Type[] | null {\n const res: Type[] = [];\n for (let i = 0; i < this._fields.length; i++) {\n const [key, type] = this._fields[i];\n if (key !== `_${i}_`) {\n return null;\n }\n res.push(type);\n }\n return res;\n }\n\n public covariant(x: any): x is Record {\n if (\n typeof x === 'object' &&\n this._fields.every(([k, t]) => {\n // eslint-disable-next-line\n if (!x.hasOwnProperty(k)) {\n throw new Error(`Record is missing key \"${k}\".`);\n }\n try {\n return t.covariant(x[k]);\n } catch (e: any) {\n throw new Error(`Invalid ${this.display()} argument: \\n\\nfield ${k} -> ${e.message}`);\n }\n })\n )\n return true;\n\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: Record) {\n const values = this._fields.map(([key]) => x[key]);\n const bufs = zipWith(this._fields, values, ([, c], d) => c.encodeValue(d));\n return concat(...bufs);\n }\n\n public _buildTypeTableImpl(T: TypeTable) {\n this._fields.forEach(([_, value]) => value.buildTypeTable(T));\n const opCode = slebEncode(IDLTypeIds.Record);\n const len = lebEncode(this._fields.length);\n const fields = this._fields.map(([key, value]) =>\n concat(lebEncode(idlLabelToId(key)), value.encodeType(T)),\n );\n\n T.add(this, concat(opCode, len, concat(...fields)));\n }\n\n public decodeValue(b: Pipe, t: Type) {\n const record = this.checkType(t);\n if (!(record instanceof RecordClass)) {\n throw new Error('Not a record type');\n }\n const x: Record = {};\n\n let expectedRecordIdx = 0;\n let actualRecordIdx = 0;\n while (actualRecordIdx < record._fields.length) {\n const [hash, type] = record._fields[actualRecordIdx];\n\n if (expectedRecordIdx >= this._fields.length) {\n // skip unexpected left over fields present on the wire\n type.decodeValue(b, type);\n actualRecordIdx++;\n continue;\n }\n\n const [expectKey, expectType] = this._fields[expectedRecordIdx];\n const expectedId = idlLabelToId(this._fields[expectedRecordIdx][0]);\n const actualId = idlLabelToId(hash);\n if (expectedId === actualId) {\n // the current field on the wire matches the expected field\n x[expectKey] = expectType.decodeValue(b, type);\n expectedRecordIdx++;\n actualRecordIdx++;\n } else if (actualId > expectedId) {\n // The expected field does not exist on the wire\n if (expectType instanceof OptClass || expectType instanceof ReservedClass) {\n x[expectKey] = [];\n expectedRecordIdx++;\n } else {\n throw new Error('Cannot find required field ' + expectKey);\n }\n } else {\n // The field on the wire does not exist in the output type, so we can skip it\n type.decodeValue(b, type);\n actualRecordIdx++;\n }\n }\n\n // initialize left over expected optional fields\n for (const [expectKey, expectType] of this._fields.slice(expectedRecordIdx)) {\n if (expectType instanceof OptClass || expectType instanceof ReservedClass) {\n // TODO this assumes null value in opt is represented as []\n x[expectKey] = [];\n } else {\n throw new Error('Cannot find required field ' + expectKey);\n }\n }\n return x;\n }\n\n get name() {\n const fields = this._fields.map(([key, value]) => key + ':' + value.name);\n return `record {${fields.join('; ')}}`;\n }\n\n public display() {\n const fields = this._fields.map(([key, value]) => key + ':' + value.display());\n return `record {${fields.join('; ')}}`;\n }\n\n public valueToString(x: Record) {\n const values = this._fields.map(([key]) => x[key]);\n const fields = zipWith(this._fields, values, ([k, c], d) => k + '=' + c.valueToString(d));\n return `record {${fields.join('; ')}}`;\n }\n}\n\n/**\n * Represents Tuple, a syntactic sugar for Record.\n * @param {Type} components\n */\nexport class TupleClass extends RecordClass {\n protected readonly _components: Type[];\n\n constructor(_components: Type[]) {\n const x: Record = {};\n _components.forEach((e, i) => (x['_' + i + '_'] = e));\n super(x);\n this._components = _components;\n }\n\n public accept(v: Visitor, d: D): R {\n return v.visitTuple(this, this._components, d);\n }\n\n public covariant(x: any): x is T {\n // `>=` because tuples can be covariant when encoded.\n\n if (\n Array.isArray(x) &&\n x.length >= this._fields.length &&\n this._components.every((t, i) => {\n try {\n return t.covariant(x[i]);\n } catch (e: any) {\n throw new Error(`Invalid ${this.display()} argument: \\n\\nindex ${i} -> ${e.message}`);\n }\n })\n )\n return true;\n\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: any[]) {\n const bufs = zipWith(this._components, x, (c, d) => c.encodeValue(d));\n return concat(...bufs);\n }\n\n public decodeValue(b: Pipe, t: Type): T {\n const tuple = this.checkType(t);\n if (!(tuple instanceof TupleClass)) {\n throw new Error('not a tuple type');\n }\n if (tuple._components.length < this._components.length) {\n throw new Error('tuple mismatch');\n }\n const res = [];\n for (const [i, wireType] of tuple._components.entries()) {\n if (i >= this._components.length) {\n // skip value\n wireType.decodeValue(b, wireType);\n } else {\n res.push(this._components[i].decodeValue(b, wireType));\n }\n }\n return res as T;\n }\n\n public display() {\n const fields = this._components.map(value => value.display());\n return `record {${fields.join('; ')}}`;\n }\n\n public valueToString(values: any[]) {\n const fields = zipWith(this._components, values, (c, d) => c.valueToString(d));\n return `record {${fields.join('; ')}}`;\n }\n}\n\n/**\n * Represents an IDL Variant\n * @param {Object} [fields] - mapping of function name to Type\n */\nexport class VariantClass extends ConstructType> {\n private readonly _fields: Array<[string, Type]>;\n\n constructor(fields: Record = {}) {\n super();\n this._fields = Object.entries(fields).sort((a, b) => idlLabelToId(a[0]) - idlLabelToId(b[0]));\n }\n\n public accept(v: Visitor, d: D): R {\n return v.visitVariant(this, this._fields, d);\n }\n\n public covariant(x: any): x is Record {\n if (\n typeof x === 'object' &&\n Object.entries(x).length === 1 &&\n this._fields.every(([k, v]) => {\n try {\n // eslint-disable-next-line\n return !x.hasOwnProperty(k) || v.covariant(x[k]);\n } catch (e: any) {\n throw new Error(`Invalid ${this.display()} argument: \\n\\nvariant ${k} -> ${e.message}`);\n }\n })\n )\n return true;\n\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: Record) {\n for (let i = 0; i < this._fields.length; i++) {\n const [name, type] = this._fields[i];\n // eslint-disable-next-line\n if (x.hasOwnProperty(name)) {\n const idx = lebEncode(i);\n const buf = type.encodeValue(x[name]);\n\n return concat(idx, buf);\n }\n }\n throw Error('Variant has no data: ' + x);\n }\n\n public _buildTypeTableImpl(typeTable: TypeTable) {\n this._fields.forEach(([, type]) => {\n type.buildTypeTable(typeTable);\n });\n const opCode = slebEncode(IDLTypeIds.Variant);\n const len = lebEncode(this._fields.length);\n const fields = this._fields.map(([key, value]) =>\n concat(lebEncode(idlLabelToId(key)), value.encodeType(typeTable)),\n );\n typeTable.add(this, concat(opCode, len, ...fields));\n }\n\n public decodeValue(b: Pipe, t: Type) {\n const variant = this.checkType(t);\n if (!(variant instanceof VariantClass)) {\n throw new Error('Not a variant type');\n }\n const idx = Number(lebDecode(b));\n if (idx >= variant._fields.length) {\n throw Error('Invalid variant index: ' + idx);\n }\n const [wireHash, wireType] = variant._fields[idx];\n for (const [key, expectType] of this._fields) {\n if (idlLabelToId(wireHash) === idlLabelToId(key)) {\n const value = expectType.decodeValue(b, wireType);\n return { [key]: value };\n }\n }\n throw new Error('Cannot find field hash ' + wireHash);\n }\n\n get name() {\n const fields = this._fields.map(([key, type]) => key + ':' + type.name);\n return `variant {${fields.join('; ')}}`;\n }\n\n public display() {\n const fields = this._fields.map(\n ([key, type]) => key + (type.name === 'null' ? '' : `:${type.display()}`),\n );\n return `variant {${fields.join('; ')}}`;\n }\n\n public valueToString(x: Record) {\n for (const [name, type] of this._fields) {\n // eslint-disable-next-line\n if (x.hasOwnProperty(name)) {\n const value = type.valueToString(x[name]);\n if (value === 'null') {\n return `variant {${name}}`;\n } else {\n return `variant {${name}=${value}}`;\n }\n }\n }\n throw new Error('Variant has no data: ' + x);\n }\n}\n\n/**\n * Represents a reference to an IDL type, used for defining recursive data\n * types.\n */\nexport class RecClass extends ConstructType {\n private static _counter = 0;\n private _id = RecClass._counter++;\n private _type: ConstructType | undefined = undefined;\n\n public accept(v: Visitor, d: D): R {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n return v.visitRec(this, this._type, d);\n }\n\n public fill(t: ConstructType) {\n this._type = t;\n }\n\n public getType() {\n return this._type;\n }\n\n public covariant(x: any): x is T {\n if (this._type ? this._type.covariant(x) : false) return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: T) {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n return this._type.encodeValue(x);\n }\n\n public _buildTypeTableImpl(typeTable: TypeTable) {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n typeTable.add(this, new Uint8Array([]));\n this._type.buildTypeTable(typeTable);\n typeTable.merge(this, this._type.name);\n }\n\n public decodeValue(b: Pipe, t: Type) {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n return this._type.decodeValue(b, t);\n }\n\n get name() {\n return `rec_${this._id}`;\n }\n\n public display() {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n return `μ${this.name}.${this._type.name}`;\n }\n\n public valueToString(x: T) {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n return this._type.valueToString(x);\n }\n}\n\nfunction decodePrincipalId(b: Pipe): PrincipalId {\n const x = safeReadUint8(b);\n if (x !== 1) {\n throw new Error('Cannot decode principal');\n }\n\n const len = Number(lebDecode(b));\n return PrincipalId.fromUint8Array(new Uint8Array(safeRead(b, len)));\n}\n\n/**\n * Represents an IDL principal reference\n */\nexport class PrincipalClass extends PrimitiveType {\n public accept(v: Visitor, d: D): R {\n return v.visitPrincipal(this, d);\n }\n\n public covariant(x: any): x is PrincipalId {\n if (x && x._isPrincipal) return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: PrincipalId): ArrayBuffer {\n const buf = x.toUint8Array();\n const len = lebEncode(buf.byteLength);\n return concat(new Uint8Array([1]), len, buf);\n }\n\n public encodeType() {\n return slebEncode(IDLTypeIds.Principal);\n }\n\n public decodeValue(b: Pipe, t: Type): PrincipalId {\n this.checkType(t);\n return decodePrincipalId(b);\n }\n\n get name() {\n return 'principal';\n }\n public valueToString(x: PrincipalId) {\n return `${this.name} \"${x.toText()}\"`;\n }\n}\n\n/**\n * Represents an IDL function reference.\n * @param argTypes Argument types.\n * @param retTypes Return types.\n * @param annotations Function annotations.\n */\nexport class FuncClass extends ConstructType<[PrincipalId, string]> {\n public static argsToString(types: Type[], v: any[]) {\n if (types.length !== v.length) {\n throw new Error('arity mismatch');\n }\n return '(' + types.map((t, i) => t.valueToString(v[i])).join(', ') + ')';\n }\n\n constructor(public argTypes: Type[], public retTypes: Type[], public annotations: string[] = []) {\n super();\n }\n\n public accept(v: Visitor, d: D): R {\n return v.visitFunc(this, d);\n }\n public covariant(x: any): x is [PrincipalId, string] {\n if (Array.isArray(x) && x.length === 2 && x[0] && x[0]._isPrincipal && typeof x[1] === 'string')\n return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue([principal, methodName]: [PrincipalId, string]) {\n const buf = principal.toUint8Array();\n const len = lebEncode(buf.byteLength);\n const canister = concat(new Uint8Array([1]), len, buf);\n\n const method = new TextEncoder().encode(methodName);\n const methodLen = lebEncode(method.byteLength);\n return concat(new Uint8Array([1]), canister, methodLen, method);\n }\n\n public _buildTypeTableImpl(T: TypeTable) {\n this.argTypes.forEach(arg => arg.buildTypeTable(T));\n this.retTypes.forEach(arg => arg.buildTypeTable(T));\n\n const opCode = slebEncode(IDLTypeIds.Func);\n const argLen = lebEncode(this.argTypes.length);\n const args = concat(...this.argTypes.map(arg => arg.encodeType(T)));\n const retLen = lebEncode(this.retTypes.length);\n const rets = concat(...this.retTypes.map(arg => arg.encodeType(T)));\n const annLen = lebEncode(this.annotations.length);\n const anns = concat(...this.annotations.map(a => this.encodeAnnotation(a)));\n\n T.add(this, concat(opCode, argLen, args, retLen, rets, annLen, anns));\n }\n\n public decodeValue(b: Pipe): [PrincipalId, string] {\n const x = safeReadUint8(b);\n if (x !== 1) {\n throw new Error('Cannot decode function reference');\n }\n const canister = decodePrincipalId(b);\n\n const mLen = Number(lebDecode(b));\n const buf = safeRead(b, mLen);\n const decoder = new TextDecoder('utf8', { fatal: true });\n const method = decoder.decode(buf);\n\n return [canister, method];\n }\n\n get name() {\n const args = this.argTypes.map(arg => arg.name).join(', ');\n const rets = this.retTypes.map(arg => arg.name).join(', ');\n const annon = ' ' + this.annotations.join(' ');\n return `(${args}) -> (${rets})${annon}`;\n }\n\n public valueToString([principal, str]: [PrincipalId, string]) {\n return `func \"${principal.toText()}\".${str}`;\n }\n\n public display(): string {\n const args = this.argTypes.map(arg => arg.display()).join(', ');\n const rets = this.retTypes.map(arg => arg.display()).join(', ');\n const annon = ' ' + this.annotations.join(' ');\n return `(${args}) → (${rets})${annon}`;\n }\n\n private encodeAnnotation(ann: string): ArrayBuffer {\n if (ann === 'query') {\n return new Uint8Array([1]);\n } else if (ann === 'oneway') {\n return new Uint8Array([2]);\n } else if (ann === 'composite_query') {\n return new Uint8Array([3]);\n } else {\n throw new Error('Illegal function annotation');\n }\n }\n}\n\nexport class ServiceClass extends ConstructType {\n public readonly _fields: Array<[string, FuncClass]>;\n constructor(fields: Record) {\n super();\n this._fields = Object.entries(fields).sort((a, b) => idlLabelToId(a[0]) - idlLabelToId(b[0]));\n }\n public accept(v: Visitor, d: D): R {\n return v.visitService(this, d);\n }\n public covariant(x: any): x is PrincipalId {\n if (x && x._isPrincipal) return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: PrincipalId) {\n const buf = x.toUint8Array();\n const len = lebEncode(buf.length);\n return concat(new Uint8Array([1]), len, buf);\n }\n\n public _buildTypeTableImpl(T: TypeTable) {\n this._fields.forEach(([_, func]) => func.buildTypeTable(T));\n const opCode = slebEncode(IDLTypeIds.Service);\n const len = lebEncode(this._fields.length);\n const meths = this._fields.map(([label, func]) => {\n const labelBuf = new TextEncoder().encode(label);\n const labelLen = lebEncode(labelBuf.length);\n return concat(labelLen, labelBuf, func.encodeType(T));\n });\n\n T.add(this, concat(opCode, len, ...meths));\n }\n\n public decodeValue(b: Pipe): PrincipalId {\n return decodePrincipalId(b);\n }\n get name() {\n const fields = this._fields.map(([key, value]) => key + ':' + value.name);\n return `service {${fields.join('; ')}}`;\n }\n\n public valueToString(x: PrincipalId) {\n return `service \"${x.toText()}\"`;\n }\n}\n\n/**\n *\n * @param x\n * @returns {string}\n */\nfunction toReadableString(x: unknown): string {\n const str = JSON.stringify(x, (_key, value) =>\n typeof value === 'bigint' ? `BigInt(${value})` : value,\n );\n\n return str && str.length > toReadableString_max\n ? str.substring(0, toReadableString_max - 3) + '...'\n : str;\n}\n\n/**\n * Encode a array of values\n * @param argTypes\n * @param args\n * @returns {Buffer} serialised value\n */\nexport function encode(argTypes: Array>, args: any[]): ArrayBuffer {\n if (args.length < argTypes.length) {\n throw Error('Wrong number of message arguments');\n }\n\n const typeTable = new TypeTable();\n argTypes.forEach(t => t.buildTypeTable(typeTable));\n\n const magic = new TextEncoder().encode(magicNumber);\n const table = typeTable.encode();\n const len = lebEncode(args.length);\n const typs = concat(...argTypes.map(t => t.encodeType(typeTable)));\n const vals = concat(\n ...zipWith(argTypes, args, (t, x) => {\n try {\n t.covariant(x);\n } catch (e: any) {\n const err = new Error(e.message + '\\n\\n');\n throw err;\n }\n\n return t.encodeValue(x);\n }),\n );\n\n return concat(magic, table, len, typs, vals);\n}\n\n/**\n * Decode a binary value\n * @param retTypes - Types expected in the buffer.\n * @param bytes - hex-encoded string, or buffer.\n * @returns Value deserialised to JS type\n */\nexport function decode(retTypes: Type[], bytes: ArrayBuffer): JsonValue[] {\n const b = new Pipe(bytes);\n\n if (bytes.byteLength < magicNumber.length) {\n throw new Error('Message length smaller than magic number');\n }\n const magicBuffer = safeRead(b, magicNumber.length);\n const magic = new TextDecoder().decode(magicBuffer);\n if (magic !== magicNumber) {\n throw new Error('Wrong magic number: ' + JSON.stringify(magic));\n }\n\n function readTypeTable(pipe: Pipe): [Array<[IDLTypeIds, any]>, number[]] {\n const typeTable: Array<[IDLTypeIds, any]> = [];\n const len = Number(lebDecode(pipe));\n\n for (let i = 0; i < len; i++) {\n const ty = Number(slebDecode(pipe));\n switch (ty) {\n case IDLTypeIds.Opt:\n case IDLTypeIds.Vector: {\n const t = Number(slebDecode(pipe));\n typeTable.push([ty, t]);\n break;\n }\n case IDLTypeIds.Record:\n case IDLTypeIds.Variant: {\n const fields = [];\n let objectLength = Number(lebDecode(pipe));\n let prevHash;\n while (objectLength--) {\n const hash = Number(lebDecode(pipe));\n if (hash >= Math.pow(2, 32)) {\n throw new Error('field id out of 32-bit range');\n }\n if (typeof prevHash === 'number' && prevHash >= hash) {\n throw new Error('field id collision or not sorted');\n }\n prevHash = hash;\n const t = Number(slebDecode(pipe));\n fields.push([hash, t]);\n }\n typeTable.push([ty, fields]);\n break;\n }\n case IDLTypeIds.Func: {\n const args = [];\n let argLength = Number(lebDecode(pipe));\n while (argLength--) {\n args.push(Number(slebDecode(pipe)));\n }\n const returnValues = [];\n let returnValuesLength = Number(lebDecode(pipe));\n while (returnValuesLength--) {\n returnValues.push(Number(slebDecode(pipe)));\n }\n const annotations = [];\n let annotationLength = Number(lebDecode(pipe));\n while (annotationLength--) {\n const annotation = Number(lebDecode(pipe));\n switch (annotation) {\n case 1: {\n annotations.push('query');\n break;\n }\n case 2: {\n annotations.push('oneway');\n break;\n }\n case 3: {\n annotations.push('composite_query');\n break;\n }\n default:\n throw new Error('unknown annotation');\n }\n }\n typeTable.push([ty, [args, returnValues, annotations]]);\n break;\n }\n case IDLTypeIds.Service: {\n let servLength = Number(lebDecode(pipe));\n const methods = [];\n while (servLength--) {\n const nameLength = Number(lebDecode(pipe));\n const funcName = new TextDecoder().decode(safeRead(pipe, nameLength));\n const funcType = slebDecode(pipe);\n methods.push([funcName, funcType]);\n }\n typeTable.push([ty, methods]);\n break;\n }\n default:\n throw new Error('Illegal op_code: ' + ty);\n }\n }\n\n const rawList: number[] = [];\n const length = Number(lebDecode(pipe));\n for (let i = 0; i < length; i++) {\n rawList.push(Number(slebDecode(pipe)));\n }\n return [typeTable, rawList];\n }\n const [rawTable, rawTypes] = readTypeTable(b);\n if (rawTypes.length < retTypes.length) {\n throw new Error('Wrong number of return values');\n }\n\n const table: RecClass[] = rawTable.map(_ => Rec());\n function getType(t: number): Type {\n if (t < -24) {\n throw new Error('future value not supported');\n }\n if (t < 0) {\n switch (t) {\n case -1:\n return Null;\n case -2:\n return Bool;\n case -3:\n return Nat;\n case -4:\n return Int;\n case -5:\n return Nat8;\n case -6:\n return Nat16;\n case -7:\n return Nat32;\n case -8:\n return Nat64;\n case -9:\n return Int8;\n case -10:\n return Int16;\n case -11:\n return Int32;\n case -12:\n return Int64;\n case -13:\n return Float32;\n case -14:\n return Float64;\n case -15:\n return Text;\n case -16:\n return Reserved;\n case -17:\n return Empty;\n case -24:\n return Principal;\n default:\n throw new Error('Illegal op_code: ' + t);\n }\n }\n if (t >= rawTable.length) {\n throw new Error('type index out of range');\n }\n return table[t];\n }\n function buildType(entry: [IDLTypeIds, any]): Type {\n switch (entry[0]) {\n case IDLTypeIds.Vector: {\n const ty = getType(entry[1]);\n return Vec(ty);\n }\n case IDLTypeIds.Opt: {\n const ty = getType(entry[1]);\n return Opt(ty);\n }\n case IDLTypeIds.Record: {\n const fields: Record = {};\n for (const [hash, ty] of entry[1]) {\n const name = `_${hash}_`;\n fields[name] = getType(ty);\n }\n const record = Record(fields);\n const tuple = record.tryAsTuple();\n if (Array.isArray(tuple)) {\n return Tuple(...tuple);\n } else {\n return record;\n }\n }\n case IDLTypeIds.Variant: {\n const fields: Record = {};\n for (const [hash, ty] of entry[1]) {\n const name = `_${hash}_`;\n fields[name] = getType(ty);\n }\n return Variant(fields);\n }\n case IDLTypeIds.Func: {\n const [args, returnValues, annotations] = entry[1];\n return Func(\n args.map((t: number) => getType(t)),\n returnValues.map((t: number) => getType(t)),\n annotations,\n );\n }\n case IDLTypeIds.Service: {\n const rec: Record = {};\n const methods = entry[1] as [[string, number]];\n for (const [name, typeRef] of methods) {\n let type: Type | undefined = getType(typeRef);\n\n if (type instanceof RecClass) {\n // unpack reference type\n type = type.getType();\n }\n if (!(type instanceof FuncClass)) {\n throw new Error('Illegal service definition: services can only contain functions');\n }\n rec[name] = type;\n }\n return Service(rec);\n }\n default:\n throw new Error('Illegal op_code: ' + entry[0]);\n }\n }\n\n rawTable.forEach((entry, i) => {\n // Process function type first, so that we can construct the correct service type\n if (entry[0] === IDLTypeIds.Func) {\n const t = buildType(entry);\n table[i].fill(t);\n }\n });\n rawTable.forEach((entry, i) => {\n if (entry[0] !== IDLTypeIds.Func) {\n const t = buildType(entry);\n table[i].fill(t);\n }\n });\n\n const types = rawTypes.map(t => getType(t));\n const output = retTypes.map((t, i) => {\n return t.decodeValue(b, types[i]);\n });\n\n // skip unused values\n for (let ind = retTypes.length; ind < types.length; ind++) {\n types[ind].decodeValue(b, types[ind]);\n }\n\n if (b.byteLength > 0) {\n throw new Error('decode: Left-over bytes');\n }\n\n return output;\n}\n\n/**\n * An Interface Factory, normally provided by a Candid code generation.\n */\nexport type InterfaceFactory = (idl: {\n IDL: {\n Empty: EmptyClass;\n Reserved: ReservedClass;\n Unknown: UnknownClass;\n Bool: BoolClass;\n Null: NullClass;\n Text: TextClass;\n Int: IntClass;\n Nat: NatClass;\n\n Float32: FloatClass;\n Float64: FloatClass;\n\n Int8: FixedIntClass;\n Int16: FixedIntClass;\n Int32: FixedIntClass;\n Int64: FixedIntClass;\n\n Nat8: FixedNatClass;\n Nat16: FixedNatClass;\n Nat32: FixedNatClass;\n Nat64: FixedNatClass;\n\n Principal: PrincipalClass;\n\n Tuple: typeof Tuple;\n Vec: typeof Vec;\n Opt: typeof Opt;\n Record: typeof Record;\n Variant: typeof Variant;\n Rec: typeof Rec;\n Func: typeof Func;\n\n Service(t: Record): ServiceClass;\n };\n}) => ServiceClass;\n\n// Export Types instances.\nexport const Empty = new EmptyClass();\nexport const Reserved = new ReservedClass();\n/**\n * Client-only type for deserializing unknown data. Not supported by Candid, and its use is discouraged.\n */\nexport const Unknown = new UnknownClass();\nexport const Bool = new BoolClass();\nexport const Null = new NullClass();\nexport const Text = new TextClass();\nexport const Int = new IntClass();\nexport const Nat = new NatClass();\n\nexport const Float32 = new FloatClass(32);\nexport const Float64 = new FloatClass(64);\n\nexport const Int8 = new FixedIntClass(8);\nexport const Int16 = new FixedIntClass(16);\nexport const Int32 = new FixedIntClass(32);\nexport const Int64 = new FixedIntClass(64);\n\nexport const Nat8 = new FixedNatClass(8);\nexport const Nat16 = new FixedNatClass(16);\nexport const Nat32 = new FixedNatClass(32);\nexport const Nat64 = new FixedNatClass(64);\n\nexport const Principal = new PrincipalClass();\n\n/**\n *\n * @param types array of any types\n * @returns TupleClass from those types\n */\nexport function Tuple(...types: T): TupleClass {\n return new TupleClass(types);\n}\n/**\n *\n * @param t IDL Type\n * @returns VecClass from that type\n */\nexport function Vec(t: Type): VecClass {\n return new VecClass(t);\n}\n/**\n *\n * @param t IDL Type\n * @returns OptClass of Type\n */\nexport function Opt(t: Type): OptClass {\n return new OptClass(t);\n}\n/**\n *\n * @param t Record of string and IDL Type\n * @returns RecordClass of string and Type\n */\nexport function Record(t: Record): RecordClass {\n return new RecordClass(t);\n}\n\n/**\n *\n * @param fields Record of string and IDL Type\n * @returns VariantClass\n */\nexport function Variant(fields: Record): VariantClass {\n return new VariantClass(fields);\n}\n/**\n *\n * @returns new RecClass\n */\nexport function Rec(): RecClass {\n return new RecClass();\n}\n\n/**\n *\n * @param args array of IDL Types\n * @param ret array of IDL Types\n * @param annotations array of strings, [] by default\n * @returns new FuncClass\n */\nexport function Func(args: Type[], ret: Type[], annotations: string[] = []): FuncClass {\n return new FuncClass(args, ret, annotations);\n}\n\n/**\n *\n * @param t Record of string and FuncClass\n * @returns ServiceClass\n */\nexport function Service(t: Record): ServiceClass {\n return new ServiceClass(t);\n}\n","// tslint:disable:no-bitwise\nconst alphabet = 'abcdefghijklmnopqrstuvwxyz234567';\n\n// Build a lookup table for decoding.\nconst lookupTable: Record = Object.create(null);\nfor (let i = 0; i < alphabet.length; i++) {\n lookupTable[alphabet[i]] = i;\n}\n\n// Add aliases for rfc4648.\nlookupTable['0'] = lookupTable.o;\nlookupTable['1'] = lookupTable.i;\n\n/**\n * @param input The input array to encode.\n * @returns A Base32 string encoding the input.\n */\nexport function encode(input: Uint8Array): string {\n // How many bits will we skip from the first byte.\n let skip = 0;\n // 5 high bits, carry from one byte to the next.\n let bits = 0;\n\n // The output string in base32.\n let output = '';\n\n function encodeByte(byte: number) {\n if (skip < 0) {\n // we have a carry from the previous byte\n bits |= byte >> -skip;\n } else {\n // no carry\n bits = (byte << skip) & 248;\n }\n\n if (skip > 3) {\n // Not enough data to produce a character, get us another one\n skip -= 8;\n return 1;\n }\n\n if (skip < 4) {\n // produce a character\n output += alphabet[bits >> 3];\n skip += 5;\n }\n\n return 0;\n }\n\n for (let i = 0; i < input.length; ) {\n i += encodeByte(input[i]);\n }\n\n return output + (skip < 0 ? alphabet[bits >> 3] : '');\n}\n\n/**\n * @param input The base32 encoded string to decode.\n */\nexport function decode(input: string): Uint8Array {\n // how many bits we have from the previous character.\n let skip = 0;\n // current byte we're producing.\n let byte = 0;\n\n const output = new Uint8Array(((input.length * 4) / 3) | 0);\n let o = 0;\n\n function decodeChar(char: string) {\n // Consume a character from the stream, store\n // the output in this.output. As before, better\n // to use update().\n let val = lookupTable[char.toLowerCase()];\n if (val === undefined) {\n throw new Error(`Invalid character: ${JSON.stringify(char)}`);\n }\n\n // move to the high bits\n val <<= 3;\n byte |= val >>> skip;\n skip += 5;\n\n if (skip >= 8) {\n // We have enough bytes to produce an output\n output[o++] = byte;\n skip -= 8;\n\n if (skip > 0) {\n byte = (val << (5 - skip)) & 255;\n } else {\n byte = 0;\n }\n }\n }\n\n for (const c of input) {\n decodeChar(c);\n }\n\n return output.slice(0, o);\n}\n","// tslint:disable:no-bitwise\n\n// This file is translated to JavaScript from\n// https://lxp32.github.io/docs/a-simple-example-crc32-calculation/\nconst lookUpTable: Uint32Array = new Uint32Array([\n 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3,\n 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91,\n 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,\n 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5,\n 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,\n 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,\n 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f,\n 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d,\n 0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,\n 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,\n 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457,\n 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,\n 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb,\n 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9,\n 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,\n 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad,\n 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683,\n 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,\n 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7,\n 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,\n 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,\n 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79,\n 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f,\n 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,\n 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,\n 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21,\n 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,\n 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45,\n 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db,\n 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,\n 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf,\n 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d,\n]);\n\n/**\n * Calculate the CRC32 of an ArrayBufferLike.\n * @param buf The BufferLike to calculate the CRC32 of.\n */\nexport function getCrc32(buf: ArrayBufferLike): number {\n const b = new Uint8Array(buf);\n let crc = -1;\n\n // tslint:disable-next-line:prefer-for-of\n for (let i = 0; i < b.length; i++) {\n const byte = b[i];\n const t = (byte ^ crc) & 0xff;\n crc = lookUpTable[t] ^ (crc >>> 8);\n }\n\n return (crc ^ -1) >>> 0;\n}\n","import { decode, encode } from './utils/base32';\nimport { getCrc32 } from './utils/getCrc';\nimport { sha224 } from './utils/sha224';\n\nconst SELF_AUTHENTICATING_SUFFIX = 2;\nconst ANONYMOUS_SUFFIX = 4;\n\nconst MANAGEMENT_CANISTER_PRINCIPAL_HEX_STR = 'aaaaa-aa';\n\nconst fromHexString = (hexString: string) =>\n new Uint8Array((hexString.match(/.{1,2}/g) ?? []).map(byte => parseInt(byte, 16)));\n\nconst toHexString = (bytes: Uint8Array) =>\n bytes.reduce((str, byte) => str + byte.toString(16).padStart(2, '0'), '');\n\nexport class Principal {\n public static anonymous(): Principal {\n return new this(new Uint8Array([ANONYMOUS_SUFFIX]));\n }\n\n /**\n * Utility method, returning the principal representing the management canister, decoded from the hex string `'aaaaa-aa'`\n * @returns {Principal} principal of the management canister\n */\n public static managementCanister(): Principal {\n return this.fromHex(MANAGEMENT_CANISTER_PRINCIPAL_HEX_STR);\n }\n\n public static selfAuthenticating(publicKey: Uint8Array): Principal {\n const sha = sha224(publicKey);\n return new this(new Uint8Array([...sha, SELF_AUTHENTICATING_SUFFIX]));\n }\n\n public static from(other: unknown): Principal {\n if (typeof other === 'string') {\n return Principal.fromText(other);\n } else if (\n typeof other === 'object' &&\n other !== null &&\n (other as Principal)._isPrincipal === true\n ) {\n return new Principal((other as Principal)._arr);\n }\n\n throw new Error(`Impossible to convert ${JSON.stringify(other)} to Principal.`);\n }\n\n public static fromHex(hex: string): Principal {\n return new this(fromHexString(hex));\n }\n\n public static fromText(text: string): Principal {\n const canisterIdNoDash = text.toLowerCase().replace(/-/g, '');\n\n let arr = decode(canisterIdNoDash);\n arr = arr.slice(4, arr.length);\n\n const principal = new this(arr);\n if (principal.toText() !== text) {\n throw new Error(\n `Principal \"${principal.toText()}\" does not have a valid checksum (original value \"${text}\" may not be a valid Principal ID).`,\n );\n }\n\n return principal;\n }\n\n public static fromUint8Array(arr: Uint8Array): Principal {\n return new this(arr);\n }\n\n public readonly _isPrincipal = true;\n\n protected constructor(private _arr: Uint8Array) {}\n\n public isAnonymous(): boolean {\n return this._arr.byteLength === 1 && this._arr[0] === ANONYMOUS_SUFFIX;\n }\n\n public toUint8Array(): Uint8Array {\n return this._arr;\n }\n\n public toHex(): string {\n return toHexString(this._arr).toUpperCase();\n }\n\n public toText(): string {\n const checksumArrayBuf = new ArrayBuffer(4);\n const view = new DataView(checksumArrayBuf);\n view.setUint32(0, getCrc32(this._arr));\n const checksum = new Uint8Array(checksumArrayBuf);\n\n const bytes = Uint8Array.from(this._arr);\n const array = new Uint8Array([...checksum, ...bytes]);\n\n const result = encode(array);\n const matches = result.match(/.{1,5}/g);\n if (!matches) {\n // This should only happen if there's no character, which is unreachable.\n throw new Error();\n }\n return matches.join('-');\n }\n\n public toString(): string {\n return this.toText();\n }\n\n /**\n * Utility method taking a Principal to compare against. Used for determining canister ranges in certificate verification\n * @param {Principal} other - a {@link Principal} to compare\n * @returns {'lt' | 'eq' | 'gt'} `'lt' | 'eq' | 'gt'` a string, representing less than, equal to, or greater than\n */\n public compareTo(other: Principal): 'lt' | 'eq' | 'gt' {\n for (let i = 0; i < Math.min(this._arr.length, other._arr.length); i++) {\n if (this._arr[i] < other._arr[i]) return 'lt';\n else if (this._arr[i] > other._arr[i]) return 'gt';\n }\n // Here, at least one principal is a prefix of the other principal (they could be the same)\n if (this._arr.length < other._arr.length) return 'lt';\n if (this._arr.length > other._arr.length) return 'gt';\n return 'eq';\n }\n\n /**\n * Utility method checking whether a provided Principal is less than or equal to the current one using the {@link Principal.compareTo} method\n * @param other a {@link Principal} to compare\n * @returns {boolean} boolean\n */\n public ltEq(other: Principal): boolean {\n const cmp = this.compareTo(other);\n return cmp == 'lt' || cmp == 'eq';\n }\n\n /**\n * Utility method checking whether a provided Principal is greater than or equal to the current one using the {@link Principal.compareTo} method\n * @param other a {@link Principal} to compare\n * @returns {boolean} boolean\n */\n public gtEq(other: Principal): boolean {\n const cmp = this.compareTo(other);\n return cmp == 'gt' || cmp == 'eq';\n }\n}\n","import { sha224 as jsSha224 } from '@noble/hashes/sha256';\n\n/**\n * Returns the SHA224 hash of the buffer.\n * @param data Arraybuffer to encode\n */\nexport function sha224(data: ArrayBuffer): Uint8Array {\n return jsSha224.create().update(new Uint8Array(data)).digest();\n}\n","/** @module CanisterStatus */\n\nimport { lebDecode, PipeArrayBuffer } from '@dfinity/candid';\nimport { Principal } from '@dfinity/principal';\nimport { AgentError } from '../errors';\nimport { HttpAgent } from '../agent/http';\nimport { Certificate, CreateCertificateOptions } from '../certificate';\nimport { toHex } from '../utils/buffer';\nimport * as Cbor from '../cbor';\n\n/**\n * Types of an entry on the canisterStatus map.\n * An entry of null indicates that the request failed, due to lack of permissions or the result being missing.\n */\nexport type Status = string | ArrayBuffer | Date | ArrayBuffer[] | Principal[] | bigint | null;\n\n/**\n * Interface to define a custom path. Nested paths will be represented as individual buffers, and can be created from text using {@link TextEncoder}\n */\nexport interface CustomPath {\n key: string;\n path: ArrayBuffer[] | string;\n decodeStrategy: 'cbor' | 'hex' | 'leb128' | 'utf-8' | 'raw';\n}\n\n/**\n * Interface to request metadata from the icp:public or icp:private sections.\n * Similar to {@link CustomPath}, but accepts a simple string argument.\n * Private metadata will require the ${@link Identity} used by the ${@link HttpAgent} will need to be requested using an identity that controlls the canister.\n */\nexport interface MetaData {\n kind: 'metadata';\n key: string;\n path: string | ArrayBuffer;\n decodeStrategy: 'cbor' | 'hex' | 'leb128' | 'utf-8' | 'raw';\n}\n\n/**\n * Pre-configured fields for canister status paths\n */\nexport type Path =\n | 'time'\n | 'controllers'\n | 'subnet'\n | 'module_hash'\n | 'candid'\n | MetaData\n | CustomPath;\n\nexport type StatusMap = Map;\n\nexport type CanisterStatusOptions = {\n canisterId: Principal;\n agent: HttpAgent;\n paths?: Path[] | Set;\n blsVerify?: CreateCertificateOptions['blsVerify'];\n};\n\n/**\n *\n * @param {CanisterStatusOptions} options {@link CanisterStatusOptions}\n * @param {CanisterStatusOptions['canisterId']} options.canisterId {@link Principal}\n * @param {CanisterStatusOptions['agent']} options.agent {@link HttpAgent} optional authenticated agent to use to make the canister request. Useful for accessing private metadata under icp:private\n * @param {CanisterStatusOptions['paths']} options.paths {@link Path[]}\n * @returns {Status} object populated with data from the requested paths\n * @example\n * const status = await canisterStatus({\n * paths: ['controllers', 'candid'],\n * ...options\n * });\n *\n * const controllers = status.get('controllers');\n */\nexport const request = async (options: {\n canisterId: Principal;\n agent: HttpAgent;\n paths?: Path[] | Set;\n}): Promise => {\n const { canisterId, agent, paths } = options;\n\n const uniquePaths = [...new Set(paths)];\n\n // Map path options to their correct formats\n const encodedPaths = uniquePaths.map(path => {\n return encodePath(path, canisterId);\n });\n const status = new Map();\n\n const promises = uniquePaths.map((path, index) => {\n return (async () => {\n try {\n const response = await agent.readState(canisterId, {\n paths: [encodedPaths[index]],\n });\n const cert = await Certificate.create({\n certificate: response.certificate,\n rootKey: agent.rootKey,\n canisterId: canisterId,\n });\n\n const data = cert.lookup(encodePath(uniquePaths[index], canisterId));\n if (!data) {\n // Typically, the cert lookup will throw\n console.warn(`Expected to find result for path ${path}, but instead found nothing.`);\n if (typeof path === 'string') {\n status.set(path, null);\n } else {\n status.set(path.key, null);\n }\n } else {\n switch (path) {\n case 'time': {\n status.set(path, decodeTime(data));\n break;\n }\n case 'controllers': {\n status.set(path, decodeControllers(data));\n break;\n }\n case 'module_hash': {\n status.set(path, decodeHex(data));\n break;\n }\n case 'candid': {\n status.set(path, new TextDecoder().decode(data));\n break;\n }\n default: {\n // Check for CustomPath signature\n if (typeof path !== 'string' && 'key' in path && 'path' in path) {\n switch (path.decodeStrategy) {\n case 'raw':\n status.set(path.key, data);\n break;\n case 'leb128': {\n status.set(path.key, decodeLeb128(data));\n break;\n }\n case 'cbor': {\n status.set(path.key, decodeCbor(data));\n break;\n }\n case 'hex': {\n status.set(path.key, decodeHex(data));\n break;\n }\n case 'utf-8': {\n status.set(path.key, decodeUtf8(data));\n }\n }\n }\n }\n }\n }\n } catch (error) {\n // Break on signature verification errors\n if ((error as AgentError)?.message?.includes('Invalid certificate')) {\n throw new AgentError((error as AgentError).message);\n }\n if (typeof path !== 'string' && 'key' in path && 'path' in path) {\n status.set(path.key, null);\n } else {\n status.set(path, null);\n }\n console.group();\n console.warn(`Expected to find result for path ${path}, but instead found nothing.`);\n console.warn(error);\n console.groupEnd();\n }\n })();\n });\n\n // Fetch all values separately, as each option can fail\n await Promise.all(promises);\n\n return status;\n};\n\nexport const encodePath = (path: Path, canisterId: Principal): ArrayBuffer[] => {\n const encoder = new TextEncoder();\n\n const encode = (arg: string): ArrayBuffer => {\n return new DataView(encoder.encode(arg).buffer).buffer;\n };\n const canisterBuffer = new DataView(canisterId.toUint8Array().buffer).buffer;\n switch (path) {\n case 'time':\n return [encode('time')];\n case 'controllers':\n return [encode('canister'), canisterBuffer, encode('controllers')];\n case 'module_hash':\n return [encode('canister'), canisterBuffer, encode('module_hash')];\n case 'subnet':\n return [encode('subnet')];\n case 'candid':\n return [encode('canister'), canisterBuffer, encode('metadata'), encode('candid:service')];\n default: {\n // Check for CustomPath signature\n if ('key' in path && 'path' in path) {\n // For simplified metadata queries\n if (typeof path['path'] === 'string' || path['path'] instanceof ArrayBuffer) {\n const metaPath = path.path;\n const encoded = typeof metaPath === 'string' ? encode(metaPath) : metaPath;\n\n return [encode('canister'), canisterBuffer, encode('metadata'), encoded];\n\n // For non-metadata, return the provided custompath\n } else {\n return path['path'];\n }\n }\n }\n }\n throw new Error(\n `An unexpeected error was encountered while encoding your path for canister status. Please ensure that your path, ${path} was formatted correctly.`,\n );\n};\n\nconst decodeHex = (buf: ArrayBuffer): string => {\n return toHex(buf);\n};\n\nconst decodeLeb128 = (buf: ArrayBuffer): bigint => {\n return lebDecode(new PipeArrayBuffer(buf));\n};\n\nconst decodeCbor = (buf: ArrayBuffer): ArrayBuffer[] => {\n return Cbor.decode(buf);\n};\n\nconst decodeUtf8 = (buf: ArrayBuffer): string => {\n return new TextDecoder().decode(buf);\n};\n\n// time is a LEB128-encoded Nat\nconst decodeTime = (buf: ArrayBuffer): Date => {\n const decoded = decodeLeb128(buf);\n return new Date(Number(decoded / BigInt(1_000_000)));\n};\n\n// Controllers are CBOR-encoded buffers, starting with a Tag we don't need\nconst decodeControllers = (buf: ArrayBuffer): Principal[] => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [tag, ...controllersRaw] = decodeCbor(buf);\n return controllersRaw.map((buf: ArrayBuffer) => {\n return Principal.fromUint8Array(new Uint8Array(buf));\n });\n};\n","// tslint:disable:max-classes-per-file\n// This file is based on:\n// tslint:disable-next-line: max-line-length\n// https://github.com/dfinity-lab/dfinity/blob/9bca65f8edd65701ea6bdb00e0752f9186bbc893/docs/spec/public/index.adoc#cbor-encoding-of-requests-and-responses\nimport borc from 'borc';\nimport * as cbor from 'simple-cbor';\nimport { CborEncoder, SelfDescribeCborSerializer } from 'simple-cbor';\nimport { Principal } from '@dfinity/principal';\nimport { concat, fromHex } from './utils/buffer';\n\n// We are using hansl/simple-cbor for CBOR serialization, to avoid issues with\n// encoding the uint64 values that the HTTP handler of the client expects for\n// canister IDs. However, simple-cbor does not yet provide deserialization so\n// we are using `Uint8Array` so that we can use the dignifiedquire/borc CBOR\n// decoder.\n\nclass PrincipalEncoder implements CborEncoder {\n public get name() {\n return 'Principal';\n }\n\n public get priority() {\n return 0;\n }\n\n public match(value: any): boolean {\n return value && value._isPrincipal === true;\n }\n\n public encode(v: Principal): cbor.CborValue {\n return cbor.value.bytes(v.toUint8Array());\n }\n}\n\nclass BufferEncoder implements CborEncoder {\n public get name() {\n return 'Buffer';\n }\n\n public get priority() {\n return 1;\n }\n\n public match(value: any): boolean {\n return value instanceof ArrayBuffer || ArrayBuffer.isView(value);\n }\n\n public encode(v: ArrayBuffer): cbor.CborValue {\n return cbor.value.bytes(new Uint8Array(v));\n }\n}\n\nclass BigIntEncoder implements CborEncoder {\n public get name() {\n return 'BigInt';\n }\n\n public get priority() {\n return 1;\n }\n\n public match(value: any): boolean {\n return typeof value === `bigint`;\n }\n\n public encode(v: bigint): cbor.CborValue {\n // Always use a bigint encoding.\n if (v > BigInt(0)) {\n return cbor.value.tagged(2, cbor.value.bytes(fromHex(v.toString(16))));\n } else {\n return cbor.value.tagged(3, cbor.value.bytes(fromHex((BigInt('-1') * v).toString(16))));\n }\n }\n}\n\nconst serializer = SelfDescribeCborSerializer.withDefaultEncoders(true);\nserializer.addEncoder(new PrincipalEncoder());\nserializer.addEncoder(new BufferEncoder());\nserializer.addEncoder(new BigIntEncoder());\n\nexport enum CborTag {\n Uint64LittleEndian = 71,\n Semantic = 55799,\n}\n\n/**\n * Encode a JavaScript value into CBOR.\n */\nexport function encode(value: any): ArrayBuffer {\n return serializer.serialize(value);\n}\n\nfunction decodePositiveBigInt(buf: Uint8Array): bigint {\n const len = buf.byteLength;\n let res = BigInt(0);\n for (let i = 0; i < len; i++) {\n // tslint:disable-next-line:no-bitwise\n res = res * BigInt(0x100) + BigInt(buf[i]);\n }\n\n return res;\n}\n\n// A BORC subclass that decodes byte strings to ArrayBuffer instead of the Buffer class.\nclass Uint8ArrayDecoder extends borc.Decoder {\n public createByteString(raw: ArrayBuffer[]): ArrayBuffer {\n return concat(...raw);\n }\n\n public createByteStringFromHeap(start: number, end: number): ArrayBuffer {\n if (start === end) {\n return new ArrayBuffer(0);\n }\n\n return new Uint8Array((this as any)._heap.slice(start, end));\n }\n}\n\nexport function decode(input: ArrayBuffer): T {\n const buffer = new Uint8Array(input);\n const decoder = new Uint8ArrayDecoder({\n size: buffer.byteLength,\n tags: {\n // Override tags 2 and 3 for BigInt support (borc supports only BigNumber).\n 2: val => decodePositiveBigInt(val),\n 3: val => -decodePositiveBigInt(val),\n [CborTag.Semantic]: (value: T): T => value,\n },\n });\n\n return decoder.decodeFirst(buffer);\n}\n","import * as cbor from './cbor';\nimport { AgentError } from './errors';\nimport { hash } from './request_id';\nimport { concat, fromHex, toHex } from './utils/buffer';\nimport { Principal } from '@dfinity/principal';\nimport * as bls from './utils/bls';\n\n/**\n * A certificate may fail verification with respect to the provided public key\n */\nexport class CertificateVerificationError extends AgentError {\n constructor(reason: string) {\n super(`Invalid certificate: ${reason}`);\n }\n}\n\ninterface Cert {\n tree: HashTree;\n signature: ArrayBuffer;\n delegation?: Delegation;\n}\n\nconst enum NodeId {\n Empty = 0,\n Fork = 1,\n Labeled = 2,\n Leaf = 3,\n Pruned = 4,\n}\n\nexport type HashTree =\n | [NodeId.Empty]\n | [NodeId.Fork, HashTree, HashTree]\n | [NodeId.Labeled, ArrayBuffer, HashTree]\n | [NodeId.Leaf, ArrayBuffer]\n | [NodeId.Pruned, ArrayBuffer];\n\n/**\n * Make a human readable string out of a hash tree.\n * @param tree\n */\nexport function hashTreeToString(tree: HashTree): string {\n const indent = (s: string) =>\n s\n .split('\\n')\n .map(x => ' ' + x)\n .join('\\n');\n function labelToString(label: ArrayBuffer): string {\n const decoder = new TextDecoder(undefined, { fatal: true });\n try {\n return JSON.stringify(decoder.decode(label));\n } catch (e) {\n return `data(...${label.byteLength} bytes)`;\n }\n }\n\n switch (tree[0]) {\n case NodeId.Empty:\n return '()';\n case NodeId.Fork: {\n const left = hashTreeToString(tree[1]);\n const right = hashTreeToString(tree[2]);\n return `sub(\\n left:\\n${indent(left)}\\n---\\n right:\\n${indent(right)}\\n)`;\n }\n case NodeId.Labeled: {\n const label = labelToString(tree[1]);\n const sub = hashTreeToString(tree[2]);\n return `label(\\n label:\\n${indent(label)}\\n sub:\\n${indent(sub)}\\n)`;\n }\n case NodeId.Leaf: {\n return `leaf(...${tree[1].byteLength} bytes)`;\n }\n case NodeId.Pruned: {\n return `pruned(${toHex(new Uint8Array(tree[1]))}`;\n }\n default: {\n return `unknown(${JSON.stringify(tree[0])})`;\n }\n }\n}\n\ninterface Delegation extends Record {\n subnet_id: ArrayBuffer;\n certificate: ArrayBuffer;\n}\n\nfunction isBufferEqual(a: ArrayBuffer, b: ArrayBuffer): boolean {\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n const a8 = new Uint8Array(a);\n const b8 = new Uint8Array(b);\n for (let i = 0; i < a8.length; i++) {\n if (a8[i] !== b8[i]) {\n return false;\n }\n }\n return true;\n}\n\ntype VerifyFunc = (pk: Uint8Array, sig: Uint8Array, msg: Uint8Array) => Promise;\n\nexport interface CreateCertificateOptions {\n /**\n * The bytes encoding the certificate to be verified\n */\n certificate: ArrayBuffer;\n /**\n * The root key against which to verify the certificate\n * (normally, the root key of the IC main network)\n */\n rootKey: ArrayBuffer;\n /**\n * The effective canister ID of the request when verifying a response, or\n * the signing canister ID when verifying a certified variable.\n */\n canisterId: Principal;\n /**\n * BLS Verification strategy. Default strategy uses wasm for performance, but that may not be available in all contexts.\n */\n blsVerify?: VerifyFunc;\n}\n\nexport class Certificate {\n private readonly cert: Cert;\n\n /**\n * Create a new instance of a certificate, automatically verifying it. Throws a\n * CertificateVerificationError if the certificate cannot be verified.\n * @constructs {@link AuthClient}\n * @param {CreateCertificateOptions} options\n * @see {@link CreateCertificateOptions}\n * @param {ArrayBuffer} options.certificate The bytes of the certificate\n * @param {ArrayBuffer} options.rootKey The root key to verify against\n * @param {Principal} options.canisterId The effective or signing canister ID\n * @throws {CertificateVerificationError}\n */\n public static async create(options: CreateCertificateOptions): Promise {\n let blsVerify = options.blsVerify;\n if (!blsVerify) {\n blsVerify = bls.blsVerify;\n }\n const cert = new Certificate(\n options.certificate,\n options.rootKey,\n options.canisterId,\n blsVerify,\n );\n await cert.verify();\n return cert;\n }\n\n private constructor(\n certificate: ArrayBuffer,\n private _rootKey: ArrayBuffer,\n private _canisterId: Principal,\n private _blsVerify: VerifyFunc,\n ) {\n this.cert = cbor.decode(new Uint8Array(certificate));\n }\n\n public lookup(path: Array): ArrayBuffer | undefined {\n return lookup_path(path, this.cert.tree);\n }\n\n private async verify(): Promise {\n const rootHash = await reconstruct(this.cert.tree);\n const derKey = await this._checkDelegationAndGetKey(this.cert.delegation);\n const sig = this.cert.signature;\n const key = extractDER(derKey);\n const msg = concat(domain_sep('ic-state-root'), rootHash);\n let sigVer = false;\n try {\n sigVer = await this._blsVerify(new Uint8Array(key), new Uint8Array(sig), new Uint8Array(msg));\n } catch (err) {\n sigVer = false;\n }\n if (!sigVer) {\n throw new CertificateVerificationError('Signature verification failed');\n }\n }\n\n private async _checkDelegationAndGetKey(d?: Delegation): Promise {\n if (!d) {\n return this._rootKey;\n }\n const cert: Certificate = await Certificate.create({\n certificate: d.certificate,\n rootKey: this._rootKey,\n canisterId: this._canisterId,\n });\n\n const rangeLookup = cert.lookup(['subnet', d.subnet_id, 'canister_ranges']);\n if (!rangeLookup) {\n throw new CertificateVerificationError(\n `Could not find canister ranges for subnet 0x${toHex(d.subnet_id)}`,\n );\n }\n const ranges_arr: Array<[Uint8Array, Uint8Array]> = cbor.decode(rangeLookup);\n const ranges: Array<[Principal, Principal]> = ranges_arr.map(v => [\n Principal.fromUint8Array(v[0]),\n Principal.fromUint8Array(v[1]),\n ]);\n\n const canisterInRange = ranges.some(\n r => r[0].ltEq(this._canisterId) && r[1].gtEq(this._canisterId),\n );\n if (!canisterInRange) {\n throw new CertificateVerificationError(\n `Canister ${this._canisterId} not in range of delegations for subnet 0x${toHex(\n d.subnet_id,\n )}`,\n );\n }\n const publicKeyLookup = cert.lookup(['subnet', d.subnet_id, 'public_key']);\n if (!publicKeyLookup) {\n throw new Error(`Could not find subnet key for subnet 0x${toHex(d.subnet_id)}`);\n }\n return publicKeyLookup;\n }\n}\n\nconst DER_PREFIX = fromHex(\n '308182301d060d2b0601040182dc7c0503010201060c2b0601040182dc7c05030201036100',\n);\nconst KEY_LENGTH = 96;\n\nfunction extractDER(buf: ArrayBuffer): ArrayBuffer {\n const expectedLength = DER_PREFIX.byteLength + KEY_LENGTH;\n if (buf.byteLength !== expectedLength) {\n throw new TypeError(`BLS DER-encoded public key must be ${expectedLength} bytes long`);\n }\n const prefix = buf.slice(0, DER_PREFIX.byteLength);\n if (!isBufferEqual(prefix, DER_PREFIX)) {\n throw new TypeError(\n `BLS DER-encoded public key is invalid. Expect the following prefix: ${DER_PREFIX}, but get ${prefix}`,\n );\n }\n\n return buf.slice(DER_PREFIX.byteLength);\n}\n\n/**\n * @param t\n */\nexport async function reconstruct(t: HashTree): Promise {\n switch (t[0]) {\n case NodeId.Empty:\n return hash(domain_sep('ic-hashtree-empty'));\n case NodeId.Pruned:\n return t[1] as ArrayBuffer;\n case NodeId.Leaf:\n return hash(concat(domain_sep('ic-hashtree-leaf'), t[1] as ArrayBuffer));\n case NodeId.Labeled:\n return hash(\n concat(\n domain_sep('ic-hashtree-labeled'),\n t[1] as ArrayBuffer,\n await reconstruct(t[2] as HashTree),\n ),\n );\n case NodeId.Fork:\n return hash(\n concat(\n domain_sep('ic-hashtree-fork'),\n await reconstruct(t[1] as HashTree),\n await reconstruct(t[2] as HashTree),\n ),\n );\n default:\n throw new Error('unreachable');\n }\n}\n\nfunction domain_sep(s: string): ArrayBuffer {\n const len = new Uint8Array([s.length]);\n const str = new TextEncoder().encode(s);\n return concat(len, str);\n}\n\n/**\n * @param path\n * @param tree\n */\nexport function lookup_path(\n path: Array,\n tree: HashTree,\n): ArrayBuffer | undefined {\n if (path.length === 0) {\n switch (tree[0]) {\n case NodeId.Leaf: {\n return new Uint8Array(tree[1]).buffer;\n }\n default: {\n return undefined;\n }\n }\n }\n\n const label = typeof path[0] === 'string' ? new TextEncoder().encode(path[0]) : path[0];\n const t = find_label(label, flatten_forks(tree));\n if (t) {\n return lookup_path(path.slice(1), t);\n }\n}\nfunction flatten_forks(t: HashTree): HashTree[] {\n switch (t[0]) {\n case NodeId.Empty:\n return [];\n case NodeId.Fork:\n return flatten_forks(t[1] as HashTree).concat(flatten_forks(t[2] as HashTree));\n default:\n return [t];\n }\n}\nfunction find_label(l: ArrayBuffer, trees: HashTree[]): HashTree | undefined {\n if (trees.length === 0) {\n return undefined;\n }\n for (const t of trees) {\n if (t[0] === NodeId.Labeled) {\n const p = t[1] as ArrayBuffer;\n if (isBufferEqual(l, p)) {\n return t[2];\n }\n }\n }\n}\n","/**\n * An error that happens in the Agent. This is the root of all errors and should be used\n * everywhere in the Agent code (this package).\n *\n * @todo https://github.com/dfinity/agent-js/issues/420\n */\nexport class AgentError extends Error {\n constructor(public readonly message: string) {\n super(message);\n Object.setPrototypeOf(this, AgentError.prototype);\n }\n}\n","import { lebEncode } from '@dfinity/candid';\nimport { Principal } from '@dfinity/principal';\nimport borc from 'borc';\nimport { sha256 } from '@noble/hashes/sha256';\nimport { compare, concat, uint8ToBuf } from './utils/buffer';\n\nexport type RequestId = ArrayBuffer & { __requestId__: void };\n\n/**\n * sha256 hash the provided Buffer\n * @param data - input to hash function\n */\nexport function hash(data: ArrayBuffer): ArrayBuffer {\n return uint8ToBuf(sha256.create().update(new Uint8Array(data)).digest());\n}\n\ninterface ToHashable {\n toHash(): unknown;\n}\n\n/**\n *\n * @param value unknown value\n * @returns ArrayBuffer\n */\nexport function hashValue(value: unknown): ArrayBuffer {\n if (value instanceof borc.Tagged) {\n return hashValue(value.value);\n } else if (typeof value === 'string') {\n return hashString(value);\n } else if (typeof value === 'number') {\n return hash(lebEncode(value));\n } else if (value instanceof ArrayBuffer || ArrayBuffer.isView(value)) {\n return hash(value as ArrayBuffer);\n } else if (Array.isArray(value)) {\n const vals = value.map(hashValue);\n return hash(concat(...vals));\n } else if (value && typeof value === 'object' && (value as any)._isPrincipal) {\n return hash((value as Principal).toUint8Array());\n } else if (\n typeof value === 'object' &&\n value !== null &&\n typeof (value as ToHashable).toHash === 'function'\n ) {\n return hashValue((value as ToHashable).toHash());\n // TODO This should be move to a specific async method as the webauthn flow required\n // the flow to be synchronous to ensure Safari touch id works.\n // } else if (value instanceof Promise) {\n // return value.then(x => hashValue(x));\n } else if (typeof value === 'bigint') {\n // Do this check much later than the other bigint check because this one is much less\n // type-safe.\n // So we want to try all the high-assurance type guards before this 'probable' one.\n return hash(lebEncode(value));\n }\n throw Object.assign(new Error(`Attempt to hash a value of unsupported type: ${value}`), {\n // include so logs/callers can understand the confusing value.\n // (when stringified in error message, prototype info is lost)\n value,\n });\n}\n\nconst hashString = (value: string): ArrayBuffer => {\n const encoded = new TextEncoder().encode(value);\n return hash(encoded);\n};\n\n/**\n * Get the RequestId of the provided ic-ref request.\n * RequestId is the result of the representation-independent-hash function.\n * https://sdk.dfinity.org/docs/interface-spec/index.html#hash-of-map\n * @param request - ic-ref request to hash into RequestId\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function requestIdOf(request: Record): RequestId {\n const hashed: Array<[ArrayBuffer, ArrayBuffer]> = Object.entries(request)\n .filter(([, value]) => value !== undefined)\n .map(([key, value]: [string, unknown]) => {\n const hashedKey = hashString(key);\n const hashedValue = hashValue(value);\n\n return [hashedKey, hashedValue] as [ArrayBuffer, ArrayBuffer];\n });\n\n const traversed: Array<[ArrayBuffer, ArrayBuffer]> = hashed;\n\n const sorted: Array<[ArrayBuffer, ArrayBuffer]> = traversed.sort(([k1], [k2]) => {\n return compare(k1, k2);\n });\n\n const concatenated: ArrayBuffer = concat(...sorted.map(x => concat(...x)));\n const requestId = hash(concatenated) as RequestId;\n return requestId;\n}\n","import * as base64Arraybuffer from 'base64-arraybuffer';\n\n// This WASM is generated from the miracl BLS Rust code (see\n// https://github.com/dfinity/miracl_core_bls12381/)\nimport { wasmBytesBase64 } from './wasm';\n\n/* tslint:disable */\n/* eslint-disable */\nlet wasm: InitOutput;\n\nconst wasmBytes = base64Arraybuffer.decode(wasmBytesBase64);\n\n/**\n * @returns {number}\n */\nexport function bls_init() {\n let ret = wasm.bls_init();\n return ret;\n}\n\nlet cachegetUint8Memory0: any = null;\nfunction getUint8Memory0() {\n if (cachegetUint8Memory0 === null || cachegetUint8Memory0.buffer !== wasm.memory.buffer) {\n cachegetUint8Memory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachegetUint8Memory0;\n}\n\nfunction passArray8ToWasm0(arg: any, malloc: any): [number, number] {\n const ptr = malloc(arg.length * 1);\n getUint8Memory0().set(arg, ptr / 1);\n return [ptr, arg.length];\n}\n\n/**\n * @param {Uint8Array} sig\n * @param {Uint8Array} m\n * @param {Uint8Array} w\n * @returns {number}\n */\nexport function bls_verify(sig: Uint8Array, m: Uint8Array, w: Uint8Array): number {\n const [ptr0, len0] = passArray8ToWasm0(sig, wasm.__wbindgen_malloc);\n const [ptr1, len1] = passArray8ToWasm0(m, wasm.__wbindgen_malloc);\n const [ptr2, len2] = passArray8ToWasm0(w, wasm.__wbindgen_malloc);\n\n const ret = wasm.bls_verify(ptr0, len0, ptr1, len1, ptr2, len2);\n return ret;\n}\n\nasync function load(module: any, imports: any) {\n if (typeof Response === 'function' && module instanceof Response) {\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n } else {\n return instance;\n }\n }\n}\n\nasync function init(): Promise {\n const imports = {};\n const { instance, module } = await load(wasmBytes, imports);\n\n wasm = instance.exports as any as InitOutput;\n (init as any).__wbindgen_wasm_module = module;\n\n return wasm;\n}\n\nexport type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module;\n\nexport interface InitOutput {\n readonly memory: WebAssembly.Memory;\n readonly bls_init: () => number;\n readonly bls_verify: (a: number, b: number, c: number, d: number, e: number, f: number) => number;\n readonly __wbindgen_malloc: (a: number) => number;\n}\n\n/**\n * If `module_or_path` is {RequestInfo} or {URL}, makes a request and\n * for everything else, calls `WebAssembly.instantiate` directly.\n *\n * @param {InitInput | Promise} module_or_path\n *\n * @returns {Promise}\n */\nexport default init;\n","export const wasmBytesBase64 = `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akE4ENABGiACQbgDakEBNgIAIAJBwANqQTgQ0AEaIAJB+ANqQQE2AgAgAkGABGpBOBDQARogAkEBNgK4BCACQcAEakE4ENABGiACQfgEakEBNgIAIAJBgAVqQTgQ0AEaIAJBuAVqQQE2AgAgAkHABWpBOBDQARogAkH4BWpBATYCACACQYAGakE4ENABGiACQQE2ArgGIAJBwAZqQTgQ0AEaIAJB+AZqQQE2AgAgAkGAB2pBOBDQARogAkG4B2pBATYCACACQcAHakE4ENABGiACQfgHakEBNgIAIAIgARAYAkAgASgCgAZBBEYNACAAKAKABkEERg0AIAJBgARqIgMgAEGAAmoQlgEgAyABQYACahAYDAYLIAJBwAxqIgdBOBDQARogAkEBNgL4DCACQYANakE4ENABGiACQbgNakEBNgIAIAJBgAhqIgRBOBDQARogAkEBNgK4CCACQcAIakE4ENABGiACQfgIakEBNgIAIAJBgApqIgMgAEGAA2oiBRBeIAQgAxCZASADIAFBgANqIgYQXiAEIAMQESAHELYBIAEoAoAGQQRHDQMMBAsgACABEAMMBgsgAkHADGoiAyABQYAFahBeIAJBgAxqIgQgA0HAABDRARogAkGABmogBBCnAQsgAkGABmoQZCACQYAIaiIDIAIQlgEgAxArIAJBgAJqIgQgAxCXASAGIAQQlgEgAkGABGoiByADEJYBIAMgABCWASADIAUQlwEgAxCwASACQYAKaiIEIAEQlgEgBCABQYAEahCXASAEELABIAMgBBAYIAcgAxCXASADIAUQlgECQCABKAKABkECRwRAIAJBwAxqIgMgAUGABWoQXiACQYAIaiADEKYBDAELIAJBwAxqIgMgAUGABWoQXiACQYAMaiIBIANBwAAQ0QEaIAJBgAhqIAEQpwELIAJBgAhqIgEQZCACQYAKaiIDIAEQlgEgAxArIAUgAkGABGoQlgEgBSADEJcBIAJBgAZqIgQgAxCXASABEGQgBiABEJcBIAQQsAEgBBBkIAAgAhCWASAAIAQQlwEMAwsgAkGACmoiAyAFEF4gAkHADGoiBCADEJkBIAMgAUGAAmoQXiAEIAMQEQsgACgCgAZBBEcEQCACQYAKaiIDIABBgAJqEF4gAkHADGoiBCADEJkBIAMgBhBeIAQgAxARCyACQYAEaiIDIAJB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AEHcu8AAKAIAQX4gA0EDdndxNgIACyAAIAEQoAEgAEH0vsAAKAIARw0BQey+wAAgATYCAAsPCyABQYACTwRAIAAgARAWDwsgAUEDdiICQQN0QeS7wABqIQECf0Hcu8AAKAIAIgNBASACdCICcQRAIAEoAggMAQtB3LvAACACIANyNgIAIAELIQIgASAANgIIIAIgADYCDCAAIAE2AgwgACACNgIIC+UDAQN/IwBB0CJrIgMkACADQcAWaiIEQcitwAAQSSADQcgcaiIFQYCuwAAQSSADQQhqIAQgBRBLIANBiAFqQTgQ0AEaIANBwAFqQTgQ0AEaIANB+AFqED0CQCACEIYBBEAgABBVDAELIANB+ARqIgQQPSAEIAEQfSAEEEcgA0H4B2oiARBnIAEgAhB4IAEQRiADQcgcaiICIAEQkAEgA0G4CWogAhCQASACIANBuAhqEJABIANB+AlqIAIQkAEgA0G4CmoiARA9IANBuA1qEFUgASAEEH0gA0HAE2oiARA9IAEgBBB9IAEQogEgA0HAAWogA0GIAWoQUEECayECA0AgAkEBakEBTQRAIANBuA1qIgEQngEgACABQYgGENEBGgUgA0G4DWoQGiADQcAWaiADQbgKaiADQbgJaiADQfgJahALAkACQAJAIANBwAFqIAIQUyADQYgBaiACEFNrQQFqDgMBAgACCyADQcgcaiIBIANBuApqIANB+ARqIANBuAlqIANB+AlqEAogA0HAFmogARADDAELIANByBxqIgEgA0G4CmogA0HAE2ogA0G4CWogA0H4CWoQCiADQcAWaiABEAMLIAJBAWshAiADQbgNaiADQcAWahABDAELCwsgA0HQImokAAvBAwEVfwNAIANBwAFGBEACQCAAQShqIQsgAEEUaigCACIMIQggAEEQaigCACINIQIgAEEMaigCACIOIQEgACgCCCIPIQMgAEEYaigCACIQIQogAEEcaigCACIRIQQgAEEgaigCACISIQcgAEEkaigCACITIQYDQCAHIQkgBCEHIAohBCAFQYACRg0BIAEgAnEhFCABIAJzIRUgBSALaigCACAFQcCiwABqKAIAIAkgBEF/c3EgBCAHcXIgBmogBEEadyAEQRV3cyAEQQd3c2pqaiIGIAhqIQogBUEEaiEFIAIhCCABIQIgAyIBQR53IAFBE3dzIAFBCndzIBQgASAVcXNqIAZqIQMgCSEGDAALAAsFIAAgA2oiAkHoAGogAkEoaigCACACQcwAaigCACACQeAAaigCACIBQQ93IAFBDXdzIAFBCnZzamogAkEsaigCACIBQRl3IAFBDndzIAFBA3ZzajYCACADQQRqIQMMAQsLIAAgBiATajYCJCAAIAkgEmo2AiAgACAHIBFqNgIcIAAgBCAQajYCGCAAIAggDGo2AhQgACACIA1qNgIQIAAgASAOajYCDCAAIAMgD2o2AggL5AEBAn8jAEGAA2siAyQAIAMQPSAAIAEgAkEfdSIEIAJzIARBf3NqQQJtIgJBAWtBH3YQbyAAIAFBgANqIAJBAXNBAWtBH3YQbyAAIAFBgAZqIAJBAnNBAWtBH3YQbyAAIAFBgAlqIAJBA3NBAWtBH3YQbyAAIAFBgAxqIAJBBHNBAWtBH3YQbyAAIAFBgA9qIAJBBXNBAWtBH3YQbyAAIAFBgBJqIAJBBnNBAWtBH3YQbyAAIAFBgBVqIAJBB3NBAWtBH3YQbyADIAAQfSADEKIBIAAgAyAEQQFxEG8gA0GAA2okAAvlAwEIfyMAQZAGayICJAAgAEFAayEIAkAgAUH4AGooAgAgASgCOGqsIABB+ABqKAIAIgcgACgCOCIEaqx+Qv///w9XDQAgBEEBSgR/IAAQHiAAKAJ4BSAHC0EBTA0AIAgQHgsgAkHYpMAAEEkgAkE4aiIHQfAAENABGiACIQNBACECA0AgAkE4RgRAAkAgB0E4aiEEQQAhAgNAIAJBOEYNASACIARqIAIgA2opAwA3AwAgAkEIaiECDAALAAsFIAIgB2pCADcDACACQQhqIQIMAQsLIANBqAFqIgYgABBdIANB4AFqIgUgARBdIANBmAJqIgIgACABEAUgA0GIA2oiBCAIIAFBQGsiARAFIAYgCBBgIAYQQiAFIAEQYCAFEEIgA0H4A2oiCSAGIAUQBUEAIQEgA0HoBGoiBkHwABDQASEFA0AgAUHwAEcEQCABIAVqIAEgAmopAwA3AwAgAUEIaiEBDAELCyAGIAQQYkEAIQEDQCABQfAARwRAIAEgBGoiBSABIAdqKQMAIAUpAwB9NwMAIAFBCGohAQwBCwsgAiAEEGIgAhBIIAkgBhBjIAkQSCADQdgFaiIBIAIQayAAIAEQaiAAQQM2AjggASAJEGsgCCABEGogAEECNgJ4IANBkAZqJAALowIBCH8jAEGABmsiAiQAIAIgAEGAAWoiBxBeIAJBgAFqIgQgBxBeIAQQLSACQYACaiIFIAIQXiAFIABBgAJqIgMQESACQYADaiIBIAMQXiABEC0gAyAEEJkBIAMgBBCaASADEKkBIAMQuAEgAxC4ASADEKkBIAFBDBCrASABEHwgARCpASACQYAEaiIIIAEQXiAIIAMQESACQYAFaiIGIAQQXiAGIAEQmgEgBhCpASADIAUQESAFIAEQmQEgBSABEJoBIAEgBRCaASABEKkBIAQgARB7IAQQqQEgBiAEEBEgBiAIEJoBIAUgABCZASAFIAIQESAAIAQQmQEgABCpASAAIAUQESAAELgBIAAQqQEgByAGEJkBIAcQqQEgAkGABmokAAu8AgEGfyMAQYAIayIBJAAgASAAEIwBIAFBgAJqIgMgAEGABGoiBRCMASABQYAEaiIEIABBgAJqIgYQjAEgAUGABmoiAkE4ENABGiABQQE2ArgGIAFBwAZqQTgQ0AEaIAFB+AZqQQE2AgAgAUGAB2pBOBDQARogAUG4B2pBATYCACABQcAHakE4ENABGiABQfgHakEBNgIAIAAQISACIAAQlgEgAiAAEJcBIAAgAhCXASAAELABIAEQyQEgARCzASAAIAEQlwEgAxAhIAMQZCACIAMQlgEgAiADEJcBIAMgAhCXASADELABIAQQISACIAQQlgEgAiAEEJcBIAQgAhCXASAEELABIAYQsgEgBhCzASAFEMkBIAUQswEgBiADEJcBIAUgBBCXASAAQQU2AoAGIAAQnAEgAUGACGokAAv/AQEHfyMAQcACayIBJAAgASAAQUBrIgYQkAEgARBMIAFBQGsiAyAGEJABIAMgAEGAAWoiAhBKIAFBgAFqIgQgAhCQASAEEEwgAiABEK4BIAIgARB3IAIQQiACEIIBIAIQggEgAhBCIARBDBA0IAFBwAFqIgcgBBCQASAHIAIQSiABQYACaiIFIAEQkAEgBSAEEHcgBRBCIAIgAxBKIAMgBBCuASADIAQQdyAEIAMQdyABIAQQfiABEEIgBSABEEogBSAHEHcgAyAAEK4BIAMgBhBKIAAgARCuASAAEEIgACADEEogABCCASAAEEIgBiAFEK4BIAYQQiABQcACaiQAC84CAgd/An4CQAJAAkBBDSABQTpuIgJrIgRBDU0EQEEMIAJrIgNBDk8NASAAIAAgA0EDdGopAwBBOiABIAJBOmxrIgNrrSIKhyAAIARBA3RqKQMAIAOtIgmGhDcDaCAEQQ1rIQUgAEHgAGohBCACQQFqIQZBACACQQN0ayEHQQshAwNAAkAgA0ECaiAGTQRAIAFBrAZPDQEgACACQQN0aiAAKQMAIAmGQv//////////A4M3AwADQCACRQ0HIABCADcDACACQQFrIQIgAEEIaiEADAALAAsgAyAFakEOTw0EIAQgBCAHaiIIQQhrKQMAIAqHIAgpAwAgCYZC//////////8Dg4Q3AwAgA0EBayEDIARBCGshBAwBCwsgAkEOQYCywAAQOwALIARBDkHQscAAEDsACyADQQ5B4LHAABA7AAtBf0EOQfCxwAAQOwALC6cCAQR/IABCADcCECAAAn9BACABQYACSQ0AGkEfIAFB////B0sNABogAUEGIAFBCHZnIgNrdkEBcSADQQF0a0E+agsiBDYCHCAEQQJ0Qey9wABqIQMgACECAkACQAJAAkBB4LvAACgCACIAQQEgBHQiBXEEQCADKAIAIQMgBBCfASEAIAMQywEgAUcNASADIQAMAgtB4LvAACAAIAVyNgIAIAMgAjYCAAwDCyABIAB0IQQDQCADIARBHXZBBHFqQRBqIgUoAgAiAEUNAiAEQQF0IQQgACIDEMsBIAFHDQALCyAAKAIIIgEgAjYCDCAAIAI2AgggAiAANgIMIAIgATYCCCACQQA2AhgPCyAFIAI2AgALIAIgAzYCGCACIAI2AgggAiACNgIMC7YCAQV/IAAoAhghBAJAAkAgACAAKAIMRgRAIABBFEEQIABBFGoiASgCACIDG2ooAgAiAg0BQQAhAQwCCyAAKAIIIgIgACgCDCIBNgIMIAEgAjYCCAwBCyABIABBEGogAxshAwNAIAMhBSACIgFBFGoiAygCACICRQRAIAFBEGohAyABKAIQIQILIAINAAsgBUEANgIACwJAIARFDQACQCAAIAAoAhxBAnRB7L3AAGoiAigCAEcEQCAEQRBBFCAEKAIQIABGG2ogATYCACABDQEMAgsgAiABNgIAIAENAEHgu8AAQeC7wAAoAgBBfiAAKAIcd3E2AgAPCyABIAQ2AhggACgCECICBEAgASACNgIQIAIgATYCGAsgAEEUaigCACIARQ0AIAFBFGogADYCACAAIAE2AhgLC+UBAQZ/IwBBgARrIgIkACACIAAQXiACQYABaiIFIABBgAFqIgYQXiACQYACaiIDQTgQ0AEaIAJBATYCuAIgAkHAAmpBOBDQARogAkH4AmpBATYCACACQYADaiIEIAYQXiACIAEQESAFIAFBgAFqIgcQESADIAcQmQEgAyABEJoBIAQgABCaASADEKkBIAQQqQEgBCADEBEgAyACEJkBIAMQNiAEIAMQmgEgBBCpASADIAUQmQEgAxA2IAYgBBCZASAGIAMQmgEgBRB8IAAgBRCZASAAIAIQmgEgABCwASACQYAEaiQAC28BDH9BjL/AACgCACICRQRAQZy/wABB/x82AgBBAA8LQYS/wAAhBgNAIAIiASgCCCECIAEoAgQhAyABKAIAIQQgAUEMaigCABogASEGIAVBAWohBSACDQALQZy/wAAgBUH/HyAFQf8fSxs2AgBBAAuAAgEGfyMAQYAIayIBJAAgACgCgAZBAUcEQCABIAAQjAEgAUGAAmoiAiAAQYACaiIEEIwBIAFBgARqIgUgAEGABGoiAxCMASABQYAGaiIGIAAQjAEgARAhIAIgAxAYIAIQswEgAhCwASAFECEgBiAEEBggBhCzASADIAAQlwEgAyAEEJcBIAMQsAEgAxAhIAAgARCWASABIAIQlwEgARCwASABIAUQlwEgASAGEJcBIAEQsAEgARArIAIQZCAFEGQgACACEJcBIAQgBRCWASAEIAYQlwEgAyABEJcBIABBBEEFIAAoAoAGQX5xQQJGGzYCgAYgABCdAQsgAUGACGokAAuZAgEBfyMAQYANayIDJAAgAyABEGkgAxCdASADQYgGaiIBIAIQXSABEEIgA0HABmoiAiABEF0gAkEDECkaIAIQQiADQfgGaiADEGkCQCACEFdFBEAgA0HABmoQKkECayECA0AgAkEBakEBTQRAIANB+AZqIgEQnAEMAwUgA0H4BmoQEwJAAkACQCADQcAGaiACEFMgA0GIBmogAhBTa0EBag4DAQIAAgsgA0H4BmogAxAHDAELIAMQngEgA0H4BmogAxAHIAMQngELIAJBAWshAgwBCwALAAsgA0H4BmoiARC3ASABQYABahC2ASABQYACahCxASABQYAEahCxASABQQE2AoAGCyAAIAFBiAYQ0QEaIANBgA1qJAALhgICBH8BfiMAQTBrIgIkACABQQRqIQQgASgCBEUEQCABKAIAIQMgAkEQaiIFQQA2AgAgAkIBNwMIIAIgAkEIajYCFCACQShqIANBEGopAgA3AwAgAkEgaiADQQhqKQIANwMAIAIgAykCADcDGCACQRRqIAJBGGoQDBogBEEIaiAFKAIANgIAIAQgAikDCDcCAAsgAkEgaiIDIARBCGooAgA2AgAgAUEMakEANgIAIAQpAgAhBiABQgE3AgQgAiAGNwMYQQxBBBC5ASIBRQRAQQxBBBDPAQALIAEgAikDGDcCACABQQhqIAMoAgA2AgAgAEGEt8AANgIEIAAgATYCACACQTBqJAAL5AEBAn8jAEHAAWsiAyQAIAMQZyAAIAEgAkEfdSIEIAJzIARBf3NqQQJtIgJBAWtBH3YQbiAAIAFBwAFqIAJBAXNBAWtBH3YQbiAAIAFBgANqIAJBAnNBAWtBH3YQbiAAIAFBwARqIAJBA3NBAWtBH3YQbiAAIAFBgAZqIAJBBHNBAWtBH3YQbiAAIAFBwAdqIAJBBXNBAWtBH3YQbiAAIAFBgAlqIAJBBnNBAWtBH3YQbiAAIAFBwApqIAJBB3NBAWtBH3YQbiADIAAQeCADEKQBIAAgAyAEQQFxEG4gA0HAAWokAAvDAwIGfwN+IwBB8ABrIgEkACABQcCywAAQSSABQThqIAEQXSAAEEICQAJAAkAgAQJ/IAAoAjgiAkEQTARAIAJBAWsQNQwBCyABKQMwIghCAXwiByAIVA0BIAApAzAiCEKAgICAgICAgIB/USAHQn9RcQ0CIAFBOGoiAiAIIAd/pxApIQcgASABKQNoIAdCOoZ8NwNoIAAgAhBhIAAQQkECCyIEECgDQCAERQ0DQQAhAyABIAEpAwgiCEI5hkKAgICAgICAgAKDIAEpAwBCAYeEIgc3AwAgACkDACAHfSEHIABBCGohBSAAIAFBOGoiAkEBA38gAiADaiAHQv//////////A4M3AwAgB0I6hyEHIANBKEYEfyABIAEpAzBCAYciCDcDMCACIAApAzAgCH0gB3wiBzcDMCAHQj+IpwUgASADaiIGQQhqIAhCAYcgBkEQaikDACIIQjmGQoCAgICAgICAAoOEIgk3AwAgAyAFaikDACAHfCAJfSEHIANBCGohAwwBCwtrEDAgBEEBayEEDAALAAtB4LPAAEEZQcSzwAAQWQALQYC0wABBH0HEs8AAEFkACyAAQQE2AjggAUHwAGokAAvuAQECfyMAQbABayIDJAAgA0EwENABIQMCQAJAA0AgAkEwRgRAIANBMGogAxBwIAFBMGohAUEAIQIDQCACQTBGDQMgAkEwRg0EIAIgA2ogASACai0AADoAACACQQFqIQIMAAsACyACQeAARwRAIAIgA2ogASACai0AADoAACACQQFqIQIMAQsLQeAAQeAAQYCmwAAQOwALIANB8ABqIgEgAxBwIABBOBDQASIAQQE2AjggAEFAa0E4ENABIABB+ABqQQE2AgAgACABEK4BIANBMGoQrgEgA0GwAWokAA8LIAJBMGpB4ABBkKbAABA7AAuPAgEDfyMAQSBrIgUkAEEBIQZB2LvAAEHYu8AAKAIAIgdBAWo2AgACQEGgv8AALQAABEBBpL/AACgCAEEBaiEGDAELQaC/wABBAToAAAtBpL/AACAGNgIAAkACQCAHQQBIIAZBAktyDQAgBSAEOgAYIAUgAzYCFCAFIAI2AhBBzLvAACgCACICQQBIDQBBzLvAACACQQFqIgI2AgBBzLvAAEHUu8AAKAIAIgMEf0HQu8AAKAIAIAUgACABKAIQEQAAIAUgBSkDADcDCCAFQQhqIAMoAhQRAABBzLvAACgCAAUgAgtBAWs2AgAgBkEBSw0AIAQNAQsACyMAQRBrIgIkACACIAE2AgwgAiAANgIIAAucAQEEfyMAQYADayICJAAgAiAAEF4gAkGAAWoiASAAQYABaiIEEF4gAkGAAmoiAyAAEF4gAyAEEBEgAiAEEJoBIAEQfCABIAAQmgEgAhCpASABEKkBIAAgAhCZASAAIAEQESABIAMQmQEgARB8IAEgAxCaASABEKkBIAEQNiAAIAEQmgEgAxC4ASAEIAMQmQEgABCwASACQYADaiQAC7kBAQJ/IwBBIGsiAyQAAkAgASABIAJqIgFLDQAgAEEEaigCACICQQF0IgQgASABIARJGyIBQQggAUEISxshAQJAIAIEQCADQRhqQQE2AgAgAyACNgIUIAMgACgCADYCEAwBCyADQQA2AhALIAMgASADQRBqECYgAygCAARAIANBCGooAgAiAEUNASADKAIEIAAQzwEACyADKAIEIQIgAEEEaiABNgIAIAAgAjYCACADQSBqJAAPCxBlAAusAQECfyMAQYADayIDJAAgA0EIaiABEJABAkAgAgRAIANBCGogAhCuAQwBCyADQQhqEDoLIANByABqIgJB8LTAABBJIANBgAFqIAIQjgEgA0HAAWoiAiADQQhqIgQQkAEgAhBMIAIgARBKIAAgARCQASAAIAQQSiADQYACaiACEJABIAAQViEBIANBwAJqIgIgABCQASACEEMgAhBCIAAgAiABEHIgA0GAA2okAAueAQEFfyMAQYABayICJAAgAkE4ENABIgJBATYCOCACQUBrIgNBOBDQARogAkEBNgJ4IAIgABCuASACIAFBgAFqIgUQSiADIAEQrgEgAyAAQYABaiIGEEoCQCACIAMQWEUNACACIABBQGsQrgEgAiAFEEogAkFAayIAIAFBQGsQrgEgACAGEEogAiAAEFhFDQBBASEECyACQYABaiQAIAQLpwEBA38jAEEwayICJAAgAUEEaiEDIAEoAgRFBEAgASgCACEBIAJBEGoiBEEANgIAIAJCATcDCCACIAJBCGo2AhQgAkEoaiABQRBqKQIANwMAIAJBIGogAUEIaikCADcDACACIAEpAgA3AxggAkEUaiACQRhqEAwaIANBCGogBCgCADYCACADIAIpAwg3AgALIABBhLfAADYCBCAAIAM2AgAgAkEwaiQAC5UBAQJ/AkACQAJAAkACfwJAAkACf0EBIgMgAUEASA0AGiACKAIAIgRFDQEgAigCBCICDQQgAQ0CQQEMAwshA0EAIQEMBgsgAQ0AQQEMAQsgAUEBELkBCyICRQ0BDAILIAQgARCsASICDQELIAAgATYCBEEBIQEMAQsgACACNgIEQQAhAwsgACADNgIAIABBCGogATYCAAvvMwISfwV+IwBBMGsiDiQAIA5BEGogACABEFsgDiAOKAIUIgA2AhwgDiAOKAIQIgg2AhggDkEIaiACIAMQWyAOIA4oAgwiATYCJCAOIA4oAggiAzYCICAOIAQgBRBbIA4gDigCBCIFNgIsIA4gDigCACINNgIoIAAhBCMAQZAVayICJAAjAEGwBmsiCiQAIApBEGpBOBDQARogCkHQAGpBOBDQASEVIApBiAFqQQE2AgAgCkEBNgJIIApBkAFqIgBB2KTAABBJIAAQKiEPIApByAFqIhNBgAIQ0AEaIApB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ABBJAkACQAJAAkADQAJAIAxBMEYEQCAAIAAtAABBH3E6AAAgAEHoAGogABC+ASAEDQFBAEEAQZiBwAAQOwALIAQgDEYNAiAAIAxqIAggDGotAAA6AAAgDEEBaiEMDAELC0EAIQwgCCwAACIJQQBIDQIgCEEwaiEDIARBMCAEQTBLG0EwayEIA0AgDEEwRgRAIABBoAFqIgQgABC+ASMAQYABayIDJAAgARBnIAEgAEHoAGoQwAEgAUFAayIIIAQQwAEgAUGAAWoQygEgARBCIAMgARBPIANBQGsiBCAIEJABIAQQTCAEIAMQWEUEQCABEJIBCyADQYABaiQADAULIAggDEYNAiAAIAxqIAMgDGotAAA6AAAgDEEBaiEMDAALAAsgBCAEQYiBwAAQOwALIAxBMGogBEGogcAAEDsACyMAQcABayIDJAAgAEGgAWoiBBBnIANBOBDQASIDQQE2AjggBCAAQegAahDAASAEEEIgBEGAAWoQygEgA0FAayIIIAQQTwJAAkACQCAIIAMQWkEBRgRAIANBgAFqIgggA0FAayADECMgCBBWDQEMAgsgBBCSAQwCCyADQYABaiIIEEMgCBBCCyAEQUBrIANBgAFqEK4BCyADQcABaiQAIAlBIHEiA0EAIABB4AFqEE0iBEEBRxtBASADIARBAUdyGwRAIABBoAFqEKQBCyABIABBoAFqQcABENEBGgsgAEHgAmokAAJ/QQAhAyMAQcAFayIAJAACQCABEIYBDQAgAEEIaiIIQZCtwAAQSSAAQYAEaiIEQbiuwAAQSSAAQUBrIgkgBBCOASAAQYABaiIEEGcgBCABEHggBCAJEEogAEHAAmoiBCABIAgQvQEgASAEECQNACAAQYAEaiIEIABBwAJqIgEgAEEIahC9ASABIARBwAEQ0QEaIAEQpAEgAEGAAWogARAkRQ0AQQEhAwsgAEHABWokAEF/IANFDQAaIAJBwAFqEKQBIAJBgANqIQhBACEAIwBB4ARrIgEkACABQeAAENABIQECQCAFBEADQCAAQeAARgRAIAEgAS0AAEEfcToAACABQeAAaiABEB9BACEAAkAgDSwAACILQQBOBEAgDUHgAGohAyAFQeAAIAVB4ABLG0HgAGshBANAIABB4ABGBEAgAUHgAWoiACABEB8gCCABQeAAaiAAED8MAwsgACAERwRA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AWoQmQEgACAEEBEgAEGAAWoiASAFQYABahCZASABIAgQESAAIAEQeg0BC0EADAELQQELIQEgAEGAAmokACANQcAHaiQAQX8gAUUNABojAEHgA2siACQAIABBgAFqIgFBwKjAABBJIABBuAFqIgNB+KjAABBJIAAgASADEEsgAEHwAmoiAUGwqcAAEEkgAEGoA2oiA0HoqcAAEEkgAEHwAWoiBCABIAMQSyACQYAGaiIBIAAgBBA/IABB4ANqJAAgAkGACWohByACQYADaiEIIwBBkDRrIgAkACAAQYAoaiIDQcitwAAQSSAAQYguaiIEQYCuwAAQSSAAIAMgBBBLIABBgAFqQTgQ0AEaIABBuAFqQTgQ0AEaIABB8AFqED0CQCACQcABaiIEEIYBRQRAIAIQhgEEQCAHIAEgBBAODAILIABB8ARqIgMQPSADIAEQfSADEEcgAEHwB2oiBRBnIAUgBBB4IAUQRiAAQbAJaiIEED0gBCAIEH0gBBBHIABBsAxqIggQZyAIIAIQeCAIEEYgAEGILmoiASAFEJABIABB8A1qIAEQkAEgASAAQbAIahCQASAAQbAOaiABEJABIAEgCBCQASAAQfAOaiABEJABIAEgAEHwDGoQkAEgAEGwD2ogARCQASAAQfAPaiIBED0gAEHwEmoiBRA9IABB8BVqEFUgASADEH0gBSAEEH0gAEH4G2oiARA9IAEgAxB9IAEQogEgAEH4HmoiARA9IAEgBBB9IAEQogEgAEG4AWogAEGAAWoQUEECayEBA0AgAUEBakEBTQRAIABB8BVqIgEQngEgByABQYgGENEBGgwDBSAAQfAVaiIEEBogAEH4IWoiAyAAQfAPaiAAQfANaiAAQbAOahALIABBgChqIgUgAEHwEmogAEHwDmogAEGwD2oQCyADIAUQAyAEIAMQAQJAAkACQCAAQbgBaiABEFMgAEGAAWogARBTa0EBag4DAQIAAgsgAEGILmoiAyAAQfAPaiAAQfAEaiAAQfANaiAAQbAOahAKIABB+CFqIgQgA0GIBhDRARogAyAAQfASaiAAQbAJaiAAQfAOaiAAQbAPahAKIAQgAxADIABB8BVqIAQQAQwBCyAAQYguaiIDIABB8A9qIABB+BtqIABB8A1qIABBsA5qEAogAEH4IWoiBCADQYgGENEBGiADIABB8BJqIABB+B5qIABB8A5qIABBsA9qEAogBCADEAMgAEHwFWogBBABCyABQQFrIQEMAQsACwALIAcgCCACEA4LIABBkDRqJAAjAEHgH2siCCQAIAhB0BNqIgFByK3AABBJIAhB2BlqIg1BgK7AABBJIAggASANEEsgCEGAAWoiC0GQrcAAEEkgAkGID2oiACAHEGkgCEG4AWoiBSAAEGkjAEGACGsiAyQAIAMgBRCMASADQYACaiIJIAVBgAJqIg8QjAEgA0GABGoiCiAFEIwBIANBgAZqIgRBOBDQARogA0EBNgK4BiADQcAGakE4ENABGiADQfgGakEBNgIAIANBgAdqQTgQ0AEaIANBuAdqQQE2AgAgA0HAB2pBOBDQARogA0H4B2pBATYCACAFEJ0BIAMQISAJIAVBgARqIgwQGCAJEGQgAyAJEHkgAxCwASAJIAwQlgEgCRAhIAkQZCAKIA8QGCAJIAoQeSAJELABIAogDxCWASAKECEgBCAFEJYBIAQgDBAYIAogBBB5IAoQsAEgBCAPEJYBIAQgChAYIAQQZCAFIAMQGCAEIAUQlwEgDCAJEBggDBBkIAQgDBCXASAEELABIwBBgAJrIgYkACAGIAQQXiAGQYABaiIQIARBgAFqIhIQXiAGEC0gEBAtIBAQfCAQEKkBIAYgEBB7IAYQPiAEIAYQESAGEDYgBhCpASASIAYQESAGQYACaiQAIAUgAxCWASAFIAQQGCAPIAkQlgEgDyAEEBggDCAKEJYBIAwgBBAYIAVBBTYCgAYgA0GACGokACAAEJ4BIAAgBRAHIAUgABBtIAAgCBAyIAAgCBAyIAAgBRAHIAhBwAdqIgQgABBpIAQQEyAEIAAQByANIAAgCxAbIAhByA1qIgMgDRBpIAMQngEgASAAEGkgARCeASAAIAMQbSAAIAEQByANIAAgCxAbIAMgDRBtIAMQngEgASAAEG0gARCeASAAIAMQbSAAIAEQByANIAAgCxAbIAMgDRBtIAMQngEgASAAEG0gASAIEDIgACADEG0gACABEAcgDSAAIAsQGyADIA0QbSANIAMgCxAbIAMgDRBtIAEgABBtIAEgCBAyIAEgCBAyIAMgARAHIAEgABBtIAEQngEgACADEG0gACABEAcgACAEEAcgABCcASAIQeAfaiQAIAcgAEGIBhDRARpBACEAIwBBgAJrIgEkACABEGwCQCAHIAEQegR/IAdBgAFqIAFBgAFqEHoFQQALRQ0AIAdBgAJqEIcBRQ0AIAdBgARqEIcBIQALIAFBgAJqJABBACAADQAaQX8LIAJBkBVqJAAgDkEoahC0ASAOQSBqELQBIA5BGGoQtAEgDkEwaiQAC58BAgJ/BX4gAEEwaiICKQMAIAFBP3GtIgSGIQUgACkDKCIGQTogAWtBP3GtIgiHIQdBBiEBA38gAiAFIAeENwMAIAFBAU0EfyAAIAApAwAgBIZC//////////8DgzcDACAAKQMwQiSHpwUgAUEBayEBIAJBEGsiA0EIaiECIAYgBIZC//////////8DgyEHIAMpAwAiBiAIhyEFDAELCxoLiAECA34DfyMAQRBrIgUkAAN+IAZBOEYEfiAFQRBqJAAgAwUgBSAAIAZqIgcpAwAiAiACQj+HIAGsIgIgAkI/hxAvIAcgBSkDACIEIAN8IgJC//////////8DgzcDACACIARUrSAFQQhqKQMAIANCP4d8fEIGhiACQjqIhCEDIAZBCGohBgwBCwsLigECA38BfiMAQUBqIgIkACACQQhqIgEgABBdIAEQQiACQThqIQFBBiEDQdwCIQACQAJAA0AgA0EATgRAIAEpAwAiBEIAUg0CIAFBCGshASAAQTprIQAgA0EBayEDDAELC0EAIQAMAQsDQCAEUA0BIABBAWohACAEQgJ/IQQMAAsACyACQUBrJAAgAAuHAQEDfyMAQYACayIBJAAgABCwASABIAAQXiABQYABaiICQTgQ0AEaIAFBATYCuAEgAUHAAWpBOBDQARogAUH4AWpBATYCACABIABBgAFqIgMQmgEgARA2IAIgARCZASACIAMQmgEgAyABEJkBIAMgABCaASAAIAIQmQEgABCwASABQYACaiQAC30CBH4BfyABQT9xrSECQTogAWtBP3GtIQRBACEBIAApAwAiBSEDA38gAUEwRgR/IAAgACkDMCAChzcDMCAFQn8gAoZCf4WDpwUgACABaiIGIAMgAocgBkEIaikDACIDIASGQv//////////A4OENwMAIAFBCGohAQwBCwsaC2kBBH8jAEHAAWsiASQAIAEgABCQASABQUBrIgIgABCQASABQYABaiIDIABBQGsiBBCQASABIAQQdyACIAAQdyACEEIgBCACEEogAxBDIAAgAxB3IAEQQiAAEEIgACABEEogAUHAAWokAAuCAQIBfwF+IABB8AAQ0AEhAANAIAJBOEYEQAJAIAAgASkDMCIDQjqHNwM4IAAgA0L//////////wODNwMwIABBQGshAEEAIQIDQCACQTBGDQEgACACakIANwMAIAJBCGohAgwACwALBSAAIAJqIAEgAmopAwA3AwAgAkEIaiECDAELCwtuAQZ+IAAgA0L/////D4MiBSABQv////8PgyIGfiIHIAUgAUIgiCIIfiIJIAYgA0IgiCIGfnwiBUIghnwiCjcDACAAIAcgClatIAYgCH4gBSAJVK1CIIYgBUIgiIR8fCABIAR+IAIgA358fDcDCAtqAgF/BX4gASkDCCAAKQMAhSIGQgGGQgGHIQdBACACa6whCAN+IANBOEYEfiAFBSAAIANqIgIgAikDACIEIAaFIAEgA2opAwAgBIUgCIOFIgQgB4U3AwAgBCAFhSEFIANBCGohAwwBCwsaC18CAX8EfkIBIQNBMCECA38gAkF4RgR/IARCAYYgA3ynQQFrBSABIAJqKQMAIgUgACACaikDACIGfUI6hyADgyAEhCEEIAJBCGshAiAFIAaFQgF9QjqHIAODIQMMAQsLC2kBBH8jAEGAAmsiAiQAIAIgARBeIAJBgAFqIgMgARBeIAIQLSADIAIQESAAIAMQmAEgAEGAAmoiBCADEJgBIABBgARqIgUgAxCYASAEIAEQpgEgBSACEKYBIABBBTYCgAYgAkGAAmokAAtiAQJ/IwBBQGoiAiQAIAAQQiACIAAQkAECQCABBEAgACABEK4BDAELIAAQOgtBACEBA0AgA0UEQCAAEExBASABQQFqIAFBAUYiAxshAQwBCwsgACACEEogABAeIAJBQGskAAtnAQJ/IwBBQGoiAyQAAkAgASABQR91IgJqIAJzIgIgACgCOGxBgICAEE4EQCADIAIQOSAAIAMQSgwBCyAAIAIQKRogACAAKAI4IAJsNgI4CyABQQBIBEAgABBDIAAQQgsgA0FAayQAC2cAIABBAXYgAHIiAEECdiAAciIAQQR2IAByIgBBCHYgAHIiAEEQdiAAciIAIABBAXZB1arVqgVxayIAQQJ2QbPmzJkDcSAAQbPmzJkDcWoiAEEEdiAAakGPnrz4AHFBgYKECGxBGHYLYQEDfyMAQYABayIBJAAgASAAEJABIAFBQGsiAkE4ENABGiABQQE2AnggASAAQUBrIgMQdyABEEMgAiABEK4BIAIgAxB3IAMgARCuASADIAAQdyAAIAIQrgEgAUGAAWokAAtVAgJ/AX4jAEHwAGsiASQAIAFBwLLAABBJIAApAwAhAyABQThqIgIgABBdIABBARAsIAIgARBgIAIQQiACQQEQLCAAIAIgA0ICgacQMCABQfAAaiQAC5gBAQZ/IwBBwAFrIgMkACAAIAEQXiAAEC0gA0GIAWoiBkHop8AAEEkjAEFAaiIEJAAgA0EIaiICQTgQ0AEiBUEBNgI4IAVBQGtBOBDQASAFQfgAakEBNgIAIAQgBhCOASAFIAQQrgEQwQEgBEFAayQAIAIQqQEgAhB8IAIQqQEgACABEBEgACACEJoBIAAQtQEgA0HAAWokAAtZAQJ/IwBBQGoiAyQAIABBOBDQASIAQQE2AjgCQCABQQBOBEAgACABEJMBDAELIANBCGoiAkHAssAAEEkgAiABEJMBIAIQQiAAIAIQagsgABBUIANBQGskAAu9CAEKfyMAQYABayIHJAAgB0EIaiIDQcCywAAQSSADQQEQlAECQAJAA0AgAUEwRgRAIANBMGogAykDMEIBhzcDACADQThqIQEDQCACRQ0EIAFCADcDACACQQFrIQIgAUEIaiEBDAALAAsgAUE4Rg0BIAFBOEcEQCABIANqIAEgA2oiBEEIaikDAEI5hkL//////////wODIAQpAwBCAYeENwMAIAVBAWohBSABQQhqIQEMAQsLQQdBB0GEm8AAEDsACyAFQQdB9JrAABA7AAsgA0EBEJQBIANBARAsIAdBQGshBUEAIQIjAEGgCmsiASQAIAFBOBDQASIBQUBrQTgQ0AEhBiABQYABakE4ENABGiABQcABakE4ENABGiABQYACakE4ENABGiABQcACakE4ENABGiABQYADakE4ENABGiABQcADakE4ENABGiABQYAEakE4ENABGiABQcAEakE4ENABGiABQYAFakE4ENABGiABQcAFakE4ENABGiABQYAGakE4ENABGiABQcAGakE4ENABGiABQYAHakE4ENABGiABQcAHakE4ENABGiABQfgHakEBNgIAIAFBuAdqQQE2AgAgAUH4BmpBATYCACABQbgGakEBNgIAIAFB+AVqQQE2AgAgAUG4BWpBATYCACABQfgEakEBNgIAIAFBuARqQQE2AgAgAUH4A2pBATYCACABQbgDakEBNgIAIAFB+AJqQQE2AgAgAUG4AmpBATYCACABQfgBakEBNgIAIAFBuAFqQQE2AgAgAUH4AGpBATYCACABQQE2AjggAUGBCGpB5wAQ0AEaIAFB6AhqIgQgABCQASAEEEIgAUGoCWoiBCADEF0gBBBCIAQQKkEDaiIIQQJ2IgNBAWohCQJAA0AgAiAJRgRAIAEQygEgBiABQegIahCuASABQeAJakE4ENABGiABQQE2ApgKQYB5IQIMAgsgAUGoCWoiBCAEQQQQjwEiChCUASAEEEIgAkHnAEcEQCABQYEIaiACaiAKOgAAIAFBqAlqQQQQLCACQQFqIQIMAQsLQecAQecAQaC0wAAQOwALA0AgAgRAIAFB4AlqIgQgASACaiIGQcAHahCuASAGQYAIaiIGIAQQrgEgBiABQegIahBKIAJBQGshAgwBCwsCQAJAAkACQCAIQZwDSQRAIAFBgQhqIANqLAAAIgJBEE8NASAFIAEgAkEGdGoQkAEgA0EBayICQeYASyEEA0AgAkF/Rg0DIAUQTCAFEEwgBRBMIAUQTCAEDQQgAUGBCGogAmotAAAiA0EQSQRAIAUgASADQQZ0ahBKIAJBAWshAgwBCwsgA0EYdEEYdUEQQeC0wAAQOwALIANB5wBBsLTAABA7AAsgAkEQQcC0wAAQOwALIAUQHiABQaAKaiQADAELIAJB5wBB0LTAABA7AAsgACAFEK4BIAdBgAFqJAALbAEBfyMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBHGpBAjYCACADQSxqQQE2AgAgA0ICNwIMIANB2LjAADYCCCADQQE2AiQgAyADQSBqNgIYIAMgAzYCKCADIANBBGo2AiAgA0EIaiACEGYAC2UBAn8gACAAKAIAIgJBCGoiAzYCACAAIAJBA3ZBPHFqQShqIgIgAUH/AXEgAigCAEEIdHI2AgACQAJAIANFBEAgAEEANgIAIAAgACgCBEEBajYCBAwBCyADQf8DcQ0BCyAAEA8LC1wAIABBOBDQASIAQQE2AjggAEFAa0E4ENABGiAAQfgAakEBNgIAIABBgAFqEFEgAEGAAmpBOBDQARogAEG4AmpBATYCACAAQcACakE4ENABGiAAQfgCakEBNgIAC1sBA38jAEGAAWsiASQAIAAQqQEgASAAEJABIAFBQGsiAiAAQUBrIgMQkAEgARBMIAIQTCABIAIQdyABQQAQMyAAIAEQSiABEEMgARBCIAMgARBKIAFBgAFqJAALYQEBfyMAQYACayIDJAAgABA9IAAgARCZASAAQYABaiIBIAIQmQEgAEGAAmoQtwEgABCpASADIAAQOCADQYABaiICIAEQXiACEC0gAiADEHpFBEAgABCbAQsgA0GAAmokAAtUAQF/IwBBIGsiAiQAIAIgACgCADYCBCACQRhqIAFBEGopAgA3AwAgAkEQaiABQQhqKQIANwMAIAIgASkCADcDCCACQQRqIAJBCGoQDCACQSBqJAALZwAjAEEwayIBJABBpLvAAC0AAARAIAFBHGpBATYCACABQgI3AgwgAUGQtsAANgIIIAFBATYCJCABIAA2AiwgASABQSBqNgIYIAEgAUEsajYCICABQQhqQbi2wAAQZgALIAFBMGokAAtiAgF+An8gACkDACEBA34gACACaiIDIAFC//////////8DgzcDACABQjqHIQEgAkEoRgR+IAAgACkDMCABfCIBNwMwIAFCJIcFIAJBCGohAiADQQhqKQMAIAF8IQEMAQsLGgt8AQV/IwBBQGoiAyQAIANBCGoiAkHAssAAEEkgAiAAKAI4QQFrEDUiBBAoA0AgAUE4RwRAIAAgAWoiBSABIAJqKQMAIAUpAwB9NwMAIAFBCGohAQwBCwsgAEEBIARBAWp0IgI2AjggAkH///8PSgRAIAAQHgsgA0FAayQAC3sBAn8gAEEoaiECA0AgAUGAAkYEQCAAQufMp9DW0Ouzu383AgggAEIANwIAIABBIGpCq7OP/JGjs/DbADcCACAAQRhqQv+kuYjFkdqCm383AgAgAEEQakLy5rvjo6f9p6V/NwIABSABIAJqQQA2AgAgAUEEaiEBDAELCwtUACAAQTgQ0AEiAEEBNgI4IABBQGtBOBDQARogAEH4AGpBATYCACAAQYABakE4ENABGiAAQbgBakEBNgIAIABBwAFqQTgQ0AEaIABB+AFqQQE2AgALWAECfyMAQUBqIgEkAAJAIAAQhgENACABQQEQOSAAQYABaiICIAEQWA0AIAJBABAzIAAgAhBKIAAQHiAAQUBrIgAgAhBKIAAQHiACIAEQrgELIAFBQGskAAtZAQJ/IwBBgAFrIgEkAAJAIAAQigENACABEFEgAEGAAmoiAiABEHoNACACED4gACACEBEgABC1ASAAQYABaiIAIAIQESAAELUBIAIgARCZAQsgAUGAAWokAAtbAgF+An8gACkDACEBA0AgACACaiIDIAFC//////////8DgzcDACABQjqHIQEgAkHgAEYEQCAAIAApA2ggAXw3A2gFIAJBCGohAiADQQhqKQMAIAF8IQEMAQsLC08BAX8gAEE4ENABGgJAA0AgAkEHRwRAIAJBB0YNAiAAIAEpAwA3AwAgAEEIaiEAIAFBCGohASACQQFqIQIMAQsLDwtBB0EHQeSawAAQOwALVAECfyMAQbABayICJAAgATQCOCAANAI4fkL///8PVQRAIAAQHgsgAkEIaiIDIAAgARAFIAJB+ABqIgEgAxBrIAAgARBqIABBAjYCOCACQbABaiQAC1EBAn8jAEFAaiIDJAAgAEE4ENABIgBBATYCOCAAQUBrQTgQ0AEgAEH4AGpBATYCACADIAEQjgEgACADEK4BIAMgAhCOASADEK4BIANBQGskAAvwDAIRfwh+IwBBsAFrIg8kACAANAI4IhIgEn5C////D1YEQCAAEB4LIwBB0AFrIgEkACAPQQhqIgZBCGpB0AAQ0AEaIAFBwAFqIAApAwAiFyAXQj+HIhYgFyAWEC8gBiABKQPAASISQv//////////A4M3AwAgAUHIAWopAwAiFUIGhiASQjqIhCETIBVCOoghGCAAQQhqIgwhDSAAIQlBASEKQQEhBwJAA0AgCkEERgRAIABBGGohCiAAQRBqIQkgAEEoaiEMIAApAzAhF0EHIQUgAUHIAGohCwNAIAVBC0kEQCABQUBrIAVBA3QiCCAAakEwaykDACISIBJCP4cgFyAXQj+HIhYQLyAFQQFqIg1BAXYhByALKQMAIRUgASkDQCESIAkhAiAMIQQgBUEFayIOIQMDQCADIAdJBEAgASACKQMAIhQgFEI/hyAEKQMAIhQgFEI/hxAvIAEpAwAiFCASfCISIBRUrSABQQhqKQMAIBV8fCEVIAJBCGohAiAEQQhrIQQgA0EBaiEDDAELCyAGIAhqIBJCAYYiFCATfCITQv//////////A4M3AwAgAUEwaiAAIA5BA3RqKQMAIhkgGUI/hyAXIBYQLyATIBRU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aikDADcDACACQQhqIQIMAQsLC4QJAg1/Cn4jAEFAaiILJAAgC0EIaiIJQcCywAAQSSMAQZACayICJAAgAEEwENABIQogAkHoAGpB8AAQ0AEaIAJB4AFqQTAQ0AEaIAoQcSACIAEiDCkDACIQQv3/8//P///5AX5C//////////8DgyISNwPYASACQdgAaiASQgAgCSkDACIXIBdCP4ciGBAvIBAgAikDWCIPfCITIA9UrSACQeAAaikDACAQQj+HfHwiEEI6hyABKQMIIg9CP4d8IA8gEEIGhiATQjqIhCITfCIQIBNUrXwhD0EBIQBCACETAkACQANAAkAgAEEHRgRAQQYhB0EAIQhBByEADAELIABBAXYiAUEBaiEGIAggAWshAyABQQN0IgFBCGohBCAHIAFrIQUgAkHIAGogCSAAQQN0Ig1qKQMAIhUgFUI/hyIWIBJCABAvIAJB0ABqKQMAIBAgECATfCIRVq0gDyAUfHx8IBEgAikDSHwiDyARVK18IRAgAEEBaiEBA0AgACAGTQRAIAJB2AFqIA1qIA9C/f/z/8////kBfkL//////////wODIhE3AwAgAkE4aiARQgAgFyAYEC8gAkEoaiARQgAgFSAWEC8gAkHoAGogAEEEdGoiACACQTBqKQMAIhE3AwggACACKQMoIhU3AwAgDyACKQM4IhZ8Ig8gFlStIAJBQGspAwAgEHx8IhBCOocgDCABQQN0aikDACIWQj+HfCAWIBBCBoYgD0I6iIQiD3wiECAPVK18IQ8gEyAVfCITIBVUrSARIBR8fCEUIAdBCGohByAIQQFqIQggASEADAMLIANBB08NAyACQRhqIAQgCWopAwAgBSAJaikDAH0iESARQj+HIAJB2AFqIg4gBWopAwAgBCAOaikDAH0iESARQj+HEC8gAikDGCIRIA98Ig8gEVStIAJBIGopAwAgEHx8IRAgBkEBaiEGIARBCGohBCAFQQhrIQUgA0EBayEDDAALAAsLA0ACQAJAIABBDUcEQCAHIABBAXYiBmshAyAIIAZBA3QiAWshBCABQQhqIQUgDyAUfCAQIBN8Ig8gEFStfCEQIABBAWohAQNAIAZBBUsNAyADQQdPDQIgAkEIaiAFIAlqKQMAIAQgCWpBMGopAwB9IhIgEkI/hyACIARqQYgCaikDACACQdgBaiAFaikDAH0iEiASQj+HEC8gAikDCCISIA98Ig8gElStIAJBEGopAwAgEHx8IRAgBkEBaiEGIARBCGshBCADQQFrIQMgBUEIaiEFDAALAAsgCiAQQv//////////A4M3AzAgAkGQAmokAAwECyADQQdBpJzAABA7AAsgAEEDdCAKakE4ayAPQv//////////A4M3AwAgEEI6hyAMIAFBA3RqKQMAIhJCP4d8IBIgEEIGhiAPQjqIhCIPfCIQIA9UrXwhDyAUIABBBHQgAmpBCGoiAEEIaikDAH0gEyAAKQMAIhJUrX0hFCAIQQhqIQggB0EBaiEHIBMgEn0hEyABIQAMAAsACyADQQdBlJzAABA7AAsgC0FAayQACy4BAX8jAEGAAWsiASQAIAAQRSABEFEgACABEJkBIABBgAFqELYBIAFBgAFqJAALMwAgACABEJYBIABBgAJqIAFBgAJqEJYBIABBgARqIAFBgARqEJYBIAAgASgCgAY2AoAGCygAIAAgASACEHIgAEFAayABQUBrIAIQciAAQYABaiABQYABaiACEHILLQAgACABIAIQjQEgAEGAAWogAUGAAWogAhCNASAAQYACaiABQYACaiACEI0BCycBAn8jAEFAaiICJAAgAkEIaiIDIAEQvgEgACADEI4BIAJBQGskAAsiAQF/A0AgAUE4RwRAIAAgAWpCADcDACABQQhqIQEMAQsLCyUAIAAgASACEDAgAEEAIAJrIAAoAjgiACABKAI4c3EgAHM2AjgLJwAgACAAKAIEQQFxIAFyQQJyNgIEIAAgAWoiACAAKAIEQQFyNgIECyMAA0AgAgRAIAAgAS0AABA8IAJBAWshAiABQQFqIQEMAQsLCywAIAAQiwEgACABEJYBIABBgAJqIAIQlgEgAEGABGogAxCWASAAQQU2AoAGCyMBAX8jAEFAaiIBJAAgASAAEJABIAEQHiABEFcgAUFAayQACykAIAAgARBgIAAgACgCOCABKAI4aiIBNgI4IAFB////D0oEQCAAEB4LCyUAIAAgARCuASAAQUBrIAFBQGsQrgEgAEGAAWogAUGAAWoQrgELKAEBfyMAQYACayICJAAgAiABEIwBIAIQKyAAIAIQlwEgAkGAAmokAAscAQF/IAAgARBYBH8gAEFAayABQUBrEFgFQQALCycBAX8jAEGAAWsiAiQAIAIg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DCELDQALCyAMpyICQeMASwRAIABBAmsiACAGQQlqaiAMpyICIAJB//8DcUHkAG4iAkHkAGxrQf//A3FBAXRB6LjAAGovAAA7AAALAkAgAkEKTwRAIABBAmsiACAGQQlqaiACQQF0Qei4wABqLwAAOwAADAELIABBAWsiACAGQQlqaiACQTBqOgAACwJ/IAZBCWogAGohCEErQYCAxAAgASgCACIDQQFxIgIbIQQgAkEnIABrIglqIQJBlLjAAEEAIANBBHEbIQUCQAJAIAEoAghFBEBBASEAIAEgBCAFEFINAQwCCwJAAkACQAJAIAIgAUEMaigCACIDSQRAIAEtAABBCHENBEEAIQAgAyACayICIQNBASABLQAgIgcgB0EDRhtBA3FBAWsOAgECAwtBASEAIAEgBCAFEFINBAwFC0EAIQMgAiEADAELIAJBAXYhACACQQFqQQF2IQMLIABBAWohACABQRxqKAIAIQcgASgCBCECIAEoAhghCgJAA0AgAEEBayIARQ0BIAogAiAHKAIQEQQARQ0AC0EBDAQLQQEhACACQYCAxABGDQEgASAEIAUQUg0BIAEoAhggCCAJIAEoAhwoAgwRBQANASABKAIcIQQgASgCGCEBQQAhAAJ/A0AgAyAAIANGDQEaIABBAWohACABIAIgBCgCEBEEAEUNAAsgAEEBawsgA0khAAwBCyABKAIEIQcgAUEwNgIEIAEtACAhCkEBIQAgAUEBOgAgIAEgBCAFEFINAEEAIQAgAyACayICIQMCQAJAAkBBASABLQAgIgQgBEEDRhtBA3FBAWsOAgABAgtBACEDIAIhAAwBCyACQQF2IQAgAkEBakEBdiEDCyAAQQFqIQAgAUEcaigCACECIAEoAgQhBCABKAIYIQUCQANAIABBAWsiAEUNASAFIAQgAigCEBEEAEUNAAtBAQwDC0EBIQAgBEGAgMQARg0AIAEoAhggCCAJIAEoAhwoAgwRBQANACABKAIcIQAgASgCGCEFQQAhAgJAA0AgAiADRg0BIAJBAWohAiAFIAQgACgCEBEEAEUNAAtBASEAIAJBAWsgA0kNAQsgASAKOgAgIAEgBzYCBEEADAILIAAMAQsgASgCGCAIIAkgAUEcaigCACgCDBEFAAsgBkEwaiQACwsAIAAQNiAAELABCysCAX8BfkIBIQIDQCAAIAFq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AAANAEHgs8AAC8EHYXR0ZW1wdCB0byBkaXZpZGUgYnkgemVybwAAAAAAAABhdHRlbXB0IHRvIGRpdmlkZSB3aXRoIG92ZXJmbG93ALAZEAASAAAADAIAAA0AAACwGRAAEgAAABgCAAAmAAAAsBkQABIAAAAYAgAAIwAAALAZEAASAAAAHgIAABcAAACwGRAAEgAAAB4CAAAUAAAAqqr//////gHu//9UrP//AupBYg9rDyoBw5z9ShTOEwJLd2TXrEtDAu3pxpKm+V8Cox4RoAEAAAADAAAABAAAAAQAAAAEAAAABQAAAAYAAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlbWVtb3J5IGFsbG9jYXRpb24gb2YgIGJ5dGVzIGZhaWxlZAoAAOsaEAAVAAAAABsQAA4AAABsaWJyYXJ5L3N0ZC9zcmMvYWxsb2MucnMgGxAAGAAAAEkBAAAJAAAAbGlicmFyeS9zdGQvc3JjL3Bhbmlja2luZy5yc0gbEAAcAAAARgIAAB8AAABIGxAAHAAAAEcCAAAeAAAABwAAAAwAAAAEAAAACAAAAAMAAAAIAAAABAAAAAkAAAAKAAAAEAAAAAQAAAALAAAADAAAAAMAAAAIAAAABAAAAA0AAAAOAAAAbGlicmFyeS9hbGxvYy9zcmMvcmF3X3ZlYy5yc2NhcGFjaXR5IG92ZXJmbG93AAAA6BsQABEAAADMGxAAHAAAAAUCAAAFAAAAEAAAAAAAAAABAAAAEQAAAGluZGV4IG91dCBvZiBib3VuZHM6IHRoZSBsZW4gaXMgIGJ1dCB0aGUgaW5kZXggaXMgAAAkHBAAIAAAAEQcEAASAAAAMDAwMTAyMDMwNDA1MDYwNzA4MDkxMDExMTIxMzE0MTUxNjE3MTgxOTIwMjEyMjIzMjQyNTI2MjcyODI5MzAzMTMyMzMzNDM1MzYzNzM4Mzk0MDQxNDI0MzQ0NDU0NjQ3NDg0OTUwNTE1MjUzNTQ1NTU2NTc1ODU5NjA2MTYyNjM2NDY1NjY2NzY4Njk3MDcxNzI3Mzc0NzU3Njc3Nzg3OTgwODE4MjgzODQ4NTg2ODc4ODg5OTA5MTkyOTM5NDk1OTY5Nzk4OTkgb3V0IG9mIHJhbmdlIGZvciBzbGljZSBvZiBsZW5ndGggbGlicmFyeS9jb3JlL3NyYy9zbGljZS9pbmRleC5yc3JhbmdlIGVuZCBpbmRleCAAAABxHRAAEAAAADAdEAAiAAAAUh0QAB8AAABJAAAABQB7CXByb2R1Y2VycwIIbGFuZ3VhZ2UBBFJ1c3QADHByb2Nlc3NlZC1ieQMFcnVzdGMdMS42MS4wIChmZTViMTNkNjggMjAyMi0wNS0xOCkGd2FscnVzBjAuMTkuMAx3YXNtLWJpbmRnZW4SMC4yLjgxICgwNjJhYTVmNzAp`;\n","import init, { bls_init, bls_verify } from '../vendor/bls/bls';\n\nexport let verify: (pk: Uint8Array, sig: Uint8Array, msg: Uint8Array) => boolean;\n\n/**\n *\n * @param pk primary key: Uint8Array\n * @param sig signature: Uint8Array\n * @param msg message: Uint8Array\n * @returns Promise resolving a boolean\n */\nexport async function blsVerify(\n pk: Uint8Array,\n sig: Uint8Array,\n msg: Uint8Array,\n): Promise {\n if (!verify) {\n await init();\n if (bls_init() !== 0) {\n throw new Error('Cannot initialize BLS');\n }\n verify = (pk1, sig1, msg1) => {\n // Reorder things from what the WASM expects (sig, m, w).\n return bls_verify(sig1, msg1, pk1) === 0;\n };\n }\n return verify(pk, sig, msg);\n}\n","/**\n * Concatenate multiple array buffers.\n * @param buffers The buffers to concatenate.\n */\nexport function concat(...buffers: ArrayBuffer[]): ArrayBuffer {\n const result = new Uint8Array(buffers.reduce((acc, curr) => acc + curr.byteLength, 0));\n let index = 0;\n for (const b of buffers) {\n result.set(new Uint8Array(b), index);\n index += b.byteLength;\n }\n return result.buffer;\n}\n\n/**\n * Transforms a buffer to an hexadecimal string. This will use the buffer as an Uint8Array.\n * @param buffer The buffer to return the hexadecimal string of.\n */\nexport function toHex(buffer: ArrayBuffer): string {\n return [...new Uint8Array(buffer)].map(x => x.toString(16).padStart(2, '0')).join('');\n}\n\nconst hexRe = new RegExp(/^([0-9A-F]{2})*$/i);\n\n/**\n * Transforms a hexadecimal string into an array buffer.\n * @param hex The hexadecimal string to use.\n */\nexport function fromHex(hex: string): ArrayBuffer {\n if (!hexRe.test(hex)) {\n throw new Error('Invalid hexadecimal string.');\n }\n const buffer = [...hex]\n .reduce((acc, curr, i) => {\n // tslint:disable-next-line:no-bitwise\n acc[(i / 2) | 0] = (acc[(i / 2) | 0] || '') + curr;\n return acc;\n }, [] as string[])\n .map(x => Number.parseInt(x, 16));\n\n return new Uint8Array(buffer).buffer;\n}\n\nexport function compare(b1: ArrayBuffer, b2: ArrayBuffer): number {\n if (b1.byteLength !== b2.byteLength) {\n return b1.byteLength - b2.byteLength;\n }\n\n const u1 = new Uint8Array(b1);\n const u2 = new Uint8Array(b2);\n for (let i = 0; i < u1.length; i++) {\n if (u1[i] !== u2[i]) {\n return u1[i] - u2[i];\n }\n }\n return 0;\n}\n\n/**\n * Returns a true ArrayBuffer from a Uint8Array, as Uint8Array.buffer is unsafe.\n * @param {Uint8Array} arr Uint8Array to convert\n * @returns ArrayBuffer\n */\nexport function uint8ToBuf(arr: Uint8Array): ArrayBuffer {\n return new DataView(arr.buffer, arr.byteOffset, arr.byteLength).buffer;\n}\n","/**\n * Concatenate multiple array buffers.\n * @param buffers The buffers to concatenate.\n */\nexport function concat(...buffers: ArrayBuffer[]): ArrayBuffer {\n const result = new Uint8Array(buffers.reduce((acc, curr) => acc + curr.byteLength, 0));\n let index = 0;\n for (const b of buffers) {\n result.set(new Uint8Array(b), index);\n index += b.byteLength;\n }\n return result;\n}\n\n/**\n * Returns an hexadecimal representation of an array buffer.\n * @param bytes The array buffer.\n */\nexport function toHexString(bytes: ArrayBuffer): string {\n return new Uint8Array(bytes).reduce((str, byte) => str + byte.toString(16).padStart(2, '0'), '');\n}\n\n/**\n * Return an array buffer from its hexadecimal representation.\n * @param hexString The hexadecimal string.\n */\nexport function fromHexString(hexString: string): ArrayBuffer {\n return new Uint8Array((hexString.match(/.{1,2}/g) ?? []).map(byte => parseInt(byte, 16)));\n}\n\n/**\n * A class that abstracts a pipe-like ArrayBuffer.\n */\nexport class PipeArrayBuffer {\n /**\n * The reading view. It's a sliding window as we read and write, pointing to the buffer.\n * @private\n */\n private _view: Uint8Array;\n\n /**\n * The actual buffer containing the bytes.\n * @private\n */\n private _buffer: ArrayBuffer;\n\n /**\n * Creates a new instance of a pipe\n * @param buffer an optional buffer to start with\n * @param length an optional amount of bytes to use for the length.\n */\n constructor(buffer?: ArrayBuffer, length = buffer?.byteLength || 0) {\n this._buffer = buffer || new ArrayBuffer(0);\n this._view = new Uint8Array(this._buffer, 0, length);\n }\n\n get buffer(): ArrayBuffer {\n // Return a copy of the buffer.\n return this._view.slice();\n }\n\n get byteLength(): number {\n return this._view.byteLength;\n }\n\n /**\n * Read `num` number of bytes from the front of the pipe.\n * @param num The number of bytes to read.\n */\n public read(num: number): ArrayBuffer {\n const result = this._view.subarray(0, num);\n this._view = this._view.subarray(num);\n return result.slice().buffer;\n }\n\n public readUint8(): number | undefined {\n const result = this._view[0];\n this._view = this._view.subarray(1);\n return result;\n }\n\n /**\n * Write a buffer to the end of the pipe.\n * @param buf The bytes to write.\n */\n public write(buf: ArrayBuffer): void {\n const b = new Uint8Array(buf);\n const offset = this._view.byteLength;\n if (this._view.byteOffset + this._view.byteLength + b.byteLength >= this._buffer.byteLength) {\n // Alloc grow the view to include the new bytes.\n this.alloc(b.byteLength);\n } else {\n // Update the view to include the new bytes.\n this._view = new Uint8Array(\n this._buffer,\n this._view.byteOffset,\n this._view.byteLength + b.byteLength,\n );\n }\n\n this._view.set(b, offset);\n }\n\n /**\n * Whether or not there is more data to read from the buffer\n */\n public get end(): boolean {\n return this._view.byteLength === 0;\n }\n\n /**\n * Allocate a fixed amount of memory in the buffer. This does not affect the view.\n * @param amount A number of bytes to add to the buffer.\n */\n public alloc(amount: number) {\n // Add a little bit of exponential growth.\n // tslint:disable-next-line:no-bitwise\n const b = new ArrayBuffer(((this._buffer.byteLength + amount) * 1.2) | 0);\n const v = new Uint8Array(b, 0, this._view.byteLength + amount);\n v.set(this._view);\n this._buffer = b;\n this._view = v;\n }\n}\n","/* eslint-disable no-constant-condition */\n// tslint:disable:no-bitwise\n// Note: this file uses buffer-pipe, which on Node only, uses the Node Buffer\n// implementation, which isn't compatible with the NPM buffer package\n// which we use everywhere else. This means that we have to transform\n// one into the other, hence why every function that returns a Buffer\n// actually return `new Buffer(pipe.buffer)`.\n// TODO: The best solution would be to have our own buffer type around\n// Uint8Array which is standard.\nimport { PipeArrayBuffer as Pipe } from './buffer';\n\nfunction eob(): never {\n throw new Error('unexpected end of buffer');\n}\n\n/**\n *\n * @param pipe Pipe from buffer-pipe\n * @param num number\n * @returns Buffer\n */\nexport function safeRead(pipe: Pipe, num: number): ArrayBuffer {\n if (pipe.byteLength < num) {\n eob();\n }\n return pipe.read(num);\n}\n\n/**\n * @param pipe\n */\nexport function safeReadUint8(pipe: Pipe): number {\n const byte = pipe.readUint8();\n if (byte === undefined) {\n eob();\n }\n return byte;\n}\n\n/**\n * Encode a positive number (or bigint) into a Buffer. The number will be floored to the\n * nearest integer.\n * @param value The number to encode.\n */\nexport function lebEncode(value: bigint | number): ArrayBuffer {\n if (typeof value === 'number') {\n value = BigInt(value);\n }\n\n if (value < BigInt(0)) {\n throw new Error('Cannot leb encode negative values.');\n }\n\n const byteLength = (value === BigInt(0) ? 0 : Math.ceil(Math.log2(Number(value)))) + 1;\n const pipe = new Pipe(new ArrayBuffer(byteLength), 0);\n while (true) {\n const i = Number(value & BigInt(0x7f));\n value /= BigInt(0x80);\n if (value === BigInt(0)) {\n pipe.write(new Uint8Array([i]));\n break;\n } else {\n pipe.write(new Uint8Array([i | 0x80]));\n }\n }\n\n return pipe.buffer;\n}\n\n/**\n * Decode a leb encoded buffer into a bigint. The number will always be positive (does not\n * support signed leb encoding).\n * @param pipe A Buffer containing the leb encoded bits.\n */\nexport function lebDecode(pipe: Pipe): bigint {\n let weight = BigInt(1);\n let value = BigInt(0);\n let byte;\n\n do {\n byte = safeReadUint8(pipe);\n value += BigInt(byte & 0x7f).valueOf() * weight;\n weight *= BigInt(128);\n } while (byte >= 0x80);\n\n return value;\n}\n\n/**\n * Encode a number (or bigint) into a Buffer, with support for negative numbers. The number\n * will be floored to the nearest integer.\n * @param value The number to encode.\n */\nexport function slebEncode(value: bigint | number): ArrayBuffer {\n if (typeof value === 'number') {\n value = BigInt(value);\n }\n\n const isNeg = value < BigInt(0);\n if (isNeg) {\n value = -value - BigInt(1);\n }\n const byteLength = (value === BigInt(0) ? 0 : Math.ceil(Math.log2(Number(value)))) + 1;\n const pipe = new Pipe(new ArrayBuffer(byteLength), 0);\n while (true) {\n const i = getLowerBytes(value);\n value /= BigInt(0x80);\n\n // prettier-ignore\n if ( ( isNeg && value === BigInt(0) && (i & 0x40) !== 0)\n || (!isNeg && value === BigInt(0) && (i & 0x40) === 0)) {\n pipe.write(new Uint8Array([i]));\n break;\n } else {\n pipe.write(new Uint8Array([i | 0x80]));\n }\n }\n\n function getLowerBytes(num: bigint): number {\n const bytes = num % BigInt(0x80);\n if (isNeg) {\n // We swap the bits here again, and remove 1 to do two's complement.\n return Number(BigInt(0x80) - bytes - BigInt(1));\n } else {\n return Number(bytes);\n }\n }\n return pipe.buffer;\n}\n\n/**\n * Decode a leb encoded buffer into a bigint. The number is decoded with support for negative\n * signed-leb encoding.\n * @param pipe A Buffer containing the signed leb encoded bits.\n */\nexport function slebDecode(pipe: Pipe): bigint {\n // Get the size of the buffer, then cut a buffer of that size.\n const pipeView = new Uint8Array(pipe.buffer);\n let len = 0;\n for (; len < pipeView.byteLength; len++) {\n if (pipeView[len] < 0x80) {\n // If it's a positive number, we reuse lebDecode.\n if ((pipeView[len] & 0x40) === 0) {\n return lebDecode(pipe);\n }\n break;\n }\n }\n\n const bytes = new Uint8Array(safeRead(pipe, len + 1));\n let value = BigInt(0);\n for (let i = bytes.byteLength - 1; i >= 0; i--) {\n value = value * BigInt(0x80) + BigInt(0x80 - (bytes[i] & 0x7f) - 1);\n }\n return -value - BigInt(1);\n}\n\n/**\n *\n * @param value bigint or number\n * @param byteLength number\n * @returns Buffer\n */\nexport function writeUIntLE(value: bigint | number, byteLength: number): ArrayBuffer {\n if (BigInt(value) < BigInt(0)) {\n throw new Error('Cannot write negative values.');\n }\n return writeIntLE(value, byteLength);\n}\n\n/**\n *\n * @param value\n * @param byteLength\n */\nexport function writeIntLE(value: bigint | number, byteLength: number): ArrayBuffer {\n value = BigInt(value);\n\n const pipe = new Pipe(new ArrayBuffer(Math.min(1, byteLength)), 0);\n let i = 0;\n let mul = BigInt(256);\n let sub = BigInt(0);\n let byte = Number(value % mul);\n pipe.write(new Uint8Array([byte]));\n while (++i < byteLength) {\n if (value < 0 && sub === BigInt(0) && byte !== 0) {\n sub = BigInt(1);\n }\n byte = Number((value / mul - sub) % BigInt(256));\n pipe.write(new Uint8Array([byte]));\n mul *= BigInt(256);\n }\n\n return pipe.buffer;\n}\n\n/**\n *\n * @param pipe Pipe from buffer-pipe\n * @param byteLength number\n * @returns bigint\n */\nexport function readUIntLE(pipe: Pipe, byteLength: number): bigint {\n let val = BigInt(safeReadUint8(pipe));\n let mul = BigInt(1);\n let i = 0;\n while (++i < byteLength) {\n mul *= BigInt(256);\n const byte = BigInt(safeReadUint8(pipe));\n val = val + mul * byte;\n }\n return val;\n}\n\n/**\n *\n * @param pipe Pipe from buffer-pipe\n * @param byteLength number\n * @returns bigint\n */\nexport function readIntLE(pipe: Pipe, byteLength: number): bigint {\n let val = readUIntLE(pipe, byteLength);\n const mul = BigInt(2) ** (BigInt(8) * BigInt(byteLength - 1) + BigInt(7));\n if (val >= mul) {\n val -= mul * BigInt(2);\n }\n return val;\n}\n","/**\n * Equivalent to `Math.log2(n)` with support for `BigInt` values\n *\n * @param n bigint or integer\n * @returns integer\n */\nexport function ilog2(n: bigint | number): number {\n const nBig = BigInt(n);\n if (n <= 0) {\n throw new RangeError('Input must be positive');\n }\n return nBig.toString(2).length - 1;\n}\n\n/**\n * Equivalent to `2 ** n` with support for `BigInt` values\n * (necessary for browser preprocessors which replace the `**` operator with `Math.pow`)\n *\n * @param n bigint or integer\n * @returns bigint\n */\nexport function iexp2(n: bigint | number): bigint {\n const nBig = BigInt(n);\n if (n < 0) {\n throw new RangeError('Input must be non-negative');\n }\n return BigInt(1) << nBig;\n}\n","// tslint:disable:max-classes-per-file\nimport { Principal as PrincipalId } from '@dfinity/principal';\nimport { JsonValue } from './types';\nimport { concat, PipeArrayBuffer as Pipe } from './utils/buffer';\nimport { idlLabelToId } from './utils/hash';\nimport {\n lebDecode,\n lebEncode,\n readIntLE,\n readUIntLE,\n safeRead,\n safeReadUint8,\n slebDecode,\n slebEncode,\n writeIntLE,\n writeUIntLE,\n} from './utils/leb128';\nimport { iexp2 } from './utils/bigint-math';\n\n// tslint:disable:max-line-length\n/**\n * This module provides a combinator library to create serializers/deserializers\n * between JavaScript values and IDL used by canisters on the Internet Computer,\n * as documented at https://github.com/dfinity/candid/blob/119703ba342d2fef6ab4972d2541b9fe36ae8e36/spec/Candid.md\n */\n// tslint:enable:max-line-length\n\nconst enum IDLTypeIds {\n Null = -1,\n Bool = -2,\n Nat = -3,\n Int = -4,\n Float32 = -13,\n Float64 = -14,\n Text = -15,\n Reserved = -16,\n Empty = -17,\n Opt = -18,\n Vector = -19,\n Record = -20,\n Variant = -21,\n Func = -22,\n Service = -23,\n Principal = -24,\n}\n\nconst magicNumber = 'DIDL';\nconst toReadableString_max = 400; // will not display arguments after 400chars. Makes sure 2mb blobs don't get inside the error\n\nfunction zipWith(xs: TX[], ys: TY[], f: (a: TX, b: TY) => TR): TR[] {\n return xs.map((x, i) => f(x, ys[i]));\n}\n\n/**\n * An IDL Type Table, which precedes the data in the stream.\n */\nclass TypeTable {\n // List of types. Needs to be an array as the index needs to be stable.\n private _typs: ArrayBuffer[] = [];\n private _idx = new Map();\n\n public has(obj: ConstructType) {\n return this._idx.has(obj.name);\n }\n\n public add(type: ConstructType, buf: ArrayBuffer) {\n const idx = this._typs.length;\n this._idx.set(type.name, idx);\n this._typs.push(buf);\n }\n\n public merge(obj: ConstructType, knot: string) {\n const idx = this._idx.get(obj.name);\n const knotIdx = this._idx.get(knot);\n if (idx === undefined) {\n throw new Error('Missing type index for ' + obj);\n }\n if (knotIdx === undefined) {\n throw new Error('Missing type index for ' + knot);\n }\n this._typs[idx] = this._typs[knotIdx];\n\n // Delete the type.\n this._typs.splice(knotIdx, 1);\n this._idx.delete(knot);\n }\n\n public encode() {\n const len = lebEncode(this._typs.length);\n const buf = concat(...this._typs);\n return concat(len, buf);\n }\n\n public indexOf(typeName: string) {\n if (!this._idx.has(typeName)) {\n throw new Error('Missing type index for ' + typeName);\n }\n return slebEncode(this._idx.get(typeName) || 0);\n }\n}\n\nexport abstract class Visitor {\n public visitType(t: Type, data: D): R {\n throw new Error('Not implemented');\n }\n public visitPrimitive(t: PrimitiveType, data: D): R {\n return this.visitType(t, data);\n }\n public visitEmpty(t: EmptyClass, data: D): R {\n return this.visitPrimitive(t, data);\n }\n public visitBool(t: BoolClass, data: D): R {\n return this.visitPrimitive(t, data);\n }\n public visitNull(t: NullClass, data: D): R {\n return this.visitPrimitive(t, data);\n }\n public visitReserved(t: ReservedClass, data: D): R {\n return this.visitPrimitive(t, data);\n }\n public visitText(t: TextClass, data: D): R {\n return this.visitPrimitive(t, data);\n }\n public visitNumber(t: PrimitiveType, data: D): R {\n return this.visitPrimitive(t, data);\n }\n public visitInt(t: IntClass, data: D): R {\n return this.visitNumber(t, data);\n }\n public visitNat(t: NatClass, data: D): R {\n return this.visitNumber(t, data);\n }\n public visitFloat(t: FloatClass, data: D): R {\n return this.visitPrimitive(t, data);\n }\n public visitFixedInt(t: FixedIntClass, data: D): R {\n return this.visitNumber(t, data);\n }\n public visitFixedNat(t: FixedNatClass, data: D): R {\n return this.visitNumber(t, data);\n }\n public visitPrincipal(t: PrincipalClass, data: D): R {\n return this.visitPrimitive(t, data);\n }\n\n public visitConstruct(t: ConstructType, data: D): R {\n return this.visitType(t, data);\n }\n public visitVec(t: VecClass, ty: Type, data: D): R {\n return this.visitConstruct(t, data);\n }\n public visitOpt(t: OptClass, ty: Type, data: D): R {\n return this.visitConstruct(t, data);\n }\n public visitRecord(t: RecordClass, fields: Array<[string, Type]>, data: D): R {\n return this.visitConstruct(t, data);\n }\n public visitTuple(t: TupleClass, components: Type[], data: D): R {\n const fields: Array<[string, Type]> = components.map((ty, i) => [`_${i}_`, ty]);\n return this.visitRecord(t, fields, data);\n }\n public visitVariant(t: VariantClass, fields: Array<[string, Type]>, data: D): R {\n return this.visitConstruct(t, data);\n }\n public visitRec(t: RecClass, ty: ConstructType, data: D): R {\n return this.visitConstruct(ty, data);\n }\n public visitFunc(t: FuncClass, data: D): R {\n return this.visitConstruct(t, data);\n }\n public visitService(t: ServiceClass, data: D): R {\n return this.visitConstruct(t, data);\n }\n}\n\n/**\n * Represents an IDL type.\n */\nexport abstract class Type {\n public abstract readonly name: string;\n public abstract accept(v: Visitor, d: D): R;\n\n /* Display type name */\n public display(): string {\n return this.name;\n }\n\n public valueToString(x: T): string {\n return toReadableString(x);\n }\n\n /* Implement `T` in the IDL spec, only needed for non-primitive types */\n public buildTypeTable(typeTable: TypeTable): void {\n if (!typeTable.has(this)) {\n this._buildTypeTableImpl(typeTable);\n }\n }\n\n /**\n * Assert that JavaScript's `x` is the proper type represented by this\n * Type.\n */\n public abstract covariant(x: any): x is T;\n\n /**\n * Encode the value. This needs to be public because it is used by\n * encodeValue() from different types.\n * @internal\n */\n public abstract encodeValue(x: T): ArrayBuffer;\n\n /**\n * Implement `I` in the IDL spec.\n * Encode this type for the type table.\n */\n public abstract encodeType(typeTable: TypeTable): ArrayBuffer;\n\n public abstract checkType(t: Type): Type;\n public abstract decodeValue(x: Pipe, t: Type): T;\n\n protected abstract _buildTypeTableImpl(typeTable: TypeTable): void;\n}\n\nexport abstract class PrimitiveType extends Type {\n public checkType(t: Type): Type {\n if (this.name !== t.name) {\n throw new Error(`type mismatch: type on the wire ${t.name}, expect type ${this.name}`);\n }\n return t;\n }\n public _buildTypeTableImpl(typeTable: TypeTable): void {\n // No type table encoding for Primitive types.\n return;\n }\n}\n\nexport abstract class ConstructType extends Type {\n public checkType(t: Type): ConstructType {\n if (t instanceof RecClass) {\n const ty = t.getType();\n if (typeof ty === 'undefined') {\n throw new Error('type mismatch with uninitialized type');\n }\n return ty;\n }\n throw new Error(`type mismatch: type on the wire ${t.name}, expect type ${this.name}`);\n }\n public encodeType(typeTable: TypeTable) {\n return typeTable.indexOf(this.name);\n }\n}\n\n/**\n * Represents an IDL Empty, a type which has no inhabitants.\n * Since no values exist for this type, it cannot be serialised or deserialised.\n * Result types like `Result` should always succeed.\n */\nexport class EmptyClass extends PrimitiveType {\n public accept(v: Visitor, d: D): R {\n return v.visitEmpty(this, d);\n }\n\n public covariant(x: any): x is never {\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(): never {\n throw new Error('Empty cannot appear as a function argument');\n }\n\n public valueToString(): never {\n throw new Error('Empty cannot appear as a value');\n }\n\n public encodeType() {\n return slebEncode(IDLTypeIds.Empty);\n }\n\n public decodeValue(): never {\n throw new Error('Empty cannot appear as an output');\n }\n\n get name() {\n return 'empty';\n }\n}\n\n/**\n * Represents an IDL Unknown, a placeholder type for deserialization only.\n * When decoding a value as Unknown, all fields will be retained but the names are only available in\n * hashed form.\n * A deserialized unknown will offer it's actual type by calling the `type()` function.\n * Unknown cannot be serialized and attempting to do so will throw an error.\n */\nexport class UnknownClass extends Type {\n public checkType(t: Type): Type {\n throw new Error('Method not implemented for unknown.');\n }\n\n public accept(v: Visitor, d: D): R {\n throw v.visitType(this, d);\n }\n\n public covariant(x: any): x is any {\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(): never {\n throw new Error('Unknown cannot appear as a function argument');\n }\n\n public valueToString(): never {\n throw new Error('Unknown cannot appear as a value');\n }\n\n public encodeType(): never {\n throw new Error('Unknown cannot be serialized');\n }\n\n public decodeValue(b: Pipe, t: Type): any {\n let decodedValue = t.decodeValue(b, t);\n\n if (Object(decodedValue) !== decodedValue) {\n // decodedValue is primitive. Box it, otherwise we cannot add the type() function.\n // The type() function is important for primitives because otherwise we cannot tell apart the\n // different number types.\n decodedValue = Object(decodedValue);\n }\n\n let typeFunc;\n if (t instanceof RecClass) {\n typeFunc = () => t.getType();\n } else {\n typeFunc = () => t;\n }\n // Do not use 'decodedValue.type = typeFunc' because this would lead to an enumerable property\n // 'type' which means it would be serialized if the value would be candid encoded again.\n // This in turn leads to problems if the decoded value is a variant because these values are\n // only allowed to have a single property.\n Object.defineProperty(decodedValue, 'type', {\n value: typeFunc,\n writable: true,\n enumerable: false,\n configurable: true,\n });\n return decodedValue;\n }\n\n protected _buildTypeTableImpl(): void {\n throw new Error('Unknown cannot be serialized');\n }\n\n get name() {\n return 'Unknown';\n }\n}\n\n/**\n * Represents an IDL Bool\n */\nexport class BoolClass extends PrimitiveType {\n public accept(v: Visitor, d: D): R {\n return v.visitBool(this, d);\n }\n\n public covariant(x: any): x is boolean {\n if (typeof x === 'boolean') return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: boolean): ArrayBuffer {\n return new Uint8Array([x ? 1 : 0]);\n }\n\n public encodeType() {\n return slebEncode(IDLTypeIds.Bool);\n }\n\n public decodeValue(b: Pipe, t: Type) {\n this.checkType(t);\n switch (safeReadUint8(b)) {\n case 0:\n return false;\n case 1:\n return true;\n default:\n throw new Error('Boolean value out of range');\n }\n }\n\n get name() {\n return 'bool';\n }\n}\n\n/**\n * Represents an IDL Null\n */\nexport class NullClass extends PrimitiveType {\n public accept(v: Visitor, d: D): R {\n return v.visitNull(this, d);\n }\n\n public covariant(x: any): x is null {\n if (x === null) return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue() {\n return new ArrayBuffer(0);\n }\n\n public encodeType() {\n return slebEncode(IDLTypeIds.Null);\n }\n\n public decodeValue(b: Pipe, t: Type) {\n this.checkType(t);\n return null;\n }\n\n get name() {\n return 'null';\n }\n}\n\n/**\n * Represents an IDL Reserved\n */\nexport class ReservedClass extends PrimitiveType {\n public accept(v: Visitor, d: D): R {\n return v.visitReserved(this, d);\n }\n\n public covariant(x: any): x is any {\n return true;\n }\n\n public encodeValue() {\n return new ArrayBuffer(0);\n }\n\n public encodeType() {\n return slebEncode(IDLTypeIds.Reserved);\n }\n\n public decodeValue(b: Pipe, t: Type) {\n if (t.name !== this.name) {\n t.decodeValue(b, t);\n }\n return null;\n }\n\n get name() {\n return 'reserved';\n }\n}\n\n/**\n * Represents an IDL Text\n */\nexport class TextClass extends PrimitiveType {\n public accept(v: Visitor, d: D): R {\n return v.visitText(this, d);\n }\n\n public covariant(x: any): x is string {\n if (typeof x === 'string') return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: string) {\n const buf = new TextEncoder().encode(x);\n const len = lebEncode(buf.byteLength);\n return concat(len, buf);\n }\n\n public encodeType() {\n return slebEncode(IDLTypeIds.Text);\n }\n\n public decodeValue(b: Pipe, t: Type) {\n this.checkType(t);\n const len = lebDecode(b);\n const buf = safeRead(b, Number(len));\n const decoder = new TextDecoder('utf8', { fatal: true });\n return decoder.decode(buf);\n }\n\n get name() {\n return 'text';\n }\n\n public valueToString(x: string) {\n return '\"' + x + '\"';\n }\n}\n\n/**\n * Represents an IDL Int\n */\nexport class IntClass extends PrimitiveType {\n public accept(v: Visitor, d: D): R {\n return v.visitInt(this, d);\n }\n\n public covariant(x: any): x is bigint {\n // We allow encoding of JavaScript plain numbers.\n // But we will always decode to bigint.\n if (typeof x === 'bigint' || Number.isInteger(x)) return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: bigint | number) {\n return slebEncode(x);\n }\n\n public encodeType() {\n return slebEncode(IDLTypeIds.Int);\n }\n\n public decodeValue(b: Pipe, t: Type) {\n this.checkType(t);\n return slebDecode(b);\n }\n\n get name() {\n return 'int';\n }\n\n public valueToString(x: bigint) {\n return x.toString();\n }\n}\n\n/**\n * Represents an IDL Nat\n */\nexport class NatClass extends PrimitiveType {\n public accept(v: Visitor, d: D): R {\n return v.visitNat(this, d);\n }\n\n public covariant(x: any): x is bigint {\n // We allow encoding of JavaScript plain numbers.\n // But we will always decode to bigint.\n if ((typeof x === 'bigint' && x >= BigInt(0)) || (Number.isInteger(x) && x >= 0)) return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: bigint | number) {\n return lebEncode(x);\n }\n\n public encodeType() {\n return slebEncode(IDLTypeIds.Nat);\n }\n\n public decodeValue(b: Pipe, t: Type) {\n this.checkType(t);\n return lebDecode(b);\n }\n\n get name() {\n return 'nat';\n }\n\n public valueToString(x: bigint) {\n return x.toString();\n }\n}\n\n/**\n * Represents an IDL Float\n */\nexport class FloatClass extends PrimitiveType {\n constructor(private _bits: number) {\n super();\n if (_bits !== 32 && _bits !== 64) {\n throw new Error('not a valid float type');\n }\n }\n public accept(v: Visitor, d: D): R {\n return v.visitFloat(this, d);\n }\n\n public covariant(x: any): x is number {\n if (typeof x === 'number' || x instanceof Number) return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: number) {\n const buf = new ArrayBuffer(this._bits / 8);\n const view = new DataView(buf);\n if (this._bits === 32) {\n view.setFloat32(0, x, true);\n } else {\n view.setFloat64(0, x, true);\n }\n return buf;\n }\n\n public encodeType() {\n const opcode = this._bits === 32 ? IDLTypeIds.Float32 : IDLTypeIds.Float64;\n return slebEncode(opcode);\n }\n\n public decodeValue(b: Pipe, t: Type) {\n this.checkType(t);\n const bytes = safeRead(b, this._bits / 8);\n const view = new DataView(bytes);\n if (this._bits === 32) {\n return view.getFloat32(0, true);\n } else {\n return view.getFloat64(0, true);\n }\n }\n\n get name() {\n return 'float' + this._bits;\n }\n\n public valueToString(x: number) {\n return x.toString();\n }\n}\n\n/**\n * Represents an IDL fixed-width Int(n)\n */\nexport class FixedIntClass extends PrimitiveType {\n constructor(public readonly _bits: number) {\n super();\n }\n\n public accept(v: Visitor, d: D): R {\n return v.visitFixedInt(this, d);\n }\n\n public covariant(x: any): x is bigint {\n const min = iexp2(this._bits - 1) * BigInt(-1);\n const max = iexp2(this._bits - 1) - BigInt(1);\n let ok = false;\n if (typeof x === 'bigint') {\n ok = x >= min && x <= max;\n } else if (Number.isInteger(x)) {\n const v = BigInt(x);\n ok = v >= min && v <= max;\n } else {\n ok = false;\n }\n\n if (ok) return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: bigint | number) {\n return writeIntLE(x, this._bits / 8);\n }\n\n public encodeType() {\n const offset = Math.log2(this._bits) - 3;\n return slebEncode(-9 - offset);\n }\n\n public decodeValue(b: Pipe, t: Type) {\n this.checkType(t);\n const num = readIntLE(b, this._bits / 8);\n if (this._bits <= 32) {\n return Number(num);\n } else {\n return num;\n }\n }\n\n get name() {\n return `int${this._bits}`;\n }\n\n public valueToString(x: bigint | number) {\n return x.toString();\n }\n}\n\n/**\n * Represents an IDL fixed-width Nat(n)\n */\nexport class FixedNatClass extends PrimitiveType {\n constructor(public readonly _bits: number) {\n super();\n }\n\n public accept(v: Visitor, d: D): R {\n return v.visitFixedNat(this, d);\n }\n\n public covariant(x: any): x is bigint {\n const max = iexp2(this._bits);\n let ok = false;\n if (typeof x === 'bigint' && x >= BigInt(0)) {\n ok = x < max;\n } else if (Number.isInteger(x) && x >= 0) {\n const v = BigInt(x);\n ok = v < max;\n } else {\n ok = false;\n }\n if (ok) return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: bigint | number) {\n return writeUIntLE(x, this._bits / 8);\n }\n\n public encodeType() {\n const offset = Math.log2(this._bits) - 3;\n return slebEncode(-5 - offset);\n }\n\n public decodeValue(b: Pipe, t: Type) {\n this.checkType(t);\n const num = readUIntLE(b, this._bits / 8);\n if (this._bits <= 32) {\n return Number(num);\n } else {\n return num;\n }\n }\n\n get name() {\n return `nat${this._bits}`;\n }\n\n public valueToString(x: bigint | number) {\n return x.toString();\n }\n}\n\n/**\n * Represents an IDL Array\n *\n * Arrays of fixed-sized nat/int type (e.g. nat8), are encoded from and decoded to TypedArrays (e.g. Uint8Array).\n * Arrays of float or other non-primitive types are encoded/decoded as untyped array in Javascript.\n *\n * @param {Type} t\n */\nexport class VecClass extends ConstructType {\n // If true, this vector is really a blob and we can just use memcpy.\n //\n // NOTE:\n // With support of encoding/dencoding of TypedArrays, this optimization is\n // only used when plain array of bytes are passed as encoding input in order\n // to be backward compatible.\n private _blobOptimization = false;\n\n constructor(protected _type: Type) {\n super();\n if (_type instanceof FixedNatClass && _type._bits === 8) {\n this._blobOptimization = true;\n }\n }\n\n public accept(v: Visitor, d: D): R {\n return v.visitVec(this, this._type, d);\n }\n\n public covariant(x: any): x is T[] {\n // Special case for ArrayBuffer\n const bits =\n this._type instanceof FixedNatClass\n ? this._type._bits\n : this._type instanceof FixedIntClass\n ? this._type._bits\n : 0;\n\n if (\n (ArrayBuffer.isView(x) && bits == (x as any).BYTES_PER_ELEMENT * 8) ||\n (Array.isArray(x) &&\n x.every((v, idx) => {\n try {\n return this._type.covariant(v);\n } catch (e: any) {\n throw new Error(`Invalid ${this.display()} argument: \\n\\nindex ${idx} -> ${e.message}`);\n }\n }))\n )\n return true;\n\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: T[]) {\n const len = lebEncode(x.length);\n if (this._blobOptimization) {\n return concat(len, new Uint8Array(x as unknown as number[]));\n }\n if (ArrayBuffer.isView(x)) {\n return concat(len, new Uint8Array(x.buffer));\n }\n const buf = new Pipe(new ArrayBuffer(len.byteLength + x.length), 0);\n buf.write(len);\n for (const d of x) {\n const encoded = this._type.encodeValue(d);\n buf.write(new Uint8Array(encoded));\n }\n return buf.buffer;\n }\n\n public _buildTypeTableImpl(typeTable: TypeTable) {\n this._type.buildTypeTable(typeTable);\n\n const opCode = slebEncode(IDLTypeIds.Vector);\n const buffer = this._type.encodeType(typeTable);\n typeTable.add(this, concat(opCode, buffer));\n }\n\n public decodeValue(b: Pipe, t: Type): T[] {\n const vec = this.checkType(t);\n if (!(vec instanceof VecClass)) {\n throw new Error('Not a vector type');\n }\n const len = Number(lebDecode(b));\n\n if (this._type instanceof FixedNatClass) {\n if (this._type._bits == 8) {\n return new Uint8Array(b.read(len)) as unknown as T[];\n }\n if (this._type._bits == 16) {\n return new Uint16Array(b.read(len * 2)) as unknown as T[];\n }\n if (this._type._bits == 32) {\n return new Uint32Array(b.read(len * 4)) as unknown as T[];\n }\n if (this._type._bits == 64) {\n return new BigUint64Array(b.read(len * 8)) as unknown as T[];\n }\n }\n\n if (this._type instanceof FixedIntClass) {\n if (this._type._bits == 8) {\n return new Int8Array(b.read(len)) as unknown as T[];\n }\n if (this._type._bits == 16) {\n return new Int16Array(b.read(len * 2)) as unknown as T[];\n }\n if (this._type._bits == 32) {\n return new Int32Array(b.read(len * 4)) as unknown as T[];\n }\n if (this._type._bits == 64) {\n return new BigInt64Array(b.read(len * 8)) as unknown as T[];\n }\n }\n\n const rets: T[] = [];\n for (let i = 0; i < len; i++) {\n rets.push(this._type.decodeValue(b, vec._type));\n }\n return rets;\n }\n\n get name() {\n return `vec ${this._type.name}`;\n }\n\n public display() {\n return `vec ${this._type.display()}`;\n }\n\n public valueToString(x: T[]) {\n const elements = x.map(e => this._type.valueToString(e));\n return 'vec {' + elements.join('; ') + '}';\n }\n}\n\n/**\n * Represents an IDL Option\n * @param {Type} t\n */\nexport class OptClass extends ConstructType<[T] | []> {\n constructor(protected _type: Type) {\n super();\n }\n\n public accept(v: Visitor, d: D): R {\n return v.visitOpt(this, this._type, d);\n }\n\n public covariant(x: any): x is [T] | [] {\n try {\n if (Array.isArray(x) && (x.length === 0 || (x.length === 1 && this._type.covariant(x[0]))))\n return true;\n } catch (e: any) {\n throw new Error(\n `Invalid ${this.display()} argument: ${toReadableString(x)} \\n\\n-> ${e.message}`,\n );\n }\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: [T] | []) {\n if (x.length === 0) {\n return new Uint8Array([0]);\n } else {\n return concat(new Uint8Array([1]), this._type.encodeValue(x[0]));\n }\n }\n\n public _buildTypeTableImpl(typeTable: TypeTable) {\n this._type.buildTypeTable(typeTable);\n\n const opCode = slebEncode(IDLTypeIds.Opt);\n const buffer = this._type.encodeType(typeTable);\n typeTable.add(this, concat(opCode, buffer));\n }\n\n public decodeValue(b: Pipe, t: Type): [T] | [] {\n const opt = this.checkType(t);\n if (!(opt instanceof OptClass)) {\n throw new Error('Not an option type');\n }\n switch (safeReadUint8(b)) {\n case 0:\n return [];\n case 1:\n return [this._type.decodeValue(b, opt._type)];\n default:\n throw new Error('Not an option value');\n }\n }\n\n get name() {\n return `opt ${this._type.name}`;\n }\n\n public display() {\n return `opt ${this._type.display()}`;\n }\n\n public valueToString(x: [T] | []) {\n if (x.length === 0) {\n return 'null';\n } else {\n return `opt ${this._type.valueToString(x[0])}`;\n }\n }\n}\n\n/**\n * Represents an IDL Record\n * @param {Object} [fields] - mapping of function name to Type\n */\nexport class RecordClass extends ConstructType> {\n protected readonly _fields: Array<[string, Type]>;\n\n constructor(fields: Record = {}) {\n super();\n this._fields = Object.entries(fields).sort((a, b) => idlLabelToId(a[0]) - idlLabelToId(b[0]));\n }\n\n public accept(v: Visitor, d: D): R {\n return v.visitRecord(this, this._fields, d);\n }\n\n public tryAsTuple(): Type[] | null {\n const res: Type[] = [];\n for (let i = 0; i < this._fields.length; i++) {\n const [key, type] = this._fields[i];\n if (key !== `_${i}_`) {\n return null;\n }\n res.push(type);\n }\n return res;\n }\n\n public covariant(x: any): x is Record {\n if (\n typeof x === 'object' &&\n this._fields.every(([k, t]) => {\n // eslint-disable-next-line\n if (!x.hasOwnProperty(k)) {\n throw new Error(`Record is missing key \"${k}\".`);\n }\n try {\n return t.covariant(x[k]);\n } catch (e: any) {\n throw new Error(`Invalid ${this.display()} argument: \\n\\nfield ${k} -> ${e.message}`);\n }\n })\n )\n return true;\n\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: Record) {\n const values = this._fields.map(([key]) => x[key]);\n const bufs = zipWith(this._fields, values, ([, c], d) => c.encodeValue(d));\n return concat(...bufs);\n }\n\n public _buildTypeTableImpl(T: TypeTable) {\n this._fields.forEach(([_, value]) => value.buildTypeTable(T));\n const opCode = slebEncode(IDLTypeIds.Record);\n const len = lebEncode(this._fields.length);\n const fields = this._fields.map(([key, value]) =>\n concat(lebEncode(idlLabelToId(key)), value.encodeType(T)),\n );\n\n T.add(this, concat(opCode, len, concat(...fields)));\n }\n\n public decodeValue(b: Pipe, t: Type) {\n const record = this.checkType(t);\n if (!(record instanceof RecordClass)) {\n throw new Error('Not a record type');\n }\n const x: Record = {};\n\n let expectedRecordIdx = 0;\n let actualRecordIdx = 0;\n while (actualRecordIdx < record._fields.length) {\n const [hash, type] = record._fields[actualRecordIdx];\n\n if (expectedRecordIdx >= this._fields.length) {\n // skip unexpected left over fields present on the wire\n type.decodeValue(b, type);\n actualRecordIdx++;\n continue;\n }\n\n const [expectKey, expectType] = this._fields[expectedRecordIdx];\n const expectedId = idlLabelToId(this._fields[expectedRecordIdx][0]);\n const actualId = idlLabelToId(hash);\n if (expectedId === actualId) {\n // the current field on the wire matches the expected field\n x[expectKey] = expectType.decodeValue(b, type);\n expectedRecordIdx++;\n actualRecordIdx++;\n } else if (actualId > expectedId) {\n // The expected field does not exist on the wire\n if (expectType instanceof OptClass || expectType instanceof ReservedClass) {\n x[expectKey] = [];\n expectedRecordIdx++;\n } else {\n throw new Error('Cannot find required field ' + expectKey);\n }\n } else {\n // The field on the wire does not exist in the output type, so we can skip it\n type.decodeValue(b, type);\n actualRecordIdx++;\n }\n }\n\n // initialize left over expected optional fields\n for (const [expectKey, expectType] of this._fields.slice(expectedRecordIdx)) {\n if (expectType instanceof OptClass || expectType instanceof ReservedClass) {\n // TODO this assumes null value in opt is represented as []\n x[expectKey] = [];\n } else {\n throw new Error('Cannot find required field ' + expectKey);\n }\n }\n return x;\n }\n\n get name() {\n const fields = this._fields.map(([key, value]) => key + ':' + value.name);\n return `record {${fields.join('; ')}}`;\n }\n\n public display() {\n const fields = this._fields.map(([key, value]) => key + ':' + value.display());\n return `record {${fields.join('; ')}}`;\n }\n\n public valueToString(x: Record) {\n const values = this._fields.map(([key]) => x[key]);\n const fields = zipWith(this._fields, values, ([k, c], d) => k + '=' + c.valueToString(d));\n return `record {${fields.join('; ')}}`;\n }\n}\n\n/**\n * Represents Tuple, a syntactic sugar for Record.\n * @param {Type} components\n */\nexport class TupleClass extends RecordClass {\n protected readonly _components: Type[];\n\n constructor(_components: Type[]) {\n const x: Record = {};\n _components.forEach((e, i) => (x['_' + i + '_'] = e));\n super(x);\n this._components = _components;\n }\n\n public accept(v: Visitor, d: D): R {\n return v.visitTuple(this, this._components, d);\n }\n\n public covariant(x: any): x is T {\n // `>=` because tuples can be covariant when encoded.\n\n if (\n Array.isArray(x) &&\n x.length >= this._fields.length &&\n this._components.every((t, i) => {\n try {\n return t.covariant(x[i]);\n } catch (e: any) {\n throw new Error(`Invalid ${this.display()} argument: \\n\\nindex ${i} -> ${e.message}`);\n }\n })\n )\n return true;\n\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: any[]) {\n const bufs = zipWith(this._components, x, (c, d) => c.encodeValue(d));\n return concat(...bufs);\n }\n\n public decodeValue(b: Pipe, t: Type): T {\n const tuple = this.checkType(t);\n if (!(tuple instanceof TupleClass)) {\n throw new Error('not a tuple type');\n }\n if (tuple._components.length < this._components.length) {\n throw new Error('tuple mismatch');\n }\n const res = [];\n for (const [i, wireType] of tuple._components.entries()) {\n if (i >= this._components.length) {\n // skip value\n wireType.decodeValue(b, wireType);\n } else {\n res.push(this._components[i].decodeValue(b, wireType));\n }\n }\n return res as T;\n }\n\n public display() {\n const fields = this._components.map(value => value.display());\n return `record {${fields.join('; ')}}`;\n }\n\n public valueToString(values: any[]) {\n const fields = zipWith(this._components, values, (c, d) => c.valueToString(d));\n return `record {${fields.join('; ')}}`;\n }\n}\n\n/**\n * Represents an IDL Variant\n * @param {Object} [fields] - mapping of function name to Type\n */\nexport class VariantClass extends ConstructType> {\n private readonly _fields: Array<[string, Type]>;\n\n constructor(fields: Record = {}) {\n super();\n this._fields = Object.entries(fields).sort((a, b) => idlLabelToId(a[0]) - idlLabelToId(b[0]));\n }\n\n public accept(v: Visitor, d: D): R {\n return v.visitVariant(this, this._fields, d);\n }\n\n public covariant(x: any): x is Record {\n if (\n typeof x === 'object' &&\n Object.entries(x).length === 1 &&\n this._fields.every(([k, v]) => {\n try {\n // eslint-disable-next-line\n return !x.hasOwnProperty(k) || v.covariant(x[k]);\n } catch (e: any) {\n throw new Error(`Invalid ${this.display()} argument: \\n\\nvariant ${k} -> ${e.message}`);\n }\n })\n )\n return true;\n\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: Record) {\n for (let i = 0; i < this._fields.length; i++) {\n const [name, type] = this._fields[i];\n // eslint-disable-next-line\n if (x.hasOwnProperty(name)) {\n const idx = lebEncode(i);\n const buf = type.encodeValue(x[name]);\n\n return concat(idx, buf);\n }\n }\n throw Error('Variant has no data: ' + x);\n }\n\n public _buildTypeTableImpl(typeTable: TypeTable) {\n this._fields.forEach(([, type]) => {\n type.buildTypeTable(typeTable);\n });\n const opCode = slebEncode(IDLTypeIds.Variant);\n const len = lebEncode(this._fields.length);\n const fields = this._fields.map(([key, value]) =>\n concat(lebEncode(idlLabelToId(key)), value.encodeType(typeTable)),\n );\n typeTable.add(this, concat(opCode, len, ...fields));\n }\n\n public decodeValue(b: Pipe, t: Type) {\n const variant = this.checkType(t);\n if (!(variant instanceof VariantClass)) {\n throw new Error('Not a variant type');\n }\n const idx = Number(lebDecode(b));\n if (idx >= variant._fields.length) {\n throw Error('Invalid variant index: ' + idx);\n }\n const [wireHash, wireType] = variant._fields[idx];\n for (const [key, expectType] of this._fields) {\n if (idlLabelToId(wireHash) === idlLabelToId(key)) {\n const value = expectType.decodeValue(b, wireType);\n return { [key]: value };\n }\n }\n throw new Error('Cannot find field hash ' + wireHash);\n }\n\n get name() {\n const fields = this._fields.map(([key, type]) => key + ':' + type.name);\n return `variant {${fields.join('; ')}}`;\n }\n\n public display() {\n const fields = this._fields.map(\n ([key, type]) => key + (type.name === 'null' ? '' : `:${type.display()}`),\n );\n return `variant {${fields.join('; ')}}`;\n }\n\n public valueToString(x: Record) {\n for (const [name, type] of this._fields) {\n // eslint-disable-next-line\n if (x.hasOwnProperty(name)) {\n const value = type.valueToString(x[name]);\n if (value === 'null') {\n return `variant {${name}}`;\n } else {\n return `variant {${name}=${value}}`;\n }\n }\n }\n throw new Error('Variant has no data: ' + x);\n }\n}\n\n/**\n * Represents a reference to an IDL type, used for defining recursive data\n * types.\n */\nexport class RecClass extends ConstructType {\n private static _counter = 0;\n private _id = RecClass._counter++;\n private _type: ConstructType | undefined = undefined;\n\n public accept(v: Visitor, d: D): R {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n return v.visitRec(this, this._type, d);\n }\n\n public fill(t: ConstructType) {\n this._type = t;\n }\n\n public getType() {\n return this._type;\n }\n\n public covariant(x: any): x is T {\n if (this._type ? this._type.covariant(x) : false) return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: T) {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n return this._type.encodeValue(x);\n }\n\n public _buildTypeTableImpl(typeTable: TypeTable) {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n typeTable.add(this, new Uint8Array([]));\n this._type.buildTypeTable(typeTable);\n typeTable.merge(this, this._type.name);\n }\n\n public decodeValue(b: Pipe, t: Type) {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n return this._type.decodeValue(b, t);\n }\n\n get name() {\n return `rec_${this._id}`;\n }\n\n public display() {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n return `μ${this.name}.${this._type.name}`;\n }\n\n public valueToString(x: T) {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n return this._type.valueToString(x);\n }\n}\n\nfunction decodePrincipalId(b: Pipe): PrincipalId {\n const x = safeReadUint8(b);\n if (x !== 1) {\n throw new Error('Cannot decode principal');\n }\n\n const len = Number(lebDecode(b));\n return PrincipalId.fromUint8Array(new Uint8Array(safeRead(b, len)));\n}\n\n/**\n * Represents an IDL principal reference\n */\nexport class PrincipalClass extends PrimitiveType {\n public accept(v: Visitor, d: D): R {\n return v.visitPrincipal(this, d);\n }\n\n public covariant(x: any): x is PrincipalId {\n if (x && x._isPrincipal) return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: PrincipalId): ArrayBuffer {\n const buf = x.toUint8Array();\n const len = lebEncode(buf.byteLength);\n return concat(new Uint8Array([1]), len, buf);\n }\n\n public encodeType() {\n return slebEncode(IDLTypeIds.Principal);\n }\n\n public decodeValue(b: Pipe, t: Type): PrincipalId {\n this.checkType(t);\n return decodePrincipalId(b);\n }\n\n get name() {\n return 'principal';\n }\n public valueToString(x: PrincipalId) {\n return `${this.name} \"${x.toText()}\"`;\n }\n}\n\n/**\n * Represents an IDL function reference.\n * @param argTypes Argument types.\n * @param retTypes Return types.\n * @param annotations Function annotations.\n */\nexport class FuncClass extends ConstructType<[PrincipalId, string]> {\n public static argsToString(types: Type[], v: any[]) {\n if (types.length !== v.length) {\n throw new Error('arity mismatch');\n }\n return '(' + types.map((t, i) => t.valueToString(v[i])).join(', ') + ')';\n }\n\n constructor(public argTypes: Type[], public retTypes: Type[], public annotations: string[] = []) {\n super();\n }\n\n public accept(v: Visitor, d: D): R {\n return v.visitFunc(this, d);\n }\n public covariant(x: any): x is [PrincipalId, string] {\n if (Array.isArray(x) && x.length === 2 && x[0] && x[0]._isPrincipal && typeof x[1] === 'string')\n return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue([principal, methodName]: [PrincipalId, string]) {\n const buf = principal.toUint8Array();\n const len = lebEncode(buf.byteLength);\n const canister = concat(new Uint8Array([1]), len, buf);\n\n const method = new TextEncoder().encode(methodName);\n const methodLen = lebEncode(method.byteLength);\n return concat(new Uint8Array([1]), canister, methodLen, method);\n }\n\n public _buildTypeTableImpl(T: TypeTable) {\n this.argTypes.forEach(arg => arg.buildTypeTable(T));\n this.retTypes.forEach(arg => arg.buildTypeTable(T));\n\n const opCode = slebEncode(IDLTypeIds.Func);\n const argLen = lebEncode(this.argTypes.length);\n const args = concat(...this.argTypes.map(arg => arg.encodeType(T)));\n const retLen = lebEncode(this.retTypes.length);\n const rets = concat(...this.retTypes.map(arg => arg.encodeType(T)));\n const annLen = lebEncode(this.annotations.length);\n const anns = concat(...this.annotations.map(a => this.encodeAnnotation(a)));\n\n T.add(this, concat(opCode, argLen, args, retLen, rets, annLen, anns));\n }\n\n public decodeValue(b: Pipe): [PrincipalId, string] {\n const x = safeReadUint8(b);\n if (x !== 1) {\n throw new Error('Cannot decode function reference');\n }\n const canister = decodePrincipalId(b);\n\n const mLen = Number(lebDecode(b));\n const buf = safeRead(b, mLen);\n const decoder = new TextDecoder('utf8', { fatal: true });\n const method = decoder.decode(buf);\n\n return [canister, method];\n }\n\n get name() {\n const args = this.argTypes.map(arg => arg.name).join(', ');\n const rets = this.retTypes.map(arg => arg.name).join(', ');\n const annon = ' ' + this.annotations.join(' ');\n return `(${args}) -> (${rets})${annon}`;\n }\n\n public valueToString([principal, str]: [PrincipalId, string]) {\n return `func \"${principal.toText()}\".${str}`;\n }\n\n public display(): string {\n const args = this.argTypes.map(arg => arg.display()).join(', ');\n const rets = this.retTypes.map(arg => arg.display()).join(', ');\n const annon = ' ' + this.annotations.join(' ');\n return `(${args}) → (${rets})${annon}`;\n }\n\n private encodeAnnotation(ann: string): ArrayBuffer {\n if (ann === 'query') {\n return new Uint8Array([1]);\n } else if (ann === 'oneway') {\n return new Uint8Array([2]);\n } else if (ann === 'composite_query') {\n return new Uint8Array([3]);\n } else {\n throw new Error('Illegal function annotation');\n }\n }\n}\n\nexport class ServiceClass extends ConstructType {\n public readonly _fields: Array<[string, FuncClass]>;\n constructor(fields: Record) {\n super();\n this._fields = Object.entries(fields).sort((a, b) => idlLabelToId(a[0]) - idlLabelToId(b[0]));\n }\n public accept(v: Visitor, d: D): R {\n return v.visitService(this, d);\n }\n public covariant(x: any): x is PrincipalId {\n if (x && x._isPrincipal) return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: PrincipalId) {\n const buf = x.toUint8Array();\n const len = lebEncode(buf.length);\n return concat(new Uint8Array([1]), len, buf);\n }\n\n public _buildTypeTableImpl(T: TypeTable) {\n this._fields.forEach(([_, func]) => func.buildTypeTable(T));\n const opCode = slebEncode(IDLTypeIds.Service);\n const len = lebEncode(this._fields.length);\n const meths = this._fields.map(([label, func]) => {\n const labelBuf = new TextEncoder().encode(label);\n const labelLen = lebEncode(labelBuf.length);\n return concat(labelLen, labelBuf, func.encodeType(T));\n });\n\n T.add(this, concat(opCode, len, ...meths));\n }\n\n public decodeValue(b: Pipe): PrincipalId {\n return decodePrincipalId(b);\n }\n get name() {\n const fields = this._fields.map(([key, value]) => key + ':' + value.name);\n return `service {${fields.join('; ')}}`;\n }\n\n public valueToString(x: PrincipalId) {\n return `service \"${x.toText()}\"`;\n }\n}\n\n/**\n *\n * @param x\n * @returns {string}\n */\nfunction toReadableString(x: unknown): string {\n const str = JSON.stringify(x, (_key, value) =>\n typeof value === 'bigint' ? `BigInt(${value})` : value,\n );\n\n return str && str.length > toReadableString_max\n ? str.substring(0, toReadableString_max - 3) + '...'\n : str;\n}\n\n/**\n * Encode a array of values\n * @param argTypes\n * @param args\n * @returns {Buffer} serialised value\n */\nexport function encode(argTypes: Array>, args: any[]): ArrayBuffer {\n if (args.length < argTypes.length) {\n throw Error('Wrong number of message arguments');\n }\n\n const typeTable = new TypeTable();\n argTypes.forEach(t => t.buildTypeTable(typeTable));\n\n const magic = new TextEncoder().encode(magicNumber);\n const table = typeTable.encode();\n const len = lebEncode(args.length);\n const typs = concat(...argTypes.map(t => t.encodeType(typeTable)));\n const vals = concat(\n ...zipWith(argTypes, args, (t, x) => {\n try {\n t.covariant(x);\n } catch (e: any) {\n const err = new Error(e.message + '\\n\\n');\n throw err;\n }\n\n return t.encodeValue(x);\n }),\n );\n\n return concat(magic, table, len, typs, vals);\n}\n\n/**\n * Decode a binary value\n * @param retTypes - Types expected in the buffer.\n * @param bytes - hex-encoded string, or buffer.\n * @returns Value deserialised to JS type\n */\nexport function decode(retTypes: Type[], bytes: ArrayBuffer): JsonValue[] {\n const b = new Pipe(bytes);\n\n if (bytes.byteLength < magicNumber.length) {\n throw new Error('Message length smaller than magic number');\n }\n const magicBuffer = safeRead(b, magicNumber.length);\n const magic = new TextDecoder().decode(magicBuffer);\n if (magic !== magicNumber) {\n throw new Error('Wrong magic number: ' + JSON.stringify(magic));\n }\n\n function readTypeTable(pipe: Pipe): [Array<[IDLTypeIds, any]>, number[]] {\n const typeTable: Array<[IDLTypeIds, any]> = [];\n const len = Number(lebDecode(pipe));\n\n for (let i = 0; i < len; i++) {\n const ty = Number(slebDecode(pipe));\n switch (ty) {\n case IDLTypeIds.Opt:\n case IDLTypeIds.Vector: {\n const t = Number(slebDecode(pipe));\n typeTable.push([ty, t]);\n break;\n }\n case IDLTypeIds.Record:\n case IDLTypeIds.Variant: {\n const fields = [];\n let objectLength = Number(lebDecode(pipe));\n let prevHash;\n while (objectLength--) {\n const hash = Number(lebDecode(pipe));\n if (hash >= Math.pow(2, 32)) {\n throw new Error('field id out of 32-bit range');\n }\n if (typeof prevHash === 'number' && prevHash >= hash) {\n throw new Error('field id collision or not sorted');\n }\n prevHash = hash;\n const t = Number(slebDecode(pipe));\n fields.push([hash, t]);\n }\n typeTable.push([ty, fields]);\n break;\n }\n case IDLTypeIds.Func: {\n const args = [];\n let argLength = Number(lebDecode(pipe));\n while (argLength--) {\n args.push(Number(slebDecode(pipe)));\n }\n const returnValues = [];\n let returnValuesLength = Number(lebDecode(pipe));\n while (returnValuesLength--) {\n returnValues.push(Number(slebDecode(pipe)));\n }\n const annotations = [];\n let annotationLength = Number(lebDecode(pipe));\n while (annotationLength--) {\n const annotation = Number(lebDecode(pipe));\n switch (annotation) {\n case 1: {\n annotations.push('query');\n break;\n }\n case 2: {\n annotations.push('oneway');\n break;\n }\n case 3: {\n annotations.push('composite_query');\n break;\n }\n default:\n throw new Error('unknown annotation');\n }\n }\n typeTable.push([ty, [args, returnValues, annotations]]);\n break;\n }\n case IDLTypeIds.Service: {\n let servLength = Number(lebDecode(pipe));\n const methods = [];\n while (servLength--) {\n const nameLength = Number(lebDecode(pipe));\n const funcName = new TextDecoder().decode(safeRead(pipe, nameLength));\n const funcType = slebDecode(pipe);\n methods.push([funcName, funcType]);\n }\n typeTable.push([ty, methods]);\n break;\n }\n default:\n throw new Error('Illegal op_code: ' + ty);\n }\n }\n\n const rawList: number[] = [];\n const length = Number(lebDecode(pipe));\n for (let i = 0; i < length; i++) {\n rawList.push(Number(slebDecode(pipe)));\n }\n return [typeTable, rawList];\n }\n const [rawTable, rawTypes] = readTypeTable(b);\n if (rawTypes.length < retTypes.length) {\n throw new Error('Wrong number of return values');\n }\n\n const table: RecClass[] = rawTable.map(_ => Rec());\n function getType(t: number): Type {\n if (t < -24) {\n throw new Error('future value not supported');\n }\n if (t < 0) {\n switch (t) {\n case -1:\n return Null;\n case -2:\n return Bool;\n case -3:\n return Nat;\n case -4:\n return Int;\n case -5:\n return Nat8;\n case -6:\n return Nat16;\n case -7:\n return Nat32;\n case -8:\n return Nat64;\n case -9:\n return Int8;\n case -10:\n return Int16;\n case -11:\n return Int32;\n case -12:\n return Int64;\n case -13:\n return Float32;\n case -14:\n return Float64;\n case -15:\n return Text;\n case -16:\n return Reserved;\n case -17:\n return Empty;\n case -24:\n return Principal;\n default:\n throw new Error('Illegal op_code: ' + t);\n }\n }\n if (t >= rawTable.length) {\n throw new Error('type index out of range');\n }\n return table[t];\n }\n function buildType(entry: [IDLTypeIds, any]): Type {\n switch (entry[0]) {\n case IDLTypeIds.Vector: {\n const ty = getType(entry[1]);\n return Vec(ty);\n }\n case IDLTypeIds.Opt: {\n const ty = getType(entry[1]);\n return Opt(ty);\n }\n case IDLTypeIds.Record: {\n const fields: Record = {};\n for (const [hash, ty] of entry[1]) {\n const name = `_${hash}_`;\n fields[name] = getType(ty);\n }\n const record = Record(fields);\n const tuple = record.tryAsTuple();\n if (Array.isArray(tuple)) {\n return Tuple(...tuple);\n } else {\n return record;\n }\n }\n case IDLTypeIds.Variant: {\n const fields: Record = {};\n for (const [hash, ty] of entry[1]) {\n const name = `_${hash}_`;\n fields[name] = getType(ty);\n }\n return Variant(fields);\n }\n case IDLTypeIds.Func: {\n const [args, returnValues, annotations] = entry[1];\n return Func(\n args.map((t: number) => getType(t)),\n returnValues.map((t: number) => getType(t)),\n annotations,\n );\n }\n case IDLTypeIds.Service: {\n const rec: Record = {};\n const methods = entry[1] as [[string, number]];\n for (const [name, typeRef] of methods) {\n let type: Type | undefined = getType(typeRef);\n\n if (type instanceof RecClass) {\n // unpack reference type\n type = type.getType();\n }\n if (!(type instanceof FuncClass)) {\n throw new Error('Illegal service definition: services can only contain functions');\n }\n rec[name] = type;\n }\n return Service(rec);\n }\n default:\n throw new Error('Illegal op_code: ' + entry[0]);\n }\n }\n\n rawTable.forEach((entry, i) => {\n // Process function type first, so that we can construct the correct service type\n if (entry[0] === IDLTypeIds.Func) {\n const t = buildType(entry);\n table[i].fill(t);\n }\n });\n rawTable.forEach((entry, i) => {\n if (entry[0] !== IDLTypeIds.Func) {\n const t = buildType(entry);\n table[i].fill(t);\n }\n });\n\n const types = rawTypes.map(t => getType(t));\n const output = retTypes.map((t, i) => {\n return t.decodeValue(b, types[i]);\n });\n\n // skip unused values\n for (let ind = retTypes.length; ind < types.length; ind++) {\n types[ind].decodeValue(b, types[ind]);\n }\n\n if (b.byteLength > 0) {\n throw new Error('decode: Left-over bytes');\n }\n\n return output;\n}\n\n/**\n * An Interface Factory, normally provided by a Candid code generation.\n */\nexport type InterfaceFactory = (idl: {\n IDL: {\n Empty: EmptyClass;\n Reserved: ReservedClass;\n Unknown: UnknownClass;\n Bool: BoolClass;\n Null: NullClass;\n Text: TextClass;\n Int: IntClass;\n Nat: NatClass;\n\n Float32: FloatClass;\n Float64: FloatClass;\n\n Int8: FixedIntClass;\n Int16: FixedIntClass;\n Int32: FixedIntClass;\n Int64: FixedIntClass;\n\n Nat8: FixedNatClass;\n Nat16: FixedNatClass;\n Nat32: FixedNatClass;\n Nat64: FixedNatClass;\n\n Principal: PrincipalClass;\n\n Tuple: typeof Tuple;\n Vec: typeof Vec;\n Opt: typeof Opt;\n Record: typeof Record;\n Variant: typeof Variant;\n Rec: typeof Rec;\n Func: typeof Func;\n\n Service(t: Record): ServiceClass;\n };\n}) => ServiceClass;\n\n// Export Types instances.\nexport const Empty = new EmptyClass();\nexport const Reserved = new ReservedClass();\n/**\n * Client-only type for deserializing unknown data. Not supported by Candid, and its use is discouraged.\n */\nexport const Unknown = new UnknownClass();\nexport const Bool = new BoolClass();\nexport const Null = new NullClass();\nexport const Text = new TextClass();\nexport const Int = new IntClass();\nexport const Nat = new NatClass();\n\nexport const Float32 = new FloatClass(32);\nexport const Float64 = new FloatClass(64);\n\nexport const Int8 = new FixedIntClass(8);\nexport const Int16 = new FixedIntClass(16);\nexport const Int32 = new FixedIntClass(32);\nexport const Int64 = new FixedIntClass(64);\n\nexport const Nat8 = new FixedNatClass(8);\nexport const Nat16 = new FixedNatClass(16);\nexport const Nat32 = new FixedNatClass(32);\nexport const Nat64 = new FixedNatClass(64);\n\nexport const Principal = new PrincipalClass();\n\n/**\n *\n * @param types array of any types\n * @returns TupleClass from those types\n */\nexport function Tuple(...types: T): TupleClass {\n return new TupleClass(types);\n}\n/**\n *\n * @param t IDL Type\n * @returns VecClass from that type\n */\nexport function Vec(t: Type): VecClass {\n return new VecClass(t);\n}\n/**\n *\n * @param t IDL Type\n * @returns OptClass of Type\n */\nexport function Opt(t: Type): OptClass {\n return new OptClass(t);\n}\n/**\n *\n * @param t Record of string and IDL Type\n * @returns RecordClass of string and Type\n */\nexport function Record(t: Record): RecordClass {\n return new RecordClass(t);\n}\n\n/**\n *\n * @param fields Record of string and IDL Type\n * @returns VariantClass\n */\nexport function Variant(fields: Record): VariantClass {\n return new VariantClass(fields);\n}\n/**\n *\n * @returns new RecClass\n */\nexport function Rec(): RecClass {\n return new RecClass();\n}\n\n/**\n *\n * @param args array of IDL Types\n * @param ret array of IDL Types\n * @param annotations array of strings, [] by default\n * @returns new FuncClass\n */\nexport function Func(args: Type[], ret: Type[], annotations: string[] = []): FuncClass {\n return new FuncClass(args, ret, annotations);\n}\n\n/**\n *\n * @param t Record of string and FuncClass\n * @returns ServiceClass\n */\nexport function Service(t: Record): ServiceClass {\n return new ServiceClass(t);\n}\n","// tslint:disable:no-bitwise\nconst alphabet = 'abcdefghijklmnopqrstuvwxyz234567';\n\n// Build a lookup table for decoding.\nconst lookupTable: Record = Object.create(null);\nfor (let i = 0; i < alphabet.length; i++) {\n lookupTable[alphabet[i]] = i;\n}\n\n// Add aliases for rfc4648.\nlookupTable['0'] = lookupTable.o;\nlookupTable['1'] = lookupTable.i;\n\n/**\n * @param input The input array to encode.\n * @returns A Base32 string encoding the input.\n */\nexport function encode(input: Uint8Array): string {\n // How many bits will we skip from the first byte.\n let skip = 0;\n // 5 high bits, carry from one byte to the next.\n let bits = 0;\n\n // The output string in base32.\n let output = '';\n\n function encodeByte(byte: number) {\n if (skip < 0) {\n // we have a carry from the previous byte\n bits |= byte >> -skip;\n } else {\n // no carry\n bits = (byte << skip) & 248;\n }\n\n if (skip > 3) {\n // Not enough data to produce a character, get us another one\n skip -= 8;\n return 1;\n }\n\n if (skip < 4) {\n // produce a character\n output += alphabet[bits >> 3];\n skip += 5;\n }\n\n return 0;\n }\n\n for (let i = 0; i < input.length; ) {\n i += encodeByte(input[i]);\n }\n\n return output + (skip < 0 ? alphabet[bits >> 3] : '');\n}\n\n/**\n * @param input The base32 encoded string to decode.\n */\nexport function decode(input: string): Uint8Array {\n // how many bits we have from the previous character.\n let skip = 0;\n // current byte we're producing.\n let byte = 0;\n\n const output = new Uint8Array(((input.length * 4) / 3) | 0);\n let o = 0;\n\n function decodeChar(char: string) {\n // Consume a character from the stream, store\n // the output in this.output. As before, better\n // to use update().\n let val = lookupTable[char.toLowerCase()];\n if (val === undefined) {\n throw new Error(`Invalid character: ${JSON.stringify(char)}`);\n }\n\n // move to the high bits\n val <<= 3;\n byte |= val >>> skip;\n skip += 5;\n\n if (skip >= 8) {\n // We have enough bytes to produce an output\n output[o++] = byte;\n skip -= 8;\n\n if (skip > 0) {\n byte = (val << (5 - skip)) & 255;\n } else {\n byte = 0;\n }\n }\n }\n\n for (const c of input) {\n decodeChar(c);\n }\n\n return output.slice(0, o);\n}\n","// tslint:disable:no-bitwise\n\n// This file is translated to JavaScript from\n// https://lxp32.github.io/docs/a-simple-example-crc32-calculation/\nconst lookUpTable: Uint32Array = new Uint32Array([\n 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3,\n 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91,\n 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,\n 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5,\n 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,\n 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,\n 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f,\n 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d,\n 0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,\n 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,\n 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457,\n 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,\n 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb,\n 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9,\n 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,\n 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad,\n 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683,\n 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,\n 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7,\n 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,\n 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,\n 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79,\n 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f,\n 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,\n 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,\n 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21,\n 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,\n 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45,\n 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db,\n 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,\n 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf,\n 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d,\n]);\n\n/**\n * Calculate the CRC32 of an ArrayBufferLike.\n * @param buf The BufferLike to calculate the CRC32 of.\n */\nexport function getCrc32(buf: ArrayBufferLike): number {\n const b = new Uint8Array(buf);\n let crc = -1;\n\n // tslint:disable-next-line:prefer-for-of\n for (let i = 0; i < b.length; i++) {\n const byte = b[i];\n const t = (byte ^ crc) & 0xff;\n crc = lookUpTable[t] ^ (crc >>> 8);\n }\n\n return (crc ^ -1) >>> 0;\n}\n","import { decode, encode } from './utils/base32';\nimport { getCrc32 } from './utils/getCrc';\nimport { sha224 } from './utils/sha224';\n\nconst SELF_AUTHENTICATING_SUFFIX = 2;\nconst ANONYMOUS_SUFFIX = 4;\n\nconst MANAGEMENT_CANISTER_PRINCIPAL_HEX_STR = 'aaaaa-aa';\n\nconst fromHexString = (hexString: string) =>\n new Uint8Array((hexString.match(/.{1,2}/g) ?? []).map(byte => parseInt(byte, 16)));\n\nconst toHexString = (bytes: Uint8Array) =>\n bytes.reduce((str, byte) => str + byte.toString(16).padStart(2, '0'), '');\n\nexport class Principal {\n public static anonymous(): Principal {\n return new this(new Uint8Array([ANONYMOUS_SUFFIX]));\n }\n\n /**\n * Utility method, returning the principal representing the management canister, decoded from the hex string `'aaaaa-aa'`\n * @returns {Principal} principal of the management canister\n */\n public static managementCanister(): Principal {\n return this.fromHex(MANAGEMENT_CANISTER_PRINCIPAL_HEX_STR);\n }\n\n public static selfAuthenticating(publicKey: Uint8Array): Principal {\n const sha = sha224(publicKey);\n return new this(new Uint8Array([...sha, SELF_AUTHENTICATING_SUFFIX]));\n }\n\n public static from(other: unknown): Principal {\n if (typeof other === 'string') {\n return Principal.fromText(other);\n } else if (\n typeof other === 'object' &&\n other !== null &&\n (other as Principal)._isPrincipal === true\n ) {\n return new Principal((other as Principal)._arr);\n }\n\n throw new Error(`Impossible to convert ${JSON.stringify(other)} to Principal.`);\n }\n\n public static fromHex(hex: string): Principal {\n return new this(fromHexString(hex));\n }\n\n public static fromText(text: string): Principal {\n const canisterIdNoDash = text.toLowerCase().replace(/-/g, '');\n\n let arr = decode(canisterIdNoDash);\n arr = arr.slice(4, arr.length);\n\n const principal = new this(arr);\n if (principal.toText() !== text) {\n throw new Error(\n `Principal \"${principal.toText()}\" does not have a valid checksum (original value \"${text}\" may not be a valid Principal ID).`,\n );\n }\n\n return principal;\n }\n\n public static fromUint8Array(arr: Uint8Array): Principal {\n return new this(arr);\n }\n\n public readonly _isPrincipal = true;\n\n protected constructor(private _arr: Uint8Array) {}\n\n public isAnonymous(): boolean {\n return this._arr.byteLength === 1 && this._arr[0] === ANONYMOUS_SUFFIX;\n }\n\n public toUint8Array(): Uint8Array {\n return this._arr;\n }\n\n public toHex(): string {\n return toHexString(this._arr).toUpperCase();\n }\n\n public toText(): string {\n const checksumArrayBuf = new ArrayBuffer(4);\n const view = new DataView(checksumArrayBuf);\n view.setUint32(0, getCrc32(this._arr));\n const checksum = new Uint8Array(checksumArrayBuf);\n\n const bytes = Uint8Array.from(this._arr);\n const array = new Uint8Array([...checksum, ...bytes]);\n\n const result = encode(array);\n const matches = result.match(/.{1,5}/g);\n if (!matches) {\n // This should only happen if there's no character, which is unreachable.\n throw new Error();\n }\n return matches.join('-');\n }\n\n public toString(): string {\n return this.toText();\n }\n\n /**\n * Utility method taking a Principal to compare against. Used for determining canister ranges in certificate verification\n * @param {Principal} other - a {@link Principal} to compare\n * @returns {'lt' | 'eq' | 'gt'} `'lt' | 'eq' | 'gt'` a string, representing less than, equal to, or greater than\n */\n public compareTo(other: Principal): 'lt' | 'eq' | 'gt' {\n for (let i = 0; i < Math.min(this._arr.length, other._arr.length); i++) {\n if (this._arr[i] < other._arr[i]) return 'lt';\n else if (this._arr[i] > other._arr[i]) return 'gt';\n }\n // Here, at least one principal is a prefix of the other principal (they could be the same)\n if (this._arr.length < other._arr.length) return 'lt';\n if (this._arr.length > other._arr.length) return 'gt';\n return 'eq';\n }\n\n /**\n * Utility method checking whether a provided Principal is less than or equal to the current one using the {@link Principal.compareTo} method\n * @param other a {@link Principal} to compare\n * @returns {boolean} boolean\n */\n public ltEq(other: Principal): boolean {\n const cmp = this.compareTo(other);\n return cmp == 'lt' || cmp == 'eq';\n }\n\n /**\n * Utility method checking whether a provided Principal is greater than or equal to the current one using the {@link Principal.compareTo} method\n * @param other a {@link Principal} to compare\n * @returns {boolean} boolean\n */\n public gtEq(other: Principal): boolean {\n const cmp = this.compareTo(other);\n return cmp == 'gt' || cmp == 'eq';\n }\n}\n","import { sha224 as jsSha224 } from '@noble/hashes/sha256';\n\n/**\n * Returns the SHA224 hash of the buffer.\n * @param data Arraybuffer to encode\n */\nexport function sha224(data: ArrayBuffer): Uint8Array {\n return jsSha224.create().update(new Uint8Array(data)).digest();\n}\n","/*\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n */\n(function(){\n \"use strict\";\n\n var chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n\n // Use a lookup table to find the index.\n var lookup = new Uint8Array(256);\n for (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n }\n\n exports.encode = function(arraybuffer) {\n var bytes = new Uint8Array(arraybuffer),\n i, len = bytes.length, base64 = \"\";\n\n for (i = 0; i < len; i+=3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n\n if ((len % 3) === 2) {\n base64 = base64.substring(0, base64.length - 1) + \"=\";\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + \"==\";\n }\n\n return base64;\n };\n\n exports.decode = function(base64) {\n var bufferLength = base64.length * 0.75,\n len = base64.length, i, p = 0,\n encoded1, encoded2, encoded3, encoded4;\n\n if (base64[base64.length - 1] === \"=\") {\n bufferLength--;\n if (base64[base64.length - 2] === \"=\") {\n bufferLength--;\n }\n }\n\n var arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (i = 0; i < len; i+=4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i+1)];\n encoded3 = lookup[base64.charCodeAt(i+2)];\n encoded4 = lookup[base64.charCodeAt(i+3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return arraybuffer;\n };\n})();\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n",";(function (globalObject) {\r\n 'use strict';\r\n\r\n/*\r\n * bignumber.js v9.1.1\r\n * A JavaScript library for arbitrary-precision arithmetic.\r\n * https://github.com/MikeMcl/bignumber.js\r\n * Copyright (c) 2022 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 alphabetHasNormalDecimalDigits = true;\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 && alphabetHasNormalDecimalDigits) {\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 alphabetHasNormalDecimalDigits = v.slice(0, 10) == '0123456789';\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 ? n.s * (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) {\r\n t = xc;\r\n xc = yc;\r\n yc = t;\r\n y.s = -y.s;\r\n }\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) {\r\n zc = xc;\r\n xc = yc;\r\n yc = zc;\r\n i = xcL;\r\n xcL = ycL;\r\n ycL = i;\r\n }\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) {\r\n t = yc;\r\n yc = xc;\r\n xc = t;\r\n b = a;\r\n }\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) {\r\n i = g1;\r\n g1 = g2;\r\n g2 = i;\r\n len -= i;\r\n }\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 && alphabetHasNormalDecimalDigits) {\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","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","'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",null,null,null,"(function(nacl) {\n'use strict';\n\n// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n//\n// Implementation derived from TweetNaCl version 20140427.\n// See for details: http://tweetnacl.cr.yp.to/\n\nvar gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n};\n\n// Pluggable, initialized in high-level API below.\nvar randombytes = function(/* x, n */) { throw new Error('no PRNG'); };\n\nvar _0 = new Uint8Array(16);\nvar _9 = new Uint8Array(32); _9[0] = 9;\n\nvar gf0 = gf(),\n gf1 = gf([1]),\n _121665 = gf([0xdb41, 1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]),\n X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]),\n Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i+1] = (h >> 16) & 0xff;\n x[i+2] = (h >> 8) & 0xff;\n x[i+3] = h & 0xff;\n x[i+4] = (l >> 24) & 0xff;\n x[i+5] = (l >> 16) & 0xff;\n x[i+6] = (l >> 8) & 0xff;\n x[i+7] = l & 0xff;\n}\n\nfunction vn(x, xi, y, yi, n) {\n var i,d = 0;\n for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nfunction crypto_verify_16(x, xi, y, yi) {\n return vn(x,xi,y,yi,16);\n}\n\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x,xi,y,yi,32);\n}\n\nfunction core_salsa20(o, p, k, c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n x0 = x0 + j0 | 0;\n x1 = x1 + j1 | 0;\n x2 = x2 + j2 | 0;\n x3 = x3 + j3 | 0;\n x4 = x4 + j4 | 0;\n x5 = x5 + j5 | 0;\n x6 = x6 + j6 | 0;\n x7 = x7 + j7 | 0;\n x8 = x8 + j8 | 0;\n x9 = x9 + j9 | 0;\n x10 = x10 + j10 | 0;\n x11 = x11 + j11 | 0;\n x12 = x12 + j12 | 0;\n x13 = x13 + j13 | 0;\n x14 = x14 + j14 | 0;\n x15 = x15 + j15 | 0;\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x1 >>> 0 & 0xff;\n o[ 5] = x1 >>> 8 & 0xff;\n o[ 6] = x1 >>> 16 & 0xff;\n o[ 7] = x1 >>> 24 & 0xff;\n\n o[ 8] = x2 >>> 0 & 0xff;\n o[ 9] = x2 >>> 8 & 0xff;\n o[10] = x2 >>> 16 & 0xff;\n o[11] = x2 >>> 24 & 0xff;\n\n o[12] = x3 >>> 0 & 0xff;\n o[13] = x3 >>> 8 & 0xff;\n o[14] = x3 >>> 16 & 0xff;\n o[15] = x3 >>> 24 & 0xff;\n\n o[16] = x4 >>> 0 & 0xff;\n o[17] = x4 >>> 8 & 0xff;\n o[18] = x4 >>> 16 & 0xff;\n o[19] = x4 >>> 24 & 0xff;\n\n o[20] = x5 >>> 0 & 0xff;\n o[21] = x5 >>> 8 & 0xff;\n o[22] = x5 >>> 16 & 0xff;\n o[23] = x5 >>> 24 & 0xff;\n\n o[24] = x6 >>> 0 & 0xff;\n o[25] = x6 >>> 8 & 0xff;\n o[26] = x6 >>> 16 & 0xff;\n o[27] = x6 >>> 24 & 0xff;\n\n o[28] = x7 >>> 0 & 0xff;\n o[29] = x7 >>> 8 & 0xff;\n o[30] = x7 >>> 16 & 0xff;\n o[31] = x7 >>> 24 & 0xff;\n\n o[32] = x8 >>> 0 & 0xff;\n o[33] = x8 >>> 8 & 0xff;\n o[34] = x8 >>> 16 & 0xff;\n o[35] = x8 >>> 24 & 0xff;\n\n o[36] = x9 >>> 0 & 0xff;\n o[37] = x9 >>> 8 & 0xff;\n o[38] = x9 >>> 16 & 0xff;\n o[39] = x9 >>> 24 & 0xff;\n\n o[40] = x10 >>> 0 & 0xff;\n o[41] = x10 >>> 8 & 0xff;\n o[42] = x10 >>> 16 & 0xff;\n o[43] = x10 >>> 24 & 0xff;\n\n o[44] = x11 >>> 0 & 0xff;\n o[45] = x11 >>> 8 & 0xff;\n o[46] = x11 >>> 16 & 0xff;\n o[47] = x11 >>> 24 & 0xff;\n\n o[48] = x12 >>> 0 & 0xff;\n o[49] = x12 >>> 8 & 0xff;\n o[50] = x12 >>> 16 & 0xff;\n o[51] = x12 >>> 24 & 0xff;\n\n o[52] = x13 >>> 0 & 0xff;\n o[53] = x13 >>> 8 & 0xff;\n o[54] = x13 >>> 16 & 0xff;\n o[55] = x13 >>> 24 & 0xff;\n\n o[56] = x14 >>> 0 & 0xff;\n o[57] = x14 >>> 8 & 0xff;\n o[58] = x14 >>> 16 & 0xff;\n o[59] = x14 >>> 24 & 0xff;\n\n o[60] = x15 >>> 0 & 0xff;\n o[61] = x15 >>> 8 & 0xff;\n o[62] = x15 >>> 16 & 0xff;\n o[63] = x15 >>> 24 & 0xff;\n}\n\nfunction core_hsalsa20(o,p,k,c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x5 >>> 0 & 0xff;\n o[ 5] = x5 >>> 8 & 0xff;\n o[ 6] = x5 >>> 16 & 0xff;\n o[ 7] = x5 >>> 24 & 0xff;\n\n o[ 8] = x10 >>> 0 & 0xff;\n o[ 9] = x10 >>> 8 & 0xff;\n o[10] = x10 >>> 16 & 0xff;\n o[11] = x10 >>> 24 & 0xff;\n\n o[12] = x15 >>> 0 & 0xff;\n o[13] = x15 >>> 8 & 0xff;\n o[14] = x15 >>> 16 & 0xff;\n o[15] = x15 >>> 24 & 0xff;\n\n o[16] = x6 >>> 0 & 0xff;\n o[17] = x6 >>> 8 & 0xff;\n o[18] = x6 >>> 16 & 0xff;\n o[19] = x6 >>> 24 & 0xff;\n\n o[20] = x7 >>> 0 & 0xff;\n o[21] = x7 >>> 8 & 0xff;\n o[22] = x7 >>> 16 & 0xff;\n o[23] = x7 >>> 24 & 0xff;\n\n o[24] = x8 >>> 0 & 0xff;\n o[25] = x8 >>> 8 & 0xff;\n o[26] = x8 >>> 16 & 0xff;\n o[27] = x8 >>> 24 & 0xff;\n\n o[28] = x9 >>> 0 & 0xff;\n o[29] = x9 >>> 8 & 0xff;\n o[30] = x9 >>> 16 & 0xff;\n o[31] = x9 >>> 24 & 0xff;\n}\n\nfunction crypto_core_salsa20(out,inp,k,c) {\n core_salsa20(out,inp,k,c);\n}\n\nfunction crypto_core_hsalsa20(out,inp,k,c) {\n core_hsalsa20(out,inp,k,c);\n}\n\nvar sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);\n // \"expand 32-byte k\"\n\nfunction crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n mpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n }\n return 0;\n}\n\nfunction crypto_stream_salsa20(c,cpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = x[i];\n }\n return 0;\n}\n\nfunction crypto_stream(c,cpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20(c,cpos,d,sn,s);\n}\n\nfunction crypto_stream_xor(c,cpos,m,mpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s);\n}\n\n/*\n* Port of Andrew Moon's Poly1305-donna-16. Public domain.\n* https://github.com/floodyberry/poly1305-donna\n*/\n\nvar poly1305 = function(key) {\n this.buffer = new Uint8Array(16);\n this.r = new Uint16Array(10);\n this.h = new Uint16Array(10);\n this.pad = new Uint16Array(8);\n this.leftover = 0;\n this.fin = 0;\n\n var t0, t1, t2, t3, t4, t5, t6, t7;\n\n t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff;\n t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = ((t4 >>> 1)) & 0x1ffe;\n t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = ((t7 >>> 5)) & 0x007f;\n\n this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;\n this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;\n this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;\n this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;\n this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;\n this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;\n this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;\n this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;\n};\n\npoly1305.prototype.blocks = function(m, mpos, bytes) {\n var hibit = this.fin ? 0 : (1 << 11);\n var t0, t1, t2, t3, t4, t5, t6, t7, c;\n var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;\n\n var h0 = this.h[0],\n h1 = this.h[1],\n h2 = this.h[2],\n h3 = this.h[3],\n h4 = this.h[4],\n h5 = this.h[5],\n h6 = this.h[6],\n h7 = this.h[7],\n h8 = this.h[8],\n h9 = this.h[9];\n\n var r0 = this.r[0],\n r1 = this.r[1],\n r2 = this.r[2],\n r3 = this.r[3],\n r4 = this.r[4],\n r5 = this.r[5],\n r6 = this.r[6],\n r7 = this.r[7],\n r8 = this.r[8],\n r9 = this.r[9];\n\n while (bytes >= 16) {\n t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff;\n t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n\n c = 0;\n\n d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13); d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13); d0 &= 0x1fff;\n\n d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13); d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13); d1 &= 0x1fff;\n\n d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13); d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13); d2 &= 0x1fff;\n\n d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13); d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13); d3 &= 0x1fff;\n\n d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13); d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13); d4 &= 0x1fff;\n\n d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13); d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13); d5 &= 0x1fff;\n\n d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13); d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13); d6 &= 0x1fff;\n\n d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13); d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13); d7 &= 0x1fff;\n\n d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13); d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13); d8 &= 0x1fff;\n\n d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13); d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13); d9 &= 0x1fff;\n\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n\n mpos += 16;\n bytes -= 16;\n }\n this.h[0] = h0;\n this.h[1] = h1;\n this.h[2] = h2;\n this.h[3] = h3;\n this.h[4] = h4;\n this.h[5] = h5;\n this.h[6] = h6;\n this.h[7] = h7;\n this.h[8] = h8;\n this.h[9] = h9;\n};\n\npoly1305.prototype.finish = function(mac, macpos) {\n var g = new Uint16Array(10);\n var c, mask, f, i;\n\n if (this.leftover) {\n i = this.leftover;\n this.buffer[i++] = 1;\n for (; i < 16; i++) this.buffer[i] = 0;\n this.fin = 1;\n this.blocks(this.buffer, 0, 16);\n }\n\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n for (i = 2; i < 10; i++) {\n this.h[i] += c;\n c = this.h[i] >>> 13;\n this.h[i] &= 0x1fff;\n }\n this.h[0] += (c * 5);\n c = this.h[0] >>> 13;\n this.h[0] &= 0x1fff;\n this.h[1] += c;\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n this.h[2] += c;\n\n g[0] = this.h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (i = 1; i < 10; i++) {\n g[i] = this.h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n\n mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) g[i] &= mask;\n mask = ~mask;\n for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i];\n\n this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff;\n this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff;\n this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff;\n this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff;\n this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff;\n this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff;\n this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff;\n this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff;\n\n f = this.h[0] + this.pad[0];\n this.h[0] = f & 0xffff;\n for (i = 1; i < 8; i++) {\n f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;\n this.h[i] = f & 0xffff;\n }\n\n mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff;\n mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff;\n mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff;\n mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff;\n mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff;\n mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff;\n mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff;\n mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff;\n mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff;\n mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff;\n mac[macpos+10] = (this.h[5] >>> 0) & 0xff;\n mac[macpos+11] = (this.h[5] >>> 8) & 0xff;\n mac[macpos+12] = (this.h[6] >>> 0) & 0xff;\n mac[macpos+13] = (this.h[6] >>> 8) & 0xff;\n mac[macpos+14] = (this.h[7] >>> 0) & 0xff;\n mac[macpos+15] = (this.h[7] >>> 8) & 0xff;\n};\n\npoly1305.prototype.update = function(m, mpos, bytes) {\n var i, want;\n\n if (this.leftover) {\n want = (16 - this.leftover);\n if (want > bytes)\n want = bytes;\n for (i = 0; i < want; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n bytes -= want;\n mpos += want;\n this.leftover += want;\n if (this.leftover < 16)\n return;\n this.blocks(this.buffer, 0, 16);\n this.leftover = 0;\n }\n\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this.blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n\n if (bytes) {\n for (i = 0; i < bytes; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n this.leftover += bytes;\n }\n};\n\nfunction crypto_onetimeauth(out, outpos, m, mpos, n, k) {\n var s = new poly1305(k);\n s.update(m, mpos, n);\n s.finish(out, outpos);\n return 0;\n}\n\nfunction crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {\n var x = new Uint8Array(16);\n crypto_onetimeauth(x,0,m,mpos,n,k);\n return crypto_verify_16(h,hpos,x,0);\n}\n\nfunction crypto_secretbox(c,m,d,n,k) {\n var i;\n if (d < 32) return -1;\n crypto_stream_xor(c,0,m,0,d,n,k);\n crypto_onetimeauth(c, 16, c, 32, d - 32, c);\n for (i = 0; i < 16; i++) c[i] = 0;\n return 0;\n}\n\nfunction crypto_secretbox_open(m,c,d,n,k) {\n var i;\n var x = new Uint8Array(32);\n if (d < 32) return -1;\n crypto_stream(x,0,32,n,k);\n if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1;\n crypto_stream_xor(m,0,c,0,d,n,k);\n for (i = 0; i < 32; i++) m[i] = 0;\n return 0;\n}\n\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i]|0;\n}\n\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c-1 + 37 * (c-1);\n}\n\nfunction sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\n\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i]>>8;\n }\n}\n\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\n\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\n\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n}\n\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];\n}\n\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];\n}\n\nfunction M(o, a, b) {\n var v, c,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,\n t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11],\n b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n\n // first car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n // second car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n o[ 0] = t0;\n o[ 1] = t1;\n o[ 2] = t2;\n o[ 3] = t3;\n o[ 4] = t4;\n o[ 5] = t5;\n o[ 6] = t6;\n o[ 7] = t7;\n o[ 8] = t8;\n o[ 9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\n\nfunction S(o, a) {\n M(o, a, a);\n}\n\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if(a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++) z[i] = n[i];\n z[31]=(n[31]&127)|64;\n z[0]&=248;\n unpack25519(x,p);\n for (i = 0; i < 16; i++) {\n b[i]=x[i];\n d[i]=a[i]=c[i]=0;\n }\n a[0]=d[0]=1;\n for (i=254; i>=0; --i) {\n r=(z[i>>>3]>>>(i&7))&1;\n sel25519(a,b,r);\n sel25519(c,d,r);\n A(e,a,c);\n Z(a,a,c);\n A(c,b,d);\n Z(b,b,d);\n S(d,e);\n S(f,a);\n M(a,c,a);\n M(c,b,e);\n A(e,a,c);\n Z(a,a,c);\n S(b,a);\n Z(c,d,f);\n M(a,c,_121665);\n A(a,a,d);\n M(c,c,a);\n M(a,d,f);\n M(d,b,x);\n S(b,e);\n sel25519(a,b,r);\n sel25519(c,d,r);\n }\n for (i = 0; i < 16; i++) {\n x[i+16]=a[i];\n x[i+32]=c[i];\n x[i+48]=b[i];\n x[i+64]=d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32,x32);\n M(x16,x16,x32);\n pack25519(q,x16);\n return 0;\n}\n\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\n\nfunction crypto_box_keypair(y, x) {\n randombytes(x, 32);\n return crypto_scalarmult_base(y, x);\n}\n\nfunction crypto_box_beforenm(k, y, x) {\n var s = new Uint8Array(32);\n crypto_scalarmult(s, x, y);\n return crypto_core_hsalsa20(k, _0, s, sigma);\n}\n\nvar crypto_box_afternm = crypto_secretbox;\nvar crypto_box_open_afternm = crypto_secretbox_open;\n\nfunction crypto_box(c, m, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_afternm(c, m, d, n, k);\n}\n\nfunction crypto_box_open(m, c, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_open_afternm(m, c, d, n, k);\n}\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16),\n bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7,\n bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7,\n th, tl, i, j, h, l, a, b, c, d;\n\n var ah0 = hh[0],\n ah1 = hh[1],\n ah2 = hh[2],\n ah3 = hh[3],\n ah4 = hh[4],\n ah5 = hh[5],\n ah6 = hh[6],\n ah7 = hh[7],\n\n al0 = hl[0],\n al1 = hl[1],\n al2 = hl[2],\n al3 = hl[3],\n al4 = hl[4],\n al5 = hl[5],\n al6 = hl[6],\n al7 = hl[7];\n\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3];\n wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n\n // add\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32))));\n l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // K\n h = K[i*2];\n l = K[i*2+1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // w\n h = wh[i%16];\n l = wl[i%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n\n // add\n h = th;\n l = tl;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32))));\n l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n\n // add\n h = bh3;\n l = bl3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = th;\n l = tl;\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n\n if (i%16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = wh[(j+9)%16];\n l = wl[(j+9)%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma0\n th = wh[(j+1)%16];\n tl = wl[(j+1)%16];\n h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma1\n th = wh[(j+14)%16];\n tl = wl[(j+14)%16];\n h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n\n // add\n h = ah0;\n l = al0;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[0];\n l = hl[0];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n\n h = ah1;\n l = al1;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[1];\n l = hl[1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n\n h = ah2;\n l = al2;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[2];\n l = hl[2];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n\n h = ah3;\n l = al3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[3];\n l = hl[3];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n\n h = ah4;\n l = al4;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[4];\n l = hl[4];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n\n h = ah5;\n l = al5;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[5];\n l = hl[5];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n\n h = ah6;\n l = al6;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[6];\n l = hl[6];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[7];\n l = hl[7];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n\n pos += 128;\n n -= 128;\n }\n\n return n;\n}\n\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8),\n hl = new Int32Array(8),\n x = new Uint8Array(256),\n i, b = n;\n\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n\n for (i = 0; i < n; i++) x[i] = m[b-n+i];\n x[n] = 128;\n\n n = 256-128*(n<112?1:0);\n x[n-9] = 0;\n ts64(x, n-8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n\n for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]);\n\n return 0;\n}\n\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf(),\n g = gf(), h = gf(), t = gf();\n\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\n\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\n\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\n\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i/8)|0] >> (i&7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\n\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\n\nfunction crypto_sign_keypair(pk, sk, seeded) {\n var d = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n var i;\n\n if (!seeded) randombytes(sk, 32);\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n scalarbase(p, d);\n pack(pk, p);\n\n for (i = 0; i < 32; i++) sk[i+32] = pk[i];\n return 0;\n}\n\nvar L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);\n\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = Math.floor((x[j] + 128) / 256);\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++) x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i+1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\n\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++) x[i] = r[i];\n for (i = 0; i < 64; i++) r[i] = 0;\n modL(r, x);\n}\n\n// Note: difference from C - smlen returned, not passed as argument.\nfunction crypto_sign(sm, m, n, sk) {\n var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n var smlen = n + 64;\n for (i = 0; i < n; i++) sm[64 + i] = m[i];\n for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];\n\n crypto_hash(r, sm.subarray(32), n+32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n\n for (i = 32; i < 64; i++) sm[i] = sk[i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n\n for (i = 0; i < 64; i++) x[i] = 0;\n for (i = 0; i < 32; i++) x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i+j] += h[i] * d[j];\n }\n }\n\n modL(sm.subarray(32), x);\n return smlen;\n}\n\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n}\n\nfunction crypto_sign_open(m, sm, n, pk) {\n var i;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()],\n q = [gf(), gf(), gf(), gf()];\n\n if (n < 64) return -1;\n\n if (unpackneg(q, pk)) return -1;\n\n for (i = 0; i < n; i++) m[i] = sm[i];\n for (i = 0; i < 32; i++) m[i+32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++) m[i] = 0;\n return -1;\n }\n\n for (i = 0; i < n; i++) m[i] = sm[i + 64];\n return n;\n}\n\nvar crypto_secretbox_KEYBYTES = 32,\n crypto_secretbox_NONCEBYTES = 24,\n crypto_secretbox_ZEROBYTES = 32,\n crypto_secretbox_BOXZEROBYTES = 16,\n crypto_scalarmult_BYTES = 32,\n crypto_scalarmult_SCALARBYTES = 32,\n crypto_box_PUBLICKEYBYTES = 32,\n crypto_box_SECRETKEYBYTES = 32,\n crypto_box_BEFORENMBYTES = 32,\n crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES,\n crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES,\n crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES,\n crypto_sign_BYTES = 64,\n crypto_sign_PUBLICKEYBYTES = 32,\n crypto_sign_SECRETKEYBYTES = 64,\n crypto_sign_SEEDBYTES = 32,\n crypto_hash_BYTES = 64;\n\nnacl.lowlevel = {\n crypto_core_hsalsa20: crypto_core_hsalsa20,\n crypto_stream_xor: crypto_stream_xor,\n crypto_stream: crypto_stream,\n crypto_stream_salsa20_xor: crypto_stream_salsa20_xor,\n crypto_stream_salsa20: crypto_stream_salsa20,\n crypto_onetimeauth: crypto_onetimeauth,\n crypto_onetimeauth_verify: crypto_onetimeauth_verify,\n crypto_verify_16: crypto_verify_16,\n crypto_verify_32: crypto_verify_32,\n crypto_secretbox: crypto_secretbox,\n crypto_secretbox_open: crypto_secretbox_open,\n crypto_scalarmult: crypto_scalarmult,\n crypto_scalarmult_base: crypto_scalarmult_base,\n crypto_box_beforenm: crypto_box_beforenm,\n crypto_box_afternm: crypto_box_afternm,\n crypto_box: crypto_box,\n crypto_box_open: crypto_box_open,\n crypto_box_keypair: crypto_box_keypair,\n crypto_hash: crypto_hash,\n crypto_sign: crypto_sign,\n crypto_sign_keypair: crypto_sign_keypair,\n crypto_sign_open: crypto_sign_open,\n\n crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES,\n crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES,\n crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES,\n crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES,\n crypto_scalarmult_BYTES: crypto_scalarmult_BYTES,\n crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES,\n crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES,\n crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES,\n crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES,\n crypto_box_NONCEBYTES: crypto_box_NONCEBYTES,\n crypto_box_ZEROBYTES: crypto_box_ZEROBYTES,\n crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES,\n crypto_sign_BYTES: crypto_sign_BYTES,\n crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES,\n crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES,\n crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES,\n crypto_hash_BYTES: crypto_hash_BYTES,\n\n gf: gf,\n D: D,\n L: L,\n pack25519: pack25519,\n unpack25519: unpack25519,\n M: M,\n A: A,\n S: S,\n Z: Z,\n pow2523: pow2523,\n add: add,\n set25519: set25519,\n modL: modL,\n scalarmult: scalarmult,\n scalarbase: scalarbase,\n};\n\n/* High-level API */\n\nfunction checkLengths(k, n) {\n if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size');\n if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size');\n}\n\nfunction checkBoxLengths(pk, sk) {\n if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size');\n if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size');\n}\n\nfunction checkArrayTypes() {\n for (var i = 0; i < arguments.length; i++) {\n if (!(arguments[i] instanceof Uint8Array))\n throw new TypeError('unexpected type, use Uint8Array');\n }\n}\n\nfunction cleanup(arr) {\n for (var i = 0; i < arr.length; i++) arr[i] = 0;\n}\n\nnacl.randomBytes = function(n) {\n var b = new Uint8Array(n);\n randombytes(b, n);\n return b;\n};\n\nnacl.secretbox = function(msg, nonce, key) {\n checkArrayTypes(msg, nonce, key);\n checkLengths(key, nonce);\n var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);\n var c = new Uint8Array(m.length);\n for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i];\n crypto_secretbox(c, m, m.length, nonce, key);\n return c.subarray(crypto_secretbox_BOXZEROBYTES);\n};\n\nnacl.secretbox.open = function(box, nonce, key) {\n checkArrayTypes(box, nonce, key);\n checkLengths(key, nonce);\n var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);\n var m = new Uint8Array(c.length);\n for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i];\n if (c.length < 32) return null;\n if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null;\n return m.subarray(crypto_secretbox_ZEROBYTES);\n};\n\nnacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;\nnacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;\nnacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;\n\nnacl.scalarMult = function(n, p) {\n checkArrayTypes(n, p);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult(q, n, p);\n return q;\n};\n\nnacl.scalarMult.base = function(n) {\n checkArrayTypes(n);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult_base(q, n);\n return q;\n};\n\nnacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;\nnacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;\n\nnacl.box = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox(msg, nonce, k);\n};\n\nnacl.box.before = function(publicKey, secretKey) {\n checkArrayTypes(publicKey, secretKey);\n checkBoxLengths(publicKey, secretKey);\n var k = new Uint8Array(crypto_box_BEFORENMBYTES);\n crypto_box_beforenm(k, publicKey, secretKey);\n return k;\n};\n\nnacl.box.after = nacl.secretbox;\n\nnacl.box.open = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox.open(msg, nonce, k);\n};\n\nnacl.box.open.after = nacl.secretbox.open;\n\nnacl.box.keyPair = function() {\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);\n crypto_box_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.box.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_box_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n crypto_scalarmult_base(pk, secretKey);\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;\nnacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;\nnacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;\nnacl.box.nonceLength = crypto_box_NONCEBYTES;\nnacl.box.overheadLength = nacl.secretbox.overheadLength;\n\nnacl.sign = function(msg, secretKey) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length);\n crypto_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n};\n\nnacl.sign.open = function(signedMsg, publicKey) {\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0) return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++) m[i] = tmp[i];\n return m;\n};\n\nnacl.sign.detached = function(msg, secretKey) {\n var signedMsg = nacl.sign(msg, secretKey);\n var sig = new Uint8Array(crypto_sign_BYTES);\n for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];\n return sig;\n};\n\nnacl.sign.detached.verify = function(msg, sig, publicKey) {\n checkArrayTypes(msg, sig, publicKey);\n if (sig.length !== crypto_sign_BYTES)\n throw new Error('bad signature size');\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var sm = new Uint8Array(crypto_sign_BYTES + msg.length);\n var m = new Uint8Array(crypto_sign_BYTES + msg.length);\n var i;\n for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];\n for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i];\n return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);\n};\n\nnacl.sign.keyPair = function() {\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n crypto_sign_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i];\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.sign.keyPair.fromSeed = function(seed) {\n checkArrayTypes(seed);\n if (seed.length !== crypto_sign_SEEDBYTES)\n throw new Error('bad seed size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n for (var i = 0; i < 32; i++) sk[i] = seed[i];\n crypto_sign_keypair(pk, sk, true);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;\nnacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;\nnacl.sign.seedLength = crypto_sign_SEEDBYTES;\nnacl.sign.signatureLength = crypto_sign_BYTES;\n\nnacl.hash = function(msg) {\n checkArrayTypes(msg);\n var h = new Uint8Array(crypto_hash_BYTES);\n crypto_hash(h, msg, msg.length);\n return h;\n};\n\nnacl.hash.hashLength = crypto_hash_BYTES;\n\nnacl.verify = function(x, y) {\n checkArrayTypes(x, y);\n // Zero length arguments are considered not equal.\n if (x.length === 0 || y.length === 0) return false;\n if (x.length !== y.length) return false;\n return (vn(x, 0, y, 0, x.length) === 0) ? true : false;\n};\n\nnacl.setPRNG = function(fn) {\n randombytes = fn;\n};\n\n(function() {\n // Initialize PRNG if environment provides CSPRNG.\n // If not, methods calling randombytes will throw.\n var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;\n if (crypto && crypto.getRandomValues) {\n // Browsers.\n var QUOTA = 65536;\n nacl.setPRNG(function(x, n) {\n var i, v = new Uint8Array(n);\n for (i = 0; i < n; i += QUOTA) {\n crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));\n }\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n } else if (typeof require !== 'undefined') {\n // Node.js.\n crypto = require('crypto');\n if (crypto && crypto.randomBytes) {\n nacl.setPRNG(function(x, n) {\n var i, v = crypto.randomBytes(n);\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n }\n }\n})();\n\n})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));\n","/** @module CanisterStatus */\n\nimport { lebDecode, PipeArrayBuffer } from '@dfinity/candid';\nimport { Principal } from '@dfinity/principal';\nimport { AgentError } from '../errors';\nimport { HttpAgent } from '../agent/http';\nimport { Certificate, CreateCertificateOptions } from '../certificate';\nimport { toHex } from '../utils/buffer';\nimport * as Cbor from '../cbor';\n\n/**\n * Types of an entry on the canisterStatus map.\n * An entry of null indicates that the request failed, due to lack of permissions or the result being missing.\n */\nexport type Status = string | ArrayBuffer | Date | ArrayBuffer[] | Principal[] | bigint | null;\n\n/**\n * Interface to define a custom path. Nested paths will be represented as individual buffers, and can be created from text using {@link TextEncoder}\n */\nexport interface CustomPath {\n key: string;\n path: ArrayBuffer[] | string;\n decodeStrategy: 'cbor' | 'hex' | 'leb128' | 'utf-8' | 'raw';\n}\n\n/**\n * Interface to request metadata from the icp:public or icp:private sections.\n * Similar to {@link CustomPath}, but accepts a simple string argument.\n * Private metadata will require the ${@link Identity} used by the ${@link HttpAgent} will need to be requested using an identity that controlls the canister.\n */\nexport interface MetaData {\n kind: 'metadata';\n key: string;\n path: string | ArrayBuffer;\n decodeStrategy: 'cbor' | 'hex' | 'leb128' | 'utf-8' | 'raw';\n}\n\n/**\n * Pre-configured fields for canister status paths\n */\nexport type Path =\n | 'time'\n | 'controllers'\n | 'subnet'\n | 'module_hash'\n | 'candid'\n | MetaData\n | CustomPath;\n\nexport type StatusMap = Map;\n\nexport type CanisterStatusOptions = {\n canisterId: Principal;\n agent: HttpAgent;\n paths?: Path[] | Set;\n blsVerify?: CreateCertificateOptions['blsVerify'];\n};\n\n/**\n *\n * @param {CanisterStatusOptions} options {@link CanisterStatusOptions}\n * @param {CanisterStatusOptions['canisterId']} options.canisterId {@link Principal}\n * @param {CanisterStatusOptions['agent']} options.agent {@link HttpAgent} optional authenticated agent to use to make the canister request. Useful for accessing private metadata under icp:private\n * @param {CanisterStatusOptions['paths']} options.paths {@link Path[]}\n * @returns {Status} object populated with data from the requested paths\n * @example\n * const status = await canisterStatus({\n * paths: ['controllers', 'candid'],\n * ...options\n * });\n *\n * const controllers = status.get('controllers');\n */\nexport const request = async (options: {\n canisterId: Principal;\n agent: HttpAgent;\n paths?: Path[] | Set;\n}): Promise => {\n const { canisterId, agent, paths } = options;\n\n const uniquePaths = [...new Set(paths)];\n\n // Map path options to their correct formats\n const encodedPaths = uniquePaths.map(path => {\n return encodePath(path, canisterId);\n });\n const status = new Map();\n\n const promises = uniquePaths.map((path, index) => {\n return (async () => {\n try {\n const response = await agent.readState(canisterId, {\n paths: [encodedPaths[index]],\n });\n const cert = await Certificate.create({\n certificate: response.certificate,\n rootKey: agent.rootKey,\n canisterId: canisterId,\n });\n\n const data = cert.lookup(encodePath(uniquePaths[index], canisterId));\n if (!data) {\n // Typically, the cert lookup will throw\n console.warn(`Expected to find result for path ${path}, but instead found nothing.`);\n if (typeof path === 'string') {\n status.set(path, null);\n } else {\n status.set(path.key, null);\n }\n } else {\n switch (path) {\n case 'time': {\n status.set(path, decodeTime(data));\n break;\n }\n case 'controllers': {\n status.set(path, decodeControllers(data));\n break;\n }\n case 'module_hash': {\n status.set(path, decodeHex(data));\n break;\n }\n case 'candid': {\n status.set(path, new TextDecoder().decode(data));\n break;\n }\n default: {\n // Check for CustomPath signature\n if (typeof path !== 'string' && 'key' in path && 'path' in path) {\n switch (path.decodeStrategy) {\n case 'raw':\n status.set(path.key, data);\n break;\n case 'leb128': {\n status.set(path.key, decodeLeb128(data));\n break;\n }\n case 'cbor': {\n status.set(path.key, decodeCbor(data));\n break;\n }\n case 'hex': {\n status.set(path.key, decodeHex(data));\n break;\n }\n case 'utf-8': {\n status.set(path.key, decodeUtf8(data));\n }\n }\n }\n }\n }\n }\n } catch (error) {\n // Break on signature verification errors\n if ((error as AgentError)?.message?.includes('Invalid certificate')) {\n throw new AgentError((error as AgentError).message);\n }\n if (typeof path !== 'string' && 'key' in path && 'path' in path) {\n status.set(path.key, null);\n } else {\n status.set(path, null);\n }\n console.group();\n console.warn(`Expected to find result for path ${path}, but instead found nothing.`);\n console.warn(error);\n console.groupEnd();\n }\n })();\n });\n\n // Fetch all values separately, as each option can fail\n await Promise.all(promises);\n\n return status;\n};\n\nexport const encodePath = (path: Path, canisterId: Principal): ArrayBuffer[] => {\n const encoder = new TextEncoder();\n\n const encode = (arg: string): ArrayBuffer => {\n return new DataView(encoder.encode(arg).buffer).buffer;\n };\n const canisterBuffer = new DataView(canisterId.toUint8Array().buffer).buffer;\n switch (path) {\n case 'time':\n return [encode('time')];\n case 'controllers':\n return [encode('canister'), canisterBuffer, encode('controllers')];\n case 'module_hash':\n return [encode('canister'), canisterBuffer, encode('module_hash')];\n case 'subnet':\n return [encode('subnet')];\n case 'candid':\n return [encode('canister'), canisterBuffer, encode('metadata'), encode('candid:service')];\n default: {\n // Check for CustomPath signature\n if ('key' in path && 'path' in path) {\n // For simplified metadata queries\n if (typeof path['path'] === 'string' || path['path'] instanceof ArrayBuffer) {\n const metaPath = path.path;\n const encoded = typeof metaPath === 'string' ? encode(metaPath) : metaPath;\n\n return [encode('canister'), canisterBuffer, encode('metadata'), encoded];\n\n // For non-metadata, return the provided custompath\n } else {\n return path['path'];\n }\n }\n }\n }\n throw new Error(\n `An unexpeected error was encountered while encoding your path for canister status. Please ensure that your path, ${path} was formatted correctly.`,\n );\n};\n\nconst decodeHex = (buf: ArrayBuffer): string => {\n return toHex(buf);\n};\n\nconst decodeLeb128 = (buf: ArrayBuffer): bigint => {\n return lebDecode(new PipeArrayBuffer(buf));\n};\n\nconst decodeCbor = (buf: ArrayBuffer): ArrayBuffer[] => {\n return Cbor.decode(buf);\n};\n\nconst decodeUtf8 = (buf: ArrayBuffer): string => {\n return new TextDecoder().decode(buf);\n};\n\n// time is a LEB128-encoded Nat\nconst decodeTime = (buf: ArrayBuffer): Date => {\n const decoded = decodeLeb128(buf);\n return new Date(Number(decoded / BigInt(1_000_000)));\n};\n\n// Controllers are CBOR-encoded buffers, starting with a Tag we don't need\nconst decodeControllers = (buf: ArrayBuffer): Principal[] => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [tag, ...controllersRaw] = decodeCbor(buf);\n return controllersRaw.map((buf: ArrayBuffer) => {\n return Principal.fromUint8Array(new Uint8Array(buf));\n });\n};\n","// tslint:disable:max-classes-per-file\n// This file is based on:\n// tslint:disable-next-line: max-line-length\n// https://github.com/dfinity-lab/dfinity/blob/9bca65f8edd65701ea6bdb00e0752f9186bbc893/docs/spec/public/index.adoc#cbor-encoding-of-requests-and-responses\nimport borc from 'borc';\nimport * as cbor from 'simple-cbor';\nimport { CborEncoder, SelfDescribeCborSerializer } from 'simple-cbor';\nimport { Principal } from '@dfinity/principal';\nimport { concat, fromHex } from './utils/buffer';\n\n// We are using hansl/simple-cbor for CBOR serialization, to avoid issues with\n// encoding the uint64 values that the HTTP handler of the client expects for\n// canister IDs. However, simple-cbor does not yet provide deserialization so\n// we are using `Uint8Array` so that we can use the dignifiedquire/borc CBOR\n// decoder.\n\nclass PrincipalEncoder implements CborEncoder {\n public get name() {\n return 'Principal';\n }\n\n public get priority() {\n return 0;\n }\n\n public match(value: any): boolean {\n return value && value._isPrincipal === true;\n }\n\n public encode(v: Principal): cbor.CborValue {\n return cbor.value.bytes(v.toUint8Array());\n }\n}\n\nclass BufferEncoder implements CborEncoder {\n public get name() {\n return 'Buffer';\n }\n\n public get priority() {\n return 1;\n }\n\n public match(value: any): boolean {\n return value instanceof ArrayBuffer || ArrayBuffer.isView(value);\n }\n\n public encode(v: ArrayBuffer): cbor.CborValue {\n return cbor.value.bytes(new Uint8Array(v));\n }\n}\n\nclass BigIntEncoder implements CborEncoder {\n public get name() {\n return 'BigInt';\n }\n\n public get priority() {\n return 1;\n }\n\n public match(value: any): boolean {\n return typeof value === `bigint`;\n }\n\n public encode(v: bigint): cbor.CborValue {\n // Always use a bigint encoding.\n if (v > BigInt(0)) {\n return cbor.value.tagged(2, cbor.value.bytes(fromHex(v.toString(16))));\n } else {\n return cbor.value.tagged(3, cbor.value.bytes(fromHex((BigInt('-1') * v).toString(16))));\n }\n }\n}\n\nconst serializer = SelfDescribeCborSerializer.withDefaultEncoders(true);\nserializer.addEncoder(new PrincipalEncoder());\nserializer.addEncoder(new BufferEncoder());\nserializer.addEncoder(new BigIntEncoder());\n\nexport enum CborTag {\n Uint64LittleEndian = 71,\n Semantic = 55799,\n}\n\n/**\n * Encode a JavaScript value into CBOR.\n */\nexport function encode(value: any): ArrayBuffer {\n return serializer.serialize(value);\n}\n\nfunction decodePositiveBigInt(buf: Uint8Array): bigint {\n const len = buf.byteLength;\n let res = BigInt(0);\n for (let i = 0; i < len; i++) {\n // tslint:disable-next-line:no-bitwise\n res = res * BigInt(0x100) + BigInt(buf[i]);\n }\n\n return res;\n}\n\n// A BORC subclass that decodes byte strings to ArrayBuffer instead of the Buffer class.\nclass Uint8ArrayDecoder extends borc.Decoder {\n public createByteString(raw: ArrayBuffer[]): ArrayBuffer {\n return concat(...raw);\n }\n\n public createByteStringFromHeap(start: number, end: number): ArrayBuffer {\n if (start === end) {\n return new ArrayBuffer(0);\n }\n\n return new Uint8Array((this as any)._heap.slice(start, end));\n }\n}\n\nexport function decode(input: ArrayBuffer): T {\n const buffer = new Uint8Array(input);\n const decoder = new Uint8ArrayDecoder({\n size: buffer.byteLength,\n tags: {\n // Override tags 2 and 3 for BigInt support (borc supports only BigNumber).\n 2: val => decodePositiveBigInt(val),\n 3: val => -decodePositiveBigInt(val),\n [CborTag.Semantic]: (value: T): T => value,\n },\n });\n\n return decoder.decodeFirst(buffer);\n}\n","import * as cbor from './cbor';\nimport { AgentError } from './errors';\nimport { hash } from './request_id';\nimport { concat, fromHex, toHex } from './utils/buffer';\nimport { Principal } from '@dfinity/principal';\nimport * as bls from './utils/bls';\n\n/**\n * A certificate may fail verification with respect to the provided public key\n */\nexport class CertificateVerificationError extends AgentError {\n constructor(reason: string) {\n super(`Invalid certificate: ${reason}`);\n }\n}\n\ninterface Cert {\n tree: HashTree;\n signature: ArrayBuffer;\n delegation?: Delegation;\n}\n\nconst enum NodeId {\n Empty = 0,\n Fork = 1,\n Labeled = 2,\n Leaf = 3,\n Pruned = 4,\n}\n\nexport type HashTree =\n | [NodeId.Empty]\n | [NodeId.Fork, HashTree, HashTree]\n | [NodeId.Labeled, ArrayBuffer, HashTree]\n | [NodeId.Leaf, ArrayBuffer]\n | [NodeId.Pruned, ArrayBuffer];\n\n/**\n * Make a human readable string out of a hash tree.\n * @param tree\n */\nexport function hashTreeToString(tree: HashTree): string {\n const indent = (s: string) =>\n s\n .split('\\n')\n .map(x => ' ' + x)\n .join('\\n');\n function labelToString(label: ArrayBuffer): string {\n const decoder = new TextDecoder(undefined, { fatal: true });\n try {\n return JSON.stringify(decoder.decode(label));\n } catch (e) {\n return `data(...${label.byteLength} bytes)`;\n }\n }\n\n switch (tree[0]) {\n case NodeId.Empty:\n return '()';\n case NodeId.Fork: {\n const left = hashTreeToString(tree[1]);\n const right = hashTreeToString(tree[2]);\n return `sub(\\n left:\\n${indent(left)}\\n---\\n right:\\n${indent(right)}\\n)`;\n }\n case NodeId.Labeled: {\n const label = labelToString(tree[1]);\n const sub = hashTreeToString(tree[2]);\n return `label(\\n label:\\n${indent(label)}\\n sub:\\n${indent(sub)}\\n)`;\n }\n case NodeId.Leaf: {\n return `leaf(...${tree[1].byteLength} bytes)`;\n }\n case NodeId.Pruned: {\n return `pruned(${toHex(new Uint8Array(tree[1]))}`;\n }\n default: {\n return `unknown(${JSON.stringify(tree[0])})`;\n }\n }\n}\n\ninterface Delegation extends Record {\n subnet_id: ArrayBuffer;\n certificate: ArrayBuffer;\n}\n\nfunction isBufferEqual(a: ArrayBuffer, b: ArrayBuffer): boolean {\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n const a8 = new Uint8Array(a);\n const b8 = new Uint8Array(b);\n for (let i = 0; i < a8.length; i++) {\n if (a8[i] !== b8[i]) {\n return false;\n }\n }\n return true;\n}\n\ntype VerifyFunc = (pk: Uint8Array, sig: Uint8Array, msg: Uint8Array) => Promise;\n\nexport interface CreateCertificateOptions {\n /**\n * The bytes encoding the certificate to be verified\n */\n certificate: ArrayBuffer;\n /**\n * The root key against which to verify the certificate\n * (normally, the root key of the IC main network)\n */\n rootKey: ArrayBuffer;\n /**\n * The effective canister ID of the request when verifying a response, or\n * the signing canister ID when verifying a certified variable.\n */\n canisterId: Principal;\n /**\n * BLS Verification strategy. Default strategy uses wasm for performance, but that may not be available in all contexts.\n */\n blsVerify?: VerifyFunc;\n}\n\nexport class Certificate {\n private readonly cert: Cert;\n\n /**\n * Create a new instance of a certificate, automatically verifying it. Throws a\n * CertificateVerificationError if the certificate cannot be verified.\n * @constructs {@link AuthClient}\n * @param {CreateCertificateOptions} options\n * @see {@link CreateCertificateOptions}\n * @param {ArrayBuffer} options.certificate The bytes of the certificate\n * @param {ArrayBuffer} options.rootKey The root key to verify against\n * @param {Principal} options.canisterId The effective or signing canister ID\n * @throws {CertificateVerificationError}\n */\n public static async create(options: CreateCertificateOptions): Promise {\n let blsVerify = options.blsVerify;\n if (!blsVerify) {\n blsVerify = bls.blsVerify;\n }\n const cert = new Certificate(\n options.certificate,\n options.rootKey,\n options.canisterId,\n blsVerify,\n );\n await cert.verify();\n return cert;\n }\n\n private constructor(\n certificate: ArrayBuffer,\n private _rootKey: ArrayBuffer,\n private _canisterId: Principal,\n private _blsVerify: VerifyFunc,\n ) {\n this.cert = cbor.decode(new Uint8Array(certificate));\n }\n\n public lookup(path: Array): ArrayBuffer | undefined {\n return lookup_path(path, this.cert.tree);\n }\n\n private async verify(): Promise {\n const rootHash = await reconstruct(this.cert.tree);\n const derKey = await this._checkDelegationAndGetKey(this.cert.delegation);\n const sig = this.cert.signature;\n const key = extractDER(derKey);\n const msg = concat(domain_sep('ic-state-root'), rootHash);\n let sigVer = false;\n try {\n sigVer = await this._blsVerify(new Uint8Array(key), new Uint8Array(sig), new Uint8Array(msg));\n } catch (err) {\n sigVer = false;\n }\n if (!sigVer) {\n throw new CertificateVerificationError('Signature verification failed');\n }\n }\n\n private async _checkDelegationAndGetKey(d?: Delegation): Promise {\n if (!d) {\n return this._rootKey;\n }\n const cert: Certificate = await Certificate.create({\n certificate: d.certificate,\n rootKey: this._rootKey,\n canisterId: this._canisterId,\n });\n\n const rangeLookup = cert.lookup(['subnet', d.subnet_id, 'canister_ranges']);\n if (!rangeLookup) {\n throw new CertificateVerificationError(\n `Could not find canister ranges for subnet 0x${toHex(d.subnet_id)}`,\n );\n }\n const ranges_arr: Array<[Uint8Array, Uint8Array]> = cbor.decode(rangeLookup);\n const ranges: Array<[Principal, Principal]> = ranges_arr.map(v => [\n Principal.fromUint8Array(v[0]),\n Principal.fromUint8Array(v[1]),\n ]);\n\n const canisterInRange = ranges.some(\n r => r[0].ltEq(this._canisterId) && r[1].gtEq(this._canisterId),\n );\n if (!canisterInRange) {\n throw new CertificateVerificationError(\n `Canister ${this._canisterId} not in range of delegations for subnet 0x${toHex(\n d.subnet_id,\n )}`,\n );\n }\n const publicKeyLookup = cert.lookup(['subnet', d.subnet_id, 'public_key']);\n if (!publicKeyLookup) {\n throw new Error(`Could not find subnet key for subnet 0x${toHex(d.subnet_id)}`);\n }\n return publicKeyLookup;\n }\n}\n\nconst DER_PREFIX = fromHex(\n '308182301d060d2b0601040182dc7c0503010201060c2b0601040182dc7c05030201036100',\n);\nconst KEY_LENGTH = 96;\n\nfunction extractDER(buf: ArrayBuffer): ArrayBuffer {\n const expectedLength = DER_PREFIX.byteLength + KEY_LENGTH;\n if (buf.byteLength !== expectedLength) {\n throw new TypeError(`BLS DER-encoded public key must be ${expectedLength} bytes long`);\n }\n const prefix = buf.slice(0, DER_PREFIX.byteLength);\n if (!isBufferEqual(prefix, DER_PREFIX)) {\n throw new TypeError(\n `BLS DER-encoded public key is invalid. Expect the following prefix: ${DER_PREFIX}, but get ${prefix}`,\n );\n }\n\n return buf.slice(DER_PREFIX.byteLength);\n}\n\n/**\n * @param t\n */\nexport async function reconstruct(t: HashTree): Promise {\n switch (t[0]) {\n case NodeId.Empty:\n return hash(domain_sep('ic-hashtree-empty'));\n case NodeId.Pruned:\n return t[1] as ArrayBuffer;\n case NodeId.Leaf:\n return hash(concat(domain_sep('ic-hashtree-leaf'), t[1] as ArrayBuffer));\n case NodeId.Labeled:\n return hash(\n concat(\n domain_sep('ic-hashtree-labeled'),\n t[1] as ArrayBuffer,\n await reconstruct(t[2] as HashTree),\n ),\n );\n case NodeId.Fork:\n return hash(\n concat(\n domain_sep('ic-hashtree-fork'),\n await reconstruct(t[1] as HashTree),\n await reconstruct(t[2] as HashTree),\n ),\n );\n default:\n throw new Error('unreachable');\n }\n}\n\nfunction domain_sep(s: string): ArrayBuffer {\n const len = new Uint8Array([s.length]);\n const str = new TextEncoder().encode(s);\n return concat(len, str);\n}\n\n/**\n * @param path\n * @param tree\n */\nexport function lookup_path(\n path: Array,\n tree: HashTree,\n): ArrayBuffer | undefined {\n if (path.length === 0) {\n switch (tree[0]) {\n case NodeId.Leaf: {\n return new Uint8Array(tree[1]).buffer;\n }\n default: {\n return undefined;\n }\n }\n }\n\n const label = typeof path[0] === 'string' ? new TextEncoder().encode(path[0]) : path[0];\n const t = find_label(label, flatten_forks(tree));\n if (t) {\n return lookup_path(path.slice(1), t);\n }\n}\nfunction flatten_forks(t: HashTree): HashTree[] {\n switch (t[0]) {\n case NodeId.Empty:\n return [];\n case NodeId.Fork:\n return flatten_forks(t[1] as HashTree).concat(flatten_forks(t[2] as HashTree));\n default:\n return [t];\n }\n}\nfunction find_label(l: ArrayBuffer, trees: HashTree[]): HashTree | undefined {\n if (trees.length === 0) {\n return undefined;\n }\n for (const t of trees) {\n if (t[0] === NodeId.Labeled) {\n const p = t[1] as ArrayBuffer;\n if (isBufferEqual(l, p)) {\n return t[2];\n }\n }\n }\n}\n","/**\n * An error that happens in the Agent. This is the root of all errors and should be used\n * everywhere in the Agent code (this package).\n *\n * @todo https://github.com/dfinity/agent-js/issues/420\n */\nexport class AgentError extends Error {\n constructor(public readonly message: string) {\n super(message);\n Object.setPrototypeOf(this, AgentError.prototype);\n }\n}\n","import { lebEncode } from '@dfinity/candid';\nimport { Principal } from '@dfinity/principal';\nimport borc from 'borc';\nimport { sha256 } from '@noble/hashes/sha256';\nimport { compare, concat, uint8ToBuf } from './utils/buffer';\n\nexport type RequestId = ArrayBuffer & { __requestId__: void };\n\n/**\n * sha256 hash the provided Buffer\n * @param data - input to hash function\n */\nexport function hash(data: ArrayBuffer): ArrayBuffer {\n return uint8ToBuf(sha256.create().update(new Uint8Array(data)).digest());\n}\n\ninterface ToHashable {\n toHash(): unknown;\n}\n\n/**\n *\n * @param value unknown value\n * @returns ArrayBuffer\n */\nexport function hashValue(value: unknown): ArrayBuffer {\n if (value instanceof borc.Tagged) {\n return hashValue(value.value);\n } else if (typeof value === 'string') {\n return hashString(value);\n } else if (typeof value === 'number') {\n return hash(lebEncode(value));\n } else if (value instanceof ArrayBuffer || ArrayBuffer.isView(value)) {\n return hash(value as ArrayBuffer);\n } else if (Array.isArray(value)) {\n const vals = value.map(hashValue);\n return hash(concat(...vals));\n } else if (value && typeof value === 'object' && (value as any)._isPrincipal) {\n return hash((value as Principal).toUint8Array());\n } else if (\n typeof value === 'object' &&\n value !== null &&\n typeof (value as ToHashable).toHash === 'function'\n ) {\n return hashValue((value as ToHashable).toHash());\n // TODO This should be move to a specific async method as the webauthn flow required\n // the flow to be synchronous to ensure Safari touch id works.\n // } else if (value instanceof Promise) {\n // return value.then(x => hashValue(x));\n } else if (typeof value === 'bigint') {\n // Do this check much later than the other bigint check because this one is much less\n // type-safe.\n // So we want to try all the high-assurance type guards before this 'probable' one.\n return hash(lebEncode(value));\n }\n throw Object.assign(new Error(`Attempt to hash a value of unsupported type: ${value}`), {\n // include so logs/callers can understand the confusing value.\n // (when stringified in error message, prototype info is lost)\n value,\n });\n}\n\nconst hashString = (value: string): ArrayBuffer => {\n const encoded = new TextEncoder().encode(value);\n return hash(encoded);\n};\n\n/**\n * Get the RequestId of the provided ic-ref request.\n * RequestId is the result of the representation-independent-hash function.\n * https://sdk.dfinity.org/docs/interface-spec/index.html#hash-of-map\n * @param request - ic-ref request to hash into RequestId\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function requestIdOf(request: Record): RequestId {\n const hashed: Array<[ArrayBuffer, ArrayBuffer]> = Object.entries(request)\n .filter(([, value]) => value !== undefined)\n .map(([key, value]: [string, unknown]) => {\n const hashedKey = hashString(key);\n const hashedValue = hashValue(value);\n\n return [hashedKey, hashedValue] as [ArrayBuffer, ArrayBuffer];\n });\n\n const traversed: Array<[ArrayBuffer, ArrayBuffer]> = hashed;\n\n const sorted: Array<[ArrayBuffer, ArrayBuffer]> = traversed.sort(([k1], [k2]) => {\n return compare(k1, k2);\n });\n\n const concatenated: ArrayBuffer = concat(...sorted.map(x => concat(...x)));\n const requestId = hash(concatenated) as RequestId;\n return requestId;\n}\n","import * as base64Arraybuffer from 'base64-arraybuffer';\n\n// This WASM is generated from the miracl BLS Rust code (see\n// https://github.com/dfinity/miracl_core_bls12381/)\nimport { wasmBytesBase64 } from './wasm';\n\n/* tslint:disable */\n/* eslint-disable */\nlet wasm: InitOutput;\n\nconst wasmBytes = base64Arraybuffer.decode(wasmBytesBase64);\n\n/**\n * @returns {number}\n */\nexport function bls_init() {\n let ret = wasm.bls_init();\n return ret;\n}\n\nlet cachegetUint8Memory0: any = null;\nfunction getUint8Memory0() {\n if (cachegetUint8Memory0 === null || cachegetUint8Memory0.buffer !== wasm.memory.buffer) {\n cachegetUint8Memory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachegetUint8Memory0;\n}\n\nfunction passArray8ToWasm0(arg: any, malloc: any): [number, number] {\n const ptr = malloc(arg.length * 1);\n getUint8Memory0().set(arg, ptr / 1);\n return [ptr, arg.length];\n}\n\n/**\n * @param {Uint8Array} sig\n * @param {Uint8Array} m\n * @param {Uint8Array} w\n * @returns {number}\n */\nexport function bls_verify(sig: Uint8Array, m: Uint8Array, w: Uint8Array): number {\n const [ptr0, len0] = passArray8ToWasm0(sig, wasm.__wbindgen_malloc);\n const [ptr1, len1] = passArray8ToWasm0(m, wasm.__wbindgen_malloc);\n const [ptr2, len2] = passArray8ToWasm0(w, wasm.__wbindgen_malloc);\n\n const ret = wasm.bls_verify(ptr0, len0, ptr1, len1, ptr2, len2);\n return ret;\n}\n\nasync function load(module: any, imports: any) {\n if (typeof Response === 'function' && module instanceof Response) {\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n } else {\n return instance;\n }\n }\n}\n\nasync function init(): Promise {\n const imports = {};\n const { instance, module } = await load(wasmBytes, imports);\n\n wasm = instance.exports as any as InitOutput;\n (init as any).__wbindgen_wasm_module = module;\n\n return wasm;\n}\n\nexport type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module;\n\nexport interface InitOutput {\n readonly memory: WebAssembly.Memory;\n readonly bls_init: () => number;\n readonly bls_verify: (a: number, b: number, c: number, d: number, e: number, f: number) => number;\n readonly __wbindgen_malloc: (a: number) => number;\n}\n\n/**\n * If `module_or_path` is {RequestInfo} or {URL}, makes a request and\n * for everything else, calls `WebAssembly.instantiate` directly.\n *\n * @param {InitInput | Promise} module_or_path\n *\n * @returns {Promise}\n */\nexport default init;\n","export const wasmBytesBase64 = `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akE4ENABGiACQbgDakEBNgIAIAJBwANqQTgQ0AEaIAJB+ANqQQE2AgAgAkGABGpBOBDQARogAkEBNgK4BCACQcAEakE4ENABGiACQfgEakEBNgIAIAJBgAVqQTgQ0AEaIAJBuAVqQQE2AgAgAkHABWpBOBDQARogAkH4BWpBATYCACACQYAGakE4ENABGiACQQE2ArgGIAJBwAZqQTgQ0AEaIAJB+AZqQQE2AgAgAkGAB2pBOBDQARogAkG4B2pBATYCACACQcAHakE4ENABGiACQfgHakEBNgIAIAIgARAYAkAgASgCgAZBBEYNACAAKAKABkEERg0AIAJBgARqIgMgAEGAAmoQlgEgAyABQYACahAYDAYLIAJBwAxqIgdBOBDQARogAkEBNgL4DCACQYANakE4ENABGiACQbgNakEBNgIAIAJBgAhqIgRBOBDQARogAkEBNgK4CCACQcAIakE4ENABGiACQfgIakEBNgIAIAJBgApqIgMgAEGAA2oiBRBeIAQgAxCZASADIAFBgANqIgYQXiAEIAMQESAHELYBIAEoAoAGQQRHDQMMBAsgACABEAMMBgsgAkHADGoiAyABQYAFahBeIAJBgAxqIgQgA0HAABDRARogAkGABmogBBCnAQsgAkGABmoQZCACQYAIaiIDIAIQlgEgAxArIAJBgAJqIgQgAxCXASAGIAQQlgEgAkGABGoiByADEJYBIAMgABCWASADIAUQlwEgAxCwASACQYAKaiIEIAEQlgEgBCABQYAEahCXASAEELABIAMgBBAYIAcgAxCXASADIAUQlgECQCABKAKABkECRwRAIAJBwAxqIgMgAUGABWoQXiACQYAIaiADEKYBDAELIAJBwAxqIgMgAUGABWoQXiACQYAMaiIBIANBwAAQ0QEaIAJBgAhqIAEQpwELIAJBgAhqIgEQZCACQYAKaiIDIAEQlgEgAxArIAUgAkGABGoQlgEgBSADEJcBIAJBgAZqIgQgAxCXASABEGQgBiABEJcBIAQQsAEgBBBkIAAgAhCWASAAIAQQlwEMAwsgAkGACmoiAyAFEF4gAkHADGoiBCADEJkBIAMgAUGAAmoQXiAEIAMQEQsgACgCgAZBBEcEQCACQYAKaiIDIABBgAJqEF4gAkHADGoiBCADEJkBIAMgBhBeIAQgAxARCyACQYAEaiIDIAJB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AEHcu8AAKAIAQX4gA0EDdndxNgIACyAAIAEQoAEgAEH0vsAAKAIARw0BQey+wAAgATYCAAsPCyABQYACTwRAIAAgARAWDwsgAUEDdiICQQN0QeS7wABqIQECf0Hcu8AAKAIAIgNBASACdCICcQRAIAEoAggMAQtB3LvAACACIANyNgIAIAELIQIgASAANgIIIAIgADYCDCAAIAE2AgwgACACNgIIC+UDAQN/IwBB0CJrIgMkACADQcAWaiIEQcitwAAQSSADQcgcaiIFQYCuwAAQSSADQQhqIAQgBRBLIANBiAFqQTgQ0AEaIANBwAFqQTgQ0AEaIANB+AFqED0CQCACEIYBBEAgABBVDAELIANB+ARqIgQQPSAEIAEQfSAEEEcgA0H4B2oiARBnIAEgAhB4IAEQRiADQcgcaiICIAEQkAEgA0G4CWogAhCQASACIANBuAhqEJABIANB+AlqIAIQkAEgA0G4CmoiARA9IANBuA1qEFUgASAEEH0gA0HAE2oiARA9IAEgBBB9IAEQogEgA0HAAWogA0GIAWoQUEECayECA0AgAkEBakEBTQRAIANBuA1qIgEQngEgACABQYgGENEBGgUgA0G4DWoQGiADQcAWaiADQbgKaiADQbgJaiADQfgJahALAkACQAJAIANBwAFqIAIQUyADQYgBaiACEFNrQQFqDgMBAgACCyADQcgcaiIBIANBuApqIANB+ARqIANBuAlqIANB+AlqEAogA0HAFmogARADDAELIANByBxqIgEgA0G4CmogA0HAE2ogA0G4CWogA0H4CWoQCiADQcAWaiABEAMLIAJBAWshAiADQbgNaiADQcAWahABDAELCwsgA0HQImokAAvBAwEVfwNAIANBwAFGBEACQCAAQShqIQsgAEEUaigCACIMIQggAEEQaigCACINIQIgAEEMaigCACIOIQEgACgCCCIPIQMgAEEYaigCACIQIQogAEEcaigCACIRIQQgAEEgaigCACISIQcgAEEkaigCACITIQYDQCAHIQkgBCEHIAohBCAFQYACRg0BIAEgAnEhFCABIAJzIRUgBSALaigCACAFQcCiwABqKAIAIAkgBEF/c3EgBCAHcXIgBmogBEEadyAEQRV3cyAEQQd3c2pqaiIGIAhqIQogBUEEaiEFIAIhCCABIQIgAyIBQR53IAFBE3dzIAFBCndzIBQgASAVcXNqIAZqIQMgCSEGDAALAAsFIAAgA2oiAkHoAGogAkEoaigCACACQcwAaigCACACQeAAaigCACIBQQ93IAFBDXdzIAFBCnZzamogAkEsaigCACIBQRl3IAFBDndzIAFBA3ZzajYCACADQQRqIQMMAQsLIAAgBiATajYCJCAAIAkgEmo2AiAgACAHIBFqNgIcIAAgBCAQajYCGCAAIAggDGo2AhQgACACIA1qNgIQIAAgASAOajYCDCAAIAMgD2o2AggL5AEBAn8jAEGAA2siAyQAIAMQPSAAIAEgAkEfdSIEIAJzIARBf3NqQQJtIgJBAWtBH3YQbyAAIAFBgANqIAJBAXNBAWtBH3YQbyAAIAFBgAZqIAJBAnNBAWtBH3YQbyAAIAFBgAlqIAJBA3NBAWtBH3YQbyAAIAFBgAxqIAJBBHNBAWtBH3YQbyAAIAFBgA9qIAJBBXNBAWtBH3YQbyAAIAFBgBJqIAJBBnNBAWtBH3YQbyAAIAFBgBVqIAJBB3NBAWtBH3YQbyADIAAQfSADEKIBIAAgAyAEQQFxEG8gA0GAA2okAAvlAwEIfyMAQZAGayICJAAgAEFAayEIAkAgAUH4AGooAgAgASgCOGqsIABB+ABqKAIAIgcgACgCOCIEaqx+Qv///w9XDQAgBEEBSgR/IAAQHiAAKAJ4BSAHC0EBTA0AIAgQHgsgAkHYpMAAEEkgAkE4aiIHQfAAENABGiACIQNBACECA0AgAkE4RgRAAkAgB0E4aiEEQQAhAgNAIAJBOEYNASACIARqIAIgA2opAwA3AwAgAkEIaiECDAALAAsFIAIgB2pCADcDACACQQhqIQIMAQsLIANBqAFqIgYgABBdIANB4AFqIgUgARBdIANBmAJqIgIgACABEAUgA0GIA2oiBCAIIAFBQGsiARAFIAYgCBBgIAYQQiAFIAEQYCAFEEIgA0H4A2oiCSAGIAUQBUEAIQEgA0HoBGoiBkHwABDQASEFA0AgAUHwAEcEQCABIAVqIAEgAmopAwA3AwAgAUEIaiEBDAELCyAGIAQQYkEAIQEDQCABQfAARwRAIAEgBGoiBSABIAdqKQMAIAUpAwB9NwMAIAFBCGohAQwBCwsgAiAEEGIgAhBIIAkgBhBjIAkQSCADQdgFaiIBIAIQayAAIAEQaiAAQQM2AjggASAJEGsgCCABEGogAEECNgJ4IANBkAZqJAALowIBCH8jAEGABmsiAiQAIAIgAEGAAWoiBxBeIAJBgAFqIgQgBxBeIAQQLSACQYACaiIFIAIQXiAFIABBgAJqIgMQESACQYADaiIBIAMQXiABEC0gAyAEEJkBIAMgBBCaASADEKkBIAMQuAEgAxC4ASADEKkBIAFBDBCrASABEHwgARCpASACQYAEaiIIIAEQXiAIIAMQESACQYAFaiIGIAQQXiAGIAEQmgEgBhCpASADIAUQESAFIAEQmQEgBSABEJoBIAEgBRCaASABEKkBIAQgARB7IAQQqQEgBiAEEBEgBiAIEJoBIAUgABCZASAFIAIQESAAIAQQmQEgABCpASAAIAUQESAAELgBIAAQqQEgByAGEJkBIAcQqQEgAkGABmokAAu8AgEGfyMAQYAIayIBJAAgASAAEIwBIAFBgAJqIgMgAEGABGoiBRCMASABQYAEaiIEIABBgAJqIgYQjAEgAUGABmoiAkE4ENABGiABQQE2ArgGIAFBwAZqQTgQ0AEaIAFB+AZqQQE2AgAgAUGAB2pBOBDQARogAUG4B2pBATYCACABQcAHakE4ENABGiABQfgHakEBNgIAIAAQISACIAAQlgEgAiAAEJcBIAAgAhCXASAAELABIAEQyQEgARCzASAAIAEQlwEgAxAhIAMQZCACIAMQlgEgAiADEJcBIAMgAhCXASADELABIAQQISACIAQQlgEgAiAEEJcBIAQgAhCXASAEELABIAYQsgEgBhCzASAFEMkBIAUQswEgBiADEJcBIAUgBBCXASAAQQU2AoAGIAAQnAEgAUGACGokAAv/AQEHfyMAQcACayIBJAAgASAAQUBrIgYQkAEgARBMIAFBQGsiAyAGEJABIAMgAEGAAWoiAhBKIAFBgAFqIgQgAhCQASAEEEwgAiABEK4BIAIgARB3IAIQQiACEIIBIAIQggEgAhBCIARBDBA0IAFBwAFqIgcgBBCQASAHIAIQSiABQYACaiIFIAEQkAEgBSAEEHcgBRBCIAIgAxBKIAMgBBCuASADIAQQdyAEIAMQdyABIAQQfiABEEIgBSABEEogBSAHEHcgAyAAEK4BIAMgBhBKIAAgARCuASAAEEIgACADEEogABCCASAAEEIgBiAFEK4BIAYQQiABQcACaiQAC84CAgd/An4CQAJAAkBBDSABQTpuIgJrIgRBDU0EQEEMIAJrIgNBDk8NASAAIAAgA0EDdGopAwBBOiABIAJBOmxrIgNrrSIKhyAAIARBA3RqKQMAIAOtIgmGhDcDaCAEQQ1rIQUgAEHgAGohBCACQQFqIQZBACACQQN0ayEHQQshAwNAAkAgA0ECaiAGTQRAIAFBrAZPDQEgACACQQN0aiAAKQMAIAmGQv//////////A4M3AwADQCACRQ0HIABCADcDACACQQFrIQIgAEEIaiEADAALAAsgAyAFakEOTw0EIAQgBCAHaiIIQQhrKQMAIAqHIAgpAwAgCYZC//////////8Dg4Q3AwAgA0EBayEDIARBCGshBAwBCwsgAkEOQYCywAAQOwALIARBDkHQscAAEDsACyADQQ5B4LHAABA7AAtBf0EOQfCxwAAQOwALC6cCAQR/IABCADcCECAAAn9BACABQYACSQ0AGkEfIAFB////B0sNABogAUEGIAFBCHZnIgNrdkEBcSADQQF0a0E+agsiBDYCHCAEQQJ0Qey9wABqIQMgACECAkACQAJAAkBB4LvAACgCACIAQQEgBHQiBXEEQCADKAIAIQMgBBCfASEAIAMQywEgAUcNASADIQAMAgtB4LvAACAAIAVyNgIAIAMgAjYCAAwDCyABIAB0IQQDQCADIARBHXZBBHFqQRBqIgUoAgAiAEUNAiAEQQF0IQQgACIDEMsBIAFHDQALCyAAKAIIIgEgAjYCDCAAIAI2AgggAiAANgIMIAIgATYCCCACQQA2AhgPCyAFIAI2AgALIAIgAzYCGCACIAI2AgggAiACNgIMC7YCAQV/IAAoAhghBAJAAkAgACAAKAIMRgRAIABBFEEQIABBFGoiASgCACIDG2ooAgAiAg0BQQAhAQwCCyAAKAIIIgIgACgCDCIBNgIMIAEgAjYCCAwBCyABIABBEGogAxshAwNAIAMhBSACIgFBFGoiAygCACICRQRAIAFBEGohAyABKAIQIQILIAINAAsgBUEANgIACwJAIARFDQACQCAAIAAoAhxBAnRB7L3AAGoiAigCAEcEQCAEQRBBFCAEKAIQIABGG2ogATYCACABDQEMAgsgAiABNgIAIAENAEHgu8AAQeC7wAAoAgBBfiAAKAIcd3E2AgAPCyABIAQ2AhggACgCECICBEAgASACNgIQIAIgATYCGAsgAEEUaigCACIARQ0AIAFBFGogADYCACAAIAE2AhgLC+UBAQZ/IwBBgARrIgIkACACIAAQXiACQYABaiIFIABBgAFqIgYQXiACQYACaiIDQTgQ0AEaIAJBATYCuAIgAkHAAmpBOBDQARogAkH4AmpBATYCACACQYADaiIEIAYQXiACIAEQESAFIAFBgAFqIgcQESADIAcQmQEgAyABEJoBIAQgABCaASADEKkBIAQQqQEgBCADEBEgAyACEJkBIAMQNiAEIAMQmgEgBBCpASADIAUQmQEgAxA2IAYgBBCZASAGIAMQmgEgBRB8IAAgBRCZASAAIAIQmgEgABCwASACQYAEaiQAC28BDH9BjL/AACgCACICRQRAQZy/wABB/x82AgBBAA8LQYS/wAAhBgNAIAIiASgCCCECIAEoAgQhAyABKAIAIQQgAUEMaigCABogASEGIAVBAWohBSACDQALQZy/wAAgBUH/HyAFQf8fSxs2AgBBAAuAAgEGfyMAQYAIayIBJAAgACgCgAZBAUcEQCABIAAQjAEgAUGAAmoiAiAAQYACaiIEEIwBIAFBgARqIgUgAEGABGoiAxCMASABQYAGaiIGIAAQjAEgARAhIAIgAxAYIAIQswEgAhCwASAFECEgBiAEEBggBhCzASADIAAQlwEgAyAEEJcBIAMQsAEgAxAhIAAgARCWASABIAIQlwEgARCwASABIAUQlwEgASAGEJcBIAEQsAEgARArIAIQZCAFEGQgACACEJcBIAQgBRCWASAEIAYQlwEgAyABEJcBIABBBEEFIAAoAoAGQX5xQQJGGzYCgAYgABCdAQsgAUGACGokAAuZAgEBfyMAQYANayIDJAAgAyABEGkgAxCdASADQYgGaiIBIAIQXSABEEIgA0HABmoiAiABEF0gAkEDECkaIAIQQiADQfgGaiADEGkCQCACEFdFBEAgA0HABmoQKkECayECA0AgAkEBakEBTQRAIANB+AZqIgEQnAEMAwUgA0H4BmoQEwJAAkACQCADQcAGaiACEFMgA0GIBmogAhBTa0EBag4DAQIAAgsgA0H4BmogAxAHDAELIAMQngEgA0H4BmogAxAHIAMQngELIAJBAWshAgwBCwALAAsgA0H4BmoiARC3ASABQYABahC2ASABQYACahCxASABQYAEahCxASABQQE2AoAGCyAAIAFBiAYQ0QEaIANBgA1qJAALhgICBH8BfiMAQTBrIgIkACABQQRqIQQgASgCBEUEQCABKAIAIQMgAkEQaiIFQQA2AgAgAkIBNwMIIAIgAkEIajYCFCACQShqIANBEGopAgA3AwAgAkEgaiADQQhqKQIANwMAIAIgAykCADcDGCACQRRqIAJBGGoQDBogBEEIaiAFKAIANgIAIAQgAikDCDcCAAsgAkEgaiIDIARBCGooAgA2AgAgAUEMakEANgIAIAQpAgAhBiABQgE3AgQgAiAGNwMYQQxBBBC5ASIBRQRAQQxBBBDPAQALIAEgAikDGDcCACABQQhqIAMoAgA2AgAgAEGEt8AANgIEIAAgATYCACACQTBqJAAL5AEBAn8jAEHAAWsiAyQAIAMQZyAAIAEgAkEfdSIEIAJzIARBf3NqQQJtIgJBAWtBH3YQbiAAIAFBwAFqIAJBAXNBAWtBH3YQbiAAIAFBgANqIAJBAnNBAWtBH3YQbiAAIAFBwARqIAJBA3NBAWtBH3YQbiAAIAFBgAZqIAJBBHNBAWtBH3YQbiAAIAFBwAdqIAJBBXNBAWtBH3YQbiAAIAFBgAlqIAJBBnNBAWtBH3YQbiAAIAFBwApqIAJBB3NBAWtBH3YQbiADIAAQeCADEKQBIAAgAyAEQQFxEG4gA0HAAWokAAvDAwIGfwN+IwBB8ABrIgEkACABQcCywAAQSSABQThqIAEQXSAAEEICQAJAAkAgAQJ/IAAoAjgiAkEQTARAIAJBAWsQNQwBCyABKQMwIghCAXwiByAIVA0BIAApAzAiCEKAgICAgICAgIB/USAHQn9RcQ0CIAFBOGoiAiAIIAd/pxApIQcgASABKQNoIAdCOoZ8NwNoIAAgAhBhIAAQQkECCyIEECgDQCAERQ0DQQAhAyABIAEpAwgiCEI5hkKAgICAgICAgAKDIAEpAwBCAYeEIgc3AwAgACkDACAHfSEHIABBCGohBSAAIAFBOGoiAkEBA38gAiADaiAHQv//////////A4M3AwAgB0I6hyEHIANBKEYEfyABIAEpAzBCAYciCDcDMCACIAApAzAgCH0gB3wiBzcDMCAHQj+IpwUgASADaiIGQQhqIAhCAYcgBkEQaikDACIIQjmGQoCAgICAgICAAoOEIgk3AwAgAyAFaikDACAHfCAJfSEHIANBCGohAwwBCwtrEDAgBEEBayEEDAALAAtB4LPAAEEZQcSzwAAQWQALQYC0wABBH0HEs8AAEFkACyAAQQE2AjggAUHwAGokAAvuAQECfyMAQbABayIDJAAgA0EwENABIQMCQAJAA0AgAkEwRgRAIANBMGogAxBwIAFBMGohAUEAIQIDQCACQTBGDQMgAkEwRg0EIAIgA2ogASACai0AADoAACACQQFqIQIMAAsACyACQeAARwRAIAIgA2ogASACai0AADoAACACQQFqIQIMAQsLQeAAQeAAQYCmwAAQOwALIANB8ABqIgEgAxBwIABBOBDQASIAQQE2AjggAEFAa0E4ENABIABB+ABqQQE2AgAgACABEK4BIANBMGoQrgEgA0GwAWokAA8LIAJBMGpB4ABBkKbAABA7AAuPAgEDfyMAQSBrIgUkAEEBIQZB2LvAAEHYu8AAKAIAIgdBAWo2AgACQEGgv8AALQAABEBBpL/AACgCAEEBaiEGDAELQaC/wABBAToAAAtBpL/AACAGNgIAAkACQCAHQQBIIAZBAktyDQAgBSAEOgAYIAUgAzYCFCAFIAI2AhBBzLvAACgCACICQQBIDQBBzLvAACACQQFqIgI2AgBBzLvAAEHUu8AAKAIAIgMEf0HQu8AAKAIAIAUgACABKAIQEQAAIAUgBSkDADcDCCAFQQhqIAMoAhQRAABBzLvAACgCAAUgAgtBAWs2AgAgBkEBSw0AIAQNAQsACyMAQRBrIgIkACACIAE2AgwgAiAANgIIAAucAQEEfyMAQYADayICJAAgAiAAEF4gAkGAAWoiASAAQYABaiIEEF4gAkGAAmoiAyAAEF4gAyAEEBEgAiAEEJoBIAEQfCABIAAQmgEgAhCpASABEKkBIAAgAhCZASAAIAEQESABIAMQmQEgARB8IAEgAxCaASABEKkBIAEQNiAAIAEQmgEgAxC4ASAEIAMQmQEgABCwASACQYADaiQAC7kBAQJ/IwBBIGsiAyQAAkAgASABIAJqIgFLDQAgAEEEaigCACICQQF0IgQgASABIARJGyIBQQggAUEISxshAQJAIAIEQCADQRhqQQE2AgAgAyACNgIUIAMgACgCADYCEAwBCyADQQA2AhALIAMgASADQRBqECYgAygCAARAIANBCGooAgAiAEUNASADKAIEIAAQzwEACyADKAIEIQIgAEEEaiABNgIAIAAgAjYCACADQSBqJAAPCxBlAAusAQECfyMAQYADayIDJAAgA0EIaiABEJABAkAgAgRAIANBCGogAhCuAQwBCyADQQhqEDoLIANByABqIgJB8LTAABBJIANBgAFqIAIQjgEgA0HAAWoiAiADQQhqIgQQkAEgAhBMIAIgARBKIAAgARCQASAAIAQQSiADQYACaiACEJABIAAQViEBIANBwAJqIgIgABCQASACEEMgAhBCIAAgAiABEHIgA0GAA2okAAueAQEFfyMAQYABayICJAAgAkE4ENABIgJBATYCOCACQUBrIgNBOBDQARogAkEBNgJ4IAIgABCuASACIAFBgAFqIgUQSiADIAEQrgEgAyAAQYABaiIGEEoCQCACIAMQWEUNACACIABBQGsQrgEgAiAFEEogAkFAayIAIAFBQGsQrgEgACAGEEogAiAAEFhFDQBBASEECyACQYABaiQAIAQLpwEBA38jAEEwayICJAAgAUEEaiEDIAEoAgRFBEAgASgCACEBIAJBEGoiBEEANgIAIAJCATcDCCACIAJBCGo2AhQgAkEoaiABQRBqKQIANwMAIAJBIGogAUEIaikCADcDACACIAEpAgA3AxggAkEUaiACQRhqEAwaIANBCGogBCgCADYCACADIAIpAwg3AgALIABBhLfAADYCBCAAIAM2AgAgAkEwaiQAC5UBAQJ/AkACQAJAAkACfwJAAkACf0EBIgMgAUEASA0AGiACKAIAIgRFDQEgAigCBCICDQQgAQ0CQQEMAwshA0EAIQEMBgsgAQ0AQQEMAQsgAUEBELkBCyICRQ0BDAILIAQgARCsASICDQELIAAgATYCBEEBIQEMAQsgACACNgIEQQAhAwsgACADNgIAIABBCGogATYCAAvvMwISfwV+IwBBMGsiDiQAIA5BEGogACABEFsgDiAOKAIUIgA2AhwgDiAOKAIQIgg2AhggDkEIaiACIAMQWyAOIA4oAgwiATYCJCAOIA4oAggiAzYCICAOIAQgBRBbIA4gDigCBCIFNgIsIA4gDigCACINNgIoIAAhBCMAQZAVayICJAAjAEGwBmsiCiQAIApBEGpBOBDQARogCkHQAGpBOBDQASEVIApBiAFqQQE2AgAgCkEBNgJIIApBkAFqIgBB2KTAABBJIAAQKiEPIApByAFqIhNBgAIQ0AEaIApB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ABBJAkACQAJAAkADQAJAIAxBMEYEQCAAIAAtAABBH3E6AAAgAEHoAGogABC+ASAEDQFBAEEAQZiBwAAQOwALIAQgDEYNAiAAIAxqIAggDGotAAA6AAAgDEEBaiEMDAELC0EAIQwgCCwAACIJQQBIDQIgCEEwaiEDIARBMCAEQTBLG0EwayEIA0AgDEEwRgRAIABBoAFqIgQgABC+ASMAQYABayIDJAAgARBnIAEgAEHoAGoQwAEgAUFAayIIIAQQwAEgAUGAAWoQygEgARBCIAMgARBPIANBQGsiBCAIEJABIAQQTCAEIAMQWEUEQCABEJIBCyADQYABaiQADAULIAggDEYNAiAAIAxqIAMgDGotAAA6AAAgDEEBaiEMDAALAAsgBCAEQYiBwAAQOwALIAxBMGogBEGogcAAEDsACyMAQcABayIDJAAgAEGgAWoiBBBnIANBOBDQASIDQQE2AjggBCAAQegAahDAASAEEEIgBEGAAWoQygEgA0FAayIIIAQQTwJAAkACQCAIIAMQWkEBRgRAIANBgAFqIgggA0FAayADECMgCBBWDQEMAgsgBBCSAQwCCyADQYABaiIIEEMgCBBCCyAEQUBrIANBgAFqEK4BCyADQcABaiQAIAlBIHEiA0EAIABB4AFqEE0iBEEBRxtBASADIARBAUdyGwRAIABBoAFqEKQBCyABIABBoAFqQcABENEBGgsgAEHgAmokAAJ/QQAhAyMAQcAFayIAJAACQCABEIYBDQAgAEEIaiIIQZCtwAAQSSAAQYAEaiIEQbiuwAAQSSAAQUBrIgkgBBCOASAAQYABaiIEEGcgBCABEHggBCAJEEogAEHAAmoiBCABIAgQvQEgASAEECQNACAAQYAEaiIEIABBwAJqIgEgAEEIahC9ASABIARBwAEQ0QEaIAEQpAEgAEGAAWogARAkRQ0AQQEhAwsgAEHABWokAEF/IANFDQAaIAJBwAFqEKQBIAJBgANqIQhBACEAIwBB4ARrIgEkACABQeAAENABIQECQCAFBEADQCAAQeAARgRAIAEgAS0AAEEfcToAACABQeAAaiABEB9BACEAAkAgDSwAACILQQBOBEAgDUHgAGohAyAFQeAAIAVB4ABLG0HgAGshBANAIABB4ABGBEAgAUHgAWoiACABEB8gCCABQeAAaiAAED8MAwsgACAERwRAIAAgAWogACADai0AADoAACAAQQFqIQAMAQsLIABB4ABqIAVB1KfAABA7AAsjAEHAAWsiAyQAIAFB4AFqIgAQPSADQTgQ0AEiDUEBNgI4IAAgAUHgAGoQmQEgAEGAAWoiDxC3ASAAQYACahC3ASAAEKkBIA1BQGsiBCAAEDgjAEHAAWsiAyQAIAMgBBBeIAMQpAEgAyAEEBEgA0GAAWoiBCADQcAAENEBGiAEIA0QWiEEIANBwAFqJAACQAJAAkAgBEEBRgRAIwBBwANrIgAkACANQUBrIgQQiAFFBEAgACAEQUBrIgcQkAEgAEFAayIDIAQQkAEgAEGAAWoiBSAEEJABIABBwAFqIgZBOBDQARogAEEBNgL4ASAAQYACaiIKQTgQ0AEaIABBATYCuAIgABBMIAMQTCAAIAMQdyAAEEIgAEHAAmoiCSAAIA0QIyADIAkQrgEgACADEK4BIAMgBBCuASADIAAQdyADEEIgAxA3IAAgBxCuASAAEDcgAyAKEFohDCAFIAoQrgEgBRBDIAUQQiAGIAMQrgEgBhBDIAYQQiADIAZBASAMayIMEHIgCiAFIAwQciAJIAMgChAjIAQgCRCuASAFIAMQrgEgBSAKEDMgBSAEEEogByAFEK4BIAcgABBKIAYgBBCuASAEIAcgDBByIAcgBiAMEHIgBBCJASEDIAkgBBBeIAkQNiAJEKkBIAQgCSADEI0BCyAAQcADaiQAIAQQiQENAQwCCyAAEJsBDAILIA1BQGsQNgsgDUFAayIAELUBIA8gABCZAQsgDUHAAWokAEEAIQACQCABQeACaiIDEIgBDQAgA0FAaxBNIgANACADEE0hAAsgC0EgcSIDQQAgAEEBRyIAG0EBIAAgA3IbBEAgAUHgAWoQogELIAggAUHgAWpBgAMQ0QEaCyABQeAEaiQADAMLIAAgBUcEQCAAIAFqIAAgDWotAAA6AAAgAEEBaiEADAELCyAFIAVBxKfAABA7AAtBAEEAQbSnwAAQOwALIwBBwAdrIg0kACANQcABaiIDQcitwAAQSSANQcAEaiIFQYCuwAAQSSANQQhqIgEgAyAFEEsgARA+IAEQqQEgDUGIAWoiCUGQrcAAEEkgAxA9IAMgCBB9IwBBgAFrIgAkACAAIAEQXiAAEC0gAxCkASADQYABaiIEEKQBIANBgAJqIgYQpAEgBhC1ASADIAAQESAEIAAQESAEIAEQESAAQYABaiQAQQAhBCMAQfA2ayIAJAAgAEE4ENABIgFBOGpBOBDQARogAUHwAGoQPSABQfADahA9IAFB8AZqED0CQAJAIAgQigFFBEAgAUHwIWoiBhA9IAFB8CRqIgcQPSABQfAnaiIKED0gAUHwKmoiDBA9IAFB8C1qIgsQPSABQfAwaiIPED0gAUHwM2oiABA9IAFB8B5qED0gAUHwCWoiECAGQYADENEBGiABQfAMaiAHQYADENEBGiABQfAPaiAKQYADENEBGiABQfASaiAMQYADENEBGiABQfAVaiALQYADENEBGiABQfAYaiAPQYADENEBGiABQfAbaiAAQYADENEBGiAAQecAENABGiABQfADaiIAIAgQfSAAEBIgECAIEH0MAQsgBSABQfAAakGAAxDRARoMAQsDQCAEQYAVRwRAIAFB8AZqIgAgAUHwCWogBGoiBhB9IAZBgANqIgYgABB9IAYgAUHwA2oQCCAEQYADaiEEDAELCyABQThqIgAgCRBqIAEpAzghGCAAQQEQkwEgABBCIAEpAzghGSABIAAQaiABQQEQkwEgARBCIAAgASAYQgKBpxAwIAFB8ANqIgQgCCAZQgKBpxBvIAFB8AZqIAQQfSAAECpBA2oiBkECdiIAQQFqIQhBACEEAkACQANAIAFBOGpBBRCPASEJIAQgCEYEQCAGQZgDTw0CIAFB8DNqIAhqIAk6AAAgAUHwAGogAUHwCWogCUEYdEEYdRAQDAMLIARB5wBHBEAgAUHwM2ogBGogCUEQayIHOgAAIAFBOGoiCSAHQRh0QRh1EJQBIAkQQiAJQQQQLCAEQQFqIQQMAQsLQecAQecAQaCowAAQOwALIAhB5wBBsKjAABA7AAsDQCAAQX9HBEAgAUHwA2oiCCABQfAJaiABQfAzaiAAaiwAABAQIABBAWshACABQfAAaiIEEBIgBBASIAQQEiAEEBIgBCAIEAgMAQsLIwBBgANrIgAkACAAED0gACABQfAGahB9IAAQogEgAUHwAGoiBCAAEAggAEGAA2okACAFIARBgAMQ0QEaCyABQfA2aiQAIAUQogEjAEGAAmsiACQAIAAgAxBeIABBgAFqIgEgBRBeIAAgBUGAAmoiBBARIAEgA0GAAmoiCBARAn8CQCAAIAEQegRAIAAgA0GAAWoQmQEgACAEEBEgAEGAAWoiASAFQYABahCZASABIAgQESAAIAEQeg0BC0EADAELQQELIQEgAEGAAmokACANQcAHaiQAQX8gAUUNABojAEHgA2siACQAIABBgAFqIgFBwKjAABBJIABBuAFqIgNB+KjAABBJIAAgASADEEsgAEHwAmoiAUGwqcAAEEkgAEGoA2oiA0HoqcAAEEkgAEHwAWoiBCABIAMQSyACQYAGaiIBIAAgBBA/IABB4ANqJAAgAkGACWohByACQYADaiEIIwBBkDRrIgAkACAAQYAoaiIDQcitwAAQSSAAQYguaiIEQYCuwAAQSSAAIAMgBBBLIABBgAFqQTgQ0AEaIABBuAFqQTgQ0AEaIABB8AFqED0CQCACQcABaiIEEIYBRQRAIAIQhgEEQCAHIAEgBBAODAILIABB8ARqIgMQPSADIAEQfSADEEcgAEHwB2oiBRBnIAUgBBB4IAUQRiAAQbAJaiIEED0gBCAIEH0gBBBHIABBsAxqIggQZyAIIAIQeCAIEEYgAEGILmoiASAFEJABIABB8A1qIAEQkAEgASAAQbAIahCQASAAQbAOaiABEJABIAEgCBCQASAAQfAOaiABEJABIAEgAEHwDGoQkAEgAEGwD2ogARCQASAAQfAPaiIBED0gAEHwEmoiBRA9IABB8BVqEFUgASADEH0gBSAEEH0gAEH4G2oiARA9IAEgAxB9IAEQogEgAEH4HmoiARA9IAEgBBB9IAEQogEgAEG4AWogAEGAAWoQUEECayEBA0AgAUEBakEBTQRAIABB8BVqIgEQngEgByABQYgGENEBGgwDBSAAQfAVaiIEEBogAEH4IWoiAyAAQfAPaiAAQfANaiAAQbAOahALIABBgChqIgUgAEHwEmogAEHwDmogAEGwD2oQCyADIAUQAyAEIAMQAQJAAkACQCAAQbgBaiABEFMgAEGAAWogARBTa0EBag4DAQIAAgsgAEGILmoiAyAAQfAPaiAAQfAEaiAAQfANaiAAQbAOahAKIABB+CFqIgQgA0GIBhDRARogAyAAQfASaiAAQbAJaiAAQfAOaiAAQbAPahAKIAQgAxADIABB8BVqIAQQAQwBCyAAQYguaiIDIABB8A9qIABB+BtqIABB8A1qIABBsA5qEAogAEH4IWoiBCADQYgGENEBGiADIABB8BJqIABB+B5qIABB8A5qIABBsA9qEAogBCADEAMgAEHwFWogBBABCyABQQFrIQEMAQsACwALIAcgCCACEA4LIABBkDRqJAAjAEHgH2siCCQAIAhB0BNqIgFByK3AABBJIAhB2BlqIg1BgK7AABBJIAggASANEEsgCEGAAWoiC0GQrcAAEEkgAkGID2oiACAHEGkgCEG4AWoiBSAAEGkjAEGACGsiAyQAIAMgBRCMASADQYACaiIJIAVBgAJqIg8QjAEgA0GABGoiCiAFEIwBIANBgAZqIgRBOBDQARogA0EBNgK4BiADQcAGakE4ENABGiADQfgGakEBNgIAIANBgAdqQTgQ0AEaIANBuAdqQQE2AgAgA0HAB2pBOBDQARogA0H4B2pBATYCACAFEJ0BIAMQISAJIAVBgARqIgwQGCAJEGQgAyAJEHkgAxCwASAJIAwQlgEgCRAhIAkQZCAKIA8QGCAJIAoQeSAJELABIAogDxCWASAKECEgBCAFEJYBIAQgDBAYIAogBBB5IAoQsAEgBCAPEJYBIAQgChAYIAQQZCAFIAMQGCAEIAUQlwEgDCAJEBggDBBkIAQgDBCXASAEELABIwBBgAJrIgYkACAGIAQQXiAGQYABaiIQIARBgAFqIhIQXiAGEC0gEBAtIBAQfCAQEKkBIAYgEBB7IAYQPiAEIAYQESAGEDYgBhCpASASIAYQESAGQYACaiQAIAUgAxCWASAFIAQQGCAPIAkQlgEgDyAEEBggDCAKEJYBIAwgBBAYIAVBBTYCgAYgA0GACGokACAAEJ4BIAAgBRAHIAUgABBtIAAgCBAyIAAgCBAyIAAgBRAHIAhBwAdqIgQgABBpIAQQEyAEIAAQByANIAAgCxAbIAhByA1qIgMgDRBpIAMQngEgASAAEGkgARCeASAAIAMQbSAAIAEQByANIAAgCxAbIAMgDRBtIAMQngEgASAAEG0gARCeASAAIAMQbSAAIAEQByANIAAgCxAbIAMgDRBtIAMQngEgASAAEG0gASAIEDIgACADEG0gACABEAcgDSAAIAsQGyADIA0QbSANIAMgCxAbIAMgDRBtIAEgABBtIAEgCBAyIAEgCBAyIAMgARAHIAEgABBtIAEQngEgACADEG0gACABEAcgACAEEAcgABCcASAIQeAfaiQAIAcgAEGIBhDRARpBACEAIwBBgAJrIgEkACABEGwCQCAHIAEQegR/IAdBgAFqIAFBgAFqEHoFQQALRQ0AIAdBgAJqEIcBRQ0AIAdBgARqEIcBIQALIAFBgAJqJABBACAADQAaQX8LIAJBkBVqJAAgDkEoahC0ASAOQSBqELQBIA5BGGoQtAEgDkEwaiQAC58BAgJ/BX4gAEEwaiICKQMAIAFBP3GtIgSGIQUgACkDKCIGQTogAWtBP3GtIgiHIQdBBiEBA38gAiAFIAeENwMAIAFBAU0EfyAAIAApAwAgBIZC//////////8DgzcDACAAKQMwQiSHpwUgAUEBayEBIAJBEGsiA0EIaiECIAYgBIZC//////////8DgyEHIAMpAwAiBiAIhyEFDAELCxoLiAECA34DfyMAQRBrIgUkAAN+IAZBOEYEfiAFQRBqJAAgAwUgBSAAIAZqIgcpAwAiAiACQj+HIAGsIgIgAkI/hxAvIAcgBSkDACIEIAN8IgJC//////////8DgzcDACACIARUrSAFQQhqKQMAIANCP4d8fEIGhiACQjqIhCEDIAZBCGohBgwBCwsLigECA38BfiMAQUBqIgIkACACQQhqIgEgABBdIAEQQiACQThqIQFBBiEDQdwCIQACQAJAA0AgA0EATgRAIAEpAwAiBEIAUg0CIAFBCGshASAAQTprIQAgA0EBayEDDAELC0EAIQAMAQsDQCAEUA0BIABBAWohACAEQgJ/IQQMAAsACyACQUBrJAAgAAuHAQEDfyMAQYACayIBJAAgABCwASABIAAQXiABQYABaiICQTgQ0AEaIAFBATYCuAEgAUHAAWpBOBDQARogAUH4AWpBATYCACABIABBgAFqIgMQmgEgARA2IAIgARCZASACIAMQmgEgAyABEJkBIAMgABCaASAAIAIQmQEgABCwASABQYACaiQAC30CBH4BfyABQT9xrSECQTogAWtBP3GtIQRBACEBIAApAwAiBSEDA38gAUEwRgR/IAAgACkDMCAChzcDMCAFQn8gAoZCf4WDpwUgACABaiIGIAMgAocgBkEIaikDACIDIASGQv//////////A4OENwMAIAFBCGohAQwBCwsaC2kBBH8jAEHAAWsiASQAIAEgABCQASABQUBrIgIgABCQASABQYABaiIDIABBQGsiBBCQASABIAQQdyACIAAQdyACEEIgBCACEEogAxBDIAAgAxB3IAEQQiAAEEIgACABEEogAUHAAWokAAuCAQIBfwF+IABB8AAQ0AEhAANAIAJBOEYEQAJAIAAgASkDMCIDQjqHNwM4IAAgA0L//////////wODNwMwIABBQGshAEEAIQIDQCACQTBGDQEgACACakIANwMAIAJBCGohAgwACwALBSAAIAJqIAEgAmopAwA3AwAgAkEIaiECDAELCwtuAQZ+IAAgA0L/////D4MiBSABQv////8PgyIGfiIHIAUgAUIgiCIIfiIJIAYgA0IgiCIGfnwiBUIghnwiCjcDACAAIAcgClatIAYgCH4gBSAJVK1CIIYgBUIgiIR8fCABIAR+IAIgA358fDcDCAtqAgF/BX4gASkDCCAAKQMAhSIGQgGGQgGHIQdBACACa6whCAN+IANBOEYEfiAFBSAAIANqIgIgAikDACIEIAaFIAEgA2opAwAgBIUgCIOFIgQgB4U3AwAgBCAFhSEFIANBCGohAwwBCwsaC18CAX8EfkIBIQNBMCECA38gAkF4RgR/IARCAYYgA3ynQQFrBSABIAJqKQMAIgUgACACaikDACIGfUI6hyADgyAEhCEEIAJBCGshAiAFIAaFQgF9QjqHIAODIQMMAQsLC2kBBH8jAEGAAmsiAiQAIAIgARBeIAJBgAFqIgMgARBeIAIQLSADIAIQESAAIAMQmAEgAEGAAmoiBCADEJgBIABBgARqIgUgAxCYASAEIAEQpgEgBSACEKYBIABBBTYCgAYgAkGAAmokAAtiAQJ/IwBBQGoiAiQAIAAQQiACIAAQkAECQCABBEAgACABEK4BDAELIAAQOgtBACEBA0AgA0UEQCAAEExBASABQQFqIAFBAUYiAxshAQwBCwsgACACEEogABAeIAJBQGskAAtnAQJ/IwBBQGoiAyQAAkAgASABQR91IgJqIAJzIgIgACgCOGxBgICAEE4EQCADIAIQOSAAIAMQSgwBCyAAIAIQKRogACAAKAI4IAJsNgI4CyABQQBIBEAgABBDIAAQQgsgA0FAayQAC2cAIABBAXYgAHIiAEECdiAAciIAQQR2IAByIgBBCHYgAHIiAEEQdiAAciIAIABBAXZB1arVqgVxayIAQQJ2QbPmzJkDcSAAQbPmzJkDcWoiAEEEdiAAakGPnrz4AHFBgYKECGxBGHYLYQEDfyMAQYABayIBJAAgASAAEJABIAFBQGsiAkE4ENABGiABQQE2AnggASAAQUBrIgMQdyABEEMgAiABEK4BIAIgAxB3IAMgARCuASADIAAQdyAAIAIQrgEgAUGAAWokAAtVAgJ/AX4jAEHwAGsiASQAIAFBwLLAABBJIAApAwAhAyABQThqIgIgABBdIABBARAsIAIgARBgIAIQQiACQQEQLCAAIAIgA0ICgacQMCABQfAAaiQAC5gBAQZ/IwBBwAFrIgMkACAAIAEQXiAAEC0gA0GIAWoiBkHop8AAEEkjAEFAaiIEJAAgA0EIaiICQTgQ0AEiBUEBNgI4IAVBQGtBOBDQASAFQfgAakEBNgIAIAQgBhCOASAFIAQQrgEQwQEgBEFAayQAIAIQqQEgAhB8IAIQqQEgACABEBEgACACEJoBIAAQtQEgA0HAAWokAAtZAQJ/IwBBQGoiAyQAIABBOBDQASIAQQE2AjgCQCABQQBOBEAgACABEJMBDAELIANBCGoiAkHAssAAEEkgAiABEJMBIAIQQiAAIAIQagsgABBUIANBQGskAAu9CAEKfyMAQYABayIHJAAgB0EIaiIDQcCywAAQSSADQQEQlAECQAJAA0AgAUEwRgRAIANBMGogAykDMEIBhzcDACADQThqIQEDQCACRQ0EIAFCADcDACACQQFrIQIgAUEIaiEBDAALAAsgAUE4Rg0BIAFBOEcEQCABIANqIAEgA2oiBEEIaikDAEI5hkL//////////wODIAQpAwBCAYeENwMAIAVBAWohBSABQQhqIQEMAQsLQQdBB0GEm8AAEDsACyAFQQdB9JrAABA7AAsgA0EBEJQBIANBARAsIAdBQGshBUEAIQIjAEGgCmsiASQAIAFBOBDQASIBQUBrQTgQ0AEhBiABQYABakE4ENABGiABQcABakE4ENABGiABQYACakE4ENABGiABQcACakE4ENABGiABQYADakE4ENABGiABQcADakE4ENABGiABQYAEakE4ENABGiABQcAEakE4ENABGiABQYAFakE4ENABGiABQcAFakE4ENABGiABQYAGakE4ENABGiABQcAGakE4ENABGiABQYAHakE4ENABGiABQcAHakE4ENABGiABQfgHakEBNgIAIAFBuAdqQQE2AgAgAUH4BmpBATYCACABQbgGakEBNgIAIAFB+AVqQQE2AgAgAUG4BWpBATYCACABQfgEakEBNgIAIAFBuARqQQE2AgAgAUH4A2pBATYCACABQbgDakEBNgIAIAFB+AJqQQE2AgAgAUG4AmpBATYCACABQfgBakEBNgIAIAFBuAFqQQE2AgAgAUH4AGpBATYCACABQQE2AjggAUGBCGpB5wAQ0AEaIAFB6AhqIgQgABCQASAEEEIgAUGoCWoiBCADEF0gBBBCIAQQKkEDaiIIQQJ2IgNBAWohCQJAA0AgAiAJRgRAIAEQygEgBiABQegIahCuASABQeAJakE4ENABGiABQQE2ApgKQYB5IQIMAgsgAUGoCWoiBCAEQQQQjwEiChCUASAEEEIgAkHnAEcEQCABQYEIaiACaiAKOgAAIAFBqAlqQQQQLCACQQFqIQIMAQsLQecAQecAQaC0wAAQOwALA0AgAgRAIAFB4AlqIgQgASACaiIGQcAHahCuASAGQYAIaiIGIAQQrgEgBiABQegIahBKIAJBQGshAgwBCwsCQAJAAkACQCAIQZwDSQRAIAFBgQhqIANqLAAAIgJBEE8NASAFIAEgAkEGdGoQkAEgA0EBayICQeYASyEEA0AgAkF/Rg0DIAUQTCAFEEwgBRBMIAUQTCAEDQQgAUGBCGogAmotAAAiA0EQSQRAIAUgASADQQZ0ahBKIAJBAWshAgwBCwsgA0EYdEEYdUEQQeC0wAAQOwALIANB5wBBsLTAABA7AAsgAkEQQcC0wAAQOwALIAUQHiABQaAKaiQADAELIAJB5wBB0LTAABA7AAsgACAFEK4BIAdBgAFqJAALbAEBfyMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBHGpBAjYCACADQSxqQQE2AgAgA0ICNwIMIANB2LjAADYCCCADQQE2AiQgAyADQSBqNgIYIAMgAzYCKCADIANBBGo2AiAgA0EIaiACEGYAC2UBAn8gACAAKAIAIgJBCGoiAzYCACAAIAJBA3ZBPHFqQShqIgIgAUH/AXEgAigCAEEIdHI2AgACQAJAIANFBEAgAEEANgIAIAAgACgCBEEBajYCBAwBCyADQf8DcQ0BCyAAEA8LC1wAIABBOBDQASIAQQE2AjggAEFAa0E4ENABGiAAQfgAakEBNgIAIABBgAFqEFEgAEGAAmpBOBDQARogAEG4AmpBATYCACAAQcACakE4ENABGiAAQfgCakEBNgIAC1sBA38jAEGAAWsiASQAIAAQqQEgASAAEJABIAFBQGsiAiAAQUBrIgMQkAEgARBMIAIQTCABIAIQdyABQQAQMyAAIAEQSiABEEMgARBCIAMgARBKIAFBgAFqJAALYQEBfyMAQYACayIDJAAgABA9IAAgARCZASAAQYABaiIBIAIQmQEgAEGAAmoQtwEgABCpASADIAAQOCADQYABaiICIAEQXiACEC0gAiADEHpFBEAgABCbAQsgA0GAAmokAAtUAQF/IwBBIGsiAiQAIAIgACgCADYCBCACQRhqIAFBEGopAgA3AwAgAkEQaiABQQhqKQIANwMAIAIgASkCADcDCCACQQRqIAJBCGoQDCACQSBqJAALZwAjAEEwayIBJABBpLvAAC0AAARAIAFBHGpBATYCACABQgI3AgwgAUGQtsAANgIIIAFBATYCJCABIAA2AiwgASABQSBqNgIYIAEgAUEsajYCICABQQhqQbi2wAAQZgALIAFBMGokAAtiAgF+An8gACkDACEBA34gACACaiIDIAFC//////////8DgzcDACABQjqHIQEgAkEoRgR+IAAgACkDMCABfCIBNwMwIAFCJIcFIAJBCGohAiADQQhqKQMAIAF8IQEMAQsLGgt8AQV/IwBBQGoiAyQAIANBCGoiAkHAssAAEEkgAiAAKAI4QQFrEDUiBBAoA0AgAUE4RwRAIAAgAWoiBSABIAJqKQMAIAUpAwB9NwMAIAFBCGohAQwBCwsgAEEBIARBAWp0IgI2AjggAkH///8PSgRAIAAQHgsgA0FAayQAC3sBAn8gAEEoaiECA0AgAUGAAkYEQCAAQufMp9DW0Ouzu383AgggAEIANwIAIABBIGpCq7OP/JGjs/DbADcCACAAQRhqQv+kuYjFkdqCm383AgAgAEEQakLy5rvjo6f9p6V/NwIABSABIAJqQQA2AgAgAUEEaiEBDAELCwtUACAAQTgQ0AEiAEEBNgI4IABBQGtBOBDQARogAEH4AGpBATYCACAAQYABakE4ENABGiAAQbgBakEBNgIAIABBwAFqQTgQ0AEaIABB+AFqQQE2AgALWAECfyMAQUBqIgEkAAJAIAAQhgENACABQQEQOSAAQYABaiICIAEQWA0AIAJBABAzIAAgAhBKIAAQHiAAQUBrIgAgAhBKIAAQHiACIAEQrgELIAFBQGskAAtZAQJ/IwBBgAFrIgEkAAJAIAAQigENACABEFEgAEGAAmoiAiABEHoNACACED4gACACEBEgABC1ASAAQYABaiIAIAIQESAAELUBIAIgARCZAQsgAUGAAWokAAtbAgF+An8gACkDACEBA0AgACACaiIDIAFC//////////8DgzcDACABQjqHIQEgAkHgAEYEQCAAIAApA2ggAXw3A2gFIAJBCGohAiADQQhqKQMAIAF8IQEMAQsLC08BAX8gAEE4ENABGgJAA0AgAkEHRwRAIAJBB0YNAiAAIAEpAwA3AwAgAEEIaiEAIAFBCGohASACQQFqIQIMAQsLDwtBB0EHQeSawAAQOwALVAECfyMAQbABayICJAAgATQCOCAANAI4fkL///8PVQRAIAAQHgsgAkEIaiIDIAAgARAFIAJB+ABqIgEgAxBrIAAgARBqIABBAjYCOCACQbABaiQAC1EBAn8jAEFAaiIDJAAgAEE4ENABIgBBATYCOCAAQUBrQTgQ0AEgAEH4AGpBATYCACADIAEQjgEgACADEK4BIAMgAhCOASADEK4BIANBQGskAAvwDAIRfwh+IwBBsAFrIg8kACAANAI4IhIgEn5C////D1YEQCAAEB4LIwBB0AFrIgEkACAPQQhqIgZBCGpB0AAQ0AEaIAFBwAFqIAApAwAiFyAXQj+HIhYgFyAWEC8gBiABKQPAASISQv//////////A4M3AwAgAUHIAWopAwAiFUIGhiASQjqIhCETIBVCOoghGCAAQQhqIgwhDSAAIQlBASEKQQEhBwJAA0AgCkEERgRAIABBGGohCiAAQRBqIQkgAEEoaiEMIAApAzAhF0EHIQUgAUHIAGohCwNAIAVBC0kEQCABQUBrIAVBA3QiCCAAakEwaykDACISIBJCP4cgFyAXQj+HIhYQLyAFQQFqIg1BAXYhByALKQMAIRUgASkDQCESIAkhAiAMIQQgBUEFayIOIQMDQCADIAdJBEAgASACKQMAIhQgFEI/hyAEKQMAIhQgFEI/hxAvIAEpAwAiFCASfCISIBRUrSABQQhqKQMAIBV8fCEVIAJBCGohAiAEQQhrIQQgA0EBaiEDDAELCyAGIAhqIBJCAYYiFCATfCITQv//////////A4M3AwAgAUEwaiAAIA5BA3RqKQMAIhkgGUI/hyAXIBYQLyATIBRU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aikDADcDACACQQhqIQIMAQsLC4QJAg1/Cn4jAEFAaiILJAAgC0EIaiIJQcCywAAQSSMAQZACayICJAAgAEEwENABIQogAkHoAGpB8AAQ0AEaIAJB4AFqQTAQ0AEaIAoQcSACIAEiDCkDACIQQv3/8//P///5AX5C//////////8DgyISNwPYASACQdgAaiASQgAgCSkDACIXIBdCP4ciGBAvIBAgAikDWCIPfCITIA9UrSACQeAAaikDACAQQj+HfHwiEEI6hyABKQMIIg9CP4d8IA8gEEIGhiATQjqIhCITfCIQIBNUrXwhD0EBIQBCACETAkACQANAAkAgAEEHRgRAQQYhB0EAIQhBByEADAELIABBAXYiAUEBaiEGIAggAWshAyABQQN0IgFBCGohBCAHIAFrIQUgAkHIAGogCSAAQQN0Ig1qKQMAIhUgFUI/hyIWIBJCABAvIAJB0ABqKQMAIBAgECATfCIRVq0gDyAUfHx8IBEgAikDSHwiDyARVK18IRAgAEEBaiEBA0AgACAGTQRAIAJB2AFqIA1qIA9C/f/z/8////kBfkL//////////wODIhE3AwAgAkE4aiARQgAgFyAYEC8gAkEoaiARQgAgFSAWEC8gAkHoAGogAEEEdGoiACACQTBqKQMAIhE3AwggACACKQMoIhU3AwAgDyACKQM4IhZ8Ig8gFlStIAJBQGspAwAgEHx8IhBCOocgDCABQQN0aikDACIWQj+HfCAWIBBCBoYgD0I6iIQiD3wiECAPVK18IQ8gEyAVfCITIBVUrSARIBR8fCEUIAdBCGohByAIQQFqIQggASEADAMLIANBB08NAyACQRhqIAQgCWopAwAgBSAJaikDAH0iESARQj+HIAJB2AFqIg4gBWopAwAgBCAOaikDAH0iESARQj+HEC8gAikDGCIRIA98Ig8gEVStIAJBIGopAwAgEHx8IRAgBkEBaiEGIARBCGohBCAFQQhrIQUgA0EBayEDDAALAAsLA0ACQAJAIABBDUcEQCAHIABBAXYiBmshAyAIIAZBA3QiAWshBCABQQhqIQUgDyAUfCAQIBN8Ig8gEFStfCEQIABBAWohAQNAIAZBBUsNAyADQQdPDQIgAkEIaiAFIAlqKQMAIAQgCWpBMGopAwB9IhIgEkI/hyACIARqQYgCaikDACACQdgBaiAFaikDAH0iEiASQj+HEC8gAikDCCISIA98Ig8gElStIAJBEGopAwAgEHx8IRAgBkEBaiEGIARBCGshBCADQQFrIQMgBUEIaiEFDAALAAsgCiAQQv//////////A4M3AzAgAkGQAmokAAwECyADQQdBpJzAABA7AAsgAEEDdCAKakE4ayAPQv//////////A4M3AwAgEEI6hyAMIAFBA3RqKQMAIhJCP4d8IBIgEEIGhiAPQjqIhCIPfCIQIA9UrXwhDyAUIABBBHQgAmpBCGoiAEEIaikDAH0gEyAAKQMAIhJUrX0hFCAIQQhqIQggB0EBaiEHIBMgEn0hEyABIQAMAAsACyADQQdBlJzAABA7AAsgC0FAayQACy4BAX8jAEGAAWsiASQAIAAQRSABEFEgACABEJkBIABBgAFqELYBIAFBgAFqJAALMwAgACABEJYBIABBgAJqIAFBgAJqEJYBIABBgARqIAFBgARqEJYBIAAgASgCgAY2AoAGCygAIAAgASACEHIgAEFAayABQUBrIAIQciAAQYABaiABQYABaiACEHILLQAgACABIAIQjQEgAEGAAWogAUGAAWogAhCNASAAQYACaiABQYACaiACEI0BCycBAn8jAEFAaiICJAAgAkEIaiIDIAEQvgEgACADEI4BIAJBQGskAAsiAQF/A0AgAUE4RwRAIAAgAWpCADcDACABQQhqIQEMAQsLCyUAIAAgASACEDAgAEEAIAJrIAAoAjgiACABKAI4c3EgAHM2AjgLJwAgACAAKAIEQQFxIAFyQQJyNgIEIAAgAWoiACAAKAIEQQFyNgIECyMAA0AgAgRAIAAgAS0AABA8IAJBAWshAiABQQFqIQEMAQsLCywAIAAQiwEgACABEJYBIABBgAJqIAIQlgEgAEGABGogAxCWASAAQQU2AoAGCyMBAX8jAEFAaiIBJAAgASAAEJABIAEQHiABEFcgAUFAayQACykAIAAgARBgIAAgACgCOCABKAI4aiIBNgI4IAFB////D0oEQCAAEB4LCyUAIAAgARCuASAAQUBrIAFBQGsQrgEgAEGAAWogAUGAAWoQrgELKAEBfyMAQYACayICJAAgAiABEIwBIAIQKyAAIAIQlwEgAkGAAmokAAscAQF/IAAgARBYBH8gAEFAayABQUBrEFgFQQALCycBAX8jAEGAAWsiAiQAIAIgARBeIAIQNiAAIAIQmgEgAkGAAWokAAtRAQN/IwBBgAFrIgEkACABIAAQXiMAQUBqIgIkACACIAAQkAEgACAAQUBrIgMQrgEgABBDIAMgAhCuASACQUBrJAAgACABEJoBIAFBgAFqJAALJwAgACABEJkBIABBgAFqIAFBgAFqEJkBIABBgAJqIAFBgAJqEJkBCyUBAX8jAEFAaiICJAAgAiABEJABIAIQQyAAIAIQdyACQUBrJAALHgACQCAAQQRqKAIARQ0AIAAoAgAiAEUNACAAEAQLCyABAX8CQCAAKAIEIgFFDQAgAEEIaigCAEUNACABEAQLC4MBACACIANJBEAjAEEwayIAJAAgACACNgIEIAAgAzYCACAAQRxqQQI2AgAgAEEsakEBNgIAIABCAjcCDCAAQYS7wAA2AgggAEEBNgIkIAAgAEEgajYCGCAAIABBBGo2AiggACAANgIgIABBCGpBlLvAABBmAAsgACADNgIEIAAgATYCAAtIAQJ/A0AgAUE4RwRAIAAgAWoiAiACKQMAQgGGNwMAIAFBCGohAQwBCwsgACAAKAI4QQF0IgE2AjggAUH///8PSgRAIAAQHgsLIwAgAiACKAIEQX5xNgIEIAAgAUEBcjYCBCAAIAFqIAE2AgALIgEBfyMAQfAAayICJAAgAiABEC4gACACEGsgAkHwAGokAAseACAAIAFBA3I2AgQgACABaiIAIAAoAgRBAXI2AgQLFgEBfyAAEHYEfyAAQYABahB2BUEACwsYAQF/IAAQiAEEfyAAQYABahCIAQVBAAsLFQEBfyAAEHYEfyAAQUBrEHYFQQALCxoBAX8gABBWIgEgAEFAaxBWIAFzIAAQdnFzCxgBAX8gABCIAQR/IABBgAJqEIgBBUEACwseACAAEEUgAEGAAmoQRSAAQYAEahBFIABBADYCgAYLHAAgABBFIAAgARCZASAAQYABaiABQYABahCZAQsYACAAIAEgAhByIABBQGsgAUFAayACEHILGgAgAEE4ENABIgBBATYCOCAAIAEQaiAAEFQLFAAgABBCIAAoAgBBfyABdEF/c3ELGQAgAEE4ENABIgAgARBqIAAgASgCODYCOAsZAQF/IAAoAhAiAQR/IAEFIABBFGooAgALCxgAIAAQwQEgAEFAaxDKASAAQYABahDBAQsUACAAEEIgACAAKQMAIAGsfDcDAAsUACAAEEIgACAAKQMAIAGsfTcDAAsYACAAEEUgACABEJkBIABBgAFqIAIQmQELGAAgACABEJkBIABBgAFqIAFBgAFqEJkBCxgAIAAgARCaASAAQYABaiABQYABahCaAQsYACAAEKQBIABBgAFqIgAQpAEgACABEBELFgAgACABEK4BIABBQGsgAUFAaxCuAQsUACAAIAEQdyAAQUBrIAFBQGsQdwsZACAAELYBIABBgAFqELcBIABBgAJqELYBCxkAIAAQrwEgAEGAAmoQrwEgAEGABGoQrwELGQAgABCwASAAQYACahCwASAAQYAEahCwAQsZACAAELIBIABBgAJqEMkBIABBgARqELIBCxIAQQBBGSAAQQF2ayAAQR9GGwsWACAAIAFBAXI2AgQgACABaiABNgIACxYAIAAQRSAAIAEQmQEgAEGAAWoQtgELFgAgAEGAAWoiABCpASAAEDYgABCpAQsQACAAIAFqQQFrQQAgAWtxCw8AIABBQGsiABBDIAAQQgsUACAAIAEQmQEgAEGAAWogAhCZAQsSACAAIAEQESAAQYABaiABEBELFAAgACABEKoBIABBgAFqIAEQqgELCwAgAQRAIAAQBAsLDQAgABBCIABBQGsQQgsRACAAIAEQSiAAQUBrIAEQSgsRACAAIAEQNCAAQUBrIAEQNAu+BQEHfwJ/AkACQEGAgHxBCEEIEKMBQRRBCBCjAWpBEEEIEKMBamtBd3FBA2siAkEAQRBBCBCjAUECdGsiBCACIARJGyABTQ0AQRAgAUEEakEQQQgQowFBBWsgAUsbQQgQowEhAiAAENUBIgQgBBDLASIFENIBIQMCQAJAAkACQAJAAkACQCAEEMQBRQRAIAIgBU0NASADQfi+wAAoAgBGDQIgA0H0vsAAKAIARg0DIAMQvAENByADEMsBIgYgBWoiByACSQ0HIAcgAmshBSAGQYACSQ0EIAMQFwwFCyAEEMsBIQMgAkGAAkkNBiADIAJrQYGACEkgAkEEaiADTXENBSAEKAIAGiACQR9qQYCABBCjARoMBgtBEEEIEKMBIAUgAmsiA0sNBCAEIAIQ0gEhBSAEIAIQcyAFIAMQcyAFIAMQDQwEC0HwvsAAKAIAIAVqIgUgAk0NBCAEIAIQ0gEhAyAEIAIQcyADIAUgAmsiAkEBcjYCBEHwvsAAIAI2AgBB+L7AACADNgIADAMLQey+wAAoAgAgBWoiBSACSQ0DAkBBEEEIEKMBIAUgAmsiA0sEQCAEIAUQc0EAIQNBACEFDAELIAQgAhDSASIFIAMQ0gEhBiAEIAIQcyAFIAMQoAEgBiAGKAIEQX5xNgIEC0H0vsAAIAU2AgBB7L7AACADNgIADAILIANBDGooAgAiCCADQQhqKAIAIgNHBEAgAyAINgIMIAggAzYCCAwBC0Hcu8AAQdy7wAAoAgBBfiAGQQN2d3E2AgALQRBBCBCjASAFTQRAIAQgAhDSASEDIAQgAhBzIAMgBRBzIAMgBRANDAELIAQgBxBzCyAEDQILIAEQACICRQ0AIAIgACABIAQQywFBeEF8IAQQxAEbaiICIAEgAkkbENEBIAAQBAwCC0EADAELIAQQxAEaIAQQ1AELCw8AIABBAXQiAEEAIABrcgsSACAAIAEQaiAAIAEoAjg2AjgLEAAgABC1ASAAQYABahC1AQsQACAAEKkBIABBgAFqEKkBCxAAIAAQtgEgAEGAAWoQtgELDwAgAEGAAWoQNiAAELABCxAAIAAQuAEgAEGAAWoQuAELDwAgACgCACAAKAIEEKgBCw0AIAAQHiAAQUBrEB4LDwAgABDBASAAQUBrEMEBCw8AIAAQygEgAEFAaxDBAQsPACAAEIIBIABBQGsQggELgwMBA38CfwJAAkACQAJAIAFBCU8EQEEQQQgQowEgAUsNAQwCCyAAEAAhAwwCC0EQQQgQowEhAQtBgIB8QQhBCBCjAUEUQQgQowFqQRBBCBCjAWprQXdxQQNrIgRBAEEQQQgQowFBAnRrIgIgAiAESxsgAWsgAE0NACABQRAgAEEEakEQQQgQowFBBWsgAEsbQQgQowEiBGpBEEEIEKMBakEEaxAAIgJFDQAgAhDVASEAAkAgAUEBayIDIAJxRQRAIAAhAQwBCyACIANqQQAgAWtxENUBIQJBEEEIEKMBIQMgABDLASACQQAgASACIABrIANLG2oiASAAayICayEDIAAQxAFFBEAgASADEHMgACACEHMgACACEA0MAQsgACgCACEAIAEgAzYCBCABIAAgAmo2AgALIAEQxAENASABEMsBIgJBEEEIEKMBIARqTQ0BIAEgBBDSASEAIAEgBBBzIAAgAiAEayIEEHMgACAEEA0MAQsgAwwBCyABENQBIAEQxAEaCwuOBAEFfyAAKAIAIQAjAEEQayIEJAACQAJ/AkAgAUGAAU8EQCAEQQA2AgwgAUGAEE8NASAEIAFBP3FBgAFyOgANIAQgAUEGdkHAAXI6AAxBAgwCCyAAKAIIIgIgAEEEaigCAEYEQCMAQSBrIgMkAAJAAkAgAiACQQFqIgVLDQAgAEEEaigCACICQQF0IgYgBSAFIAZJGyIFQQggBUEISxshBQJAIAIEQCADQRhqQQE2AgAgAyACNgIUIAMgACgCADYCEAwBCyADQQA2AhALIAMgBSADQRBqECYgAygCAARAIANBCGooAgAiAEUNASADKAIEIAAQzwEACyADKAIEIQIgAEEEaiAFNgIAIAAgAjYCACADQSBqJAAMAQsQZQALIAAoAgghAgsgACACQQFqNgIIIAAoAgAgAmogAToAAAwCCyABQYCABE8EQCAEIAFBP3FBgAFyOgAPIAQgAUESdkHwAXI6AAwgBCABQQZ2QT9xQYABcjoADiAEIAFBDHZBP3FBgAFyOgANQQQMAQsgBCABQT9xQYABcjoADiAEIAFBDHZB4AFyOgAMIAQgAUEGdkE/cUGAAXI6AA1BAwshASABIABBBGooAgAgAEEIaiIDKAIAIgJrSwRAIAAgAiABECIgAygCACECCyAAKAIAIAJqIARBDGogARDRARogAyABIAJqNgIACyAEQRBqJABBAAsTACAAQZS3wAA2AgQgACABNgIACw0AIAAtAARBAnFBAXYL5QYCDH8CfiMAQbAcayIDJAACQAJAAkAgAhBXDQAgARCGAQ0AIANBCGoQZyADQcgBaiIFIAIQXQNAIARBOEcEQCAEIAVqIgYgBikDACACIARqKQMAhDcDACAEQQhqIQQMAQsLIAUQKiEHQQAhBCADQYACakE4ENABGiADQbgCakE4ENABGiADQfACaiIFEGcgA0GwBGoQZyADQfARaiIIEGcgA0GwE2oiCRBnIANB8BRqIgoQZyADQbAWaiILEGcgA0HwF2oiDBBnIANBsBlqIg0QZyADQfAaaiIGEGcgA0GwEGoQZyADQfAFaiIOIAhBwAEQ0QEaIANBsAdqIAlBwAEQ0QEaIANB8AhqIApBwAEQ0QEaIANBsApqIAtBwAEQ0QEaIANB8AtqIAxBwAEQ0QEaIANBsA1qIA1BwAEQ0QEaIANB8A5qIAZBwAEQ0QEaIAZB5wAQ0AEaIAUgARB4IAUQFCAOIAEQeAwBCyAAEGcMAQsDQCAEQcAKRwRAIANBsARqIgUgA0HwBWogBGoiBhB4IAZBwAFqIgYgBRB4IAYgA0HwAmoQCSAEQcABaiEEDAELCyADQbgCaiIEIAIQaiADKQO4AiEPIARBARCTASAEEEIgAykDuAIhECADQYACaiICIAQQaiACQQEQkwEgAhBCIAQgAiAPQgKBpxAwIANB8AJqIgQgASAQQgKBpxBuIAdBA2oiBkECdiIBQQFqIQIgA0GwBGogBBB4QQAhBAJAAkADQCADQbgCakEFEI8BIQUgAiAERgRAIAZBmANPDQIgA0HwGmogAmogBToAACADQQhqIANB8AVqIAVBGHRBGHUQHQwDCyAEQecARwRAIANB8BpqIARqIAVBEGsiBzoAACADQbgCaiIFIAdBGHRBGHUQlAEgBRBCIAVBBBAsIARBAWohBAwBCwtB5wBB5wBBuIHAABA7AAsgAkHnAEHIgcAAEDsACwNAIAFBf0cEQCADQfACaiIEIANB8AVqIANB8BpqIAFqLAAAEB0gAUEBayEBIANBCGoiAhAUIAIQFCACEBQgAhAUIAIgBBAJDAELCyMAQcABayIBJAAgARBnIAEgA0GwBGoQeCABEKQBIANBCGoiAiABEAkgAUHAAWokACAAIAJBwAEQ0QEaCyADQbAcaiQAC1ABAX8gAEE4ENABIQACQANAIAJBMEYNASAAQQgQKCACQTBHBEAgACAAKQMAIAEgAmoxAAB8NwMAIAJBAWohAgwBCwsgAkEwQaSbwAAQOwALCw0AIAAQNiAAIAEQmgELDAAgACABEGogABBUCw0AIAAQcSAAQQE2AjgLDAAgABBDIAAgARB3CwoAQQAgAGsgAHELCwAgAC0ABEEDcUULDAAgACABQQNyNgIECw0AIAAoAgAgACgCBGoLDgAgACgCABoDQAwACwALgQgCCX8CfiAANQIAIQsjAEEwayIGJABBJyEAAkAgC0KQzgBUBEAgCyEMDAELA0AgBkEJaiAAaiICQQRrIAsgC0KQzgCAIgxCkM4Afn2nIgNB//8DcUHkAG4iBEEBdEHouMAAai8AADsAACACQQJrIAMgBEHkAGxrQf//A3FBAXRB6LjAAGovAAA7AAAgAEEEayEAIAtC/8HXL1YgDCELDQALCyAMpyICQeMASwRAIABBAmsiACAGQQlqaiAMpyICIAJB//8DcUHkAG4iAkHkAGxrQf//A3FBAXRB6LjAAGovAAA7AAALAkAgAkEKTwRAIABBAmsiACAGQQlqaiACQQF0Qei4wABqLwAAOwAADAELIABBAWsiACAGQQlqaiACQTBqOgAACwJ/IAZBCWogAGohCEErQYCAxAAgASgCACIDQQFxIgIbIQQgAkEnIABrIglqIQJBlLjAAEEAIANBBHEbIQUCQAJAIAEoAghFBEBBASEAIAEgBCAFEFINAQwCCwJAAkACQAJAIAIgAUEMaigCACIDSQRAIAEtAABBCHENBEEAIQAgAyACayICIQNBASABLQAgIgcgB0EDRhtBA3FBAWsOAgECAwtBASEAIAEgBCAFEFINBAwFC0EAIQMgAiEADAELIAJBAXYhACACQQFqQQF2IQMLIABBAWohACABQRxqKAIAIQcgASgCBCECIAEoAhghCgJAA0AgAEEBayIARQ0BIAogAiAHKAIQEQQARQ0AC0EBDAQLQQEhACACQYCAxABGDQEgASAEIAUQUg0BIAEoAhggCCAJIAEoAhwoAgwRBQANASABKAIcIQQgASgCGCEBQQAhAAJ/A0AgAyAAIANGDQEaIABBAWohACABIAIgBCgCEBEEAEUNAAsgAEEBawsgA0khAAwBCyABKAIEIQcgAUEwNgIEIAEtACAhCkEBIQAgAUEBOgAgIAEgBCAFEFINAEEAIQAgAyACayICIQMCQAJAAkBBASABLQAgIgQgBEEDRhtBA3FBAWsOAgABAgtBACEDIAIhAAwBCyACQQF2IQAgAkEBakEBdiEDCyAAQQFqIQAgAUEcaigCACECIAEoAgQhBCABKAIYIQUCQANAIABBAWsiAEUNASAFIAQgAigCEBEEAEUNAAtBAQwDC0EBIQAgBEGAgMQARg0AIAEoAhggCCAJIAEoAhwoAgwRBQANACABKAIcIQAgASgCGCEFQQAhAgJAA0AgAiADRg0BIAJBAWohAiAFIAQgACgCEBEEAEUNAAtBASEAIAJBAWsgA0kNAQsgASAKOgAgIAEgBzYCBEEADAILIAAMAQsgASgCGCAIIAkgAUEcaigCACgCDBEFAAsgBkEwaiQACwsAIAAQNiAAELABCysCAX8BfkIBIQIDQCAAIAFq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AAANAEHgs8AAC8EHYXR0ZW1wdCB0byBkaXZpZGUgYnkgemVybwAAAAAAAABhdHRlbXB0IHRvIGRpdmlkZSB3aXRoIG92ZXJmbG93ALAZEAASAAAADAIAAA0AAACwGRAAEgAAABgCAAAmAAAAsBkQABIAAAAYAgAAIwAAALAZEAASAAAAHgIAABcAAACwGRAAEgAAAB4CAAAUAAAAqqr//////gHu//9UrP//AupBYg9rDyoBw5z9ShTOEwJLd2TXrEtDAu3pxpKm+V8Cox4RoAEAAAADAAAABAAAAAQAAAAEAAAABQAAAAYAAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlbWVtb3J5IGFsbG9jYXRpb24gb2YgIGJ5dGVzIGZhaWxlZAoAAOsaEAAVAAAAABsQAA4AAABsaWJyYXJ5L3N0ZC9zcmMvYWxsb2MucnMgGxAAGAAAAEkBAAAJAAAAbGlicmFyeS9zdGQvc3JjL3Bhbmlja2luZy5yc0gbEAAcAAAARgIAAB8AAABIGxAAHAAAAEcCAAAeAAAABwAAAAwAAAAEAAAACAAAAAMAAAAIAAAABAAAAAkAAAAKAAAAEAAAAAQAAAALAAAADAAAAAMAAAAIAAAABAAAAA0AAAAOAAAAbGlicmFyeS9hbGxvYy9zcmMvcmF3X3ZlYy5yc2NhcGFjaXR5IG92ZXJmbG93AAAA6BsQABEAAADMGxAAHAAAAAUCAAAFAAAAEAAAAAAAAAABAAAAEQAAAGluZGV4IG91dCBvZiBib3VuZHM6IHRoZSBsZW4gaXMgIGJ1dCB0aGUgaW5kZXggaXMgAAAkHBAAIAAAAEQcEAASAAAAMDAwMTAyMDMwNDA1MDYwNzA4MDkxMDExMTIxMzE0MTUxNjE3MTgxOTIwMjEyMjIzMjQyNTI2MjcyODI5MzAzMTMyMzMzNDM1MzYzNzM4Mzk0MDQxNDI0MzQ0NDU0NjQ3NDg0OTUwNTE1MjUzNTQ1NTU2NTc1ODU5NjA2MTYyNjM2NDY1NjY2NzY4Njk3MDcxNzI3Mzc0NzU3Njc3Nzg3OTgwODE4MjgzODQ4NTg2ODc4ODg5OTA5MTkyOTM5NDk1OTY5Nzk4OTkgb3V0IG9mIHJhbmdlIGZvciBzbGljZSBvZiBsZW5ndGggbGlicmFyeS9jb3JlL3NyYy9zbGljZS9pbmRleC5yc3JhbmdlIGVuZCBpbmRleCAAAABxHRAAEAAAADAdEAAiAAAAUh0QAB8AAABJAAAABQB7CXByb2R1Y2VycwIIbGFuZ3VhZ2UBBFJ1c3QADHByb2Nlc3NlZC1ieQMFcnVzdGMdMS42MS4wIChmZTViMTNkNjggMjAyMi0wNS0xOCkGd2FscnVzBjAuMTkuMAx3YXNtLWJpbmRnZW4SMC4yLjgxICgwNjJhYTVmNzAp`;\n","import init, { bls_init, bls_verify } from '../vendor/bls/bls';\n\nexport let verify: (pk: Uint8Array, sig: Uint8Array, msg: Uint8Array) => boolean;\n\n/**\n *\n * @param pk primary key: Uint8Array\n * @param sig signature: Uint8Array\n * @param msg message: Uint8Array\n * @returns Promise resolving a boolean\n */\nexport async function blsVerify(\n pk: Uint8Array,\n sig: Uint8Array,\n msg: Uint8Array,\n): Promise {\n if (!verify) {\n await init();\n if (bls_init() !== 0) {\n throw new Error('Cannot initialize BLS');\n }\n verify = (pk1, sig1, msg1) => {\n // Reorder things from what the WASM expects (sig, m, w).\n return bls_verify(sig1, msg1, pk1) === 0;\n };\n }\n return verify(pk, sig, msg);\n}\n","/**\n * Concatenate multiple array buffers.\n * @param buffers The buffers to concatenate.\n */\nexport function concat(...buffers: ArrayBuffer[]): ArrayBuffer {\n const result = new Uint8Array(buffers.reduce((acc, curr) => acc + curr.byteLength, 0));\n let index = 0;\n for (const b of buffers) {\n result.set(new Uint8Array(b), index);\n index += b.byteLength;\n }\n return result.buffer;\n}\n\n/**\n * Transforms a buffer to an hexadecimal string. This will use the buffer as an Uint8Array.\n * @param buffer The buffer to return the hexadecimal string of.\n */\nexport function toHex(buffer: ArrayBuffer): string {\n return [...new Uint8Array(buffer)].map(x => x.toString(16).padStart(2, '0')).join('');\n}\n\nconst hexRe = new RegExp(/^([0-9A-F]{2})*$/i);\n\n/**\n * Transforms a hexadecimal string into an array buffer.\n * @param hex The hexadecimal string to use.\n */\nexport function fromHex(hex: string): ArrayBuffer {\n if (!hexRe.test(hex)) {\n throw new Error('Invalid hexadecimal string.');\n }\n const buffer = [...hex]\n .reduce((acc, curr, i) => {\n // tslint:disable-next-line:no-bitwise\n acc[(i / 2) | 0] = (acc[(i / 2) | 0] || '') + curr;\n return acc;\n }, [] as string[])\n .map(x => Number.parseInt(x, 16));\n\n return new Uint8Array(buffer).buffer;\n}\n\nexport function compare(b1: ArrayBuffer, b2: ArrayBuffer): number {\n if (b1.byteLength !== b2.byteLength) {\n return b1.byteLength - b2.byteLength;\n }\n\n const u1 = new Uint8Array(b1);\n const u2 = new Uint8Array(b2);\n for (let i = 0; i < u1.length; i++) {\n if (u1[i] !== u2[i]) {\n return u1[i] - u2[i];\n }\n }\n return 0;\n}\n\n/**\n * Returns a true ArrayBuffer from a Uint8Array, as Uint8Array.buffer is unsafe.\n * @param {Uint8Array} arr Uint8Array to convert\n * @returns ArrayBuffer\n */\nexport function uint8ToBuf(arr: Uint8Array): ArrayBuffer {\n return new DataView(arr.buffer, arr.byteOffset, arr.byteLength).buffer;\n}\n","/**\n * Concatenate multiple array buffers.\n * @param buffers The buffers to concatenate.\n */\nexport function concat(...buffers: ArrayBuffer[]): ArrayBuffer {\n const result = new Uint8Array(buffers.reduce((acc, curr) => acc + curr.byteLength, 0));\n let index = 0;\n for (const b of buffers) {\n result.set(new Uint8Array(b), index);\n index += b.byteLength;\n }\n return result;\n}\n\n/**\n * Returns an hexadecimal representation of an array buffer.\n * @param bytes The array buffer.\n */\nexport function toHexString(bytes: ArrayBuffer): string {\n return new Uint8Array(bytes).reduce((str, byte) => str + byte.toString(16).padStart(2, '0'), '');\n}\n\n/**\n * Return an array buffer from its hexadecimal representation.\n * @param hexString The hexadecimal string.\n */\nexport function fromHexString(hexString: string): ArrayBuffer {\n return new Uint8Array((hexString.match(/.{1,2}/g) ?? []).map(byte => parseInt(byte, 16)));\n}\n\n/**\n * A class that abstracts a pipe-like ArrayBuffer.\n */\nexport class PipeArrayBuffer {\n /**\n * The reading view. It's a sliding window as we read and write, pointing to the buffer.\n * @private\n */\n private _view: Uint8Array;\n\n /**\n * The actual buffer containing the bytes.\n * @private\n */\n private _buffer: ArrayBuffer;\n\n /**\n * Creates a new instance of a pipe\n * @param buffer an optional buffer to start with\n * @param length an optional amount of bytes to use for the length.\n */\n constructor(buffer?: ArrayBuffer, length = buffer?.byteLength || 0) {\n this._buffer = buffer || new ArrayBuffer(0);\n this._view = new Uint8Array(this._buffer, 0, length);\n }\n\n get buffer(): ArrayBuffer {\n // Return a copy of the buffer.\n return this._view.slice();\n }\n\n get byteLength(): number {\n return this._view.byteLength;\n }\n\n /**\n * Read `num` number of bytes from the front of the pipe.\n * @param num The number of bytes to read.\n */\n public read(num: number): ArrayBuffer {\n const result = this._view.subarray(0, num);\n this._view = this._view.subarray(num);\n return result.slice().buffer;\n }\n\n public readUint8(): number | undefined {\n const result = this._view[0];\n this._view = this._view.subarray(1);\n return result;\n }\n\n /**\n * Write a buffer to the end of the pipe.\n * @param buf The bytes to write.\n */\n public write(buf: ArrayBuffer): void {\n const b = new Uint8Array(buf);\n const offset = this._view.byteLength;\n if (this._view.byteOffset + this._view.byteLength + b.byteLength >= this._buffer.byteLength) {\n // Alloc grow the view to include the new bytes.\n this.alloc(b.byteLength);\n } else {\n // Update the view to include the new bytes.\n this._view = new Uint8Array(\n this._buffer,\n this._view.byteOffset,\n this._view.byteLength + b.byteLength,\n );\n }\n\n this._view.set(b, offset);\n }\n\n /**\n * Whether or not there is more data to read from the buffer\n */\n public get end(): boolean {\n return this._view.byteLength === 0;\n }\n\n /**\n * Allocate a fixed amount of memory in the buffer. This does not affect the view.\n * @param amount A number of bytes to add to the buffer.\n */\n public alloc(amount: number) {\n // Add a little bit of exponential growth.\n // tslint:disable-next-line:no-bitwise\n const b = new ArrayBuffer(((this._buffer.byteLength + amount) * 1.2) | 0);\n const v = new Uint8Array(b, 0, this._view.byteLength + amount);\n v.set(this._view);\n this._buffer = b;\n this._view = v;\n }\n}\n","/**\n * Hashes a string to a number. Algorithm can be found here:\n * https://caml.inria.fr/pub/papers/garrigue-polymorphic_variants-ml98.pdf\n * @param s\n */\nfunction idlHash(s: string): number {\n const utf8encoder = new TextEncoder();\n const array = utf8encoder.encode(s);\n\n let h = 0;\n for (const c of array) {\n h = (h * 223 + c) % 2 ** 32;\n }\n return h;\n}\n\n/**\n *\n * @param label string\n * @returns number representing hashed label\n */\nexport function idlLabelToId(label: string): number {\n if (/^_\\d+_$/.test(label) || /^_0x[0-9a-fA-F]+_$/.test(label)) {\n const num = +label.slice(1, -1);\n if (Number.isSafeInteger(num) && num >= 0 && num < 2 ** 32) {\n return num;\n }\n }\n return idlHash(label);\n}\n","/* eslint-disable no-constant-condition */\n// tslint:disable:no-bitwise\n// Note: this file uses buffer-pipe, which on Node only, uses the Node Buffer\n// implementation, which isn't compatible with the NPM buffer package\n// which we use everywhere else. This means that we have to transform\n// one into the other, hence why every function that returns a Buffer\n// actually return `new Buffer(pipe.buffer)`.\n// TODO: The best solution would be to have our own buffer type around\n// Uint8Array which is standard.\nimport { PipeArrayBuffer as Pipe } from './buffer';\n\nfunction eob(): never {\n throw new Error('unexpected end of buffer');\n}\n\n/**\n *\n * @param pipe Pipe from buffer-pipe\n * @param num number\n * @returns Buffer\n */\nexport function safeRead(pipe: Pipe, num: number): ArrayBuffer {\n if (pipe.byteLength < num) {\n eob();\n }\n return pipe.read(num);\n}\n\n/**\n * @param pipe\n */\nexport function safeReadUint8(pipe: Pipe): number {\n const byte = pipe.readUint8();\n if (byte === undefined) {\n eob();\n }\n return byte;\n}\n\n/**\n * Encode a positive number (or bigint) into a Buffer. The number will be floored to the\n * nearest integer.\n * @param value The number to encode.\n */\nexport function lebEncode(value: bigint | number): ArrayBuffer {\n if (typeof value === 'number') {\n value = BigInt(value);\n }\n\n if (value < BigInt(0)) {\n throw new Error('Cannot leb encode negative values.');\n }\n\n const byteLength = (value === BigInt(0) ? 0 : Math.ceil(Math.log2(Number(value)))) + 1;\n const pipe = new Pipe(new ArrayBuffer(byteLength), 0);\n while (true) {\n const i = Number(value & BigInt(0x7f));\n value /= BigInt(0x80);\n if (value === BigInt(0)) {\n pipe.write(new Uint8Array([i]));\n break;\n } else {\n pipe.write(new Uint8Array([i | 0x80]));\n }\n }\n\n return pipe.buffer;\n}\n\n/**\n * Decode a leb encoded buffer into a bigint. The number will always be positive (does not\n * support signed leb encoding).\n * @param pipe A Buffer containing the leb encoded bits.\n */\nexport function lebDecode(pipe: Pipe): bigint {\n let weight = BigInt(1);\n let value = BigInt(0);\n let byte;\n\n do {\n byte = safeReadUint8(pipe);\n value += BigInt(byte & 0x7f).valueOf() * weight;\n weight *= BigInt(128);\n } while (byte >= 0x80);\n\n return value;\n}\n\n/**\n * Encode a number (or bigint) into a Buffer, with support for negative numbers. The number\n * will be floored to the nearest integer.\n * @param value The number to encode.\n */\nexport function slebEncode(value: bigint | number): ArrayBuffer {\n if (typeof value === 'number') {\n value = BigInt(value);\n }\n\n const isNeg = value < BigInt(0);\n if (isNeg) {\n value = -value - BigInt(1);\n }\n const byteLength = (value === BigInt(0) ? 0 : Math.ceil(Math.log2(Number(value)))) + 1;\n const pipe = new Pipe(new ArrayBuffer(byteLength), 0);\n while (true) {\n const i = getLowerBytes(value);\n value /= BigInt(0x80);\n\n // prettier-ignore\n if ( ( isNeg && value === BigInt(0) && (i & 0x40) !== 0)\n || (!isNeg && value === BigInt(0) && (i & 0x40) === 0)) {\n pipe.write(new Uint8Array([i]));\n break;\n } else {\n pipe.write(new Uint8Array([i | 0x80]));\n }\n }\n\n function getLowerBytes(num: bigint): number {\n const bytes = num % BigInt(0x80);\n if (isNeg) {\n // We swap the bits here again, and remove 1 to do two's complement.\n return Number(BigInt(0x80) - bytes - BigInt(1));\n } else {\n return Number(bytes);\n }\n }\n return pipe.buffer;\n}\n\n/**\n * Decode a leb encoded buffer into a bigint. The number is decoded with support for negative\n * signed-leb encoding.\n * @param pipe A Buffer containing the signed leb encoded bits.\n */\nexport function slebDecode(pipe: Pipe): bigint {\n // Get the size of the buffer, then cut a buffer of that size.\n const pipeView = new Uint8Array(pipe.buffer);\n let len = 0;\n for (; len < pipeView.byteLength; len++) {\n if (pipeView[len] < 0x80) {\n // If it's a positive number, we reuse lebDecode.\n if ((pipeView[len] & 0x40) === 0) {\n return lebDecode(pipe);\n }\n break;\n }\n }\n\n const bytes = new Uint8Array(safeRead(pipe, len + 1));\n let value = BigInt(0);\n for (let i = bytes.byteLength - 1; i >= 0; i--) {\n value = value * BigInt(0x80) + BigInt(0x80 - (bytes[i] & 0x7f) - 1);\n }\n return -value - BigInt(1);\n}\n\n/**\n *\n * @param value bigint or number\n * @param byteLength number\n * @returns Buffer\n */\nexport function writeUIntLE(value: bigint | number, byteLength: number): ArrayBuffer {\n if (BigInt(value) < BigInt(0)) {\n throw new Error('Cannot write negative values.');\n }\n return writeIntLE(value, byteLength);\n}\n\n/**\n *\n * @param value\n * @param byteLength\n */\nexport function writeIntLE(value: bigint | number, byteLength: number): ArrayBuffer {\n value = BigInt(value);\n\n const pipe = new Pipe(new ArrayBuffer(Math.min(1, byteLength)), 0);\n let i = 0;\n let mul = BigInt(256);\n let sub = BigInt(0);\n let byte = Number(value % mul);\n pipe.write(new Uint8Array([byte]));\n while (++i < byteLength) {\n if (value < 0 && sub === BigInt(0) && byte !== 0) {\n sub = BigInt(1);\n }\n byte = Number((value / mul - sub) % BigInt(256));\n pipe.write(new Uint8Array([byte]));\n mul *= BigInt(256);\n }\n\n return pipe.buffer;\n}\n\n/**\n *\n * @param pipe Pipe from buffer-pipe\n * @param byteLength number\n * @returns bigint\n */\nexport function readUIntLE(pipe: Pipe, byteLength: number): bigint {\n let val = BigInt(safeReadUint8(pipe));\n let mul = BigInt(1);\n let i = 0;\n while (++i < byteLength) {\n mul *= BigInt(256);\n const byte = BigInt(safeReadUint8(pipe));\n val = val + mul * byte;\n }\n return val;\n}\n\n/**\n *\n * @param pipe Pipe from buffer-pipe\n * @param byteLength number\n * @returns bigint\n */\nexport function readIntLE(pipe: Pipe, byteLength: number): bigint {\n let val = readUIntLE(pipe, byteLength);\n const mul = BigInt(2) ** (BigInt(8) * BigInt(byteLength - 1) + BigInt(7));\n if (val >= mul) {\n val -= mul * BigInt(2);\n }\n return val;\n}\n","/**\n * Equivalent to `Math.log2(n)` with support for `BigInt` values\n *\n * @param n bigint or integer\n * @returns integer\n */\nexport function ilog2(n: bigint | number): number {\n const nBig = BigInt(n);\n if (n <= 0) {\n throw new RangeError('Input must be positive');\n }\n return nBig.toString(2).length - 1;\n}\n\n/**\n * Equivalent to `2 ** n` with support for `BigInt` values\n * (necessary for browser preprocessors which replace the `**` operator with `Math.pow`)\n *\n * @param n bigint or integer\n * @returns bigint\n */\nexport function iexp2(n: bigint | number): bigint {\n const nBig = BigInt(n);\n if (n < 0) {\n throw new RangeError('Input must be non-negative');\n }\n return BigInt(1) << nBig;\n}\n","// tslint:disable:max-classes-per-file\nimport { Principal as PrincipalId } from '@dfinity/principal';\nimport { JsonValue } from './types';\nimport { concat, PipeArrayBuffer as Pipe } from './utils/buffer';\nimport { idlLabelToId } from './utils/hash';\nimport {\n lebDecode,\n lebEncode,\n readIntLE,\n readUIntLE,\n safeRead,\n safeReadUint8,\n slebDecode,\n slebEncode,\n writeIntLE,\n writeUIntLE,\n} from './utils/leb128';\nimport { iexp2 } from './utils/bigint-math';\n\n// tslint:disable:max-line-length\n/**\n * This module provides a combinator library to create serializers/deserializers\n * between JavaScript values and IDL used by canisters on the Internet Computer,\n * as documented at https://github.com/dfinity/candid/blob/119703ba342d2fef6ab4972d2541b9fe36ae8e36/spec/Candid.md\n */\n// tslint:enable:max-line-length\n\nconst enum IDLTypeIds {\n Null = -1,\n Bool = -2,\n Nat = -3,\n Int = -4,\n Float32 = -13,\n Float64 = -14,\n Text = -15,\n Reserved = -16,\n Empty = -17,\n Opt = -18,\n Vector = -19,\n Record = -20,\n Variant = -21,\n Func = -22,\n Service = -23,\n Principal = -24,\n}\n\nconst magicNumber = 'DIDL';\nconst toReadableString_max = 400; // will not display arguments after 400chars. Makes sure 2mb blobs don't get inside the error\n\nfunction zipWith(xs: TX[], ys: TY[], f: (a: TX, b: TY) => TR): TR[] {\n return xs.map((x, i) => f(x, ys[i]));\n}\n\n/**\n * An IDL Type Table, which precedes the data in the stream.\n */\nclass TypeTable {\n // List of types. Needs to be an array as the index needs to be stable.\n private _typs: ArrayBuffer[] = [];\n private _idx = new Map();\n\n public has(obj: ConstructType) {\n return this._idx.has(obj.name);\n }\n\n public add(type: ConstructType, buf: ArrayBuffer) {\n const idx = this._typs.length;\n this._idx.set(type.name, idx);\n this._typs.push(buf);\n }\n\n public merge(obj: ConstructType, knot: string) {\n const idx = this._idx.get(obj.name);\n const knotIdx = this._idx.get(knot);\n if (idx === undefined) {\n throw new Error('Missing type index for ' + obj);\n }\n if (knotIdx === undefined) {\n throw new Error('Missing type index for ' + knot);\n }\n this._typs[idx] = this._typs[knotIdx];\n\n // Delete the type.\n this._typs.splice(knotIdx, 1);\n this._idx.delete(knot);\n }\n\n public encode() {\n const len = lebEncode(this._typs.length);\n const buf = concat(...this._typs);\n return concat(len, buf);\n }\n\n public indexOf(typeName: string) {\n if (!this._idx.has(typeName)) {\n throw new Error('Missing type index for ' + typeName);\n }\n return slebEncode(this._idx.get(typeName) || 0);\n }\n}\n\nexport abstract class Visitor {\n public visitType(t: Type, data: D): R {\n throw new Error('Not implemented');\n }\n public visitPrimitive(t: PrimitiveType, data: D): R {\n return this.visitType(t, data);\n }\n public visitEmpty(t: EmptyClass, data: D): R {\n return this.visitPrimitive(t, data);\n }\n public visitBool(t: BoolClass, data: D): R {\n return this.visitPrimitive(t, data);\n }\n public visitNull(t: NullClass, data: D): R {\n return this.visitPrimitive(t, data);\n }\n public visitReserved(t: ReservedClass, data: D): R {\n return this.visitPrimitive(t, data);\n }\n public visitText(t: TextClass, data: D): R {\n return this.visitPrimitive(t, data);\n }\n public visitNumber(t: PrimitiveType, data: D): R {\n return this.visitPrimitive(t, data);\n }\n public visitInt(t: IntClass, data: D): R {\n return this.visitNumber(t, data);\n }\n public visitNat(t: NatClass, data: D): R {\n return this.visitNumber(t, data);\n }\n public visitFloat(t: FloatClass, data: D): R {\n return this.visitPrimitive(t, data);\n }\n public visitFixedInt(t: FixedIntClass, data: D): R {\n return this.visitNumber(t, data);\n }\n public visitFixedNat(t: FixedNatClass, data: D): R {\n return this.visitNumber(t, data);\n }\n public visitPrincipal(t: PrincipalClass, data: D): R {\n return this.visitPrimitive(t, data);\n }\n\n public visitConstruct(t: ConstructType, data: D): R {\n return this.visitType(t, data);\n }\n public visitVec(t: VecClass, ty: Type, data: D): R {\n return this.visitConstruct(t, data);\n }\n public visitOpt(t: OptClass, ty: Type, data: D): R {\n return this.visitConstruct(t, data);\n }\n public visitRecord(t: RecordClass, fields: Array<[string, Type]>, data: D): R {\n return this.visitConstruct(t, data);\n }\n public visitTuple(t: TupleClass, components: Type[], data: D): R {\n const fields: Array<[string, Type]> = components.map((ty, i) => [`_${i}_`, ty]);\n return this.visitRecord(t, fields, data);\n }\n public visitVariant(t: VariantClass, fields: Array<[string, Type]>, data: D): R {\n return this.visitConstruct(t, data);\n }\n public visitRec(t: RecClass, ty: ConstructType, data: D): R {\n return this.visitConstruct(ty, data);\n }\n public visitFunc(t: FuncClass, data: D): R {\n return this.visitConstruct(t, data);\n }\n public visitService(t: ServiceClass, data: D): R {\n return this.visitConstruct(t, data);\n }\n}\n\n/**\n * Represents an IDL type.\n */\nexport abstract class Type {\n public abstract readonly name: string;\n public abstract accept(v: Visitor, d: D): R;\n\n /* Display type name */\n public display(): string {\n return this.name;\n }\n\n public valueToString(x: T): string {\n return toReadableString(x);\n }\n\n /* Implement `T` in the IDL spec, only needed for non-primitive types */\n public buildTypeTable(typeTable: TypeTable): void {\n if (!typeTable.has(this)) {\n this._buildTypeTableImpl(typeTable);\n }\n }\n\n /**\n * Assert that JavaScript's `x` is the proper type represented by this\n * Type.\n */\n public abstract covariant(x: any): x is T;\n\n /**\n * Encode the value. This needs to be public because it is used by\n * encodeValue() from different types.\n * @internal\n */\n public abstract encodeValue(x: T): ArrayBuffer;\n\n /**\n * Implement `I` in the IDL spec.\n * Encode this type for the type table.\n */\n public abstract encodeType(typeTable: TypeTable): ArrayBuffer;\n\n public abstract checkType(t: Type): Type;\n public abstract decodeValue(x: Pipe, t: Type): T;\n\n protected abstract _buildTypeTableImpl(typeTable: TypeTable): void;\n}\n\nexport abstract class PrimitiveType extends Type {\n public checkType(t: Type): Type {\n if (this.name !== t.name) {\n throw new Error(`type mismatch: type on the wire ${t.name}, expect type ${this.name}`);\n }\n return t;\n }\n public _buildTypeTableImpl(typeTable: TypeTable): void {\n // No type table encoding for Primitive types.\n return;\n }\n}\n\nexport abstract class ConstructType extends Type {\n public checkType(t: Type): ConstructType {\n if (t instanceof RecClass) {\n const ty = t.getType();\n if (typeof ty === 'undefined') {\n throw new Error('type mismatch with uninitialized type');\n }\n return ty;\n }\n throw new Error(`type mismatch: type on the wire ${t.name}, expect type ${this.name}`);\n }\n public encodeType(typeTable: TypeTable) {\n return typeTable.indexOf(this.name);\n }\n}\n\n/**\n * Represents an IDL Empty, a type which has no inhabitants.\n * Since no values exist for this type, it cannot be serialised or deserialised.\n * Result types like `Result` should always succeed.\n */\nexport class EmptyClass extends PrimitiveType {\n public accept(v: Visitor, d: D): R {\n return v.visitEmpty(this, d);\n }\n\n public covariant(x: any): x is never {\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(): never {\n throw new Error('Empty cannot appear as a function argument');\n }\n\n public valueToString(): never {\n throw new Error('Empty cannot appear as a value');\n }\n\n public encodeType() {\n return slebEncode(IDLTypeIds.Empty);\n }\n\n public decodeValue(): never {\n throw new Error('Empty cannot appear as an output');\n }\n\n get name() {\n return 'empty';\n }\n}\n\n/**\n * Represents an IDL Unknown, a placeholder type for deserialization only.\n * When decoding a value as Unknown, all fields will be retained but the names are only available in\n * hashed form.\n * A deserialized unknown will offer it's actual type by calling the `type()` function.\n * Unknown cannot be serialized and attempting to do so will throw an error.\n */\nexport class UnknownClass extends Type {\n public checkType(t: Type): Type {\n throw new Error('Method not implemented for unknown.');\n }\n\n public accept(v: Visitor, d: D): R {\n throw v.visitType(this, d);\n }\n\n public covariant(x: any): x is any {\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(): never {\n throw new Error('Unknown cannot appear as a function argument');\n }\n\n public valueToString(): never {\n throw new Error('Unknown cannot appear as a value');\n }\n\n public encodeType(): never {\n throw new Error('Unknown cannot be serialized');\n }\n\n public decodeValue(b: Pipe, t: Type): any {\n let decodedValue = t.decodeValue(b, t);\n\n if (Object(decodedValue) !== decodedValue) {\n // decodedValue is primitive. Box it, otherwise we cannot add the type() function.\n // The type() function is important for primitives because otherwise we cannot tell apart the\n // different number types.\n decodedValue = Object(decodedValue);\n }\n\n let typeFunc;\n if (t instanceof RecClass) {\n typeFunc = () => t.getType();\n } else {\n typeFunc = () => t;\n }\n // Do not use 'decodedValue.type = typeFunc' because this would lead to an enumerable property\n // 'type' which means it would be serialized if the value would be candid encoded again.\n // This in turn leads to problems if the decoded value is a variant because these values are\n // only allowed to have a single property.\n Object.defineProperty(decodedValue, 'type', {\n value: typeFunc,\n writable: true,\n enumerable: false,\n configurable: true,\n });\n return decodedValue;\n }\n\n protected _buildTypeTableImpl(): void {\n throw new Error('Unknown cannot be serialized');\n }\n\n get name() {\n return 'Unknown';\n }\n}\n\n/**\n * Represents an IDL Bool\n */\nexport class BoolClass extends PrimitiveType {\n public accept(v: Visitor, d: D): R {\n return v.visitBool(this, d);\n }\n\n public covariant(x: any): x is boolean {\n if (typeof x === 'boolean') return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: boolean): ArrayBuffer {\n return new Uint8Array([x ? 1 : 0]);\n }\n\n public encodeType() {\n return slebEncode(IDLTypeIds.Bool);\n }\n\n public decodeValue(b: Pipe, t: Type) {\n this.checkType(t);\n switch (safeReadUint8(b)) {\n case 0:\n return false;\n case 1:\n return true;\n default:\n throw new Error('Boolean value out of range');\n }\n }\n\n get name() {\n return 'bool';\n }\n}\n\n/**\n * Represents an IDL Null\n */\nexport class NullClass extends PrimitiveType {\n public accept(v: Visitor, d: D): R {\n return v.visitNull(this, d);\n }\n\n public covariant(x: any): x is null {\n if (x === null) return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue() {\n return new ArrayBuffer(0);\n }\n\n public encodeType() {\n return slebEncode(IDLTypeIds.Null);\n }\n\n public decodeValue(b: Pipe, t: Type) {\n this.checkType(t);\n return null;\n }\n\n get name() {\n return 'null';\n }\n}\n\n/**\n * Represents an IDL Reserved\n */\nexport class ReservedClass extends PrimitiveType {\n public accept(v: Visitor, d: D): R {\n return v.visitReserved(this, d);\n }\n\n public covariant(x: any): x is any {\n return true;\n }\n\n public encodeValue() {\n return new ArrayBuffer(0);\n }\n\n public encodeType() {\n return slebEncode(IDLTypeIds.Reserved);\n }\n\n public decodeValue(b: Pipe, t: Type) {\n if (t.name !== this.name) {\n t.decodeValue(b, t);\n }\n return null;\n }\n\n get name() {\n return 'reserved';\n }\n}\n\n/**\n * Represents an IDL Text\n */\nexport class TextClass extends PrimitiveType {\n public accept(v: Visitor, d: D): R {\n return v.visitText(this, d);\n }\n\n public covariant(x: any): x is string {\n if (typeof x === 'string') return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: string) {\n const buf = new TextEncoder().encode(x);\n const len = lebEncode(buf.byteLength);\n return concat(len, buf);\n }\n\n public encodeType() {\n return slebEncode(IDLTypeIds.Text);\n }\n\n public decodeValue(b: Pipe, t: Type) {\n this.checkType(t);\n const len = lebDecode(b);\n const buf = safeRead(b, Number(len));\n const decoder = new TextDecoder('utf8', { fatal: true });\n return decoder.decode(buf);\n }\n\n get name() {\n return 'text';\n }\n\n public valueToString(x: string) {\n return '\"' + x + '\"';\n }\n}\n\n/**\n * Represents an IDL Int\n */\nexport class IntClass extends PrimitiveType {\n public accept(v: Visitor, d: D): R {\n return v.visitInt(this, d);\n }\n\n public covariant(x: any): x is bigint {\n // We allow encoding of JavaScript plain numbers.\n // But we will always decode to bigint.\n if (typeof x === 'bigint' || Number.isInteger(x)) return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: bigint | number) {\n return slebEncode(x);\n }\n\n public encodeType() {\n return slebEncode(IDLTypeIds.Int);\n }\n\n public decodeValue(b: Pipe, t: Type) {\n this.checkType(t);\n return slebDecode(b);\n }\n\n get name() {\n return 'int';\n }\n\n public valueToString(x: bigint) {\n return x.toString();\n }\n}\n\n/**\n * Represents an IDL Nat\n */\nexport class NatClass extends PrimitiveType {\n public accept(v: Visitor, d: D): R {\n return v.visitNat(this, d);\n }\n\n public covariant(x: any): x is bigint {\n // We allow encoding of JavaScript plain numbers.\n // But we will always decode to bigint.\n if ((typeof x === 'bigint' && x >= BigInt(0)) || (Number.isInteger(x) && x >= 0)) return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: bigint | number) {\n return lebEncode(x);\n }\n\n public encodeType() {\n return slebEncode(IDLTypeIds.Nat);\n }\n\n public decodeValue(b: Pipe, t: Type) {\n this.checkType(t);\n return lebDecode(b);\n }\n\n get name() {\n return 'nat';\n }\n\n public valueToString(x: bigint) {\n return x.toString();\n }\n}\n\n/**\n * Represents an IDL Float\n */\nexport class FloatClass extends PrimitiveType {\n constructor(private _bits: number) {\n super();\n if (_bits !== 32 && _bits !== 64) {\n throw new Error('not a valid float type');\n }\n }\n public accept(v: Visitor, d: D): R {\n return v.visitFloat(this, d);\n }\n\n public covariant(x: any): x is number {\n if (typeof x === 'number' || x instanceof Number) return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: number) {\n const buf = new ArrayBuffer(this._bits / 8);\n const view = new DataView(buf);\n if (this._bits === 32) {\n view.setFloat32(0, x, true);\n } else {\n view.setFloat64(0, x, true);\n }\n return buf;\n }\n\n public encodeType() {\n const opcode = this._bits === 32 ? IDLTypeIds.Float32 : IDLTypeIds.Float64;\n return slebEncode(opcode);\n }\n\n public decodeValue(b: Pipe, t: Type) {\n this.checkType(t);\n const bytes = safeRead(b, this._bits / 8);\n const view = new DataView(bytes);\n if (this._bits === 32) {\n return view.getFloat32(0, true);\n } else {\n return view.getFloat64(0, true);\n }\n }\n\n get name() {\n return 'float' + this._bits;\n }\n\n public valueToString(x: number) {\n return x.toString();\n }\n}\n\n/**\n * Represents an IDL fixed-width Int(n)\n */\nexport class FixedIntClass extends PrimitiveType {\n constructor(public readonly _bits: number) {\n super();\n }\n\n public accept(v: Visitor, d: D): R {\n return v.visitFixedInt(this, d);\n }\n\n public covariant(x: any): x is bigint {\n const min = iexp2(this._bits - 1) * BigInt(-1);\n const max = iexp2(this._bits - 1) - BigInt(1);\n let ok = false;\n if (typeof x === 'bigint') {\n ok = x >= min && x <= max;\n } else if (Number.isInteger(x)) {\n const v = BigInt(x);\n ok = v >= min && v <= max;\n } else {\n ok = false;\n }\n\n if (ok) return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: bigint | number) {\n return writeIntLE(x, this._bits / 8);\n }\n\n public encodeType() {\n const offset = Math.log2(this._bits) - 3;\n return slebEncode(-9 - offset);\n }\n\n public decodeValue(b: Pipe, t: Type) {\n this.checkType(t);\n const num = readIntLE(b, this._bits / 8);\n if (this._bits <= 32) {\n return Number(num);\n } else {\n return num;\n }\n }\n\n get name() {\n return `int${this._bits}`;\n }\n\n public valueToString(x: bigint | number) {\n return x.toString();\n }\n}\n\n/**\n * Represents an IDL fixed-width Nat(n)\n */\nexport class FixedNatClass extends PrimitiveType {\n constructor(public readonly _bits: number) {\n super();\n }\n\n public accept(v: Visitor, d: D): R {\n return v.visitFixedNat(this, d);\n }\n\n public covariant(x: any): x is bigint {\n const max = iexp2(this._bits);\n let ok = false;\n if (typeof x === 'bigint' && x >= BigInt(0)) {\n ok = x < max;\n } else if (Number.isInteger(x) && x >= 0) {\n const v = BigInt(x);\n ok = v < max;\n } else {\n ok = false;\n }\n if (ok) return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: bigint | number) {\n return writeUIntLE(x, this._bits / 8);\n }\n\n public encodeType() {\n const offset = Math.log2(this._bits) - 3;\n return slebEncode(-5 - offset);\n }\n\n public decodeValue(b: Pipe, t: Type) {\n this.checkType(t);\n const num = readUIntLE(b, this._bits / 8);\n if (this._bits <= 32) {\n return Number(num);\n } else {\n return num;\n }\n }\n\n get name() {\n return `nat${this._bits}`;\n }\n\n public valueToString(x: bigint | number) {\n return x.toString();\n }\n}\n\n/**\n * Represents an IDL Array\n *\n * Arrays of fixed-sized nat/int type (e.g. nat8), are encoded from and decoded to TypedArrays (e.g. Uint8Array).\n * Arrays of float or other non-primitive types are encoded/decoded as untyped array in Javascript.\n *\n * @param {Type} t\n */\nexport class VecClass extends ConstructType {\n // If true, this vector is really a blob and we can just use memcpy.\n //\n // NOTE:\n // With support of encoding/dencoding of TypedArrays, this optimization is\n // only used when plain array of bytes are passed as encoding input in order\n // to be backward compatible.\n private _blobOptimization = false;\n\n constructor(protected _type: Type) {\n super();\n if (_type instanceof FixedNatClass && _type._bits === 8) {\n this._blobOptimization = true;\n }\n }\n\n public accept(v: Visitor, d: D): R {\n return v.visitVec(this, this._type, d);\n }\n\n public covariant(x: any): x is T[] {\n // Special case for ArrayBuffer\n const bits =\n this._type instanceof FixedNatClass\n ? this._type._bits\n : this._type instanceof FixedIntClass\n ? this._type._bits\n : 0;\n\n if (\n (ArrayBuffer.isView(x) && bits == (x as any).BYTES_PER_ELEMENT * 8) ||\n (Array.isArray(x) &&\n x.every((v, idx) => {\n try {\n return this._type.covariant(v);\n } catch (e: any) {\n throw new Error(`Invalid ${this.display()} argument: \\n\\nindex ${idx} -> ${e.message}`);\n }\n }))\n )\n return true;\n\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: T[]) {\n const len = lebEncode(x.length);\n if (this._blobOptimization) {\n return concat(len, new Uint8Array(x as unknown as number[]));\n }\n if (ArrayBuffer.isView(x)) {\n return concat(len, new Uint8Array(x.buffer));\n }\n const buf = new Pipe(new ArrayBuffer(len.byteLength + x.length), 0);\n buf.write(len);\n for (const d of x) {\n const encoded = this._type.encodeValue(d);\n buf.write(new Uint8Array(encoded));\n }\n return buf.buffer;\n }\n\n public _buildTypeTableImpl(typeTable: TypeTable) {\n this._type.buildTypeTable(typeTable);\n\n const opCode = slebEncode(IDLTypeIds.Vector);\n const buffer = this._type.encodeType(typeTable);\n typeTable.add(this, concat(opCode, buffer));\n }\n\n public decodeValue(b: Pipe, t: Type): T[] {\n const vec = this.checkType(t);\n if (!(vec instanceof VecClass)) {\n throw new Error('Not a vector type');\n }\n const len = Number(lebDecode(b));\n\n if (this._type instanceof FixedNatClass) {\n if (this._type._bits == 8) {\n return new Uint8Array(b.read(len)) as unknown as T[];\n }\n if (this._type._bits == 16) {\n return new Uint16Array(b.read(len * 2)) as unknown as T[];\n }\n if (this._type._bits == 32) {\n return new Uint32Array(b.read(len * 4)) as unknown as T[];\n }\n if (this._type._bits == 64) {\n return new BigUint64Array(b.read(len * 8)) as unknown as T[];\n }\n }\n\n if (this._type instanceof FixedIntClass) {\n if (this._type._bits == 8) {\n return new Int8Array(b.read(len)) as unknown as T[];\n }\n if (this._type._bits == 16) {\n return new Int16Array(b.read(len * 2)) as unknown as T[];\n }\n if (this._type._bits == 32) {\n return new Int32Array(b.read(len * 4)) as unknown as T[];\n }\n if (this._type._bits == 64) {\n return new BigInt64Array(b.read(len * 8)) as unknown as T[];\n }\n }\n\n const rets: T[] = [];\n for (let i = 0; i < len; i++) {\n rets.push(this._type.decodeValue(b, vec._type));\n }\n return rets;\n }\n\n get name() {\n return `vec ${this._type.name}`;\n }\n\n public display() {\n return `vec ${this._type.display()}`;\n }\n\n public valueToString(x: T[]) {\n const elements = x.map(e => this._type.valueToString(e));\n return 'vec {' + elements.join('; ') + '}';\n }\n}\n\n/**\n * Represents an IDL Option\n * @param {Type} t\n */\nexport class OptClass extends ConstructType<[T] | []> {\n constructor(protected _type: Type) {\n super();\n }\n\n public accept(v: Visitor, d: D): R {\n return v.visitOpt(this, this._type, d);\n }\n\n public covariant(x: any): x is [T] | [] {\n try {\n if (Array.isArray(x) && (x.length === 0 || (x.length === 1 && this._type.covariant(x[0]))))\n return true;\n } catch (e: any) {\n throw new Error(\n `Invalid ${this.display()} argument: ${toReadableString(x)} \\n\\n-> ${e.message}`,\n );\n }\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: [T] | []) {\n if (x.length === 0) {\n return new Uint8Array([0]);\n } else {\n return concat(new Uint8Array([1]), this._type.encodeValue(x[0]));\n }\n }\n\n public _buildTypeTableImpl(typeTable: TypeTable) {\n this._type.buildTypeTable(typeTable);\n\n const opCode = slebEncode(IDLTypeIds.Opt);\n const buffer = this._type.encodeType(typeTable);\n typeTable.add(this, concat(opCode, buffer));\n }\n\n public decodeValue(b: Pipe, t: Type): [T] | [] {\n const opt = this.checkType(t);\n if (!(opt instanceof OptClass)) {\n throw new Error('Not an option type');\n }\n switch (safeReadUint8(b)) {\n case 0:\n return [];\n case 1:\n return [this._type.decodeValue(b, opt._type)];\n default:\n throw new Error('Not an option value');\n }\n }\n\n get name() {\n return `opt ${this._type.name}`;\n }\n\n public display() {\n return `opt ${this._type.display()}`;\n }\n\n public valueToString(x: [T] | []) {\n if (x.length === 0) {\n return 'null';\n } else {\n return `opt ${this._type.valueToString(x[0])}`;\n }\n }\n}\n\n/**\n * Represents an IDL Record\n * @param {Object} [fields] - mapping of function name to Type\n */\nexport class RecordClass extends ConstructType> {\n protected readonly _fields: Array<[string, Type]>;\n\n constructor(fields: Record = {}) {\n super();\n this._fields = Object.entries(fields).sort((a, b) => idlLabelToId(a[0]) - idlLabelToId(b[0]));\n }\n\n public accept(v: Visitor, d: D): R {\n return v.visitRecord(this, this._fields, d);\n }\n\n public tryAsTuple(): Type[] | null {\n const res: Type[] = [];\n for (let i = 0; i < this._fields.length; i++) {\n const [key, type] = this._fields[i];\n if (key !== `_${i}_`) {\n return null;\n }\n res.push(type);\n }\n return res;\n }\n\n public covariant(x: any): x is Record {\n if (\n typeof x === 'object' &&\n this._fields.every(([k, t]) => {\n // eslint-disable-next-line\n if (!x.hasOwnProperty(k)) {\n throw new Error(`Record is missing key \"${k}\".`);\n }\n try {\n return t.covariant(x[k]);\n } catch (e: any) {\n throw new Error(`Invalid ${this.display()} argument: \\n\\nfield ${k} -> ${e.message}`);\n }\n })\n )\n return true;\n\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: Record) {\n const values = this._fields.map(([key]) => x[key]);\n const bufs = zipWith(this._fields, values, ([, c], d) => c.encodeValue(d));\n return concat(...bufs);\n }\n\n public _buildTypeTableImpl(T: TypeTable) {\n this._fields.forEach(([_, value]) => value.buildTypeTable(T));\n const opCode = slebEncode(IDLTypeIds.Record);\n const len = lebEncode(this._fields.length);\n const fields = this._fields.map(([key, value]) =>\n concat(lebEncode(idlLabelToId(key)), value.encodeType(T)),\n );\n\n T.add(this, concat(opCode, len, concat(...fields)));\n }\n\n public decodeValue(b: Pipe, t: Type) {\n const record = this.checkType(t);\n if (!(record instanceof RecordClass)) {\n throw new Error('Not a record type');\n }\n const x: Record = {};\n\n let expectedRecordIdx = 0;\n let actualRecordIdx = 0;\n while (actualRecordIdx < record._fields.length) {\n const [hash, type] = record._fields[actualRecordIdx];\n\n if (expectedRecordIdx >= this._fields.length) {\n // skip unexpected left over fields present on the wire\n type.decodeValue(b, type);\n actualRecordIdx++;\n continue;\n }\n\n const [expectKey, expectType] = this._fields[expectedRecordIdx];\n const expectedId = idlLabelToId(this._fields[expectedRecordIdx][0]);\n const actualId = idlLabelToId(hash);\n if (expectedId === actualId) {\n // the current field on the wire matches the expected field\n x[expectKey] = expectType.decodeValue(b, type);\n expectedRecordIdx++;\n actualRecordIdx++;\n } else if (actualId > expectedId) {\n // The expected field does not exist on the wire\n if (expectType instanceof OptClass || expectType instanceof ReservedClass) {\n x[expectKey] = [];\n expectedRecordIdx++;\n } else {\n throw new Error('Cannot find required field ' + expectKey);\n }\n } else {\n // The field on the wire does not exist in the output type, so we can skip it\n type.decodeValue(b, type);\n actualRecordIdx++;\n }\n }\n\n // initialize left over expected optional fields\n for (const [expectKey, expectType] of this._fields.slice(expectedRecordIdx)) {\n if (expectType instanceof OptClass || expectType instanceof ReservedClass) {\n // TODO this assumes null value in opt is represented as []\n x[expectKey] = [];\n } else {\n throw new Error('Cannot find required field ' + expectKey);\n }\n }\n return x;\n }\n\n get name() {\n const fields = this._fields.map(([key, value]) => key + ':' + value.name);\n return `record {${fields.join('; ')}}`;\n }\n\n public display() {\n const fields = this._fields.map(([key, value]) => key + ':' + value.display());\n return `record {${fields.join('; ')}}`;\n }\n\n public valueToString(x: Record) {\n const values = this._fields.map(([key]) => x[key]);\n const fields = zipWith(this._fields, values, ([k, c], d) => k + '=' + c.valueToString(d));\n return `record {${fields.join('; ')}}`;\n }\n}\n\n/**\n * Represents Tuple, a syntactic sugar for Record.\n * @param {Type} components\n */\nexport class TupleClass extends RecordClass {\n protected readonly _components: Type[];\n\n constructor(_components: Type[]) {\n const x: Record = {};\n _components.forEach((e, i) => (x['_' + i + '_'] = e));\n super(x);\n this._components = _components;\n }\n\n public accept(v: Visitor, d: D): R {\n return v.visitTuple(this, this._components, d);\n }\n\n public covariant(x: any): x is T {\n // `>=` because tuples can be covariant when encoded.\n\n if (\n Array.isArray(x) &&\n x.length >= this._fields.length &&\n this._components.every((t, i) => {\n try {\n return t.covariant(x[i]);\n } catch (e: any) {\n throw new Error(`Invalid ${this.display()} argument: \\n\\nindex ${i} -> ${e.message}`);\n }\n })\n )\n return true;\n\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: any[]) {\n const bufs = zipWith(this._components, x, (c, d) => c.encodeValue(d));\n return concat(...bufs);\n }\n\n public decodeValue(b: Pipe, t: Type): T {\n const tuple = this.checkType(t);\n if (!(tuple instanceof TupleClass)) {\n throw new Error('not a tuple type');\n }\n if (tuple._components.length < this._components.length) {\n throw new Error('tuple mismatch');\n }\n const res = [];\n for (const [i, wireType] of tuple._components.entries()) {\n if (i >= this._components.length) {\n // skip value\n wireType.decodeValue(b, wireType);\n } else {\n res.push(this._components[i].decodeValue(b, wireType));\n }\n }\n return res as T;\n }\n\n public display() {\n const fields = this._components.map(value => value.display());\n return `record {${fields.join('; ')}}`;\n }\n\n public valueToString(values: any[]) {\n const fields = zipWith(this._components, values, (c, d) => c.valueToString(d));\n return `record {${fields.join('; ')}}`;\n }\n}\n\n/**\n * Represents an IDL Variant\n * @param {Object} [fields] - mapping of function name to Type\n */\nexport class VariantClass extends ConstructType> {\n private readonly _fields: Array<[string, Type]>;\n\n constructor(fields: Record = {}) {\n super();\n this._fields = Object.entries(fields).sort((a, b) => idlLabelToId(a[0]) - idlLabelToId(b[0]));\n }\n\n public accept(v: Visitor, d: D): R {\n return v.visitVariant(this, this._fields, d);\n }\n\n public covariant(x: any): x is Record {\n if (\n typeof x === 'object' &&\n Object.entries(x).length === 1 &&\n this._fields.every(([k, v]) => {\n try {\n // eslint-disable-next-line\n return !x.hasOwnProperty(k) || v.covariant(x[k]);\n } catch (e: any) {\n throw new Error(`Invalid ${this.display()} argument: \\n\\nvariant ${k} -> ${e.message}`);\n }\n })\n )\n return true;\n\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: Record) {\n for (let i = 0; i < this._fields.length; i++) {\n const [name, type] = this._fields[i];\n // eslint-disable-next-line\n if (x.hasOwnProperty(name)) {\n const idx = lebEncode(i);\n const buf = type.encodeValue(x[name]);\n\n return concat(idx, buf);\n }\n }\n throw Error('Variant has no data: ' + x);\n }\n\n public _buildTypeTableImpl(typeTable: TypeTable) {\n this._fields.forEach(([, type]) => {\n type.buildTypeTable(typeTable);\n });\n const opCode = slebEncode(IDLTypeIds.Variant);\n const len = lebEncode(this._fields.length);\n const fields = this._fields.map(([key, value]) =>\n concat(lebEncode(idlLabelToId(key)), value.encodeType(typeTable)),\n );\n typeTable.add(this, concat(opCode, len, ...fields));\n }\n\n public decodeValue(b: Pipe, t: Type) {\n const variant = this.checkType(t);\n if (!(variant instanceof VariantClass)) {\n throw new Error('Not a variant type');\n }\n const idx = Number(lebDecode(b));\n if (idx >= variant._fields.length) {\n throw Error('Invalid variant index: ' + idx);\n }\n const [wireHash, wireType] = variant._fields[idx];\n for (const [key, expectType] of this._fields) {\n if (idlLabelToId(wireHash) === idlLabelToId(key)) {\n const value = expectType.decodeValue(b, wireType);\n return { [key]: value };\n }\n }\n throw new Error('Cannot find field hash ' + wireHash);\n }\n\n get name() {\n const fields = this._fields.map(([key, type]) => key + ':' + type.name);\n return `variant {${fields.join('; ')}}`;\n }\n\n public display() {\n const fields = this._fields.map(\n ([key, type]) => key + (type.name === 'null' ? '' : `:${type.display()}`),\n );\n return `variant {${fields.join('; ')}}`;\n }\n\n public valueToString(x: Record) {\n for (const [name, type] of this._fields) {\n // eslint-disable-next-line\n if (x.hasOwnProperty(name)) {\n const value = type.valueToString(x[name]);\n if (value === 'null') {\n return `variant {${name}}`;\n } else {\n return `variant {${name}=${value}}`;\n }\n }\n }\n throw new Error('Variant has no data: ' + x);\n }\n}\n\n/**\n * Represents a reference to an IDL type, used for defining recursive data\n * types.\n */\nexport class RecClass extends ConstructType {\n private static _counter = 0;\n private _id = RecClass._counter++;\n private _type: ConstructType | undefined = undefined;\n\n public accept(v: Visitor, d: D): R {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n return v.visitRec(this, this._type, d);\n }\n\n public fill(t: ConstructType) {\n this._type = t;\n }\n\n public getType() {\n return this._type;\n }\n\n public covariant(x: any): x is T {\n if (this._type ? this._type.covariant(x) : false) return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: T) {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n return this._type.encodeValue(x);\n }\n\n public _buildTypeTableImpl(typeTable: TypeTable) {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n typeTable.add(this, new Uint8Array([]));\n this._type.buildTypeTable(typeTable);\n typeTable.merge(this, this._type.name);\n }\n\n public decodeValue(b: Pipe, t: Type) {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n return this._type.decodeValue(b, t);\n }\n\n get name() {\n return `rec_${this._id}`;\n }\n\n public display() {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n return `μ${this.name}.${this._type.name}`;\n }\n\n public valueToString(x: T) {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n return this._type.valueToString(x);\n }\n}\n\nfunction decodePrincipalId(b: Pipe): PrincipalId {\n const x = safeReadUint8(b);\n if (x !== 1) {\n throw new Error('Cannot decode principal');\n }\n\n const len = Number(lebDecode(b));\n return PrincipalId.fromUint8Array(new Uint8Array(safeRead(b, len)));\n}\n\n/**\n * Represents an IDL principal reference\n */\nexport class PrincipalClass extends PrimitiveType {\n public accept(v: Visitor, d: D): R {\n return v.visitPrincipal(this, d);\n }\n\n public covariant(x: any): x is PrincipalId {\n if (x && x._isPrincipal) return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: PrincipalId): ArrayBuffer {\n const buf = x.toUint8Array();\n const len = lebEncode(buf.byteLength);\n return concat(new Uint8Array([1]), len, buf);\n }\n\n public encodeType() {\n return slebEncode(IDLTypeIds.Principal);\n }\n\n public decodeValue(b: Pipe, t: Type): PrincipalId {\n this.checkType(t);\n return decodePrincipalId(b);\n }\n\n get name() {\n return 'principal';\n }\n public valueToString(x: PrincipalId) {\n return `${this.name} \"${x.toText()}\"`;\n }\n}\n\n/**\n * Represents an IDL function reference.\n * @param argTypes Argument types.\n * @param retTypes Return types.\n * @param annotations Function annotations.\n */\nexport class FuncClass extends ConstructType<[PrincipalId, string]> {\n public static argsToString(types: Type[], v: any[]) {\n if (types.length !== v.length) {\n throw new Error('arity mismatch');\n }\n return '(' + types.map((t, i) => t.valueToString(v[i])).join(', ') + ')';\n }\n\n constructor(public argTypes: Type[], public retTypes: Type[], public annotations: string[] = []) {\n super();\n }\n\n public accept(v: Visitor, d: D): R {\n return v.visitFunc(this, d);\n }\n public covariant(x: any): x is [PrincipalId, string] {\n if (Array.isArray(x) && x.length === 2 && x[0] && x[0]._isPrincipal && typeof x[1] === 'string')\n return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue([principal, methodName]: [PrincipalId, string]) {\n const buf = principal.toUint8Array();\n const len = lebEncode(buf.byteLength);\n const canister = concat(new Uint8Array([1]), len, buf);\n\n const method = new TextEncoder().encode(methodName);\n const methodLen = lebEncode(method.byteLength);\n return concat(new Uint8Array([1]), canister, methodLen, method);\n }\n\n public _buildTypeTableImpl(T: TypeTable) {\n this.argTypes.forEach(arg => arg.buildTypeTable(T));\n this.retTypes.forEach(arg => arg.buildTypeTable(T));\n\n const opCode = slebEncode(IDLTypeIds.Func);\n const argLen = lebEncode(this.argTypes.length);\n const args = concat(...this.argTypes.map(arg => arg.encodeType(T)));\n const retLen = lebEncode(this.retTypes.length);\n const rets = concat(...this.retTypes.map(arg => arg.encodeType(T)));\n const annLen = lebEncode(this.annotations.length);\n const anns = concat(...this.annotations.map(a => this.encodeAnnotation(a)));\n\n T.add(this, concat(opCode, argLen, args, retLen, rets, annLen, anns));\n }\n\n public decodeValue(b: Pipe): [PrincipalId, string] {\n const x = safeReadUint8(b);\n if (x !== 1) {\n throw new Error('Cannot decode function reference');\n }\n const canister = decodePrincipalId(b);\n\n const mLen = Number(lebDecode(b));\n const buf = safeRead(b, mLen);\n const decoder = new TextDecoder('utf8', { fatal: true });\n const method = decoder.decode(buf);\n\n return [canister, method];\n }\n\n get name() {\n const args = this.argTypes.map(arg => arg.name).join(', ');\n const rets = this.retTypes.map(arg => arg.name).join(', ');\n const annon = ' ' + this.annotations.join(' ');\n return `(${args}) -> (${rets})${annon}`;\n }\n\n public valueToString([principal, str]: [PrincipalId, string]) {\n return `func \"${principal.toText()}\".${str}`;\n }\n\n public display(): string {\n const args = this.argTypes.map(arg => arg.display()).join(', ');\n const rets = this.retTypes.map(arg => arg.display()).join(', ');\n const annon = ' ' + this.annotations.join(' ');\n return `(${args}) → (${rets})${annon}`;\n }\n\n private encodeAnnotation(ann: string): ArrayBuffer {\n if (ann === 'query') {\n return new Uint8Array([1]);\n } else if (ann === 'oneway') {\n return new Uint8Array([2]);\n } else if (ann === 'composite_query') {\n return new Uint8Array([3]);\n } else {\n throw new Error('Illegal function annotation');\n }\n }\n}\n\nexport class ServiceClass extends ConstructType {\n public readonly _fields: Array<[string, FuncClass]>;\n constructor(fields: Record) {\n super();\n this._fields = Object.entries(fields).sort((a, b) => idlLabelToId(a[0]) - idlLabelToId(b[0]));\n }\n public accept(v: Visitor, d: D): R {\n return v.visitService(this, d);\n }\n public covariant(x: any): x is PrincipalId {\n if (x && x._isPrincipal) return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: PrincipalId) {\n const buf = x.toUint8Array();\n const len = lebEncode(buf.length);\n return concat(new Uint8Array([1]), len, buf);\n }\n\n public _buildTypeTableImpl(T: TypeTable) {\n this._fields.forEach(([_, func]) => func.buildTypeTable(T));\n const opCode = slebEncode(IDLTypeIds.Service);\n const len = lebEncode(this._fields.length);\n const meths = this._fields.map(([label, func]) => {\n const labelBuf = new TextEncoder().encode(label);\n const labelLen = lebEncode(labelBuf.length);\n return concat(labelLen, labelBuf, func.encodeType(T));\n });\n\n T.add(this, concat(opCode, len, ...meths));\n }\n\n public decodeValue(b: Pipe): PrincipalId {\n return decodePrincipalId(b);\n }\n get name() {\n const fields = this._fields.map(([key, value]) => key + ':' + value.name);\n return `service {${fields.join('; ')}}`;\n }\n\n public valueToString(x: PrincipalId) {\n return `service \"${x.toText()}\"`;\n }\n}\n\n/**\n *\n * @param x\n * @returns {string}\n */\nfunction toReadableString(x: unknown): string {\n const str = JSON.stringify(x, (_key, value) =>\n typeof value === 'bigint' ? `BigInt(${value})` : value,\n );\n\n return str && str.length > toReadableString_max\n ? str.substring(0, toReadableString_max - 3) + '...'\n : str;\n}\n\n/**\n * Encode a array of values\n * @param argTypes\n * @param args\n * @returns {Buffer} serialised value\n */\nexport function encode(argTypes: Array>, args: any[]): ArrayBuffer {\n if (args.length < argTypes.length) {\n throw Error('Wrong number of message arguments');\n }\n\n const typeTable = new TypeTable();\n argTypes.forEach(t => t.buildTypeTable(typeTable));\n\n const magic = new TextEncoder().encode(magicNumber);\n const table = typeTable.encode();\n const len = lebEncode(args.length);\n const typs = concat(...argTypes.map(t => t.encodeType(typeTable)));\n const vals = concat(\n ...zipWith(argTypes, args, (t, x) => {\n try {\n t.covariant(x);\n } catch (e: any) {\n const err = new Error(e.message + '\\n\\n');\n throw err;\n }\n\n return t.encodeValue(x);\n }),\n );\n\n return concat(magic, table, len, typs, vals);\n}\n\n/**\n * Decode a binary value\n * @param retTypes - Types expected in the buffer.\n * @param bytes - hex-encoded string, or buffer.\n * @returns Value deserialised to JS type\n */\nexport function decode(retTypes: Type[], bytes: ArrayBuffer): JsonValue[] {\n const b = new Pipe(bytes);\n\n if (bytes.byteLength < magicNumber.length) {\n throw new Error('Message length smaller than magic number');\n }\n const magicBuffer = safeRead(b, magicNumber.length);\n const magic = new TextDecoder().decode(magicBuffer);\n if (magic !== magicNumber) {\n throw new Error('Wrong magic number: ' + JSON.stringify(magic));\n }\n\n function readTypeTable(pipe: Pipe): [Array<[IDLTypeIds, any]>, number[]] {\n const typeTable: Array<[IDLTypeIds, any]> = [];\n const len = Number(lebDecode(pipe));\n\n for (let i = 0; i < len; i++) {\n const ty = Number(slebDecode(pipe));\n switch (ty) {\n case IDLTypeIds.Opt:\n case IDLTypeIds.Vector: {\n const t = Number(slebDecode(pipe));\n typeTable.push([ty, t]);\n break;\n }\n case IDLTypeIds.Record:\n case IDLTypeIds.Variant: {\n const fields = [];\n let objectLength = Number(lebDecode(pipe));\n let prevHash;\n while (objectLength--) {\n const hash = Number(lebDecode(pipe));\n if (hash >= Math.pow(2, 32)) {\n throw new Error('field id out of 32-bit range');\n }\n if (typeof prevHash === 'number' && prevHash >= hash) {\n throw new Error('field id collision or not sorted');\n }\n prevHash = hash;\n const t = Number(slebDecode(pipe));\n fields.push([hash, t]);\n }\n typeTable.push([ty, fields]);\n break;\n }\n case IDLTypeIds.Func: {\n const args = [];\n let argLength = Number(lebDecode(pipe));\n while (argLength--) {\n args.push(Number(slebDecode(pipe)));\n }\n const returnValues = [];\n let returnValuesLength = Number(lebDecode(pipe));\n while (returnValuesLength--) {\n returnValues.push(Number(slebDecode(pipe)));\n }\n const annotations = [];\n let annotationLength = Number(lebDecode(pipe));\n while (annotationLength--) {\n const annotation = Number(lebDecode(pipe));\n switch (annotation) {\n case 1: {\n annotations.push('query');\n break;\n }\n case 2: {\n annotations.push('oneway');\n break;\n }\n case 3: {\n annotations.push('composite_query');\n break;\n }\n default:\n throw new Error('unknown annotation');\n }\n }\n typeTable.push([ty, [args, returnValues, annotations]]);\n break;\n }\n case IDLTypeIds.Service: {\n let servLength = Number(lebDecode(pipe));\n const methods = [];\n while (servLength--) {\n const nameLength = Number(lebDecode(pipe));\n const funcName = new TextDecoder().decode(safeRead(pipe, nameLength));\n const funcType = slebDecode(pipe);\n methods.push([funcName, funcType]);\n }\n typeTable.push([ty, methods]);\n break;\n }\n default:\n throw new Error('Illegal op_code: ' + ty);\n }\n }\n\n const rawList: number[] = [];\n const length = Number(lebDecode(pipe));\n for (let i = 0; i < length; i++) {\n rawList.push(Number(slebDecode(pipe)));\n }\n return [typeTable, rawList];\n }\n const [rawTable, rawTypes] = readTypeTable(b);\n if (rawTypes.length < retTypes.length) {\n throw new Error('Wrong number of return values');\n }\n\n const table: RecClass[] = rawTable.map(_ => Rec());\n function getType(t: number): Type {\n if (t < -24) {\n throw new Error('future value not supported');\n }\n if (t < 0) {\n switch (t) {\n case -1:\n return Null;\n case -2:\n return Bool;\n case -3:\n return Nat;\n case -4:\n return Int;\n case -5:\n return Nat8;\n case -6:\n return Nat16;\n case -7:\n return Nat32;\n case -8:\n return Nat64;\n case -9:\n return Int8;\n case -10:\n return Int16;\n case -11:\n return Int32;\n case -12:\n return Int64;\n case -13:\n return Float32;\n case -14:\n return Float64;\n case -15:\n return Text;\n case -16:\n return Reserved;\n case -17:\n return Empty;\n case -24:\n return Principal;\n default:\n throw new Error('Illegal op_code: ' + t);\n }\n }\n if (t >= rawTable.length) {\n throw new Error('type index out of range');\n }\n return table[t];\n }\n function buildType(entry: [IDLTypeIds, any]): Type {\n switch (entry[0]) {\n case IDLTypeIds.Vector: {\n const ty = getType(entry[1]);\n return Vec(ty);\n }\n case IDLTypeIds.Opt: {\n const ty = getType(entry[1]);\n return Opt(ty);\n }\n case IDLTypeIds.Record: {\n const fields: Record = {};\n for (const [hash, ty] of entry[1]) {\n const name = `_${hash}_`;\n fields[name] = getType(ty);\n }\n const record = Record(fields);\n const tuple = record.tryAsTuple();\n if (Array.isArray(tuple)) {\n return Tuple(...tuple);\n } else {\n return record;\n }\n }\n case IDLTypeIds.Variant: {\n const fields: Record = {};\n for (const [hash, ty] of entry[1]) {\n const name = `_${hash}_`;\n fields[name] = getType(ty);\n }\n return Variant(fields);\n }\n case IDLTypeIds.Func: {\n const [args, returnValues, annotations] = entry[1];\n return Func(\n args.map((t: number) => getType(t)),\n returnValues.map((t: number) => getType(t)),\n annotations,\n );\n }\n case IDLTypeIds.Service: {\n const rec: Record = {};\n const methods = entry[1] as [[string, number]];\n for (const [name, typeRef] of methods) {\n let type: Type | undefined = getType(typeRef);\n\n if (type instanceof RecClass) {\n // unpack reference type\n type = type.getType();\n }\n if (!(type instanceof FuncClass)) {\n throw new Error('Illegal service definition: services can only contain functions');\n }\n rec[name] = type;\n }\n return Service(rec);\n }\n default:\n throw new Error('Illegal op_code: ' + entry[0]);\n }\n }\n\n rawTable.forEach((entry, i) => {\n // Process function type first, so that we can construct the correct service type\n if (entry[0] === IDLTypeIds.Func) {\n const t = buildType(entry);\n table[i].fill(t);\n }\n });\n rawTable.forEach((entry, i) => {\n if (entry[0] !== IDLTypeIds.Func) {\n const t = buildType(entry);\n table[i].fill(t);\n }\n });\n\n const types = rawTypes.map(t => getType(t));\n const output = retTypes.map((t, i) => {\n return t.decodeValue(b, types[i]);\n });\n\n // skip unused values\n for (let ind = retTypes.length; ind < types.length; ind++) {\n types[ind].decodeValue(b, types[ind]);\n }\n\n if (b.byteLength > 0) {\n throw new Error('decode: Left-over bytes');\n }\n\n return output;\n}\n\n/**\n * An Interface Factory, normally provided by a Candid code generation.\n */\nexport type InterfaceFactory = (idl: {\n IDL: {\n Empty: EmptyClass;\n Reserved: ReservedClass;\n Unknown: UnknownClass;\n Bool: BoolClass;\n Null: NullClass;\n Text: TextClass;\n Int: IntClass;\n Nat: NatClass;\n\n Float32: FloatClass;\n Float64: FloatClass;\n\n Int8: FixedIntClass;\n Int16: FixedIntClass;\n Int32: FixedIntClass;\n Int64: FixedIntClass;\n\n Nat8: FixedNatClass;\n Nat16: FixedNatClass;\n Nat32: FixedNatClass;\n Nat64: FixedNatClass;\n\n Principal: PrincipalClass;\n\n Tuple: typeof Tuple;\n Vec: typeof Vec;\n Opt: typeof Opt;\n Record: typeof Record;\n Variant: typeof Variant;\n Rec: typeof Rec;\n Func: typeof Func;\n\n Service(t: Record): ServiceClass;\n };\n}) => ServiceClass;\n\n// Export Types instances.\nexport const Empty = new EmptyClass();\nexport const Reserved = new ReservedClass();\n/**\n * Client-only type for deserializing unknown data. Not supported by Candid, and its use is discouraged.\n */\nexport const Unknown = new UnknownClass();\nexport const Bool = new BoolClass();\nexport const Null = new NullClass();\nexport const Text = new TextClass();\nexport const Int = new IntClass();\nexport const Nat = new NatClass();\n\nexport const Float32 = new FloatClass(32);\nexport const Float64 = new FloatClass(64);\n\nexport const Int8 = new FixedIntClass(8);\nexport const Int16 = new FixedIntClass(16);\nexport const Int32 = new FixedIntClass(32);\nexport const Int64 = new FixedIntClass(64);\n\nexport const Nat8 = new FixedNatClass(8);\nexport const Nat16 = new FixedNatClass(16);\nexport const Nat32 = new FixedNatClass(32);\nexport const Nat64 = new FixedNatClass(64);\n\nexport const Principal = new PrincipalClass();\n\n/**\n *\n * @param types array of any types\n * @returns TupleClass from those types\n */\nexport function Tuple(...types: T): TupleClass {\n return new TupleClass(types);\n}\n/**\n *\n * @param t IDL Type\n * @returns VecClass from that type\n */\nexport function Vec(t: Type): VecClass {\n return new VecClass(t);\n}\n/**\n *\n * @param t IDL Type\n * @returns OptClass of Type\n */\nexport function Opt(t: Type): OptClass {\n return new OptClass(t);\n}\n/**\n *\n * @param t Record of string and IDL Type\n * @returns RecordClass of string and Type\n */\nexport function Record(t: Record): RecordClass {\n return new RecordClass(t);\n}\n\n/**\n *\n * @param fields Record of string and IDL Type\n * @returns VariantClass\n */\nexport function Variant(fields: Record): VariantClass {\n return new VariantClass(fields);\n}\n/**\n *\n * @returns new RecClass\n */\nexport function Rec(): RecClass {\n return new RecClass();\n}\n\n/**\n *\n * @param args array of IDL Types\n * @param ret array of IDL Types\n * @param annotations array of strings, [] by default\n * @returns new FuncClass\n */\nexport function Func(args: Type[], ret: Type[], annotations: string[] = []): FuncClass {\n return new FuncClass(args, ret, annotations);\n}\n\n/**\n *\n * @param t Record of string and FuncClass\n * @returns ServiceClass\n */\nexport function Service(t: Record): ServiceClass {\n return new ServiceClass(t);\n}\n","// tslint:disable:no-bitwise\nconst alphabet = 'abcdefghijklmnopqrstuvwxyz234567';\n\n// Build a lookup table for decoding.\nconst lookupTable: Record = Object.create(null);\nfor (let i = 0; i < alphabet.length; i++) {\n lookupTable[alphabet[i]] = i;\n}\n\n// Add aliases for rfc4648.\nlookupTable['0'] = lookupTable.o;\nlookupTable['1'] = lookupTable.i;\n\n/**\n * @param input The input array to encode.\n * @returns A Base32 string encoding the input.\n */\nexport function encode(input: Uint8Array): string {\n // How many bits will we skip from the first byte.\n let skip = 0;\n // 5 high bits, carry from one byte to the next.\n let bits = 0;\n\n // The output string in base32.\n let output = '';\n\n function encodeByte(byte: number) {\n if (skip < 0) {\n // we have a carry from the previous byte\n bits |= byte >> -skip;\n } else {\n // no carry\n bits = (byte << skip) & 248;\n }\n\n if (skip > 3) {\n // Not enough data to produce a character, get us another one\n skip -= 8;\n return 1;\n }\n\n if (skip < 4) {\n // produce a character\n output += alphabet[bits >> 3];\n skip += 5;\n }\n\n return 0;\n }\n\n for (let i = 0; i < input.length; ) {\n i += encodeByte(input[i]);\n }\n\n return output + (skip < 0 ? alphabet[bits >> 3] : '');\n}\n\n/**\n * @param input The base32 encoded string to decode.\n */\nexport function decode(input: string): Uint8Array {\n // how many bits we have from the previous character.\n let skip = 0;\n // current byte we're producing.\n let byte = 0;\n\n const output = new Uint8Array(((input.length * 4) / 3) | 0);\n let o = 0;\n\n function decodeChar(char: string) {\n // Consume a character from the stream, store\n // the output in this.output. As before, better\n // to use update().\n let val = lookupTable[char.toLowerCase()];\n if (val === undefined) {\n throw new Error(`Invalid character: ${JSON.stringify(char)}`);\n }\n\n // move to the high bits\n val <<= 3;\n byte |= val >>> skip;\n skip += 5;\n\n if (skip >= 8) {\n // We have enough bytes to produce an output\n output[o++] = byte;\n skip -= 8;\n\n if (skip > 0) {\n byte = (val << (5 - skip)) & 255;\n } else {\n byte = 0;\n }\n }\n }\n\n for (const c of input) {\n decodeChar(c);\n }\n\n return output.slice(0, o);\n}\n","// tslint:disable:no-bitwise\n\n// This file is translated to JavaScript from\n// https://lxp32.github.io/docs/a-simple-example-crc32-calculation/\nconst lookUpTable: Uint32Array = new Uint32Array([\n 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3,\n 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91,\n 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,\n 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5,\n 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,\n 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,\n 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f,\n 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d,\n 0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,\n 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,\n 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457,\n 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,\n 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb,\n 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9,\n 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,\n 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad,\n 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683,\n 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,\n 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7,\n 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,\n 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,\n 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79,\n 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f,\n 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,\n 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,\n 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21,\n 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,\n 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45,\n 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db,\n 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,\n 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf,\n 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d,\n]);\n\n/**\n * Calculate the CRC32 of an ArrayBufferLike.\n * @param buf The BufferLike to calculate the CRC32 of.\n */\nexport function getCrc32(buf: ArrayBufferLike): number {\n const b = new Uint8Array(buf);\n let crc = -1;\n\n // tslint:disable-next-line:prefer-for-of\n for (let i = 0; i < b.length; i++) {\n const byte = b[i];\n const t = (byte ^ crc) & 0xff;\n crc = lookUpTable[t] ^ (crc >>> 8);\n }\n\n return (crc ^ -1) >>> 0;\n}\n","import { decode, encode } from './utils/base32';\nimport { getCrc32 } from './utils/getCrc';\nimport { sha224 } from './utils/sha224';\n\nconst SELF_AUTHENTICATING_SUFFIX = 2;\nconst ANONYMOUS_SUFFIX = 4;\n\nconst MANAGEMENT_CANISTER_PRINCIPAL_HEX_STR = 'aaaaa-aa';\n\nconst fromHexString = (hexString: string) =>\n new Uint8Array((hexString.match(/.{1,2}/g) ?? []).map(byte => parseInt(byte, 16)));\n\nconst toHexString = (bytes: Uint8Array) =>\n bytes.reduce((str, byte) => str + byte.toString(16).padStart(2, '0'), '');\n\nexport class Principal {\n public static anonymous(): Principal {\n return new this(new Uint8Array([ANONYMOUS_SUFFIX]));\n }\n\n /**\n * Utility method, returning the principal representing the management canister, decoded from the hex string `'aaaaa-aa'`\n * @returns {Principal} principal of the management canister\n */\n public static managementCanister(): Principal {\n return this.fromHex(MANAGEMENT_CANISTER_PRINCIPAL_HEX_STR);\n }\n\n public static selfAuthenticating(publicKey: Uint8Array): Principal {\n const sha = sha224(publicKey);\n return new this(new Uint8Array([...sha, SELF_AUTHENTICATING_SUFFIX]));\n }\n\n public static from(other: unknown): Principal {\n if (typeof other === 'string') {\n return Principal.fromText(other);\n } else if (\n typeof other === 'object' &&\n other !== null &&\n (other as Principal)._isPrincipal === true\n ) {\n return new Principal((other as Principal)._arr);\n }\n\n throw new Error(`Impossible to convert ${JSON.stringify(other)} to Principal.`);\n }\n\n public static fromHex(hex: string): Principal {\n return new this(fromHexString(hex));\n }\n\n public static fromText(text: string): Principal {\n const canisterIdNoDash = text.toLowerCase().replace(/-/g, '');\n\n let arr = decode(canisterIdNoDash);\n arr = arr.slice(4, arr.length);\n\n const principal = new this(arr);\n if (principal.toText() !== text) {\n throw new Error(\n `Principal \"${principal.toText()}\" does not have a valid checksum (original value \"${text}\" may not be a valid Principal ID).`,\n );\n }\n\n return principal;\n }\n\n public static fromUint8Array(arr: Uint8Array): Principal {\n return new this(arr);\n }\n\n public readonly _isPrincipal = true;\n\n protected constructor(private _arr: Uint8Array) {}\n\n public isAnonymous(): boolean {\n return this._arr.byteLength === 1 && this._arr[0] === ANONYMOUS_SUFFIX;\n }\n\n public toUint8Array(): Uint8Array {\n return this._arr;\n }\n\n public toHex(): string {\n return toHexString(this._arr).toUpperCase();\n }\n\n public toText(): string {\n const checksumArrayBuf = new ArrayBuffer(4);\n const view = new DataView(checksumArrayBuf);\n view.setUint32(0, getCrc32(this._arr));\n const checksum = new Uint8Array(checksumArrayBuf);\n\n const bytes = Uint8Array.from(this._arr);\n const array = new Uint8Array([...checksum, ...bytes]);\n\n const result = encode(array);\n const matches = result.match(/.{1,5}/g);\n if (!matches) {\n // This should only happen if there's no character, which is unreachable.\n throw new Error();\n }\n return matches.join('-');\n }\n\n public toString(): string {\n return this.toText();\n }\n\n /**\n * Utility method taking a Principal to compare against. Used for determining canister ranges in certificate verification\n * @param {Principal} other - a {@link Principal} to compare\n * @returns {'lt' | 'eq' | 'gt'} `'lt' | 'eq' | 'gt'` a string, representing less than, equal to, or greater than\n */\n public compareTo(other: Principal): 'lt' | 'eq' | 'gt' {\n for (let i = 0; i < Math.min(this._arr.length, other._arr.length); i++) {\n if (this._arr[i] < other._arr[i]) return 'lt';\n else if (this._arr[i] > other._arr[i]) return 'gt';\n }\n // Here, at least one principal is a prefix of the other principal (they could be the same)\n if (this._arr.length < other._arr.length) return 'lt';\n if (this._arr.length > other._arr.length) return 'gt';\n return 'eq';\n }\n\n /**\n * Utility method checking whether a provided Principal is less than or equal to the current one using the {@link Principal.compareTo} method\n * @param other a {@link Principal} to compare\n * @returns {boolean} boolean\n */\n public ltEq(other: Principal): boolean {\n const cmp = this.compareTo(other);\n return cmp == 'lt' || cmp == 'eq';\n }\n\n /**\n * Utility method checking whether a provided Principal is greater than or equal to the current one using the {@link Principal.compareTo} method\n * @param other a {@link Principal} to compare\n * @returns {boolean} boolean\n */\n public gtEq(other: Principal): boolean {\n const cmp = this.compareTo(other);\n return cmp == 'gt' || cmp == 'eq';\n }\n}\n","import { sha224 as jsSha224 } from '@noble/hashes/sha256';\n\n/**\n * Returns the SHA224 hash of the buffer.\n * @param data Arraybuffer to encode\n */\nexport function sha224(data: ArrayBuffer): Uint8Array {\n return jsSha224.create().update(new Uint8Array(data)).digest();\n}\n","/*\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n */\n(function(){\n \"use strict\";\n\n var chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n\n // Use a lookup table to find the index.\n var lookup = new Uint8Array(256);\n for (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n }\n\n exports.encode = function(arraybuffer) {\n var bytes = new Uint8Array(arraybuffer),\n i, len = bytes.length, base64 = \"\";\n\n for (i = 0; i < len; i+=3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n\n if ((len % 3) === 2) {\n base64 = base64.substring(0, base64.length - 1) + \"=\";\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + \"==\";\n }\n\n return base64;\n };\n\n exports.decode = function(base64) {\n var bufferLength = base64.length * 0.75,\n len = base64.length, i, p = 0,\n encoded1, encoded2, encoded3, encoded4;\n\n if (base64[base64.length - 1] === \"=\") {\n bufferLength--;\n if (base64[base64.length - 2] === \"=\") {\n bufferLength--;\n }\n }\n\n var arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (i = 0; i < len; i+=4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i+1)];\n encoded3 = lookup[base64.charCodeAt(i+2)];\n encoded4 = lookup[base64.charCodeAt(i+3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return arraybuffer;\n };\n})();\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n",";(function (globalObject) {\r\n 'use strict';\r\n\r\n/*\r\n * bignumber.js v9.1.2\r\n * A JavaScript library for arbitrary-precision arithmetic.\r\n * https://github.com/MikeMcl/bignumber.js\r\n * Copyright (c) 2022 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 alphabetHasNormalDecimalDigits = true;\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 && alphabetHasNormalDecimalDigits) {\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 alphabetHasNormalDecimalDigits = v.slice(0, 10) == '0123456789';\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, -1);\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, 1);\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 // If any number is NaN, return NaN.\r\n function maxOrMin(args, n) {\r\n var k, y,\r\n i = 1,\r\n x = new BigNumber(args[0]);\r\n\r\n for (; i < args.length; i++) {\r\n y = new BigNumber(args[i]);\r\n if (!y.s || (k = compare(x, y)) === n || k === 0 && x.s === n) {\r\n x = y;\r\n }\r\n }\r\n\r\n return x;\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 = mathfloor(n / pows10[d - j - 1] % 10);\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 : mathfloor(n / pows10[d - j - 1] % 10);\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 ? n.s * (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) {\r\n t = xc;\r\n xc = yc;\r\n yc = t;\r\n y.s = -y.s;\r\n }\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) {\r\n zc = xc;\r\n xc = yc;\r\n yc = zc;\r\n i = xcL;\r\n xcL = ycL;\r\n ycL = i;\r\n }\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) {\r\n t = yc;\r\n yc = xc;\r\n xc = t;\r\n b = a;\r\n }\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) {\r\n i = g1;\r\n g1 = g2;\r\n g2 = i;\r\n len -= i;\r\n }\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 && alphabetHasNormalDecimalDigits) {\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","var Buffer = require('buffer').Buffer;\n\nvar CRC_TABLE = [\n 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419,\n 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4,\n 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07,\n 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,\n 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856,\n 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,\n 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4,\n 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,\n 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3,\n 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a,\n 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599,\n 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,\n 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190,\n 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f,\n 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e,\n 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,\n 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed,\n 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,\n 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3,\n 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,\n 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a,\n 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5,\n 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010,\n 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,\n 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17,\n 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6,\n 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615,\n 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,\n 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344,\n 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,\n 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a,\n 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,\n 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1,\n 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c,\n 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef,\n 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,\n 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe,\n 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31,\n 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c,\n 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,\n 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b,\n 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,\n 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1,\n 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,\n 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278,\n 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7,\n 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66,\n 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,\n 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605,\n 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8,\n 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b,\n 0x2d02ef8d\n];\n\nif (typeof Int32Array !== 'undefined') {\n CRC_TABLE = new Int32Array(CRC_TABLE);\n}\n\nfunction ensureBuffer(input) {\n if (Buffer.isBuffer(input)) {\n return input;\n }\n\n var hasNewBufferAPI =\n typeof Buffer.alloc === \"function\" &&\n typeof Buffer.from === \"function\";\n\n if (typeof input === \"number\") {\n return hasNewBufferAPI ? Buffer.alloc(input) : new Buffer(input);\n }\n else if (typeof input === \"string\") {\n return hasNewBufferAPI ? Buffer.from(input) : new Buffer(input);\n }\n else {\n throw new Error(\"input must be buffer, number, or string, received \" +\n typeof input);\n }\n}\n\nfunction bufferizeInt(num) {\n var tmp = ensureBuffer(4);\n tmp.writeInt32BE(num, 0);\n return tmp;\n}\n\nfunction _crc32(buf, previous) {\n buf = ensureBuffer(buf);\n if (Buffer.isBuffer(previous)) {\n previous = previous.readUInt32BE(0);\n }\n var crc = ~~previous ^ -1;\n for (var n = 0; n < buf.length; n++) {\n crc = CRC_TABLE[(crc ^ buf[n]) & 0xff] ^ (crc >>> 8);\n }\n return (crc ^ -1);\n}\n\nfunction crc32() {\n return bufferizeInt(_crc32.apply(null, arguments));\n}\ncrc32.signed = function () {\n return _crc32.apply(null, arguments);\n};\ncrc32.unsigned = function () {\n return _crc32.apply(null, arguments) >>> 0;\n};\n\nmodule.exports = crc32;\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","'use strict';\n\nconst {\n URLWithLegacySupport,\n format,\n URLSearchParams,\n defaultBase\n} = require('./src/url');\nconst relative = require('./src/relative');\n\nmodule.exports = {\n URL: URLWithLegacySupport,\n URLSearchParams,\n format,\n relative,\n defaultBase\n};\n","'use strict';\n\nconst { URLWithLegacySupport, format } = require('./url');\n\nmodule.exports = (url, location = {}, protocolMap = {}, defaultProtocol) => {\n let protocol = location.protocol ?\n location.protocol.replace(':', '') :\n 'http';\n\n // Check protocol map\n protocol = (protocolMap[protocol] || defaultProtocol || protocol) + ':';\n let urlParsed;\n\n try {\n urlParsed = new URLWithLegacySupport(url);\n } catch (err) {\n urlParsed = {};\n }\n\n const base = Object.assign({}, location, {\n protocol: protocol || urlParsed.protocol,\n host: location.host || urlParsed.host\n });\n\n return new URLWithLegacySupport(url, format(base)).toString();\n};\n","'use strict';\n\nconst defaultBase = self.location ?\n self.location.protocol + '//' + self.location.host :\n '';\nconst URL = self.URL;\n\nclass URLWithLegacySupport {\n constructor(url = '', base = defaultBase) {\n this.super = new URL(url, base);\n this.path = this.pathname + this.search;\n this.auth =\n this.username && this.password ?\n this.username + ':' + this.password :\n null;\n\n this.query =\n this.search && this.search.startsWith('?') ?\n this.search.slice(1) :\n null;\n }\n\n get hash() {\n return this.super.hash;\n }\n get host() {\n return this.super.host;\n }\n get hostname() {\n return this.super.hostname;\n }\n get href() {\n return this.super.href;\n }\n get origin() {\n return this.super.origin;\n }\n get password() {\n return this.super.password;\n }\n get pathname() {\n return this.super.pathname;\n }\n get port() {\n return this.super.port;\n }\n get protocol() {\n return this.super.protocol;\n }\n get search() {\n return this.super.search;\n }\n get searchParams() {\n return this.super.searchParams;\n }\n get username() {\n return this.super.username;\n }\n\n set hash(hash) {\n this.super.hash = hash;\n }\n set host(host) {\n this.super.host = host;\n }\n set hostname(hostname) {\n this.super.hostname = hostname;\n }\n set href(href) {\n this.super.href = href;\n }\n set origin(origin) {\n this.super.origin = origin;\n }\n set password(password) {\n this.super.password = password;\n }\n set pathname(pathname) {\n this.super.pathname = pathname;\n }\n set port(port) {\n this.super.port = port;\n }\n set protocol(protocol) {\n this.super.protocol = protocol;\n }\n set search(search) {\n this.super.search = search;\n }\n set searchParams(searchParams) {\n this.super.searchParams = searchParams;\n }\n set username(username) {\n this.super.username = username;\n }\n\n createObjectURL(o) {\n return this.super.createObjectURL(o);\n }\n revokeObjectURL(o) {\n this.super.revokeObjectURL(o);\n }\n toJSON() {\n return this.super.toJSON();\n }\n toString() {\n return this.super.toString();\n }\n format() {\n return this.toString();\n }\n}\n\nfunction format(obj) {\n if (typeof obj === 'string') {\n const url = new URL(obj);\n\n return url.toString();\n }\n\n if (!(obj instanceof URL)) {\n const userPass =\n obj.username && obj.password ?\n `${obj.username}:${obj.password}@` :\n '';\n const auth = obj.auth ? obj.auth + '@' : '';\n const port = obj.port ? ':' + obj.port : '';\n const protocol = obj.protocol ? obj.protocol + '//' : '';\n const host = obj.host || '';\n const hostname = obj.hostname || '';\n const search = obj.search || (obj.query ? '?' + obj.query : '');\n const hash = obj.hash || '';\n const pathname = obj.pathname || '';\n const path = obj.path || pathname + search;\n\n return `${protocol}${userPass || auth}${host ||\n hostname + port}${path}${hash}`;\n }\n}\n\nmodule.exports = {\n URLWithLegacySupport,\n URLSearchParams: self.URLSearchParams,\n defaultBase,\n format\n};\n","/*\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n */\n(function(){\n \"use strict\";\n\n var chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n\n // Use a lookup table to find the index.\n var lookup = new Uint8Array(256);\n for (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n }\n\n exports.encode = function(arraybuffer) {\n var bytes = new Uint8Array(arraybuffer),\n i, len = bytes.length, base64 = \"\";\n\n for (i = 0; i < len; i+=3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n\n if ((len % 3) === 2) {\n base64 = base64.substring(0, base64.length - 1) + \"=\";\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + \"==\";\n }\n\n return base64;\n };\n\n exports.decode = function(base64) {\n var bufferLength = base64.length * 0.75,\n len = base64.length, i, p = 0,\n encoded1, encoded2, encoded3, encoded4;\n\n if (base64[base64.length - 1] === \"=\") {\n bufferLength--;\n if (base64[base64.length - 2] === \"=\") {\n bufferLength--;\n }\n }\n\n var arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (i = 0; i < len; i+=4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i+1)];\n encoded3 = lookup[base64.charCodeAt(i+2)];\n encoded4 = lookup[base64.charCodeAt(i+3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return arraybuffer;\n };\n})();\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n",";(function (globalObject) {\r\n 'use strict';\r\n\r\n/*\r\n * bignumber.js v9.1.1\r\n * A JavaScript library for arbitrary-precision arithmetic.\r\n * https://github.com/MikeMcl/bignumber.js\r\n * Copyright (c) 2022 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 alphabetHasNormalDecimalDigits = true;\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 && alphabetHasNormalDecimalDigits) {\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 alphabetHasNormalDecimalDigits = v.slice(0, 10) == '0123456789';\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 ? n.s * (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) {\r\n t = xc;\r\n xc = yc;\r\n yc = t;\r\n y.s = -y.s;\r\n }\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) {\r\n zc = xc;\r\n xc = yc;\r\n yc = zc;\r\n i = xcL;\r\n xcL = ycL;\r\n ycL = i;\r\n }\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) {\r\n t = yc;\r\n yc = xc;\r\n xc = t;\r\n b = a;\r\n }\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) {\r\n i = g1;\r\n g1 = g2;\r\n g2 = i;\r\n len -= i;\r\n }\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 && alphabetHasNormalDecimalDigits) {\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","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","'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 * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","(function(nacl) {\n'use strict';\n\n// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n//\n// Implementation derived from TweetNaCl version 20140427.\n// See for details: http://tweetnacl.cr.yp.to/\n\nvar gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n};\n\n// Pluggable, initialized in high-level API below.\nvar randombytes = function(/* x, n */) { throw new Error('no PRNG'); };\n\nvar _0 = new Uint8Array(16);\nvar _9 = new Uint8Array(32); _9[0] = 9;\n\nvar gf0 = gf(),\n gf1 = gf([1]),\n _121665 = gf([0xdb41, 1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]),\n X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]),\n Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i+1] = (h >> 16) & 0xff;\n x[i+2] = (h >> 8) & 0xff;\n x[i+3] = h & 0xff;\n x[i+4] = (l >> 24) & 0xff;\n x[i+5] = (l >> 16) & 0xff;\n x[i+6] = (l >> 8) & 0xff;\n x[i+7] = l & 0xff;\n}\n\nfunction vn(x, xi, y, yi, n) {\n var i,d = 0;\n for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nfunction crypto_verify_16(x, xi, y, yi) {\n return vn(x,xi,y,yi,16);\n}\n\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x,xi,y,yi,32);\n}\n\nfunction core_salsa20(o, p, k, c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n x0 = x0 + j0 | 0;\n x1 = x1 + j1 | 0;\n x2 = x2 + j2 | 0;\n x3 = x3 + j3 | 0;\n x4 = x4 + j4 | 0;\n x5 = x5 + j5 | 0;\n x6 = x6 + j6 | 0;\n x7 = x7 + j7 | 0;\n x8 = x8 + j8 | 0;\n x9 = x9 + j9 | 0;\n x10 = x10 + j10 | 0;\n x11 = x11 + j11 | 0;\n x12 = x12 + j12 | 0;\n x13 = x13 + j13 | 0;\n x14 = x14 + j14 | 0;\n x15 = x15 + j15 | 0;\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x1 >>> 0 & 0xff;\n o[ 5] = x1 >>> 8 & 0xff;\n o[ 6] = x1 >>> 16 & 0xff;\n o[ 7] = x1 >>> 24 & 0xff;\n\n o[ 8] = x2 >>> 0 & 0xff;\n o[ 9] = x2 >>> 8 & 0xff;\n o[10] = x2 >>> 16 & 0xff;\n o[11] = x2 >>> 24 & 0xff;\n\n o[12] = x3 >>> 0 & 0xff;\n o[13] = x3 >>> 8 & 0xff;\n o[14] = x3 >>> 16 & 0xff;\n o[15] = x3 >>> 24 & 0xff;\n\n o[16] = x4 >>> 0 & 0xff;\n o[17] = x4 >>> 8 & 0xff;\n o[18] = x4 >>> 16 & 0xff;\n o[19] = x4 >>> 24 & 0xff;\n\n o[20] = x5 >>> 0 & 0xff;\n o[21] = x5 >>> 8 & 0xff;\n o[22] = x5 >>> 16 & 0xff;\n o[23] = x5 >>> 24 & 0xff;\n\n o[24] = x6 >>> 0 & 0xff;\n o[25] = x6 >>> 8 & 0xff;\n o[26] = x6 >>> 16 & 0xff;\n o[27] = x6 >>> 24 & 0xff;\n\n o[28] = x7 >>> 0 & 0xff;\n o[29] = x7 >>> 8 & 0xff;\n o[30] = x7 >>> 16 & 0xff;\n o[31] = x7 >>> 24 & 0xff;\n\n o[32] = x8 >>> 0 & 0xff;\n o[33] = x8 >>> 8 & 0xff;\n o[34] = x8 >>> 16 & 0xff;\n o[35] = x8 >>> 24 & 0xff;\n\n o[36] = x9 >>> 0 & 0xff;\n o[37] = x9 >>> 8 & 0xff;\n o[38] = x9 >>> 16 & 0xff;\n o[39] = x9 >>> 24 & 0xff;\n\n o[40] = x10 >>> 0 & 0xff;\n o[41] = x10 >>> 8 & 0xff;\n o[42] = x10 >>> 16 & 0xff;\n o[43] = x10 >>> 24 & 0xff;\n\n o[44] = x11 >>> 0 & 0xff;\n o[45] = x11 >>> 8 & 0xff;\n o[46] = x11 >>> 16 & 0xff;\n o[47] = x11 >>> 24 & 0xff;\n\n o[48] = x12 >>> 0 & 0xff;\n o[49] = x12 >>> 8 & 0xff;\n o[50] = x12 >>> 16 & 0xff;\n o[51] = x12 >>> 24 & 0xff;\n\n o[52] = x13 >>> 0 & 0xff;\n o[53] = x13 >>> 8 & 0xff;\n o[54] = x13 >>> 16 & 0xff;\n o[55] = x13 >>> 24 & 0xff;\n\n o[56] = x14 >>> 0 & 0xff;\n o[57] = x14 >>> 8 & 0xff;\n o[58] = x14 >>> 16 & 0xff;\n o[59] = x14 >>> 24 & 0xff;\n\n o[60] = x15 >>> 0 & 0xff;\n o[61] = x15 >>> 8 & 0xff;\n o[62] = x15 >>> 16 & 0xff;\n o[63] = x15 >>> 24 & 0xff;\n}\n\nfunction core_hsalsa20(o,p,k,c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x5 >>> 0 & 0xff;\n o[ 5] = x5 >>> 8 & 0xff;\n o[ 6] = x5 >>> 16 & 0xff;\n o[ 7] = x5 >>> 24 & 0xff;\n\n o[ 8] = x10 >>> 0 & 0xff;\n o[ 9] = x10 >>> 8 & 0xff;\n o[10] = x10 >>> 16 & 0xff;\n o[11] = x10 >>> 24 & 0xff;\n\n o[12] = x15 >>> 0 & 0xff;\n o[13] = x15 >>> 8 & 0xff;\n o[14] = x15 >>> 16 & 0xff;\n o[15] = x15 >>> 24 & 0xff;\n\n o[16] = x6 >>> 0 & 0xff;\n o[17] = x6 >>> 8 & 0xff;\n o[18] = x6 >>> 16 & 0xff;\n o[19] = x6 >>> 24 & 0xff;\n\n o[20] = x7 >>> 0 & 0xff;\n o[21] = x7 >>> 8 & 0xff;\n o[22] = x7 >>> 16 & 0xff;\n o[23] = x7 >>> 24 & 0xff;\n\n o[24] = x8 >>> 0 & 0xff;\n o[25] = x8 >>> 8 & 0xff;\n o[26] = x8 >>> 16 & 0xff;\n o[27] = x8 >>> 24 & 0xff;\n\n o[28] = x9 >>> 0 & 0xff;\n o[29] = x9 >>> 8 & 0xff;\n o[30] = x9 >>> 16 & 0xff;\n o[31] = x9 >>> 24 & 0xff;\n}\n\nfunction crypto_core_salsa20(out,inp,k,c) {\n core_salsa20(out,inp,k,c);\n}\n\nfunction crypto_core_hsalsa20(out,inp,k,c) {\n core_hsalsa20(out,inp,k,c);\n}\n\nvar sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);\n // \"expand 32-byte k\"\n\nfunction crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n mpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n }\n return 0;\n}\n\nfunction crypto_stream_salsa20(c,cpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = x[i];\n }\n return 0;\n}\n\nfunction crypto_stream(c,cpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20(c,cpos,d,sn,s);\n}\n\nfunction crypto_stream_xor(c,cpos,m,mpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s);\n}\n\n/*\n* Port of Andrew Moon's Poly1305-donna-16. Public domain.\n* https://github.com/floodyberry/poly1305-donna\n*/\n\nvar poly1305 = function(key) {\n this.buffer = new Uint8Array(16);\n this.r = new Uint16Array(10);\n this.h = new Uint16Array(10);\n this.pad = new Uint16Array(8);\n this.leftover = 0;\n this.fin = 0;\n\n var t0, t1, t2, t3, t4, t5, t6, t7;\n\n t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff;\n t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = ((t4 >>> 1)) & 0x1ffe;\n t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = ((t7 >>> 5)) & 0x007f;\n\n this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;\n this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;\n this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;\n this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;\n this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;\n this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;\n this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;\n this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;\n};\n\npoly1305.prototype.blocks = function(m, mpos, bytes) {\n var hibit = this.fin ? 0 : (1 << 11);\n var t0, t1, t2, t3, t4, t5, t6, t7, c;\n var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;\n\n var h0 = this.h[0],\n h1 = this.h[1],\n h2 = this.h[2],\n h3 = this.h[3],\n h4 = this.h[4],\n h5 = this.h[5],\n h6 = this.h[6],\n h7 = this.h[7],\n h8 = this.h[8],\n h9 = this.h[9];\n\n var r0 = this.r[0],\n r1 = this.r[1],\n r2 = this.r[2],\n r3 = this.r[3],\n r4 = this.r[4],\n r5 = this.r[5],\n r6 = this.r[6],\n r7 = this.r[7],\n r8 = this.r[8],\n r9 = this.r[9];\n\n while (bytes >= 16) {\n t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff;\n t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n\n c = 0;\n\n d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13); d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13); d0 &= 0x1fff;\n\n d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13); d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13); d1 &= 0x1fff;\n\n d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13); d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13); d2 &= 0x1fff;\n\n d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13); d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13); d3 &= 0x1fff;\n\n d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13); d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13); d4 &= 0x1fff;\n\n d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13); d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13); d5 &= 0x1fff;\n\n d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13); d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13); d6 &= 0x1fff;\n\n d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13); d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13); d7 &= 0x1fff;\n\n d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13); d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13); d8 &= 0x1fff;\n\n d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13); d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13); d9 &= 0x1fff;\n\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n\n mpos += 16;\n bytes -= 16;\n }\n this.h[0] = h0;\n this.h[1] = h1;\n this.h[2] = h2;\n this.h[3] = h3;\n this.h[4] = h4;\n this.h[5] = h5;\n this.h[6] = h6;\n this.h[7] = h7;\n this.h[8] = h8;\n this.h[9] = h9;\n};\n\npoly1305.prototype.finish = function(mac, macpos) {\n var g = new Uint16Array(10);\n var c, mask, f, i;\n\n if (this.leftover) {\n i = this.leftover;\n this.buffer[i++] = 1;\n for (; i < 16; i++) this.buffer[i] = 0;\n this.fin = 1;\n this.blocks(this.buffer, 0, 16);\n }\n\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n for (i = 2; i < 10; i++) {\n this.h[i] += c;\n c = this.h[i] >>> 13;\n this.h[i] &= 0x1fff;\n }\n this.h[0] += (c * 5);\n c = this.h[0] >>> 13;\n this.h[0] &= 0x1fff;\n this.h[1] += c;\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n this.h[2] += c;\n\n g[0] = this.h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (i = 1; i < 10; i++) {\n g[i] = this.h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n\n mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) g[i] &= mask;\n mask = ~mask;\n for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i];\n\n this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff;\n this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff;\n this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff;\n this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff;\n this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff;\n this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff;\n this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff;\n this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff;\n\n f = this.h[0] + this.pad[0];\n this.h[0] = f & 0xffff;\n for (i = 1; i < 8; i++) {\n f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;\n this.h[i] = f & 0xffff;\n }\n\n mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff;\n mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff;\n mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff;\n mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff;\n mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff;\n mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff;\n mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff;\n mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff;\n mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff;\n mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff;\n mac[macpos+10] = (this.h[5] >>> 0) & 0xff;\n mac[macpos+11] = (this.h[5] >>> 8) & 0xff;\n mac[macpos+12] = (this.h[6] >>> 0) & 0xff;\n mac[macpos+13] = (this.h[6] >>> 8) & 0xff;\n mac[macpos+14] = (this.h[7] >>> 0) & 0xff;\n mac[macpos+15] = (this.h[7] >>> 8) & 0xff;\n};\n\npoly1305.prototype.update = function(m, mpos, bytes) {\n var i, want;\n\n if (this.leftover) {\n want = (16 - this.leftover);\n if (want > bytes)\n want = bytes;\n for (i = 0; i < want; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n bytes -= want;\n mpos += want;\n this.leftover += want;\n if (this.leftover < 16)\n return;\n this.blocks(this.buffer, 0, 16);\n this.leftover = 0;\n }\n\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this.blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n\n if (bytes) {\n for (i = 0; i < bytes; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n this.leftover += bytes;\n }\n};\n\nfunction crypto_onetimeauth(out, outpos, m, mpos, n, k) {\n var s = new poly1305(k);\n s.update(m, mpos, n);\n s.finish(out, outpos);\n return 0;\n}\n\nfunction crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {\n var x = new Uint8Array(16);\n crypto_onetimeauth(x,0,m,mpos,n,k);\n return crypto_verify_16(h,hpos,x,0);\n}\n\nfunction crypto_secretbox(c,m,d,n,k) {\n var i;\n if (d < 32) return -1;\n crypto_stream_xor(c,0,m,0,d,n,k);\n crypto_onetimeauth(c, 16, c, 32, d - 32, c);\n for (i = 0; i < 16; i++) c[i] = 0;\n return 0;\n}\n\nfunction crypto_secretbox_open(m,c,d,n,k) {\n var i;\n var x = new Uint8Array(32);\n if (d < 32) return -1;\n crypto_stream(x,0,32,n,k);\n if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1;\n crypto_stream_xor(m,0,c,0,d,n,k);\n for (i = 0; i < 32; i++) m[i] = 0;\n return 0;\n}\n\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i]|0;\n}\n\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c-1 + 37 * (c-1);\n}\n\nfunction sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\n\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i]>>8;\n }\n}\n\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\n\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\n\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n}\n\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];\n}\n\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];\n}\n\nfunction M(o, a, b) {\n var v, c,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,\n t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11],\n b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n\n // first car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n // second car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n o[ 0] = t0;\n o[ 1] = t1;\n o[ 2] = t2;\n o[ 3] = t3;\n o[ 4] = t4;\n o[ 5] = t5;\n o[ 6] = t6;\n o[ 7] = t7;\n o[ 8] = t8;\n o[ 9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\n\nfunction S(o, a) {\n M(o, a, a);\n}\n\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if(a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++) z[i] = n[i];\n z[31]=(n[31]&127)|64;\n z[0]&=248;\n unpack25519(x,p);\n for (i = 0; i < 16; i++) {\n b[i]=x[i];\n d[i]=a[i]=c[i]=0;\n }\n a[0]=d[0]=1;\n for (i=254; i>=0; --i) {\n r=(z[i>>>3]>>>(i&7))&1;\n sel25519(a,b,r);\n sel25519(c,d,r);\n A(e,a,c);\n Z(a,a,c);\n A(c,b,d);\n Z(b,b,d);\n S(d,e);\n S(f,a);\n M(a,c,a);\n M(c,b,e);\n A(e,a,c);\n Z(a,a,c);\n S(b,a);\n Z(c,d,f);\n M(a,c,_121665);\n A(a,a,d);\n M(c,c,a);\n M(a,d,f);\n M(d,b,x);\n S(b,e);\n sel25519(a,b,r);\n sel25519(c,d,r);\n }\n for (i = 0; i < 16; i++) {\n x[i+16]=a[i];\n x[i+32]=c[i];\n x[i+48]=b[i];\n x[i+64]=d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32,x32);\n M(x16,x16,x32);\n pack25519(q,x16);\n return 0;\n}\n\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\n\nfunction crypto_box_keypair(y, x) {\n randombytes(x, 32);\n return crypto_scalarmult_base(y, x);\n}\n\nfunction crypto_box_beforenm(k, y, x) {\n var s = new Uint8Array(32);\n crypto_scalarmult(s, x, y);\n return crypto_core_hsalsa20(k, _0, s, sigma);\n}\n\nvar crypto_box_afternm = crypto_secretbox;\nvar crypto_box_open_afternm = crypto_secretbox_open;\n\nfunction crypto_box(c, m, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_afternm(c, m, d, n, k);\n}\n\nfunction crypto_box_open(m, c, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_open_afternm(m, c, d, n, k);\n}\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16),\n bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7,\n bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7,\n th, tl, i, j, h, l, a, b, c, d;\n\n var ah0 = hh[0],\n ah1 = hh[1],\n ah2 = hh[2],\n ah3 = hh[3],\n ah4 = hh[4],\n ah5 = hh[5],\n ah6 = hh[6],\n ah7 = hh[7],\n\n al0 = hl[0],\n al1 = hl[1],\n al2 = hl[2],\n al3 = hl[3],\n al4 = hl[4],\n al5 = hl[5],\n al6 = hl[6],\n al7 = hl[7];\n\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3];\n wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n\n // add\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32))));\n l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // K\n h = K[i*2];\n l = K[i*2+1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // w\n h = wh[i%16];\n l = wl[i%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n\n // add\n h = th;\n l = tl;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32))));\n l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n\n // add\n h = bh3;\n l = bl3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = th;\n l = tl;\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n\n if (i%16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = wh[(j+9)%16];\n l = wl[(j+9)%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma0\n th = wh[(j+1)%16];\n tl = wl[(j+1)%16];\n h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma1\n th = wh[(j+14)%16];\n tl = wl[(j+14)%16];\n h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n\n // add\n h = ah0;\n l = al0;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[0];\n l = hl[0];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n\n h = ah1;\n l = al1;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[1];\n l = hl[1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n\n h = ah2;\n l = al2;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[2];\n l = hl[2];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n\n h = ah3;\n l = al3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[3];\n l = hl[3];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n\n h = ah4;\n l = al4;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[4];\n l = hl[4];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n\n h = ah5;\n l = al5;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[5];\n l = hl[5];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n\n h = ah6;\n l = al6;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[6];\n l = hl[6];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[7];\n l = hl[7];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n\n pos += 128;\n n -= 128;\n }\n\n return n;\n}\n\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8),\n hl = new Int32Array(8),\n x = new Uint8Array(256),\n i, b = n;\n\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n\n for (i = 0; i < n; i++) x[i] = m[b-n+i];\n x[n] = 128;\n\n n = 256-128*(n<112?1:0);\n x[n-9] = 0;\n ts64(x, n-8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n\n for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]);\n\n return 0;\n}\n\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf(),\n g = gf(), h = gf(), t = gf();\n\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\n\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\n\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\n\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i/8)|0] >> (i&7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\n\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\n\nfunction crypto_sign_keypair(pk, sk, seeded) {\n var d = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n var i;\n\n if (!seeded) randombytes(sk, 32);\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n scalarbase(p, d);\n pack(pk, p);\n\n for (i = 0; i < 32; i++) sk[i+32] = pk[i];\n return 0;\n}\n\nvar L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);\n\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = Math.floor((x[j] + 128) / 256);\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++) x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i+1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\n\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++) x[i] = r[i];\n for (i = 0; i < 64; i++) r[i] = 0;\n modL(r, x);\n}\n\n// Note: difference from C - smlen returned, not passed as argument.\nfunction crypto_sign(sm, m, n, sk) {\n var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n var smlen = n + 64;\n for (i = 0; i < n; i++) sm[64 + i] = m[i];\n for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];\n\n crypto_hash(r, sm.subarray(32), n+32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n\n for (i = 32; i < 64; i++) sm[i] = sk[i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n\n for (i = 0; i < 64; i++) x[i] = 0;\n for (i = 0; i < 32; i++) x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i+j] += h[i] * d[j];\n }\n }\n\n modL(sm.subarray(32), x);\n return smlen;\n}\n\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n}\n\nfunction crypto_sign_open(m, sm, n, pk) {\n var i;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()],\n q = [gf(), gf(), gf(), gf()];\n\n if (n < 64) return -1;\n\n if (unpackneg(q, pk)) return -1;\n\n for (i = 0; i < n; i++) m[i] = sm[i];\n for (i = 0; i < 32; i++) m[i+32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++) m[i] = 0;\n return -1;\n }\n\n for (i = 0; i < n; i++) m[i] = sm[i + 64];\n return n;\n}\n\nvar crypto_secretbox_KEYBYTES = 32,\n crypto_secretbox_NONCEBYTES = 24,\n crypto_secretbox_ZEROBYTES = 32,\n crypto_secretbox_BOXZEROBYTES = 16,\n crypto_scalarmult_BYTES = 32,\n crypto_scalarmult_SCALARBYTES = 32,\n crypto_box_PUBLICKEYBYTES = 32,\n crypto_box_SECRETKEYBYTES = 32,\n crypto_box_BEFORENMBYTES = 32,\n crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES,\n crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES,\n crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES,\n crypto_sign_BYTES = 64,\n crypto_sign_PUBLICKEYBYTES = 32,\n crypto_sign_SECRETKEYBYTES = 64,\n crypto_sign_SEEDBYTES = 32,\n crypto_hash_BYTES = 64;\n\nnacl.lowlevel = {\n crypto_core_hsalsa20: crypto_core_hsalsa20,\n crypto_stream_xor: crypto_stream_xor,\n crypto_stream: crypto_stream,\n crypto_stream_salsa20_xor: crypto_stream_salsa20_xor,\n crypto_stream_salsa20: crypto_stream_salsa20,\n crypto_onetimeauth: crypto_onetimeauth,\n crypto_onetimeauth_verify: crypto_onetimeauth_verify,\n crypto_verify_16: crypto_verify_16,\n crypto_verify_32: crypto_verify_32,\n crypto_secretbox: crypto_secretbox,\n crypto_secretbox_open: crypto_secretbox_open,\n crypto_scalarmult: crypto_scalarmult,\n crypto_scalarmult_base: crypto_scalarmult_base,\n crypto_box_beforenm: crypto_box_beforenm,\n crypto_box_afternm: crypto_box_afternm,\n crypto_box: crypto_box,\n crypto_box_open: crypto_box_open,\n crypto_box_keypair: crypto_box_keypair,\n crypto_hash: crypto_hash,\n crypto_sign: crypto_sign,\n crypto_sign_keypair: crypto_sign_keypair,\n crypto_sign_open: crypto_sign_open,\n\n crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES,\n crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES,\n crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES,\n crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES,\n crypto_scalarmult_BYTES: crypto_scalarmult_BYTES,\n crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES,\n crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES,\n crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES,\n crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES,\n crypto_box_NONCEBYTES: crypto_box_NONCEBYTES,\n crypto_box_ZEROBYTES: crypto_box_ZEROBYTES,\n crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES,\n crypto_sign_BYTES: crypto_sign_BYTES,\n crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES,\n crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES,\n crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES,\n crypto_hash_BYTES: crypto_hash_BYTES,\n\n gf: gf,\n D: D,\n L: L,\n pack25519: pack25519,\n unpack25519: unpack25519,\n M: M,\n A: A,\n S: S,\n Z: Z,\n pow2523: pow2523,\n add: add,\n set25519: set25519,\n modL: modL,\n scalarmult: scalarmult,\n scalarbase: scalarbase,\n};\n\n/* High-level API */\n\nfunction checkLengths(k, n) {\n if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size');\n if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size');\n}\n\nfunction checkBoxLengths(pk, sk) {\n if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size');\n if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size');\n}\n\nfunction checkArrayTypes() {\n for (var i = 0; i < arguments.length; i++) {\n if (!(arguments[i] instanceof Uint8Array))\n throw new TypeError('unexpected type, use Uint8Array');\n }\n}\n\nfunction cleanup(arr) {\n for (var i = 0; i < arr.length; i++) arr[i] = 0;\n}\n\nnacl.randomBytes = function(n) {\n var b = new Uint8Array(n);\n randombytes(b, n);\n return b;\n};\n\nnacl.secretbox = function(msg, nonce, key) {\n checkArrayTypes(msg, nonce, key);\n checkLengths(key, nonce);\n var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);\n var c = new Uint8Array(m.length);\n for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i];\n crypto_secretbox(c, m, m.length, nonce, key);\n return c.subarray(crypto_secretbox_BOXZEROBYTES);\n};\n\nnacl.secretbox.open = function(box, nonce, key) {\n checkArrayTypes(box, nonce, key);\n checkLengths(key, nonce);\n var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);\n var m = new Uint8Array(c.length);\n for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i];\n if (c.length < 32) return null;\n if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null;\n return m.subarray(crypto_secretbox_ZEROBYTES);\n};\n\nnacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;\nnacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;\nnacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;\n\nnacl.scalarMult = function(n, p) {\n checkArrayTypes(n, p);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult(q, n, p);\n return q;\n};\n\nnacl.scalarMult.base = function(n) {\n checkArrayTypes(n);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult_base(q, n);\n return q;\n};\n\nnacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;\nnacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;\n\nnacl.box = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox(msg, nonce, k);\n};\n\nnacl.box.before = function(publicKey, secretKey) {\n checkArrayTypes(publicKey, secretKey);\n checkBoxLengths(publicKey, secretKey);\n var k = new Uint8Array(crypto_box_BEFORENMBYTES);\n crypto_box_beforenm(k, publicKey, secretKey);\n return k;\n};\n\nnacl.box.after = nacl.secretbox;\n\nnacl.box.open = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox.open(msg, nonce, k);\n};\n\nnacl.box.open.after = nacl.secretbox.open;\n\nnacl.box.keyPair = function() {\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);\n crypto_box_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.box.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_box_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n crypto_scalarmult_base(pk, secretKey);\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;\nnacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;\nnacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;\nnacl.box.nonceLength = crypto_box_NONCEBYTES;\nnacl.box.overheadLength = nacl.secretbox.overheadLength;\n\nnacl.sign = function(msg, secretKey) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length);\n crypto_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n};\n\nnacl.sign.open = function(signedMsg, publicKey) {\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0) return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++) m[i] = tmp[i];\n return m;\n};\n\nnacl.sign.detached = function(msg, secretKey) {\n var signedMsg = nacl.sign(msg, secretKey);\n var sig = new Uint8Array(crypto_sign_BYTES);\n for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];\n return sig;\n};\n\nnacl.sign.detached.verify = function(msg, sig, publicKey) {\n checkArrayTypes(msg, sig, publicKey);\n if (sig.length !== crypto_sign_BYTES)\n throw new Error('bad signature size');\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var sm = new Uint8Array(crypto_sign_BYTES + msg.length);\n var m = new Uint8Array(crypto_sign_BYTES + msg.length);\n var i;\n for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];\n for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i];\n return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);\n};\n\nnacl.sign.keyPair = function() {\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n crypto_sign_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i];\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.sign.keyPair.fromSeed = function(seed) {\n checkArrayTypes(seed);\n if (seed.length !== crypto_sign_SEEDBYTES)\n throw new Error('bad seed size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n for (var i = 0; i < 32; i++) sk[i] = seed[i];\n crypto_sign_keypair(pk, sk, true);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;\nnacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;\nnacl.sign.seedLength = crypto_sign_SEEDBYTES;\nnacl.sign.signatureLength = crypto_sign_BYTES;\n\nnacl.hash = function(msg) {\n checkArrayTypes(msg);\n var h = new Uint8Array(crypto_hash_BYTES);\n crypto_hash(h, msg, msg.length);\n return h;\n};\n\nnacl.hash.hashLength = crypto_hash_BYTES;\n\nnacl.verify = function(x, y) {\n checkArrayTypes(x, y);\n // Zero length arguments are considered not equal.\n if (x.length === 0 || y.length === 0) return false;\n if (x.length !== y.length) return false;\n return (vn(x, 0, y, 0, x.length) === 0) ? true : false;\n};\n\nnacl.setPRNG = function(fn) {\n randombytes = fn;\n};\n\n(function() {\n // Initialize PRNG if environment provides CSPRNG.\n // If not, methods calling randombytes will throw.\n var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;\n if (crypto && crypto.getRandomValues) {\n // Browsers.\n var QUOTA = 65536;\n nacl.setPRNG(function(x, n) {\n var i, v = new Uint8Array(n);\n for (i = 0; i < n; i += QUOTA) {\n crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));\n }\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n } else if (typeof require !== 'undefined') {\n // Node.js.\n crypto = require('crypto');\n if (crypto && crypto.randomBytes) {\n nacl.setPRNG(function(x, n) {\n var i, v = crypto.randomBytes(n);\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n }\n }\n})();\n\n})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));\n","function number(n: number) {\n if (!Number.isSafeInteger(n) || n < 0) throw new Error(`Wrong positive integer: ${n}`);\n}\n\nfunction bool(b: boolean) {\n if (typeof b !== 'boolean') throw new Error(`Expected boolean, not ${b}`);\n}\n\nfunction bytes(b: Uint8Array | undefined, ...lengths: number[]) {\n if (!(b instanceof Uint8Array)) throw new Error('Expected Uint8Array');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error(`Expected Uint8Array of length ${lengths}, not of length=${b.length}`);\n}\n\ntype Hash = {\n (data: Uint8Array): Uint8Array;\n blockLen: number;\n outputLen: number;\n create: any;\n};\nfunction hash(hash: Hash) {\n if (typeof hash !== 'function' || typeof hash.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n number(hash.outputLen);\n number(hash.blockLen);\n}\n\nfunction exists(instance: any, checkFinished = true) {\n if (instance.destroyed) throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished) throw new Error('Hash#digest() has already been called');\n}\nfunction output(out: any, instance: any) {\n bytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error(`digestInto() expects output buffer of length at least ${min}`);\n }\n}\n\nexport { number, bool, bytes, hash, exists, output };\n\nconst assert = { number, bool, bytes, hash, exists, output };\nexport default assert;\n","/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated, we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\n\n// prettier-ignore\nexport type TypedArray = Int8Array | Uint8ClampedArray | Uint8Array |\n Uint16Array | Int16Array | Uint32Array | Int32Array;\n\nconst u8a = (a: any): a is Uint8Array => a instanceof Uint8Array;\n// Cast array to different type\nexport const u8 = (arr: TypedArray) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexport const u32 = (arr: TypedArray) =>\n new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n\n// Cast array to view\nexport const createView = (arr: TypedArray) =>\n new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n\n// The rotate right (circular right shift) operation for uint32\nexport const rotr = (word: number, shift: number) => (word << (32 - shift)) | (word >>> shift);\n\n// big-endian hardware is rare. Just in case someone still decides to run hashes:\n// early-throw an error because we don't support BE yet.\nexport const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\nif (!isLE) throw new Error('Non little-endian hardware is not supported');\n\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) =>\n i.toString(16).padStart(2, '0')\n);\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes: Uint8Array): string {\n if (!u8a(bytes)) throw new Error('Uint8Array expected');\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex: string): Uint8Array {\n if (typeof hex !== 'string') throw new Error('hex string expected, got ' + typeof hex);\n const len = hex.length;\n if (len % 2) throw new Error('padded hex string expected, got unpadded hex of length ' + len);\n const array = new Uint8Array(len / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0) throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\n\n// There is no setImmediate in browser and setTimeout is slow.\n// call of async fn will return Promise, which will be fullfiled only on\n// next scheduler queue processing step and this is exactly what we need.\nexport const nextTick = async () => {};\n\n// Returns control to thread each 'tick' ms to avoid blocking\nexport async function asyncLoop(iters: number, tick: number, cb: (i: number) => void) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick) continue;\n await nextTick();\n ts += diff;\n }\n}\n\n// Global symbols in both browsers and Node.js since v11\n// See https://github.com/microsoft/TypeScript/issues/31535\ndeclare const TextEncoder: any;\n\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str: string): Uint8Array {\n if (typeof str !== 'string') throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n\nexport type Input = Uint8Array | string;\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data: Input): Uint8Array {\n if (typeof data === 'string') data = utf8ToBytes(data);\n if (!u8a(data)) throw new Error(`expected Uint8Array, got ${typeof data}`);\n return data;\n}\n\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays: Uint8Array[]): Uint8Array {\n const r = new Uint8Array(arrays.reduce((sum, a) => sum + a.length, 0));\n let pad = 0; // walk through each item, ensure they have proper type\n arrays.forEach((a) => {\n if (!u8a(a)) throw new Error('Uint8Array expected');\n r.set(a, pad);\n pad += a.length;\n });\n return r;\n}\n\n// For runtime check if class implements interface\nexport abstract class Hash> {\n abstract blockLen: number; // Bytes per block\n abstract outputLen: number; // Bytes in output\n abstract update(buf: Input): this;\n // Writes digest into buf\n abstract digestInto(buf: Uint8Array): void;\n abstract digest(): Uint8Array;\n /**\n * Resets internal state. Makes Hash instance unusable.\n * Reset is impossible for keyed hashes if key is consumed into state. If digest is not consumed\n * by user, they will need to manually call `destroy()` when zeroing is necessary.\n */\n abstract destroy(): void;\n /**\n * Clones hash instance. Unsafe: doesn't check whether `to` is valid. Can be used as `clone()`\n * when no options are passed.\n * Reasons to use `_cloneInto` instead of clone: 1) performance 2) reuse instance => all internal\n * buffers are overwritten => causes buffer overwrite which is used for digest in some cases.\n * There are no guarantees for clean-up because it's impossible in JS.\n */\n abstract _cloneInto(to?: T): T;\n // Safe version that clones internal state\n clone(): T {\n return this._cloneInto();\n }\n}\n\n/**\n * XOF: streaming API to read digest in chunks.\n * Same as 'squeeze' in keccak/k12 and 'seek' in blake3, but more generic name.\n * When hash used in XOF mode it is up to user to call '.destroy' afterwards, since we cannot\n * destroy state, next call can require more bytes.\n */\nexport type HashXOF> = Hash & {\n xof(bytes: number): Uint8Array; // Read 'bytes' bytes from digest stream\n xofInto(buf: Uint8Array): Uint8Array; // read buf.length bytes from digest stream into buf\n};\n\nconst toStr = {}.toString;\ntype EmptyObj = {};\nexport function checkOpts(\n defaults: T1,\n opts?: T2\n): T1 & T2 {\n if (opts !== undefined && toStr.call(opts) !== '[object Object]')\n throw new Error('Options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged as T1 & T2;\n}\n\nexport type CHash = ReturnType;\n\nexport function wrapConstructor>(hashCons: () => Hash) {\n const hashC = (msg: Input): Uint8Array => hashCons().update(toBytes(msg)).digest();\n const tmp = hashCons();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashCons();\n return hashC;\n}\n\nexport function wrapConstructorWithOpts, T extends Object>(\n hashCons: (opts?: T) => Hash\n) {\n const hashC = (msg: Input, opts?: T): Uint8Array => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({} as T);\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts: T) => hashCons(opts);\n return hashC;\n}\n\nexport function wrapXOFConstructorWithOpts, T extends Object>(\n hashCons: (opts?: T) => HashXOF\n) {\n const hashC = (msg: Input, opts?: T): Uint8Array => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({} as T);\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts: T) => hashCons(opts);\n return hashC;\n}\n\n/**\n * Secure PRNG. Uses `crypto.getRandomValues`, which defers to OS.\n */\nexport function randomBytes(bytesLength = 32): Uint8Array {\n if (crypto && typeof crypto.getRandomValues === 'function') {\n return crypto.getRandomValues(new Uint8Array(bytesLength));\n }\n throw new Error('crypto.getRandomValues must be defined');\n}\n","import { exists, output } from './_assert.js';\nimport { Hash, createView, Input, toBytes } from './utils.js';\n\n// Polyfill for Safari 14\nfunction setBigUint64(view: DataView, byteOffset: number, value: bigint, isLE: boolean): void {\n if (typeof view.setBigUint64 === 'function') return view.setBigUint64(byteOffset, value, isLE);\n const _32n = BigInt(32);\n const _u32_max = BigInt(0xffffffff);\n const wh = Number((value >> _32n) & _u32_max);\n const wl = Number(value & _u32_max);\n const h = isLE ? 4 : 0;\n const l = isLE ? 0 : 4;\n view.setUint32(byteOffset + h, wh, isLE);\n view.setUint32(byteOffset + l, wl, isLE);\n}\n\n// Base SHA2 class (RFC 6234)\nexport abstract class SHA2> extends Hash {\n protected abstract process(buf: DataView, offset: number): void;\n protected abstract get(): number[];\n protected abstract set(...args: number[]): void;\n abstract destroy(): void;\n protected abstract roundClean(): void;\n // For partial updates less than block size\n protected buffer: Uint8Array;\n protected view: DataView;\n protected finished = false;\n protected length = 0;\n protected pos = 0;\n protected destroyed = false;\n\n constructor(\n readonly blockLen: number,\n public outputLen: number,\n readonly padOffset: number,\n readonly isLE: boolean\n ) {\n super();\n this.buffer = new Uint8Array(blockLen);\n this.view = createView(this.buffer);\n }\n update(data: Input): this {\n exists(this);\n const { view, buffer, blockLen } = this;\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len; ) {\n const take = Math.min(blockLen - this.pos, len - pos);\n // Fast path: we have at least one block in input, cast it to view and process\n if (take === blockLen) {\n const dataView = createView(data);\n for (; blockLen <= len - pos; pos += blockLen) this.process(dataView, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(view, 0);\n this.pos = 0;\n }\n }\n this.length += data.length;\n this.roundClean();\n return this;\n }\n digestInto(out: Uint8Array) {\n exists(this);\n output(out, this);\n this.finished = true;\n // Padding\n // We can avoid allocation of buffer for padding completely if it\n // was previously not allocated here. But it won't change performance.\n const { buffer, view, blockLen, isLE } = this;\n let { pos } = this;\n // append the bit '1' to the message\n buffer[pos++] = 0b10000000;\n this.buffer.subarray(pos).fill(0);\n // we have less than padOffset left in buffer, so we cannot put length in current block, need process it and pad again\n if (this.padOffset > blockLen - pos) {\n this.process(view, 0);\n pos = 0;\n }\n // Pad until full block byte with zeros\n for (let i = pos; i < blockLen; i++) buffer[i] = 0;\n // Note: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n // So we just write lowest 64 bits of that value.\n setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE);\n this.process(view, 0);\n const oview = createView(out);\n const len = this.outputLen;\n // NOTE: we do division by 4 later, which should be fused in single op with modulo by JIT\n if (len % 4) throw new Error('_sha2: outputLen should be aligned to 32bit');\n const outLen = len / 4;\n const state = this.get();\n if (outLen > state.length) throw new Error('_sha2: outputLen bigger than state');\n for (let i = 0; i < outLen; i++) oview.setUint32(4 * i, state[i], isLE);\n }\n digest() {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n _cloneInto(to?: T): T {\n to ||= new (this.constructor as any)() as T;\n to.set(...this.get());\n const { blockLen, buffer, length, finished, destroyed, pos } = this;\n to.length = length;\n to.pos = pos;\n to.finished = finished;\n to.destroyed = destroyed;\n if (length % blockLen) to.buffer.set(buffer);\n return to;\n }\n}\n","import { SHA2 } from './_sha2.js';\nimport { rotr, wrapConstructor } from './utils.js';\n\n// SHA2-256 need to try 2^128 hashes to execute birthday attack.\n// BTC network is doing 2^67 hashes/sec as per early 2023.\n\n// Choice: a ? b : c\nconst Chi = (a: number, b: number, c: number) => (a & b) ^ (~a & c);\n// Majority function, true if any two inpust is true\nconst Maj = (a: number, b: number, c: number) => (a & b) ^ (a & c) ^ (b & c);\n\n// Round constants:\n// first 32 bits of the fractional parts of the cube roots of the first 64 primes 2..311)\n// prettier-ignore\nconst SHA256_K = /* @__PURE__ */new Uint32Array([\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\n// Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):\n// prettier-ignore\nconst IV = /* @__PURE__ */new Uint32Array([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n]);\n\n// Temporary buffer, not used to store anything between runs\n// Named this way because it matches specification.\nconst SHA256_W = /* @__PURE__ */ new Uint32Array(64);\nclass SHA256 extends SHA2 {\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n A = IV[0] | 0;\n B = IV[1] | 0;\n C = IV[2] | 0;\n D = IV[3] | 0;\n E = IV[4] | 0;\n F = IV[5] | 0;\n G = IV[6] | 0;\n H = IV[7] | 0;\n\n constructor() {\n super(64, 32, 8, false);\n }\n protected get(): [number, number, number, number, number, number, number, number] {\n const { A, B, C, D, E, F, G, H } = this;\n return [A, B, C, D, E, F, G, H];\n }\n // prettier-ignore\n protected set(\n A: number, B: number, C: number, D: number, E: number, F: number, G: number, H: number\n ) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n this.F = F | 0;\n this.G = G | 0;\n this.H = H | 0;\n }\n protected process(view: DataView, offset: number): void {\n // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4) SHA256_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 64; i++) {\n const W15 = SHA256_W[i - 15];\n const W2 = SHA256_W[i - 2];\n const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ (W15 >>> 3);\n const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ (W2 >>> 10);\n SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n }\n // Compression function main loop, 64 rounds\n let { A, B, C, D, E, F, G, H } = this;\n for (let i = 0; i < 64; i++) {\n const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);\n const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);\n const T2 = (sigma0 + Maj(A, B, C)) | 0;\n H = G;\n G = F;\n F = E;\n E = (D + T1) | 0;\n D = C;\n C = B;\n B = A;\n A = (T1 + T2) | 0;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n F = (F + this.F) | 0;\n G = (G + this.G) | 0;\n H = (H + this.H) | 0;\n this.set(A, B, C, D, E, F, G, H);\n }\n protected roundClean() {\n SHA256_W.fill(0);\n }\n destroy() {\n this.set(0, 0, 0, 0, 0, 0, 0, 0);\n this.buffer.fill(0);\n }\n}\n// Constants from https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf\nclass SHA224 extends SHA256 {\n A = 0xc1059ed8 | 0;\n B = 0x367cd507 | 0;\n C = 0x3070dd17 | 0;\n D = 0xf70e5939 | 0;\n E = 0xffc00b31 | 0;\n F = 0x68581511 | 0;\n G = 0x64f98fa7 | 0;\n H = 0xbefa4fa4 | 0;\n constructor() {\n super();\n this.outputLen = 28;\n }\n}\n\n/**\n * SHA2-256 hash function\n * @param message - data that would be hashed\n */\nexport const sha256 = /* @__PURE__ */ wrapConstructor(() => new SHA256());\nexport const sha224 = /* @__PURE__ */ wrapConstructor(() => new SHA224());\n","function number(n: number) {\n if (!Number.isSafeInteger(n) || n < 0) throw new Error(`Wrong positive integer: ${n}`);\n}\n\nfunction bool(b: boolean) {\n if (typeof b !== 'boolean') throw new Error(`Expected boolean, not ${b}`);\n}\n\nfunction bytes(b: Uint8Array | undefined, ...lengths: number[]) {\n if (!(b instanceof Uint8Array)) throw new Error('Expected Uint8Array');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error(`Expected Uint8Array of length ${lengths}, not of length=${b.length}`);\n}\n\ntype Hash = {\n (data: Uint8Array): Uint8Array;\n blockLen: number;\n outputLen: number;\n create: any;\n};\nfunction hash(hash: Hash) {\n if (typeof hash !== 'function' || typeof hash.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n number(hash.outputLen);\n number(hash.blockLen);\n}\n\nfunction exists(instance: any, checkFinished = true) {\n if (instance.destroyed) throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished) throw new Error('Hash#digest() has already been called');\n}\nfunction output(out: any, instance: any) {\n bytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error(`digestInto() expects output buffer of length at least ${min}`);\n }\n}\n\nexport { number, bool, bytes, hash, exists, output };\n\nconst assert = { number, bool, bytes, hash, exists, output };\nexport default assert;\n","import { exists, output } from './_assert.js';\nimport { Hash, createView, Input, toBytes } from './utils.js';\n\n// Polyfill for Safari 14\nfunction setBigUint64(view: DataView, byteOffset: number, value: bigint, isLE: boolean): void {\n if (typeof view.setBigUint64 === 'function') return view.setBigUint64(byteOffset, value, isLE);\n const _32n = BigInt(32);\n const _u32_max = BigInt(0xffffffff);\n const wh = Number((value >> _32n) & _u32_max);\n const wl = Number(value & _u32_max);\n const h = isLE ? 4 : 0;\n const l = isLE ? 0 : 4;\n view.setUint32(byteOffset + h, wh, isLE);\n view.setUint32(byteOffset + l, wl, isLE);\n}\n\n// Base SHA2 class (RFC 6234)\nexport abstract class SHA2> extends Hash {\n protected abstract process(buf: DataView, offset: number): void;\n protected abstract get(): number[];\n protected abstract set(...args: number[]): void;\n abstract destroy(): void;\n protected abstract roundClean(): void;\n // For partial updates less than block size\n protected buffer: Uint8Array;\n protected view: DataView;\n protected finished = false;\n protected length = 0;\n protected pos = 0;\n protected destroyed = false;\n\n constructor(\n readonly blockLen: number,\n public outputLen: number,\n readonly padOffset: number,\n readonly isLE: boolean\n ) {\n super();\n this.buffer = new Uint8Array(blockLen);\n this.view = createView(this.buffer);\n }\n update(data: Input): this {\n exists(this);\n const { view, buffer, blockLen } = this;\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len; ) {\n const take = Math.min(blockLen - this.pos, len - pos);\n // Fast path: we have at least one block in input, cast it to view and process\n if (take === blockLen) {\n const dataView = createView(data);\n for (; blockLen <= len - pos; pos += blockLen) this.process(dataView, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(view, 0);\n this.pos = 0;\n }\n }\n this.length += data.length;\n this.roundClean();\n return this;\n }\n digestInto(out: Uint8Array) {\n exists(this);\n output(out, this);\n this.finished = true;\n // Padding\n // We can avoid allocation of buffer for padding completely if it\n // was previously not allocated here. But it won't change performance.\n const { buffer, view, blockLen, isLE } = this;\n let { pos } = this;\n // append the bit '1' to the message\n buffer[pos++] = 0b10000000;\n this.buffer.subarray(pos).fill(0);\n // we have less than padOffset left in buffer, so we cannot put length in current block, need process it and pad again\n if (this.padOffset > blockLen - pos) {\n this.process(view, 0);\n pos = 0;\n }\n // Pad until full block byte with zeros\n for (let i = pos; i < blockLen; i++) buffer[i] = 0;\n // Note: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n // So we just write lowest 64 bits of that value.\n setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE);\n this.process(view, 0);\n const oview = createView(out);\n const len = this.outputLen;\n // NOTE: we do division by 4 later, which should be fused in single op with modulo by JIT\n if (len % 4) throw new Error('_sha2: outputLen should be aligned to 32bit');\n const outLen = len / 4;\n const state = this.get();\n if (outLen > state.length) throw new Error('_sha2: outputLen bigger than state');\n for (let i = 0; i < outLen; i++) oview.setUint32(4 * i, state[i], isLE);\n }\n digest() {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n _cloneInto(to?: T): T {\n to ||= new (this.constructor as any)() as T;\n to.set(...this.get());\n const { blockLen, buffer, length, finished, destroyed, pos } = this;\n to.length = length;\n to.pos = pos;\n to.finished = finished;\n to.destroyed = destroyed;\n if (length % blockLen) to.buffer.set(buffer);\n return to;\n }\n}\n","import { SHA2 } from './_sha2.js';\nimport { rotr, wrapConstructor } from './utils.js';\n\n// SHA2-256 need to try 2^128 hashes to execute birthday attack.\n// BTC network is doing 2^67 hashes/sec as per early 2023.\n\n// Choice: a ? b : c\nconst Chi = (a: number, b: number, c: number) => (a & b) ^ (~a & c);\n// Majority function, true if any two inpust is true\nconst Maj = (a: number, b: number, c: number) => (a & b) ^ (a & c) ^ (b & c);\n\n// Round constants:\n// first 32 bits of the fractional parts of the cube roots of the first 64 primes 2..311)\n// prettier-ignore\nconst SHA256_K = /* @__PURE__ */new Uint32Array([\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\n// Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):\n// prettier-ignore\nconst IV = /* @__PURE__ */new Uint32Array([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n]);\n\n// Temporary buffer, not used to store anything between runs\n// Named this way because it matches specification.\nconst SHA256_W = /* @__PURE__ */ new Uint32Array(64);\nclass SHA256 extends SHA2 {\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n A = IV[0] | 0;\n B = IV[1] | 0;\n C = IV[2] | 0;\n D = IV[3] | 0;\n E = IV[4] | 0;\n F = IV[5] | 0;\n G = IV[6] | 0;\n H = IV[7] | 0;\n\n constructor() {\n super(64, 32, 8, false);\n }\n protected get(): [number, number, number, number, number, number, number, number] {\n const { A, B, C, D, E, F, G, H } = this;\n return [A, B, C, D, E, F, G, H];\n }\n // prettier-ignore\n protected set(\n A: number, B: number, C: number, D: number, E: number, F: number, G: number, H: number\n ) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n this.F = F | 0;\n this.G = G | 0;\n this.H = H | 0;\n }\n protected process(view: DataView, offset: number): void {\n // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4) SHA256_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 64; i++) {\n const W15 = SHA256_W[i - 15];\n const W2 = SHA256_W[i - 2];\n const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ (W15 >>> 3);\n const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ (W2 >>> 10);\n SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n }\n // Compression function main loop, 64 rounds\n let { A, B, C, D, E, F, G, H } = this;\n for (let i = 0; i < 64; i++) {\n const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);\n const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);\n const T2 = (sigma0 + Maj(A, B, C)) | 0;\n H = G;\n G = F;\n F = E;\n E = (D + T1) | 0;\n D = C;\n C = B;\n B = A;\n A = (T1 + T2) | 0;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n F = (F + this.F) | 0;\n G = (G + this.G) | 0;\n H = (H + this.H) | 0;\n this.set(A, B, C, D, E, F, G, H);\n }\n protected roundClean() {\n SHA256_W.fill(0);\n }\n destroy() {\n this.set(0, 0, 0, 0, 0, 0, 0, 0);\n this.buffer.fill(0);\n }\n}\n// Constants from https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf\nclass SHA224 extends SHA256 {\n A = 0xc1059ed8 | 0;\n B = 0x367cd507 | 0;\n C = 0x3070dd17 | 0;\n D = 0xf70e5939 | 0;\n E = 0xffc00b31 | 0;\n F = 0x68581511 | 0;\n G = 0x64f98fa7 | 0;\n H = 0xbefa4fa4 | 0;\n constructor() {\n super();\n this.outputLen = 28;\n }\n}\n\n/**\n * SHA2-256 hash function\n * @param message - data that would be hashed\n */\nexport const sha256 = /* @__PURE__ */ wrapConstructor(() => new SHA256());\nexport const sha224 = /* @__PURE__ */ wrapConstructor(() => new SHA224());\n","// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// See utils.ts for details.\ndeclare const globalThis: Record | undefined;\nexport const crypto =\n typeof globalThis === 'object' && 'crypto' in globalThis ? globalThis.crypto : undefined;\n","/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated, we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\n\n// prettier-ignore\nexport type TypedArray = Int8Array | Uint8ClampedArray | Uint8Array |\n Uint16Array | Int16Array | Uint32Array | Int32Array;\n\nconst u8a = (a: any): a is Uint8Array => a instanceof Uint8Array;\n// Cast array to different type\nexport const u8 = (arr: TypedArray) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexport const u32 = (arr: TypedArray) =>\n new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n\n// Cast array to view\nexport const createView = (arr: TypedArray) =>\n new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n\n// The rotate right (circular right shift) operation for uint32\nexport const rotr = (word: number, shift: number) => (word << (32 - shift)) | (word >>> shift);\n\n// big-endian hardware is rare. Just in case someone still decides to run hashes:\n// early-throw an error because we don't support BE yet.\nexport const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\nif (!isLE) throw new Error('Non little-endian hardware is not supported');\n\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) =>\n i.toString(16).padStart(2, '0')\n);\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes: Uint8Array): string {\n if (!u8a(bytes)) throw new Error('Uint8Array expected');\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex: string): Uint8Array {\n if (typeof hex !== 'string') throw new Error('hex string expected, got ' + typeof hex);\n const len = hex.length;\n if (len % 2) throw new Error('padded hex string expected, got unpadded hex of length ' + len);\n const array = new Uint8Array(len / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0) throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\n\n// There is no setImmediate in browser and setTimeout is slow.\n// call of async fn will return Promise, which will be fullfiled only on\n// next scheduler queue processing step and this is exactly what we need.\nexport const nextTick = async () => {};\n\n// Returns control to thread each 'tick' ms to avoid blocking\nexport async function asyncLoop(iters: number, tick: number, cb: (i: number) => void) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick) continue;\n await nextTick();\n ts += diff;\n }\n}\n\n// Global symbols in both browsers and Node.js since v11\n// See https://github.com/microsoft/TypeScript/issues/31535\ndeclare const TextEncoder: any;\n\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str: string): Uint8Array {\n if (typeof str !== 'string') throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n\nexport type Input = Uint8Array | string;\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data: Input): Uint8Array {\n if (typeof data === 'string') data = utf8ToBytes(data);\n if (!u8a(data)) throw new Error(`expected Uint8Array, got ${typeof data}`);\n return data;\n}\n\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays: Uint8Array[]): Uint8Array {\n const r = new Uint8Array(arrays.reduce((sum, a) => sum + a.length, 0));\n let pad = 0; // walk through each item, ensure they have proper type\n arrays.forEach((a) => {\n if (!u8a(a)) throw new Error('Uint8Array expected');\n r.set(a, pad);\n pad += a.length;\n });\n return r;\n}\n\n// For runtime check if class implements interface\nexport abstract class Hash> {\n abstract blockLen: number; // Bytes per block\n abstract outputLen: number; // Bytes in output\n abstract update(buf: Input): this;\n // Writes digest into buf\n abstract digestInto(buf: Uint8Array): void;\n abstract digest(): Uint8Array;\n /**\n * Resets internal state. Makes Hash instance unusable.\n * Reset is impossible for keyed hashes if key is consumed into state. If digest is not consumed\n * by user, they will need to manually call `destroy()` when zeroing is necessary.\n */\n abstract destroy(): void;\n /**\n * Clones hash instance. Unsafe: doesn't check whether `to` is valid. Can be used as `clone()`\n * when no options are passed.\n * Reasons to use `_cloneInto` instead of clone: 1) performance 2) reuse instance => all internal\n * buffers are overwritten => causes buffer overwrite which is used for digest in some cases.\n * There are no guarantees for clean-up because it's impossible in JS.\n */\n abstract _cloneInto(to?: T): T;\n // Safe version that clones internal state\n clone(): T {\n return this._cloneInto();\n }\n}\n\n/**\n * XOF: streaming API to read digest in chunks.\n * Same as 'squeeze' in keccak/k12 and 'seek' in blake3, but more generic name.\n * When hash used in XOF mode it is up to user to call '.destroy' afterwards, since we cannot\n * destroy state, next call can require more bytes.\n */\nexport type HashXOF> = Hash & {\n xof(bytes: number): Uint8Array; // Read 'bytes' bytes from digest stream\n xofInto(buf: Uint8Array): Uint8Array; // read buf.length bytes from digest stream into buf\n};\n\nconst toStr = {}.toString;\ntype EmptyObj = {};\nexport function checkOpts(\n defaults: T1,\n opts?: T2\n): T1 & T2 {\n if (opts !== undefined && toStr.call(opts) !== '[object Object]')\n throw new Error('Options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged as T1 & T2;\n}\n\nexport type CHash = ReturnType;\n\nexport function wrapConstructor>(hashCons: () => Hash) {\n const hashC = (msg: Input): Uint8Array => hashCons().update(toBytes(msg)).digest();\n const tmp = hashCons();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashCons();\n return hashC;\n}\n\nexport function wrapConstructorWithOpts, T extends Object>(\n hashCons: (opts?: T) => Hash\n) {\n const hashC = (msg: Input, opts?: T): Uint8Array => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({} as T);\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts: T) => hashCons(opts);\n return hashC;\n}\n\nexport function wrapXOFConstructorWithOpts, T extends Object>(\n hashCons: (opts?: T) => HashXOF\n) {\n const hashC = (msg: Input, opts?: T): Uint8Array => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({} as T);\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts: T) => hashCons(opts);\n return hashC;\n}\n\n/**\n * Secure PRNG. Uses `crypto.getRandomValues`, which defers to OS.\n */\nexport function randomBytes(bytesLength = 32): Uint8Array {\n if (crypto && typeof crypto.getRandomValues === 'function') {\n return crypto.getRandomValues(new Uint8Array(bytesLength));\n }\n throw new Error('crypto.getRandomValues must be defined');\n}\n","function number(n: number) {\n if (!Number.isSafeInteger(n) || n < 0) throw new Error(`Wrong positive integer: ${n}`);\n}\n\nfunction bool(b: boolean) {\n if (typeof b !== 'boolean') throw new Error(`Expected boolean, not ${b}`);\n}\n\nfunction bytes(b: Uint8Array | undefined, ...lengths: number[]) {\n if (!(b instanceof Uint8Array)) throw new Error('Expected Uint8Array');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error(`Expected Uint8Array of length ${lengths}, not of length=${b.length}`);\n}\n\ntype Hash = {\n (data: Uint8Array): Uint8Array;\n blockLen: number;\n outputLen: number;\n create: any;\n};\nfunction hash(hash: Hash) {\n if (typeof hash !== 'function' || typeof hash.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n number(hash.outputLen);\n number(hash.blockLen);\n}\n\nfunction exists(instance: any, checkFinished = true) {\n if (instance.destroyed) throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished) throw new Error('Hash#digest() has already been called');\n}\nfunction output(out: any, instance: any) {\n bytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error(`digestInto() expects output buffer of length at least ${min}`);\n }\n}\n\nexport { number, bool, bytes, hash, exists, output };\n\nconst assert = { number, bool, bytes, hash, exists, output };\nexport default assert;\n","/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated, we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\n\n// prettier-ignore\nexport type TypedArray = Int8Array | Uint8ClampedArray | Uint8Array |\n Uint16Array | Int16Array | Uint32Array | Int32Array;\n\nconst u8a = (a: any): a is Uint8Array => a instanceof Uint8Array;\n// Cast array to different type\nexport const u8 = (arr: TypedArray) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexport const u32 = (arr: TypedArray) =>\n new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n\n// Cast array to view\nexport const createView = (arr: TypedArray) =>\n new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n\n// The rotate right (circular right shift) operation for uint32\nexport const rotr = (word: number, shift: number) => (word << (32 - shift)) | (word >>> shift);\n\n// big-endian hardware is rare. Just in case someone still decides to run hashes:\n// early-throw an error because we don't support BE yet.\nexport const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\nif (!isLE) throw new Error('Non little-endian hardware is not supported');\n\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) =>\n i.toString(16).padStart(2, '0')\n);\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes: Uint8Array): string {\n if (!u8a(bytes)) throw new Error('Uint8Array expected');\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex: string): Uint8Array {\n if (typeof hex !== 'string') throw new Error('hex string expected, got ' + typeof hex);\n const len = hex.length;\n if (len % 2) throw new Error('padded hex string expected, got unpadded hex of length ' + len);\n const array = new Uint8Array(len / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0) throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\n\n// There is no setImmediate in browser and setTimeout is slow.\n// call of async fn will return Promise, which will be fullfiled only on\n// next scheduler queue processing step and this is exactly what we need.\nexport const nextTick = async () => {};\n\n// Returns control to thread each 'tick' ms to avoid blocking\nexport async function asyncLoop(iters: number, tick: number, cb: (i: number) => void) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick) continue;\n await nextTick();\n ts += diff;\n }\n}\n\n// Global symbols in both browsers and Node.js since v11\n// See https://github.com/microsoft/TypeScript/issues/31535\ndeclare const TextEncoder: any;\n\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str: string): Uint8Array {\n if (typeof str !== 'string') throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n\nexport type Input = Uint8Array | string;\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data: Input): Uint8Array {\n if (typeof data === 'string') data = utf8ToBytes(data);\n if (!u8a(data)) throw new Error(`expected Uint8Array, got ${typeof data}`);\n return data;\n}\n\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays: Uint8Array[]): Uint8Array {\n const r = new Uint8Array(arrays.reduce((sum, a) => sum + a.length, 0));\n let pad = 0; // walk through each item, ensure they have proper type\n arrays.forEach((a) => {\n if (!u8a(a)) throw new Error('Uint8Array expected');\n r.set(a, pad);\n pad += a.length;\n });\n return r;\n}\n\n// For runtime check if class implements interface\nexport abstract class Hash> {\n abstract blockLen: number; // Bytes per block\n abstract outputLen: number; // Bytes in output\n abstract update(buf: Input): this;\n // Writes digest into buf\n abstract digestInto(buf: Uint8Array): void;\n abstract digest(): Uint8Array;\n /**\n * Resets internal state. Makes Hash instance unusable.\n * Reset is impossible for keyed hashes if key is consumed into state. If digest is not consumed\n * by user, they will need to manually call `destroy()` when zeroing is necessary.\n */\n abstract destroy(): void;\n /**\n * Clones hash instance. Unsafe: doesn't check whether `to` is valid. Can be used as `clone()`\n * when no options are passed.\n * Reasons to use `_cloneInto` instead of clone: 1) performance 2) reuse instance => all internal\n * buffers are overwritten => causes buffer overwrite which is used for digest in some cases.\n * There are no guarantees for clean-up because it's impossible in JS.\n */\n abstract _cloneInto(to?: T): T;\n // Safe version that clones internal state\n clone(): T {\n return this._cloneInto();\n }\n}\n\n/**\n * XOF: streaming API to read digest in chunks.\n * Same as 'squeeze' in keccak/k12 and 'seek' in blake3, but more generic name.\n * When hash used in XOF mode it is up to user to call '.destroy' afterwards, since we cannot\n * destroy state, next call can require more bytes.\n */\nexport type HashXOF> = Hash & {\n xof(bytes: number): Uint8Array; // Read 'bytes' bytes from digest stream\n xofInto(buf: Uint8Array): Uint8Array; // read buf.length bytes from digest stream into buf\n};\n\nconst toStr = {}.toString;\ntype EmptyObj = {};\nexport function checkOpts(\n defaults: T1,\n opts?: T2\n): T1 & T2 {\n if (opts !== undefined && toStr.call(opts) !== '[object Object]')\n throw new Error('Options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged as T1 & T2;\n}\n\nexport type CHash = ReturnType;\n\nexport function wrapConstructor>(hashCons: () => Hash) {\n const hashC = (msg: Input): Uint8Array => hashCons().update(toBytes(msg)).digest();\n const tmp = hashCons();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashCons();\n return hashC;\n}\n\nexport function wrapConstructorWithOpts, T extends Object>(\n hashCons: (opts?: T) => Hash\n) {\n const hashC = (msg: Input, opts?: T): Uint8Array => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({} as T);\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts: T) => hashCons(opts);\n return hashC;\n}\n\nexport function wrapXOFConstructorWithOpts, T extends Object>(\n hashCons: (opts?: T) => HashXOF\n) {\n const hashC = (msg: Input, opts?: T): Uint8Array => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({} as T);\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts: T) => hashCons(opts);\n return hashC;\n}\n\n/**\n * Secure PRNG. Uses `crypto.getRandomValues`, which defers to OS.\n */\nexport function randomBytes(bytesLength = 32): Uint8Array {\n if (crypto && typeof crypto.getRandomValues === 'function') {\n return crypto.getRandomValues(new Uint8Array(bytesLength));\n }\n throw new Error('crypto.getRandomValues must be defined');\n}\n","import { exists, output } from './_assert.js';\nimport { Hash, createView, Input, toBytes } from './utils.js';\n\n// Polyfill for Safari 14\nfunction setBigUint64(view: DataView, byteOffset: number, value: bigint, isLE: boolean): void {\n if (typeof view.setBigUint64 === 'function') return view.setBigUint64(byteOffset, value, isLE);\n const _32n = BigInt(32);\n const _u32_max = BigInt(0xffffffff);\n const wh = Number((value >> _32n) & _u32_max);\n const wl = Number(value & _u32_max);\n const h = isLE ? 4 : 0;\n const l = isLE ? 0 : 4;\n view.setUint32(byteOffset + h, wh, isLE);\n view.setUint32(byteOffset + l, wl, isLE);\n}\n\n// Base SHA2 class (RFC 6234)\nexport abstract class SHA2> extends Hash {\n protected abstract process(buf: DataView, offset: number): void;\n protected abstract get(): number[];\n protected abstract set(...args: number[]): void;\n abstract destroy(): void;\n protected abstract roundClean(): void;\n // For partial updates less than block size\n protected buffer: Uint8Array;\n protected view: DataView;\n protected finished = false;\n protected length = 0;\n protected pos = 0;\n protected destroyed = false;\n\n constructor(\n readonly blockLen: number,\n public outputLen: number,\n readonly padOffset: number,\n readonly isLE: boolean\n ) {\n super();\n this.buffer = new Uint8Array(blockLen);\n this.view = createView(this.buffer);\n }\n update(data: Input): this {\n exists(this);\n const { view, buffer, blockLen } = this;\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len; ) {\n const take = Math.min(blockLen - this.pos, len - pos);\n // Fast path: we have at least one block in input, cast it to view and process\n if (take === blockLen) {\n const dataView = createView(data);\n for (; blockLen <= len - pos; pos += blockLen) this.process(dataView, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(view, 0);\n this.pos = 0;\n }\n }\n this.length += data.length;\n this.roundClean();\n return this;\n }\n digestInto(out: Uint8Array) {\n exists(this);\n output(out, this);\n this.finished = true;\n // Padding\n // We can avoid allocation of buffer for padding completely if it\n // was previously not allocated here. But it won't change performance.\n const { buffer, view, blockLen, isLE } = this;\n let { pos } = this;\n // append the bit '1' to the message\n buffer[pos++] = 0b10000000;\n this.buffer.subarray(pos).fill(0);\n // we have less than padOffset left in buffer, so we cannot put length in current block, need process it and pad again\n if (this.padOffset > blockLen - pos) {\n this.process(view, 0);\n pos = 0;\n }\n // Pad until full block byte with zeros\n for (let i = pos; i < blockLen; i++) buffer[i] = 0;\n // Note: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n // So we just write lowest 64 bits of that value.\n setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE);\n this.process(view, 0);\n const oview = createView(out);\n const len = this.outputLen;\n // NOTE: we do division by 4 later, which should be fused in single op with modulo by JIT\n if (len % 4) throw new Error('_sha2: outputLen should be aligned to 32bit');\n const outLen = len / 4;\n const state = this.get();\n if (outLen > state.length) throw new Error('_sha2: outputLen bigger than state');\n for (let i = 0; i < outLen; i++) oview.setUint32(4 * i, state[i], isLE);\n }\n digest() {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n _cloneInto(to?: T): T {\n to ||= new (this.constructor as any)() as T;\n to.set(...this.get());\n const { blockLen, buffer, length, finished, destroyed, pos } = this;\n to.length = length;\n to.pos = pos;\n to.finished = finished;\n to.destroyed = destroyed;\n if (length % blockLen) to.buffer.set(buffer);\n return to;\n }\n}\n","import { SHA2 } from './_sha2.js';\nimport { rotr, wrapConstructor } from './utils.js';\n\n// SHA2-256 need to try 2^128 hashes to execute birthday attack.\n// BTC network is doing 2^67 hashes/sec as per early 2023.\n\n// Choice: a ? b : c\nconst Chi = (a: number, b: number, c: number) => (a & b) ^ (~a & c);\n// Majority function, true if any two inpust is true\nconst Maj = (a: number, b: number, c: number) => (a & b) ^ (a & c) ^ (b & c);\n\n// Round constants:\n// first 32 bits of the fractional parts of the cube roots of the first 64 primes 2..311)\n// prettier-ignore\nconst SHA256_K = /* @__PURE__ */new Uint32Array([\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\n// Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):\n// prettier-ignore\nconst IV = /* @__PURE__ */new Uint32Array([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n]);\n\n// Temporary buffer, not used to store anything between runs\n// Named this way because it matches specification.\nconst SHA256_W = /* @__PURE__ */ new Uint32Array(64);\nclass SHA256 extends SHA2 {\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n A = IV[0] | 0;\n B = IV[1] | 0;\n C = IV[2] | 0;\n D = IV[3] | 0;\n E = IV[4] | 0;\n F = IV[5] | 0;\n G = IV[6] | 0;\n H = IV[7] | 0;\n\n constructor() {\n super(64, 32, 8, false);\n }\n protected get(): [number, number, number, number, number, number, number, number] {\n const { A, B, C, D, E, F, G, H } = this;\n return [A, B, C, D, E, F, G, H];\n }\n // prettier-ignore\n protected set(\n A: number, B: number, C: number, D: number, E: number, F: number, G: number, H: number\n ) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n this.F = F | 0;\n this.G = G | 0;\n this.H = H | 0;\n }\n protected process(view: DataView, offset: number): void {\n // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4) SHA256_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 64; i++) {\n const W15 = SHA256_W[i - 15];\n const W2 = SHA256_W[i - 2];\n const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ (W15 >>> 3);\n const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ (W2 >>> 10);\n SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n }\n // Compression function main loop, 64 rounds\n let { A, B, C, D, E, F, G, H } = this;\n for (let i = 0; i < 64; i++) {\n const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);\n const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);\n const T2 = (sigma0 + Maj(A, B, C)) | 0;\n H = G;\n G = F;\n F = E;\n E = (D + T1) | 0;\n D = C;\n C = B;\n B = A;\n A = (T1 + T2) | 0;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n F = (F + this.F) | 0;\n G = (G + this.G) | 0;\n H = (H + this.H) | 0;\n this.set(A, B, C, D, E, F, G, H);\n }\n protected roundClean() {\n SHA256_W.fill(0);\n }\n destroy() {\n this.set(0, 0, 0, 0, 0, 0, 0, 0);\n this.buffer.fill(0);\n }\n}\n// Constants from https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf\nclass SHA224 extends SHA256 {\n A = 0xc1059ed8 | 0;\n B = 0x367cd507 | 0;\n C = 0x3070dd17 | 0;\n D = 0xf70e5939 | 0;\n E = 0xffc00b31 | 0;\n F = 0x68581511 | 0;\n G = 0x64f98fa7 | 0;\n H = 0xbefa4fa4 | 0;\n constructor() {\n super();\n this.outputLen = 28;\n }\n}\n\n/**\n * SHA2-256 hash function\n * @param message - data that would be hashed\n */\nexport const sha256 = /* @__PURE__ */ wrapConstructor(() => new SHA256());\nexport const sha224 = /* @__PURE__ */ wrapConstructor(() => new SHA224());\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + {\"547\":\"f1193269\",\"565\":\"790cc09c\",\"586\":\"5de56d37\",\"787\":\"ec3dbc43\",\"854\":\"cb633233\",\"864\":\"410b1be7\"}[chunkId] + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"slide-identity-example-dapp:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\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\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunkslide_identity_example_dapp\"] = globalThis[\"webpackChunkslide_identity_example_dapp\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","import { Principal } from '@dfinity/principal';\nimport { RequestId } from '../request_id';\nimport { JsonObject } from '@dfinity/candid';\nimport { Identity } from '../auth';\nimport { HttpHeaderField } from './http/types';\n\n/**\n * Codes used by the replica for rejecting a message.\n * See {@link https://sdk.dfinity.org/docs/interface-spec/#reject-codes | the interface spec}.\n */\nexport enum ReplicaRejectCode {\n SysFatal = 1,\n SysTransient = 2,\n DestinationInvalid = 3,\n CanisterReject = 4,\n CanisterError = 5,\n}\n\n/**\n * Options when doing a {@link Agent.readState} call.\n */\nexport interface ReadStateOptions {\n /**\n * A list of paths to read the state of.\n */\n paths: ArrayBuffer[][];\n}\n\n/**\n *\n */\nexport type QueryResponse = QueryResponseReplied | QueryResponseRejected;\n\nexport const enum QueryResponseStatus {\n Replied = 'replied',\n Rejected = 'rejected',\n}\n\nexport interface HttpDetailsResponse {\n ok: boolean;\n status: number;\n statusText: string;\n headers: HttpHeaderField[];\n}\n\nexport type ApiQueryResponse = QueryResponse & { httpDetails: HttpDetailsResponse };\n\nexport interface QueryResponseBase {\n status: QueryResponseStatus;\n}\n\nexport interface QueryResponseReplied extends QueryResponseBase {\n status: QueryResponseStatus.Replied;\n reply: { arg: ArrayBuffer };\n}\n\nexport interface QueryResponseRejected extends QueryResponseBase {\n status: QueryResponseStatus.Rejected;\n reject_code: ReplicaRejectCode;\n reject_message: string;\n}\n\n/**\n * Options when doing a {@link Agent.query} call.\n */\nexport interface QueryFields {\n /**\n * The method name to call.\n */\n methodName: string;\n\n /**\n * A binary encoded argument. This is already encoded and will be sent as is.\n */\n arg: ArrayBuffer;\n}\n\n/**\n * Options when doing a {@link Agent.call} call.\n */\nexport interface CallOptions {\n /**\n * The method name to call.\n */\n methodName: string;\n\n /**\n * A binary encoded argument. This is already encoded and will be sent as is.\n */\n arg: ArrayBuffer;\n\n /**\n * An effective canister ID, used for routing. This should only be mentioned if\n * it's different from the canister ID.\n */\n effectiveCanisterId: Principal | string;\n}\n\nexport interface ReadStateResponse {\n certificate: ArrayBuffer;\n}\n\nexport interface SubmitResponse {\n requestId: RequestId;\n response: {\n ok: boolean;\n status: number;\n statusText: string;\n body: {\n error_code?: string;\n reject_code: number;\n reject_message: string;\n } | null;\n headers: HttpHeaderField[];\n };\n}\n\n/**\n * An Agent able to make calls and queries to a Replica.\n */\nexport interface Agent {\n readonly rootKey: ArrayBuffer | null;\n /**\n * Returns the principal ID associated with this agent (by default). It only shows\n * the principal of the default identity in the agent, which is the principal used\n * when calls don't specify it.\n */\n getPrincipal(): Promise;\n\n /**\n * Create the request for the read state call.\n * `readState` uses this internally.\n * Useful to avoid signing the same request multiple times.\n */\n createReadStateRequest?(\n options: ReadStateOptions,\n identity?: Identity,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): Promise;\n\n /**\n * Send a read state query to the replica. This includes a list of paths to return,\n * and will return a Certificate. This will only reject on communication errors,\n * but the certificate might contain less information than requested.\n * @param effectiveCanisterId A Canister ID related to this call.\n * @param options The options for this call.\n * @param identity Identity for the call. If not specified, uses the instance identity.\n * @param request The request to send in case it has already been created.\n */\n readState(\n effectiveCanisterId: Principal | string,\n options: ReadStateOptions,\n identity?: Identity,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n request?: any,\n ): Promise;\n\n call(canisterId: Principal | string, fields: CallOptions): Promise;\n\n /**\n * Query the status endpoint of the replica. This normally has a few fields that\n * corresponds to the version of the replica, its root public key, and any other\n * information made public.\n * @returns A JsonObject that is essentially a record of fields from the status\n * endpoint.\n */\n status(): Promise;\n\n /**\n * Send a query call to a canister. See\n * {@link https://sdk.dfinity.org/docs/interface-spec/#http-query | the interface spec}.\n * @param canisterId The Principal of the Canister to send the query to. Sending a query to\n * the management canister is not supported (as it has no meaning from an agent).\n * @param options Options to use to create and send the query.\n * @param identity Sender principal to use when sending the query.\n * @returns The response from the replica. The Promise will only reject when the communication\n * failed. If the query itself failed but no protocol errors happened, the response will\n * be of type QueryResponseRejected.\n */\n query(\n canisterId: Principal | string,\n options: QueryFields,\n identity?: Identity | Promise,\n ): Promise;\n\n /**\n * By default, the agent is configured to talk to the main Internet Computer,\n * and verifies responses using a hard-coded public key.\n *\n * This function will instruct the agent to ask the endpoint for its public\n * key, and use that instead. This is required when talking to a local test\n * instance, for example.\n *\n * Only use this when you are _not_ talking to the main Internet Computer,\n * otherwise you are prone to man-in-the-middle attacks! Do not call this\n * function by default.\n */\n fetchRootKey(): Promise;\n /**\n * If an application needs to invalidate an identity under certain conditions, an `Agent` may expose an `invalidateIdentity` method.\n * Invoking this method will set the inner identity used by the `Agent` to `null`.\n *\n * A use case for this would be - after a certain period of inactivity, a secure application chooses to invalidate the identity of any `HttpAgent` instances. An invalid identity can be replaced by `Agent.replaceIdentity`\n */\n invalidateIdentity?(): void;\n /**\n * If an application needs to replace an identity under certain conditions, an `Agent` may expose a `replaceIdentity` method.\n * Invoking this method will set the inner identity used by the `Agent` to a newly provided identity.\n *\n * A use case for this would be - after authenticating using `@dfinity/auth-client`, you can replace the `AnonymousIdentity` of your `Actor` with a `DelegationIdentity`.\n *\n * ```Actor.agentOf(defaultActor).replaceIdentity(await authClient.getIdentity());```\n */\n replaceIdentity?(identity: Identity): void;\n}\n","import { Principal } from '@dfinity/principal';\nimport { HttpAgentRequest } from './agent/http/types';\nimport { requestIdOf } from './request_id';\nimport { concat, toHex } from './utils/buffer';\n\nconst domainSeparator = new TextEncoder().encode('\\x0Aic-request');\n\n/**\n * A Key Pair, containing a secret and public key.\n */\nexport interface KeyPair {\n secretKey: ArrayBuffer;\n publicKey: PublicKey;\n}\n\n/**\n * A public key that is DER encoded. This is a branded ArrayBuffer.\n */\nexport type DerEncodedPublicKey = ArrayBuffer & { __derEncodedPublicKey__?: void };\n\n/**\n * A signature array buffer.\n */\nexport type Signature = ArrayBuffer & { __signature__: void };\n\n/**\n * A Public Key implementation.\n */\nexport interface PublicKey {\n // Get the public key bytes encoded with DER.\n toDer(): DerEncodedPublicKey;\n}\n\n/**\n * A General Identity object. This does not have to be a private key (for example,\n * the Anonymous identity), but it must be able to transform request.\n */\nexport interface Identity {\n /**\n * Get the principal represented by this identity. Normally should be a\n * `Principal.selfAuthenticating()`.\n */\n getPrincipal(): Principal;\n\n /**\n * Transform a request into a signed version of the request. This is done last\n * after the transforms on the body of a request. The returned object can be\n * anything, but must be serializable to CBOR.\n */\n transformRequest(request: HttpAgentRequest): Promise;\n}\n\n/**\n * An Identity that can sign blobs.\n */\nexport abstract class SignIdentity implements Identity {\n protected _principal: Principal | undefined;\n\n /**\n * Returns the public key that would match this identity's signature.\n */\n public abstract getPublicKey(): PublicKey;\n\n /**\n * Signs a blob of data, with this identity's private key.\n */\n public abstract sign(blob: ArrayBuffer): Promise;\n\n /**\n * Get the principal represented by this identity. Normally should be a\n * `Principal.selfAuthenticating()`.\n */\n public getPrincipal(): Principal {\n if (!this._principal) {\n this._principal = Principal.selfAuthenticating(new Uint8Array(this.getPublicKey().toDer()));\n }\n return this._principal;\n }\n\n /**\n * Transform a request into a signed version of the request. This is done last\n * after the transforms on the body of a request. The returned object can be\n * anything, but must be serializable to CBOR.\n * @param request - internet computer request to transform\n */\n public async transformRequest(request: HttpAgentRequest): Promise {\n const { body, ...fields } = request;\n const requestId = await requestIdOf(body);\n return {\n ...fields,\n body: {\n content: body,\n sender_pubkey: this.getPublicKey().toDer(),\n sender_sig: await this.sign(concat(domainSeparator, requestId)),\n },\n };\n }\n}\n\nexport class AnonymousIdentity implements Identity {\n public getPrincipal(): Principal {\n return Principal.anonymous();\n }\n\n public async transformRequest(request: HttpAgentRequest): Promise {\n return {\n ...request,\n body: { content: request.body },\n };\n }\n}\n\n/*\n * We need to communicate with other agents on the page about identities,\n * but those messages may need to go across boundaries where it's not possible to\n * serialize/deserialize object prototypes easily.\n * So these are lightweight, serializable objects that contain enough information to recreate\n * SignIdentities, but don't commit to having all methods of SignIdentity.\n *\n * Use Case:\n * * DOM Events that let differently-versioned components communicate to one another about\n * Identities, even if they're using slightly different versions of agent packages to\n * create/interpret them.\n */\nexport interface AnonymousIdentityDescriptor {\n type: 'AnonymousIdentity';\n}\nexport interface PublicKeyIdentityDescriptor {\n type: 'PublicKeyIdentity';\n publicKey: string;\n}\nexport type IdentityDescriptor = AnonymousIdentityDescriptor | PublicKeyIdentityDescriptor;\n\n/**\n * Create an IdentityDescriptor from a @dfinity/identity Identity\n * @param identity - identity describe in returned descriptor\n */\nexport function createIdentityDescriptor(\n identity: SignIdentity | AnonymousIdentity,\n): IdentityDescriptor {\n const identityIndicator: IdentityDescriptor =\n 'getPublicKey' in identity\n ? { type: 'PublicKeyIdentity', publicKey: toHex(identity.getPublicKey().toDer()) }\n : { type: 'AnonymousIdentity' };\n return identityIndicator;\n}\n","/**\n * Generates a random unsigned 32-bit integer between 0 and 0xffffffff\n * @returns {number} a random number\n */\nexport const randomNumber = (): number => {\n // determine whether browser crypto is available\n if (typeof window !== 'undefined' && !!window.crypto && !!window.crypto.getRandomValues) {\n const array = new Uint32Array(1);\n window.crypto.getRandomValues(array);\n return array[0];\n }\n // A second check for webcrypto, in case it is loaded under global instead of window\n if (typeof crypto !== 'undefined' && crypto.getRandomValues) {\n const array = new Uint32Array(1);\n crypto.getRandomValues(array);\n return array[0];\n }\n\n type nodeCrypto = {\n randomInt: (min: number, max: number) => number;\n };\n\n // determine whether node crypto is available\n if (typeof crypto !== 'undefined' && (crypto as unknown as nodeCrypto).randomInt) {\n return (crypto as unknown as nodeCrypto).randomInt(0, 0xffffffff);\n }\n\n // fall back to Math.random\n return Math.floor(Math.random() * 0xffffffff);\n};\n","import type { Principal } from '@dfinity/principal';\nimport { Expiry } from './transforms';\nimport { randomNumber } from '../../utils/random';\n\n/**\n * @internal\n */\nexport const enum Endpoint {\n Query = 'read',\n ReadState = 'read_state',\n Call = 'call',\n}\n\n// An HttpAgent request, before it gets encoded and sent to the server.\n// We create an empty request that we will fill later.\nexport type HttpAgentRequest =\n | HttpAgentQueryRequest\n | HttpAgentSubmitRequest\n | HttpAgentReadStateRequest;\n\nexport interface HttpAgentBaseRequest {\n readonly endpoint: Endpoint;\n request: RequestInit;\n}\n\nexport type HttpHeaderField = [string, string];\n\nexport interface HttpAgentSubmitRequest extends HttpAgentBaseRequest {\n readonly endpoint: Endpoint.Call;\n body: CallRequest;\n}\n\nexport interface HttpAgentQueryRequest extends HttpAgentBaseRequest {\n readonly endpoint: Endpoint.Query;\n body: ReadRequest;\n}\n\nexport interface HttpAgentReadStateRequest extends HttpAgentBaseRequest {\n readonly endpoint: Endpoint.ReadState;\n body: ReadRequest;\n}\n\nexport interface Signed {\n content: T;\n sender_pubkey: ArrayBuffer;\n sender_sig: ArrayBuffer;\n}\n\nexport interface UnSigned {\n content: T;\n}\n\nexport type Envelope = Signed | UnSigned;\n\nexport interface HttpAgentRequestTransformFn {\n (args: HttpAgentRequest): Promise;\n priority?: number;\n}\n\n// The fields in a \"call\" submit request.\n// tslint:disable:camel-case\nexport interface CallRequest extends Record {\n request_type: SubmitRequestType.Call;\n canister_id: Principal;\n method_name: string;\n arg: ArrayBuffer;\n sender: Uint8Array | Principal;\n ingress_expiry: Expiry;\n}\n// tslint:enable:camel-case\n\n// The types of values allowed in the `request_type` field for submit requests.\nexport enum SubmitRequestType {\n Call = 'call',\n}\n\n// The types of values allowed in the `request_type` field for read requests.\nexport const enum ReadRequestType {\n Query = 'query',\n ReadState = 'read_state',\n}\n\n// The fields in a \"query\" read request.\nexport interface QueryRequest extends Record {\n request_type: ReadRequestType.Query;\n canister_id: Principal;\n method_name: string;\n arg: ArrayBuffer;\n sender: Uint8Array | Principal;\n ingress_expiry: Expiry;\n}\n\nexport interface ReadStateRequest extends Record {\n request_type: ReadRequestType.ReadState;\n paths: ArrayBuffer[][];\n ingress_expiry: Expiry;\n sender: Uint8Array | Principal;\n}\n\nexport type ReadRequest = QueryRequest | ReadStateRequest;\n\n// A Nonce that can be used for calls.\nexport type Nonce = Uint8Array & { __nonce__: void };\n\n/**\n * Create a random Nonce, based on random values\n */\nexport function makeNonce(): Nonce {\n // Encode 128 bits.\n const buffer = new ArrayBuffer(16);\n const view = new DataView(buffer);\n const rand1 = randomNumber();\n const rand2 = randomNumber();\n const rand3 = randomNumber();\n const rand4 = randomNumber();\n\n view.setUint32(0, rand1);\n view.setUint32(4, rand2);\n view.setUint32(8, rand3);\n view.setUint32(12, rand4);\n\n return buffer as Nonce;\n}\n","import { lebEncode } from '@dfinity/candid';\nimport * as cbor from 'simple-cbor';\nimport {\n Endpoint,\n HttpAgentRequest,\n HttpAgentRequestTransformFn,\n HttpHeaderField,\n makeNonce,\n Nonce,\n} from './types';\nimport { toHex } from '../../utils/buffer';\n\nconst NANOSECONDS_PER_MILLISECONDS = BigInt(1_000_000);\n\nconst REPLICA_PERMITTED_DRIFT_MILLISECONDS = BigInt(60 * 1000);\n\nexport class Expiry {\n private readonly _value: bigint;\n\n constructor(deltaInMSec: number) {\n // Use bigint because it can overflow the maximum number allowed in a double float.\n this._value =\n (BigInt(Date.now()) + BigInt(deltaInMSec) - REPLICA_PERMITTED_DRIFT_MILLISECONDS) *\n NANOSECONDS_PER_MILLISECONDS;\n }\n\n public toCBOR(): cbor.CborValue {\n // TODO: change this to take the minimum amount of space (it always takes 8 bytes now).\n return cbor.value.u64(this._value.toString(16), 16);\n }\n\n public toHash(): ArrayBuffer {\n return lebEncode(this._value);\n }\n}\n\n/**\n * Create a Nonce transform, which takes a function that returns a Buffer, and adds it\n * as the nonce to every call requests.\n * @param nonceFn A function that returns a buffer. By default uses a semi-random method.\n */\nexport function makeNonceTransform(nonceFn: () => Nonce = makeNonce): HttpAgentRequestTransformFn {\n return async (request: HttpAgentRequest) => {\n const nonce = nonceFn();\n // Nonce needs to be inserted into the header for all requests, to enable logs to be correlated with requests.\n const headers = request.request.headers;\n // TODO: uncomment this when the http proxy supports it.\n // headers.set('X-IC-Request-ID', toHex(new Uint8Array(nonce)));\n request.request.headers = headers;\n\n // Nonce only needs to be inserted into the body for async calls, to prevent replay attacks.\n if (request.endpoint === Endpoint.Call) {\n request.body.nonce = nonceFn();\n }\n };\n}\n\n/**\n * Create a transform that adds a delay (by default 5 minutes) to the expiry.\n *\n * @param delayInMilliseconds The delay to add to the call time, in milliseconds.\n */\nexport function makeExpiryTransform(delayInMilliseconds: number): HttpAgentRequestTransformFn {\n return async (request: HttpAgentRequest) => {\n request.body.ingress_expiry = new Expiry(delayInMilliseconds);\n };\n}\n\n/**\n * Maps the default fetch headers field to the serializable HttpHeaderField.\n *\n * @param headers Fetch definition of the headers type\n * @returns array of header fields\n */\nexport function httpHeadersTransform(headers: Headers): HttpHeaderField[] {\n const headerFields: HttpHeaderField[] = [];\n headers.forEach((value, key) => {\n headerFields.push([key, value]);\n });\n return headerFields;\n}\n","import { HttpDetailsResponse } from '../api';\n\nexport class AgentHTTPResponseError extends Error {\n constructor(message: string, public readonly response: HttpDetailsResponse) {\n super(message);\n this.name = this.constructor.name;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n","import { JsonObject } from '@dfinity/candid';\nimport { Principal } from '@dfinity/principal';\nimport { AgentError } from '../../errors';\nimport { AnonymousIdentity, Identity } from '../../auth';\nimport * as cbor from '../../cbor';\nimport { requestIdOf } from '../../request_id';\nimport { fromHex } from '../../utils/buffer';\nimport {\n Agent,\n ApiQueryResponse,\n QueryFields,\n QueryResponse,\n ReadStateOptions,\n ReadStateResponse,\n SubmitResponse,\n} from '../api';\nimport { Expiry, httpHeadersTransform, makeNonceTransform } from './transforms';\nimport {\n CallRequest,\n Endpoint,\n HttpAgentRequest,\n HttpAgentRequestTransformFn,\n HttpAgentSubmitRequest,\n makeNonce,\n QueryRequest,\n ReadRequestType,\n SubmitRequestType,\n} from './types';\nimport { AgentHTTPResponseError } from './errors';\n\nexport * from './transforms';\nexport { Nonce, makeNonce } from './types';\n\nexport enum RequestStatusResponseStatus {\n Received = 'received',\n Processing = 'processing',\n Replied = 'replied',\n Rejected = 'rejected',\n Unknown = 'unknown',\n Done = 'done',\n}\n\n// Default delta for ingress expiry is 5 minutes.\nconst DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS = 5 * 60 * 1000;\n\n// Root public key for the IC, encoded as hex\nconst IC_ROOT_KEY =\n '308182301d060d2b0601040182dc7c0503010201060c2b0601040182dc7c05030201036100814' +\n 'c0e6ec71fab583b08bd81373c255c3c371b2e84863c98a4f1e08b74235d14fb5d9c0cd546d968' +\n '5f913a0c0b2cc5341583bf4b4392e467db96d65b9bb4cb717112f8472e0d5a4d14505ffd7484' +\n 'b01291091c5f87b98883463f98091a0baaae';\n\n// IC0 domain info\nconst IC0_DOMAIN = 'ic0.app';\nconst IC0_SUB_DOMAIN = '.ic0.app';\n\nconst ICP0_DOMAIN = 'icp0.io';\nconst ICP0_SUB_DOMAIN = '.icp0.io';\n\nconst ICP_API_DOMAIN = 'icp-api.io';\nconst ICP_API_SUB_DOMAIN = '.icp-api.io';\n\nclass HttpDefaultFetchError extends AgentError {\n constructor(public readonly message: string) {\n super(message);\n }\n}\nexport class IdentityInvalidError extends AgentError {\n constructor(public readonly message: string) {\n super(message);\n }\n}\n\n// HttpAgent options that can be used at construction.\nexport interface HttpAgentOptions {\n // Another HttpAgent to inherit configuration (pipeline and fetch) of. This\n // is only used at construction.\n source?: HttpAgent;\n\n // A surrogate to the global fetch function. Useful for testing.\n fetch?: typeof fetch;\n\n // Additional options to pass along to fetch. Will not override fields that\n // the agent already needs to set\n // Should follow the RequestInit interface, but we intentially support non-standard fields\n fetchOptions?: Record;\n\n // Additional options to pass along to fetch for the call API.\n callOptions?: Record;\n\n // The host to use for the client. By default, uses the same host as\n // the current page.\n host?: string;\n\n // The principal used to send messages. This cannot be empty at the request\n // time (will throw).\n identity?: Identity | Promise;\n\n credentials?: {\n name: string;\n password?: string;\n };\n /**\n * Prevents the agent from providing a unique {@link Nonce} with each call.\n * Enabling may cause rate limiting of identical requests\n * at the boundary nodes.\n *\n * To add your own nonce generation logic, you can use the following:\n * @example\n * import {makeNonceTransform, makeNonce} from '@dfinity/agent';\n * const agent = new HttpAgent({ disableNonce: true });\n * agent.addTransform(makeNonceTransform(makeNonce);\n * @default false\n */\n disableNonce?: boolean;\n /**\n * Number of times to retry requests before throwing an error\n * @default 3\n */\n retryTimes?: number;\n}\n\nfunction getDefaultFetch(): typeof fetch {\n let defaultFetch;\n\n if (typeof window !== 'undefined') {\n // Browser context\n if (window.fetch) {\n defaultFetch = window.fetch.bind(window);\n } else {\n throw new HttpDefaultFetchError(\n 'Fetch implementation was not available. You appear to be in a browser context, but window.fetch was not present.',\n );\n }\n } else if (typeof global !== 'undefined') {\n // Node context\n if (global.fetch) {\n defaultFetch = global.fetch.bind(global);\n } else {\n throw new HttpDefaultFetchError(\n 'Fetch implementation was not available. You appear to be in a Node.js context, but global.fetch was not available.',\n );\n }\n } else if (typeof self !== 'undefined') {\n if (self.fetch) {\n defaultFetch = self.fetch.bind(self);\n }\n }\n\n if (defaultFetch) {\n return defaultFetch;\n }\n throw new HttpDefaultFetchError(\n 'Fetch implementation was not available. Please provide fetch to the HttpAgent constructor, or ensure it is available in the window or global context.',\n );\n}\n\n// A HTTP agent allows users to interact with a client of the internet computer\n// using the available methods. It exposes an API that closely follows the\n// public view of the internet computer, and is not intended to be exposed\n// directly to the majority of users due to its low-level interface.\n//\n// There is a pipeline to apply transformations to the request before sending\n// it to the client. This is to decouple signature, nonce generation and\n// other computations so that this class can stay as simple as possible while\n// allowing extensions.\nexport class HttpAgent implements Agent {\n public rootKey = fromHex(IC_ROOT_KEY);\n private readonly _pipeline: HttpAgentRequestTransformFn[] = [];\n private _identity: Promise | null;\n private readonly _fetch: typeof fetch;\n private readonly _fetchOptions?: Record;\n private readonly _callOptions?: Record;\n private _timeDiffMsecs = 0;\n private readonly _host: URL;\n private readonly _credentials: string | undefined;\n private _rootKeyFetched = false;\n private readonly _retryTimes; // Retry requests N times before erroring by default\n public readonly _isAgent = true;\n\n constructor(options: HttpAgentOptions = {}) {\n if (options.source) {\n if (!(options.source instanceof HttpAgent)) {\n throw new Error(\"An Agent's source can only be another HttpAgent\");\n }\n this._pipeline = [...options.source._pipeline];\n this._identity = options.source._identity;\n this._fetch = options.source._fetch;\n this._host = options.source._host;\n this._credentials = options.source._credentials;\n } else {\n this._fetch = options.fetch || getDefaultFetch() || fetch.bind(global);\n this._fetchOptions = options.fetchOptions;\n this._callOptions = options.callOptions;\n }\n if (options.host !== undefined) {\n if (!options.host.match(/^[a-z]+:/) && typeof window !== 'undefined') {\n this._host = new URL(window.location.protocol + '//' + options.host);\n } else {\n this._host = new URL(options.host);\n }\n } else if (options.source !== undefined) {\n // Safe to ignore here.\n this._host = options.source._host;\n } else {\n const location = typeof window !== 'undefined' ? window.location : undefined;\n if (!location) {\n this._host = new URL('https://icp-api.io');\n console.warn(\n 'Could not infer host from window.location, defaulting to mainnet gateway of https://icp-api.io. Please provide a host to the HttpAgent constructor to avoid this warning.',\n );\n }\n // Mainnet and local will have the api route available\n const knownHosts = ['ic0.app', 'icp0.io', 'localhost', '127.0.0.1'];\n const hostname = location?.hostname;\n let knownHost;\n if (hostname && typeof hostname === 'string') {\n knownHost = knownHosts.find(host => hostname.endsWith(host));\n }\n\n if (location && knownHost) {\n // If the user is on a boundary-node provided host, we can use the same host for the agent\n this._host = new URL(\n `${location.protocol}//${knownHost}${location.port ? ':' + location.port : ''}`,\n );\n } else {\n this._host = new URL('https://icp-api.io');\n console.warn(\n 'Could not infer host from window.location, defaulting to mainnet gateway of https://icp-api.io. Please provide a host to the HttpAgent constructor to avoid this warning.',\n );\n }\n }\n // Default is 3, only set from option if greater or equal to 0\n this._retryTimes =\n options.retryTimes !== undefined && options.retryTimes >= 0 ? options.retryTimes : 3;\n // Rewrite to avoid redirects\n if (this._host.hostname.endsWith(IC0_SUB_DOMAIN)) {\n this._host.hostname = IC0_DOMAIN;\n } else if (this._host.hostname.endsWith(ICP0_SUB_DOMAIN)) {\n this._host.hostname = ICP0_DOMAIN;\n } else if (this._host.hostname.endsWith(ICP_API_SUB_DOMAIN)) {\n this._host.hostname = ICP_API_DOMAIN;\n }\n\n if (options.credentials) {\n const { name, password } = options.credentials;\n this._credentials = `${name}${password ? ':' + password : ''}`;\n }\n this._identity = Promise.resolve(options.identity || new AnonymousIdentity());\n\n // Add a nonce transform to ensure calls are unique\n if (!options.disableNonce) {\n this.addTransform(makeNonceTransform(makeNonce));\n }\n }\n\n public isLocal(): boolean {\n const hostname = this._host.hostname;\n return hostname === '127.0.0.1' || hostname.endsWith('localhost');\n }\n\n public addTransform(fn: HttpAgentRequestTransformFn, priority = fn.priority || 0): void {\n // Keep the pipeline sorted at all time, by priority.\n const i = this._pipeline.findIndex(x => (x.priority || 0) < priority);\n this._pipeline.splice(i >= 0 ? i : this._pipeline.length, 0, Object.assign(fn, { priority }));\n }\n\n public async getPrincipal(): Promise {\n if (!this._identity) {\n throw new IdentityInvalidError(\n \"This identity has expired due this application's security policy. Please refresh your authentication.\",\n );\n }\n return (await this._identity).getPrincipal();\n }\n\n public async call(\n canisterId: Principal | string,\n options: {\n methodName: string;\n arg: ArrayBuffer;\n effectiveCanisterId?: Principal | string;\n },\n identity?: Identity | Promise,\n ): Promise {\n const id = await (identity !== undefined ? await identity : await this._identity);\n if (!id) {\n throw new IdentityInvalidError(\n \"This identity has expired due this application's security policy. Please refresh your authentication.\",\n );\n }\n const canister = Principal.from(canisterId);\n const ecid = options.effectiveCanisterId\n ? Principal.from(options.effectiveCanisterId)\n : canister;\n\n const sender: Principal = id.getPrincipal() || Principal.anonymous();\n\n let ingress_expiry = new Expiry(DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS);\n\n // If the value is off by more than 30 seconds, reconcile system time with the network\n if (Math.abs(this._timeDiffMsecs) > 1_000 * 30) {\n ingress_expiry = new Expiry(DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS + this._timeDiffMsecs);\n }\n\n const submit: CallRequest = {\n request_type: SubmitRequestType.Call,\n canister_id: canister,\n method_name: options.methodName,\n arg: options.arg,\n sender,\n ingress_expiry,\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let transformedRequest: any = (await this._transform({\n request: {\n body: null,\n method: 'POST',\n headers: {\n 'Content-Type': 'application/cbor',\n ...(this._credentials ? { Authorization: 'Basic ' + btoa(this._credentials) } : {}),\n },\n },\n endpoint: Endpoint.Call,\n body: submit,\n })) as HttpAgentSubmitRequest;\n\n // Apply transform for identity.\n transformedRequest = await id.transformRequest(transformedRequest);\n\n const body = cbor.encode(transformedRequest.body);\n\n // Run both in parallel. The fetch is quite expensive, so we have plenty of time to\n // calculate the requestId locally.\n const request = this._requestAndRetry(() =>\n this._fetch('' + new URL(`/api/v2/canister/${ecid.toText()}/call`, this._host), {\n ...this._callOptions,\n ...transformedRequest.request,\n body,\n }),\n );\n\n const [response, requestId] = await Promise.all([request, requestIdOf(submit)]);\n\n const responseBuffer = await response.arrayBuffer();\n const responseBody = (\n response.status === 200 && responseBuffer.byteLength > 0 ? cbor.decode(responseBuffer) : null\n ) as SubmitResponse['response']['body'];\n\n return {\n requestId,\n response: {\n ok: response.ok,\n status: response.status,\n statusText: response.statusText,\n body: responseBody,\n headers: httpHeadersTransform(response.headers),\n },\n };\n }\n\n private async _requestAndRetry(request: () => Promise, tries = 0): Promise {\n const response = await request();\n if (response.ok) {\n return response;\n }\n\n const responseText = await response.clone().text();\n const errorMessage =\n `Server returned an error:\\n` +\n ` Code: ${response.status} (${response.statusText})\\n` +\n ` Body: ${responseText}\\n`;\n\n if (this._retryTimes > tries) {\n console.warn(errorMessage + ` Retrying request.`);\n return await this._requestAndRetry(request, tries + 1);\n }\n\n throw new AgentHTTPResponseError(errorMessage, {\n ok: response.ok,\n status: response.status,\n statusText: response.statusText,\n headers: httpHeadersTransform(response.headers),\n });\n }\n\n public async query(\n canisterId: Principal | string,\n fields: QueryFields,\n identity?: Identity | Promise,\n ): Promise {\n const id = await (identity !== undefined ? await identity : await this._identity);\n if (!id) {\n throw new IdentityInvalidError(\n \"This identity has expired due this application's security policy. Please refresh your authentication.\",\n );\n }\n\n const canister = typeof canisterId === 'string' ? Principal.fromText(canisterId) : canisterId;\n const sender = id?.getPrincipal() || Principal.anonymous();\n\n const request: QueryRequest = {\n request_type: ReadRequestType.Query,\n canister_id: canister,\n method_name: fields.methodName,\n arg: fields.arg,\n sender,\n ingress_expiry: new Expiry(DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS),\n };\n\n // TODO: remove this any. This can be a Signed or UnSigned request.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let transformedRequest: any = await this._transform({\n request: {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/cbor',\n ...(this._credentials ? { Authorization: 'Basic ' + btoa(this._credentials) } : {}),\n },\n },\n endpoint: Endpoint.Query,\n body: request,\n });\n\n // Apply transform for identity.\n transformedRequest = await id?.transformRequest(transformedRequest);\n\n const body = cbor.encode(transformedRequest.body);\n const response = await this._requestAndRetry(() =>\n this._fetch('' + new URL(`/api/v2/canister/${canister.toText()}/query`, this._host), {\n ...this._fetchOptions,\n ...transformedRequest.request,\n body,\n }),\n );\n\n const queryResponse: QueryResponse = cbor.decode(await response.arrayBuffer());\n\n return {\n ...queryResponse,\n httpDetails: {\n ok: response.ok,\n status: response.status,\n statusText: response.statusText,\n headers: httpHeadersTransform(response.headers),\n },\n };\n }\n\n public async createReadStateRequest(\n fields: ReadStateOptions,\n identity?: Identity | Promise,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): Promise {\n const id = await (identity !== undefined ? await identity : await this._identity);\n if (!id) {\n throw new IdentityInvalidError(\n \"This identity has expired due this application's security policy. Please refresh your authentication.\",\n );\n }\n const sender = id?.getPrincipal() || Principal.anonymous();\n\n // TODO: remove this any. This can be a Signed or UnSigned request.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const transformedRequest: any = await this._transform({\n request: {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/cbor',\n ...(this._credentials ? { Authorization: 'Basic ' + btoa(this._credentials) } : {}),\n },\n },\n endpoint: Endpoint.ReadState,\n body: {\n request_type: ReadRequestType.ReadState,\n paths: fields.paths,\n sender,\n ingress_expiry: new Expiry(DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS),\n },\n });\n\n // Apply transform for identity.\n return id?.transformRequest(transformedRequest);\n }\n\n public async readState(\n canisterId: Principal | string,\n fields: ReadStateOptions,\n identity?: Identity | Promise,\n // eslint-disable-next-line\n request?: any,\n ): Promise {\n const canister = typeof canisterId === 'string' ? Principal.fromText(canisterId) : canisterId;\n\n const transformedRequest = request ?? (await this.createReadStateRequest(fields, identity));\n const body = cbor.encode(transformedRequest.body);\n\n // TODO - https://dfinity.atlassian.net/browse/SDK-1092\n const response = await this._requestAndRetry(() =>\n this._fetch('' + new URL(`/api/v2/canister/${canister}/read_state`, this._host), {\n ...this._fetchOptions,\n ...transformedRequest.request,\n body,\n }),\n );\n\n if (!response.ok) {\n throw new Error(\n `Server returned an error:\\n` +\n ` Code: ${response.status} (${response.statusText})\\n` +\n ` Body: ${await response.text()}\\n`,\n );\n }\n return cbor.decode(await response.arrayBuffer());\n }\n\n /**\n * Allows agent to sync its time with the network. Can be called during intialization or mid-lifecycle if the device's clock has drifted away from the network time. This is necessary to set the Expiry for a request\n * @param {Principal} canisterId - Pass a canister ID if you need to sync the time with a particular replica. Uses the management canister by default\n */\n public async syncTime(canisterId?: Principal): Promise {\n const CanisterStatus = await import('../../canisterStatus');\n const callTime = Date.now();\n try {\n if (!canisterId) {\n console.log(\n 'Syncing time with the IC. No canisterId provided, so falling back to ryjl3-tyaaa-aaaaa-aaaba-cai',\n );\n }\n const status = await CanisterStatus.request({\n // Fall back with canisterId of the ICP Ledger\n canisterId: canisterId ?? Principal.from('ryjl3-tyaaa-aaaaa-aaaba-cai'),\n agent: this,\n paths: ['time'],\n });\n\n const replicaTime = status.get('time');\n if (replicaTime) {\n this._timeDiffMsecs = Number(replicaTime as any) - Number(callTime);\n }\n } catch (error) {\n console.error('Caught exception while attempting to sync time:', error);\n }\n }\n\n public async status(): Promise {\n const headers: Record = this._credentials\n ? {\n Authorization: 'Basic ' + btoa(this._credentials),\n }\n : {};\n\n const response = await this._requestAndRetry(() =>\n this._fetch('' + new URL(`/api/v2/status`, this._host), { headers, ...this._fetchOptions }),\n );\n\n return cbor.decode(await response.arrayBuffer());\n }\n\n public async fetchRootKey(): Promise {\n if (!this._rootKeyFetched) {\n // Hex-encoded version of the replica root key\n this.rootKey = ((await this.status()) as any).root_key;\n this._rootKeyFetched = true;\n }\n return this.rootKey;\n }\n\n public invalidateIdentity(): void {\n this._identity = null;\n }\n\n public replaceIdentity(identity: Identity): void {\n this._identity = Promise.resolve(identity);\n }\n\n protected _transform(request: HttpAgentRequest): Promise {\n let p = Promise.resolve(request);\n\n for (const fn of this._pipeline) {\n p = p.then(r => fn(r).then(r2 => r2 || r));\n }\n\n return p;\n }\n}\n","import { JsonObject } from '@dfinity/candid';\nimport {\n Agent,\n ApiQueryResponse,\n CallOptions,\n QueryFields,\n QueryResponse,\n ReadStateOptions,\n ReadStateResponse,\n SubmitResponse,\n} from './api';\nimport { Principal } from '@dfinity/principal';\n\nexport enum ProxyMessageKind {\n Error = 'err',\n GetPrincipal = 'gp',\n GetPrincipalResponse = 'gpr',\n Query = 'q',\n QueryResponse = 'qr',\n Call = 'c',\n CallResponse = 'cr',\n ReadState = 'rs',\n ReadStateResponse = 'rsr',\n Status = 's',\n StatusResponse = 'sr',\n}\n\nexport interface ProxyMessageBase {\n id: number;\n type: ProxyMessageKind;\n}\n\nexport interface ProxyMessageError extends ProxyMessageBase {\n type: ProxyMessageKind.Error;\n error: any;\n}\n\nexport interface ProxyMessageGetPrincipal extends ProxyMessageBase {\n type: ProxyMessageKind.GetPrincipal;\n}\n\nexport interface ProxyMessageGetPrincipalResponse extends ProxyMessageBase {\n type: ProxyMessageKind.GetPrincipalResponse;\n response: string;\n}\n\nexport interface ProxyMessageQuery extends ProxyMessageBase {\n type: ProxyMessageKind.Query;\n args: [string, QueryFields];\n}\n\nexport interface ProxyMessageQueryResponse extends ProxyMessageBase {\n type: ProxyMessageKind.QueryResponse;\n response: QueryResponse;\n}\n\nexport interface ProxyMessageCall extends ProxyMessageBase {\n type: ProxyMessageKind.Call;\n args: [string, CallOptions];\n}\n\nexport interface ProxyMessageCallResponse extends ProxyMessageBase {\n type: ProxyMessageKind.CallResponse;\n response: SubmitResponse;\n}\n\nexport interface ProxyMessageReadState extends ProxyMessageBase {\n type: ProxyMessageKind.ReadState;\n args: [string, ReadStateOptions];\n}\n\nexport interface ProxyMessageReadStateResponse extends ProxyMessageBase {\n type: ProxyMessageKind.ReadStateResponse;\n response: ReadStateResponse;\n}\n\nexport interface ProxyMessageStatus extends ProxyMessageBase {\n type: ProxyMessageKind.Status;\n}\n\nexport interface ProxyMessageStatusResponse extends ProxyMessageBase {\n type: ProxyMessageKind.StatusResponse;\n response: JsonObject;\n}\n\nexport type ProxyMessage =\n | ProxyMessageError\n | ProxyMessageGetPrincipal\n | ProxyMessageGetPrincipalResponse\n | ProxyMessageQuery\n | ProxyMessageQueryResponse\n | ProxyMessageCall\n | ProxyMessageReadState\n | ProxyMessageReadStateResponse\n | ProxyMessageCallResponse\n | ProxyMessageStatus\n | ProxyMessageStatusResponse;\n\n// A Stub Agent that forwards calls to another Agent implementation.\nexport class ProxyStubAgent {\n constructor(private _frontend: (msg: ProxyMessage) => void, private _agent: Agent) {}\n\n public onmessage(msg: ProxyMessage): void {\n switch (msg.type) {\n case ProxyMessageKind.GetPrincipal:\n this._agent.getPrincipal().then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.GetPrincipalResponse,\n response: response.toText(),\n });\n });\n break;\n case ProxyMessageKind.Query:\n this._agent.query(...msg.args).then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.QueryResponse,\n response,\n });\n });\n break;\n case ProxyMessageKind.Call:\n this._agent.call(...msg.args).then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.CallResponse,\n response,\n });\n });\n break;\n case ProxyMessageKind.ReadState:\n this._agent.readState(...msg.args).then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.ReadStateResponse,\n response,\n });\n });\n break;\n case ProxyMessageKind.Status:\n this._agent.status().then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.StatusResponse,\n response,\n });\n });\n break;\n\n default:\n throw new Error(`Invalid message received: ${JSON.stringify(msg)}`);\n }\n }\n}\n\n// An Agent that forwards calls to a backend. The calls are serialized\nexport class ProxyAgent implements Agent {\n private _nextId = 0;\n private _pendingCalls = new Map void, (reject: any) => void]>();\n public rootKey = null;\n\n constructor(private _backend: (msg: ProxyMessage) => void) {}\n\n public onmessage(msg: ProxyMessage): void {\n const id = msg.id;\n\n const maybePromise = this._pendingCalls.get(id);\n if (!maybePromise) {\n throw new Error('A proxy get the same message twice...');\n }\n\n this._pendingCalls.delete(id);\n const [resolve, reject] = maybePromise;\n\n switch (msg.type) {\n case ProxyMessageKind.Error:\n return reject(msg.error);\n case ProxyMessageKind.GetPrincipalResponse:\n case ProxyMessageKind.CallResponse:\n case ProxyMessageKind.QueryResponse:\n case ProxyMessageKind.ReadStateResponse:\n case ProxyMessageKind.StatusResponse:\n return resolve(msg.response);\n default:\n throw new Error(`Invalid message being sent to ProxyAgent: ${JSON.stringify(msg)}`);\n }\n }\n\n public async getPrincipal(): Promise {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.GetPrincipal,\n }).then(principal => {\n if (typeof principal !== 'string') {\n throw new Error('Invalid principal received.');\n }\n return Principal.fromText(principal);\n });\n }\n\n public readState(\n canisterId: Principal | string,\n fields: ReadStateOptions,\n ): Promise {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.ReadState,\n args: [canisterId.toString(), fields],\n }) as Promise;\n }\n\n public call(canisterId: Principal | string, fields: CallOptions): Promise {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.Call,\n args: [canisterId.toString(), fields],\n }) as Promise;\n }\n\n public status(): Promise {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.Status,\n }) as Promise;\n }\n\n public query(canisterId: Principal | string, fields: QueryFields): Promise {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.Query,\n args: [canisterId.toString(), fields],\n }) as Promise;\n }\n\n private async _sendAndWait(msg: ProxyMessage): Promise {\n return new Promise((resolve, reject) => {\n this._pendingCalls.set(msg.id, [resolve, reject]);\n\n this._backend(msg);\n });\n }\n\n public async fetchRootKey(): Promise {\n // Hex-encoded version of the replica root key\n const rootKey = ((await this.status()) as any).root_key;\n this.rootKey = rootKey;\n return rootKey;\n }\n}\n","import { Buffer } from 'buffer/';\nimport {\n Agent,\n getDefaultAgent,\n HttpDetailsResponse,\n QueryResponseRejected,\n QueryResponseStatus,\n ReplicaRejectCode,\n SubmitResponse,\n} from './agent';\nimport { AgentError } from './errors';\nimport { IDL } from '@dfinity/candid';\nimport { pollForResponse, PollStrategyFactory, strategy } from './polling';\nimport { Principal } from '@dfinity/principal';\nimport { RequestId } from './request_id';\nimport { toHex } from './utils/buffer';\nimport { CreateCertificateOptions } from './certificate';\nimport managementCanisterIdl from './canisters/management_idl';\nimport _SERVICE from './canisters/management_service';\n\nexport class ActorCallError extends AgentError {\n constructor(\n public readonly canisterId: Principal,\n public readonly methodName: string,\n public readonly type: 'query' | 'update',\n public readonly props: Record,\n ) {\n super(\n [\n `Call failed:`,\n ` Canister: ${canisterId.toText()}`,\n ` Method: ${methodName} (${type})`,\n ...Object.getOwnPropertyNames(props).map(n => ` \"${n}\": ${JSON.stringify(props[n])}`),\n ].join('\\n'),\n );\n }\n}\n\nexport class QueryCallRejectedError extends ActorCallError {\n constructor(\n canisterId: Principal,\n methodName: string,\n public readonly result: QueryResponseRejected,\n ) {\n super(canisterId, methodName, 'query', {\n Status: result.status,\n Code: ReplicaRejectCode[result.reject_code] ?? `Unknown Code \"${result.reject_code}\"`,\n Message: result.reject_message,\n });\n }\n}\n\nexport class UpdateCallRejectedError extends ActorCallError {\n constructor(\n canisterId: Principal,\n methodName: string,\n public readonly requestId: RequestId,\n public readonly response: SubmitResponse['response'],\n ) {\n super(canisterId, methodName, 'update', {\n 'Request ID': toHex(requestId),\n ...(response.body\n ? {\n ...(response.body.error_code\n ? {\n 'Error code': response.body.error_code,\n }\n : {}),\n 'Reject code': String(response.body.reject_code),\n 'Reject message': response.body.reject_message,\n }\n : {\n 'HTTP status code': response.status.toString(),\n 'HTTP status text': response.statusText,\n }),\n });\n }\n}\n\n/**\n * Configuration to make calls to the Replica.\n */\nexport interface CallConfig {\n /**\n * An agent to use in this call, otherwise the actor or call will try to discover the\n * agent to use.\n */\n agent?: Agent;\n\n /**\n * A polling strategy factory that dictates how much and often we should poll the\n * read_state endpoint to get the result of an update call.\n */\n pollingStrategyFactory?: PollStrategyFactory;\n\n /**\n * The canister ID of this Actor.\n */\n canisterId?: string | Principal;\n\n /**\n * The effective canister ID. This should almost always be ignored.\n */\n effectiveCanisterId?: Principal;\n}\n\n/**\n * Configuration that can be passed to customize the Actor behaviour.\n */\nexport interface ActorConfig extends CallConfig {\n /**\n * The Canister ID of this Actor. This is required for an Actor.\n */\n canisterId: string | Principal;\n\n /**\n * An override function for update calls' CallConfig. This will be called on every calls.\n */\n callTransform?(\n methodName: string,\n args: unknown[],\n callConfig: CallConfig,\n ): Partial | void;\n\n /**\n * An override function for query calls' CallConfig. This will be called on every query.\n */\n queryTransform?(\n methodName: string,\n args: unknown[],\n callConfig: CallConfig,\n ): Partial | void;\n\n /**\n * Polyfill for BLS Certificate verification in case wasm is not supported\n */\n blsVerify?: CreateCertificateOptions['blsVerify'];\n}\n\n// TODO: move this to proper typing when Candid support TypeScript.\n/**\n * A subclass of an actor. Actor class itself is meant to be a based class.\n */\nexport type ActorSubclass> = Actor & T;\n\n/**\n * An actor method type, defined for each methods of the actor service.\n */\nexport interface ActorMethod {\n (...args: Args): Promise;\n withOptions(options: CallConfig): (...args: Args) => Promise;\n}\n\n/**\n * An actor method type, defined for each methods of the actor service.\n */\nexport interface ActorMethodWithHttpDetails\n extends ActorMethod {\n (...args: Args): Promise<{ httpDetails: HttpDetailsResponse; result: Ret }>;\n}\n\nexport type FunctionWithArgsAndReturn = (\n ...args: Args\n) => Ret;\n\n// Update all entries of T with the extra information from ActorMethodWithInfo\nexport type ActorMethodMappedWithHttpDetails = {\n [K in keyof T]: T[K] extends FunctionWithArgsAndReturn\n ? ActorMethodWithHttpDetails\n : never;\n};\n\n/**\n * The mode used when installing a canister.\n */\nexport enum CanisterInstallMode {\n Install = 'install',\n Reinstall = 'reinstall',\n Upgrade = 'upgrade',\n}\n\n/**\n * Internal metadata for actors. It's an enhanced version of ActorConfig with\n * some fields marked as required (as they are defaulted) and canisterId as\n * a Principal type.\n */\ninterface ActorMetadata {\n service: IDL.ServiceClass;\n agent?: Agent;\n config: ActorConfig;\n}\n\nconst metadataSymbol = Symbol.for('ic-agent-metadata');\n\nexport interface CreateActorClassOpts {\n httpDetails?: boolean;\n}\n\n/**\n * An actor base class. An actor is an object containing only functions that will\n * return a promise. These functions are derived from the IDL definition.\n */\nexport class Actor {\n /**\n * Get the Agent class this Actor would call, or undefined if the Actor would use\n * the default agent (global.ic.agent).\n * @param actor The actor to get the agent of.\n */\n public static agentOf(actor: Actor): Agent | undefined {\n return actor[metadataSymbol].config.agent;\n }\n\n /**\n * Get the interface of an actor, in the form of an instance of a Service.\n * @param actor The actor to get the interface of.\n */\n public static interfaceOf(actor: Actor): IDL.ServiceClass {\n return actor[metadataSymbol].service;\n }\n\n public static canisterIdOf(actor: Actor): Principal {\n return Principal.from(actor[metadataSymbol].config.canisterId);\n }\n\n public static async install(\n fields: {\n module: ArrayBuffer;\n mode?: CanisterInstallMode;\n arg?: ArrayBuffer;\n },\n config: ActorConfig,\n ): Promise {\n const mode = fields.mode === undefined ? CanisterInstallMode.Install : fields.mode;\n // Need to transform the arg into a number array.\n const arg = fields.arg ? [...new Uint8Array(fields.arg)] : [];\n // Same for module.\n const wasmModule = [...new Uint8Array(fields.module)];\n const canisterId =\n typeof config.canisterId === 'string'\n ? Principal.fromText(config.canisterId)\n : config.canisterId;\n\n await getManagementCanister(config).install_code({\n mode: { [mode]: null } as any,\n arg,\n wasm_module: wasmModule,\n canister_id: canisterId,\n });\n }\n\n public static async createCanister(config?: CallConfig): Promise {\n const { canister_id: canisterId } = await getManagementCanister(\n config || {},\n ).provisional_create_canister_with_cycles({ amount: [], settings: [] });\n\n return canisterId;\n }\n\n public static async createAndInstallCanister(\n interfaceFactory: IDL.InterfaceFactory,\n fields: {\n module: ArrayBuffer;\n arg?: ArrayBuffer;\n },\n config?: CallConfig,\n ): Promise {\n const canisterId = await this.createCanister(config);\n await this.install(\n {\n ...fields,\n },\n { ...config, canisterId },\n );\n\n return this.createActor(interfaceFactory, { ...config, canisterId });\n }\n\n public static createActorClass(\n interfaceFactory: IDL.InterfaceFactory,\n options?: CreateActorClassOpts,\n ): ActorConstructor {\n const service = interfaceFactory({ IDL });\n\n class CanisterActor extends Actor {\n [x: string]: ActorMethod;\n\n constructor(config: ActorConfig) {\n const canisterId =\n typeof config.canisterId === 'string'\n ? Principal.fromText(config.canisterId)\n : config.canisterId;\n\n super({\n config: {\n ...DEFAULT_ACTOR_CONFIG,\n ...config,\n canisterId,\n },\n service,\n });\n\n for (const [methodName, func] of service._fields) {\n if (options?.httpDetails) {\n func.annotations.push(ACTOR_METHOD_WITH_HTTP_DETAILS);\n }\n\n this[methodName] = _createActorMethod(this, methodName, func, config.blsVerify);\n }\n }\n }\n\n return CanisterActor;\n }\n\n public static createActor>(\n interfaceFactory: IDL.InterfaceFactory,\n configuration: ActorConfig,\n ): ActorSubclass {\n return new (this.createActorClass(interfaceFactory))(\n configuration,\n ) as unknown as ActorSubclass;\n }\n\n public static createActorWithHttpDetails>(\n interfaceFactory: IDL.InterfaceFactory,\n configuration: ActorConfig,\n ): ActorSubclass> {\n return new (this.createActorClass(interfaceFactory, { httpDetails: true }))(\n configuration,\n ) as unknown as ActorSubclass>;\n }\n\n private [metadataSymbol]: ActorMetadata;\n\n protected constructor(metadata: ActorMetadata) {\n this[metadataSymbol] = Object.freeze(metadata);\n }\n}\n\n// IDL functions can have multiple return values, so decoding always\n// produces an array. Ensure that functions with single or zero return\n// values behave as expected.\nfunction decodeReturnValue(types: IDL.Type[], msg: ArrayBuffer) {\n const returnValues = IDL.decode(types, Buffer.from(msg));\n switch (returnValues.length) {\n case 0:\n return undefined;\n case 1:\n return returnValues[0];\n default:\n return returnValues;\n }\n}\n\nconst DEFAULT_ACTOR_CONFIG = {\n pollingStrategyFactory: strategy.defaultStrategy,\n};\n\nexport type ActorConstructor = new (config: ActorConfig) => ActorSubclass;\n\nexport const ACTOR_METHOD_WITH_HTTP_DETAILS = 'http-details';\n\nfunction _createActorMethod(\n actor: Actor,\n methodName: string,\n func: IDL.FuncClass,\n blsVerify?: CreateCertificateOptions['blsVerify'],\n): ActorMethod {\n let caller: (options: CallConfig, ...args: unknown[]) => Promise;\n if (func.annotations.includes('query') || func.annotations.includes('composite_query')) {\n caller = async (options, ...args) => {\n // First, if there's a config transformation, call it.\n options = {\n ...options,\n ...actor[metadataSymbol].config.queryTransform?.(methodName, args, {\n ...actor[metadataSymbol].config,\n ...options,\n }),\n };\n\n const agent = options.agent || actor[metadataSymbol].config.agent || getDefaultAgent();\n const cid = Principal.from(options.canisterId || actor[metadataSymbol].config.canisterId);\n const arg = IDL.encode(func.argTypes, args);\n\n const result = await agent.query(cid, { methodName, arg });\n\n switch (result.status) {\n case QueryResponseStatus.Rejected:\n throw new QueryCallRejectedError(cid, methodName, result);\n\n case QueryResponseStatus.Replied:\n return func.annotations.includes(ACTOR_METHOD_WITH_HTTP_DETAILS)\n ? {\n httpDetails: result.httpDetails,\n result: decodeReturnValue(func.retTypes, result.reply.arg),\n }\n : decodeReturnValue(func.retTypes, result.reply.arg);\n }\n };\n } else {\n caller = async (options, ...args) => {\n // First, if there's a config transformation, call it.\n options = {\n ...options,\n ...actor[metadataSymbol].config.callTransform?.(methodName, args, {\n ...actor[metadataSymbol].config,\n ...options,\n }),\n };\n\n const agent = options.agent || actor[metadataSymbol].config.agent || getDefaultAgent();\n const { canisterId, effectiveCanisterId, pollingStrategyFactory } = {\n ...DEFAULT_ACTOR_CONFIG,\n ...actor[metadataSymbol].config,\n ...options,\n };\n const cid = Principal.from(canisterId);\n const ecid = effectiveCanisterId !== undefined ? Principal.from(effectiveCanisterId) : cid;\n const arg = IDL.encode(func.argTypes, args);\n const { requestId, response } = await agent.call(cid, {\n methodName,\n arg,\n effectiveCanisterId: ecid,\n });\n\n if (!response.ok || response.body /* IC-1462 */) {\n throw new UpdateCallRejectedError(cid, methodName, requestId, response);\n }\n\n const pollStrategy = pollingStrategyFactory();\n const responseBytes = await pollForResponse(agent, ecid, requestId, pollStrategy, blsVerify);\n const shouldIncludeHttpDetails = func.annotations.includes(ACTOR_METHOD_WITH_HTTP_DETAILS);\n\n if (responseBytes !== undefined) {\n return shouldIncludeHttpDetails\n ? {\n httpDetails: response,\n result: decodeReturnValue(func.retTypes, responseBytes),\n }\n : decodeReturnValue(func.retTypes, responseBytes);\n } else if (func.retTypes.length === 0) {\n return shouldIncludeHttpDetails\n ? {\n httpDetails: response,\n result: undefined,\n }\n : undefined;\n } else {\n throw new Error(`Call was returned undefined, but type [${func.retTypes.join(',')}].`);\n }\n };\n }\n\n const handler = (...args: unknown[]) => caller({}, ...args);\n handler.withOptions =\n (options: CallConfig) =>\n (...args: unknown[]) =>\n caller(options, ...args);\n return handler as ActorMethod;\n}\n\nexport type ManagementCanisterRecord = _SERVICE;\n\n/**\n * Create a management canister actor\n * @param config\n */\nexport function getManagementCanister(config: CallConfig): ActorSubclass {\n function transform(_methodName: string, args: unknown[], _callConfig: CallConfig) {\n const first = args[0] as any;\n let effectiveCanisterId = Principal.fromHex('');\n if (first && typeof first === 'object' && first.canister_id) {\n effectiveCanisterId = Principal.from(first.canister_id as unknown);\n }\n return { effectiveCanisterId };\n }\n\n return Actor.createActor(managementCanisterIdl, {\n ...config,\n canisterId: Principal.fromHex(''),\n ...{\n callTransform: transform,\n queryTransform: transform,\n },\n });\n}\n","export const bufEquals = (b1: ArrayBuffer, b2: ArrayBuffer): boolean => {\n if (b1.byteLength !== b2.byteLength) return false;\n const u1 = new Uint8Array(b1);\n const u2 = new Uint8Array(b2);\n for (let i = 0; i < u1.length; i++) {\n if (u1[i] !== u2[i]) return false;\n }\n return true;\n};\n\nexport const encodeLenBytes = (len: number): number => {\n if (len <= 0x7f) {\n return 1;\n } else if (len <= 0xff) {\n return 2;\n } else if (len <= 0xffff) {\n return 3;\n } else if (len <= 0xffffff) {\n return 4;\n } else {\n throw new Error('Length too long (> 4 bytes)');\n }\n};\n\nexport const encodeLen = (buf: Uint8Array, offset: number, len: number): number => {\n if (len <= 0x7f) {\n buf[offset] = len;\n return 1;\n } else if (len <= 0xff) {\n buf[offset] = 0x81;\n buf[offset + 1] = len;\n return 2;\n } else if (len <= 0xffff) {\n buf[offset] = 0x82;\n buf[offset + 1] = len >> 8;\n buf[offset + 2] = len;\n return 3;\n } else if (len <= 0xffffff) {\n buf[offset] = 0x83;\n buf[offset + 1] = len >> 16;\n buf[offset + 2] = len >> 8;\n buf[offset + 3] = len;\n return 4;\n } else {\n throw new Error('Length too long (> 4 bytes)');\n }\n};\n\nexport const decodeLenBytes = (buf: Uint8Array, offset: number): number => {\n if (buf[offset] < 0x80) return 1;\n if (buf[offset] === 0x80) throw new Error('Invalid length 0');\n if (buf[offset] === 0x81) return 2;\n if (buf[offset] === 0x82) return 3;\n if (buf[offset] === 0x83) return 4;\n throw new Error('Length too long (> 4 bytes)');\n};\n\nexport const decodeLen = (buf: Uint8Array, offset: number): number => {\n const lenBytes = decodeLenBytes(buf, offset);\n if (lenBytes === 1) return buf[offset];\n else if (lenBytes === 2) return buf[offset + 1];\n else if (lenBytes === 3) return (buf[offset + 1] << 8) + buf[offset + 2];\n else if (lenBytes === 4)\n return (buf[offset + 1] << 16) + (buf[offset + 2] << 8) + buf[offset + 3];\n throw new Error('Length too long (> 4 bytes)');\n};\n\n/**\n * A DER encoded `SEQUENCE(OID)` for DER-encoded-COSE\n */\nexport const DER_COSE_OID = Uint8Array.from([\n ...[0x30, 0x0c], // SEQUENCE\n ...[0x06, 0x0a], // OID with 10 bytes\n ...[0x2b, 0x06, 0x01, 0x04, 0x01, 0x83, 0xb8, 0x43, 0x01, 0x01], // DER encoded COSE\n]);\n\n/**\n * A DER encoded `SEQUENCE(OID)` for the Ed25519 algorithm\n */\nexport const ED25519_OID = Uint8Array.from([\n ...[0x30, 0x05], // SEQUENCE\n ...[0x06, 0x03], // OID with 3 bytes\n ...[0x2b, 0x65, 0x70], // id-Ed25519 OID\n]);\n\n/**\n * A DER encoded `SEQUENCE(OID)` for secp256k1 with the ECDSA algorithm\n */\nexport const SECP256K1_OID = Uint8Array.from([\n ...[0x30, 0x10], // SEQUENCE\n ...[0x06, 0x07], // OID with 7 bytes\n ...[0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01], // OID ECDSA\n ...[0x06, 0x05], // OID with 5 bytes\n ...[0x2b, 0x81, 0x04, 0x00, 0x0a], // OID secp256k1\n]);\n\n/**\n * Wraps the given `payload` in a DER encoding tagged with the given encoded `oid` like so:\n * `SEQUENCE(oid, BITSTRING(payload))`\n *\n * @param payload The payload to encode as the bit string\n * @param oid The DER encoded (and SEQUENCE wrapped!) OID to tag the payload with\n */\nexport function wrapDER(payload: ArrayBuffer, oid: Uint8Array): Uint8Array {\n // The Bit String header needs to include the unused bit count byte in its length\n const bitStringHeaderLength = 2 + encodeLenBytes(payload.byteLength + 1);\n const len = oid.byteLength + bitStringHeaderLength + payload.byteLength;\n let offset = 0;\n const buf = new Uint8Array(1 + encodeLenBytes(len) + len);\n // Sequence\n buf[offset++] = 0x30;\n // Sequence Length\n offset += encodeLen(buf, offset, len);\n\n // OID\n buf.set(oid, offset);\n offset += oid.byteLength;\n\n // Bit String Header\n buf[offset++] = 0x03;\n offset += encodeLen(buf, offset, payload.byteLength + 1);\n // 0 padding\n buf[offset++] = 0x00;\n buf.set(new Uint8Array(payload), offset);\n\n return buf;\n}\n\n/**\n * Extracts a payload from the given `derEncoded` data, and checks that it was tagged with the given `oid`.\n *\n * `derEncoded = SEQUENCE(oid, BITSTRING(payload))`\n *\n * @param derEncoded The DER encoded and tagged data\n * @param oid The DER encoded (and SEQUENCE wrapped!) expected OID\n * @returns The unwrapped payload\n */\nexport const unwrapDER = (derEncoded: ArrayBuffer, oid: Uint8Array): Uint8Array => {\n let offset = 0;\n const expect = (n: number, msg: string) => {\n if (buf[offset++] !== n) {\n throw new Error('Expected: ' + msg);\n }\n };\n\n const buf = new Uint8Array(derEncoded);\n expect(0x30, 'sequence');\n offset += decodeLenBytes(buf, offset);\n\n if (!bufEquals(buf.slice(offset, offset + oid.byteLength), oid)) {\n throw new Error('Not the expected OID.');\n }\n offset += oid.byteLength;\n\n expect(0x03, 'bit string');\n const payloadLen = decodeLen(buf, offset) - 1; // Subtracting 1 to account for the 0 padding\n offset += decodeLenBytes(buf, offset);\n expect(0x00, '0 padding');\n const result = buf.slice(offset);\n if (payloadLen !== result.length) {\n throw new Error(\n `DER payload mismatch: Expected length ${payloadLen} actual length ${result.length}`,\n );\n }\n return result;\n};\n","import { DerEncodedPublicKey, KeyPair, PublicKey, Signature, SignIdentity } from '@dfinity/agent';\nimport * as tweetnacl from 'tweetnacl';\nimport { fromHexString, toHexString } from '../buffer';\nimport { ED25519_OID, unwrapDER, wrapDER } from './der';\n\nexport class Ed25519PublicKey implements PublicKey {\n public static from(key: PublicKey): Ed25519PublicKey {\n return this.fromDer(key.toDer());\n }\n\n public static fromRaw(rawKey: ArrayBuffer): Ed25519PublicKey {\n return new Ed25519PublicKey(rawKey);\n }\n\n public static fromDer(derKey: DerEncodedPublicKey): Ed25519PublicKey {\n return new Ed25519PublicKey(this.derDecode(derKey));\n }\n\n // The length of Ed25519 public keys is always 32 bytes.\n private static RAW_KEY_LENGTH = 32;\n\n private static derEncode(publicKey: ArrayBuffer): DerEncodedPublicKey {\n return wrapDER(publicKey, ED25519_OID).buffer as DerEncodedPublicKey;\n }\n\n private static derDecode(key: DerEncodedPublicKey): ArrayBuffer {\n const unwrapped = unwrapDER(key, ED25519_OID);\n if (unwrapped.length !== this.RAW_KEY_LENGTH) {\n throw new Error('An Ed25519 public key must be exactly 32bytes long');\n }\n return unwrapped;\n }\n\n private readonly rawKey: ArrayBuffer;\n private readonly derKey: DerEncodedPublicKey;\n\n // `fromRaw` and `fromDer` should be used for instantiation, not this constructor.\n private constructor(key: ArrayBuffer) {\n this.rawKey = key;\n this.derKey = Ed25519PublicKey.derEncode(key);\n }\n\n public toDer(): DerEncodedPublicKey {\n return this.derKey;\n }\n\n public toRaw(): ArrayBuffer {\n return this.rawKey;\n }\n}\n\nexport class Ed25519KeyIdentity extends SignIdentity {\n public static generate(seed?: Uint8Array): Ed25519KeyIdentity {\n if (seed && seed.length !== 32) {\n throw new Error('Ed25519 Seed needs to be 32 bytes long.');\n }\n\n const { publicKey, secretKey } =\n seed === undefined ? tweetnacl.sign.keyPair() : tweetnacl.sign.keyPair.fromSeed(seed);\n return new this(Ed25519PublicKey.fromRaw(publicKey), secretKey);\n }\n\n public static fromParsedJson(obj: JsonnableEd25519KeyIdentity): Ed25519KeyIdentity {\n const [publicKeyDer, privateKeyRaw] = obj;\n return new Ed25519KeyIdentity(\n Ed25519PublicKey.fromDer(fromHexString(publicKeyDer) as DerEncodedPublicKey),\n fromHexString(privateKeyRaw),\n );\n }\n\n public static fromJSON(json: string): Ed25519KeyIdentity {\n const parsed = JSON.parse(json);\n if (Array.isArray(parsed)) {\n if (typeof parsed[0] === 'string' && typeof parsed[1] === 'string') {\n return this.fromParsedJson([parsed[0], parsed[1]]);\n } else {\n throw new Error('Deserialization error: JSON must have at least 2 items.');\n }\n }\n throw new Error(`Deserialization error: Invalid JSON type for string: ${JSON.stringify(json)}`);\n }\n\n public static fromKeyPair(publicKey: ArrayBuffer, privateKey: ArrayBuffer): Ed25519KeyIdentity {\n return new Ed25519KeyIdentity(Ed25519PublicKey.fromRaw(publicKey), privateKey);\n }\n\n public static fromSecretKey(secretKey: ArrayBuffer): Ed25519KeyIdentity {\n const keyPair = tweetnacl.sign.keyPair.fromSecretKey(new Uint8Array(secretKey));\n return Ed25519KeyIdentity.fromKeyPair(keyPair.publicKey, keyPair.secretKey);\n }\n\n protected _publicKey: Ed25519PublicKey;\n\n // `fromRaw` and `fromDer` should be used for instantiation, not this constructor.\n protected constructor(publicKey: PublicKey, protected _privateKey: ArrayBuffer) {\n super();\n this._publicKey = Ed25519PublicKey.from(publicKey);\n }\n\n /**\n * Serialize this key to JSON.\n */\n public toJSON(): JsonnableEd25519KeyIdentity {\n return [toHexString(this._publicKey.toDer()), toHexString(this._privateKey)];\n }\n\n /**\n * Return a copy of the key pair.\n */\n public getKeyPair(): KeyPair {\n return {\n secretKey: this._privateKey,\n publicKey: this._publicKey,\n };\n }\n\n /**\n * Return the public key.\n */\n public getPublicKey(): PublicKey {\n return this._publicKey;\n }\n\n /**\n * Signs a blob of data, with this identity's private key.\n * @param challenge - challenge to sign with this identity's secretKey, producing a signature\n */\n public async sign(challenge: ArrayBuffer): Promise {\n const blob = new Uint8Array(challenge);\n const signature = tweetnacl.sign.detached(blob, new Uint8Array(this._privateKey)).buffer;\n return signature as Signature;\n }\n}\n\ntype PublicKeyHex = string;\ntype SecretKeyHex = string;\nexport type JsonnableEd25519KeyIdentity = [PublicKeyHex, SecretKeyHex];\n","/**\n * Return an array buffer from its hexadecimal representation.\n * @param hexString The hexadecimal string.\n */\nexport function fromHexString(hexString: string): ArrayBuffer {\n return new Uint8Array((hexString.match(/.{1,2}/g) ?? []).map(byte => parseInt(byte, 16))).buffer;\n}\n\n/**\n * Returns an hexadecimal representation of an array buffer.\n * @param bytes The array buffer.\n */\nexport function toHexString(bytes: ArrayBuffer): string {\n return new Uint8Array(bytes).reduce((str, byte) => str + byte.toString(16).padStart(2, '0'), '');\n}\n","import {\n DerEncodedPublicKey,\n HttpAgentRequest,\n PublicKey,\n requestIdOf,\n Signature,\n SignIdentity,\n} from '@dfinity/agent';\nimport { Principal } from '@dfinity/principal';\nimport * as cbor from 'simple-cbor';\nimport { fromHexString, toHexString } from '../buffer';\n\nconst domainSeparator = new TextEncoder().encode('\\x1Aic-request-auth-delegation');\nconst requestDomainSeparator = new TextEncoder().encode('\\x0Aic-request');\n\nfunction _parseBlob(value: unknown): ArrayBuffer {\n if (typeof value !== 'string' || value.length < 64) {\n throw new Error('Invalid public key.');\n }\n\n return fromHexString(value);\n}\n\n/**\n * A single delegation object that is signed by a private key. This is constructed by\n * `DelegationChain.create()`.\n *\n * {@see DelegationChain}\n */\nexport class Delegation {\n constructor(\n public readonly pubkey: ArrayBuffer,\n public readonly expiration: bigint,\n public readonly targets?: Principal[],\n ) {}\n\n public toCBOR(): cbor.CborValue {\n // Expiration field needs to be encoded as a u64 specifically.\n return cbor.value.map({\n pubkey: cbor.value.bytes(this.pubkey),\n expiration: cbor.value.u64(this.expiration.toString(16), 16),\n ...(this.targets && {\n targets: cbor.value.array(this.targets.map(t => cbor.value.bytes(t.toUint8Array()))),\n }),\n });\n }\n\n public toJSON(): JsonnableDelegation {\n // every string should be hex and once-de-hexed,\n // discoverable what it is (e.g. de-hex to get JSON with a 'type' property, or de-hex to DER\n // with an OID). After de-hex, if it's not obvious what it is, it's an ArrayBuffer.\n return {\n expiration: this.expiration.toString(16),\n pubkey: toHexString(this.pubkey),\n ...(this.targets && { targets: this.targets.map(p => p.toHex()) }),\n };\n }\n}\n\n/**\n * Type of ReturnType.\n * The goal here is to stringify all non-JSON-compatible types to some bytes representation we can\n * stringify as hex.\n * (Hex shouldn't be ambiguous ever, because you can encode as DER with semantic OIDs).\n */\ninterface JsonnableDelegation {\n // A BigInt of Nanoseconds since epoch as hex\n expiration: string;\n // Hexadecimal representation of the DER public key.\n pubkey: string;\n // Array of strings, where each string is hex of principal blob (*NOT* textual representation).\n targets?: string[];\n}\n\n/**\n * A signed delegation, which lends its identity to the public key in the delegation\n * object. This is constructed by `DelegationChain.create()`.\n *\n * {@see DelegationChain}\n */\nexport interface SignedDelegation {\n delegation: Delegation;\n signature: Signature;\n}\n\n/**\n * Sign a single delegation object for a period of time.\n *\n * @param from The identity that lends its delegation.\n * @param to The identity that receives the delegation.\n * @param expiration An expiration date for this delegation.\n * @param targets Limit this delegation to the target principals.\n */\nasync function _createSingleDelegation(\n from: SignIdentity,\n to: PublicKey,\n expiration: Date,\n targets?: Principal[],\n): Promise {\n const delegation: Delegation = new Delegation(\n to.toDer(),\n BigInt(+expiration) * BigInt(1000000), // In nanoseconds.\n targets,\n );\n // The signature is calculated by signing the concatenation of the domain separator\n // and the message.\n // Note: To ensure Safari treats this as a user gesture, ensure to not use async methods\n // besides the actualy webauthn functionality (such as `sign`). Safari will de-register\n // a user gesture if you await an async call thats not fetch, xhr, or setTimeout.\n const challenge = new Uint8Array([\n ...domainSeparator,\n ...new Uint8Array(requestIdOf(delegation)),\n ]);\n const signature = await from.sign(challenge);\n\n return {\n delegation,\n signature,\n };\n}\n\nexport interface JsonnableDelegationChain {\n publicKey: string;\n delegations: Array<{\n signature: string;\n delegation: {\n pubkey: string;\n expiration: string;\n targets?: string[];\n };\n }>;\n}\n\n/**\n * A chain of delegations. This is JSON Serializable.\n * This is the object to serialize and pass to a DelegationIdentity. It does not keep any\n * private keys.\n */\nexport class DelegationChain {\n /**\n * Create a delegation chain between two (or more) keys. By default, the expiration time\n * will be very short (15 minutes).\n *\n * To build a chain of more than 2 identities, this function needs to be called multiple times,\n * passing the previous delegation chain into the options argument. For example:\n *\n * @example\n * const rootKey = createKey();\n * const middleKey = createKey();\n * const bottomeKey = createKey();\n *\n * const rootToMiddle = await DelegationChain.create(\n * root, middle.getPublicKey(), Date.parse('2100-01-01'),\n * );\n * const middleToBottom = await DelegationChain.create(\n * middle, bottom.getPublicKey(), Date.parse('2100-01-01'), { previous: rootToMiddle },\n * );\n *\n * // We can now use a delegation identity that uses the delegation above:\n * const identity = DelegationIdentity.fromDelegation(bottomKey, middleToBottom);\n *\n * @param from The identity that will delegate.\n * @param to The identity that gets delegated. It can now sign messages as if it was the\n * identity above.\n * @param expiration The length the delegation is valid. By default, 15 minutes from calling\n * this function.\n * @param options A set of options for this delegation. expiration and previous\n * @param options.previous - Another DelegationChain that this chain should start with.\n * @param options.targets - targets that scope the delegation (e.g. Canister Principals)\n */\n public static async create(\n from: SignIdentity,\n to: PublicKey,\n expiration: Date = new Date(Date.now() + 15 * 60 * 1000),\n options: {\n previous?: DelegationChain;\n targets?: Principal[];\n } = {},\n ): Promise {\n const delegation = await _createSingleDelegation(from, to, expiration, options.targets);\n return new DelegationChain(\n [...(options.previous?.delegations || []), delegation],\n options.previous?.publicKey || from.getPublicKey().toDer(),\n );\n }\n\n /**\n * Creates a DelegationChain object from a JSON string.\n *\n * @param json The JSON string to parse.\n */\n public static fromJSON(json: string | JsonnableDelegationChain): DelegationChain {\n const { publicKey, delegations } = typeof json === 'string' ? JSON.parse(json) : json;\n if (!Array.isArray(delegations)) {\n throw new Error('Invalid delegations.');\n }\n\n const parsedDelegations: SignedDelegation[] = delegations.map(signedDelegation => {\n const { delegation, signature } = signedDelegation;\n const { pubkey, expiration, targets } = delegation;\n if (targets !== undefined && !Array.isArray(targets)) {\n throw new Error('Invalid targets.');\n }\n\n return {\n delegation: new Delegation(\n _parseBlob(pubkey),\n BigInt(`0x${expiration}`), // expiration in JSON is an hexa string (See toJSON() below).\n targets &&\n targets.map((t: unknown) => {\n if (typeof t !== 'string') {\n throw new Error('Invalid target.');\n }\n return Principal.fromHex(t);\n }),\n ),\n signature: _parseBlob(signature) as Signature,\n };\n });\n\n return new this(parsedDelegations, _parseBlob(publicKey) as DerEncodedPublicKey);\n }\n\n /**\n * Creates a DelegationChain object from a list of delegations and a DER-encoded public key.\n *\n * @param delegations The list of delegations.\n * @param publicKey The DER-encoded public key of the key-pair signing the first delegation.\n */\n public static fromDelegations(\n delegations: SignedDelegation[],\n publicKey: DerEncodedPublicKey,\n ): DelegationChain {\n return new this(delegations, publicKey);\n }\n\n protected constructor(\n public readonly delegations: SignedDelegation[],\n public readonly publicKey: DerEncodedPublicKey,\n ) {}\n\n public toJSON(): JsonnableDelegationChain {\n return {\n delegations: this.delegations.map(signedDelegation => {\n const { delegation, signature } = signedDelegation;\n const { targets } = delegation;\n return {\n delegation: {\n expiration: delegation.expiration.toString(16),\n pubkey: toHexString(delegation.pubkey),\n ...(targets && {\n targets: targets.map(t => t.toHex()),\n }),\n },\n signature: toHexString(signature),\n };\n }),\n publicKey: toHexString(this.publicKey),\n };\n }\n}\n\n/**\n * An Identity that adds delegation to a request. Everywhere in this class, the name\n * innerKey refers to the SignIdentity that is being used to sign the requests, while\n * originalKey is the identity that is being borrowed. More identities can be used\n * in the middle to delegate.\n */\nexport class DelegationIdentity extends SignIdentity {\n /**\n * Create a delegation without having access to delegateKey.\n *\n * @param key The key used to sign the reqyests.\n * @param delegation A delegation object created using `createDelegation`.\n */\n public static fromDelegation(\n key: Pick,\n delegation: DelegationChain,\n ): DelegationIdentity {\n return new this(key, delegation);\n }\n\n protected constructor(\n private _inner: Pick,\n private _delegation: DelegationChain,\n ) {\n super();\n }\n\n public getDelegation(): DelegationChain {\n return this._delegation;\n }\n\n public getPublicKey(): PublicKey {\n return {\n toDer: () => this._delegation.publicKey,\n };\n }\n public sign(blob: ArrayBuffer): Promise {\n return this._inner.sign(blob);\n }\n\n public async transformRequest(request: HttpAgentRequest): Promise {\n const { body, ...fields } = request;\n const requestId = await requestIdOf(body);\n return {\n ...fields,\n body: {\n content: body,\n sender_sig: await this.sign(\n new Uint8Array([...requestDomainSeparator, ...new Uint8Array(requestId)]),\n ),\n sender_delegation: this._delegation.delegations,\n sender_pubkey: this._delegation.publicKey,\n },\n };\n }\n}\n\n/**\n * List of things to check for a delegation chain validity.\n */\nexport interface DelegationValidChecks {\n /**\n * Check that the scope is amongst the scopes that this delegation has access to.\n */\n scope?: Principal | string | Array;\n}\n\n/**\n * Analyze a DelegationChain and validate that it's valid, ie. not expired and apply to the\n * scope.\n * @param chain The chain to validate.\n * @param checks Various checks to validate on the chain.\n */\nexport function isDelegationValid(chain: DelegationChain, checks?: DelegationValidChecks): boolean {\n // Verify that the no delegation is expired. If any are in the chain, returns false.\n for (const { delegation } of chain.delegations) {\n // prettier-ignore\n if (+new Date(Number(delegation.expiration / BigInt(1000000))) <= +Date.now()) {\n return false;\n }\n }\n\n // Check the scopes.\n const scopes: Principal[] = [];\n const maybeScope = checks?.scope;\n if (maybeScope) {\n if (Array.isArray(maybeScope)) {\n scopes.push(...maybeScope.map(s => (typeof s === 'string' ? Principal.fromText(s) : s)));\n } else {\n scopes.push(typeof maybeScope === 'string' ? Principal.fromText(maybeScope) : maybeScope);\n }\n }\n\n for (const s of scopes) {\n const scope = s.toText();\n for (const { delegation } of chain.delegations) {\n if (delegation.targets === undefined) {\n continue;\n }\n\n let none = true;\n for (const target of delegation.targets) {\n if (target.toText() === scope) {\n none = false;\n break;\n }\n }\n if (none) {\n return false;\n }\n }\n }\n\n return true;\n}\n","import { DerEncodedPublicKey, PublicKey, Signature, SignIdentity } from '@dfinity/agent';\nimport borc from 'borc';\nimport * as tweetnacl from 'tweetnacl';\nimport { fromHexString, toHexString } from '../buffer';\nimport { DER_COSE_OID, wrapDER } from './der';\n\nfunction _coseToDerEncodedBlob(cose: ArrayBuffer): DerEncodedPublicKey {\n return wrapDER(cose, DER_COSE_OID).buffer as DerEncodedPublicKey;\n}\n\ntype PublicKeyCredentialWithAttachment = PublicKeyCredential & {\n // Extends `PublicKeyCredential` with an optional field introduced in the WebAuthn level 3 spec:\n // https://w3c.github.io/webauthn/#dom-publickeycredential-authenticatorattachment\n // Already supported by Chrome, Safari and Edge\n // Note: `null` is included here as a possible value because Edge set this value to null in the\n // past.\n authenticatorAttachment: AuthenticatorAttachment | undefined | null;\n};\n\n/**\n * From the documentation;\n * The authData is a byte array described in the spec. Parsing it will involve slicing bytes from\n * the array and converting them into usable objects.\n *\n * See https://webauthn.guide/#registration (subsection \"Example: Parsing the authenticator data\").\n *\n * @param authData The authData field of the attestation response.\n * @returns The COSE key of the authData.\n */\nfunction _authDataToCose(authData: ArrayBuffer): ArrayBuffer {\n const dataView = new DataView(new ArrayBuffer(2));\n const idLenBytes = authData.slice(53, 55);\n [...new Uint8Array(idLenBytes)].forEach((v, i) => dataView.setUint8(i, v));\n const credentialIdLength = dataView.getUint16(0);\n\n // Get the public key object.\n return authData.slice(55 + credentialIdLength);\n}\n\nexport class CosePublicKey implements PublicKey {\n protected _encodedKey: DerEncodedPublicKey;\n\n public constructor(protected _cose: ArrayBuffer) {\n this._encodedKey = _coseToDerEncodedBlob(_cose);\n }\n\n public toDer(): DerEncodedPublicKey {\n return this._encodedKey;\n }\n\n public getCose(): ArrayBuffer {\n return this._cose;\n }\n}\n\n/**\n * Create a challenge from a string or array. The default challenge is always the same\n * because we don't need to verify the authenticity of the key on the server (we don't\n * register our keys with the IC). Any challenge would do, even one per key, randomly\n * generated.\n *\n * @param challenge The challenge to transform into a byte array. By default a hard\n * coded string.\n */\nfunction _createChallengeBuffer(challenge: string | Uint8Array = ''): Uint8Array {\n if (typeof challenge === 'string') {\n return Uint8Array.from(challenge, c => c.charCodeAt(0));\n } else {\n return challenge;\n }\n}\n\n/**\n * Create a credentials to authenticate with a server. This is necessary in order in\n * WebAuthn to get credentials IDs (which give us the public key and allow us to\n * sign), but in the case of the Internet Computer, we don't actually need to register\n * it, so we don't.\n * @param credentialCreationOptions an optional CredentialCreationOptions object\n */\nasync function _createCredential(\n credentialCreationOptions?: CredentialCreationOptions,\n): Promise {\n const creds = (await navigator.credentials.create(\n credentialCreationOptions ?? {\n publicKey: {\n authenticatorSelection: {\n userVerification: 'preferred',\n },\n attestation: 'direct',\n challenge: _createChallengeBuffer(),\n pubKeyCredParams: [{ type: 'public-key', alg: PubKeyCoseAlgo.ECDSA_WITH_SHA256 }],\n rp: {\n name: 'Internet Identity Service',\n },\n user: {\n id: tweetnacl.randomBytes(16),\n name: 'Internet Identity',\n displayName: 'Internet Identity',\n },\n },\n },\n )) as PublicKeyCredentialWithAttachment;\n\n // Validate that it's the correct type at runtime, since WebAuthn does not HAVE to\n // reply with a PublicKeyCredential.\n if (creds.response === undefined || !(creds.rawId instanceof ArrayBuffer)) {\n return null;\n } else {\n return creds;\n }\n}\n\n// See https://www.iana.org/assignments/cose/cose.xhtml#algorithms for a complete\n// list of these algorithms. We only list the ones we support here.\nenum PubKeyCoseAlgo {\n ECDSA_WITH_SHA256 = -7,\n}\n\n/**\n * A SignIdentity that uses `navigator.credentials`. See https://webauthn.guide/ for\n * more information about WebAuthentication.\n */\nexport class WebAuthnIdentity extends SignIdentity {\n /**\n * Create an identity from a JSON serialization.\n * @param json - json to parse\n */\n public static fromJSON(json: string): WebAuthnIdentity {\n const { publicKey, rawId } = JSON.parse(json);\n\n if (typeof publicKey !== 'string' || typeof rawId !== 'string') {\n throw new Error('Invalid JSON string.');\n }\n\n return new this(fromHexString(rawId), fromHexString(publicKey), undefined);\n }\n\n /**\n * Create an identity.\n * @param credentialCreationOptions an optional CredentialCreationOptions Challenge\n */\n public static async create(\n credentialCreationOptions?: CredentialCreationOptions,\n ): Promise {\n const creds = await _createCredential(credentialCreationOptions);\n\n if (!creds || creds.type !== 'public-key') {\n throw new Error('Could not create credentials.');\n }\n\n const response = creds.response as AuthenticatorAttestationResponse;\n if (!(response.attestationObject instanceof ArrayBuffer)) {\n throw new Error('Was expecting an attestation response.');\n }\n\n // Parse the attestationObject as CBOR.\n const attObject = borc.decodeFirst(new Uint8Array(response.attestationObject));\n\n return new this(\n creds.rawId,\n _authDataToCose(attObject.authData),\n creds.authenticatorAttachment ?? undefined,\n );\n }\n\n protected _publicKey: CosePublicKey;\n\n public constructor(\n public readonly rawId: ArrayBuffer,\n cose: ArrayBuffer,\n protected authenticatorAttachment: AuthenticatorAttachment | undefined,\n ) {\n super();\n this._publicKey = new CosePublicKey(cose);\n }\n\n public getPublicKey(): PublicKey {\n return this._publicKey;\n }\n\n /**\n * WebAuthn level 3 spec introduces a new attribute on successful WebAuthn interactions,\n * see https://w3c.github.io/webauthn/#dom-publickeycredential-authenticatorattachment.\n * This attribute is already implemented for Chrome, Safari and Edge.\n *\n * Given the attribute is only available after a successful interaction, the information is\n * provided opportunistically and might also be `undefined`.\n */\n public getAuthenticatorAttachment(): AuthenticatorAttachment | undefined {\n return this.authenticatorAttachment;\n }\n\n public async sign(blob: ArrayBuffer): Promise {\n const result = (await navigator.credentials.get({\n publicKey: {\n allowCredentials: [\n {\n type: 'public-key',\n id: this.rawId,\n },\n ],\n challenge: blob,\n userVerification: 'preferred',\n },\n })) as PublicKeyCredentialWithAttachment;\n\n if (result.authenticatorAttachment !== null) {\n this.authenticatorAttachment = result.authenticatorAttachment;\n }\n\n const response = result.response as AuthenticatorAssertionResponse;\n if (\n response.signature instanceof ArrayBuffer &&\n response.authenticatorData instanceof ArrayBuffer\n ) {\n const cbor = borc.encode(\n new borc.Tagged(55799, {\n authenticator_data: new Uint8Array(response.authenticatorData),\n client_data_json: new TextDecoder().decode(response.clientDataJSON),\n signature: new Uint8Array(response.signature),\n }),\n );\n if (!cbor) {\n throw new Error('failed to encode cbor');\n }\n return cbor.buffer as Signature;\n } else {\n throw new Error('Invalid response from WebAuthn.');\n }\n }\n\n /**\n * Allow for JSON serialization of all information needed to reuse this identity.\n */\n public toJSON(): JsonnableWebAuthnIdentity {\n return {\n publicKey: toHexString(this._publicKey.getCose()),\n rawId: toHexString(this.rawId),\n };\n }\n}\n\n/**\n * ReturnType\n */\nexport interface JsonnableWebAuthnIdentity {\n // The hexadecimal representation of the DER encoded public key.\n publicKey: string;\n // The string representation of the local WebAuthn Credential.id (base64url encoded).\n rawId: string;\n}\n","import { hash as assertHash, bytes as assertBytes, exists as assertExists } from './_assert.js';\nimport { Hash, CHash, Input, toBytes } from './utils.js';\n// HMAC (RFC 2104)\nexport class HMAC> extends Hash> {\n oHash: T;\n iHash: T;\n blockLen: number;\n outputLen: number;\n private finished = false;\n private destroyed = false;\n\n constructor(hash: CHash, _key: Input) {\n super();\n assertHash(hash);\n const key = toBytes(_key);\n this.iHash = hash.create() as T;\n if (typeof this.iHash.update !== 'function')\n throw new Error('Expected instance of class which extends utils.Hash');\n this.blockLen = this.iHash.blockLen;\n this.outputLen = this.iHash.outputLen;\n const blockLen = this.blockLen;\n const pad = new Uint8Array(blockLen);\n // blockLen can be bigger than outputLen\n pad.set(key.length > blockLen ? hash.create().update(key).digest() : key);\n for (let i = 0; i < pad.length; i++) pad[i] ^= 0x36;\n this.iHash.update(pad);\n // By doing update (processing of first block) of outer hash here we can re-use it between multiple calls via clone\n this.oHash = hash.create() as T;\n // Undo internal XOR && apply outer XOR\n for (let i = 0; i < pad.length; i++) pad[i] ^= 0x36 ^ 0x5c;\n this.oHash.update(pad);\n pad.fill(0);\n }\n update(buf: Input) {\n assertExists(this);\n this.iHash.update(buf);\n return this;\n }\n digestInto(out: Uint8Array) {\n assertExists(this);\n assertBytes(out, this.outputLen);\n this.finished = true;\n this.iHash.digestInto(out);\n this.oHash.update(out);\n this.oHash.digestInto(out);\n this.destroy();\n }\n digest() {\n const out = new Uint8Array(this.oHash.outputLen);\n this.digestInto(out);\n return out;\n }\n _cloneInto(to?: HMAC): HMAC {\n // Create new instance without calling constructor since key already in state and we don't know it.\n to ||= Object.create(Object.getPrototypeOf(this), {});\n const { oHash, iHash, finished, destroyed, blockLen, outputLen } = this;\n to = to as this;\n to.finished = finished;\n to.destroyed = destroyed;\n to.blockLen = blockLen;\n to.outputLen = outputLen;\n to.oHash = oHash._cloneInto(to.oHash);\n to.iHash = iHash._cloneInto(to.iHash);\n return to;\n }\n destroy() {\n this.destroyed = true;\n this.oHash.destroy();\n this.iHash.destroy();\n }\n}\n\n/**\n * HMAC: RFC2104 message authentication code.\n * @param hash - function that would be used e.g. sha256\n * @param key - message key\n * @param message - message data\n */\nexport const hmac = (hash: CHash, key: Input, message: Input): Uint8Array =>\n new HMAC(hash, key).update(message).digest();\nhmac.create = (hash: CHash, key: Input) => new HMAC(hash, key);\n","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// 100 lines of code in the file are duplicated from noble-hashes (utils).\n// This is OK: `abstract` directory does not use noble-hashes.\n// User may opt-in into using different hashing library. This way, noble-hashes\n// won't be included into their bundle.\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst u8a = (a: any): a is Uint8Array => a instanceof Uint8Array;\nexport type Hex = Uint8Array | string; // hex strings are accepted for simplicity\nexport type PrivKey = Hex | bigint; // bigints are accepted to ease learning curve\nexport type CHash = {\n (message: Uint8Array | string): Uint8Array;\n blockLen: number;\n outputLen: number;\n create(opts?: { dkLen?: number }): any; // For shake\n};\nexport type FHash = (message: Uint8Array | string) => Uint8Array;\n\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) =>\n i.toString(16).padStart(2, '0')\n);\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes: Uint8Array): string {\n if (!u8a(bytes)) throw new Error('Uint8Array expected');\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n\nexport function numberToHexUnpadded(num: number | bigint): string {\n const hex = num.toString(16);\n return hex.length & 1 ? `0${hex}` : hex;\n}\n\nexport function hexToNumber(hex: string): bigint {\n if (typeof hex !== 'string') throw new Error('hex string expected, got ' + typeof hex);\n // Big Endian\n return BigInt(hex === '' ? '0' : `0x${hex}`);\n}\n\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex: string): Uint8Array {\n if (typeof hex !== 'string') throw new Error('hex string expected, got ' + typeof hex);\n const len = hex.length;\n if (len % 2) throw new Error('padded hex string expected, got unpadded hex of length ' + len);\n const array = new Uint8Array(len / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0) throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\n\n// BE: Big Endian, LE: Little Endian\nexport function bytesToNumberBE(bytes: Uint8Array): bigint {\n return hexToNumber(bytesToHex(bytes));\n}\nexport function bytesToNumberLE(bytes: Uint8Array): bigint {\n if (!u8a(bytes)) throw new Error('Uint8Array expected');\n return hexToNumber(bytesToHex(Uint8Array.from(bytes).reverse()));\n}\n\nexport function numberToBytesBE(n: number | bigint, len: number): Uint8Array {\n return hexToBytes(n.toString(16).padStart(len * 2, '0'));\n}\nexport function numberToBytesLE(n: number | bigint, len: number): Uint8Array {\n return numberToBytesBE(n, len).reverse();\n}\n// Unpadded, rarely used\nexport function numberToVarBytesBE(n: number | bigint): Uint8Array {\n return hexToBytes(numberToHexUnpadded(n));\n}\n\n/**\n * Takes hex string or Uint8Array, converts to Uint8Array.\n * Validates output length.\n * Will throw error for other types.\n * @param title descriptive title for an error e.g. 'private key'\n * @param hex hex string or Uint8Array\n * @param expectedLength optional, will compare to result array's length\n * @returns\n */\nexport function ensureBytes(title: string, hex: Hex, expectedLength?: number): Uint8Array {\n let res: Uint8Array;\n if (typeof hex === 'string') {\n try {\n res = hexToBytes(hex);\n } catch (e) {\n throw new Error(`${title} must be valid hex string, got \"${hex}\". Cause: ${e}`);\n }\n } else if (u8a(hex)) {\n // Uint8Array.from() instead of hash.slice() because node.js Buffer\n // is instance of Uint8Array, and its slice() creates **mutable** copy\n res = Uint8Array.from(hex);\n } else {\n throw new Error(`${title} must be hex string or Uint8Array`);\n }\n const len = res.length;\n if (typeof expectedLength === 'number' && len !== expectedLength)\n throw new Error(`${title} expected ${expectedLength} bytes, got ${len}`);\n return res;\n}\n\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays: Uint8Array[]): Uint8Array {\n const r = new Uint8Array(arrays.reduce((sum, a) => sum + a.length, 0));\n let pad = 0; // walk through each item, ensure they have proper type\n arrays.forEach((a) => {\n if (!u8a(a)) throw new Error('Uint8Array expected');\n r.set(a, pad);\n pad += a.length;\n });\n return r;\n}\n\nexport function equalBytes(b1: Uint8Array, b2: Uint8Array) {\n // We don't care about timing attacks here\n if (b1.length !== b2.length) return false;\n for (let i = 0; i < b1.length; i++) if (b1[i] !== b2[i]) return false;\n return true;\n}\n\n// Global symbols in both browsers and Node.js since v11\n// See https://github.com/microsoft/TypeScript/issues/31535\ndeclare const TextEncoder: any;\n\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str: string): Uint8Array {\n if (typeof str !== 'string') throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n\n// Bit operations\n\n/**\n * Calculates amount of bits in a bigint.\n * Same as `n.toString(2).length`\n */\nexport function bitLen(n: bigint) {\n let len;\n for (len = 0; n > _0n; n >>= _1n, len += 1);\n return len;\n}\n\n/**\n * Gets single bit at position.\n * NOTE: first bit position is 0 (same as arrays)\n * Same as `!!+Array.from(n.toString(2)).reverse()[pos]`\n */\nexport function bitGet(n: bigint, pos: number) {\n return (n >> BigInt(pos)) & _1n;\n}\n\n/**\n * Sets single bit at position.\n */\nexport const bitSet = (n: bigint, pos: number, value: boolean) => {\n return n | ((value ? _1n : _0n) << BigInt(pos));\n};\n\n/**\n * Calculate mask for N bits. Not using ** operator with bigints because of old engines.\n * Same as BigInt(`0b${Array(i).fill('1').join('')}`)\n */\nexport const bitMask = (n: number) => (_2n << BigInt(n - 1)) - _1n;\n\n// DRBG\n\nconst u8n = (data?: any) => new Uint8Array(data); // creates Uint8Array\nconst u8fr = (arr: any) => Uint8Array.from(arr); // another shortcut\ntype Pred = (v: Uint8Array) => T | undefined;\n/**\n * Minimal HMAC-DRBG from NIST 800-90 for RFC6979 sigs.\n * @returns function that will call DRBG until 2nd arg returns something meaningful\n * @example\n * const drbg = createHmacDRBG(32, 32, hmac);\n * drbg(seed, bytesToKey); // bytesToKey must return Key or undefined\n */\nexport function createHmacDrbg(\n hashLen: number,\n qByteLen: number,\n hmacFn: (key: Uint8Array, ...messages: Uint8Array[]) => Uint8Array\n): (seed: Uint8Array, predicate: Pred) => T {\n if (typeof hashLen !== 'number' || hashLen < 2) throw new Error('hashLen must be a number');\n if (typeof qByteLen !== 'number' || qByteLen < 2) throw new Error('qByteLen must be a number');\n if (typeof hmacFn !== 'function') throw new Error('hmacFn must be a function');\n // Step B, Step C: set hashLen to 8*ceil(hlen/8)\n let v = u8n(hashLen); // Minimal non-full-spec HMAC-DRBG from NIST 800-90 for RFC6979 sigs.\n let k = u8n(hashLen); // Steps B and C of RFC6979 3.2: set hashLen, in our case always same\n let i = 0; // Iterations counter, will throw when over 1000\n const reset = () => {\n v.fill(1);\n k.fill(0);\n i = 0;\n };\n const h = (...b: Uint8Array[]) => hmacFn(k, v, ...b); // hmac(k)(v, ...values)\n const reseed = (seed = u8n()) => {\n // HMAC-DRBG reseed() function. Steps D-G\n k = h(u8fr([0x00]), seed); // k = hmac(k || v || 0x00 || seed)\n v = h(); // v = hmac(k || v)\n if (seed.length === 0) return;\n k = h(u8fr([0x01]), seed); // k = hmac(k || v || 0x01 || seed)\n v = h(); // v = hmac(k || v)\n };\n const gen = () => {\n // HMAC-DRBG generate() function\n if (i++ >= 1000) throw new Error('drbg: tried 1000 values');\n let len = 0;\n const out: Uint8Array[] = [];\n while (len < qByteLen) {\n v = h();\n const sl = v.slice();\n out.push(sl);\n len += v.length;\n }\n return concatBytes(...out);\n };\n const genUntil = (seed: Uint8Array, pred: Pred): T => {\n reset();\n reseed(seed); // Steps D-G\n let res: T | undefined = undefined; // Step H: grind until k is in [1..n-1]\n while (!(res = pred(gen()))) reseed();\n reset();\n return res;\n };\n return genUntil;\n}\n\n// Validating curves and fields\n\nconst validatorFns = {\n bigint: (val: any) => typeof val === 'bigint',\n function: (val: any) => typeof val === 'function',\n boolean: (val: any) => typeof val === 'boolean',\n string: (val: any) => typeof val === 'string',\n stringOrUint8Array: (val: any) => typeof val === 'string' || val instanceof Uint8Array,\n isSafeInteger: (val: any) => Number.isSafeInteger(val),\n array: (val: any) => Array.isArray(val),\n field: (val: any, object: any) => (object as any).Fp.isValid(val),\n hash: (val: any) => typeof val === 'function' && Number.isSafeInteger(val.outputLen),\n} as const;\ntype Validator = keyof typeof validatorFns;\ntype ValMap> = { [K in keyof T]?: Validator };\n// type Record = { [P in K]: T; }\n\nexport function validateObject>(\n object: T,\n validators: ValMap,\n optValidators: ValMap = {}\n) {\n const checkField = (fieldName: keyof T, type: Validator, isOptional: boolean) => {\n const checkVal = validatorFns[type];\n if (typeof checkVal !== 'function')\n throw new Error(`Invalid validator \"${type}\", expected function`);\n\n const val = object[fieldName as keyof typeof object];\n if (isOptional && val === undefined) return;\n if (!checkVal(val, object)) {\n throw new Error(\n `Invalid param ${String(fieldName)}=${val} (${typeof val}), expected ${type}`\n );\n }\n };\n for (const [fieldName, type] of Object.entries(validators)) checkField(fieldName, type!, false);\n for (const [fieldName, type] of Object.entries(optValidators)) checkField(fieldName, type!, true);\n return object;\n}\n// validate type tests\n// const o: { a: number; b: number; c: number } = { a: 1, b: 5, c: 6 };\n// const z0 = validateObject(o, { a: 'isSafeInteger' }, { c: 'bigint' }); // Ok!\n// // Should fail type-check\n// const z1 = validateObject(o, { a: 'tmp' }, { c: 'zz' });\n// const z2 = validateObject(o, { a: 'isSafeInteger' }, { c: 'zz' });\n// const z3 = validateObject(o, { test: 'boolean', z: 'bug' });\n// const z4 = validateObject(o, { a: 'boolean', z: 'bug' });\n","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// Utilities for modular arithmetics and finite fields\nimport {\n bitMask,\n numberToBytesBE,\n numberToBytesLE,\n bytesToNumberBE,\n bytesToNumberLE,\n ensureBytes,\n validateObject,\n} from './utils.js';\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _3n = BigInt(3);\n// prettier-ignore\nconst _4n = BigInt(4), _5n = BigInt(5), _8n = BigInt(8);\n// prettier-ignore\nconst _9n = BigInt(9), _16n = BigInt(16);\n\n// Calculates a modulo b\nexport function mod(a: bigint, b: bigint): bigint {\n const result = a % b;\n return result >= _0n ? result : b + result;\n}\n/**\n * Efficiently raise num to power and do modular division.\n * Unsafe in some contexts: uses ladder, so can expose bigint bits.\n * @example\n * pow(2n, 6n, 11n) // 64n % 11n == 9n\n */\n// TODO: use field version && remove\nexport function pow(num: bigint, power: bigint, modulo: bigint): bigint {\n if (modulo <= _0n || power < _0n) throw new Error('Expected power/modulo > 0');\n if (modulo === _1n) return _0n;\n let res = _1n;\n while (power > _0n) {\n if (power & _1n) res = (res * num) % modulo;\n num = (num * num) % modulo;\n power >>= _1n;\n }\n return res;\n}\n\n// Does x ^ (2 ^ power) mod p. pow2(30, 4) == 30 ^ (2 ^ 4)\nexport function pow2(x: bigint, power: bigint, modulo: bigint): bigint {\n let res = x;\n while (power-- > _0n) {\n res *= res;\n res %= modulo;\n }\n return res;\n}\n\n// Inverses number over modulo\nexport function invert(number: bigint, modulo: bigint): bigint {\n if (number === _0n || modulo <= _0n) {\n throw new Error(`invert: expected positive integers, got n=${number} mod=${modulo}`);\n }\n // Euclidean GCD https://brilliant.org/wiki/extended-euclidean-algorithm/\n // Fermat's little theorem \"CT-like\" version inv(n) = n^(m-2) mod m is 30x slower.\n let a = mod(number, modulo);\n let b = modulo;\n // prettier-ignore\n let x = _0n, y = _1n, u = _1n, v = _0n;\n while (a !== _0n) {\n // JIT applies optimization if those two lines follow each other\n const q = b / a;\n const r = b % a;\n const m = x - u * q;\n const n = y - v * q;\n // prettier-ignore\n b = a, a = r, x = u, y = v, u = m, v = n;\n }\n const gcd = b;\n if (gcd !== _1n) throw new Error('invert: does not exist');\n return mod(x, modulo);\n}\n\n/**\n * Tonelli-Shanks square root search algorithm.\n * 1. https://eprint.iacr.org/2012/685.pdf (page 12)\n * 2. Square Roots from 1; 24, 51, 10 to Dan Shanks\n * Will start an infinite loop if field order P is not prime.\n * @param P field order\n * @returns function that takes field Fp (created from P) and number n\n */\nexport function tonelliShanks(P: bigint) {\n // Legendre constant: used to calculate Legendre symbol (a | p),\n // which denotes the value of a^((p-1)/2) (mod p).\n // (a | p) ≡ 1 if a is a square (mod p)\n // (a | p) ≡ -1 if a is not a square (mod p)\n // (a | p) ≡ 0 if a ≡ 0 (mod p)\n const legendreC = (P - _1n) / _2n;\n\n let Q: bigint, S: number, Z: bigint;\n // Step 1: By factoring out powers of 2 from p - 1,\n // find q and s such that p - 1 = q*(2^s) with q odd\n for (Q = P - _1n, S = 0; Q % _2n === _0n; Q /= _2n, S++);\n\n // Step 2: Select a non-square z such that (z | p) ≡ -1 and set c ≡ zq\n for (Z = _2n; Z < P && pow(Z, legendreC, P) !== P - _1n; Z++);\n\n // Fast-path\n if (S === 1) {\n const p1div4 = (P + _1n) / _4n;\n return function tonelliFast(Fp: IField, n: T) {\n const root = Fp.pow(n, p1div4);\n if (!Fp.eql(Fp.sqr(root), n)) throw new Error('Cannot find square root');\n return root;\n };\n }\n\n // Slow-path\n const Q1div2 = (Q + _1n) / _2n;\n return function tonelliSlow(Fp: IField, n: T): T {\n // Step 0: Check that n is indeed a square: (n | p) should not be ≡ -1\n if (Fp.pow(n, legendreC) === Fp.neg(Fp.ONE)) throw new Error('Cannot find square root');\n let r = S;\n // TODO: will fail at Fp2/etc\n let g = Fp.pow(Fp.mul(Fp.ONE, Z), Q); // will update both x and b\n let x = Fp.pow(n, Q1div2); // first guess at the square root\n let b = Fp.pow(n, Q); // first guess at the fudge factor\n\n while (!Fp.eql(b, Fp.ONE)) {\n if (Fp.eql(b, Fp.ZERO)) return Fp.ZERO; // https://en.wikipedia.org/wiki/Tonelli%E2%80%93Shanks_algorithm (4. If t = 0, return r = 0)\n // Find m such b^(2^m)==1\n let m = 1;\n for (let t2 = Fp.sqr(b); m < r; m++) {\n if (Fp.eql(t2, Fp.ONE)) break;\n t2 = Fp.sqr(t2); // t2 *= t2\n }\n // NOTE: r-m-1 can be bigger than 32, need to convert to bigint before shift, otherwise there will be overflow\n const ge = Fp.pow(g, _1n << BigInt(r - m - 1)); // ge = 2^(r-m-1)\n g = Fp.sqr(ge); // g = ge * ge\n x = Fp.mul(x, ge); // x *= ge\n b = Fp.mul(b, g); // b *= g\n r = m;\n }\n return x;\n };\n}\n\nexport function FpSqrt(P: bigint) {\n // NOTE: different algorithms can give different roots, it is up to user to decide which one they want.\n // For example there is FpSqrtOdd/FpSqrtEven to choice root based on oddness (used for hash-to-curve).\n\n // P ≡ 3 (mod 4)\n // √n = n^((P+1)/4)\n if (P % _4n === _3n) {\n // Not all roots possible!\n // const ORDER =\n // 0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaabn;\n // const NUM = 72057594037927816n;\n const p1div4 = (P + _1n) / _4n;\n return function sqrt3mod4(Fp: IField, n: T) {\n const root = Fp.pow(n, p1div4);\n // Throw if root**2 != n\n if (!Fp.eql(Fp.sqr(root), n)) throw new Error('Cannot find square root');\n return root;\n };\n }\n\n // Atkin algorithm for q ≡ 5 (mod 8), https://eprint.iacr.org/2012/685.pdf (page 10)\n if (P % _8n === _5n) {\n const c1 = (P - _5n) / _8n;\n return function sqrt5mod8(Fp: IField, n: T) {\n const n2 = Fp.mul(n, _2n);\n const v = Fp.pow(n2, c1);\n const nv = Fp.mul(n, v);\n const i = Fp.mul(Fp.mul(nv, _2n), v);\n const root = Fp.mul(nv, Fp.sub(i, Fp.ONE));\n if (!Fp.eql(Fp.sqr(root), n)) throw new Error('Cannot find square root');\n return root;\n };\n }\n\n // P ≡ 9 (mod 16)\n if (P % _16n === _9n) {\n // NOTE: tonelli is too slow for bls-Fp2 calculations even on start\n // Means we cannot use sqrt for constants at all!\n //\n // const c1 = Fp.sqrt(Fp.negate(Fp.ONE)); // 1. c1 = sqrt(-1) in F, i.e., (c1^2) == -1 in F\n // const c2 = Fp.sqrt(c1); // 2. c2 = sqrt(c1) in F, i.e., (c2^2) == c1 in F\n // const c3 = Fp.sqrt(Fp.negate(c1)); // 3. c3 = sqrt(-c1) in F, i.e., (c3^2) == -c1 in F\n // const c4 = (P + _7n) / _16n; // 4. c4 = (q + 7) / 16 # Integer arithmetic\n // sqrt = (x) => {\n // let tv1 = Fp.pow(x, c4); // 1. tv1 = x^c4\n // let tv2 = Fp.mul(c1, tv1); // 2. tv2 = c1 * tv1\n // const tv3 = Fp.mul(c2, tv1); // 3. tv3 = c2 * tv1\n // let tv4 = Fp.mul(c3, tv1); // 4. tv4 = c3 * tv1\n // const e1 = Fp.equals(Fp.square(tv2), x); // 5. e1 = (tv2^2) == x\n // const e2 = Fp.equals(Fp.square(tv3), x); // 6. e2 = (tv3^2) == x\n // tv1 = Fp.cmov(tv1, tv2, e1); // 7. tv1 = CMOV(tv1, tv2, e1) # Select tv2 if (tv2^2) == x\n // tv2 = Fp.cmov(tv4, tv3, e2); // 8. tv2 = CMOV(tv4, tv3, e2) # Select tv3 if (tv3^2) == x\n // const e3 = Fp.equals(Fp.square(tv2), x); // 9. e3 = (tv2^2) == x\n // return Fp.cmov(tv1, tv2, e3); // 10. z = CMOV(tv1, tv2, e3) # Select the sqrt from tv1 and tv2\n // }\n }\n\n // Other cases: Tonelli-Shanks algorithm\n return tonelliShanks(P);\n}\n\n// Little-endian check for first LE bit (last BE bit);\nexport const isNegativeLE = (num: bigint, modulo: bigint) => (mod(num, modulo) & _1n) === _1n;\n\n// Field is not always over prime: for example, Fp2 has ORDER(q)=p^m\nexport interface IField {\n ORDER: bigint;\n BYTES: number;\n BITS: number;\n MASK: bigint;\n ZERO: T;\n ONE: T;\n // 1-arg\n create: (num: T) => T;\n isValid: (num: T) => boolean;\n is0: (num: T) => boolean;\n neg(num: T): T;\n inv(num: T): T;\n sqrt(num: T): T;\n sqr(num: T): T;\n // 2-args\n eql(lhs: T, rhs: T): boolean;\n add(lhs: T, rhs: T): T;\n sub(lhs: T, rhs: T): T;\n mul(lhs: T, rhs: T | bigint): T;\n pow(lhs: T, power: bigint): T;\n div(lhs: T, rhs: T | bigint): T;\n // N for NonNormalized (for now)\n addN(lhs: T, rhs: T): T;\n subN(lhs: T, rhs: T): T;\n mulN(lhs: T, rhs: T | bigint): T;\n sqrN(num: T): T;\n\n // Optional\n // Should be same as sgn0 function in\n // [RFC9380](https://www.rfc-editor.org/rfc/rfc9380#section-4.1).\n // NOTE: sgn0 is 'negative in LE', which is same as odd. And negative in LE is kinda strange definition anyway.\n isOdd?(num: T): boolean; // Odd instead of even since we have it for Fp2\n // legendre?(num: T): T;\n pow(lhs: T, power: bigint): T;\n invertBatch: (lst: T[]) => T[];\n toBytes(num: T): Uint8Array;\n fromBytes(bytes: Uint8Array): T;\n // If c is False, CMOV returns a, otherwise it returns b.\n cmov(a: T, b: T, c: boolean): T;\n}\n// prettier-ignore\nconst FIELD_FIELDS = [\n 'create', 'isValid', 'is0', 'neg', 'inv', 'sqrt', 'sqr',\n 'eql', 'add', 'sub', 'mul', 'pow', 'div',\n 'addN', 'subN', 'mulN', 'sqrN'\n] as const;\nexport function validateField(field: IField) {\n const initial = {\n ORDER: 'bigint',\n MASK: 'bigint',\n BYTES: 'isSafeInteger',\n BITS: 'isSafeInteger',\n } as Record;\n const opts = FIELD_FIELDS.reduce((map, val: string) => {\n map[val] = 'function';\n return map;\n }, initial);\n return validateObject(field, opts);\n}\n\n// Generic field functions\n\n/**\n * Same as `pow` but for Fp: non-constant-time.\n * Unsafe in some contexts: uses ladder, so can expose bigint bits.\n */\nexport function FpPow(f: IField, num: T, power: bigint): T {\n // Should have same speed as pow for bigints\n // TODO: benchmark!\n if (power < _0n) throw new Error('Expected power > 0');\n if (power === _0n) return f.ONE;\n if (power === _1n) return num;\n let p = f.ONE;\n let d = num;\n while (power > _0n) {\n if (power & _1n) p = f.mul(p, d);\n d = f.sqr(d);\n power >>= _1n;\n }\n return p;\n}\n\n/**\n * Efficiently invert an array of Field elements.\n * `inv(0)` will return `undefined` here: make sure to throw an error.\n */\nexport function FpInvertBatch(f: IField, nums: T[]): T[] {\n const tmp = new Array(nums.length);\n // Walk from first to last, multiply them by each other MOD p\n const lastMultiplied = nums.reduce((acc, num, i) => {\n if (f.is0(num)) return acc;\n tmp[i] = acc;\n return f.mul(acc, num);\n }, f.ONE);\n // Invert last element\n const inverted = f.inv(lastMultiplied);\n // Walk from last to first, multiply them by inverted each other MOD p\n nums.reduceRight((acc, num, i) => {\n if (f.is0(num)) return acc;\n tmp[i] = f.mul(acc, tmp[i]);\n return f.mul(acc, num);\n }, inverted);\n return tmp;\n}\n\nexport function FpDiv(f: IField, lhs: T, rhs: T | bigint): T {\n return f.mul(lhs, typeof rhs === 'bigint' ? invert(rhs, f.ORDER) : f.inv(rhs));\n}\n\n// This function returns True whenever the value x is a square in the field F.\nexport function FpIsSquare(f: IField) {\n const legendreConst = (f.ORDER - _1n) / _2n; // Integer arithmetic\n return (x: T): boolean => {\n const p = f.pow(x, legendreConst);\n return f.eql(p, f.ZERO) || f.eql(p, f.ONE);\n };\n}\n\n// CURVE.n lengths\nexport function nLength(n: bigint, nBitLength?: number) {\n // Bit size, byte size of CURVE.n\n const _nBitLength = nBitLength !== undefined ? nBitLength : n.toString(2).length;\n const nByteLength = Math.ceil(_nBitLength / 8);\n return { nBitLength: _nBitLength, nByteLength };\n}\n\ntype FpField = IField & Required, 'isOdd'>>;\n/**\n * Initializes a finite field over prime. **Non-primes are not supported.**\n * Do not init in loop: slow. Very fragile: always run a benchmark on a change.\n * Major performance optimizations:\n * * a) denormalized operations like mulN instead of mul\n * * b) same object shape: never add or remove keys\n * * c) Object.freeze\n * @param ORDER prime positive bigint\n * @param bitLen how many bits the field consumes\n * @param isLE (def: false) if encoding / decoding should be in little-endian\n * @param redef optional faster redefinitions of sqrt and other methods\n */\nexport function Field(\n ORDER: bigint,\n bitLen?: number,\n isLE = false,\n redef: Partial> = {}\n): Readonly {\n if (ORDER <= _0n) throw new Error(`Expected Field ORDER > 0, got ${ORDER}`);\n const { nBitLength: BITS, nByteLength: BYTES } = nLength(ORDER, bitLen);\n if (BYTES > 2048) throw new Error('Field lengths over 2048 bytes are not supported');\n const sqrtP = FpSqrt(ORDER);\n const f: Readonly = Object.freeze({\n ORDER,\n BITS,\n BYTES,\n MASK: bitMask(BITS),\n ZERO: _0n,\n ONE: _1n,\n create: (num) => mod(num, ORDER),\n isValid: (num) => {\n if (typeof num !== 'bigint')\n throw new Error(`Invalid field element: expected bigint, got ${typeof num}`);\n return _0n <= num && num < ORDER; // 0 is valid element, but it's not invertible\n },\n is0: (num) => num === _0n,\n isOdd: (num) => (num & _1n) === _1n,\n neg: (num) => mod(-num, ORDER),\n eql: (lhs, rhs) => lhs === rhs,\n\n sqr: (num) => mod(num * num, ORDER),\n add: (lhs, rhs) => mod(lhs + rhs, ORDER),\n sub: (lhs, rhs) => mod(lhs - rhs, ORDER),\n mul: (lhs, rhs) => mod(lhs * rhs, ORDER),\n pow: (num, power) => FpPow(f, num, power),\n div: (lhs, rhs) => mod(lhs * invert(rhs, ORDER), ORDER),\n\n // Same as above, but doesn't normalize\n sqrN: (num) => num * num,\n addN: (lhs, rhs) => lhs + rhs,\n subN: (lhs, rhs) => lhs - rhs,\n mulN: (lhs, rhs) => lhs * rhs,\n\n inv: (num) => invert(num, ORDER),\n sqrt: redef.sqrt || ((n) => sqrtP(f, n)),\n invertBatch: (lst) => FpInvertBatch(f, lst),\n // TODO: do we really need constant cmov?\n // We don't have const-time bigints anyway, so probably will be not very useful\n cmov: (a, b, c) => (c ? b : a),\n toBytes: (num) => (isLE ? numberToBytesLE(num, BYTES) : numberToBytesBE(num, BYTES)),\n fromBytes: (bytes) => {\n if (bytes.length !== BYTES)\n throw new Error(`Fp.fromBytes: expected ${BYTES}, got ${bytes.length}`);\n return isLE ? bytesToNumberLE(bytes) : bytesToNumberBE(bytes);\n },\n } as FpField);\n return Object.freeze(f);\n}\n\nexport function FpSqrtOdd(Fp: IField, elm: T) {\n if (!Fp.isOdd) throw new Error(`Field doesn't have isOdd`);\n const root = Fp.sqrt(elm);\n return Fp.isOdd(root) ? root : Fp.neg(root);\n}\n\nexport function FpSqrtEven(Fp: IField, elm: T) {\n if (!Fp.isOdd) throw new Error(`Field doesn't have isOdd`);\n const root = Fp.sqrt(elm);\n return Fp.isOdd(root) ? Fp.neg(root) : root;\n}\n\n/**\n * \"Constant-time\" private key generation utility.\n * Same as mapKeyToField, but accepts less bytes (40 instead of 48 for 32-byte field).\n * Which makes it slightly more biased, less secure.\n * @deprecated use mapKeyToField instead\n */\nexport function hashToPrivateScalar(\n hash: string | Uint8Array,\n groupOrder: bigint,\n isLE = false\n): bigint {\n hash = ensureBytes('privateHash', hash);\n const hashLen = hash.length;\n const minLen = nLength(groupOrder).nByteLength + 8;\n if (minLen < 24 || hashLen < minLen || hashLen > 1024)\n throw new Error(`hashToPrivateScalar: expected ${minLen}-1024 bytes of input, got ${hashLen}`);\n const num = isLE ? bytesToNumberLE(hash) : bytesToNumberBE(hash);\n return mod(num, groupOrder - _1n) + _1n;\n}\n\n/**\n * Returns total number of bytes consumed by the field element.\n * For example, 32 bytes for usual 256-bit weierstrass curve.\n * @param fieldOrder number of field elements, usually CURVE.n\n * @returns byte length of field\n */\nexport function getFieldBytesLength(fieldOrder: bigint): number {\n if (typeof fieldOrder !== 'bigint') throw new Error('field order must be bigint');\n const bitLength = fieldOrder.toString(2).length;\n return Math.ceil(bitLength / 8);\n}\n\n/**\n * Returns minimal amount of bytes that can be safely reduced\n * by field order.\n * Should be 2^-128 for 128-bit curve such as P256.\n * @param fieldOrder number of field elements, usually CURVE.n\n * @returns byte length of target hash\n */\nexport function getMinHashLength(fieldOrder: bigint): number {\n const length = getFieldBytesLength(fieldOrder);\n return length + Math.ceil(length / 2);\n}\n\n/**\n * \"Constant-time\" private key generation utility.\n * Can take (n + n/2) or more bytes of uniform input e.g. from CSPRNG or KDF\n * and convert them into private scalar, with the modulo bias being negligible.\n * Needs at least 48 bytes of input for 32-byte private key.\n * https://research.kudelskisecurity.com/2020/07/28/the-definitive-guide-to-modulo-bias-and-how-to-avoid-it/\n * FIPS 186-5, A.2 https://csrc.nist.gov/publications/detail/fips/186/5/final\n * RFC 9380, https://www.rfc-editor.org/rfc/rfc9380#section-5\n * @param hash hash output from SHA3 or a similar function\n * @param groupOrder size of subgroup - (e.g. secp256k1.CURVE.n)\n * @param isLE interpret hash bytes as LE num\n * @returns valid private scalar\n */\nexport function mapHashToField(key: Uint8Array, fieldOrder: bigint, isLE = false): Uint8Array {\n const len = key.length;\n const fieldLen = getFieldBytesLength(fieldOrder);\n const minLen = getMinHashLength(fieldOrder);\n // No small numbers: need to understand bias story. No huge numbers: easier to detect JS timings.\n if (len < 16 || len < minLen || len > 1024)\n throw new Error(`expected ${minLen}-1024 bytes of input, got ${len}`);\n const num = isLE ? bytesToNumberBE(key) : bytesToNumberLE(key);\n // `mod(x, 11)` can sometimes produce 0. `mod(x, 10) + 1` is the same, but no 0\n const reduced = mod(num, fieldOrder - _1n) + _1n;\n return isLE ? numberToBytesLE(reduced, fieldLen) : numberToBytesBE(reduced, fieldLen);\n}\n","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// Abelian group utilities\nimport { IField, validateField, nLength } from './modular.js';\nimport { validateObject } from './utils.js';\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\n\nexport type AffinePoint = {\n x: T;\n y: T;\n} & { z?: never; t?: never };\n\nexport interface Group> {\n double(): T;\n negate(): T;\n add(other: T): T;\n subtract(other: T): T;\n equals(other: T): boolean;\n multiply(scalar: bigint): T;\n}\n\nexport type GroupConstructor = {\n BASE: T;\n ZERO: T;\n};\nexport type Mapper = (i: T[]) => T[];\n\n// Elliptic curve multiplication of Point by scalar. Fragile.\n// Scalars should always be less than curve order: this should be checked inside of a curve itself.\n// Creates precomputation tables for fast multiplication:\n// - private scalar is split by fixed size windows of W bits\n// - every window point is collected from window's table & added to accumulator\n// - since windows are different, same point inside tables won't be accessed more than once per calc\n// - each multiplication is 'Math.ceil(CURVE_ORDER / 𝑊) + 1' point additions (fixed for any scalar)\n// - +1 window is neccessary for wNAF\n// - wNAF reduces table size: 2x less memory + 2x faster generation, but 10% slower multiplication\n// TODO: Research returning 2d JS array of windows, instead of a single window. This would allow\n// windows to be in different memory locations\nexport function wNAF>(c: GroupConstructor, bits: number) {\n const constTimeNegate = (condition: boolean, item: T): T => {\n const neg = item.negate();\n return condition ? neg : item;\n };\n const opts = (W: number) => {\n const windows = Math.ceil(bits / W) + 1; // +1, because\n const windowSize = 2 ** (W - 1); // -1 because we skip zero\n return { windows, windowSize };\n };\n return {\n constTimeNegate,\n // non-const time multiplication ladder\n unsafeLadder(elm: T, n: bigint) {\n let p = c.ZERO;\n let d: T = elm;\n while (n > _0n) {\n if (n & _1n) p = p.add(d);\n d = d.double();\n n >>= _1n;\n }\n return p;\n },\n\n /**\n * Creates a wNAF precomputation window. Used for caching.\n * Default window size is set by `utils.precompute()` and is equal to 8.\n * Number of precomputed points depends on the curve size:\n * 2^(𝑊−1) * (Math.ceil(𝑛 / 𝑊) + 1), where:\n * - 𝑊 is the window size\n * - 𝑛 is the bitlength of the curve order.\n * For a 256-bit curve and window size 8, the number of precomputed points is 128 * 33 = 4224.\n * @returns precomputed point tables flattened to a single array\n */\n precomputeWindow(elm: T, W: number): Group[] {\n const { windows, windowSize } = opts(W);\n const points: T[] = [];\n let p: T = elm;\n let base = p;\n for (let window = 0; window < windows; window++) {\n base = p;\n points.push(base);\n // =1, because we skip zero\n for (let i = 1; i < windowSize; i++) {\n base = base.add(p);\n points.push(base);\n }\n p = base.double();\n }\n return points;\n },\n\n /**\n * Implements ec multiplication using precomputed tables and w-ary non-adjacent form.\n * @param W window size\n * @param precomputes precomputed tables\n * @param n scalar (we don't check here, but should be less than curve order)\n * @returns real and fake (for const-time) points\n */\n wNAF(W: number, precomputes: T[], n: bigint): { p: T; f: T } {\n // TODO: maybe check that scalar is less than group order? wNAF behavious is undefined otherwise\n // But need to carefully remove other checks before wNAF. ORDER == bits here\n const { windows, windowSize } = opts(W);\n\n let p = c.ZERO;\n let f = c.BASE;\n\n const mask = BigInt(2 ** W - 1); // Create mask with W ones: 0b1111 for W=4 etc.\n const maxNumber = 2 ** W;\n const shiftBy = BigInt(W);\n\n for (let window = 0; window < windows; window++) {\n const offset = window * windowSize;\n // Extract W bits.\n let wbits = Number(n & mask);\n\n // Shift number by W bits.\n n >>= shiftBy;\n\n // If the bits are bigger than max size, we'll split those.\n // +224 => 256 - 32\n if (wbits > windowSize) {\n wbits -= maxNumber;\n n += _1n;\n }\n\n // This code was first written with assumption that 'f' and 'p' will never be infinity point:\n // since each addition is multiplied by 2 ** W, it cannot cancel each other. However,\n // there is negate now: it is possible that negated element from low value\n // would be the same as high element, which will create carry into next window.\n // It's not obvious how this can fail, but still worth investigating later.\n\n // Check if we're onto Zero point.\n // Add random point inside current window to f.\n const offset1 = offset;\n const offset2 = offset + Math.abs(wbits) - 1; // -1 because we skip zero\n const cond1 = window % 2 !== 0;\n const cond2 = wbits < 0;\n if (wbits === 0) {\n // The most important part for const-time getPublicKey\n f = f.add(constTimeNegate(cond1, precomputes[offset1]));\n } else {\n p = p.add(constTimeNegate(cond2, precomputes[offset2]));\n }\n }\n // JIT-compiler should not eliminate f here, since it will later be used in normalizeZ()\n // Even if the variable is still unused, there are some checks which will\n // throw an exception, so compiler needs to prove they won't happen, which is hard.\n // At this point there is a way to F be infinity-point even if p is not,\n // which makes it less const-time: around 1 bigint multiply.\n return { p, f };\n },\n\n wNAFCached(P: T, precomputesMap: Map, n: bigint, transform: Mapper): { p: T; f: T } {\n // @ts-ignore\n const W: number = P._WINDOW_SIZE || 1;\n // Calculate precomputes on a first run, reuse them after\n let comp = precomputesMap.get(P);\n if (!comp) {\n comp = this.precomputeWindow(P, W) as T[];\n if (W !== 1) {\n precomputesMap.set(P, transform(comp));\n }\n }\n return this.wNAF(W, comp, n);\n },\n };\n}\n\n// Generic BasicCurve interface: works even for polynomial fields (BLS): P, n, h would be ok.\n// Though generator can be different (Fp2 / Fp6 for BLS).\nexport type BasicCurve = {\n Fp: IField; // Field over which we'll do calculations (Fp)\n n: bigint; // Curve order, total count of valid points in the field\n nBitLength?: number; // bit length of curve order\n nByteLength?: number; // byte length of curve order\n h: bigint; // cofactor. we can assign default=1, but users will just ignore it w/o validation\n hEff?: bigint; // Number to multiply to clear cofactor\n Gx: T; // base point X coordinate\n Gy: T; // base point Y coordinate\n allowInfinityPoint?: boolean; // bls12-381 requires it. ZERO point is valid, but invalid pubkey\n};\n\nexport function validateBasic(curve: BasicCurve & T) {\n validateField(curve.Fp);\n validateObject(\n curve,\n {\n n: 'bigint',\n h: 'bigint',\n Gx: 'field',\n Gy: 'field',\n },\n {\n nBitLength: 'isSafeInteger',\n nByteLength: 'isSafeInteger',\n }\n );\n // Set defaults\n return Object.freeze({\n ...nLength(curve.n, curve.nBitLength),\n ...curve,\n ...{ p: curve.Fp.ORDER },\n } as const);\n}\n","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// Short Weierstrass curve. The formula is: y² = x³ + ax + b\nimport * as mod from './modular.js';\nimport * as ut from './utils.js';\nimport { CHash, Hex, PrivKey, ensureBytes } from './utils.js';\nimport { Group, GroupConstructor, wNAF, BasicCurve, validateBasic, AffinePoint } from './curve.js';\n\nexport type { AffinePoint };\ntype HmacFnSync = (key: Uint8Array, ...messages: Uint8Array[]) => Uint8Array;\ntype EndomorphismOpts = {\n beta: bigint;\n splitScalar: (k: bigint) => { k1neg: boolean; k1: bigint; k2neg: boolean; k2: bigint };\n};\nexport type BasicWCurve = BasicCurve & {\n // Params: a, b\n a: T;\n b: T;\n\n // Optional params\n allowedPrivateKeyLengths?: readonly number[]; // for P521\n wrapPrivateKey?: boolean; // bls12-381 requires mod(n) instead of rejecting keys >= n\n endo?: EndomorphismOpts; // Endomorphism options for Koblitz curves\n // When a cofactor != 1, there can be an effective methods to:\n // 1. Determine whether a point is torsion-free\n isTorsionFree?: (c: ProjConstructor, point: ProjPointType) => boolean;\n // 2. Clear torsion component\n clearCofactor?: (c: ProjConstructor, point: ProjPointType) => ProjPointType;\n};\n\ntype Entropy = Hex | true;\nexport type SignOpts = { lowS?: boolean; extraEntropy?: Entropy; prehash?: boolean };\nexport type VerOpts = { lowS?: boolean; prehash?: boolean };\n\n/**\n * ### Design rationale for types\n *\n * * Interaction between classes from different curves should fail:\n * `k256.Point.BASE.add(p256.Point.BASE)`\n * * For this purpose we want to use `instanceof` operator, which is fast and works during runtime\n * * Different calls of `curve()` would return different classes -\n * `curve(params) !== curve(params)`: if somebody decided to monkey-patch their curve,\n * it won't affect others\n *\n * TypeScript can't infer types for classes created inside a function. Classes is one instance of nominative types in TypeScript and interfaces only check for shape, so it's hard to create unique type for every function call.\n *\n * We can use generic types via some param, like curve opts, but that would:\n * 1. Enable interaction between `curve(params)` and `curve(params)` (curves of same params)\n * which is hard to debug.\n * 2. Params can be generic and we can't enforce them to be constant value:\n * if somebody creates curve from non-constant params,\n * it would be allowed to interact with other curves with non-constant params\n *\n * TODO: https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-7.html#unique-symbol\n */\n\n// Instance for 3d XYZ points\nexport interface ProjPointType extends Group> {\n readonly px: T;\n readonly py: T;\n readonly pz: T;\n get x(): T;\n get y(): T;\n multiply(scalar: bigint): ProjPointType;\n toAffine(iz?: T): AffinePoint;\n isTorsionFree(): boolean;\n clearCofactor(): ProjPointType;\n assertValidity(): void;\n hasEvenY(): boolean;\n toRawBytes(isCompressed?: boolean): Uint8Array;\n toHex(isCompressed?: boolean): string;\n\n multiplyUnsafe(scalar: bigint): ProjPointType;\n multiplyAndAddUnsafe(Q: ProjPointType, a: bigint, b: bigint): ProjPointType | undefined;\n _setWindowSize(windowSize: number): void;\n}\n// Static methods for 3d XYZ points\nexport interface ProjConstructor extends GroupConstructor> {\n new (x: T, y: T, z: T): ProjPointType;\n fromAffine(p: AffinePoint): ProjPointType;\n fromHex(hex: Hex): ProjPointType;\n fromPrivateKey(privateKey: PrivKey): ProjPointType;\n normalizeZ(points: ProjPointType[]): ProjPointType[];\n}\n\nexport type CurvePointsType = BasicWCurve & {\n // Bytes\n fromBytes?: (bytes: Uint8Array) => AffinePoint;\n toBytes?: (c: ProjConstructor, point: ProjPointType, isCompressed: boolean) => Uint8Array;\n};\n\nfunction validatePointOpts(curve: CurvePointsType) {\n const opts = validateBasic(curve);\n ut.validateObject(\n opts,\n {\n a: 'field',\n b: 'field',\n },\n {\n allowedPrivateKeyLengths: 'array',\n wrapPrivateKey: 'boolean',\n isTorsionFree: 'function',\n clearCofactor: 'function',\n allowInfinityPoint: 'boolean',\n fromBytes: 'function',\n toBytes: 'function',\n }\n );\n const { endo, Fp, a } = opts;\n if (endo) {\n if (!Fp.eql(a, Fp.ZERO)) {\n throw new Error('Endomorphism can only be defined for Koblitz curves that have a=0');\n }\n if (\n typeof endo !== 'object' ||\n typeof endo.beta !== 'bigint' ||\n typeof endo.splitScalar !== 'function'\n ) {\n throw new Error('Expected endomorphism with beta: bigint and splitScalar: function');\n }\n }\n return Object.freeze({ ...opts } as const);\n}\n\nexport type CurvePointsRes = {\n ProjectivePoint: ProjConstructor;\n normPrivateKeyToScalar: (key: PrivKey) => bigint;\n weierstrassEquation: (x: T) => T;\n isWithinCurveOrder: (num: bigint) => boolean;\n};\n\n// ASN.1 DER encoding utilities\nconst { bytesToNumberBE: b2n, hexToBytes: h2b } = ut;\nexport const DER = {\n // asn.1 DER encoding utils\n Err: class DERErr extends Error {\n constructor(m = '') {\n super(m);\n }\n },\n _parseInt(data: Uint8Array): { d: bigint; l: Uint8Array } {\n const { Err: E } = DER;\n if (data.length < 2 || data[0] !== 0x02) throw new E('Invalid signature integer tag');\n const len = data[1];\n const res = data.subarray(2, len + 2);\n if (!len || res.length !== len) throw new E('Invalid signature integer: wrong length');\n // https://crypto.stackexchange.com/a/57734 Leftmost bit of first byte is 'negative' flag,\n // since we always use positive integers here. It must always be empty:\n // - add zero byte if exists\n // - if next byte doesn't have a flag, leading zero is not allowed (minimal encoding)\n if (res[0] & 0b10000000) throw new E('Invalid signature integer: negative');\n if (res[0] === 0x00 && !(res[1] & 0b10000000))\n throw new E('Invalid signature integer: unnecessary leading zero');\n return { d: b2n(res), l: data.subarray(len + 2) }; // d is data, l is left\n },\n toSig(hex: string | Uint8Array): { r: bigint; s: bigint } {\n // parse DER signature\n const { Err: E } = DER;\n const data = typeof hex === 'string' ? h2b(hex) : hex;\n if (!(data instanceof Uint8Array)) throw new Error('ui8a expected');\n let l = data.length;\n if (l < 2 || data[0] != 0x30) throw new E('Invalid signature tag');\n if (data[1] !== l - 2) throw new E('Invalid signature: incorrect length');\n const { d: r, l: sBytes } = DER._parseInt(data.subarray(2));\n const { d: s, l: rBytesLeft } = DER._parseInt(sBytes);\n if (rBytesLeft.length) throw new E('Invalid signature: left bytes after parsing');\n return { r, s };\n },\n hexFromSig(sig: { r: bigint; s: bigint }): string {\n // Add leading zero if first byte has negative bit enabled. More details in '_parseInt'\n const slice = (s: string): string => (Number.parseInt(s[0], 16) & 0b1000 ? '00' + s : s);\n const h = (num: number | bigint) => {\n const hex = num.toString(16);\n return hex.length & 1 ? `0${hex}` : hex;\n };\n const s = slice(h(sig.s));\n const r = slice(h(sig.r));\n const shl = s.length / 2;\n const rhl = r.length / 2;\n const sl = h(shl);\n const rl = h(rhl);\n return `30${h(rhl + shl + 4)}02${rl}${r}02${sl}${s}`;\n },\n};\n\n// Be friendly to bad ECMAScript parsers by not using bigint literals\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _3n = BigInt(3), _4n = BigInt(4);\n\nexport function weierstrassPoints(opts: CurvePointsType) {\n const CURVE = validatePointOpts(opts);\n const { Fp } = CURVE; // All curves has same field / group length as for now, but they can differ\n\n const toBytes =\n CURVE.toBytes ||\n ((_c: ProjConstructor, point: ProjPointType, _isCompressed: boolean) => {\n const a = point.toAffine();\n return ut.concatBytes(Uint8Array.from([0x04]), Fp.toBytes(a.x), Fp.toBytes(a.y));\n });\n const fromBytes =\n CURVE.fromBytes ||\n ((bytes: Uint8Array) => {\n // const head = bytes[0];\n const tail = bytes.subarray(1);\n // if (head !== 0x04) throw new Error('Only non-compressed encoding is supported');\n const x = Fp.fromBytes(tail.subarray(0, Fp.BYTES));\n const y = Fp.fromBytes(tail.subarray(Fp.BYTES, 2 * Fp.BYTES));\n return { x, y };\n });\n\n /**\n * y² = x³ + ax + b: Short weierstrass curve formula\n * @returns y²\n */\n function weierstrassEquation(x: T): T {\n const { a, b } = CURVE;\n const x2 = Fp.sqr(x); // x * x\n const x3 = Fp.mul(x2, x); // x2 * x\n return Fp.add(Fp.add(x3, Fp.mul(x, a)), b); // x3 + a * x + b\n }\n // Validate whether the passed curve params are valid.\n // We check if curve equation works for generator point.\n // `assertValidity()` won't work: `isTorsionFree()` is not available at this point in bls12-381.\n // ProjectivePoint class has not been initialized yet.\n if (!Fp.eql(Fp.sqr(CURVE.Gy), weierstrassEquation(CURVE.Gx)))\n throw new Error('bad generator point: equation left != right');\n\n // Valid group elements reside in range 1..n-1\n function isWithinCurveOrder(num: bigint): boolean {\n return typeof num === 'bigint' && _0n < num && num < CURVE.n;\n }\n function assertGE(num: bigint) {\n if (!isWithinCurveOrder(num)) throw new Error('Expected valid bigint: 0 < bigint < curve.n');\n }\n // Validates if priv key is valid and converts it to bigint.\n // Supports options allowedPrivateKeyLengths and wrapPrivateKey.\n function normPrivateKeyToScalar(key: PrivKey): bigint {\n const { allowedPrivateKeyLengths: lengths, nByteLength, wrapPrivateKey, n } = CURVE;\n if (lengths && typeof key !== 'bigint') {\n if (key instanceof Uint8Array) key = ut.bytesToHex(key);\n // Normalize to hex string, pad. E.g. P521 would norm 130-132 char hex to 132-char bytes\n if (typeof key !== 'string' || !lengths.includes(key.length)) throw new Error('Invalid key');\n key = key.padStart(nByteLength * 2, '0');\n }\n let num: bigint;\n try {\n num =\n typeof key === 'bigint'\n ? key\n : ut.bytesToNumberBE(ensureBytes('private key', key, nByteLength));\n } catch (error) {\n throw new Error(`private key must be ${nByteLength} bytes, hex or bigint, not ${typeof key}`);\n }\n if (wrapPrivateKey) num = mod.mod(num, n); // disabled by default, enabled for BLS\n assertGE(num); // num in range [1..N-1]\n return num;\n }\n\n const pointPrecomputes = new Map();\n function assertPrjPoint(other: unknown) {\n if (!(other instanceof Point)) throw new Error('ProjectivePoint expected');\n }\n /**\n * Projective Point works in 3d / projective (homogeneous) coordinates: (x, y, z) ∋ (x=x/z, y=y/z)\n * Default Point works in 2d / affine coordinates: (x, y)\n * We're doing calculations in projective, because its operations don't require costly inversion.\n */\n class Point implements ProjPointType {\n static readonly BASE = new Point(CURVE.Gx, CURVE.Gy, Fp.ONE);\n static readonly ZERO = new Point(Fp.ZERO, Fp.ONE, Fp.ZERO);\n\n constructor(readonly px: T, readonly py: T, readonly pz: T) {\n if (px == null || !Fp.isValid(px)) throw new Error('x required');\n if (py == null || !Fp.isValid(py)) throw new Error('y required');\n if (pz == null || !Fp.isValid(pz)) throw new Error('z required');\n }\n\n // Does not validate if the point is on-curve.\n // Use fromHex instead, or call assertValidity() later.\n static fromAffine(p: AffinePoint): Point {\n const { x, y } = p || {};\n if (!p || !Fp.isValid(x) || !Fp.isValid(y)) throw new Error('invalid affine point');\n if (p instanceof Point) throw new Error('projective point not allowed');\n const is0 = (i: T) => Fp.eql(i, Fp.ZERO);\n // fromAffine(x:0, y:0) would produce (x:0, y:0, z:1), but we need (x:0, y:1, z:0)\n if (is0(x) && is0(y)) return Point.ZERO;\n return new Point(x, y, Fp.ONE);\n }\n\n get x(): T {\n return this.toAffine().x;\n }\n get y(): T {\n return this.toAffine().y;\n }\n\n /**\n * Takes a bunch of Projective Points but executes only one\n * inversion on all of them. Inversion is very slow operation,\n * so this improves performance massively.\n * Optimization: converts a list of projective points to a list of identical points with Z=1.\n */\n static normalizeZ(points: Point[]): Point[] {\n const toInv = Fp.invertBatch(points.map((p) => p.pz));\n return points.map((p, i) => p.toAffine(toInv[i])).map(Point.fromAffine);\n }\n\n /**\n * Converts hash string or Uint8Array to Point.\n * @param hex short/long ECDSA hex\n */\n static fromHex(hex: Hex): Point {\n const P = Point.fromAffine(fromBytes(ensureBytes('pointHex', hex)));\n P.assertValidity();\n return P;\n }\n\n // Multiplies generator point by privateKey.\n static fromPrivateKey(privateKey: PrivKey) {\n return Point.BASE.multiply(normPrivateKeyToScalar(privateKey));\n }\n\n // We calculate precomputes for elliptic curve point multiplication\n // using windowed method. This specifies window size and\n // stores precomputed values. Usually only base point would be precomputed.\n _WINDOW_SIZE?: number;\n\n // \"Private method\", don't use it directly\n _setWindowSize(windowSize: number) {\n this._WINDOW_SIZE = windowSize;\n pointPrecomputes.delete(this);\n }\n\n // A point on curve is valid if it conforms to equation.\n assertValidity(): void {\n if (this.is0()) {\n // (0, 1, 0) aka ZERO is invalid in most contexts.\n // In BLS, ZERO can be serialized, so we allow it.\n // (0, 0, 0) is wrong representation of ZERO and is always invalid.\n if (CURVE.allowInfinityPoint && !Fp.is0(this.py)) return;\n throw new Error('bad point: ZERO');\n }\n // Some 3rd-party test vectors require different wording between here & `fromCompressedHex`\n const { x, y } = this.toAffine();\n // Check if x, y are valid field elements\n if (!Fp.isValid(x) || !Fp.isValid(y)) throw new Error('bad point: x or y not FE');\n const left = Fp.sqr(y); // y²\n const right = weierstrassEquation(x); // x³ + ax + b\n if (!Fp.eql(left, right)) throw new Error('bad point: equation left != right');\n if (!this.isTorsionFree()) throw new Error('bad point: not in prime-order subgroup');\n }\n hasEvenY(): boolean {\n const { y } = this.toAffine();\n if (Fp.isOdd) return !Fp.isOdd(y);\n throw new Error(\"Field doesn't support isOdd\");\n }\n\n /**\n * Compare one point to another.\n */\n equals(other: Point): boolean {\n assertPrjPoint(other);\n const { px: X1, py: Y1, pz: Z1 } = this;\n const { px: X2, py: Y2, pz: Z2 } = other;\n const U1 = Fp.eql(Fp.mul(X1, Z2), Fp.mul(X2, Z1));\n const U2 = Fp.eql(Fp.mul(Y1, Z2), Fp.mul(Y2, Z1));\n return U1 && U2;\n }\n\n /**\n * Flips point to one corresponding to (x, -y) in Affine coordinates.\n */\n negate(): Point {\n return new Point(this.px, Fp.neg(this.py), this.pz);\n }\n\n // Renes-Costello-Batina exception-free doubling formula.\n // There is 30% faster Jacobian formula, but it is not complete.\n // https://eprint.iacr.org/2015/1060, algorithm 3\n // Cost: 8M + 3S + 3*a + 2*b3 + 15add.\n double() {\n const { a, b } = CURVE;\n const b3 = Fp.mul(b, _3n);\n const { px: X1, py: Y1, pz: Z1 } = this;\n let X3 = Fp.ZERO, Y3 = Fp.ZERO, Z3 = Fp.ZERO; // prettier-ignore\n let t0 = Fp.mul(X1, X1); // step 1\n let t1 = Fp.mul(Y1, Y1);\n let t2 = Fp.mul(Z1, Z1);\n let t3 = Fp.mul(X1, Y1);\n t3 = Fp.add(t3, t3); // step 5\n Z3 = Fp.mul(X1, Z1);\n Z3 = Fp.add(Z3, Z3);\n X3 = Fp.mul(a, Z3);\n Y3 = Fp.mul(b3, t2);\n Y3 = Fp.add(X3, Y3); // step 10\n X3 = Fp.sub(t1, Y3);\n Y3 = Fp.add(t1, Y3);\n Y3 = Fp.mul(X3, Y3);\n X3 = Fp.mul(t3, X3);\n Z3 = Fp.mul(b3, Z3); // step 15\n t2 = Fp.mul(a, t2);\n t3 = Fp.sub(t0, t2);\n t3 = Fp.mul(a, t3);\n t3 = Fp.add(t3, Z3);\n Z3 = Fp.add(t0, t0); // step 20\n t0 = Fp.add(Z3, t0);\n t0 = Fp.add(t0, t2);\n t0 = Fp.mul(t0, t3);\n Y3 = Fp.add(Y3, t0);\n t2 = Fp.mul(Y1, Z1); // step 25\n t2 = Fp.add(t2, t2);\n t0 = Fp.mul(t2, t3);\n X3 = Fp.sub(X3, t0);\n Z3 = Fp.mul(t2, t1);\n Z3 = Fp.add(Z3, Z3); // step 30\n Z3 = Fp.add(Z3, Z3);\n return new Point(X3, Y3, Z3);\n }\n\n // Renes-Costello-Batina exception-free addition formula.\n // There is 30% faster Jacobian formula, but it is not complete.\n // https://eprint.iacr.org/2015/1060, algorithm 1\n // Cost: 12M + 0S + 3*a + 3*b3 + 23add.\n add(other: Point): Point {\n assertPrjPoint(other);\n const { px: X1, py: Y1, pz: Z1 } = this;\n const { px: X2, py: Y2, pz: Z2 } = other;\n let X3 = Fp.ZERO, Y3 = Fp.ZERO, Z3 = Fp.ZERO; // prettier-ignore\n const a = CURVE.a;\n const b3 = Fp.mul(CURVE.b, _3n);\n let t0 = Fp.mul(X1, X2); // step 1\n let t1 = Fp.mul(Y1, Y2);\n let t2 = Fp.mul(Z1, Z2);\n let t3 = Fp.add(X1, Y1);\n let t4 = Fp.add(X2, Y2); // step 5\n t3 = Fp.mul(t3, t4);\n t4 = Fp.add(t0, t1);\n t3 = Fp.sub(t3, t4);\n t4 = Fp.add(X1, Z1);\n let t5 = Fp.add(X2, Z2); // step 10\n t4 = Fp.mul(t4, t5);\n t5 = Fp.add(t0, t2);\n t4 = Fp.sub(t4, t5);\n t5 = Fp.add(Y1, Z1);\n X3 = Fp.add(Y2, Z2); // step 15\n t5 = Fp.mul(t5, X3);\n X3 = Fp.add(t1, t2);\n t5 = Fp.sub(t5, X3);\n Z3 = Fp.mul(a, t4);\n X3 = Fp.mul(b3, t2); // step 20\n Z3 = Fp.add(X3, Z3);\n X3 = Fp.sub(t1, Z3);\n Z3 = Fp.add(t1, Z3);\n Y3 = Fp.mul(X3, Z3);\n t1 = Fp.add(t0, t0); // step 25\n t1 = Fp.add(t1, t0);\n t2 = Fp.mul(a, t2);\n t4 = Fp.mul(b3, t4);\n t1 = Fp.add(t1, t2);\n t2 = Fp.sub(t0, t2); // step 30\n t2 = Fp.mul(a, t2);\n t4 = Fp.add(t4, t2);\n t0 = Fp.mul(t1, t4);\n Y3 = Fp.add(Y3, t0);\n t0 = Fp.mul(t5, t4); // step 35\n X3 = Fp.mul(t3, X3);\n X3 = Fp.sub(X3, t0);\n t0 = Fp.mul(t3, t1);\n Z3 = Fp.mul(t5, Z3);\n Z3 = Fp.add(Z3, t0); // step 40\n return new Point(X3, Y3, Z3);\n }\n\n subtract(other: Point) {\n return this.add(other.negate());\n }\n\n private is0() {\n return this.equals(Point.ZERO);\n }\n private wNAF(n: bigint): { p: Point; f: Point } {\n return wnaf.wNAFCached(this, pointPrecomputes, n, (comp: Point[]) => {\n const toInv = Fp.invertBatch(comp.map((p) => p.pz));\n return comp.map((p, i) => p.toAffine(toInv[i])).map(Point.fromAffine);\n });\n }\n\n /**\n * Non-constant-time multiplication. Uses double-and-add algorithm.\n * It's faster, but should only be used when you don't care about\n * an exposed private key e.g. sig verification, which works over *public* keys.\n */\n multiplyUnsafe(n: bigint): Point {\n const I = Point.ZERO;\n if (n === _0n) return I;\n assertGE(n); // Will throw on 0\n if (n === _1n) return this;\n const { endo } = CURVE;\n if (!endo) return wnaf.unsafeLadder(this, n);\n\n // Apply endomorphism\n let { k1neg, k1, k2neg, k2 } = endo.splitScalar(n);\n let k1p = I;\n let k2p = I;\n let d: Point = this;\n while (k1 > _0n || k2 > _0n) {\n if (k1 & _1n) k1p = k1p.add(d);\n if (k2 & _1n) k2p = k2p.add(d);\n d = d.double();\n k1 >>= _1n;\n k2 >>= _1n;\n }\n if (k1neg) k1p = k1p.negate();\n if (k2neg) k2p = k2p.negate();\n k2p = new Point(Fp.mul(k2p.px, endo.beta), k2p.py, k2p.pz);\n return k1p.add(k2p);\n }\n\n /**\n * Constant time multiplication.\n * Uses wNAF method. Windowed method may be 10% faster,\n * but takes 2x longer to generate and consumes 2x memory.\n * Uses precomputes when available.\n * Uses endomorphism for Koblitz curves.\n * @param scalar by which the point would be multiplied\n * @returns New point\n */\n multiply(scalar: bigint): Point {\n assertGE(scalar);\n let n = scalar;\n let point: Point, fake: Point; // Fake point is used to const-time mult\n const { endo } = CURVE;\n if (endo) {\n const { k1neg, k1, k2neg, k2 } = endo.splitScalar(n);\n let { p: k1p, f: f1p } = this.wNAF(k1);\n let { p: k2p, f: f2p } = this.wNAF(k2);\n k1p = wnaf.constTimeNegate(k1neg, k1p);\n k2p = wnaf.constTimeNegate(k2neg, k2p);\n k2p = new Point(Fp.mul(k2p.px, endo.beta), k2p.py, k2p.pz);\n point = k1p.add(k2p);\n fake = f1p.add(f2p);\n } else {\n const { p, f } = this.wNAF(n);\n point = p;\n fake = f;\n }\n // Normalize `z` for both points, but return only real one\n return Point.normalizeZ([point, fake])[0];\n }\n\n /**\n * Efficiently calculate `aP + bQ`. Unsafe, can expose private key, if used incorrectly.\n * Not using Strauss-Shamir trick: precomputation tables are faster.\n * The trick could be useful if both P and Q are not G (not in our case).\n * @returns non-zero affine point\n */\n multiplyAndAddUnsafe(Q: Point, a: bigint, b: bigint): Point | undefined {\n const G = Point.BASE; // No Strauss-Shamir trick: we have 10% faster G precomputes\n const mul = (\n P: Point,\n a: bigint // Select faster multiply() method\n ) => (a === _0n || a === _1n || !P.equals(G) ? P.multiplyUnsafe(a) : P.multiply(a));\n const sum = mul(this, a).add(mul(Q, b));\n return sum.is0() ? undefined : sum;\n }\n\n // Converts Projective point to affine (x, y) coordinates.\n // Can accept precomputed Z^-1 - for example, from invertBatch.\n // (x, y, z) ∋ (x=x/z, y=y/z)\n toAffine(iz?: T): AffinePoint {\n const { px: x, py: y, pz: z } = this;\n const is0 = this.is0();\n // If invZ was 0, we return zero point. However we still want to execute\n // all operations, so we replace invZ with a random number, 1.\n if (iz == null) iz = is0 ? Fp.ONE : Fp.inv(z);\n const ax = Fp.mul(x, iz);\n const ay = Fp.mul(y, iz);\n const zz = Fp.mul(z, iz);\n if (is0) return { x: Fp.ZERO, y: Fp.ZERO };\n if (!Fp.eql(zz, Fp.ONE)) throw new Error('invZ was invalid');\n return { x: ax, y: ay };\n }\n isTorsionFree(): boolean {\n const { h: cofactor, isTorsionFree } = CURVE;\n if (cofactor === _1n) return true; // No subgroups, always torsion-free\n if (isTorsionFree) return isTorsionFree(Point, this);\n throw new Error('isTorsionFree() has not been declared for the elliptic curve');\n }\n clearCofactor(): Point {\n const { h: cofactor, clearCofactor } = CURVE;\n if (cofactor === _1n) return this; // Fast-path\n if (clearCofactor) return clearCofactor(Point, this) as Point;\n return this.multiplyUnsafe(CURVE.h);\n }\n\n toRawBytes(isCompressed = true): Uint8Array {\n this.assertValidity();\n return toBytes(Point, this, isCompressed);\n }\n\n toHex(isCompressed = true): string {\n return ut.bytesToHex(this.toRawBytes(isCompressed));\n }\n }\n const _bits = CURVE.nBitLength;\n const wnaf = wNAF(Point, CURVE.endo ? Math.ceil(_bits / 2) : _bits);\n // Validate if generator point is on curve\n return {\n CURVE,\n ProjectivePoint: Point as ProjConstructor,\n normPrivateKeyToScalar,\n weierstrassEquation,\n isWithinCurveOrder,\n };\n}\n\n// Instance\nexport interface SignatureType {\n readonly r: bigint;\n readonly s: bigint;\n readonly recovery?: number;\n assertValidity(): void;\n addRecoveryBit(recovery: number): RecoveredSignatureType;\n hasHighS(): boolean;\n normalizeS(): SignatureType;\n recoverPublicKey(msgHash: Hex): ProjPointType;\n toCompactRawBytes(): Uint8Array;\n toCompactHex(): string;\n // DER-encoded\n toDERRawBytes(isCompressed?: boolean): Uint8Array;\n toDERHex(isCompressed?: boolean): string;\n}\nexport type RecoveredSignatureType = SignatureType & {\n readonly recovery: number;\n};\n// Static methods\nexport type SignatureConstructor = {\n new (r: bigint, s: bigint): SignatureType;\n fromCompact(hex: Hex): SignatureType;\n fromDER(hex: Hex): SignatureType;\n};\ntype SignatureLike = { r: bigint; s: bigint };\n\nexport type PubKey = Hex | ProjPointType;\n\nexport type CurveType = BasicWCurve & {\n hash: CHash; // CHash not FHash because we need outputLen for DRBG\n hmac: HmacFnSync;\n randomBytes: (bytesLength?: number) => Uint8Array;\n lowS?: boolean;\n bits2int?: (bytes: Uint8Array) => bigint;\n bits2int_modN?: (bytes: Uint8Array) => bigint;\n};\n\nfunction validateOpts(curve: CurveType) {\n const opts = validateBasic(curve);\n ut.validateObject(\n opts,\n {\n hash: 'hash',\n hmac: 'function',\n randomBytes: 'function',\n },\n {\n bits2int: 'function',\n bits2int_modN: 'function',\n lowS: 'boolean',\n }\n );\n return Object.freeze({ lowS: true, ...opts } as const);\n}\n\nexport type CurveFn = {\n CURVE: ReturnType;\n getPublicKey: (privateKey: PrivKey, isCompressed?: boolean) => Uint8Array;\n getSharedSecret: (privateA: PrivKey, publicB: Hex, isCompressed?: boolean) => Uint8Array;\n sign: (msgHash: Hex, privKey: PrivKey, opts?: SignOpts) => RecoveredSignatureType;\n verify: (signature: Hex | SignatureLike, msgHash: Hex, publicKey: Hex, opts?: VerOpts) => boolean;\n ProjectivePoint: ProjConstructor;\n Signature: SignatureConstructor;\n utils: {\n normPrivateKeyToScalar: (key: PrivKey) => bigint;\n isValidPrivateKey(privateKey: PrivKey): boolean;\n randomPrivateKey: () => Uint8Array;\n precompute: (windowSize?: number, point?: ProjPointType) => ProjPointType;\n };\n};\n\nexport function weierstrass(curveDef: CurveType): CurveFn {\n const CURVE = validateOpts(curveDef) as ReturnType;\n const { Fp, n: CURVE_ORDER } = CURVE;\n const compressedLen = Fp.BYTES + 1; // e.g. 33 for 32\n const uncompressedLen = 2 * Fp.BYTES + 1; // e.g. 65 for 32\n\n function isValidFieldElement(num: bigint): boolean {\n return _0n < num && num < Fp.ORDER; // 0 is banned since it's not invertible FE\n }\n function modN(a: bigint) {\n return mod.mod(a, CURVE_ORDER);\n }\n function invN(a: bigint) {\n return mod.invert(a, CURVE_ORDER);\n }\n\n const {\n ProjectivePoint: Point,\n normPrivateKeyToScalar,\n weierstrassEquation,\n isWithinCurveOrder,\n } = weierstrassPoints({\n ...CURVE,\n toBytes(_c, point, isCompressed: boolean): Uint8Array {\n const a = point.toAffine();\n const x = Fp.toBytes(a.x);\n const cat = ut.concatBytes;\n if (isCompressed) {\n return cat(Uint8Array.from([point.hasEvenY() ? 0x02 : 0x03]), x);\n } else {\n return cat(Uint8Array.from([0x04]), x, Fp.toBytes(a.y));\n }\n },\n fromBytes(bytes: Uint8Array) {\n const len = bytes.length;\n const head = bytes[0];\n const tail = bytes.subarray(1);\n // this.assertValidity() is done inside of fromHex\n if (len === compressedLen && (head === 0x02 || head === 0x03)) {\n const x = ut.bytesToNumberBE(tail);\n if (!isValidFieldElement(x)) throw new Error('Point is not on curve');\n const y2 = weierstrassEquation(x); // y² = x³ + ax + b\n let y = Fp.sqrt(y2); // y = y² ^ (p+1)/4\n const isYOdd = (y & _1n) === _1n;\n // ECDSA\n const isHeadOdd = (head & 1) === 1;\n if (isHeadOdd !== isYOdd) y = Fp.neg(y);\n return { x, y };\n } else if (len === uncompressedLen && head === 0x04) {\n const x = Fp.fromBytes(tail.subarray(0, Fp.BYTES));\n const y = Fp.fromBytes(tail.subarray(Fp.BYTES, 2 * Fp.BYTES));\n return { x, y };\n } else {\n throw new Error(\n `Point of length ${len} was invalid. Expected ${compressedLen} compressed bytes or ${uncompressedLen} uncompressed bytes`\n );\n }\n },\n });\n const numToNByteStr = (num: bigint): string =>\n ut.bytesToHex(ut.numberToBytesBE(num, CURVE.nByteLength));\n\n function isBiggerThanHalfOrder(number: bigint) {\n const HALF = CURVE_ORDER >> _1n;\n return number > HALF;\n }\n\n function normalizeS(s: bigint) {\n return isBiggerThanHalfOrder(s) ? modN(-s) : s;\n }\n // slice bytes num\n const slcNum = (b: Uint8Array, from: number, to: number) => ut.bytesToNumberBE(b.slice(from, to));\n\n /**\n * ECDSA signature with its (r, s) properties. Supports DER & compact representations.\n */\n class Signature implements SignatureType {\n constructor(readonly r: bigint, readonly s: bigint, readonly recovery?: number) {\n this.assertValidity();\n }\n\n // pair (bytes of r, bytes of s)\n static fromCompact(hex: Hex) {\n const l = CURVE.nByteLength;\n hex = ensureBytes('compactSignature', hex, l * 2);\n return new Signature(slcNum(hex, 0, l), slcNum(hex, l, 2 * l));\n }\n\n // DER encoded ECDSA signature\n // https://bitcoin.stackexchange.com/questions/57644/what-are-the-parts-of-a-bitcoin-transaction-input-script\n static fromDER(hex: Hex) {\n const { r, s } = DER.toSig(ensureBytes('DER', hex));\n return new Signature(r, s);\n }\n\n assertValidity(): void {\n // can use assertGE here\n if (!isWithinCurveOrder(this.r)) throw new Error('r must be 0 < r < CURVE.n');\n if (!isWithinCurveOrder(this.s)) throw new Error('s must be 0 < s < CURVE.n');\n }\n\n addRecoveryBit(recovery: number): RecoveredSignature {\n return new Signature(this.r, this.s, recovery) as RecoveredSignature;\n }\n\n recoverPublicKey(msgHash: Hex): typeof Point.BASE {\n const { r, s, recovery: rec } = this;\n const h = bits2int_modN(ensureBytes('msgHash', msgHash)); // Truncate hash\n if (rec == null || ![0, 1, 2, 3].includes(rec)) throw new Error('recovery id invalid');\n const radj = rec === 2 || rec === 3 ? r + CURVE.n : r;\n if (radj >= Fp.ORDER) throw new Error('recovery id 2 or 3 invalid');\n const prefix = (rec & 1) === 0 ? '02' : '03';\n const R = Point.fromHex(prefix + numToNByteStr(radj));\n const ir = invN(radj); // r^-1\n const u1 = modN(-h * ir); // -hr^-1\n const u2 = modN(s * ir); // sr^-1\n const Q = Point.BASE.multiplyAndAddUnsafe(R, u1, u2); // (sr^-1)R-(hr^-1)G = -(hr^-1)G + (sr^-1)\n if (!Q) throw new Error('point at infinify'); // unsafe is fine: no priv data leaked\n Q.assertValidity();\n return Q;\n }\n\n // Signatures should be low-s, to prevent malleability.\n hasHighS(): boolean {\n return isBiggerThanHalfOrder(this.s);\n }\n\n normalizeS() {\n return this.hasHighS() ? new Signature(this.r, modN(-this.s), this.recovery) : this;\n }\n\n // DER-encoded\n toDERRawBytes() {\n return ut.hexToBytes(this.toDERHex());\n }\n toDERHex() {\n return DER.hexFromSig({ r: this.r, s: this.s });\n }\n\n // padded bytes of r, then padded bytes of s\n toCompactRawBytes() {\n return ut.hexToBytes(this.toCompactHex());\n }\n toCompactHex() {\n return numToNByteStr(this.r) + numToNByteStr(this.s);\n }\n }\n type RecoveredSignature = Signature & { recovery: number };\n\n const utils = {\n isValidPrivateKey(privateKey: PrivKey) {\n try {\n normPrivateKeyToScalar(privateKey);\n return true;\n } catch (error) {\n return false;\n }\n },\n normPrivateKeyToScalar: normPrivateKeyToScalar,\n\n /**\n * Produces cryptographically secure private key from random of size\n * (groupLen + ceil(groupLen / 2)) with modulo bias being negligible.\n */\n randomPrivateKey: (): Uint8Array => {\n const length = mod.getMinHashLength(CURVE.n);\n return mod.mapHashToField(CURVE.randomBytes(length), CURVE.n);\n },\n\n /**\n * Creates precompute table for an arbitrary EC point. Makes point \"cached\".\n * Allows to massively speed-up `point.multiply(scalar)`.\n * @returns cached point\n * @example\n * const fast = utils.precompute(8, ProjectivePoint.fromHex(someonesPubKey));\n * fast.multiply(privKey); // much faster ECDH now\n */\n precompute(windowSize = 8, point = Point.BASE): typeof Point.BASE {\n point._setWindowSize(windowSize);\n point.multiply(BigInt(3)); // 3 is arbitrary, just need any number here\n return point;\n },\n };\n\n /**\n * Computes public key for a private key. Checks for validity of the private key.\n * @param privateKey private key\n * @param isCompressed whether to return compact (default), or full key\n * @returns Public key, full when isCompressed=false; short when isCompressed=true\n */\n function getPublicKey(privateKey: PrivKey, isCompressed = true): Uint8Array {\n return Point.fromPrivateKey(privateKey).toRawBytes(isCompressed);\n }\n\n /**\n * Quick and dirty check for item being public key. Does not validate hex, or being on-curve.\n */\n function isProbPub(item: PrivKey | PubKey): boolean {\n const arr = item instanceof Uint8Array;\n const str = typeof item === 'string';\n const len = (arr || str) && (item as Hex).length;\n if (arr) return len === compressedLen || len === uncompressedLen;\n if (str) return len === 2 * compressedLen || len === 2 * uncompressedLen;\n if (item instanceof Point) return true;\n return false;\n }\n\n /**\n * ECDH (Elliptic Curve Diffie Hellman).\n * Computes shared public key from private key and public key.\n * Checks: 1) private key validity 2) shared key is on-curve.\n * Does NOT hash the result.\n * @param privateA private key\n * @param publicB different public key\n * @param isCompressed whether to return compact (default), or full key\n * @returns shared public key\n */\n function getSharedSecret(privateA: PrivKey, publicB: Hex, isCompressed = true): Uint8Array {\n if (isProbPub(privateA)) throw new Error('first arg must be private key');\n if (!isProbPub(publicB)) throw new Error('second arg must be public key');\n const b = Point.fromHex(publicB); // check for being on-curve\n return b.multiply(normPrivateKeyToScalar(privateA)).toRawBytes(isCompressed);\n }\n\n // RFC6979: ensure ECDSA msg is X bytes and < N. RFC suggests optional truncating via bits2octets.\n // FIPS 186-4 4.6 suggests the leftmost min(nBitLen, outLen) bits, which matches bits2int.\n // bits2int can produce res>N, we can do mod(res, N) since the bitLen is the same.\n // int2octets can't be used; pads small msgs with 0: unacceptatble for trunc as per RFC vectors\n const bits2int =\n CURVE.bits2int ||\n function (bytes: Uint8Array): bigint {\n // For curves with nBitLength % 8 !== 0: bits2octets(bits2octets(m)) !== bits2octets(m)\n // for some cases, since bytes.length * 8 is not actual bitLength.\n const num = ut.bytesToNumberBE(bytes); // check for == u8 done here\n const delta = bytes.length * 8 - CURVE.nBitLength; // truncate to nBitLength leftmost bits\n return delta > 0 ? num >> BigInt(delta) : num;\n };\n const bits2int_modN =\n CURVE.bits2int_modN ||\n function (bytes: Uint8Array): bigint {\n return modN(bits2int(bytes)); // can't use bytesToNumberBE here\n };\n // NOTE: pads output with zero as per spec\n const ORDER_MASK = ut.bitMask(CURVE.nBitLength);\n /**\n * Converts to bytes. Checks if num in `[0..ORDER_MASK-1]` e.g.: `[0..2^256-1]`.\n */\n function int2octets(num: bigint): Uint8Array {\n if (typeof num !== 'bigint') throw new Error('bigint expected');\n if (!(_0n <= num && num < ORDER_MASK))\n throw new Error(`bigint expected < 2^${CURVE.nBitLength}`);\n // works with order, can have different size than numToField!\n return ut.numberToBytesBE(num, CURVE.nByteLength);\n }\n\n // Steps A, D of RFC6979 3.2\n // Creates RFC6979 seed; converts msg/privKey to numbers.\n // Used only in sign, not in verify.\n // NOTE: we cannot assume here that msgHash has same amount of bytes as curve order, this will be wrong at least for P521.\n // Also it can be bigger for P224 + SHA256\n function prepSig(msgHash: Hex, privateKey: PrivKey, opts = defaultSigOpts) {\n if (['recovered', 'canonical'].some((k) => k in opts))\n throw new Error('sign() legacy options not supported');\n const { hash, randomBytes } = CURVE;\n let { lowS, prehash, extraEntropy: ent } = opts; // generates low-s sigs by default\n if (lowS == null) lowS = true; // RFC6979 3.2: we skip step A, because we already provide hash\n msgHash = ensureBytes('msgHash', msgHash);\n if (prehash) msgHash = ensureBytes('prehashed msgHash', hash(msgHash));\n\n // We can't later call bits2octets, since nested bits2int is broken for curves\n // with nBitLength % 8 !== 0. Because of that, we unwrap it here as int2octets call.\n // const bits2octets = (bits) => int2octets(bits2int_modN(bits))\n const h1int = bits2int_modN(msgHash);\n const d = normPrivateKeyToScalar(privateKey); // validate private key, convert to bigint\n const seedArgs = [int2octets(d), int2octets(h1int)];\n // extraEntropy. RFC6979 3.6: additional k' (optional).\n if (ent != null) {\n // K = HMAC_K(V || 0x00 || int2octets(x) || bits2octets(h1) || k')\n const e = ent === true ? randomBytes(Fp.BYTES) : ent; // generate random bytes OR pass as-is\n seedArgs.push(ensureBytes('extraEntropy', e)); // check for being bytes\n }\n const seed = ut.concatBytes(...seedArgs); // Step D of RFC6979 3.2\n const m = h1int; // NOTE: no need to call bits2int second time here, it is inside truncateHash!\n // Converts signature params into point w r/s, checks result for validity.\n function k2sig(kBytes: Uint8Array): RecoveredSignature | undefined {\n // RFC 6979 Section 3.2, step 3: k = bits2int(T)\n const k = bits2int(kBytes); // Cannot use fields methods, since it is group element\n if (!isWithinCurveOrder(k)) return; // Important: all mod() calls here must be done over N\n const ik = invN(k); // k^-1 mod n\n const q = Point.BASE.multiply(k).toAffine(); // q = Gk\n const r = modN(q.x); // r = q.x mod n\n if (r === _0n) return;\n // Can use scalar blinding b^-1(bm + bdr) where b ∈ [1,q−1] according to\n // https://tches.iacr.org/index.php/TCHES/article/view/7337/6509. We've decided against it:\n // a) dependency on CSPRNG b) 15% slowdown c) doesn't really help since bigints are not CT\n const s = modN(ik * modN(m + r * d)); // Not using blinding here\n if (s === _0n) return;\n let recovery = (q.x === r ? 0 : 2) | Number(q.y & _1n); // recovery bit (2 or 3, when q.x > n)\n let normS = s;\n if (lowS && isBiggerThanHalfOrder(s)) {\n normS = normalizeS(s); // if lowS was passed, ensure s is always\n recovery ^= 1; // // in the bottom half of N\n }\n return new Signature(r, normS, recovery) as RecoveredSignature; // use normS, not s\n }\n return { seed, k2sig };\n }\n const defaultSigOpts: SignOpts = { lowS: CURVE.lowS, prehash: false };\n const defaultVerOpts: VerOpts = { lowS: CURVE.lowS, prehash: false };\n\n /**\n * Signs message hash with a private key.\n * ```\n * sign(m, d, k) where\n * (x, y) = G × k\n * r = x mod n\n * s = (m + dr)/k mod n\n * ```\n * @param msgHash NOT message. msg needs to be hashed to `msgHash`, or use `prehash`.\n * @param privKey private key\n * @param opts lowS for non-malleable sigs. extraEntropy for mixing randomness into k. prehash will hash first arg.\n * @returns signature with recovery param\n */\n function sign(msgHash: Hex, privKey: PrivKey, opts = defaultSigOpts): RecoveredSignature {\n const { seed, k2sig } = prepSig(msgHash, privKey, opts); // Steps A, D of RFC6979 3.2.\n const C = CURVE;\n const drbg = ut.createHmacDrbg(C.hash.outputLen, C.nByteLength, C.hmac);\n return drbg(seed, k2sig); // Steps B, C, D, E, F, G\n }\n\n // Enable precomputes. Slows down first publicKey computation by 20ms.\n Point.BASE._setWindowSize(8);\n // utils.precompute(8, ProjectivePoint.BASE)\n\n /**\n * Verifies a signature against message hash and public key.\n * Rejects lowS signatures by default: to override,\n * specify option `{lowS: false}`. Implements section 4.1.4 from https://www.secg.org/sec1-v2.pdf:\n *\n * ```\n * verify(r, s, h, P) where\n * U1 = hs^-1 mod n\n * U2 = rs^-1 mod n\n * R = U1⋅G - U2⋅P\n * mod(R.x, n) == r\n * ```\n */\n function verify(\n signature: Hex | SignatureLike,\n msgHash: Hex,\n publicKey: Hex,\n opts = defaultVerOpts\n ): boolean {\n const sg = signature;\n msgHash = ensureBytes('msgHash', msgHash);\n publicKey = ensureBytes('publicKey', publicKey);\n if ('strict' in opts) throw new Error('options.strict was renamed to lowS');\n const { lowS, prehash } = opts;\n\n let _sig: Signature | undefined = undefined;\n let P: ProjPointType;\n try {\n if (typeof sg === 'string' || sg instanceof Uint8Array) {\n // Signature can be represented in 2 ways: compact (2*nByteLength) & DER (variable-length).\n // Since DER can also be 2*nByteLength bytes, we check for it first.\n try {\n _sig = Signature.fromDER(sg);\n } catch (derError) {\n if (!(derError instanceof DER.Err)) throw derError;\n _sig = Signature.fromCompact(sg);\n }\n } else if (typeof sg === 'object' && typeof sg.r === 'bigint' && typeof sg.s === 'bigint') {\n const { r, s } = sg;\n _sig = new Signature(r, s);\n } else {\n throw new Error('PARSE');\n }\n P = Point.fromHex(publicKey);\n } catch (error) {\n if ((error as Error).message === 'PARSE')\n throw new Error(`signature must be Signature instance, Uint8Array or hex string`);\n return false;\n }\n if (lowS && _sig.hasHighS()) return false;\n if (prehash) msgHash = CURVE.hash(msgHash);\n const { r, s } = _sig;\n const h = bits2int_modN(msgHash); // Cannot use fields methods, since it is group element\n const is = invN(s); // s^-1\n const u1 = modN(h * is); // u1 = hs^-1 mod n\n const u2 = modN(r * is); // u2 = rs^-1 mod n\n const R = Point.BASE.multiplyAndAddUnsafe(P, u1, u2)?.toAffine(); // R = u1⋅G + u2⋅P\n if (!R) return false;\n const v = modN(R.x);\n return v === r;\n }\n return {\n CURVE,\n getPublicKey,\n getSharedSecret,\n sign,\n verify,\n ProjectivePoint: Point,\n Signature,\n utils,\n };\n}\n\n/**\n * Implementation of the Shallue and van de Woestijne method for any weierstrass curve.\n * TODO: check if there is a way to merge this with uvRatio in Edwards; move to modular.\n * b = True and y = sqrt(u / v) if (u / v) is square in F, and\n * b = False and y = sqrt(Z * (u / v)) otherwise.\n * @param Fp\n * @param Z\n * @returns\n */\nexport function SWUFpSqrtRatio(Fp: mod.IField, Z: T) {\n // Generic implementation\n const q = Fp.ORDER;\n let l = _0n;\n for (let o = q - _1n; o % _2n === _0n; o /= _2n) l += _1n;\n const c1 = l; // 1. c1, the largest integer such that 2^c1 divides q - 1.\n // We need 2n ** c1 and 2n ** (c1-1). We can't use **; but we can use <<.\n // 2n ** c1 == 2n << (c1-1)\n const _2n_pow_c1_1 = _2n << (c1 - _1n - _1n);\n const _2n_pow_c1 = _2n_pow_c1_1 * _2n;\n const c2 = (q - _1n) / _2n_pow_c1; // 2. c2 = (q - 1) / (2^c1) # Integer arithmetic\n const c3 = (c2 - _1n) / _2n; // 3. c3 = (c2 - 1) / 2 # Integer arithmetic\n const c4 = _2n_pow_c1 - _1n; // 4. c4 = 2^c1 - 1 # Integer arithmetic\n const c5 = _2n_pow_c1_1; // 5. c5 = 2^(c1 - 1) # Integer arithmetic\n const c6 = Fp.pow(Z, c2); // 6. c6 = Z^c2\n const c7 = Fp.pow(Z, (c2 + _1n) / _2n); // 7. c7 = Z^((c2 + 1) / 2)\n let sqrtRatio = (u: T, v: T): { isValid: boolean; value: T } => {\n let tv1 = c6; // 1. tv1 = c6\n let tv2 = Fp.pow(v, c4); // 2. tv2 = v^c4\n let tv3 = Fp.sqr(tv2); // 3. tv3 = tv2^2\n tv3 = Fp.mul(tv3, v); // 4. tv3 = tv3 * v\n let tv5 = Fp.mul(u, tv3); // 5. tv5 = u * tv3\n tv5 = Fp.pow(tv5, c3); // 6. tv5 = tv5^c3\n tv5 = Fp.mul(tv5, tv2); // 7. tv5 = tv5 * tv2\n tv2 = Fp.mul(tv5, v); // 8. tv2 = tv5 * v\n tv3 = Fp.mul(tv5, u); // 9. tv3 = tv5 * u\n let tv4 = Fp.mul(tv3, tv2); // 10. tv4 = tv3 * tv2\n tv5 = Fp.pow(tv4, c5); // 11. tv5 = tv4^c5\n let isQR = Fp.eql(tv5, Fp.ONE); // 12. isQR = tv5 == 1\n tv2 = Fp.mul(tv3, c7); // 13. tv2 = tv3 * c7\n tv5 = Fp.mul(tv4, tv1); // 14. tv5 = tv4 * tv1\n tv3 = Fp.cmov(tv2, tv3, isQR); // 15. tv3 = CMOV(tv2, tv3, isQR)\n tv4 = Fp.cmov(tv5, tv4, isQR); // 16. tv4 = CMOV(tv5, tv4, isQR)\n // 17. for i in (c1, c1 - 1, ..., 2):\n for (let i = c1; i > _1n; i--) {\n let tv5 = i - _2n; // 18. tv5 = i - 2\n tv5 = _2n << (tv5 - _1n); // 19. tv5 = 2^tv5\n let tvv5 = Fp.pow(tv4, tv5); // 20. tv5 = tv4^tv5\n const e1 = Fp.eql(tvv5, Fp.ONE); // 21. e1 = tv5 == 1\n tv2 = Fp.mul(tv3, tv1); // 22. tv2 = tv3 * tv1\n tv1 = Fp.mul(tv1, tv1); // 23. tv1 = tv1 * tv1\n tvv5 = Fp.mul(tv4, tv1); // 24. tv5 = tv4 * tv1\n tv3 = Fp.cmov(tv2, tv3, e1); // 25. tv3 = CMOV(tv2, tv3, e1)\n tv4 = Fp.cmov(tvv5, tv4, e1); // 26. tv4 = CMOV(tv5, tv4, e1)\n }\n return { isValid: isQR, value: tv3 };\n };\n if (Fp.ORDER % _4n === _3n) {\n // sqrt_ratio_3mod4(u, v)\n const c1 = (Fp.ORDER - _3n) / _4n; // 1. c1 = (q - 3) / 4 # Integer arithmetic\n const c2 = Fp.sqrt(Fp.neg(Z)); // 2. c2 = sqrt(-Z)\n sqrtRatio = (u: T, v: T) => {\n let tv1 = Fp.sqr(v); // 1. tv1 = v^2\n const tv2 = Fp.mul(u, v); // 2. tv2 = u * v\n tv1 = Fp.mul(tv1, tv2); // 3. tv1 = tv1 * tv2\n let y1 = Fp.pow(tv1, c1); // 4. y1 = tv1^c1\n y1 = Fp.mul(y1, tv2); // 5. y1 = y1 * tv2\n const y2 = Fp.mul(y1, c2); // 6. y2 = y1 * c2\n const tv3 = Fp.mul(Fp.sqr(y1), v); // 7. tv3 = y1^2; 8. tv3 = tv3 * v\n const isQR = Fp.eql(tv3, u); // 9. isQR = tv3 == u\n let y = Fp.cmov(y2, y1, isQR); // 10. y = CMOV(y2, y1, isQR)\n return { isValid: isQR, value: y }; // 11. return (isQR, y) isQR ? y : y*c2\n };\n }\n // No curves uses that\n // if (Fp.ORDER % _8n === _5n) // sqrt_ratio_5mod8\n return sqrtRatio;\n}\n/**\n * Simplified Shallue-van de Woestijne-Ulas Method\n * https://www.rfc-editor.org/rfc/rfc9380#section-6.6.2\n */\nexport function mapToCurveSimpleSWU(\n Fp: mod.IField,\n opts: {\n A: T;\n B: T;\n Z: T;\n }\n) {\n mod.validateField(Fp);\n if (!Fp.isValid(opts.A) || !Fp.isValid(opts.B) || !Fp.isValid(opts.Z))\n throw new Error('mapToCurveSimpleSWU: invalid opts');\n const sqrtRatio = SWUFpSqrtRatio(Fp, opts.Z);\n if (!Fp.isOdd) throw new Error('Fp.isOdd is not implemented!');\n // Input: u, an element of F.\n // Output: (x, y), a point on E.\n return (u: T): { x: T; y: T } => {\n // prettier-ignore\n let tv1, tv2, tv3, tv4, tv5, tv6, x, y;\n tv1 = Fp.sqr(u); // 1. tv1 = u^2\n tv1 = Fp.mul(tv1, opts.Z); // 2. tv1 = Z * tv1\n tv2 = Fp.sqr(tv1); // 3. tv2 = tv1^2\n tv2 = Fp.add(tv2, tv1); // 4. tv2 = tv2 + tv1\n tv3 = Fp.add(tv2, Fp.ONE); // 5. tv3 = tv2 + 1\n tv3 = Fp.mul(tv3, opts.B); // 6. tv3 = B * tv3\n tv4 = Fp.cmov(opts.Z, Fp.neg(tv2), !Fp.eql(tv2, Fp.ZERO)); // 7. tv4 = CMOV(Z, -tv2, tv2 != 0)\n tv4 = Fp.mul(tv4, opts.A); // 8. tv4 = A * tv4\n tv2 = Fp.sqr(tv3); // 9. tv2 = tv3^2\n tv6 = Fp.sqr(tv4); // 10. tv6 = tv4^2\n tv5 = Fp.mul(tv6, opts.A); // 11. tv5 = A * tv6\n tv2 = Fp.add(tv2, tv5); // 12. tv2 = tv2 + tv5\n tv2 = Fp.mul(tv2, tv3); // 13. tv2 = tv2 * tv3\n tv6 = Fp.mul(tv6, tv4); // 14. tv6 = tv6 * tv4\n tv5 = Fp.mul(tv6, opts.B); // 15. tv5 = B * tv6\n tv2 = Fp.add(tv2, tv5); // 16. tv2 = tv2 + tv5\n x = Fp.mul(tv1, tv3); // 17. x = tv1 * tv3\n const { isValid, value } = sqrtRatio(tv2, tv6); // 18. (is_gx1_square, y1) = sqrt_ratio(tv2, tv6)\n y = Fp.mul(tv1, u); // 19. y = tv1 * u -> Z * u^3 * y1\n y = Fp.mul(y, value); // 20. y = y * y1\n x = Fp.cmov(x, tv3, isValid); // 21. x = CMOV(x, tv3, is_gx1_square)\n y = Fp.cmov(y, value, isValid); // 22. y = CMOV(y, y1, is_gx1_square)\n const e1 = Fp.isOdd!(u) === Fp.isOdd!(y); // 23. e1 = sgn0(u) == sgn0(y)\n y = Fp.cmov(Fp.neg(y), y, e1); // 24. y = CMOV(-y, y, e1)\n x = Fp.div(x, tv4); // 25. x = x / tv4\n return { x, y };\n };\n}\n","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { hmac } from '@noble/hashes/hmac';\nimport { concatBytes, randomBytes } from '@noble/hashes/utils';\nimport { weierstrass, CurveType } from './abstract/weierstrass.js';\nimport { CHash } from './abstract/utils.js';\n\n// connects noble-curves to noble-hashes\nexport function getHash(hash: CHash) {\n return {\n hash,\n hmac: (key: Uint8Array, ...msgs: Uint8Array[]) => hmac(hash, key, concatBytes(...msgs)),\n randomBytes,\n };\n}\n// Same API as @noble/hashes, with ability to create curve with custom hash\ntype CurveDef = Readonly>;\nexport function createCurve(curveDef: CurveDef, defHash: CHash) {\n const create = (hash: CHash) => weierstrass({ ...curveDef, ...getHash(hash) });\n return Object.freeze({ ...create(defHash), create });\n}\n","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { createCurve } from './_shortw_utils.js';\nimport { sha256 } from '@noble/hashes/sha256';\nimport { Field } from './abstract/modular.js';\nimport { mapToCurveSimpleSWU } from './abstract/weierstrass.js';\nimport { createHasher } from './abstract/hash-to-curve.js';\n\n// NIST secp256r1 aka p256\n// https://www.secg.org/sec2-v2.pdf, https://neuromancer.sk/std/nist/P-256\n\nconst Fp = Field(BigInt('0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff'));\nconst CURVE_A = Fp.create(BigInt('-3'));\nconst CURVE_B = BigInt('0x5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b');\n\n// prettier-ignore\nexport const p256 = createCurve({\n a: CURVE_A, // Equation params: a, b\n b: CURVE_B,\n Fp, // Field: 2n**224n * (2n**32n-1n) + 2n**192n + 2n**96n-1n\n // Curve order, total count of valid points in the field\n n: BigInt('0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551'),\n // Base (generator) point (x, y)\n Gx: BigInt('0x6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296'),\n Gy: BigInt('0x4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5'),\n h: BigInt(1),\n lowS: false,\n} as const, sha256);\nexport const secp256r1 = p256;\n\nconst mapSWU = /* @__PURE__ */ (() =>\n mapToCurveSimpleSWU(Fp, {\n A: CURVE_A,\n B: CURVE_B,\n Z: Fp.create(BigInt('-10')),\n }))();\n\nconst htf = /* @__PURE__ */ (() =>\n createHasher(secp256r1.ProjectivePoint, (scalars: bigint[]) => mapSWU(scalars[0]), {\n DST: 'P256_XMD:SHA-256_SSWU_RO_',\n encodeDST: 'P256_XMD:SHA-256_SSWU_NU_',\n p: Fp.ORDER,\n m: 1,\n k: 128,\n expand: 'xmd',\n hash: sha256,\n }))();\nexport const hashToCurve = /* @__PURE__ */ (() => htf.hashToCurve)();\nexport const encodeToCurve = /* @__PURE__ */ (() => htf.encodeToCurve)();\n","import { ValidateChallengeSignatureParams } from \"./types\";\nimport { Buffer } from \"buffer\";\nimport { unwrapDER } from \"@dfinity/identity\";\nimport { sha256 } from \"@noble/hashes/sha256\";\nimport { p256 } from \"@noble/curves/p256\";\n\nexport const ECDSA_P256_OID = Uint8Array.from([\n ...[0x30, 0x13], // SEQUENCE\n ...[0x06, 0x07], // OID with 7 bytes\n ...[0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01], // OID ECDSA\n ...[0x06, 0x08], // OID with 8 bytes\n ...[0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07], // OID P-256\n]);\n\nexport const isECDSASignatureValid = async ({\n publicKey,\n signature,\n challenge,\n}: ValidateChallengeSignatureParams): Promise =>\n p256.verify(\n Buffer.from(signature).toString(\"hex\"),\n Buffer.from(sha256(new Uint8Array(challenge))).toString(\"hex\"),\n Buffer.from(unwrapDER(publicKey, ECDSA_P256_OID)).toString(\"hex\"),\n );\n","/*! noble-ed25519 - MIT License (c) 2019 Paul Miller (paulmillr.com) */\nconst P = 2n ** 255n - 19n; // ed25519 is twisted edwards curve\nconst N = 2n ** 252n + 27742317777372353535851937790883648493n; // curve's (group) order\nconst Gx = 0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51an; // base point x\nconst Gy = 0x6666666666666666666666666666666666666666666666666666666666666658n; // base point y\nconst CURVE = {\n a: -1n,\n d: 37095705934669439343138083508754565189542113879843219016388785533085940283555n,\n p: P, n: N, h: 8, Gx, Gy // field prime, curve (group) order, cofactor\n};\nconst err = (m = '') => { throw new Error(m); }; // error helper, messes-up stack trace\nconst str = (s) => typeof s === 'string'; // is string\nconst au8 = (a, l) => // is Uint8Array (of specific length)\n !(a instanceof Uint8Array) || (typeof l === 'number' && l > 0 && a.length !== l) ?\n err('Uint8Array expected') : a;\nconst u8n = (data) => new Uint8Array(data); // creates Uint8Array\nconst toU8 = (a, len) => au8(str(a) ? h2b(a) : u8n(a), len); // norm(hex/u8a) to u8a\nconst mod = (a, b = P) => { let r = a % b; return r >= 0n ? r : b + r; }; // mod division\nconst isPoint = (p) => (p instanceof Point ? p : err('Point expected')); // is xyzt point\nlet Gpows = undefined; // precomputes for base point G\nclass Point {\n constructor(ex, ey, ez, et) {\n this.ex = ex;\n this.ey = ey;\n this.ez = ez;\n this.et = et;\n }\n static fromAffine(p) { return new Point(p.x, p.y, 1n, mod(p.x * p.y)); }\n static fromHex(hex, strict = true) {\n const { d } = CURVE;\n hex = toU8(hex, 32);\n const normed = hex.slice(); // copy the array to not mess it up\n normed[31] = hex[31] & ~0x80; // adjust first LE byte = last BE byte\n const y = b2n_LE(normed); // decode as little-endian, convert to num\n if (y === 0n) { // y=0 is valid, proceed\n }\n else {\n if (strict && !(0n < y && y < P))\n err('bad y coord 1'); // strict=true [1..P-1]\n if (!strict && !(0n < y && y < 2n ** 256n))\n err('bad y coord 2'); // strict=false [1..2^256-1]\n }\n const y2 = mod(y * y); // y²\n const u = mod(y2 - 1n); // u=y²-1\n const v = mod(d * y2 + 1n); // v=dy²+1\n let { isValid, value: x } = uvRatio(u, v); // (uv³)(uv⁷)^(p-5)/8; square root\n if (!isValid)\n err('bad y coordinate 3'); // not square root: bad point\n const isXOdd = (x & 1n) === 1n; // adjust sign of x coordinate\n const isHeadOdd = (hex[31] & 0x80) !== 0;\n if (isHeadOdd !== isXOdd)\n x = mod(-x);\n return new Point(x, y, 1n, mod(x * y)); // Z=1, T=xy\n }\n get x() { return this.toAffine().x; } // .x, .y will call expensive toAffine.\n get y() { return this.toAffine().y; } // Should be used with care.\n equals(other) {\n const { ex: X1, ey: Y1, ez: Z1 } = this;\n const { ex: X2, ey: Y2, ez: Z2 } = isPoint(other); // isPoint() checks class equality\n const X1Z2 = mod(X1 * Z2), X2Z1 = mod(X2 * Z1);\n const Y1Z2 = mod(Y1 * Z2), Y2Z1 = mod(Y2 * Z1);\n return X1Z2 === X2Z1 && Y1Z2 === Y2Z1;\n }\n is0() { return this.equals(I); }\n negate() {\n return new Point(mod(-this.ex), this.ey, this.ez, mod(-this.et));\n }\n double() {\n const { ex: X1, ey: Y1, ez: Z1 } = this; // Cost: 4M + 4S + 1*a + 6add + 1*2\n const { a } = CURVE; // https://hyperelliptic.org/EFD/g1p/auto-twisted-extended.html#doubling-dbl-2008-hwcd\n const A = mod(X1 * X1);\n const B = mod(Y1 * Y1);\n const C = mod(2n * mod(Z1 * Z1));\n const D = mod(a * A);\n const x1y1 = X1 + Y1;\n const E = mod(mod(x1y1 * x1y1) - A - B);\n const G = D + B;\n const F = G - C;\n const H = D - B;\n const X3 = mod(E * F);\n const Y3 = mod(G * H);\n const T3 = mod(E * H);\n const Z3 = mod(F * G);\n return new Point(X3, Y3, Z3, T3);\n }\n add(other) {\n const { ex: X1, ey: Y1, ez: Z1, et: T1 } = this; // Cost: 8M + 1*k + 8add + 1*2.\n const { ex: X2, ey: Y2, ez: Z2, et: T2 } = isPoint(other); // doesn't check if other on-curve\n const { a, d } = CURVE; // http://hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html#addition-add-2008-hwcd-3\n const A = mod(X1 * X2);\n const B = mod(Y1 * Y2);\n const C = mod(T1 * d * T2);\n const D = mod(Z1 * Z2);\n const E = mod((X1 + Y1) * (X2 + Y2) - A - B);\n const F = mod(D - C);\n const G = mod(D + C);\n const H = mod(B - a * A);\n const X3 = mod(E * F);\n const Y3 = mod(G * H);\n const T3 = mod(E * H);\n const Z3 = mod(F * G);\n return new Point(X3, Y3, Z3, T3);\n }\n mul(n, safe = true) {\n if (n === 0n)\n return safe === true ? err('cannot multiply by 0') : I;\n if (!(typeof n === 'bigint' && 0n < n && n < N))\n err('invalid scalar, must be < L');\n if (!safe && this.is0() || n === 1n)\n return this; // safe=true bans 0. safe=false allows 0.\n if (this.equals(G))\n return wNAF(n).p; // use wNAF precomputes for base points\n let p = I, f = G; // init result point & fake point\n for (let d = this; n > 0n; d = d.double(), n >>= 1n) { // double-and-add ladder\n if (n & 1n)\n p = p.add(d); // if bit is present, add to point\n else if (safe)\n f = f.add(d); // if not, add to fake for timing safety\n }\n return p;\n }\n multiply(scalar) { return this.mul(scalar); } // Aliases for compatibilty\n clearCofactor() { return this.mul(BigInt(CURVE.h), false); } // multiply by cofactor\n isSmallOrder() { return this.clearCofactor().is0(); } // check if P is small order\n isTorsionFree() {\n let p = this.mul(N / 2n, false).double(); // ensures the point is not \"bad\".\n if (N % 2n)\n p = p.add(this); // P^(N+1) // P*N == (P*(N/2))*2+P\n return p.is0();\n }\n toAffine() {\n const { ex: x, ey: y, ez: z } = this; // (x, y, z, t) ∋ (x=x/z, y=y/z, t=xy)\n if (this.is0())\n return { x: 0n, y: 0n }; // fast-path for zero point\n const iz = invert(z); // z^-1: invert z\n if (mod(z * iz) !== 1n)\n err('invalid inverse'); // (z * z^-1) must be 1, otherwise bad math\n return { x: mod(x * iz), y: mod(y * iz) }; // x = x*z^-1; y = y*z^-1\n }\n toRawBytes() {\n const { x, y } = this.toAffine(); // convert to affine 2d point\n const b = n2b_32LE(y); // encode number to 32 bytes\n b[31] |= x & 1n ? 0x80 : 0; // store sign in first LE byte\n return b;\n }\n toHex() { return b2h(this.toRawBytes()); } // encode to hex string\n}\nPoint.BASE = new Point(Gx, Gy, 1n, mod(Gx * Gy)); // Generator / Base point\nPoint.ZERO = new Point(0n, 1n, 1n, 0n); // Identity / Zero point\nconst { BASE: G, ZERO: I } = Point; // Generator, identity points\nconst padh = (num, pad) => num.toString(16).padStart(pad, '0');\nconst b2h = (b) => Array.from(b).map(e => padh(e, 2)).join(''); // bytes to hex\nconst h2b = (hex) => {\n const l = hex.length; // error if not string,\n if (!str(hex) || l % 2)\n err('hex invalid 1'); // or has odd length like 3, 5.\n const arr = u8n(l / 2); // create result array\n for (let i = 0; i < arr.length; i++) {\n const j = i * 2;\n const h = hex.slice(j, j + 2); // hexByte. slice is faster than substr\n const b = Number.parseInt(h, 16); // byte, created from string part\n if (Number.isNaN(b) || b < 0)\n err('hex invalid 2'); // byte must be valid 0 <= byte < 256\n arr[i] = b;\n }\n return arr;\n};\nconst n2b_32LE = (num) => h2b(padh(num, 32 * 2)).reverse(); // number to bytes LE\nconst b2n_LE = (b) => BigInt('0x' + b2h(u8n(au8(b)).reverse())); // bytes LE to num\nconst concatB = (...arrs) => {\n const r = u8n(arrs.reduce((sum, a) => sum + au8(a).length, 0)); // create u8a of summed length\n let pad = 0; // walk through each array,\n arrs.forEach(a => { r.set(a, pad); pad += a.length; }); // ensure they have proper type\n return r;\n};\nconst invert = (num, md = P) => {\n if (num === 0n || md <= 0n)\n err('no inverse n=' + num + ' mod=' + md); // no neg exponent for now\n let a = mod(num, md), b = md, x = 0n, y = 1n, u = 1n, v = 0n;\n while (a !== 0n) { // uses euclidean gcd algorithm\n const q = b / a, r = b % a; // not constant-time\n const m = x - u * q, n = y - v * q;\n b = a, a = r, x = u, y = v, u = m, v = n;\n }\n return b === 1n ? mod(x, md) : err('no inverse'); // b is gcd at this point\n};\nconst pow2 = (x, power) => {\n let r = x;\n while (power-- > 0n) {\n r *= r;\n r %= P;\n }\n return r;\n};\nconst pow_2_252_3 = (x) => {\n const x2 = (x * x) % P; // x^2, bits 1\n const b2 = (x2 * x) % P; // x^3, bits 11\n const b4 = (pow2(b2, 2n) * b2) % P; // x^(2^4-1), bits 1111\n const b5 = (pow2(b4, 1n) * x) % P; // x^(2^5-1), bits 11111\n const b10 = (pow2(b5, 5n) * b5) % P; // x^(2^10)\n const b20 = (pow2(b10, 10n) * b10) % P; // x^(2^20)\n const b40 = (pow2(b20, 20n) * b20) % P; // x^(2^40)\n const b80 = (pow2(b40, 40n) * b40) % P; // x^(2^80)\n const b160 = (pow2(b80, 80n) * b80) % P; // x^(2^160)\n const b240 = (pow2(b160, 80n) * b80) % P; // x^(2^240)\n const b250 = (pow2(b240, 10n) * b10) % P; // x^(2^250)\n const pow_p_5_8 = (pow2(b250, 2n) * x) % P; // < To pow to (p+3)/8, multiply it by x.\n return { pow_p_5_8, b2 };\n};\nconst RM1 = 19681161376707505956807079304988542015446066515923890162744021073123829784752n; // √-1\nconst uvRatio = (u, v) => {\n const v3 = mod(v * v * v); // v³\n const v7 = mod(v3 * v3 * v); // v⁷\n const pow = pow_2_252_3(u * v7).pow_p_5_8; // (uv⁷)^(p-5)/8\n let x = mod(u * v3 * pow); // (uv³)(uv⁷)^(p-5)/8\n const vx2 = mod(v * x * x); // vx²\n const root1 = x; // First root candidate\n const root2 = mod(x * RM1); // Second root candidate; RM1 is √-1\n const useRoot1 = vx2 === u; // If vx² = u (mod p), x is a square root\n const useRoot2 = vx2 === mod(-u); // If vx² = -u, set x <-- x * 2^((p-1)/4)\n const noRoot = vx2 === mod(-u * RM1); // There is no valid root, vx² = -u√-1\n if (useRoot1)\n x = root1;\n if (useRoot2 || noRoot)\n x = root2; // We return root2 anyway, for const-time\n if ((mod(x) & 1n) === 1n)\n x = mod(-x); // edIsNegative\n return { isValid: useRoot1 || useRoot2, value: x };\n};\nconst modL_LE = (hash) => mod(b2n_LE(hash), N); // modulo L; but little-endian\nlet _shaS;\nconst sha512a = (...m) => etc.sha512Async(...m); // Async SHA512\nconst sha512s = (...m) => // Sync SHA512, not set by default\n typeof _shaS === 'function' ? _shaS(...m) : err('etc.sha512Sync not set');\nconst hash2extK = (hashed) => {\n const head = hashed.slice(0, 32); // slice creates a copy, unlike subarray\n head[0] &= 248; // Clamp bits: 0b1111_1000,\n head[31] &= 127; // 0b0111_1111,\n head[31] |= 64; // 0b0100_0000\n const prefix = hashed.slice(32, 64); // private key \"prefix\"\n const scalar = modL_LE(head); // modular division over curve order\n const point = G.mul(scalar); // public key point\n const pointBytes = point.toRawBytes(); // point serialized to Uint8Array\n return { head, prefix, scalar, point, pointBytes };\n};\n// RFC8032 5.1.5; getPublicKey async, sync. Hash priv key and extract point.\nconst getExtendedPublicKeyAsync = (priv) => sha512a(toU8(priv, 32)).then(hash2extK);\nconst getExtendedPublicKey = (priv) => hash2extK(sha512s(toU8(priv, 32)));\nconst getPublicKeyAsync = (priv) => getExtendedPublicKeyAsync(priv).then(p => p.pointBytes);\nconst getPublicKey = (priv) => getExtendedPublicKey(priv).pointBytes;\nfunction hashFinish(asynchronous, res) {\n if (asynchronous)\n return sha512a(res.hashable).then(res.finish);\n return res.finish(sha512s(res.hashable));\n}\nconst _sign = (e, rBytes, msg) => {\n const { pointBytes: P, scalar: s } = e;\n const r = modL_LE(rBytes); // r was created outside, reduce it modulo L\n const R = G.mul(r).toRawBytes(); // R = [r]B\n const hashable = concatB(R, P, msg); // dom2(F, C) || R || A || PH(M)\n const finish = (hashed) => {\n const S = mod(r + modL_LE(hashed) * s, N); // S = (r + k * s) mod L; 0 <= s < l\n return au8(concatB(R, n2b_32LE(S)), 64); // 64-byte sig: 32b R.x + 32b LE(S)\n };\n return { hashable, finish };\n};\nconst signAsync = async (msg, privKey) => {\n const m = toU8(msg); // RFC8032 5.1.6: sign msg with key async\n const e = await getExtendedPublicKeyAsync(privKey); // pub,prfx\n const rBytes = await sha512a(e.prefix, m); // r = SHA512(dom2(F, C) || prefix || PH(M))\n return hashFinish(true, _sign(e, rBytes, m)); // gen R, k, S, then 64-byte signature\n};\nconst sign = (msg, privKey) => {\n const m = toU8(msg); // RFC8032 5.1.6: sign msg with key sync\n const e = getExtendedPublicKey(privKey); // pub,prfx\n const rBytes = sha512s(e.prefix, m); // r = SHA512(dom2(F, C) || prefix || PH(M))\n return hashFinish(false, _sign(e, rBytes, m)); // gen R, k, S, then 64-byte signature\n};\nconst _verify = (sig, msg, pub) => {\n msg = toU8(msg); // Message hex str/Bytes\n sig = toU8(sig, 64); // Signature hex str/Bytes, must be 64 bytes\n const A = Point.fromHex(pub, false); // public key A decoded\n const R = Point.fromHex(sig.slice(0, 32), false); // 0 <= R < 2^256: ZIP215 R can be >= P\n const s = b2n_LE(sig.slice(32, 64)); // Decode second half as an integer S\n const SB = G.mul(s, false); // in the range 0 <= s < L\n const hashable = concatB(R.toRawBytes(), A.toRawBytes(), msg); // dom2(F, C) || R || A || PH(M)\n const finish = (hashed) => {\n const k = modL_LE(hashed); // decode in little-endian, modulo L\n const RkA = R.add(A.mul(k, false)); // [8]R + [8][k]A'\n return RkA.add(SB.negate()).clearCofactor().is0(); // [8][S]B = [8]R + [8][k]A'\n };\n return { hashable, finish };\n};\n// RFC8032 5.1.7: verification async, sync\nconst verifyAsync = async (s, m, p) => hashFinish(true, _verify(s, m, p));\nconst verify = (s, m, p) => hashFinish(false, _verify(s, m, p));\nconst cr = () => // We support: 1) browsers 2) node.js 19+\n typeof globalThis === 'object' && 'crypto' in globalThis ? globalThis.crypto : undefined;\nconst etc = {\n bytesToHex: b2h, hexToBytes: h2b, concatBytes: concatB,\n mod, invert,\n randomBytes: (len) => {\n const crypto = cr(); // Can be shimmed in node.js <= 18 to prevent error:\n // import { webcrypto } from 'node:crypto';\n // if (!globalThis.crypto) globalThis.crypto = webcrypto;\n if (!crypto)\n err('crypto.getRandomValues must be defined');\n return crypto.getRandomValues(u8n(len));\n },\n sha512Async: async (...messages) => {\n const crypto = cr();\n if (!crypto)\n err('crypto.subtle or etc.sha512Async must be defined');\n const m = concatB(...messages);\n return u8n(await crypto.subtle.digest('SHA-512', m.buffer));\n },\n sha512Sync: undefined, // Actual logic below\n};\nObject.defineProperties(etc, { sha512Sync: {\n configurable: false, get() { return _shaS; }, set(f) { if (!_shaS)\n _shaS = f; },\n } });\nconst utils = {\n getExtendedPublicKeyAsync, getExtendedPublicKey,\n randomPrivateKey: () => etc.randomBytes(32),\n precompute(w = 8, p = G) { p.multiply(3n); return p; }, // no-op\n};\nconst W = 8; // Precomputes-related code. W = window size\nconst precompute = () => {\n const points = []; // 10x sign(), 2x verify(). To achieve this,\n const windows = 256 / W + 1; // app needs to spend 40ms+ to calculate\n let p = G, b = p; // a lot of points related to base point G.\n for (let w = 0; w < windows; w++) { // Points are stored in array and used\n b = p; // any time Gx multiplication is done.\n points.push(b); // They consume 16-32 MiB of RAM.\n for (let i = 1; i < 2 ** (W - 1); i++) {\n b = b.add(p);\n points.push(b);\n }\n p = b.double(); // Precomputes don't speed-up getSharedKey,\n } // which multiplies user point by scalar,\n return points; // when precomputes are using base point\n};\nconst wNAF = (n) => {\n // Compared to other point mult methods,\n const comp = Gpows || (Gpows = precompute()); // stores 2x less points using subtraction\n const neg = (cnd, p) => { let n = p.negate(); return cnd ? n : p; }; // negate\n let p = I, f = G; // f must be G, or could become I in the end\n const windows = 1 + 256 / W; // W=8 17 windows\n const wsize = 2 ** (W - 1); // W=8 128 window size\n const mask = BigInt(2 ** W - 1); // W=8 will create mask 0b11111111\n const maxNum = 2 ** W; // W=8 256\n const shiftBy = BigInt(W); // W=8 8\n for (let w = 0; w < windows; w++) {\n const off = w * wsize;\n let wbits = Number(n & mask); // extract W bits.\n n >>= shiftBy; // shift number by W bits.\n if (wbits > wsize) {\n wbits -= maxNum;\n n += 1n;\n } // split if bits > max: +224 => 256-32\n const off1 = off, off2 = off + Math.abs(wbits) - 1; // offsets, evaluate both\n const cnd1 = w % 2 !== 0, cnd2 = wbits < 0; // conditions, evaluate both\n if (wbits === 0) {\n f = f.add(neg(cnd1, comp[off1])); // bits are 0: add garbage to fake point\n }\n else { // ^ can't add off2, off2 = I\n p = p.add(neg(cnd2, comp[off2])); // bits are 1: add to result point\n }\n }\n return { p, f }; // return both real and fake points for JIT\n}; // !! you can disable precomputes by commenting-out call of the wNAF() inside Point#mul()\nexport { getPublicKey, getPublicKeyAsync, sign, verify, // Remove the export to easily use in REPL\nsignAsync, verifyAsync, CURVE, etc, utils, Point as ExtendedPoint }; // envs like browser console\n","const U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\n\n// We are not using BigUint64Array, because they are extremely slow as per 2022\nfunction fromBig(n: bigint, le = false) {\n if (le) return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\n\nfunction split(lst: bigint[], le = false) {\n let Ah = new Uint32Array(lst.length);\n let Al = new Uint32Array(lst.length);\n for (let i = 0; i < lst.length; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\n\nconst toBig = (h: number, l: number) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h: number, _l: number, s: number) => h >>> s;\nconst shrSL = (h: number, l: number, s: number) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h: number, l: number, s: number) => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h: number, l: number, s: number) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h: number, l: number, s: number) => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h: number, l: number, s: number) => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h: number, l: number) => l;\nconst rotr32L = (h: number, _l: number) => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h: number, l: number, s: number) => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h: number, l: number, s: number) => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h: number, l: number, s: number) => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h: number, l: number, s: number) => (h << (s - 32)) | (l >>> (64 - s));\n\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(Ah: number, Al: number, Bh: number, Bl: number) {\n const l = (Al >>> 0) + (Bl >>> 0);\n return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al: number, Bl: number, Cl: number) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low: number, Ah: number, Bh: number, Ch: number) =>\n (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al: number, Bl: number, Cl: number, Dl: number) =>\n (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low: number, Ah: number, Bh: number, Ch: number, Dh: number) =>\n (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al: number, Bl: number, Cl: number, Dl: number, El: number) =>\n (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low: number, Ah: number, Bh: number, Ch: number, Dh: number, Eh: number) =>\n (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n\n// prettier-ignore\nexport {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\n// prettier-ignore\nconst u64 = {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n","import { SHA2 } from './_sha2.js';\nimport u64 from './_u64.js';\nimport { wrapConstructor } from './utils.js';\n\n// Round contants (first 32 bits of the fractional parts of the cube roots of the first 80 primes 2..409):\n// prettier-ignore\nconst [SHA512_Kh, SHA512_Kl] = /* @__PURE__ */ (() => u64.split([\n '0x428a2f98d728ae22', '0x7137449123ef65cd', '0xb5c0fbcfec4d3b2f', '0xe9b5dba58189dbbc',\n '0x3956c25bf348b538', '0x59f111f1b605d019', '0x923f82a4af194f9b', '0xab1c5ed5da6d8118',\n '0xd807aa98a3030242', '0x12835b0145706fbe', '0x243185be4ee4b28c', '0x550c7dc3d5ffb4e2',\n '0x72be5d74f27b896f', '0x80deb1fe3b1696b1', '0x9bdc06a725c71235', '0xc19bf174cf692694',\n '0xe49b69c19ef14ad2', '0xefbe4786384f25e3', '0x0fc19dc68b8cd5b5', '0x240ca1cc77ac9c65',\n '0x2de92c6f592b0275', '0x4a7484aa6ea6e483', '0x5cb0a9dcbd41fbd4', '0x76f988da831153b5',\n '0x983e5152ee66dfab', '0xa831c66d2db43210', '0xb00327c898fb213f', '0xbf597fc7beef0ee4',\n '0xc6e00bf33da88fc2', '0xd5a79147930aa725', '0x06ca6351e003826f', '0x142929670a0e6e70',\n '0x27b70a8546d22ffc', '0x2e1b21385c26c926', '0x4d2c6dfc5ac42aed', '0x53380d139d95b3df',\n '0x650a73548baf63de', '0x766a0abb3c77b2a8', '0x81c2c92e47edaee6', '0x92722c851482353b',\n '0xa2bfe8a14cf10364', '0xa81a664bbc423001', '0xc24b8b70d0f89791', '0xc76c51a30654be30',\n '0xd192e819d6ef5218', '0xd69906245565a910', '0xf40e35855771202a', '0x106aa07032bbd1b8',\n '0x19a4c116b8d2d0c8', '0x1e376c085141ab53', '0x2748774cdf8eeb99', '0x34b0bcb5e19b48a8',\n '0x391c0cb3c5c95a63', '0x4ed8aa4ae3418acb', '0x5b9cca4f7763e373', '0x682e6ff3d6b2b8a3',\n '0x748f82ee5defb2fc', '0x78a5636f43172f60', '0x84c87814a1f0ab72', '0x8cc702081a6439ec',\n '0x90befffa23631e28', '0xa4506cebde82bde9', '0xbef9a3f7b2c67915', '0xc67178f2e372532b',\n '0xca273eceea26619c', '0xd186b8c721c0c207', '0xeada7dd6cde0eb1e', '0xf57d4f7fee6ed178',\n '0x06f067aa72176fba', '0x0a637dc5a2c898a6', '0x113f9804bef90dae', '0x1b710b35131c471b',\n '0x28db77f523047d84', '0x32caab7b40c72493', '0x3c9ebe0a15c9bebc', '0x431d67c49c100d4c',\n '0x4cc5d4becb3e42b6', '0x597f299cfc657e2a', '0x5fcb6fab3ad6faec', '0x6c44198c4a475817'\n].map(n => BigInt(n))))();\n\n// Temporary buffer, not used to store anything between runs\nconst SHA512_W_H = /* @__PURE__ */ new Uint32Array(80);\nconst SHA512_W_L = /* @__PURE__ */ new Uint32Array(80);\nexport class SHA512 extends SHA2 {\n // We cannot use array here since array allows indexing by variable which means optimizer/compiler cannot use registers.\n // Also looks cleaner and easier to verify with spec.\n // Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):\n // h -- high 32 bits, l -- low 32 bits\n Ah = 0x6a09e667 | 0;\n Al = 0xf3bcc908 | 0;\n Bh = 0xbb67ae85 | 0;\n Bl = 0x84caa73b | 0;\n Ch = 0x3c6ef372 | 0;\n Cl = 0xfe94f82b | 0;\n Dh = 0xa54ff53a | 0;\n Dl = 0x5f1d36f1 | 0;\n Eh = 0x510e527f | 0;\n El = 0xade682d1 | 0;\n Fh = 0x9b05688c | 0;\n Fl = 0x2b3e6c1f | 0;\n Gh = 0x1f83d9ab | 0;\n Gl = 0xfb41bd6b | 0;\n Hh = 0x5be0cd19 | 0;\n Hl = 0x137e2179 | 0;\n\n constructor() {\n super(128, 64, 16, false);\n }\n // prettier-ignore\n protected get(): [\n number, number, number, number, number, number, number, number,\n number, number, number, number, number, number, number, number\n ] {\n const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl];\n }\n // prettier-ignore\n protected set(\n Ah: number, Al: number, Bh: number, Bl: number, Ch: number, Cl: number, Dh: number, Dl: number,\n Eh: number, El: number, Fh: number, Fl: number, Gh: number, Gl: number, Hh: number, Hl: number\n ) {\n this.Ah = Ah | 0;\n this.Al = Al | 0;\n this.Bh = Bh | 0;\n this.Bl = Bl | 0;\n this.Ch = Ch | 0;\n this.Cl = Cl | 0;\n this.Dh = Dh | 0;\n this.Dl = Dl | 0;\n this.Eh = Eh | 0;\n this.El = El | 0;\n this.Fh = Fh | 0;\n this.Fl = Fl | 0;\n this.Gh = Gh | 0;\n this.Gl = Gl | 0;\n this.Hh = Hh | 0;\n this.Hl = Hl | 0;\n }\n protected process(view: DataView, offset: number) {\n // Extend the first 16 words into the remaining 64 words w[16..79] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4) {\n SHA512_W_H[i] = view.getUint32(offset);\n SHA512_W_L[i] = view.getUint32((offset += 4));\n }\n for (let i = 16; i < 80; i++) {\n // s0 := (w[i-15] rightrotate 1) xor (w[i-15] rightrotate 8) xor (w[i-15] rightshift 7)\n const W15h = SHA512_W_H[i - 15] | 0;\n const W15l = SHA512_W_L[i - 15] | 0;\n const s0h = u64.rotrSH(W15h, W15l, 1) ^ u64.rotrSH(W15h, W15l, 8) ^ u64.shrSH(W15h, W15l, 7);\n const s0l = u64.rotrSL(W15h, W15l, 1) ^ u64.rotrSL(W15h, W15l, 8) ^ u64.shrSL(W15h, W15l, 7);\n // s1 := (w[i-2] rightrotate 19) xor (w[i-2] rightrotate 61) xor (w[i-2] rightshift 6)\n const W2h = SHA512_W_H[i - 2] | 0;\n const W2l = SHA512_W_L[i - 2] | 0;\n const s1h = u64.rotrSH(W2h, W2l, 19) ^ u64.rotrBH(W2h, W2l, 61) ^ u64.shrSH(W2h, W2l, 6);\n const s1l = u64.rotrSL(W2h, W2l, 19) ^ u64.rotrBL(W2h, W2l, 61) ^ u64.shrSL(W2h, W2l, 6);\n // SHA256_W[i] = s0 + s1 + SHA256_W[i - 7] + SHA256_W[i - 16];\n const SUMl = u64.add4L(s0l, s1l, SHA512_W_L[i - 7], SHA512_W_L[i - 16]);\n const SUMh = u64.add4H(SUMl, s0h, s1h, SHA512_W_H[i - 7], SHA512_W_H[i - 16]);\n SHA512_W_H[i] = SUMh | 0;\n SHA512_W_L[i] = SUMl | 0;\n }\n let { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n // Compression function main loop, 80 rounds\n for (let i = 0; i < 80; i++) {\n // S1 := (e rightrotate 14) xor (e rightrotate 18) xor (e rightrotate 41)\n const sigma1h = u64.rotrSH(Eh, El, 14) ^ u64.rotrSH(Eh, El, 18) ^ u64.rotrBH(Eh, El, 41);\n const sigma1l = u64.rotrSL(Eh, El, 14) ^ u64.rotrSL(Eh, El, 18) ^ u64.rotrBL(Eh, El, 41);\n //const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const CHIh = (Eh & Fh) ^ (~Eh & Gh);\n const CHIl = (El & Fl) ^ (~El & Gl);\n // T1 = H + sigma1 + Chi(E, F, G) + SHA512_K[i] + SHA512_W[i]\n // prettier-ignore\n const T1ll = u64.add5L(Hl, sigma1l, CHIl, SHA512_Kl[i], SHA512_W_L[i]);\n const T1h = u64.add5H(T1ll, Hh, sigma1h, CHIh, SHA512_Kh[i], SHA512_W_H[i]);\n const T1l = T1ll | 0;\n // S0 := (a rightrotate 28) xor (a rightrotate 34) xor (a rightrotate 39)\n const sigma0h = u64.rotrSH(Ah, Al, 28) ^ u64.rotrBH(Ah, Al, 34) ^ u64.rotrBH(Ah, Al, 39);\n const sigma0l = u64.rotrSL(Ah, Al, 28) ^ u64.rotrBL(Ah, Al, 34) ^ u64.rotrBL(Ah, Al, 39);\n const MAJh = (Ah & Bh) ^ (Ah & Ch) ^ (Bh & Ch);\n const MAJl = (Al & Bl) ^ (Al & Cl) ^ (Bl & Cl);\n Hh = Gh | 0;\n Hl = Gl | 0;\n Gh = Fh | 0;\n Gl = Fl | 0;\n Fh = Eh | 0;\n Fl = El | 0;\n ({ h: Eh, l: El } = u64.add(Dh | 0, Dl | 0, T1h | 0, T1l | 0));\n Dh = Ch | 0;\n Dl = Cl | 0;\n Ch = Bh | 0;\n Cl = Bl | 0;\n Bh = Ah | 0;\n Bl = Al | 0;\n const All = u64.add3L(T1l, sigma0l, MAJl);\n Ah = u64.add3H(All, T1h, sigma0h, MAJh);\n Al = All | 0;\n }\n // Add the compressed chunk to the current hash value\n ({ h: Ah, l: Al } = u64.add(this.Ah | 0, this.Al | 0, Ah | 0, Al | 0));\n ({ h: Bh, l: Bl } = u64.add(this.Bh | 0, this.Bl | 0, Bh | 0, Bl | 0));\n ({ h: Ch, l: Cl } = u64.add(this.Ch | 0, this.Cl | 0, Ch | 0, Cl | 0));\n ({ h: Dh, l: Dl } = u64.add(this.Dh | 0, this.Dl | 0, Dh | 0, Dl | 0));\n ({ h: Eh, l: El } = u64.add(this.Eh | 0, this.El | 0, Eh | 0, El | 0));\n ({ h: Fh, l: Fl } = u64.add(this.Fh | 0, this.Fl | 0, Fh | 0, Fl | 0));\n ({ h: Gh, l: Gl } = u64.add(this.Gh | 0, this.Gl | 0, Gh | 0, Gl | 0));\n ({ h: Hh, l: Hl } = u64.add(this.Hh | 0, this.Hl | 0, Hh | 0, Hl | 0));\n this.set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl);\n }\n protected roundClean() {\n SHA512_W_H.fill(0);\n SHA512_W_L.fill(0);\n }\n destroy() {\n this.buffer.fill(0);\n this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n }\n}\n\nclass SHA512_224 extends SHA512 {\n // h -- high 32 bits, l -- low 32 bits\n Ah = 0x8c3d37c8 | 0;\n Al = 0x19544da2 | 0;\n Bh = 0x73e19966 | 0;\n Bl = 0x89dcd4d6 | 0;\n Ch = 0x1dfab7ae | 0;\n Cl = 0x32ff9c82 | 0;\n Dh = 0x679dd514 | 0;\n Dl = 0x582f9fcf | 0;\n Eh = 0x0f6d2b69 | 0;\n El = 0x7bd44da8 | 0;\n Fh = 0x77e36f73 | 0;\n Fl = 0x04c48942 | 0;\n Gh = 0x3f9d85a8 | 0;\n Gl = 0x6a1d36c8 | 0;\n Hh = 0x1112e6ad | 0;\n Hl = 0x91d692a1 | 0;\n\n constructor() {\n super();\n this.outputLen = 28;\n }\n}\n\nclass SHA512_256 extends SHA512 {\n // h -- high 32 bits, l -- low 32 bits\n Ah = 0x22312194 | 0;\n Al = 0xfc2bf72c | 0;\n Bh = 0x9f555fa3 | 0;\n Bl = 0xc84c64c2 | 0;\n Ch = 0x2393b86b | 0;\n Cl = 0x6f53b151 | 0;\n Dh = 0x96387719 | 0;\n Dl = 0x5940eabd | 0;\n Eh = 0x96283ee2 | 0;\n El = 0xa88effe3 | 0;\n Fh = 0xbe5e1e25 | 0;\n Fl = 0x53863992 | 0;\n Gh = 0x2b0199fc | 0;\n Gl = 0x2c85b8aa | 0;\n Hh = 0x0eb72ddc | 0;\n Hl = 0x81c52ca2 | 0;\n\n constructor() {\n super();\n this.outputLen = 32;\n }\n}\n\nclass SHA384 extends SHA512 {\n // h -- high 32 bits, l -- low 32 bits\n Ah = 0xcbbb9d5d | 0;\n Al = 0xc1059ed8 | 0;\n Bh = 0x629a292a | 0;\n Bl = 0x367cd507 | 0;\n Ch = 0x9159015a | 0;\n Cl = 0x3070dd17 | 0;\n Dh = 0x152fecd8 | 0;\n Dl = 0xf70e5939 | 0;\n Eh = 0x67332667 | 0;\n El = 0xffc00b31 | 0;\n Fh = 0x8eb44a87 | 0;\n Fl = 0x68581511 | 0;\n Gh = 0xdb0c2e0d | 0;\n Gl = 0x64f98fa7 | 0;\n Hh = 0x47b5481d | 0;\n Hl = 0xbefa4fa4 | 0;\n\n constructor() {\n super();\n this.outputLen = 48;\n }\n}\n\nexport const sha512 = /* @__PURE__ */ wrapConstructor(() => new SHA512());\nexport const sha512_224 = /* @__PURE__ */ wrapConstructor(() => new SHA512_224());\nexport const sha512_256 = /* @__PURE__ */ wrapConstructor(() => new SHA512_256());\nexport const sha384 = /* @__PURE__ */ wrapConstructor(() => new SHA384());\n","import * as ed from \"@noble/ed25519\";\nimport { sha512 } from \"@noble/hashes/sha512\";\nimport { ValidateChallengeSignatureParams } from \"./types\";\nimport { Buffer } from \"buffer\";\nimport { ED25519_OID, unwrapDER } from \"@dfinity/identity\";\n\ned.etc.sha512Sync = (...m) => sha512(ed.etc.concatBytes(...m));\n\nexport const isEd25519SignatureValid = async ({\n publicKey,\n signature,\n challenge,\n}: ValidateChallengeSignatureParams): Promise =>\n ed.verifyAsync(\n Buffer.from(signature).toString(\"hex\"),\n Buffer.from(challenge).toString(\"hex\"),\n Buffer.from(unwrapDER(publicKey, ED25519_OID)).toString(\"hex\"),\n );\n\nexport { ED25519_OID } from \"@dfinity/identity\";\n","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { sha256 } from '@noble/hashes/sha256';\nimport { randomBytes } from '@noble/hashes/utils';\nimport { Field, mod, pow2 } from './abstract/modular.js';\nimport { ProjPointType as PointType, mapToCurveSimpleSWU } from './abstract/weierstrass.js';\nimport type { Hex, PrivKey } from './abstract/utils.js';\nimport { bytesToNumberBE, concatBytes, ensureBytes, numberToBytesBE } from './abstract/utils.js';\nimport { createHasher, isogenyMap } from './abstract/hash-to-curve.js';\nimport { createCurve } from './_shortw_utils.js';\n\nconst secp256k1P = BigInt('0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f');\nconst secp256k1N = BigInt('0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141');\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst divNearest = (a: bigint, b: bigint) => (a + b / _2n) / b;\n\n/**\n * √n = n^((p+1)/4) for fields p = 3 mod 4. We unwrap the loop and multiply bit-by-bit.\n * (P+1n/4n).toString(2) would produce bits [223x 1, 0, 22x 1, 4x 0, 11, 00]\n */\nfunction sqrtMod(y: bigint): bigint {\n const P = secp256k1P;\n // prettier-ignore\n const _3n = BigInt(3), _6n = BigInt(6), _11n = BigInt(11), _22n = BigInt(22);\n // prettier-ignore\n const _23n = BigInt(23), _44n = BigInt(44), _88n = BigInt(88);\n const b2 = (y * y * y) % P; // x^3, 11\n const b3 = (b2 * b2 * y) % P; // x^7\n const b6 = (pow2(b3, _3n, P) * b3) % P;\n const b9 = (pow2(b6, _3n, P) * b3) % P;\n const b11 = (pow2(b9, _2n, P) * b2) % P;\n const b22 = (pow2(b11, _11n, P) * b11) % P;\n const b44 = (pow2(b22, _22n, P) * b22) % P;\n const b88 = (pow2(b44, _44n, P) * b44) % P;\n const b176 = (pow2(b88, _88n, P) * b88) % P;\n const b220 = (pow2(b176, _44n, P) * b44) % P;\n const b223 = (pow2(b220, _3n, P) * b3) % P;\n const t1 = (pow2(b223, _23n, P) * b22) % P;\n const t2 = (pow2(t1, _6n, P) * b2) % P;\n const root = pow2(t2, _2n, P);\n if (!Fp.eql(Fp.sqr(root), y)) throw new Error('Cannot find square root');\n return root;\n}\n\nconst Fp = Field(secp256k1P, undefined, undefined, { sqrt: sqrtMod });\n\nexport const secp256k1 = createCurve(\n {\n a: BigInt(0), // equation params: a, b\n b: BigInt(7), // Seem to be rigid: bitcointalk.org/index.php?topic=289795.msg3183975#msg3183975\n Fp, // Field's prime: 2n**256n - 2n**32n - 2n**9n - 2n**8n - 2n**7n - 2n**6n - 2n**4n - 1n\n n: secp256k1N, // Curve order, total count of valid points in the field\n // Base point (x, y) aka generator point\n Gx: BigInt('55066263022277343669578718895168534326250603453777594175500187360389116729240'),\n Gy: BigInt('32670510020758816978083085130507043184471273380659243275938904335757337482424'),\n h: BigInt(1), // Cofactor\n lowS: true, // Allow only low-S signatures by default in sign() and verify()\n /**\n * secp256k1 belongs to Koblitz curves: it has efficiently computable endomorphism.\n * Endomorphism uses 2x less RAM, speeds up precomputation by 2x and ECDH / key recovery by 20%.\n * For precomputed wNAF it trades off 1/2 init time & 1/3 ram for 20% perf hit.\n * Explanation: https://gist.github.com/paulmillr/eb670806793e84df628a7c434a873066\n */\n endo: {\n beta: BigInt('0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee'),\n splitScalar: (k: bigint) => {\n const n = secp256k1N;\n const a1 = BigInt('0x3086d221a7d46bcde86c90e49284eb15');\n const b1 = -_1n * BigInt('0xe4437ed6010e88286f547fa90abfe4c3');\n const a2 = BigInt('0x114ca50f7a8e2f3f657c1108d9d44cfd8');\n const b2 = a1;\n const POW_2_128 = BigInt('0x100000000000000000000000000000000'); // (2n**128n).toString(16)\n\n const c1 = divNearest(b2 * k, n);\n const c2 = divNearest(-b1 * k, n);\n let k1 = mod(k - c1 * a1 - c2 * a2, n);\n let k2 = mod(-c1 * b1 - c2 * b2, n);\n const k1neg = k1 > POW_2_128;\n const k2neg = k2 > POW_2_128;\n if (k1neg) k1 = n - k1;\n if (k2neg) k2 = n - k2;\n if (k1 > POW_2_128 || k2 > POW_2_128) {\n throw new Error('splitScalar: Endomorphism failed, k=' + k);\n }\n return { k1neg, k1, k2neg, k2 };\n },\n },\n },\n sha256\n);\n\n// Schnorr signatures are superior to ECDSA from above. Below is Schnorr-specific BIP0340 code.\n// https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki\nconst _0n = BigInt(0);\nconst fe = (x: bigint) => typeof x === 'bigint' && _0n < x && x < secp256k1P;\nconst ge = (x: bigint) => typeof x === 'bigint' && _0n < x && x < secp256k1N;\n/** An object mapping tags to their tagged hash prefix of [SHA256(tag) | SHA256(tag)] */\nconst TAGGED_HASH_PREFIXES: { [tag: string]: Uint8Array } = {};\nfunction taggedHash(tag: string, ...messages: Uint8Array[]): Uint8Array {\n let tagP = TAGGED_HASH_PREFIXES[tag];\n if (tagP === undefined) {\n const tagH = sha256(Uint8Array.from(tag, (c) => c.charCodeAt(0)));\n tagP = concatBytes(tagH, tagH);\n TAGGED_HASH_PREFIXES[tag] = tagP;\n }\n return sha256(concatBytes(tagP, ...messages));\n}\n\n// ECDSA compact points are 33-byte. Schnorr is 32: we strip first byte 0x02 or 0x03\nconst pointToBytes = (point: PointType) => point.toRawBytes(true).slice(1);\nconst numTo32b = (n: bigint) => numberToBytesBE(n, 32);\nconst modP = (x: bigint) => mod(x, secp256k1P);\nconst modN = (x: bigint) => mod(x, secp256k1N);\nconst Point = secp256k1.ProjectivePoint;\nconst GmulAdd = (Q: PointType, a: bigint, b: bigint) =>\n Point.BASE.multiplyAndAddUnsafe(Q, a, b);\n\n// Calculate point, scalar and bytes\nfunction schnorrGetExtPubKey(priv: PrivKey) {\n let d_ = secp256k1.utils.normPrivateKeyToScalar(priv); // same method executed in fromPrivateKey\n let p = Point.fromPrivateKey(d_); // P = d'⋅G; 0 < d' < n check is done inside\n const scalar = p.hasEvenY() ? d_ : modN(-d_);\n return { scalar: scalar, bytes: pointToBytes(p) };\n}\n/**\n * lift_x from BIP340. Convert 32-byte x coordinate to elliptic curve point.\n * @returns valid point checked for being on-curve\n */\nfunction lift_x(x: bigint): PointType {\n if (!fe(x)) throw new Error('bad x: need 0 < x < p'); // Fail if x ≥ p.\n const xx = modP(x * x);\n const c = modP(xx * x + BigInt(7)); // Let c = x³ + 7 mod p.\n let y = sqrtMod(c); // Let y = c^(p+1)/4 mod p.\n if (y % _2n !== _0n) y = modP(-y); // Return the unique point P such that x(P) = x and\n const p = new Point(x, y, _1n); // y(P) = y if y mod 2 = 0 or y(P) = p-y otherwise.\n p.assertValidity();\n return p;\n}\n/**\n * Create tagged hash, convert it to bigint, reduce modulo-n.\n */\nfunction challenge(...args: Uint8Array[]): bigint {\n return modN(bytesToNumberBE(taggedHash('BIP0340/challenge', ...args)));\n}\n\n/**\n * Schnorr public key is just `x` coordinate of Point as per BIP340.\n */\nfunction schnorrGetPublicKey(privateKey: Hex): Uint8Array {\n return schnorrGetExtPubKey(privateKey).bytes; // d'=int(sk). Fail if d'=0 or d'≥n. Ret bytes(d'⋅G)\n}\n\n/**\n * Creates Schnorr signature as per BIP340. Verifies itself before returning anything.\n * auxRand is optional and is not the sole source of k generation: bad CSPRNG won't be dangerous.\n */\nfunction schnorrSign(\n message: Hex,\n privateKey: PrivKey,\n auxRand: Hex = randomBytes(32)\n): Uint8Array {\n const m = ensureBytes('message', message);\n const { bytes: px, scalar: d } = schnorrGetExtPubKey(privateKey); // checks for isWithinCurveOrder\n const a = ensureBytes('auxRand', auxRand, 32); // Auxiliary random data a: a 32-byte array\n const t = numTo32b(d ^ bytesToNumberBE(taggedHash('BIP0340/aux', a))); // Let t be the byte-wise xor of bytes(d) and hash/aux(a)\n const rand = taggedHash('BIP0340/nonce', t, px, m); // Let rand = hash/nonce(t || bytes(P) || m)\n const k_ = modN(bytesToNumberBE(rand)); // Let k' = int(rand) mod n\n if (k_ === _0n) throw new Error('sign failed: k is zero'); // Fail if k' = 0.\n const { bytes: rx, scalar: k } = schnorrGetExtPubKey(k_); // Let R = k'⋅G.\n const e = challenge(rx, px, m); // Let e = int(hash/challenge(bytes(R) || bytes(P) || m)) mod n.\n const sig = new Uint8Array(64); // Let sig = bytes(R) || bytes((k + ed) mod n).\n sig.set(rx, 0);\n sig.set(numTo32b(modN(k + e * d)), 32);\n // If Verify(bytes(P), m, sig) (see below) returns failure, abort\n if (!schnorrVerify(sig, m, px)) throw new Error('sign: Invalid signature produced');\n return sig;\n}\n\n/**\n * Verifies Schnorr signature.\n * Will swallow errors & return false except for initial type validation of arguments.\n */\nfunction schnorrVerify(signature: Hex, message: Hex, publicKey: Hex): boolean {\n const sig = ensureBytes('signature', signature, 64);\n const m = ensureBytes('message', message);\n const pub = ensureBytes('publicKey', publicKey, 32);\n try {\n const P = lift_x(bytesToNumberBE(pub)); // P = lift_x(int(pk)); fail if that fails\n const r = bytesToNumberBE(sig.subarray(0, 32)); // Let r = int(sig[0:32]); fail if r ≥ p.\n if (!fe(r)) return false;\n const s = bytesToNumberBE(sig.subarray(32, 64)); // Let s = int(sig[32:64]); fail if s ≥ n.\n if (!ge(s)) return false;\n const e = challenge(numTo32b(r), pointToBytes(P), m); // int(challenge(bytes(r)||bytes(P)||m))%n\n const R = GmulAdd(P, s, modN(-e)); // R = s⋅G - e⋅P\n if (!R || !R.hasEvenY() || R.toAffine().x !== r) return false; // -eP == (n-e)P\n return true; // Fail if is_infinite(R) / not has_even_y(R) / x(R) ≠ r.\n } catch (error) {\n return false;\n }\n}\n\nexport const schnorr = /* @__PURE__ */ (() => ({\n getPublicKey: schnorrGetPublicKey,\n sign: schnorrSign,\n verify: schnorrVerify,\n utils: {\n randomPrivateKey: secp256k1.utils.randomPrivateKey,\n lift_x,\n pointToBytes,\n numberToBytesBE,\n bytesToNumberBE,\n taggedHash,\n mod,\n },\n}))();\n\nconst isoMap = /* @__PURE__ */ (() =>\n isogenyMap(\n Fp,\n [\n // xNum\n [\n '0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa8c7',\n '0x7d3d4c80bc321d5b9f315cea7fd44c5d595d2fc0bf63b92dfff1044f17c6581',\n '0x534c328d23f234e6e2a413deca25caece4506144037c40314ecbd0b53d9dd262',\n '0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa88c',\n ],\n // xDen\n [\n '0xd35771193d94918a9ca34ccbb7b640dd86cd409542f8487d9fe6b745781eb49b',\n '0xedadc6f64383dc1df7c4b2d51b54225406d36b641f5e41bbc52a56612a8c6d14',\n '0x0000000000000000000000000000000000000000000000000000000000000001', // LAST 1\n ],\n // yNum\n [\n '0x4bda12f684bda12f684bda12f684bda12f684bda12f684bda12f684b8e38e23c',\n '0xc75e0c32d5cb7c0fa9d0a54b12a0a6d5647ab046d686da6fdffc90fc201d71a3',\n '0x29a6194691f91a73715209ef6512e576722830a201be2018a765e85a9ecee931',\n '0x2f684bda12f684bda12f684bda12f684bda12f684bda12f684bda12f38e38d84',\n ],\n // yDen\n [\n '0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffff93b',\n '0x7a06534bb8bdb49fd5e9e6632722c2989467c1bfc8e8d978dfb425d2685c2573',\n '0x6484aa716545ca2cf3a70c3fa8fe337e0a3d21162f0d6299a7bf8192bfd2a76f',\n '0x0000000000000000000000000000000000000000000000000000000000000001', // LAST 1\n ],\n ].map((i) => i.map((j) => BigInt(j))) as [bigint[], bigint[], bigint[], bigint[]]\n ))();\nconst mapSWU = /* @__PURE__ */ (() =>\n mapToCurveSimpleSWU(Fp, {\n A: BigInt('0x3f8731abdd661adca08a5558f0f5d272e953d363cb6f0e5d405447c01a444533'),\n B: BigInt('1771'),\n Z: Fp.create(BigInt('-11')),\n }))();\nconst htf = /* @__PURE__ */ (() =>\n createHasher(\n secp256k1.ProjectivePoint,\n (scalars: bigint[]) => {\n const { x, y } = mapSWU(Fp.create(scalars[0]));\n return isoMap(x, y);\n },\n {\n DST: 'secp256k1_XMD:SHA-256_SSWU_RO_',\n encodeDST: 'secp256k1_XMD:SHA-256_SSWU_NU_',\n p: Fp.ORDER,\n m: 1,\n k: 128,\n expand: 'xmd',\n hash: sha256,\n }\n ))();\nexport const hashToCurve = /* @__PURE__ */ (() => htf.hashToCurve)();\nexport const encodeToCurve = /* @__PURE__ */ (() => htf.encodeToCurve)();\n","import { ValidateChallengeSignatureParams } from \"./types\";\nimport { Buffer } from \"buffer\";\nimport { sha256 } from \"@noble/hashes/sha256\";\nimport { unwrapDER } from \"@dfinity/identity\";\nimport { secp256k1 } from \"@noble/curves/secp256k1\";\n\nexport const SECP256K1_OID = Uint8Array.from([\n ...[0x30, 0x10], // SEQUENCE\n ...[0x06, 0x07], // OID with 7 bytes\n ...[0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01], // OID ECDSA\n ...[0x06, 0x05], // OID with 5 bytes\n ...[0x2b, 0x81, 0x04, 0x00, 0x0a], // OID secp256k1\n]);\n\nexport const isSecp256k1SignatureValid = async ({\n publicKey,\n signature,\n challenge,\n}: ValidateChallengeSignatureParams): Promise => {\n return secp256k1.verify(\n Buffer.from(signature).toString(\"hex\"),\n Buffer.from(sha256(new Uint8Array(challenge))).toString(\"hex\"),\n Buffer.from(unwrapDER(publicKey, SECP256K1_OID)).toString(\"hex\"),\n );\n};\n","import borc from \"borc\";\nimport { concat } from \"@dfinity/agent\";\n\nclass Uint8ArrayDecoder extends borc.Decoder {\n public createByteString(raw: ArrayBuffer[]): ArrayBuffer {\n return concat(...raw);\n }\n\n public createByteStringFromHeap(start: number, end: number): ArrayBuffer {\n if (start === end) {\n return new ArrayBuffer(0);\n }\n\n return new Uint8Array((this as any)._heap.slice(start, end));\n }\n}\n\nconst decodePositiveBigInt = (buf: Uint8Array): bigint => {\n const len = buf.byteLength;\n let res = BigInt(0);\n for (let i = 0; i < len; i++) {\n // tslint:disable-next-line:no-bitwise\n res = res * BigInt(0x100) + BigInt(buf[i]);\n }\n return res;\n};\n\nexport const decode = (input: ArrayBuffer): T => {\n const buffer = new Uint8Array(input);\n const decoder = new Uint8ArrayDecoder({\n size: buffer.byteLength,\n tags: {\n // Override tags 2 and 3 for BigInt support (borc supports only BigNumber).\n 2: (val) => decodePositiveBigInt(val),\n 3: (val) => -decodePositiveBigInt(val),\n 55799: (value: T): T => value,\n },\n });\n return decoder.decodeFirst(buffer);\n};\n","import { unwrapDER } from \"@dfinity/identity\";\nimport { ValidateCanisterSignatureParams } from \"./types\";\nimport { Certificate } from \"@dfinity/agent\";\nimport { Principal } from \"@dfinity/principal\";\nimport { decode } from \"../utils/cbor\";\n\nexport const CANISTER_SIGNATURE_OID = Uint8Array.from([\n ...[0x30, 0x0c], // SEQUENCE\n ...[0x06, 0x0a], // OID with 10 bytes\n ...[0x2b, 0x06, 0x01, 0x04, 0x01, 0x83, 0xb8, 0x43, 0x01, 0x02], // OID DFINITY\n]);\n\nexport const isCanisterSignatureValid = async ({\n publicKey,\n signature,\n rootKey,\n blsVerify,\n}: ValidateCanisterSignatureParams): Promise => {\n const certificate = decode(signature.slice(16)).buffer;\n const rawKey = unwrapDER(publicKey, CANISTER_SIGNATURE_OID);\n const canisterId = Principal.fromUint8Array(rawKey.slice(1, 1 + rawKey[0]));\n return (\n Certificate.create({\n certificate,\n rootKey,\n canisterId,\n blsVerify,\n })\n .then(() => true)\n // Certificate creation throws if it's invalid\n .catch(() => false)\n );\n};\n","import {\n ValidateCanisterSignatureParams,\n ValidateChallengeSignatureParams,\n} from \"./types\";\nimport { DelegationChain } from \"@dfinity/identity\";\nimport { isSignatureValid } from \"./index\";\nimport { concat, requestIdOf } from \"@dfinity/agent\";\n\nexport interface ValidateIdentitySignatureParams\n extends ValidateChallengeSignatureParams,\n ValidateCanisterSignatureParams {\n delegationChain?: DelegationChain;\n}\n\nexport const DELEGATION_DOMAIN_SEP = new TextEncoder().encode(\n \"\\x1Aic-request-auth-delegation\",\n);\n\nexport const isIdentitySignatureValid = async ({\n publicKey,\n signature,\n challenge,\n rootKey,\n delegationChain,\n}: ValidateIdentitySignatureParams): Promise => {\n // Only need to check if signature is valid\n if (!delegationChain) {\n return isSignatureValid({ publicKey, signature, challenge, rootKey });\n }\n\n // A delegation chain without delegations cannot be valid\n if (delegationChain.delegations.length === 0) {\n return false;\n }\n\n // Check if the whole delegation chain is valid by looping through it and checking one by one\n for (let i = 0; i < delegationChain.delegations.length; i++) {\n // Check expiration\n if (\n new Date(\n Number(\n delegationChain.delegations[i].delegation.expiration /\n BigInt(1000000),\n ),\n ).getTime() <= Date.now()\n ) {\n return false;\n }\n // Check if signature is valid\n if (\n !(await isSignatureValid({\n publicKey:\n i === 0\n ? publicKey\n : delegationChain.delegations[i - 1].delegation.pubkey,\n signature: delegationChain.delegations[i].signature,\n challenge: concat(\n DELEGATION_DOMAIN_SEP.buffer,\n requestIdOf(delegationChain.delegations[i].delegation),\n ),\n rootKey,\n }))\n ) {\n return false;\n }\n }\n\n // Check the validity of either the complete delegation chain or a subset of it starting from the beginning\n let signingPublicKey: ArrayBuffer | undefined;\n for (const { delegation } of delegationChain.delegations) {\n // If a delegation has targets, it's invalid as proof of ownership of the private key of the identity,\n // we check the subset before it since the delegation at the end is expected to have signed the challenge\n if (delegation.targets) {\n break;\n }\n signingPublicKey = delegation.pubkey;\n }\n\n // A valid delegation chain or subset of it could not be found\n if (!signingPublicKey) {\n return false;\n }\n\n // Check if chain up till now is a valid delegation chain for the challenge\n return isSignatureValid({\n publicKey: signingPublicKey,\n signature,\n challenge,\n rootKey,\n });\n};\n","import {\n ValidateCanisterSignatureParams,\n ValidateChallengeSignatureParams,\n} from \"./types\";\nimport { ECDSA_P256_OID, isECDSASignatureValid } from \"./p256\";\nimport { ED25519_OID, isEd25519SignatureValid } from \"./ed25519\";\nimport { isSecp256k1SignatureValid, SECP256K1_OID } from \"./secp256k1\";\nimport { compare } from \"@dfinity/agent\";\nimport { CANISTER_SIGNATURE_OID, isCanisterSignatureValid } from \"./canister\";\n\nexport const isSignatureValid = (\n params: ValidateChallengeSignatureParams & ValidateCanisterSignatureParams,\n) => {\n try {\n const publicKey = new Uint8Array(params.publicKey);\n if (publicKey[0] !== 0x30 || publicKey[2] !== 0x30) {\n return false;\n }\n const oidSequenceLength = publicKey[3];\n const oid = publicKey.slice(2, oidSequenceLength + 4);\n if (oid.byteLength !== oidSequenceLength + 2) {\n return false;\n }\n if (compare(oid, ECDSA_P256_OID.buffer) === 0) {\n return isECDSASignatureValid(params);\n }\n if (compare(oid, ED25519_OID.buffer) === 0) {\n return isEd25519SignatureValid(params);\n }\n if (compare(oid, SECP256K1_OID.buffer) === 0) {\n return isSecp256k1SignatureValid(params);\n }\n if (compare(oid, CANISTER_SIGNATURE_OID.buffer) === 0) {\n return isCanisterSignatureValid(params);\n }\n return false;\n } catch (_) {\n return false;\n }\n};\n\nexport * from \"./types\";\nexport * from \"./identity\";\nexport * from \"./p256\";\nexport * from \"./ed25519\";\nexport * from \"./secp256k1\";\nexport * from \"./canister\";\n","import {\n Agent,\n ApiQueryResponse,\n Certificate,\n compare,\n concat,\n CreateCertificateOptions,\n HttpAgent,\n Identity,\n PublicKey,\n QueryFields,\n QueryResponseStatus,\n ReadStateOptions,\n ReadStateResponse,\n requestIdOf,\n RequestStatusResponseStatus,\n Signature,\n SignIdentity,\n SubmitRequestType,\n SubmitResponse,\n} from \"@dfinity/agent\";\nimport { JsonObject, lebEncode } from \"@dfinity/candid\";\nimport {\n CanisterCallJsonRequest,\n CanisterCallJsonResponse,\n PermissionJsonRequest,\n PermissionJsonResponse,\n Transport,\n} from \"./transport\";\nimport { Buffer } from \"buffer\";\nimport { Principal } from \"@dfinity/principal\";\nimport {\n Delegation,\n DelegationChain,\n DelegationIdentity,\n isDelegationValid,\n} from \"@dfinity/identity\";\nimport { isIdentitySignatureValid } from \"./signature\";\n\nexport const ICP_NETWORK_CHAIN_ID = \"icp:737ba355e855bd4b61279056603e0550\";\nexport const ICP_NETWORK_NAME = \"Internet Computer\";\n\ninterface WalletAgentOptions {\n transport: Transport;\n crypto?: Pick;\n /**\n * Optional, used to fetch root key and make calls with delegation chain,\n * HttpAgent with default options will be used when not set\n */\n agent?: HttpAgent;\n /** Optional polyfill for BLS verify used in query requests that are upgraded to calls */\n blsVerify?: CreateCertificateOptions[\"blsVerify\"];\n /**\n * Optional, canister_call RPC calls can also be made with a signed challenge to skip the origin check,\n * also when \"delegation\" scope and public key are set in the permission request a delegation chain\n * is returned for the public key of this identity\n */\n identity?: Pick;\n}\n\nexport interface PermissionRequestParams {\n version: 1;\n appMetaData: {\n name: string;\n icon?: string;\n };\n /** Optional, will be generated by WalletAgent when not defined */\n networks?: Array<{\n chainId: string;\n name?: string;\n }>;\n scopes: Array<\"canister_call\" | \"delegation\">;\n /** Optional, will be generated by WalletAgent when not defined */\n challenge?: ArrayBuffer;\n targets?: Principal[];\n}\n\nexport interface PermissionResponseResult {\n version: 1;\n appMetaData: {\n name: string;\n icon?: string;\n };\n scopes: Array<\"canister_call\" | \"delegation\">;\n identities: Array<{\n publicKey: PublicKey;\n signature: Signature;\n ledger?: {\n subaccounts?: Array<{\n bytes: ArrayBuffer;\n name?: string;\n }>;\n };\n /**\n * Will be returned if above challenge signature was signed with a delegated public key or\n * when \"delegation\" scope and public key are set in the permission request\n */\n delegationChain?: DelegationChain;\n }>;\n}\n\nexport class WalletAgent implements Agent {\n /** Required, sender must be set to make calls */\n public sender?: Principal;\n /** Optional, if delegation is valid for the call, the call will be made with delegation instead of JSON-RPC */\n public delegationChain?: DelegationChain;\n\n private agent: HttpAgent;\n private readStateResponses: Record = {};\n private delegatedRequests: string[] = [];\n\n constructor(private options: WalletAgentOptions) {\n this.agent = options.agent ?? new HttpAgent();\n }\n\n public get rootKey() {\n return this.agent.rootKey;\n }\n\n public async permission(\n params: PermissionRequestParams,\n ): Promise {\n return new Promise(async (resolve, reject) => {\n const id = this.getCrypto().randomUUID();\n const challenge = params.challenge\n ? new Uint8Array(params.challenge)\n : this.getCrypto().getRandomValues(new Uint8Array(32));\n const listener =\n await this.options.transport.registerListener(\n async (response) => {\n if (response.id !== id) {\n return;\n }\n if (\"error\" in response) {\n reject(response.error);\n listener();\n return;\n }\n if (\"result\" in response) {\n const result: PermissionResponseResult = {\n version: response.result.version,\n appMetaData: {\n name: response.result.appMetaData.name,\n icon: response.result.appMetaData.icon,\n },\n scopes: response.result.scopes,\n identities: response.result.identities.map((identity) => {\n const derEncodedPublicKey = Buffer.from(\n identity.publicKey,\n \"base64\",\n );\n return {\n publicKey: { toDer: () => derEncodedPublicKey },\n signature: Buffer.from(identity.signature, \"base64\")\n .buffer as Signature,\n delegationChain: identity.delegationChain\n ? DelegationChain.fromDelegations(\n identity.delegationChain.map((item) => ({\n delegation: new Delegation(\n Buffer.from(item.delegation.publicKey, \"base64\"),\n BigInt(item.delegation.expiration),\n item.delegation.targets?.map((target) =>\n Principal.fromText(target),\n ),\n ),\n signature: Buffer.from(item.signature, \"base64\")\n .buffer as Signature,\n })),\n derEncodedPublicKey,\n )\n : undefined,\n ledger: identity.ledger\n ? {\n subaccounts: identity.ledger.subaccounts?.map(\n (subaccount) => ({\n bytes: Buffer.from(subaccount.bytes, \"base64\"),\n name: subaccount.name,\n }),\n ),\n }\n : undefined,\n };\n }),\n };\n const walletChallenge = new Uint8Array(\n concat(\n new TextEncoder().encode(\"\\x0Aic-wallet-challenge\").buffer,\n challenge,\n ),\n );\n // Signature validation is done one by one, so we don't have to wait for remaining identity validations\n // after an identity is found to be invalid. Since the validation is not native but runs in the JS thread,\n // running them in parallel does not make a difference in performance since JS is single threaded.\n for (const identity of result.identities) {\n if (\n !(await isIdentitySignatureValid({\n publicKey: identity.publicKey.toDer(),\n signature: identity.signature,\n challenge: walletChallenge,\n rootKey: this.rootKey,\n delegationChain: identity.delegationChain,\n }))\n ) {\n reject(\"Identity signature is invalid\");\n listener();\n return;\n }\n }\n resolve(result);\n listener();\n return;\n }\n },\n );\n await this.options.transport.send({\n id,\n jsonrpc: \"2.0\",\n method: \"permission\",\n params: {\n version: params.version,\n appMetaData: params.appMetaData,\n networks: params.networks ?? [\n {\n chainId: ICP_NETWORK_CHAIN_ID,\n name: ICP_NETWORK_NAME,\n },\n ],\n scopes: params.scopes,\n challenge: Buffer.from(challenge).toString(\"base64\"),\n publicKey: this.options.identity\n ? Buffer.from(\n this.options.identity.getPublicKey().toDer(),\n ).toString(\"base64\")\n : undefined,\n targets: params.targets\n ? params.targets.map((target) => target.toText())\n : undefined,\n },\n });\n });\n }\n\n public async call(\n canisterId: Principal | string,\n options: {\n methodName: string;\n arg: ArrayBuffer;\n effectiveCanisterId?: Principal | string;\n },\n ): Promise {\n if (\n this.delegationChain &&\n this.options.identity &&\n isDelegationValid(this.delegationChain, { scope: canisterId })\n ) {\n const submitResponse = await this.agent.call(\n canisterId,\n options,\n DelegationIdentity.fromDelegation(\n this.options.identity,\n this.delegationChain,\n ),\n );\n this.delegatedRequests.push(\n Buffer.from(submitResponse.requestId).toString(\"base64\"),\n );\n return submitResponse;\n }\n if (!this.sender) {\n throw Error(\n \"Sender is not defined, make sure to set sender after permission request\",\n );\n }\n return new Promise(async (resolve, reject) => {\n const id = this.getCrypto().randomUUID();\n const listener =\n await this.options.transport.registerListener(\n async (response) => {\n if (response.id !== id) {\n return;\n }\n if (\"error\" in response) {\n reject(response.error);\n listener();\n return;\n }\n if (\"result\" in response) {\n if (\n response.result.contentMap.request_type !==\n SubmitRequestType.Call ||\n response.result.contentMap.canister_id !==\n Principal.from(canisterId).toText() ||\n response.result.contentMap.method_name !== options.methodName ||\n compare(\n Buffer.from(response.result.contentMap.arg, \"base64\").buffer,\n options.arg,\n ) !== 0 ||\n response.result.contentMap.sender !== this.sender!.toText()\n ) {\n reject(\"Received invalid content map from wallet\");\n listener();\n return;\n }\n const requestId = requestIdOf({\n request_type: SubmitRequestType.Call,\n canister_id: Principal.from(canisterId),\n method_name: options.methodName,\n arg: options.arg,\n sender: this.sender,\n ingress_expiry: {\n toHash: () =>\n lebEncode(\n BigInt(response.result.contentMap.ingress_expiry),\n ),\n },\n ...(response.result.contentMap.nonce\n ? {\n nonce: Buffer.from(\n response.result.contentMap.nonce,\n \"base64\",\n ).buffer,\n }\n : {}),\n });\n this.readStateResponses[\n Buffer.from(requestId).toString(\"base64\")\n ] = {\n certificate: Buffer.from(response.result.certificate, \"base64\")\n .buffer,\n };\n resolve({\n requestId,\n response: {\n ok: true,\n status: 200,\n statusText: \"Call has been sent over JSON-RPC\",\n body: null,\n headers: [],\n },\n });\n listener();\n }\n },\n );\n const canisterCallSignature = requestIdOf({\n request_type: SubmitRequestType.Call,\n canister_id: Principal.from(canisterId),\n method_name: options.methodName,\n arg: options.arg,\n sender: this.sender,\n // Expiry is missing here since it's defined by the wallet making the actual call\n });\n await this.options.transport.send({\n id,\n jsonrpc: \"2.0\",\n method: \"canister_call\",\n params: {\n version: 1,\n network: {\n chainId: ICP_NETWORK_CHAIN_ID,\n name: ICP_NETWORK_NAME,\n },\n canisterId: Principal.from(canisterId).toText(),\n sender: this.sender!.toText(),\n method: options.methodName,\n arg: Buffer.from(options.arg).toString(\"base64\"),\n publicKey: this.options.identity\n ? Buffer.from(\n this.options.identity.getPublicKey().toDer(),\n ).toString(\"base64\")\n : undefined,\n signature: this.options.identity\n ? Buffer.from(\n await this.options.identity.sign(canisterCallSignature),\n ).toString(\"base64\")\n : undefined,\n },\n });\n });\n }\n\n public async fetchRootKey(): Promise {\n return this.agent.fetchRootKey();\n }\n\n public async getPrincipal(): Promise {\n return this.sender ?? Principal.anonymous();\n }\n\n public async query(\n canisterId: Principal | string,\n options: QueryFields,\n ): Promise {\n if (\n this.delegationChain &&\n this.options.identity &&\n isDelegationValid(this.delegationChain, { scope: canisterId })\n ) {\n return this.agent.query(\n canisterId,\n options,\n DelegationIdentity.fromDelegation(\n this.options.identity,\n this.delegationChain,\n ),\n );\n }\n // Upgrade query request to a call\n const submitResponse = await this.call(canisterId, options);\n const id = Buffer.from(submitResponse.requestId).toString(\"base64\");\n const state = this.readStateResponses[id];\n delete this.readStateResponses[id];\n if (this.rootKey == null) {\n throw new Error(\"Agent root key not initialized\");\n }\n const cert = await Certificate.create({\n certificate: state.certificate,\n rootKey: this.rootKey,\n canisterId: Principal.from(canisterId),\n blsVerify: this.options.blsVerify,\n });\n const path = [\n new TextEncoder().encode(\"request_status\"),\n submitResponse.requestId,\n ];\n const maybeBuf = cert.lookup([...path, new TextEncoder().encode(\"status\")]);\n const status = maybeBuf && new TextDecoder().decode(maybeBuf);\n if (status === RequestStatusResponseStatus.Replied) {\n return {\n status: QueryResponseStatus.Replied,\n reply: {\n arg: cert.lookup([...path, \"reply\"])!,\n },\n httpDetails: {\n ok: true,\n status: 200,\n statusText: \"Certificate with reply has been received over JSON-RPC\",\n headers: [],\n },\n };\n }\n throw Error(\"Certificate is missing reply\");\n }\n\n public async createReadStateRequest(\n options: ReadStateOptions,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): Promise {\n const id = this.requestIdFromReadStateOptions(options);\n if (\n id &&\n this.delegatedRequests.includes(id) &&\n this.delegationChain &&\n this.options.identity\n ) {\n return this.agent.createReadStateRequest(\n options,\n DelegationIdentity.fromDelegation(\n this.options.identity,\n this.delegationChain,\n ),\n );\n }\n }\n\n public async readState(\n canisterId: Principal | string,\n options: ReadStateOptions,\n identity?: Identity | Promise,\n // eslint-disable-next-line\n request?: any,\n ): Promise {\n const id = this.requestIdFromReadStateOptions(options);\n if (\n id &&\n this.delegatedRequests.includes(id) &&\n this.delegationChain &&\n this.options.identity\n ) {\n return this.agent.readState(\n canisterId,\n options,\n DelegationIdentity.fromDelegation(\n this.options.identity,\n this.delegationChain,\n ),\n request,\n );\n }\n if (id && id in this.readStateResponses) {\n const readStateResponse = this.readStateResponses[id];\n delete this.readStateResponses[id];\n return readStateResponse;\n }\n throw Error(\n \"Invalid read state request, request wasn't made through the WalletAgent\",\n );\n }\n\n public async status(): Promise {\n return this.agent.status();\n }\n\n private requestIdFromReadStateOptions = (\n options: ReadStateOptions,\n ): string | undefined => {\n if (options.paths.length === 1 && options.paths[0].length == 2) {\n const path = new TextDecoder().decode(options.paths[0][0]);\n if (path === \"request_status\") {\n return Buffer.from(options.paths[0][1]).toString(\"base64\");\n }\n }\n };\n\n private getCrypto(): Pick {\n return this.options.crypto ?? window.crypto;\n }\n}\n\nexport * from \"./transport\";\nexport * from \"./signature\";\n","import { Principal } from '@dfinity/principal';\nimport { RequestId } from '../request_id';\nimport { JsonObject } from '@dfinity/candid';\nimport { Identity } from '../auth';\nimport { HttpHeaderField } from './http/types';\n\n/**\n * Codes used by the replica for rejecting a message.\n * See {@link https://sdk.dfinity.org/docs/interface-spec/#reject-codes | the interface spec}.\n */\nexport enum ReplicaRejectCode {\n SysFatal = 1,\n SysTransient = 2,\n DestinationInvalid = 3,\n CanisterReject = 4,\n CanisterError = 5,\n}\n\n/**\n * Options when doing a {@link Agent.readState} call.\n */\nexport interface ReadStateOptions {\n /**\n * A list of paths to read the state of.\n */\n paths: ArrayBuffer[][];\n}\n\n/**\n *\n */\nexport type QueryResponse = QueryResponseReplied | QueryResponseRejected;\n\nexport const enum QueryResponseStatus {\n Replied = 'replied',\n Rejected = 'rejected',\n}\n\nexport interface HttpDetailsResponse {\n ok: boolean;\n status: number;\n statusText: string;\n headers: HttpHeaderField[];\n}\n\nexport type ApiQueryResponse = QueryResponse & { httpDetails: HttpDetailsResponse };\n\nexport interface QueryResponseBase {\n status: QueryResponseStatus;\n}\n\nexport interface QueryResponseReplied extends QueryResponseBase {\n status: QueryResponseStatus.Replied;\n reply: { arg: ArrayBuffer };\n}\n\nexport interface QueryResponseRejected extends QueryResponseBase {\n status: QueryResponseStatus.Rejected;\n reject_code: ReplicaRejectCode;\n reject_message: string;\n}\n\n/**\n * Options when doing a {@link Agent.query} call.\n */\nexport interface QueryFields {\n /**\n * The method name to call.\n */\n methodName: string;\n\n /**\n * A binary encoded argument. This is already encoded and will be sent as is.\n */\n arg: ArrayBuffer;\n}\n\n/**\n * Options when doing a {@link Agent.call} call.\n */\nexport interface CallOptions {\n /**\n * The method name to call.\n */\n methodName: string;\n\n /**\n * A binary encoded argument. This is already encoded and will be sent as is.\n */\n arg: ArrayBuffer;\n\n /**\n * An effective canister ID, used for routing. This should only be mentioned if\n * it's different from the canister ID.\n */\n effectiveCanisterId: Principal | string;\n}\n\nexport interface ReadStateResponse {\n certificate: ArrayBuffer;\n}\n\nexport interface SubmitResponse {\n requestId: RequestId;\n response: {\n ok: boolean;\n status: number;\n statusText: string;\n body: {\n error_code?: string;\n reject_code: number;\n reject_message: string;\n } | null;\n headers: HttpHeaderField[];\n };\n}\n\n/**\n * An Agent able to make calls and queries to a Replica.\n */\nexport interface Agent {\n readonly rootKey: ArrayBuffer | null;\n /**\n * Returns the principal ID associated with this agent (by default). It only shows\n * the principal of the default identity in the agent, which is the principal used\n * when calls don't specify it.\n */\n getPrincipal(): Promise;\n\n /**\n * Create the request for the read state call.\n * `readState` uses this internally.\n * Useful to avoid signing the same request multiple times.\n */\n createReadStateRequest?(\n options: ReadStateOptions,\n identity?: Identity,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): Promise;\n\n /**\n * Send a read state query to the replica. This includes a list of paths to return,\n * and will return a Certificate. This will only reject on communication errors,\n * but the certificate might contain less information than requested.\n * @param effectiveCanisterId A Canister ID related to this call.\n * @param options The options for this call.\n * @param identity Identity for the call. If not specified, uses the instance identity.\n * @param request The request to send in case it has already been created.\n */\n readState(\n effectiveCanisterId: Principal | string,\n options: ReadStateOptions,\n identity?: Identity,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n request?: any,\n ): Promise;\n\n call(canisterId: Principal | string, fields: CallOptions): Promise;\n\n /**\n * Query the status endpoint of the replica. This normally has a few fields that\n * corresponds to the version of the replica, its root public key, and any other\n * information made public.\n * @returns A JsonObject that is essentially a record of fields from the status\n * endpoint.\n */\n status(): Promise;\n\n /**\n * Send a query call to a canister. See\n * {@link https://sdk.dfinity.org/docs/interface-spec/#http-query | the interface spec}.\n * @param canisterId The Principal of the Canister to send the query to. Sending a query to\n * the management canister is not supported (as it has no meaning from an agent).\n * @param options Options to use to create and send the query.\n * @param identity Sender principal to use when sending the query.\n * @returns The response from the replica. The Promise will only reject when the communication\n * failed. If the query itself failed but no protocol errors happened, the response will\n * be of type QueryResponseRejected.\n */\n query(\n canisterId: Principal | string,\n options: QueryFields,\n identity?: Identity | Promise,\n ): Promise;\n\n /**\n * By default, the agent is configured to talk to the main Internet Computer,\n * and verifies responses using a hard-coded public key.\n *\n * This function will instruct the agent to ask the endpoint for its public\n * key, and use that instead. This is required when talking to a local test\n * instance, for example.\n *\n * Only use this when you are _not_ talking to the main Internet Computer,\n * otherwise you are prone to man-in-the-middle attacks! Do not call this\n * function by default.\n */\n fetchRootKey(): Promise;\n /**\n * If an application needs to invalidate an identity under certain conditions, an `Agent` may expose an `invalidateIdentity` method.\n * Invoking this method will set the inner identity used by the `Agent` to `null`.\n *\n * A use case for this would be - after a certain period of inactivity, a secure application chooses to invalidate the identity of any `HttpAgent` instances. An invalid identity can be replaced by `Agent.replaceIdentity`\n */\n invalidateIdentity?(): void;\n /**\n * If an application needs to replace an identity under certain conditions, an `Agent` may expose a `replaceIdentity` method.\n * Invoking this method will set the inner identity used by the `Agent` to a newly provided identity.\n *\n * A use case for this would be - after authenticating using `@dfinity/auth-client`, you can replace the `AnonymousIdentity` of your `Actor` with a `DelegationIdentity`.\n *\n * ```Actor.agentOf(defaultActor).replaceIdentity(await authClient.getIdentity());```\n */\n replaceIdentity?(identity: Identity): void;\n}\n","import { Principal } from '@dfinity/principal';\nimport { HttpAgentRequest } from './agent/http/types';\nimport { requestIdOf } from './request_id';\nimport { concat, toHex } from './utils/buffer';\n\nconst domainSeparator = new TextEncoder().encode('\\x0Aic-request');\n\n/**\n * A Key Pair, containing a secret and public key.\n */\nexport interface KeyPair {\n secretKey: ArrayBuffer;\n publicKey: PublicKey;\n}\n\n/**\n * A public key that is DER encoded. This is a branded ArrayBuffer.\n */\nexport type DerEncodedPublicKey = ArrayBuffer & { __derEncodedPublicKey__?: void };\n\n/**\n * A signature array buffer.\n */\nexport type Signature = ArrayBuffer & { __signature__: void };\n\n/**\n * A Public Key implementation.\n */\nexport interface PublicKey {\n // Get the public key bytes encoded with DER.\n toDer(): DerEncodedPublicKey;\n}\n\n/**\n * A General Identity object. This does not have to be a private key (for example,\n * the Anonymous identity), but it must be able to transform request.\n */\nexport interface Identity {\n /**\n * Get the principal represented by this identity. Normally should be a\n * `Principal.selfAuthenticating()`.\n */\n getPrincipal(): Principal;\n\n /**\n * Transform a request into a signed version of the request. This is done last\n * after the transforms on the body of a request. The returned object can be\n * anything, but must be serializable to CBOR.\n */\n transformRequest(request: HttpAgentRequest): Promise;\n}\n\n/**\n * An Identity that can sign blobs.\n */\nexport abstract class SignIdentity implements Identity {\n protected _principal: Principal | undefined;\n\n /**\n * Returns the public key that would match this identity's signature.\n */\n public abstract getPublicKey(): PublicKey;\n\n /**\n * Signs a blob of data, with this identity's private key.\n */\n public abstract sign(blob: ArrayBuffer): Promise;\n\n /**\n * Get the principal represented by this identity. Normally should be a\n * `Principal.selfAuthenticating()`.\n */\n public getPrincipal(): Principal {\n if (!this._principal) {\n this._principal = Principal.selfAuthenticating(new Uint8Array(this.getPublicKey().toDer()));\n }\n return this._principal;\n }\n\n /**\n * Transform a request into a signed version of the request. This is done last\n * after the transforms on the body of a request. The returned object can be\n * anything, but must be serializable to CBOR.\n * @param request - internet computer request to transform\n */\n public async transformRequest(request: HttpAgentRequest): Promise {\n const { body, ...fields } = request;\n const requestId = await requestIdOf(body);\n return {\n ...fields,\n body: {\n content: body,\n sender_pubkey: this.getPublicKey().toDer(),\n sender_sig: await this.sign(concat(domainSeparator, requestId)),\n },\n };\n }\n}\n\nexport class AnonymousIdentity implements Identity {\n public getPrincipal(): Principal {\n return Principal.anonymous();\n }\n\n public async transformRequest(request: HttpAgentRequest): Promise {\n return {\n ...request,\n body: { content: request.body },\n };\n }\n}\n\n/*\n * We need to communicate with other agents on the page about identities,\n * but those messages may need to go across boundaries where it's not possible to\n * serialize/deserialize object prototypes easily.\n * So these are lightweight, serializable objects that contain enough information to recreate\n * SignIdentities, but don't commit to having all methods of SignIdentity.\n *\n * Use Case:\n * * DOM Events that let differently-versioned components communicate to one another about\n * Identities, even if they're using slightly different versions of agent packages to\n * create/interpret them.\n */\nexport interface AnonymousIdentityDescriptor {\n type: 'AnonymousIdentity';\n}\nexport interface PublicKeyIdentityDescriptor {\n type: 'PublicKeyIdentity';\n publicKey: string;\n}\nexport type IdentityDescriptor = AnonymousIdentityDescriptor | PublicKeyIdentityDescriptor;\n\n/**\n * Create an IdentityDescriptor from a @dfinity/identity Identity\n * @param identity - identity describe in returned descriptor\n */\nexport function createIdentityDescriptor(\n identity: SignIdentity | AnonymousIdentity,\n): IdentityDescriptor {\n const identityIndicator: IdentityDescriptor =\n 'getPublicKey' in identity\n ? { type: 'PublicKeyIdentity', publicKey: toHex(identity.getPublicKey().toDer()) }\n : { type: 'AnonymousIdentity' };\n return identityIndicator;\n}\n","/**\n * Generates a random unsigned 32-bit integer between 0 and 0xffffffff\n * @returns {number} a random number\n */\nexport const randomNumber = (): number => {\n // determine whether browser crypto is available\n if (typeof window !== 'undefined' && !!window.crypto && !!window.crypto.getRandomValues) {\n const array = new Uint32Array(1);\n window.crypto.getRandomValues(array);\n return array[0];\n }\n // A second check for webcrypto, in case it is loaded under global instead of window\n if (typeof crypto !== 'undefined' && crypto.getRandomValues) {\n const array = new Uint32Array(1);\n crypto.getRandomValues(array);\n return array[0];\n }\n\n type nodeCrypto = {\n randomInt: (min: number, max: number) => number;\n };\n\n // determine whether node crypto is available\n if (typeof crypto !== 'undefined' && (crypto as unknown as nodeCrypto).randomInt) {\n return (crypto as unknown as nodeCrypto).randomInt(0, 0xffffffff);\n }\n\n // fall back to Math.random\n return Math.floor(Math.random() * 0xffffffff);\n};\n","import type { Principal } from '@dfinity/principal';\nimport { Expiry } from './transforms';\nimport { randomNumber } from '../../utils/random';\n\n/**\n * @internal\n */\nexport const enum Endpoint {\n Query = 'read',\n ReadState = 'read_state',\n Call = 'call',\n}\n\n// An HttpAgent request, before it gets encoded and sent to the server.\n// We create an empty request that we will fill later.\nexport type HttpAgentRequest =\n | HttpAgentQueryRequest\n | HttpAgentSubmitRequest\n | HttpAgentReadStateRequest;\n\nexport interface HttpAgentBaseRequest {\n readonly endpoint: Endpoint;\n request: RequestInit;\n}\n\nexport type HttpHeaderField = [string, string];\n\nexport interface HttpAgentSubmitRequest extends HttpAgentBaseRequest {\n readonly endpoint: Endpoint.Call;\n body: CallRequest;\n}\n\nexport interface HttpAgentQueryRequest extends HttpAgentBaseRequest {\n readonly endpoint: Endpoint.Query;\n body: ReadRequest;\n}\n\nexport interface HttpAgentReadStateRequest extends HttpAgentBaseRequest {\n readonly endpoint: Endpoint.ReadState;\n body: ReadRequest;\n}\n\nexport interface Signed {\n content: T;\n sender_pubkey: ArrayBuffer;\n sender_sig: ArrayBuffer;\n}\n\nexport interface UnSigned {\n content: T;\n}\n\nexport type Envelope = Signed | UnSigned;\n\nexport interface HttpAgentRequestTransformFn {\n (args: HttpAgentRequest): Promise;\n priority?: number;\n}\n\n// The fields in a \"call\" submit request.\n// tslint:disable:camel-case\nexport interface CallRequest extends Record {\n request_type: SubmitRequestType.Call;\n canister_id: Principal;\n method_name: string;\n arg: ArrayBuffer;\n sender: Uint8Array | Principal;\n ingress_expiry: Expiry;\n}\n// tslint:enable:camel-case\n\n// The types of values allowed in the `request_type` field for submit requests.\nexport enum SubmitRequestType {\n Call = 'call',\n}\n\n// The types of values allowed in the `request_type` field for read requests.\nexport const enum ReadRequestType {\n Query = 'query',\n ReadState = 'read_state',\n}\n\n// The fields in a \"query\" read request.\nexport interface QueryRequest extends Record {\n request_type: ReadRequestType.Query;\n canister_id: Principal;\n method_name: string;\n arg: ArrayBuffer;\n sender: Uint8Array | Principal;\n ingress_expiry: Expiry;\n}\n\nexport interface ReadStateRequest extends Record {\n request_type: ReadRequestType.ReadState;\n paths: ArrayBuffer[][];\n ingress_expiry: Expiry;\n sender: Uint8Array | Principal;\n}\n\nexport type ReadRequest = QueryRequest | ReadStateRequest;\n\n// A Nonce that can be used for calls.\nexport type Nonce = Uint8Array & { __nonce__: void };\n\n/**\n * Create a random Nonce, based on random values\n */\nexport function makeNonce(): Nonce {\n // Encode 128 bits.\n const buffer = new ArrayBuffer(16);\n const view = new DataView(buffer);\n const rand1 = randomNumber();\n const rand2 = randomNumber();\n const rand3 = randomNumber();\n const rand4 = randomNumber();\n\n view.setUint32(0, rand1);\n view.setUint32(4, rand2);\n view.setUint32(8, rand3);\n view.setUint32(12, rand4);\n\n return buffer as Nonce;\n}\n","import { lebEncode } from '@dfinity/candid';\nimport * as cbor from 'simple-cbor';\nimport {\n Endpoint,\n HttpAgentRequest,\n HttpAgentRequestTransformFn,\n HttpHeaderField,\n makeNonce,\n Nonce,\n} from './types';\nimport { toHex } from '../../utils/buffer';\n\nconst NANOSECONDS_PER_MILLISECONDS = BigInt(1_000_000);\n\nconst REPLICA_PERMITTED_DRIFT_MILLISECONDS = BigInt(60 * 1000);\n\nexport class Expiry {\n private readonly _value: bigint;\n\n constructor(deltaInMSec: number) {\n // Use bigint because it can overflow the maximum number allowed in a double float.\n this._value =\n (BigInt(Date.now()) + BigInt(deltaInMSec) - REPLICA_PERMITTED_DRIFT_MILLISECONDS) *\n NANOSECONDS_PER_MILLISECONDS;\n }\n\n public toCBOR(): cbor.CborValue {\n // TODO: change this to take the minimum amount of space (it always takes 8 bytes now).\n return cbor.value.u64(this._value.toString(16), 16);\n }\n\n public toHash(): ArrayBuffer {\n return lebEncode(this._value);\n }\n}\n\n/**\n * Create a Nonce transform, which takes a function that returns a Buffer, and adds it\n * as the nonce to every call requests.\n * @param nonceFn A function that returns a buffer. By default uses a semi-random method.\n */\nexport function makeNonceTransform(nonceFn: () => Nonce = makeNonce): HttpAgentRequestTransformFn {\n return async (request: HttpAgentRequest) => {\n const nonce = nonceFn();\n // Nonce needs to be inserted into the header for all requests, to enable logs to be correlated with requests.\n const headers = request.request.headers;\n // TODO: uncomment this when the http proxy supports it.\n // headers.set('X-IC-Request-ID', toHex(new Uint8Array(nonce)));\n request.request.headers = headers;\n\n // Nonce only needs to be inserted into the body for async calls, to prevent replay attacks.\n if (request.endpoint === Endpoint.Call) {\n request.body.nonce = nonceFn();\n }\n };\n}\n\n/**\n * Create a transform that adds a delay (by default 5 minutes) to the expiry.\n *\n * @param delayInMilliseconds The delay to add to the call time, in milliseconds.\n */\nexport function makeExpiryTransform(delayInMilliseconds: number): HttpAgentRequestTransformFn {\n return async (request: HttpAgentRequest) => {\n request.body.ingress_expiry = new Expiry(delayInMilliseconds);\n };\n}\n\n/**\n * Maps the default fetch headers field to the serializable HttpHeaderField.\n *\n * @param headers Fetch definition of the headers type\n * @returns array of header fields\n */\nexport function httpHeadersTransform(headers: Headers): HttpHeaderField[] {\n const headerFields: HttpHeaderField[] = [];\n headers.forEach((value, key) => {\n headerFields.push([key, value]);\n });\n return headerFields;\n}\n","import { HttpDetailsResponse } from '../api';\n\nexport class AgentHTTPResponseError extends Error {\n constructor(message: string, public readonly response: HttpDetailsResponse) {\n super(message);\n this.name = this.constructor.name;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n","import { JsonObject } from '@dfinity/candid';\nimport { Principal } from '@dfinity/principal';\nimport { AgentError } from '../../errors';\nimport { AnonymousIdentity, Identity } from '../../auth';\nimport * as cbor from '../../cbor';\nimport { requestIdOf } from '../../request_id';\nimport { fromHex } from '../../utils/buffer';\nimport {\n Agent,\n ApiQueryResponse,\n QueryFields,\n QueryResponse,\n ReadStateOptions,\n ReadStateResponse,\n SubmitResponse,\n} from '../api';\nimport { Expiry, httpHeadersTransform, makeNonceTransform } from './transforms';\nimport {\n CallRequest,\n Endpoint,\n HttpAgentRequest,\n HttpAgentRequestTransformFn,\n HttpAgentSubmitRequest,\n makeNonce,\n QueryRequest,\n ReadRequestType,\n SubmitRequestType,\n} from './types';\nimport { AgentHTTPResponseError } from './errors';\n\nexport * from './transforms';\nexport { Nonce, makeNonce } from './types';\n\nexport enum RequestStatusResponseStatus {\n Received = 'received',\n Processing = 'processing',\n Replied = 'replied',\n Rejected = 'rejected',\n Unknown = 'unknown',\n Done = 'done',\n}\n\n// Default delta for ingress expiry is 5 minutes.\nconst DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS = 5 * 60 * 1000;\n\n// Root public key for the IC, encoded as hex\nconst IC_ROOT_KEY =\n '308182301d060d2b0601040182dc7c0503010201060c2b0601040182dc7c05030201036100814' +\n 'c0e6ec71fab583b08bd81373c255c3c371b2e84863c98a4f1e08b74235d14fb5d9c0cd546d968' +\n '5f913a0c0b2cc5341583bf4b4392e467db96d65b9bb4cb717112f8472e0d5a4d14505ffd7484' +\n 'b01291091c5f87b98883463f98091a0baaae';\n\n// IC0 domain info\nconst IC0_DOMAIN = 'ic0.app';\nconst IC0_SUB_DOMAIN = '.ic0.app';\n\nconst ICP0_DOMAIN = 'icp0.io';\nconst ICP0_SUB_DOMAIN = '.icp0.io';\n\nconst ICP_API_DOMAIN = 'icp-api.io';\nconst ICP_API_SUB_DOMAIN = '.icp-api.io';\n\nclass HttpDefaultFetchError extends AgentError {\n constructor(public readonly message: string) {\n super(message);\n }\n}\nexport class IdentityInvalidError extends AgentError {\n constructor(public readonly message: string) {\n super(message);\n }\n}\n\n// HttpAgent options that can be used at construction.\nexport interface HttpAgentOptions {\n // Another HttpAgent to inherit configuration (pipeline and fetch) of. This\n // is only used at construction.\n source?: HttpAgent;\n\n // A surrogate to the global fetch function. Useful for testing.\n fetch?: typeof fetch;\n\n // Additional options to pass along to fetch. Will not override fields that\n // the agent already needs to set\n // Should follow the RequestInit interface, but we intentially support non-standard fields\n fetchOptions?: Record;\n\n // Additional options to pass along to fetch for the call API.\n callOptions?: Record;\n\n // The host to use for the client. By default, uses the same host as\n // the current page.\n host?: string;\n\n // The principal used to send messages. This cannot be empty at the request\n // time (will throw).\n identity?: Identity | Promise;\n\n credentials?: {\n name: string;\n password?: string;\n };\n /**\n * Prevents the agent from providing a unique {@link Nonce} with each call.\n * Enabling may cause rate limiting of identical requests\n * at the boundary nodes.\n *\n * To add your own nonce generation logic, you can use the following:\n * @example\n * import {makeNonceTransform, makeNonce} from '@dfinity/agent';\n * const agent = new HttpAgent({ disableNonce: true });\n * agent.addTransform(makeNonceTransform(makeNonce);\n * @default false\n */\n disableNonce?: boolean;\n /**\n * Number of times to retry requests before throwing an error\n * @default 3\n */\n retryTimes?: number;\n}\n\nfunction getDefaultFetch(): typeof fetch {\n let defaultFetch;\n\n if (typeof window !== 'undefined') {\n // Browser context\n if (window.fetch) {\n defaultFetch = window.fetch.bind(window);\n } else {\n throw new HttpDefaultFetchError(\n 'Fetch implementation was not available. You appear to be in a browser context, but window.fetch was not present.',\n );\n }\n } else if (typeof global !== 'undefined') {\n // Node context\n if (global.fetch) {\n defaultFetch = global.fetch.bind(global);\n } else {\n throw new HttpDefaultFetchError(\n 'Fetch implementation was not available. You appear to be in a Node.js context, but global.fetch was not available.',\n );\n }\n } else if (typeof self !== 'undefined') {\n if (self.fetch) {\n defaultFetch = self.fetch.bind(self);\n }\n }\n\n if (defaultFetch) {\n return defaultFetch;\n }\n throw new HttpDefaultFetchError(\n 'Fetch implementation was not available. Please provide fetch to the HttpAgent constructor, or ensure it is available in the window or global context.',\n );\n}\n\n// A HTTP agent allows users to interact with a client of the internet computer\n// using the available methods. It exposes an API that closely follows the\n// public view of the internet computer, and is not intended to be exposed\n// directly to the majority of users due to its low-level interface.\n//\n// There is a pipeline to apply transformations to the request before sending\n// it to the client. This is to decouple signature, nonce generation and\n// other computations so that this class can stay as simple as possible while\n// allowing extensions.\nexport class HttpAgent implements Agent {\n public rootKey = fromHex(IC_ROOT_KEY);\n private readonly _pipeline: HttpAgentRequestTransformFn[] = [];\n private _identity: Promise | null;\n private readonly _fetch: typeof fetch;\n private readonly _fetchOptions?: Record;\n private readonly _callOptions?: Record;\n private _timeDiffMsecs = 0;\n private readonly _host: URL;\n private readonly _credentials: string | undefined;\n private _rootKeyFetched = false;\n private readonly _retryTimes; // Retry requests N times before erroring by default\n public readonly _isAgent = true;\n\n constructor(options: HttpAgentOptions = {}) {\n if (options.source) {\n if (!(options.source instanceof HttpAgent)) {\n throw new Error(\"An Agent's source can only be another HttpAgent\");\n }\n this._pipeline = [...options.source._pipeline];\n this._identity = options.source._identity;\n this._fetch = options.source._fetch;\n this._host = options.source._host;\n this._credentials = options.source._credentials;\n } else {\n this._fetch = options.fetch || getDefaultFetch() || fetch.bind(global);\n this._fetchOptions = options.fetchOptions;\n this._callOptions = options.callOptions;\n }\n if (options.host !== undefined) {\n if (!options.host.match(/^[a-z]+:/) && typeof window !== 'undefined') {\n this._host = new URL(window.location.protocol + '//' + options.host);\n } else {\n this._host = new URL(options.host);\n }\n } else if (options.source !== undefined) {\n // Safe to ignore here.\n this._host = options.source._host;\n } else {\n const location = typeof window !== 'undefined' ? window.location : undefined;\n if (!location) {\n this._host = new URL('https://icp-api.io');\n console.warn(\n 'Could not infer host from window.location, defaulting to mainnet gateway of https://icp-api.io. Please provide a host to the HttpAgent constructor to avoid this warning.',\n );\n }\n // Mainnet and local will have the api route available\n const knownHosts = ['ic0.app', 'icp0.io', 'localhost', '127.0.0.1'];\n const hostname = location?.hostname;\n let knownHost;\n if (hostname && typeof hostname === 'string') {\n knownHost = knownHosts.find(host => hostname.endsWith(host));\n }\n\n if (location && knownHost) {\n // If the user is on a boundary-node provided host, we can use the same host for the agent\n this._host = new URL(\n `${location.protocol}//${knownHost}${location.port ? ':' + location.port : ''}`,\n );\n } else {\n this._host = new URL('https://icp-api.io');\n console.warn(\n 'Could not infer host from window.location, defaulting to mainnet gateway of https://icp-api.io. Please provide a host to the HttpAgent constructor to avoid this warning.',\n );\n }\n }\n // Default is 3, only set from option if greater or equal to 0\n this._retryTimes =\n options.retryTimes !== undefined && options.retryTimes >= 0 ? options.retryTimes : 3;\n // Rewrite to avoid redirects\n if (this._host.hostname.endsWith(IC0_SUB_DOMAIN)) {\n this._host.hostname = IC0_DOMAIN;\n } else if (this._host.hostname.endsWith(ICP0_SUB_DOMAIN)) {\n this._host.hostname = ICP0_DOMAIN;\n } else if (this._host.hostname.endsWith(ICP_API_SUB_DOMAIN)) {\n this._host.hostname = ICP_API_DOMAIN;\n }\n\n if (options.credentials) {\n const { name, password } = options.credentials;\n this._credentials = `${name}${password ? ':' + password : ''}`;\n }\n this._identity = Promise.resolve(options.identity || new AnonymousIdentity());\n\n // Add a nonce transform to ensure calls are unique\n if (!options.disableNonce) {\n this.addTransform(makeNonceTransform(makeNonce));\n }\n }\n\n public isLocal(): boolean {\n const hostname = this._host.hostname;\n return hostname === '127.0.0.1' || hostname.endsWith('localhost');\n }\n\n public addTransform(fn: HttpAgentRequestTransformFn, priority = fn.priority || 0): void {\n // Keep the pipeline sorted at all time, by priority.\n const i = this._pipeline.findIndex(x => (x.priority || 0) < priority);\n this._pipeline.splice(i >= 0 ? i : this._pipeline.length, 0, Object.assign(fn, { priority }));\n }\n\n public async getPrincipal(): Promise {\n if (!this._identity) {\n throw new IdentityInvalidError(\n \"This identity has expired due this application's security policy. Please refresh your authentication.\",\n );\n }\n return (await this._identity).getPrincipal();\n }\n\n public async call(\n canisterId: Principal | string,\n options: {\n methodName: string;\n arg: ArrayBuffer;\n effectiveCanisterId?: Principal | string;\n },\n identity?: Identity | Promise,\n ): Promise {\n const id = await (identity !== undefined ? await identity : await this._identity);\n if (!id) {\n throw new IdentityInvalidError(\n \"This identity has expired due this application's security policy. Please refresh your authentication.\",\n );\n }\n const canister = Principal.from(canisterId);\n const ecid = options.effectiveCanisterId\n ? Principal.from(options.effectiveCanisterId)\n : canister;\n\n const sender: Principal = id.getPrincipal() || Principal.anonymous();\n\n let ingress_expiry = new Expiry(DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS);\n\n // If the value is off by more than 30 seconds, reconcile system time with the network\n if (Math.abs(this._timeDiffMsecs) > 1_000 * 30) {\n ingress_expiry = new Expiry(DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS + this._timeDiffMsecs);\n }\n\n const submit: CallRequest = {\n request_type: SubmitRequestType.Call,\n canister_id: canister,\n method_name: options.methodName,\n arg: options.arg,\n sender,\n ingress_expiry,\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let transformedRequest: any = (await this._transform({\n request: {\n body: null,\n method: 'POST',\n headers: {\n 'Content-Type': 'application/cbor',\n ...(this._credentials ? { Authorization: 'Basic ' + btoa(this._credentials) } : {}),\n },\n },\n endpoint: Endpoint.Call,\n body: submit,\n })) as HttpAgentSubmitRequest;\n\n // Apply transform for identity.\n transformedRequest = await id.transformRequest(transformedRequest);\n\n const body = cbor.encode(transformedRequest.body);\n\n // Run both in parallel. The fetch is quite expensive, so we have plenty of time to\n // calculate the requestId locally.\n const request = this._requestAndRetry(() =>\n this._fetch('' + new URL(`/api/v2/canister/${ecid.toText()}/call`, this._host), {\n ...this._callOptions,\n ...transformedRequest.request,\n body,\n }),\n );\n\n const [response, requestId] = await Promise.all([request, requestIdOf(submit)]);\n\n const responseBuffer = await response.arrayBuffer();\n const responseBody = (\n response.status === 200 && responseBuffer.byteLength > 0 ? cbor.decode(responseBuffer) : null\n ) as SubmitResponse['response']['body'];\n\n return {\n requestId,\n response: {\n ok: response.ok,\n status: response.status,\n statusText: response.statusText,\n body: responseBody,\n headers: httpHeadersTransform(response.headers),\n },\n };\n }\n\n private async _requestAndRetry(request: () => Promise, tries = 0): Promise {\n const response = await request();\n if (response.ok) {\n return response;\n }\n\n const responseText = await response.clone().text();\n const errorMessage =\n `Server returned an error:\\n` +\n ` Code: ${response.status} (${response.statusText})\\n` +\n ` Body: ${responseText}\\n`;\n\n if (this._retryTimes > tries) {\n console.warn(errorMessage + ` Retrying request.`);\n return await this._requestAndRetry(request, tries + 1);\n }\n\n throw new AgentHTTPResponseError(errorMessage, {\n ok: response.ok,\n status: response.status,\n statusText: response.statusText,\n headers: httpHeadersTransform(response.headers),\n });\n }\n\n public async query(\n canisterId: Principal | string,\n fields: QueryFields,\n identity?: Identity | Promise,\n ): Promise {\n const id = await (identity !== undefined ? await identity : await this._identity);\n if (!id) {\n throw new IdentityInvalidError(\n \"This identity has expired due this application's security policy. Please refresh your authentication.\",\n );\n }\n\n const canister = typeof canisterId === 'string' ? Principal.fromText(canisterId) : canisterId;\n const sender = id?.getPrincipal() || Principal.anonymous();\n\n const request: QueryRequest = {\n request_type: ReadRequestType.Query,\n canister_id: canister,\n method_name: fields.methodName,\n arg: fields.arg,\n sender,\n ingress_expiry: new Expiry(DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS),\n };\n\n // TODO: remove this any. This can be a Signed or UnSigned request.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let transformedRequest: any = await this._transform({\n request: {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/cbor',\n ...(this._credentials ? { Authorization: 'Basic ' + btoa(this._credentials) } : {}),\n },\n },\n endpoint: Endpoint.Query,\n body: request,\n });\n\n // Apply transform for identity.\n transformedRequest = await id?.transformRequest(transformedRequest);\n\n const body = cbor.encode(transformedRequest.body);\n const response = await this._requestAndRetry(() =>\n this._fetch('' + new URL(`/api/v2/canister/${canister.toText()}/query`, this._host), {\n ...this._fetchOptions,\n ...transformedRequest.request,\n body,\n }),\n );\n\n const queryResponse: QueryResponse = cbor.decode(await response.arrayBuffer());\n\n return {\n ...queryResponse,\n httpDetails: {\n ok: response.ok,\n status: response.status,\n statusText: response.statusText,\n headers: httpHeadersTransform(response.headers),\n },\n };\n }\n\n public async createReadStateRequest(\n fields: ReadStateOptions,\n identity?: Identity | Promise,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): Promise {\n const id = await (identity !== undefined ? await identity : await this._identity);\n if (!id) {\n throw new IdentityInvalidError(\n \"This identity has expired due this application's security policy. Please refresh your authentication.\",\n );\n }\n const sender = id?.getPrincipal() || Principal.anonymous();\n\n // TODO: remove this any. This can be a Signed or UnSigned request.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const transformedRequest: any = await this._transform({\n request: {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/cbor',\n ...(this._credentials ? { Authorization: 'Basic ' + btoa(this._credentials) } : {}),\n },\n },\n endpoint: Endpoint.ReadState,\n body: {\n request_type: ReadRequestType.ReadState,\n paths: fields.paths,\n sender,\n ingress_expiry: new Expiry(DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS),\n },\n });\n\n // Apply transform for identity.\n return id?.transformRequest(transformedRequest);\n }\n\n public async readState(\n canisterId: Principal | string,\n fields: ReadStateOptions,\n identity?: Identity | Promise,\n // eslint-disable-next-line\n request?: any,\n ): Promise {\n const canister = typeof canisterId === 'string' ? Principal.fromText(canisterId) : canisterId;\n\n const transformedRequest = request ?? (await this.createReadStateRequest(fields, identity));\n const body = cbor.encode(transformedRequest.body);\n\n // TODO - https://dfinity.atlassian.net/browse/SDK-1092\n const response = await this._requestAndRetry(() =>\n this._fetch('' + new URL(`/api/v2/canister/${canister}/read_state`, this._host), {\n ...this._fetchOptions,\n ...transformedRequest.request,\n body,\n }),\n );\n\n if (!response.ok) {\n throw new Error(\n `Server returned an error:\\n` +\n ` Code: ${response.status} (${response.statusText})\\n` +\n ` Body: ${await response.text()}\\n`,\n );\n }\n return cbor.decode(await response.arrayBuffer());\n }\n\n /**\n * Allows agent to sync its time with the network. Can be called during intialization or mid-lifecycle if the device's clock has drifted away from the network time. This is necessary to set the Expiry for a request\n * @param {Principal} canisterId - Pass a canister ID if you need to sync the time with a particular replica. Uses the management canister by default\n */\n public async syncTime(canisterId?: Principal): Promise {\n const CanisterStatus = await import('../../canisterStatus');\n const callTime = Date.now();\n try {\n if (!canisterId) {\n console.log(\n 'Syncing time with the IC. No canisterId provided, so falling back to ryjl3-tyaaa-aaaaa-aaaba-cai',\n );\n }\n const status = await CanisterStatus.request({\n // Fall back with canisterId of the ICP Ledger\n canisterId: canisterId ?? Principal.from('ryjl3-tyaaa-aaaaa-aaaba-cai'),\n agent: this,\n paths: ['time'],\n });\n\n const replicaTime = status.get('time');\n if (replicaTime) {\n this._timeDiffMsecs = Number(replicaTime as any) - Number(callTime);\n }\n } catch (error) {\n console.error('Caught exception while attempting to sync time:', error);\n }\n }\n\n public async status(): Promise {\n const headers: Record = this._credentials\n ? {\n Authorization: 'Basic ' + btoa(this._credentials),\n }\n : {};\n\n const response = await this._requestAndRetry(() =>\n this._fetch('' + new URL(`/api/v2/status`, this._host), { headers, ...this._fetchOptions }),\n );\n\n return cbor.decode(await response.arrayBuffer());\n }\n\n public async fetchRootKey(): Promise {\n if (!this._rootKeyFetched) {\n // Hex-encoded version of the replica root key\n this.rootKey = ((await this.status()) as any).root_key;\n this._rootKeyFetched = true;\n }\n return this.rootKey;\n }\n\n public invalidateIdentity(): void {\n this._identity = null;\n }\n\n public replaceIdentity(identity: Identity): void {\n this._identity = Promise.resolve(identity);\n }\n\n protected _transform(request: HttpAgentRequest): Promise {\n let p = Promise.resolve(request);\n\n for (const fn of this._pipeline) {\n p = p.then(r => fn(r).then(r2 => r2 || r));\n }\n\n return p;\n }\n}\n","import { JsonObject } from '@dfinity/candid';\nimport {\n Agent,\n ApiQueryResponse,\n CallOptions,\n QueryFields,\n QueryResponse,\n ReadStateOptions,\n ReadStateResponse,\n SubmitResponse,\n} from './api';\nimport { Principal } from '@dfinity/principal';\n\nexport enum ProxyMessageKind {\n Error = 'err',\n GetPrincipal = 'gp',\n GetPrincipalResponse = 'gpr',\n Query = 'q',\n QueryResponse = 'qr',\n Call = 'c',\n CallResponse = 'cr',\n ReadState = 'rs',\n ReadStateResponse = 'rsr',\n Status = 's',\n StatusResponse = 'sr',\n}\n\nexport interface ProxyMessageBase {\n id: number;\n type: ProxyMessageKind;\n}\n\nexport interface ProxyMessageError extends ProxyMessageBase {\n type: ProxyMessageKind.Error;\n error: any;\n}\n\nexport interface ProxyMessageGetPrincipal extends ProxyMessageBase {\n type: ProxyMessageKind.GetPrincipal;\n}\n\nexport interface ProxyMessageGetPrincipalResponse extends ProxyMessageBase {\n type: ProxyMessageKind.GetPrincipalResponse;\n response: string;\n}\n\nexport interface ProxyMessageQuery extends ProxyMessageBase {\n type: ProxyMessageKind.Query;\n args: [string, QueryFields];\n}\n\nexport interface ProxyMessageQueryResponse extends ProxyMessageBase {\n type: ProxyMessageKind.QueryResponse;\n response: QueryResponse;\n}\n\nexport interface ProxyMessageCall extends ProxyMessageBase {\n type: ProxyMessageKind.Call;\n args: [string, CallOptions];\n}\n\nexport interface ProxyMessageCallResponse extends ProxyMessageBase {\n type: ProxyMessageKind.CallResponse;\n response: SubmitResponse;\n}\n\nexport interface ProxyMessageReadState extends ProxyMessageBase {\n type: ProxyMessageKind.ReadState;\n args: [string, ReadStateOptions];\n}\n\nexport interface ProxyMessageReadStateResponse extends ProxyMessageBase {\n type: ProxyMessageKind.ReadStateResponse;\n response: ReadStateResponse;\n}\n\nexport interface ProxyMessageStatus extends ProxyMessageBase {\n type: ProxyMessageKind.Status;\n}\n\nexport interface ProxyMessageStatusResponse extends ProxyMessageBase {\n type: ProxyMessageKind.StatusResponse;\n response: JsonObject;\n}\n\nexport type ProxyMessage =\n | ProxyMessageError\n | ProxyMessageGetPrincipal\n | ProxyMessageGetPrincipalResponse\n | ProxyMessageQuery\n | ProxyMessageQueryResponse\n | ProxyMessageCall\n | ProxyMessageReadState\n | ProxyMessageReadStateResponse\n | ProxyMessageCallResponse\n | ProxyMessageStatus\n | ProxyMessageStatusResponse;\n\n// A Stub Agent that forwards calls to another Agent implementation.\nexport class ProxyStubAgent {\n constructor(private _frontend: (msg: ProxyMessage) => void, private _agent: Agent) {}\n\n public onmessage(msg: ProxyMessage): void {\n switch (msg.type) {\n case ProxyMessageKind.GetPrincipal:\n this._agent.getPrincipal().then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.GetPrincipalResponse,\n response: response.toText(),\n });\n });\n break;\n case ProxyMessageKind.Query:\n this._agent.query(...msg.args).then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.QueryResponse,\n response,\n });\n });\n break;\n case ProxyMessageKind.Call:\n this._agent.call(...msg.args).then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.CallResponse,\n response,\n });\n });\n break;\n case ProxyMessageKind.ReadState:\n this._agent.readState(...msg.args).then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.ReadStateResponse,\n response,\n });\n });\n break;\n case ProxyMessageKind.Status:\n this._agent.status().then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.StatusResponse,\n response,\n });\n });\n break;\n\n default:\n throw new Error(`Invalid message received: ${JSON.stringify(msg)}`);\n }\n }\n}\n\n// An Agent that forwards calls to a backend. The calls are serialized\nexport class ProxyAgent implements Agent {\n private _nextId = 0;\n private _pendingCalls = new Map void, (reject: any) => void]>();\n public rootKey = null;\n\n constructor(private _backend: (msg: ProxyMessage) => void) {}\n\n public onmessage(msg: ProxyMessage): void {\n const id = msg.id;\n\n const maybePromise = this._pendingCalls.get(id);\n if (!maybePromise) {\n throw new Error('A proxy get the same message twice...');\n }\n\n this._pendingCalls.delete(id);\n const [resolve, reject] = maybePromise;\n\n switch (msg.type) {\n case ProxyMessageKind.Error:\n return reject(msg.error);\n case ProxyMessageKind.GetPrincipalResponse:\n case ProxyMessageKind.CallResponse:\n case ProxyMessageKind.QueryResponse:\n case ProxyMessageKind.ReadStateResponse:\n case ProxyMessageKind.StatusResponse:\n return resolve(msg.response);\n default:\n throw new Error(`Invalid message being sent to ProxyAgent: ${JSON.stringify(msg)}`);\n }\n }\n\n public async getPrincipal(): Promise {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.GetPrincipal,\n }).then(principal => {\n if (typeof principal !== 'string') {\n throw new Error('Invalid principal received.');\n }\n return Principal.fromText(principal);\n });\n }\n\n public readState(\n canisterId: Principal | string,\n fields: ReadStateOptions,\n ): Promise {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.ReadState,\n args: [canisterId.toString(), fields],\n }) as Promise;\n }\n\n public call(canisterId: Principal | string, fields: CallOptions): Promise {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.Call,\n args: [canisterId.toString(), fields],\n }) as Promise;\n }\n\n public status(): Promise {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.Status,\n }) as Promise;\n }\n\n public query(canisterId: Principal | string, fields: QueryFields): Promise {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.Query,\n args: [canisterId.toString(), fields],\n }) as Promise;\n }\n\n private async _sendAndWait(msg: ProxyMessage): Promise {\n return new Promise((resolve, reject) => {\n this._pendingCalls.set(msg.id, [resolve, reject]);\n\n this._backend(msg);\n });\n }\n\n public async fetchRootKey(): Promise {\n // Hex-encoded version of the replica root key\n const rootKey = ((await this.status()) as any).root_key;\n this.rootKey = rootKey;\n return rootKey;\n }\n}\n","import { GlobalInternetComputer } from '../index';\nimport { Agent } from './api';\n\nexport * from './api';\nexport * from './http';\nexport * from './proxy';\n\ndeclare const window: GlobalInternetComputer;\ndeclare const global: GlobalInternetComputer;\ndeclare const self: GlobalInternetComputer;\n\nexport function getDefaultAgent(): Agent {\n const agent =\n typeof window === 'undefined'\n ? typeof global === 'undefined'\n ? typeof self === 'undefined'\n ? undefined\n : self.ic.agent\n : global.ic.agent\n : window.ic.agent;\n\n if (!agent) {\n throw new Error('No Agent could be found.');\n }\n\n return agent;\n}\n","import { Principal } from '@dfinity/principal';\nimport { Agent, RequestStatusResponseStatus } from '../agent';\nimport { Certificate, CreateCertificateOptions } from '../certificate';\nimport { RequestId } from '../request_id';\nimport { toHex } from '../utils/buffer';\n\nexport * as strategy from './strategy';\nexport { defaultStrategy } from './strategy';\nexport type PollStrategy = (\n canisterId: Principal,\n requestId: RequestId,\n status: RequestStatusResponseStatus,\n) => Promise;\nexport type PollStrategyFactory = () => PollStrategy;\n\n/**\n * Polls the IC to check the status of the given request then\n * returns the response bytes once the request has been processed.\n * @param agent The agent to use to poll read_state.\n * @param canisterId The effective canister ID.\n * @param requestId The Request ID to poll status for.\n * @param strategy A polling strategy.\n * @param request Request for the readState call.\n */\nexport async function pollForResponse(\n agent: Agent,\n canisterId: Principal,\n requestId: RequestId,\n strategy: PollStrategy,\n // eslint-disable-next-line\n request?: any,\n blsVerify?: CreateCertificateOptions['blsVerify'],\n): Promise {\n const path = [new TextEncoder().encode('request_status'), requestId];\n const currentRequest = request ?? (await agent.createReadStateRequest?.({ paths: [path] }));\n const state = await agent.readState(canisterId, { paths: [path] }, undefined, currentRequest);\n if (agent.rootKey == null) throw new Error('Agent root key not initialized before polling');\n const cert = await Certificate.create({\n certificate: state.certificate,\n rootKey: agent.rootKey,\n canisterId: canisterId,\n blsVerify,\n });\n const maybeBuf = cert.lookup([...path, new TextEncoder().encode('status')]);\n let status;\n if (typeof maybeBuf === 'undefined') {\n // Missing requestId means we need to wait\n status = RequestStatusResponseStatus.Unknown;\n } else {\n status = new TextDecoder().decode(maybeBuf);\n }\n\n switch (status) {\n case RequestStatusResponseStatus.Replied: {\n return cert.lookup([...path, 'reply'])!;\n }\n\n case RequestStatusResponseStatus.Received:\n case RequestStatusResponseStatus.Unknown:\n case RequestStatusResponseStatus.Processing:\n // Execute the polling strategy, then retry.\n await strategy(canisterId, requestId, status);\n return pollForResponse(agent, canisterId, requestId, strategy, currentRequest);\n\n case RequestStatusResponseStatus.Rejected: {\n const rejectCode = new Uint8Array(cert.lookup([...path, 'reject_code'])!)[0];\n const rejectMessage = new TextDecoder().decode(cert.lookup([...path, 'reject_message'])!);\n throw new Error(\n `Call was rejected:\\n` +\n ` Request ID: ${toHex(requestId)}\\n` +\n ` Reject code: ${rejectCode}\\n` +\n ` Reject text: ${rejectMessage}\\n`,\n );\n }\n\n case RequestStatusResponseStatus.Done:\n // This is _technically_ not an error, but we still didn't see the `Replied` status so\n // we don't know the result and cannot decode it.\n throw new Error(\n `Call was marked as done but we never saw the reply:\\n` +\n ` Request ID: ${toHex(requestId)}\\n`,\n );\n }\n throw new Error('unreachable');\n}\n","/**\n * This file is generated from the candid for asset management.\n */\n/* tslint:disable */\n// @ts-ignore\nexport default ({ IDL }) => {\n const canister_id = IDL.Principal;\n const definite_canister_settings = IDL.Record({\n controllers: IDL.Vec(IDL.Principal),\n freezing_threshold: IDL.Nat,\n memory_allocation: IDL.Nat,\n compute_allocation: IDL.Nat,\n });\n const canister_settings = IDL.Record({\n controllers: IDL.Opt(IDL.Vec(IDL.Principal)),\n freezing_threshold: IDL.Opt(IDL.Nat),\n memory_allocation: IDL.Opt(IDL.Nat),\n compute_allocation: IDL.Opt(IDL.Nat),\n });\n const wasm_module = IDL.Vec(IDL.Nat8);\n return IDL.Service({\n canister_status: IDL.Func(\n [IDL.Record({ canister_id: canister_id })],\n [\n IDL.Record({\n status: IDL.Variant({\n stopped: IDL.Null,\n stopping: IDL.Null,\n running: IDL.Null,\n }),\n memory_size: IDL.Nat,\n cycles: IDL.Nat,\n settings: definite_canister_settings,\n module_hash: IDL.Opt(IDL.Vec(IDL.Nat8)),\n }),\n ],\n [],\n ),\n create_canister: IDL.Func(\n [IDL.Record({ settings: IDL.Opt(canister_settings) })],\n [IDL.Record({ canister_id: canister_id })],\n [],\n ),\n delete_canister: IDL.Func([IDL.Record({ canister_id: canister_id })], [], []),\n deposit_cycles: IDL.Func([IDL.Record({ canister_id: canister_id })], [], []),\n install_code: IDL.Func(\n [\n IDL.Record({\n arg: IDL.Vec(IDL.Nat8),\n wasm_module: wasm_module,\n mode: IDL.Variant({\n reinstall: IDL.Null,\n upgrade: IDL.Null,\n install: IDL.Null,\n }),\n canister_id: canister_id,\n }),\n ],\n [],\n [],\n ),\n provisional_create_canister_with_cycles: IDL.Func(\n [\n IDL.Record({\n settings: IDL.Opt(canister_settings),\n amount: IDL.Opt(IDL.Nat),\n }),\n ],\n [IDL.Record({ canister_id: canister_id })],\n [],\n ),\n provisional_top_up_canister: IDL.Func(\n [IDL.Record({ canister_id: canister_id, amount: IDL.Nat })],\n [],\n [],\n ),\n raw_rand: IDL.Func([], [IDL.Vec(IDL.Nat8)], []),\n start_canister: IDL.Func([IDL.Record({ canister_id: canister_id })], [], []),\n stop_canister: IDL.Func([IDL.Record({ canister_id: canister_id })], [], []),\n uninstall_code: IDL.Func([IDL.Record({ canister_id: canister_id })], [], []),\n update_settings: IDL.Func(\n [\n IDL.Record({\n canister_id: IDL.Principal,\n settings: canister_settings,\n }),\n ],\n [],\n [],\n ),\n });\n};\n","import { Buffer } from 'buffer/';\nimport {\n Agent,\n getDefaultAgent,\n HttpDetailsResponse,\n QueryResponseRejected,\n QueryResponseStatus,\n ReplicaRejectCode,\n SubmitResponse,\n} from './agent';\nimport { AgentError } from './errors';\nimport { IDL } from '@dfinity/candid';\nimport { pollForResponse, PollStrategyFactory, strategy } from './polling';\nimport { Principal } from '@dfinity/principal';\nimport { RequestId } from './request_id';\nimport { toHex } from './utils/buffer';\nimport { CreateCertificateOptions } from './certificate';\nimport managementCanisterIdl from './canisters/management_idl';\nimport _SERVICE from './canisters/management_service';\n\nexport class ActorCallError extends AgentError {\n constructor(\n public readonly canisterId: Principal,\n public readonly methodName: string,\n public readonly type: 'query' | 'update',\n public readonly props: Record,\n ) {\n super(\n [\n `Call failed:`,\n ` Canister: ${canisterId.toText()}`,\n ` Method: ${methodName} (${type})`,\n ...Object.getOwnPropertyNames(props).map(n => ` \"${n}\": ${JSON.stringify(props[n])}`),\n ].join('\\n'),\n );\n }\n}\n\nexport class QueryCallRejectedError extends ActorCallError {\n constructor(\n canisterId: Principal,\n methodName: string,\n public readonly result: QueryResponseRejected,\n ) {\n super(canisterId, methodName, 'query', {\n Status: result.status,\n Code: ReplicaRejectCode[result.reject_code] ?? `Unknown Code \"${result.reject_code}\"`,\n Message: result.reject_message,\n });\n }\n}\n\nexport class UpdateCallRejectedError extends ActorCallError {\n constructor(\n canisterId: Principal,\n methodName: string,\n public readonly requestId: RequestId,\n public readonly response: SubmitResponse['response'],\n ) {\n super(canisterId, methodName, 'update', {\n 'Request ID': toHex(requestId),\n ...(response.body\n ? {\n ...(response.body.error_code\n ? {\n 'Error code': response.body.error_code,\n }\n : {}),\n 'Reject code': String(response.body.reject_code),\n 'Reject message': response.body.reject_message,\n }\n : {\n 'HTTP status code': response.status.toString(),\n 'HTTP status text': response.statusText,\n }),\n });\n }\n}\n\n/**\n * Configuration to make calls to the Replica.\n */\nexport interface CallConfig {\n /**\n * An agent to use in this call, otherwise the actor or call will try to discover the\n * agent to use.\n */\n agent?: Agent;\n\n /**\n * A polling strategy factory that dictates how much and often we should poll the\n * read_state endpoint to get the result of an update call.\n */\n pollingStrategyFactory?: PollStrategyFactory;\n\n /**\n * The canister ID of this Actor.\n */\n canisterId?: string | Principal;\n\n /**\n * The effective canister ID. This should almost always be ignored.\n */\n effectiveCanisterId?: Principal;\n}\n\n/**\n * Configuration that can be passed to customize the Actor behaviour.\n */\nexport interface ActorConfig extends CallConfig {\n /**\n * The Canister ID of this Actor. This is required for an Actor.\n */\n canisterId: string | Principal;\n\n /**\n * An override function for update calls' CallConfig. This will be called on every calls.\n */\n callTransform?(\n methodName: string,\n args: unknown[],\n callConfig: CallConfig,\n ): Partial | void;\n\n /**\n * An override function for query calls' CallConfig. This will be called on every query.\n */\n queryTransform?(\n methodName: string,\n args: unknown[],\n callConfig: CallConfig,\n ): Partial | void;\n\n /**\n * Polyfill for BLS Certificate verification in case wasm is not supported\n */\n blsVerify?: CreateCertificateOptions['blsVerify'];\n}\n\n// TODO: move this to proper typing when Candid support TypeScript.\n/**\n * A subclass of an actor. Actor class itself is meant to be a based class.\n */\nexport type ActorSubclass> = Actor & T;\n\n/**\n * An actor method type, defined for each methods of the actor service.\n */\nexport interface ActorMethod {\n (...args: Args): Promise;\n withOptions(options: CallConfig): (...args: Args) => Promise;\n}\n\n/**\n * An actor method type, defined for each methods of the actor service.\n */\nexport interface ActorMethodWithHttpDetails\n extends ActorMethod {\n (...args: Args): Promise<{ httpDetails: HttpDetailsResponse; result: Ret }>;\n}\n\nexport type FunctionWithArgsAndReturn = (\n ...args: Args\n) => Ret;\n\n// Update all entries of T with the extra information from ActorMethodWithInfo\nexport type ActorMethodMappedWithHttpDetails = {\n [K in keyof T]: T[K] extends FunctionWithArgsAndReturn\n ? ActorMethodWithHttpDetails\n : never;\n};\n\n/**\n * The mode used when installing a canister.\n */\nexport enum CanisterInstallMode {\n Install = 'install',\n Reinstall = 'reinstall',\n Upgrade = 'upgrade',\n}\n\n/**\n * Internal metadata for actors. It's an enhanced version of ActorConfig with\n * some fields marked as required (as they are defaulted) and canisterId as\n * a Principal type.\n */\ninterface ActorMetadata {\n service: IDL.ServiceClass;\n agent?: Agent;\n config: ActorConfig;\n}\n\nconst metadataSymbol = Symbol.for('ic-agent-metadata');\n\nexport interface CreateActorClassOpts {\n httpDetails?: boolean;\n}\n\n/**\n * An actor base class. An actor is an object containing only functions that will\n * return a promise. These functions are derived from the IDL definition.\n */\nexport class Actor {\n /**\n * Get the Agent class this Actor would call, or undefined if the Actor would use\n * the default agent (global.ic.agent).\n * @param actor The actor to get the agent of.\n */\n public static agentOf(actor: Actor): Agent | undefined {\n return actor[metadataSymbol].config.agent;\n }\n\n /**\n * Get the interface of an actor, in the form of an instance of a Service.\n * @param actor The actor to get the interface of.\n */\n public static interfaceOf(actor: Actor): IDL.ServiceClass {\n return actor[metadataSymbol].service;\n }\n\n public static canisterIdOf(actor: Actor): Principal {\n return Principal.from(actor[metadataSymbol].config.canisterId);\n }\n\n public static async install(\n fields: {\n module: ArrayBuffer;\n mode?: CanisterInstallMode;\n arg?: ArrayBuffer;\n },\n config: ActorConfig,\n ): Promise {\n const mode = fields.mode === undefined ? CanisterInstallMode.Install : fields.mode;\n // Need to transform the arg into a number array.\n const arg = fields.arg ? [...new Uint8Array(fields.arg)] : [];\n // Same for module.\n const wasmModule = [...new Uint8Array(fields.module)];\n const canisterId =\n typeof config.canisterId === 'string'\n ? Principal.fromText(config.canisterId)\n : config.canisterId;\n\n await getManagementCanister(config).install_code({\n mode: { [mode]: null } as any,\n arg,\n wasm_module: wasmModule,\n canister_id: canisterId,\n });\n }\n\n public static async createCanister(config?: CallConfig): Promise {\n const { canister_id: canisterId } = await getManagementCanister(\n config || {},\n ).provisional_create_canister_with_cycles({ amount: [], settings: [] });\n\n return canisterId;\n }\n\n public static async createAndInstallCanister(\n interfaceFactory: IDL.InterfaceFactory,\n fields: {\n module: ArrayBuffer;\n arg?: ArrayBuffer;\n },\n config?: CallConfig,\n ): Promise {\n const canisterId = await this.createCanister(config);\n await this.install(\n {\n ...fields,\n },\n { ...config, canisterId },\n );\n\n return this.createActor(interfaceFactory, { ...config, canisterId });\n }\n\n public static createActorClass(\n interfaceFactory: IDL.InterfaceFactory,\n options?: CreateActorClassOpts,\n ): ActorConstructor {\n const service = interfaceFactory({ IDL });\n\n class CanisterActor extends Actor {\n [x: string]: ActorMethod;\n\n constructor(config: ActorConfig) {\n const canisterId =\n typeof config.canisterId === 'string'\n ? Principal.fromText(config.canisterId)\n : config.canisterId;\n\n super({\n config: {\n ...DEFAULT_ACTOR_CONFIG,\n ...config,\n canisterId,\n },\n service,\n });\n\n for (const [methodName, func] of service._fields) {\n if (options?.httpDetails) {\n func.annotations.push(ACTOR_METHOD_WITH_HTTP_DETAILS);\n }\n\n this[methodName] = _createActorMethod(this, methodName, func, config.blsVerify);\n }\n }\n }\n\n return CanisterActor;\n }\n\n public static createActor>(\n interfaceFactory: IDL.InterfaceFactory,\n configuration: ActorConfig,\n ): ActorSubclass {\n return new (this.createActorClass(interfaceFactory))(\n configuration,\n ) as unknown as ActorSubclass;\n }\n\n public static createActorWithHttpDetails>(\n interfaceFactory: IDL.InterfaceFactory,\n configuration: ActorConfig,\n ): ActorSubclass> {\n return new (this.createActorClass(interfaceFactory, { httpDetails: true }))(\n configuration,\n ) as unknown as ActorSubclass>;\n }\n\n private [metadataSymbol]: ActorMetadata;\n\n protected constructor(metadata: ActorMetadata) {\n this[metadataSymbol] = Object.freeze(metadata);\n }\n}\n\n// IDL functions can have multiple return values, so decoding always\n// produces an array. Ensure that functions with single or zero return\n// values behave as expected.\nfunction decodeReturnValue(types: IDL.Type[], msg: ArrayBuffer) {\n const returnValues = IDL.decode(types, Buffer.from(msg));\n switch (returnValues.length) {\n case 0:\n return undefined;\n case 1:\n return returnValues[0];\n default:\n return returnValues;\n }\n}\n\nconst DEFAULT_ACTOR_CONFIG = {\n pollingStrategyFactory: strategy.defaultStrategy,\n};\n\nexport type ActorConstructor = new (config: ActorConfig) => ActorSubclass;\n\nexport const ACTOR_METHOD_WITH_HTTP_DETAILS = 'http-details';\n\nfunction _createActorMethod(\n actor: Actor,\n methodName: string,\n func: IDL.FuncClass,\n blsVerify?: CreateCertificateOptions['blsVerify'],\n): ActorMethod {\n let caller: (options: CallConfig, ...args: unknown[]) => Promise;\n if (func.annotations.includes('query') || func.annotations.includes('composite_query')) {\n caller = async (options, ...args) => {\n // First, if there's a config transformation, call it.\n options = {\n ...options,\n ...actor[metadataSymbol].config.queryTransform?.(methodName, args, {\n ...actor[metadataSymbol].config,\n ...options,\n }),\n };\n\n const agent = options.agent || actor[metadataSymbol].config.agent || getDefaultAgent();\n const cid = Principal.from(options.canisterId || actor[metadataSymbol].config.canisterId);\n const arg = IDL.encode(func.argTypes, args);\n\n const result = await agent.query(cid, { methodName, arg });\n\n switch (result.status) {\n case QueryResponseStatus.Rejected:\n throw new QueryCallRejectedError(cid, methodName, result);\n\n case QueryResponseStatus.Replied:\n return func.annotations.includes(ACTOR_METHOD_WITH_HTTP_DETAILS)\n ? {\n httpDetails: result.httpDetails,\n result: decodeReturnValue(func.retTypes, result.reply.arg),\n }\n : decodeReturnValue(func.retTypes, result.reply.arg);\n }\n };\n } else {\n caller = async (options, ...args) => {\n // First, if there's a config transformation, call it.\n options = {\n ...options,\n ...actor[metadataSymbol].config.callTransform?.(methodName, args, {\n ...actor[metadataSymbol].config,\n ...options,\n }),\n };\n\n const agent = options.agent || actor[metadataSymbol].config.agent || getDefaultAgent();\n const { canisterId, effectiveCanisterId, pollingStrategyFactory } = {\n ...DEFAULT_ACTOR_CONFIG,\n ...actor[metadataSymbol].config,\n ...options,\n };\n const cid = Principal.from(canisterId);\n const ecid = effectiveCanisterId !== undefined ? Principal.from(effectiveCanisterId) : cid;\n const arg = IDL.encode(func.argTypes, args);\n const { requestId, response } = await agent.call(cid, {\n methodName,\n arg,\n effectiveCanisterId: ecid,\n });\n\n if (!response.ok || response.body /* IC-1462 */) {\n throw new UpdateCallRejectedError(cid, methodName, requestId, response);\n }\n\n const pollStrategy = pollingStrategyFactory();\n const responseBytes = await pollForResponse(agent, ecid, requestId, pollStrategy, blsVerify);\n const shouldIncludeHttpDetails = func.annotations.includes(ACTOR_METHOD_WITH_HTTP_DETAILS);\n\n if (responseBytes !== undefined) {\n return shouldIncludeHttpDetails\n ? {\n httpDetails: response,\n result: decodeReturnValue(func.retTypes, responseBytes),\n }\n : decodeReturnValue(func.retTypes, responseBytes);\n } else if (func.retTypes.length === 0) {\n return shouldIncludeHttpDetails\n ? {\n httpDetails: response,\n result: undefined,\n }\n : undefined;\n } else {\n throw new Error(`Call was returned undefined, but type [${func.retTypes.join(',')}].`);\n }\n };\n }\n\n const handler = (...args: unknown[]) => caller({}, ...args);\n handler.withOptions =\n (options: CallConfig) =>\n (...args: unknown[]) =>\n caller(options, ...args);\n return handler as ActorMethod;\n}\n\nexport type ManagementCanisterRecord = _SERVICE;\n\n/**\n * Create a management canister actor\n * @param config\n */\nexport function getManagementCanister(config: CallConfig): ActorSubclass {\n function transform(_methodName: string, args: unknown[], _callConfig: CallConfig) {\n const first = args[0] as any;\n let effectiveCanisterId = Principal.fromHex('');\n if (first && typeof first === 'object' && first.canister_id) {\n effectiveCanisterId = Principal.from(first.canister_id as unknown);\n }\n return { effectiveCanisterId };\n }\n\n return Actor.createActor(managementCanisterIdl, {\n ...config,\n canisterId: Principal.fromHex(''),\n ...{\n callTransform: transform,\n queryTransform: transform,\n },\n });\n}\n","import { Principal } from '@dfinity/principal';\nimport { RequestStatusResponseStatus } from '../agent';\nimport { toHex } from '../utils/buffer';\nimport { PollStrategy } from './index';\nimport { RequestId } from '../request_id';\n\nexport type Predicate = (\n canisterId: Principal,\n requestId: RequestId,\n status: RequestStatusResponseStatus,\n) => Promise;\n\nconst FIVE_MINUTES_IN_MSEC = 5 * 60 * 1000;\n\n/**\n * A best practices polling strategy: wait 2 seconds before the first poll, then 1 second\n * with an exponential backoff factor of 1.2. Timeout after 5 minutes.\n */\nexport function defaultStrategy(): PollStrategy {\n return chain(conditionalDelay(once(), 1000), backoff(1000, 1.2), timeout(FIVE_MINUTES_IN_MSEC));\n}\n\n/**\n * Predicate that returns true once.\n */\nexport function once(): Predicate {\n let first = true;\n return async () => {\n if (first) {\n first = false;\n return true;\n }\n return false;\n };\n}\n\n/**\n * Delay the polling once.\n * @param condition A predicate that indicates when to delay.\n * @param timeInMsec The amount of time to delay.\n */\nexport function conditionalDelay(condition: Predicate, timeInMsec: number): PollStrategy {\n return async (\n canisterId: Principal,\n requestId: RequestId,\n status: RequestStatusResponseStatus,\n ) => {\n if (await condition(canisterId, requestId, status)) {\n return new Promise(resolve => setTimeout(resolve, timeInMsec));\n }\n };\n}\n\n/**\n * Error out after a maximum number of polling has been done.\n * @param count The maximum attempts to poll.\n */\nexport function maxAttempts(count: number): PollStrategy {\n let attempts = count;\n return async (\n canisterId: Principal,\n requestId: RequestId,\n status: RequestStatusResponseStatus,\n ) => {\n if (--attempts <= 0) {\n throw new Error(\n `Failed to retrieve a reply for request after ${count} attempts:\\n` +\n ` Request ID: ${toHex(requestId)}\\n` +\n ` Request status: ${status}\\n`,\n );\n }\n };\n}\n\n/**\n * Throttle polling.\n * @param throttleInMsec Amount in millisecond to wait between each polling.\n */\nexport function throttle(throttleInMsec: number): PollStrategy {\n return () => new Promise(resolve => setTimeout(resolve, throttleInMsec));\n}\n\n/**\n * Reject a call after a certain amount of time.\n * @param timeInMsec Time in milliseconds before the polling should be rejected.\n */\nexport function timeout(timeInMsec: number): PollStrategy {\n const end = Date.now() + timeInMsec;\n return async (\n canisterId: Principal,\n requestId: RequestId,\n status: RequestStatusResponseStatus,\n ) => {\n if (Date.now() > end) {\n throw new Error(\n `Request timed out after ${timeInMsec} msec:\\n` +\n ` Request ID: ${toHex(requestId)}\\n` +\n ` Request status: ${status}\\n`,\n );\n }\n };\n}\n\n/**\n * A strategy that throttle, but using an exponential backoff strategy.\n * @param startingThrottleInMsec The throttle in milliseconds to start with.\n * @param backoffFactor The factor to multiple the throttle time between every poll. For\n * example if using 2, the throttle will double between every run.\n */\nexport function backoff(startingThrottleInMsec: number, backoffFactor: number): PollStrategy {\n let currentThrottling = startingThrottleInMsec;\n\n return () =>\n new Promise(resolve =>\n setTimeout(() => {\n currentThrottling *= backoffFactor;\n resolve();\n }, currentThrottling),\n );\n}\n\n/**\n * Chain multiple polling strategy. This _chains_ the strategies, so if you pass in,\n * say, two throttling strategy of 1 second, it will result in a throttle of 2 seconds.\n * @param strategies A strategy list to chain.\n */\nexport function chain(...strategies: PollStrategy[]): PollStrategy {\n return async (\n canisterId: Principal,\n requestId: RequestId,\n status: RequestStatusResponseStatus,\n ) => {\n for (const a of strategies) {\n await a(canisterId, requestId, status);\n }\n };\n}\n","import { Principal } from \"@dfinity/principal\";\nimport crc32 from \"buffer-crc32\";\nimport { Buffer } from \"buffer\";\nimport { Actor, HttpAgent } from \"@dfinity/agent\";\nimport { sha224 } from \"@noble/hashes/sha256\";\nimport { AccountType } from \"./tokens/token\";\n\nexport interface Account {\n owner: Principal;\n subaccount?: Uint8Array;\n}\n\nexport const ICP_CANISTER_ID = \"ryjl3-tyaaa-aaaaa-aaaba-cai\";\nexport const ACCOUNT_ID_SEP = new TextEncoder().encode(\"\\x0Aaccount-id\");\n\nexport const accountToString = (account: {\n owner: Principal;\n subaccount?: Uint8Array;\n}): string => {\n if (\n !account.subaccount ||\n arraybufferEqual(\n account.subaccount.buffer,\n subaccountFromIndex(BigInt(0)).buffer\n )\n ) {\n return account.owner.toText();\n }\n const ownerMaxLength = 29;\n const ownerBytes = account.owner.toUint8Array().slice(0, ownerMaxLength);\n const checksumBytes = new Uint8Array(ownerBytes.length + 32);\n checksumBytes.set(ownerBytes);\n checksumBytes.set(account.subaccount, ownerBytes.length);\n const checksum = base32Encode(crc32(Buffer.from(checksumBytes)));\n const compressedSubaccount = Buffer.from(account.subaccount)\n .toString(\"hex\")\n .replace(/^0+(.*)/, (_, hex) => hex);\n return `${account.owner.toText()}-${checksum}.${compressedSubaccount}`;\n};\n\nexport const accountFromString = (str: string): Account => {\n if (isAccountHash(str)) {\n throw Error(\"Account hashes are not supported\");\n }\n if (!str.includes(\".\")) {\n return { owner: Principal.fromText(str) };\n }\n const chunks = str.split(\"-\");\n const [checksum, hexCompressedSubAccount] = chunks.pop()!.split(\".\");\n const compressedSubaccount = Uint8Array.from(\n Buffer.from(\n hexCompressedSubAccount.padStart(\n Math.ceil(hexCompressedSubAccount.length / 2) * 2,\n \"0\"\n ),\n \"hex\"\n )\n );\n const subaccount = new Uint8Array(32);\n subaccount.set(compressedSubaccount, 32 - compressedSubaccount.length);\n const owner = Principal.fromText(chunks.join(\"-\"));\n const ownerMaxLength = 29;\n const ownerBytes = owner.toUint8Array().slice(0, ownerMaxLength);\n const checksumBytes = new Uint8Array(ownerBytes.length + 32);\n checksumBytes.set(ownerBytes);\n checksumBytes.set(subaccount, ownerBytes.length);\n if (base32Encode(crc32(Buffer.from(checksumBytes))) !== checksum) {\n throw Error(\"Account textual encoding has invalid checksum\");\n }\n return { owner, subaccount };\n};\n\nexport const accountToHash = (account: {\n owner: Principal;\n subaccount?: Uint8Array;\n}): string => {\n const shaObj = sha224.create();\n shaObj.update(ACCOUNT_ID_SEP);\n shaObj.update(account.owner.toUint8Array());\n shaObj.update(account.subaccount ?? subaccountFromIndex(BigInt(0)));\n const hash = shaObj.digest();\n const checksum = crc32(Buffer.from(hash));\n return Buffer.from(new Uint8Array([...checksum, ...hash])).toString(\"hex\");\n};\n\nexport const accountHashFromString = (str: string): string => {\n if (isAccountHash(str)) {\n return str;\n }\n return accountToHash(accountFromString(str));\n};\n\nexport const principalFromString = (str: string): Principal => {\n if (isAccountHash(str)) {\n throw Error(\"Account hashes are not supported\");\n }\n return accountFromString(str).owner;\n};\n\nexport const subaccountToIndex = (subaccount: Uint8Array) => {\n return new DataView(subaccount.buffer).getBigUint64(24, false);\n};\n\nexport const subaccountFromIndex = (index: bigint) => {\n const buffer = new ArrayBuffer(32);\n new DataView(buffer).setBigUint64(24, index, false);\n return new Uint8Array(buffer);\n};\n\nexport const isAccountHash = (address: string) => {\n const buff = Buffer.from(address, \"hex\");\n const checksum = Buffer.from(buff.slice(0, 4));\n const hash = Buffer.from(buff.slice(4));\n const checksumFromHash = crc32(hash);\n return arraybufferEqual(checksum.buffer, checksumFromHash.buffer);\n};\n\nexport const getAccountType = (value: string): AccountType | undefined => {\n if (isAccountHash(value)) {\n return \"hash\";\n }\n try {\n const account = accountFromString(value);\n return account.subaccount ? \"account\" : \"principal\";\n } catch (_) {}\n};\n\nexport const numberToUint32 = (\n num: number,\n littleEndian?: boolean\n): Uint8Array => {\n let b = new ArrayBuffer(4);\n new DataView(b).setUint32(0, num, littleEndian);\n return new Uint8Array(b);\n};\n\nexport const numberFromUint32 = (buffer: Uint8Array, littleEndian?: boolean) =>\n new DataView(buffer.buffer).getUint32(0, littleEndian);\n\nexport const bigintToUint64 = (\n bigint: bigint,\n littleEndian?: boolean\n): Uint8Array => {\n let b = new ArrayBuffer(8);\n new DataView(b).setBigUint64(0, bigint, littleEndian);\n return new Uint8Array(b);\n};\n\nexport const bigintFromUint64 = (buffer: Uint8Array, littleEndian?: boolean) =>\n new DataView(buffer.buffer).getBigUint64(0, littleEndian);\n\nexport const arraybufferEqual = (buf1: ArrayBuffer, buf2: ArrayBuffer) => {\n if (buf1 === buf2) {\n return true;\n }\n\n if (buf1.byteLength !== buf2.byteLength) {\n return false;\n }\n\n const view1 = new DataView(buf1);\n const view2 = new DataView(buf2);\n\n let i = buf1.byteLength;\n while (i--) {\n if (view1.getUint8(i) !== view2.getUint8(i)) {\n return false;\n }\n }\n\n return true;\n};\n\nexport const base32Alphabet = \"abcdefghijklmnopqrstuvwxyz234567\";\n\nexport const base32Encode = (input: Uint8Array): string => {\n // How many bits will we skip from the first byte.\n let skip = 0;\n // 5 high bits, carry from one byte to the next.\n let bits = 0;\n\n // The output string in base32.\n let output = \"\";\n\n function encodeByte(byte: number) {\n if (skip < 0) {\n // we have a carry from the previous byte\n bits |= byte >> -skip;\n } else {\n // no carry\n bits = (byte << skip) & 248;\n }\n\n if (skip > 3) {\n // Not enough data to produce a character, get us another one\n skip -= 8;\n return 1;\n }\n\n if (skip < 4) {\n // produce a character\n output += base32Alphabet[bits >> 3];\n skip += 5;\n }\n\n return 0;\n }\n\n for (let i = 0; i < input.length; ) {\n i += encodeByte(input[i]);\n }\n\n return output + (skip < 0 ? base32Alphabet[bits >> 3] : \"\");\n};\n\nexport const intersect = (a: readonly string[], b: readonly string[]) => {\n const setB = new Set(b);\n return [...new Set(a)].filter((x) => setB.has(x));\n};\n\nexport const actorOrigin = (actor: Actor, raw: boolean) => {\n const agent = Actor.agentOf(actor);\n const canisterId = Actor.canisterIdOf(actor);\n return agent instanceof HttpAgent && agent.isLocal()\n ? agent[\"_host\"].origin // Use internal private property host from agent\n : `https://${canisterId}${raw ? \".raw\" : \"\"}.ic0.app`;\n};\n\nexport const urlIsImage = async (url: string): Promise => {\n // Web can't use fetch in the browser due to possibly running into CORS\n if (window?.Image) {\n return new Promise((resolve) => {\n const image = new Image();\n image.onload = () => resolve(true);\n image.onerror = () => resolve(false);\n image.src = url;\n });\n }\n\n // This isn't an issue outside the browser\n try {\n const res = await fetch(url, { method: \"HEAD\" });\n return !!res.headers.get(\"Content-Type\")?.startsWith(\"image/\");\n } catch (_) {\n return false;\n }\n};\n\nexport type UnionToIntersection = (\n U extends any ? (k: U) => void : never\n) extends (k: infer I) => void\n ? I\n : never;\n","export const idlFactory = ({ IDL }) => {\n const AccountIdentifier = IDL.Vec(IDL.Nat8);\n const AccountBalanceArgs = IDL.Record({ account: AccountIdentifier });\n const Tokens = IDL.Record({ e8s: IDL.Nat64 });\n const Archive = IDL.Record({ canister_id: IDL.Principal });\n const Archives = IDL.Record({ archives: IDL.Vec(Archive) });\n const BlockIndex = IDL.Nat64;\n const GetBlocksArgs = IDL.Record({\n start: BlockIndex,\n length: IDL.Nat64,\n });\n const Memo = IDL.Nat64;\n const Operation = IDL.Variant({\n Burn: IDL.Record({ from: AccountIdentifier, amount: Tokens }),\n Mint: IDL.Record({ to: AccountIdentifier, amount: Tokens }),\n Transfer: IDL.Record({\n to: AccountIdentifier,\n fee: Tokens,\n from: AccountIdentifier,\n amount: Tokens,\n }),\n });\n const TimeStamp = IDL.Record({ timestamp_nanos: IDL.Nat64 });\n const Transaction = IDL.Record({\n memo: Memo,\n operation: IDL.Opt(Operation),\n created_at_time: TimeStamp,\n });\n const Block = IDL.Record({\n transaction: Transaction,\n timestamp: TimeStamp,\n parent_hash: IDL.Opt(IDL.Vec(IDL.Nat8)),\n });\n const BlockRange = IDL.Record({ blocks: IDL.Vec(Block) });\n const QueryArchiveError = IDL.Variant({\n BadFirstBlockIndex: IDL.Record({\n requested_index: BlockIndex,\n first_valid_index: BlockIndex,\n }),\n Other: IDL.Record({\n error_message: IDL.Text,\n error_code: IDL.Nat64,\n }),\n });\n const QueryArchiveResult = IDL.Variant({\n Ok: BlockRange,\n Err: QueryArchiveError,\n });\n const QueryArchiveFn = IDL.Func(\n [GetBlocksArgs],\n [QueryArchiveResult],\n ['query'],\n );\n const QueryBlocksResponse = IDL.Record({\n certificate: IDL.Opt(IDL.Vec(IDL.Nat8)),\n blocks: IDL.Vec(Block),\n chain_length: IDL.Nat64,\n first_block_index: BlockIndex,\n archived_blocks: IDL.Vec(\n IDL.Record({\n callback: QueryArchiveFn,\n start: BlockIndex,\n length: IDL.Nat64,\n }),\n ),\n });\n const SubAccount = IDL.Vec(IDL.Nat8);\n const TransferArgs = IDL.Record({\n to: AccountIdentifier,\n fee: Tokens,\n memo: Memo,\n from_subaccount: IDL.Opt(SubAccount),\n created_at_time: IDL.Opt(TimeStamp),\n amount: Tokens,\n });\n const TransferError = IDL.Variant({\n TxTooOld: IDL.Record({ allowed_window_nanos: IDL.Nat64 }),\n BadFee: IDL.Record({ expected_fee: Tokens }),\n TxDuplicate: IDL.Record({ duplicate_of: BlockIndex }),\n TxCreatedInFuture: IDL.Null,\n InsufficientFunds: IDL.Record({ balance: Tokens }),\n });\n const TransferResult = IDL.Variant({\n Ok: BlockIndex,\n Err: TransferError,\n });\n const TransferFeeArg = IDL.Record({});\n const TransferFee = IDL.Record({ transfer_fee: Tokens });\n return IDL.Service({\n account_balance: IDL.Func([AccountBalanceArgs], [Tokens], ['query']),\n archives: IDL.Func([], [Archives], ['query']),\n decimals: IDL.Func([], [IDL.Record({ decimals: IDL.Nat32 })], ['query']),\n name: IDL.Func([], [IDL.Record({ name: IDL.Text })], ['query']),\n query_blocks: IDL.Func([GetBlocksArgs], [QueryBlocksResponse], ['query']),\n symbol: IDL.Func([], [IDL.Record({ symbol: IDL.Text })], ['query']),\n transfer: IDL.Func([TransferArgs], [TransferResult], []),\n transfer_fee: IDL.Func([TransferFeeArg], [TransferFee], ['query']),\n });\n};\nexport const init = ({ IDL }) => {\n return [];\n};\n","import { ActorConfig, ActorSubclass } from \"@dfinity/agent\";\nimport { TokenManagerConfig } from \"../index\";\nimport { Principal } from \"@dfinity/principal\";\nimport { Value } from \"./icrc1/icrc1.did\";\n\nexport interface Token {\n metadata(): Promise | undefined>;\n\n name(): Promise;\n\n symbol(): Promise;\n\n decimals(): Promise;\n\n fee(): Promise;\n\n totalSupply(): Promise;\n\n mintingAccount(): Promise;\n\n balanceOf(account: string): Promise;\n\n ownerOf(tokenId: bigint): Promise;\n\n tokens(page?: bigint): Promise;\n\n tokensOf(account: string, page?: bigint): Promise;\n\n metadataOf(tokenId?: bigint): Promise | undefined>;\n\n transfer(\n args: {\n fromSubaccount?: Uint8Array;\n to: string;\n memo?: Uint8Array;\n createdAtTime?: bigint;\n } & ({ tokenId: bigint } | { amount: bigint; fee?: bigint })\n ): Promise;\n\n approve(\n args: {\n fromSubaccount?: Uint8Array;\n spender: string;\n memo?: Uint8Array;\n createdAtTime?: bigint;\n } & (\n | { tokenId: bigint; approved: boolean }\n | {\n amount: bigint;\n expectedAllowance?: bigint;\n expiresAt?: bigint;\n fee?: bigint;\n }\n )\n ): Promise;\n\n getApproved(tokenId: bigint): Promise;\n\n setApprovalForAll(args: {\n operator: Principal;\n approved: boolean;\n fromSubaccount?: Uint8Array | number[] | bigint;\n memo?: Uint8Array | number[];\n createdAtTime?: bigint;\n }): Promise;\n\n isApprovedForAll(operator: Principal, account: string): Promise;\n\n transferFrom(\n args: {\n spenderSubaccount?: Uint8Array;\n from: string;\n to: string;\n memo?: Uint8Array;\n createdAtTime?: bigint;\n } & ({ tokenId: bigint } | { amount: bigint; fee?: bigint })\n ): Promise;\n\n allowance(args: {\n account: string;\n spender: string;\n }): Promise<{ allowance: bigint; expiresAt?: bigint }>;\n\n mint(args: {\n to: string;\n tokenId?: bigint;\n metadata?: { [key: string]: Value };\n memo?: Uint8Array | number[];\n createdAtTime?: bigint;\n }): Promise;\n\n burn(args: {\n tokenId: bigint;\n memo?: Uint8Array | number[];\n createdAtTime?: bigint;\n }): Promise;\n\n getCustodians(): Promise;\n\n setCustodian(args: {\n custodian: Principal;\n approved: boolean;\n }): Promise;\n\n royaltyFee(amount: bigint): Promise<{ account: string; fee: bigint }>;\n\n setRoyaltyFee(args: { account: string; fee: number }): Promise;\n\n logo(): Promise;\n\n assetOf(tokenId: bigint): Promise<\n | {\n location: string;\n type?: string;\n }\n | undefined\n >;\n\n imageOf(tokenId: bigint): Promise;\n\n attributesOf(tokenId: bigint): Promise<\n | Array<{\n value: Value;\n traitType?: string;\n displayType?: string;\n }>\n | undefined\n >;\n}\n\ntype ValuesOf = T[keyof T];\n\nexport type AccountType = \"account\" | \"principal\" | \"hash\";\nexport type TokenType = \"fungible\" | \"nonFungible\";\nexport type IdentifiedCall = ValuesOf<{\n [Key in Exclude<\n keyof Token,\n \"logo\" | \"assetOf\" | \"imageOf\" | \"attributesOf\" | \"identifyCall\"\n >]: {\n methodName: Key;\n args: Parameters;\n };\n}>;\n\nexport abstract class BaseToken {\n static implementedStandards: readonly string[];\n static accountType: AccountType;\n\n static create: (\n config: TokenManagerConfig\n ) => BaseToken & Partial;\n\n static createActor: (config: ActorConfig) => ActorSubclass;\n\n static supportedStandards: (\n config: ActorConfig\n ) => Promise>;\n\n static tokenType: (supportedStandard: string[]) => TokenType;\n\n static identifyCall: (\n methodName: string,\n args: any[]\n ) => IdentifiedCall | undefined;\n\n protected _config: TokenManagerConfig;\n\n protected constructor(config: TokenManagerConfig) {\n this._config = config;\n }\n}\n","import {\n Actor,\n ActorConfig,\n ActorSubclass,\n AnonymousIdentity,\n HttpAgent,\n} from \"@dfinity/agent\";\nimport { _SERVICE } from \"./icp/icp.did\";\nimport { idlFactory } from \"./icp\";\nimport {\n bigintFromUint64,\n bigintToUint64,\n IdentifiedCall,\n TokenManagerConfig,\n} from \"../index\";\nimport { BaseToken, Token } from \"./token\";\nimport { accountHashFromString, ICP_CANISTER_ID } from \"../utils\";\nimport { Value } from \"./icrc1/icrc1.did\";\n\nexport const ICP = \"icp\";\n\nexport type ICP_TYPE = typeof ICP;\n\nexport type IcpMethods =\n T extends typeof ICP\n ? Pick<\n Token,\n | \"metadata\"\n | \"name\"\n | \"symbol\"\n | \"decimals\"\n | \"balanceOf\"\n | \"transfer\"\n | \"logo\"\n >\n : {};\n\nexport class IcpToken extends BaseToken implements Partial {\n static canisterIds = [ICP_CANISTER_ID];\n static implementedStandards = [ICP] as const;\n static accountType = \"hash\" as const;\n\n private readonly _actor: ActorSubclass<_SERVICE>;\n\n protected constructor({\n supportedStandards = [],\n ...actorConfig\n }: TokenManagerConfig) {\n super({ supportedStandards, ...actorConfig });\n this._actor = IcpToken.createActor(actorConfig);\n\n // Disable methods for unsupported standards\n if (!supportedStandards.includes(ICP)) {\n this.metadata = undefined;\n this.name = undefined;\n this.symbol = undefined;\n this.decimals = undefined;\n this.balanceOf = undefined;\n this.transfer = undefined;\n this.logo = undefined;\n }\n }\n\n static create(config: TokenManagerConfig) {\n return new IcpToken(config) as unknown as BaseToken & IcpMethods;\n }\n\n static createActor(config: ActorConfig): ActorSubclass<_SERVICE> {\n return Actor.createActor(idlFactory, config);\n }\n\n static async supportedStandards(\n config: ActorConfig\n ): Promise> {\n const canisterId =\n typeof config.canisterId === \"string\"\n ? config.canisterId\n : config.canisterId.toText();\n return IcpToken.canisterIds.includes(canisterId)\n ? [{ name: \"ICP\", url: \"https://github.com/dfinity/ic\" }]\n : [];\n }\n\n static tokenType() {\n return \"nonFungible\" as const;\n }\n\n static identifyCall(\n methodName: string,\n args: any[]\n ): IdentifiedCall | undefined {\n switch (methodName) {\n case \"transfer\":\n return {\n methodName: \"transfer\",\n args: [\n {\n to: Buffer.from(args[0].to).toString(\"hex\"),\n amount: args[0].amount.e8s,\n fee: args[0].fee.e8s,\n fromSubaccount: args[0].from_subaccount[0],\n memo: bigintToUint64(args[0].memo),\n createdAtTime: args[0].created_at_time[0],\n },\n ],\n };\n }\n }\n\n async metadata?() {\n return [\n [`${ICP}:name`, { Text: await this.name!() }],\n [`${ICP}:symbol`, { Text: await this.symbol!() }],\n [`${ICP}:decimals`, { Nat: BigInt(await this.decimals!()) }],\n [`${ICP}:fee`, { Nat: BigInt(await this.fee!()) }],\n ] as Array<[string, Value]>;\n }\n\n async name?() {\n const { name } = await this._actor.name();\n return name;\n }\n\n async symbol?() {\n const { symbol } = await this._actor.symbol();\n return symbol;\n }\n\n async decimals?() {\n const { decimals } = await this._actor.decimals();\n return decimals;\n }\n\n async fee?() {\n const { transfer_fee } = await this._actor.transfer_fee({});\n return transfer_fee.e8s;\n }\n\n async balanceOf?(account: string) {\n const { e8s } = await this._actor.account_balance({\n account: Uint8Array.from(\n Buffer.from(accountHashFromString(account), \"hex\")\n ),\n });\n return e8s;\n }\n\n async transfer?(args: {\n to: string;\n amount: bigint;\n fee?: bigint;\n fromSubaccount?: Uint8Array;\n memo?: Uint8Array;\n createdAtTime?: bigint;\n }): Promise {\n const agent = Actor.agentOf(this._actor);\n const anonymousAgent =\n agent instanceof HttpAgent ? new HttpAgent({ source: agent }) : agent;\n anonymousAgent?.replaceIdentity?.(new AnonymousIdentity());\n const res = await this._actor.transfer({\n to: Uint8Array.from(Buffer.from(accountHashFromString(args.to), \"hex\")),\n fee: {\n e8s:\n args.fee ??\n // Make query calls within update calls anonymous so that agents from wallets don't have to ask for approval\n (\n await this._actor.transfer_fee.withOptions({\n agent: anonymousAgent,\n })({})\n ).transfer_fee.e8s,\n },\n memo: args.memo ? bigintFromUint64(args.memo, false) : BigInt(0),\n from_subaccount: args.fromSubaccount ? [args.fromSubaccount] : [],\n created_at_time: args.createdAtTime\n ? [{ timestamp_nanos: args.createdAtTime }]\n : [],\n amount: { e8s: args.amount },\n });\n if (\"Ok\" in res) {\n return res.Ok;\n }\n throw Error(JSON.stringify(res.Err));\n }\n\n async logo?() {\n try {\n const asset = (await import(`../logos/${ICP_CANISTER_ID}.js`)).default;\n return `data:image/svg+xml,${encodeURIComponent(\n asset.replace(/[\\n\\r]/g, \"\")\n ).replace(/%[\\dA-F]{2}/g, (match: string) => {\n switch (match) {\n case \"%20\":\n return \" \";\n case \"%3D\":\n return \"=\";\n case \"%3A\":\n return \":\";\n case \"%2F\":\n return \"/\";\n default:\n return match.toLowerCase();\n }\n })}`;\n } catch (_) {\n // Asset could not be loaded\n }\n }\n}\n","export const idlFactory = ({ IDL }) => {\n const SubAccount__1 = IDL.Vec(IDL.Nat8);\n const TokenIndex = IDL.Nat32;\n const AccountIdentifier__1 = IDL.Text;\n const Settlement = IDL.Record({\n subaccount: SubAccount__1,\n seller: IDL.Principal,\n buyer: AccountIdentifier__1,\n price: IDL.Nat64,\n });\n const TokenIdentifier = IDL.Text;\n const AccountIdentifier = IDL.Text;\n const User = IDL.Variant({\n principal: IDL.Principal,\n address: AccountIdentifier,\n });\n const BalanceRequest = IDL.Record({\n token: TokenIdentifier,\n user: User,\n });\n const Balance = IDL.Nat;\n const CommonError__1 = IDL.Variant({\n InvalidToken: TokenIdentifier,\n Other: IDL.Text,\n });\n const BalanceResponse = IDL.Variant({\n ok: Balance,\n err: CommonError__1,\n });\n const TokenIdentifier__1 = IDL.Text;\n const CommonError = IDL.Variant({\n InvalidToken: TokenIdentifier,\n Other: IDL.Text,\n });\n const Result_7 = IDL.Variant({\n ok: AccountIdentifier__1,\n err: CommonError,\n });\n const Time = IDL.Int;\n const Listing = IDL.Record({\n locked: IDL.Opt(Time),\n seller: IDL.Principal,\n price: IDL.Nat64,\n });\n const Result_8 = IDL.Variant({\n ok: IDL.Tuple(AccountIdentifier__1, IDL.Opt(Listing)),\n err: CommonError,\n });\n const Extension = IDL.Text;\n const Metadata = IDL.Variant({\n fungible: IDL.Record({\n decimals: IDL.Nat8,\n metadata: IDL.Opt(IDL.Vec(IDL.Nat8)),\n name: IDL.Text,\n symbol: IDL.Text,\n }),\n nonfungible: IDL.Record({ metadata: IDL.Opt(IDL.Vec(IDL.Nat8)) }),\n });\n const HeaderField = IDL.Tuple(IDL.Text, IDL.Text);\n const HttpRequest = IDL.Record({\n url: IDL.Text,\n method: IDL.Text,\n body: IDL.Vec(IDL.Nat8),\n headers: IDL.Vec(HeaderField),\n });\n const HttpStreamingCallbackToken = IDL.Record({\n key: IDL.Text,\n sha256: IDL.Opt(IDL.Vec(IDL.Nat8)),\n index: IDL.Nat,\n content_encoding: IDL.Text,\n });\n const HttpStreamingCallbackResponse = IDL.Record({\n token: IDL.Opt(HttpStreamingCallbackToken),\n body: IDL.Vec(IDL.Nat8),\n });\n const HttpStreamingStrategy = IDL.Variant({\n Callback: IDL.Record({\n token: HttpStreamingCallbackToken,\n callback: IDL.Func(\n [HttpStreamingCallbackToken],\n [HttpStreamingCallbackResponse],\n ['query'],\n ),\n }),\n });\n const HttpResponse = IDL.Record({\n body: IDL.Vec(IDL.Nat8),\n headers: IDL.Vec(HeaderField),\n streaming_strategy: IDL.Opt(HttpStreamingStrategy),\n status_code: IDL.Nat16,\n });\n const ListRequest = IDL.Record({\n token: TokenIdentifier__1,\n from_subaccount: IDL.Opt(SubAccount__1),\n price: IDL.Opt(IDL.Nat64),\n });\n const Result_3 = IDL.Variant({ ok: IDL.Null, err: CommonError });\n const Result_6 = IDL.Variant({ ok: Metadata, err: CommonError });\n const MintingRequest = IDL.Record({\n to: AccountIdentifier__1,\n asset: IDL.Nat32,\n });\n const Result_5 = IDL.Variant({\n ok: IDL.Tuple(AccountIdentifier__1, IDL.Nat64),\n err: IDL.Text,\n });\n const Result_4 = IDL.Variant({ ok: IDL.Null, err: IDL.Text });\n const SaleTransaction = IDL.Record({\n time: Time,\n seller: IDL.Principal,\n tokens: IDL.Vec(TokenIndex),\n buyer: AccountIdentifier__1,\n price: IDL.Nat64,\n });\n const Sale = IDL.Record({\n expires: Time,\n subaccount: SubAccount__1,\n tokens: IDL.Vec(TokenIndex),\n buyer: AccountIdentifier__1,\n price: IDL.Nat64,\n });\n const Balance__1 = IDL.Nat;\n const Result_2 = IDL.Variant({ ok: Balance__1, err: CommonError });\n const Result_1 = IDL.Variant({\n ok: IDL.Vec(TokenIndex),\n err: CommonError,\n });\n const Result = IDL.Variant({\n ok: IDL.Vec(\n IDL.Tuple(TokenIndex, IDL.Opt(Listing), IDL.Opt(IDL.Vec(IDL.Nat8))),\n ),\n err: CommonError,\n });\n const Transaction = IDL.Record({\n token: TokenIdentifier__1,\n time: Time,\n seller: IDL.Principal,\n buyer: AccountIdentifier__1,\n price: IDL.Nat64,\n });\n const Memo = IDL.Vec(IDL.Nat8);\n const SubAccount = IDL.Vec(IDL.Nat8);\n const TransferRequest = IDL.Record({\n to: User,\n token: TokenIdentifier,\n notify: IDL.Bool,\n from: User,\n memo: Memo,\n subaccount: IDL.Opt(SubAccount),\n amount: Balance,\n });\n const TransferResponse = IDL.Variant({\n ok: Balance,\n err: IDL.Variant({\n CannotNotify: AccountIdentifier,\n InsufficientBalance: IDL.Null,\n InvalidToken: TokenIdentifier,\n Rejected: IDL.Null,\n Unauthorized: AccountIdentifier,\n Other: IDL.Text,\n }),\n });\n return IDL.Service({\n acceptCycles: IDL.Func([], [], []),\n addAsset: IDL.Func([IDL.Text, IDL.Text], [IDL.Text], []),\n adminKillHeartbeat: IDL.Func([], [], []),\n adminStartHeartbeat: IDL.Func([], [], []),\n allPayments: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(IDL.Principal, IDL.Vec(SubAccount__1)))],\n ['query'],\n ),\n allSettlements: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(TokenIndex, Settlement))],\n ['query'],\n ),\n availableCycles: IDL.Func([], [IDL.Nat], ['query']),\n balance: IDL.Func([BalanceRequest], [BalanceResponse], ['query']),\n bearer: IDL.Func([TokenIdentifier__1], [Result_7], ['query']),\n clearPayments: IDL.Func([IDL.Principal, IDL.Vec(SubAccount__1)], [], []),\n cronCapEvents: IDL.Func([], [], []),\n cronDisbursements: IDL.Func([], [], []),\n cronSettlements: IDL.Func([], [], []),\n details: IDL.Func([TokenIdentifier__1], [Result_8], ['query']),\n extensions: IDL.Func([], [IDL.Vec(Extension)], ['query']),\n failedSales: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(AccountIdentifier__1, SubAccount__1))],\n ['query'],\n ),\n getAsset: IDL.Func([IDL.Text], [IDL.Opt(IDL.Text)], []),\n getAssetHandles: IDL.Func([], [IDL.Vec(IDL.Text)], ['query']),\n getMinter: IDL.Func([], [IDL.Principal], ['query']),\n getRegistry: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(TokenIndex, AccountIdentifier__1))],\n ['query'],\n ),\n getTokens: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(TokenIndex, Metadata))],\n ['query'],\n ),\n historicExport: IDL.Func([], [IDL.Bool], []),\n http_request: IDL.Func([HttpRequest], [HttpResponse], ['query']),\n http_request_streaming_callback: IDL.Func(\n [HttpStreamingCallbackToken],\n [HttpStreamingCallbackResponse],\n ['query'],\n ),\n initCap: IDL.Func([], [], []),\n list: IDL.Func([ListRequest], [Result_3], []),\n listings: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(TokenIndex, Listing, Metadata))],\n ['query'],\n ),\n lock: IDL.Func(\n [TokenIdentifier__1, IDL.Nat64, AccountIdentifier__1, SubAccount__1],\n [Result_7],\n [],\n ),\n metadata: IDL.Func([TokenIdentifier__1], [Result_6], ['query']),\n mintNFT: IDL.Func([MintingRequest], [TokenIndex], []),\n payments: IDL.Func([], [IDL.Opt(IDL.Vec(SubAccount__1))], ['query']),\n reserve: IDL.Func(\n [IDL.Nat64, IDL.Nat64, AccountIdentifier__1, SubAccount__1],\n [Result_5],\n [],\n ),\n retreive: IDL.Func([AccountIdentifier__1], [Result_4], []),\n saleTransactions: IDL.Func([], [IDL.Vec(SaleTransaction)], ['query']),\n salesSettlements: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(AccountIdentifier__1, Sale))],\n ['query'],\n ),\n salesStats: IDL.Func(\n [AccountIdentifier__1],\n [Time, IDL.Nat64, IDL.Nat],\n ['query'],\n ),\n setMinter: IDL.Func([IDL.Principal], [], []),\n settle: IDL.Func([TokenIdentifier__1], [Result_3], []),\n settlements: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(TokenIndex, AccountIdentifier__1, IDL.Nat64))],\n ['query'],\n ),\n stats: IDL.Func(\n [],\n [IDL.Nat64, IDL.Nat64, IDL.Nat64, IDL.Nat64, IDL.Nat, IDL.Nat, IDL.Nat],\n ['query'],\n ),\n supply: IDL.Func([TokenIdentifier__1], [Result_2], ['query']),\n tokens: IDL.Func([AccountIdentifier__1], [Result_1], ['query']),\n tokens_ext: IDL.Func([AccountIdentifier__1], [Result], ['query']),\n transactions: IDL.Func([], [IDL.Vec(Transaction)], ['query']),\n transfer: IDL.Func([TransferRequest], [TransferResponse], []),\n });\n};\nexport const init = ({ IDL }) => {\n return [];\n};\n","import {\n bigintToUint64,\n IdentifiedCall,\n numberFromUint32,\n subaccountFromIndex,\n TokenManagerConfig,\n} from \"../index\";\nimport { Actor, ActorConfig, ActorSubclass, HttpAgent } from \"@dfinity/agent\";\nimport { _SERVICE } from \"./ext/ext.did\";\nimport { idlFactory } from \"./ext\";\nimport {\n accountHashFromString,\n accountToHash,\n actorOrigin,\n numberToUint32,\n urlIsImage,\n} from \"../utils\";\nimport { BaseToken, Token } from \"./token\";\nimport { Principal } from \"@dfinity/principal\";\nimport { Buffer } from \"buffer\";\nimport { Value } from \"./icrc1/icrc1.did\";\n\nexport const EXT_COMMON = \"@ext/common\";\nexport const EXT_NON_FUNGIBLE = \"@ext/nonfungible\";\nexport type EXT_TYPE = typeof EXT_COMMON | typeof EXT_NON_FUNGIBLE;\n\nexport const ENTREPOT_COLLECTIONS_API =\n \"https://us-central1-entrepot-api.cloudfunctions.net/api/collections\";\nexport const ENTREPOT_FILTERS_API =\n \"https://corsproxy.io/?https://entrepot.app/filter\"; // Cors proxy is needed since CORS headers are missing\n\nexport const tokenIdToExtTokenId = (canisterId: Principal, index: bigint) => {\n const padding = new Buffer(\"\\x0Atid\");\n const array = new Uint8Array([\n ...padding,\n ...canisterId.toUint8Array(),\n ...Array.from(numberToUint32(Number(index), false)),\n ]);\n return Principal.fromUint8Array(array);\n};\n\nexport const tokenIdTFromExtTokenId = (id: Principal) => {\n const bytes = id.toUint8Array();\n const padding = Uint8Array.from(new Buffer(\"\\x0Atid\"));\n if (\n bytes.length < padding.length ||\n !padding.every((byte, index) => byte === bytes[index])\n ) {\n throw Error(\"Invalid ext token id\");\n }\n return BigInt(numberFromUint32(bytes.slice(-4), false));\n};\n\nexport type ExtMethods =\n (T extends typeof EXT_COMMON\n ? Pick<\n Token,\n | \"metadata\"\n | \"name\"\n | \"symbol\"\n | \"mintingAccount\"\n | \"balanceOf\"\n | \"transfer\"\n | \"logo\"\n >\n : {}) &\n (T extends typeof EXT_NON_FUNGIBLE\n ? Pick<\n Token,\n | \"totalSupply\"\n | \"ownerOf\"\n | \"tokens\"\n | \"tokensOf\"\n | \"assetOf\"\n | \"imageOf\"\n | \"attributesOf\"\n >\n : {});\n\nexport class ExtToken extends BaseToken implements Partial {\n static implementedStandards = [EXT_COMMON, EXT_NON_FUNGIBLE] as const;\n static accountType = \"hash\" as const;\n\n private readonly _actor: ActorSubclass<_SERVICE>;\n\n protected constructor({\n supportedStandards = [],\n ...actorConfig\n }: TokenManagerConfig) {\n super({ supportedStandards, ...actorConfig });\n this._actor = ExtToken.createActor(actorConfig);\n\n // Disable methods for unsupported standards\n if (!supportedStandards.includes(EXT_COMMON)) {\n this.metadata = undefined;\n this.name = undefined;\n this.symbol = undefined;\n this.mintingAccount = undefined;\n this.balanceOf = undefined;\n this.transfer = undefined;\n this.logo = undefined;\n }\n if (!supportedStandards.includes(EXT_NON_FUNGIBLE)) {\n this.totalSupply = undefined;\n this.ownerOf = undefined;\n this.tokens = undefined;\n this.tokensOf = undefined;\n this.assetOf = undefined;\n this.imageOf = undefined;\n this.attributesOf = undefined;\n }\n }\n\n static create(config: TokenManagerConfig) {\n return new ExtToken(config) as unknown as BaseToken & ExtMethods;\n }\n\n static createActor(config: ActorConfig): ActorSubclass<_SERVICE> {\n return Actor.createActor(idlFactory, config);\n }\n\n static async supportedStandards(\n config: ActorConfig\n ): Promise> {\n try {\n return (\n await Actor.createActor<_SERVICE>(idlFactory, config).extensions()\n ).map((name) => ({\n name,\n url: \"https://github.com/Toniq-Labs/extendable-token\",\n }));\n } catch (_) {\n return [];\n }\n }\n\n static tokenType(supportedStandards: string[]) {\n if (supportedStandards.includes(EXT_NON_FUNGIBLE)) {\n return \"nonFungible\";\n }\n return \"fungible\" as const;\n }\n\n static identifyCall(\n methodName: string,\n args: any[]\n ): IdentifiedCall | undefined {\n switch (methodName) {\n case \"transfer\":\n return {\n methodName: \"transfer\",\n args: [\n {\n to: args[0].to.address,\n amount: args[0].amount,\n tokenId: (args[0].token\n ? tokenIdTFromExtTokenId(Principal.fromText(args[0].token))\n : undefined) as any,\n memo: args[0].memo,\n },\n ],\n };\n }\n }\n\n async metadata?() {\n return [\n [`${EXT_COMMON}:name`, { Text: await this.name!() }],\n [`${EXT_COMMON}:symbol`, { Text: await this.symbol!() }],\n [`${EXT_COMMON}:total_supply`, { Text: await this.totalSupply!() }],\n ] as Array<[string, Value]>;\n }\n\n async name?() {\n // Grab collection name from index page with regex since the canister has no name or metadata method\n const res = await this._actor.http_request({\n body: new Uint8Array(),\n headers: [],\n method: \"GET\",\n url: \"/\",\n });\n\n // Exceptions that do not return a correct name\n switch (Actor.canisterIdOf(this._actor).toText()) {\n case \"oeee4-qaaaa-aaaak-qaaeq-cai\":\n return \"Motoko Ghosts\";\n case \"bzsui-sqaaa-aaaah-qce2a-cai\":\n return \"Poked Bots\";\n case \"dhiaa-ryaaa-aaaae-qabva-cai\":\n return \"ETH Flower\";\n }\n\n // Get name from canister status page\n if (res.status_code === 200) {\n const re = /^(.+?)\\n(?:EXT by|---)/;\n const body = new TextDecoder().decode(res.body as unknown as Uint8Array);\n const matches = re.exec(body);\n if (matches) {\n return matches[1];\n }\n }\n\n // Above might not always work since it's a hacky workaround at best,\n // this second attempt we check if the entrepot backend might contain the name\n try {\n const collections = await (\n await fetch(\n \"https://us-central1-entrepot-api.cloudfunctions.net/api/collections\"\n )\n ).json();\n const name = collections.find(\n (c: any) => c.id === Actor.canisterIdOf(this._actor).toText()\n )?.name;\n if (name) {\n return name;\n }\n } catch (_) {}\n\n return this._config.supportedStandards?.includes(EXT_NON_FUNGIBLE)\n ? \"Non-fungible token\"\n : \"Token\";\n }\n\n async symbol?() {\n // Check if the entrepot backend might contain the symbol\n try {\n const collections = await (\n await fetch(\n \"https://us-central1-entrepot-api.cloudfunctions.net/api/collections\"\n )\n ).json();\n const unit = collections\n .find((c: any) => c.id === Actor.canisterIdOf(this._actor).toText())\n ?.unit?.trim();\n if (unit) {\n return unit\n .toUpperCase()\n .replace(/[^A-Z]/g, \"\")\n .slice(unit.startsWith(\"IC\") ? 2 : 0);\n }\n } catch (_) {}\n\n return this._config.supportedStandards?.includes(EXT_NON_FUNGIBLE)\n ? \"NFT\"\n : \"TKN\";\n }\n\n async totalSupply?() {\n return BigInt((await this._actor.getTokens()).length);\n }\n\n async mintingAccount?() {\n return (await this._actor.getMinter()).toText();\n }\n\n async balanceOf?(account: string) {\n // Count tokens to get balance\n const res = await this._actor.tokens(accountHashFromString(account));\n if (\"ok\" in res) {\n return BigInt(res.ok.length);\n }\n return BigInt(0);\n }\n\n async ownerOf?(tokenId: bigint) {\n // Get registry with all tokens and owners and return owner for token\n const res = await this._actor.getRegistry();\n return res.find(([id]) => id === Number(tokenId))?.[1];\n }\n\n async tokens?() {\n return (await this._actor.getTokens())\n .map(([tokenId]) => BigInt(tokenId))\n .sort((a, b) => (a > b ? 1 : a < b ? -1 : 0));\n }\n\n async tokensOf?(account: string) {\n const res = await this._actor.tokens(accountHashFromString(account));\n if (\"ok\" in res) {\n return Array.from(res.ok)\n .map((tokenId) => BigInt(tokenId))\n .sort((a, b) => (a > b ? 1 : a < b ? -1 : 0));\n }\n return [];\n }\n\n async transfer?(\n args: {\n to: string;\n fromSubaccount?: Uint8Array;\n memo?: Uint8Array;\n createdAtTime?: bigint;\n } & ({ tokenId: bigint } | { amount: bigint })\n ): Promise {\n const canisterId = Actor.canisterIdOf(this._actor);\n const from = await Actor.agentOf(this._actor)?.getPrincipal();\n if (!from) {\n throw Error(\"Agent with principal is required\");\n }\n const res = await this._actor.transfer({\n amount: \"amount\" in args ? args.amount : BigInt(1),\n from: {\n address: accountToHash({\n owner: from,\n subaccount: args.fromSubaccount,\n }),\n },\n memo: args.memo ? args.memo : Uint8Array.from([0]),\n notify: false,\n subaccount: args.fromSubaccount ? [args.fromSubaccount] : [],\n to: { address: accountHashFromString(args.to) },\n token:\n \"tokenId\" in args\n ? tokenIdToExtTokenId(canisterId, args.tokenId).toText()\n : \"\",\n });\n if (\"ok\" in res) {\n // EXT does not return transaction id\n return BigInt(0);\n }\n throw Error(JSON.stringify(res.err));\n }\n\n async icon?() {\n // TODO\n return \"\";\n }\n\n async logo?() {\n try {\n const collections = await (await fetch(ENTREPOT_COLLECTIONS_API)).json();\n const canisterId = Actor.canisterIdOf(this._actor);\n const logoFromCanisterIdUrl = `https://entrepot.app/collections/${canisterId.toText()}.jpg`;\n const avatar = collections.find(\n (c: any) => c.id === Actor.canisterIdOf(this._actor).toText()\n )?.avatar;\n if (avatar) {\n if (avatar?.startsWith(\"https://\") || avatar?.startsWith(\"http://\")) {\n return avatar;\n }\n return `https://entrepot.app${avatar}`;\n }\n if (await urlIsImage(logoFromCanisterIdUrl)) {\n return logoFromCanisterIdUrl;\n }\n } catch (_) {}\n }\n\n async assetOf?(tokenId: bigint) {\n const canisterId = Actor.canisterIdOf(this._actor);\n return {\n location: `${actorOrigin(\n this._actor,\n true\n )}/?tokenid=${tokenIdToExtTokenId(canisterId, tokenId).toText()}`,\n };\n }\n\n async imageOf?(tokenId: bigint) {\n const canisterId = Actor.canisterIdOf(this._actor);\n const image = `${actorOrigin(\n this._actor,\n true\n )}/?tokenid=${tokenIdToExtTokenId(\n canisterId,\n tokenId\n ).toText()}&type=thumbnail`;\n\n // Exceptions that return an SVG image that fetches the actual image with JS,\n // since this method intends to return images that can be actually rendered as image,\n // we'll fetch this image url and return it instead.\n switch (canisterId.toText()) {\n case \"pk6rk-6aaaa-aaaae-qaazq-cai\":\n case \"dhiaa-ryaaa-aaaae-qabva-cai\":\n case \"skjpp-haaaa-aaaae-qac7q-cai\":\n return fetch(image)\n .then((res) => res.text())\n .then(\n (text) => /fetch\\([\"'](.*\\.svg)[\"']\\)/.exec(text)?.[1] ?? undefined\n );\n }\n\n return image;\n }\n\n async attributesOf?(tokenId: bigint) {\n const canisterId = Actor.canisterIdOf(this._actor);\n const filter = await fetch(\n `${ENTREPOT_FILTERS_API}/${canisterId.toText()}.json`\n )\n .then((res) => res.json())\n .catch(() => undefined);\n if (!filter) {\n return;\n }\n return filter[1]\n .find(([tokenIndex]: [number]) => tokenIndex === Number(tokenId))?.[1]\n ?.map(([traitTypeIndex, valueIndex]: [number, number]) => {\n const trait = filter[0].find(\n ([_traitTypeIndex]: [number]) => _traitTypeIndex === traitTypeIndex\n );\n return {\n value: {\n Text:\n trait?.[2]?.find(\n ([_valueIndex]: [number]) => _valueIndex === valueIndex\n )?.[1] ?? \"\",\n },\n traitType: trait?.[1],\n };\n });\n }\n}\n","export const idlFactory = ({ IDL }) => {\n const Vec = IDL.Rec();\n const InitArgs = IDL.Record({\n cap: IDL.Opt(IDL.Principal),\n logo: IDL.Opt(IDL.Text),\n name: IDL.Opt(IDL.Text),\n custodians: IDL.Opt(IDL.Vec(IDL.Principal)),\n symbol: IDL.Opt(IDL.Text),\n });\n const NftError = IDL.Variant({\n UnauthorizedOperator: IDL.Null,\n SelfTransfer: IDL.Null,\n TokenNotFound: IDL.Null,\n UnauthorizedOwner: IDL.Null,\n SelfApprove: IDL.Null,\n OperatorNotFound: IDL.Null,\n ExistedNFT: IDL.Null,\n OwnerNotFound: IDL.Null,\n });\n const Result = IDL.Variant({ Ok: IDL.Nat, Err: NftError });\n const Result_1 = IDL.Variant({ Ok: IDL.Bool, Err: NftError });\n const ManualReply = IDL.Record({\n logo: IDL.Opt(IDL.Text),\n name: IDL.Opt(IDL.Text),\n created_at: IDL.Nat64,\n upgraded_at: IDL.Nat64,\n custodians: IDL.Vec(IDL.Principal),\n symbol: IDL.Opt(IDL.Text),\n });\n Vec.fill(\n IDL.Vec(\n IDL.Tuple(\n IDL.Text,\n IDL.Variant({\n Nat64Content: IDL.Nat64,\n Nat32Content: IDL.Nat32,\n BoolContent: IDL.Bool,\n Nat8Content: IDL.Nat8,\n Int64Content: IDL.Int64,\n IntContent: IDL.Int,\n NatContent: IDL.Nat,\n Nat16Content: IDL.Nat16,\n Int32Content: IDL.Int32,\n Int8Content: IDL.Int8,\n FloatContent: IDL.Float64,\n Int16Content: IDL.Int16,\n BlobContent: IDL.Vec(IDL.Nat8),\n NestedContent: Vec,\n Principal: IDL.Principal,\n TextContent: IDL.Text,\n }),\n ),\n ),\n );\n const GenericValue = IDL.Variant({\n Nat64Content: IDL.Nat64,\n Nat32Content: IDL.Nat32,\n BoolContent: IDL.Bool,\n Nat8Content: IDL.Nat8,\n Int64Content: IDL.Int64,\n IntContent: IDL.Int,\n NatContent: IDL.Nat,\n Nat16Content: IDL.Nat16,\n Int32Content: IDL.Int32,\n Int8Content: IDL.Int8,\n FloatContent: IDL.Float64,\n Int16Content: IDL.Int16,\n BlobContent: IDL.Vec(IDL.Nat8),\n NestedContent: Vec,\n Principal: IDL.Principal,\n TextContent: IDL.Text,\n });\n const Result_2 = IDL.Variant({\n Ok: IDL.Opt(IDL.Principal),\n Err: NftError,\n });\n const ManualReply_1 = IDL.Variant({\n Ok: IDL.Vec(IDL.Nat),\n Err: NftError,\n });\n const TokenMetadata = IDL.Record({\n transferred_at: IDL.Opt(IDL.Nat64),\n transferred_by: IDL.Opt(IDL.Principal),\n owner: IDL.Opt(IDL.Principal),\n operator: IDL.Opt(IDL.Principal),\n approved_at: IDL.Opt(IDL.Nat64),\n approved_by: IDL.Opt(IDL.Principal),\n properties: IDL.Vec(IDL.Tuple(IDL.Text, GenericValue)),\n is_burned: IDL.Bool,\n token_identifier: IDL.Nat,\n burned_at: IDL.Opt(IDL.Nat64),\n burned_by: IDL.Opt(IDL.Principal),\n minted_at: IDL.Nat64,\n minted_by: IDL.Principal,\n });\n const ManualReply_2 = IDL.Variant({\n Ok: IDL.Vec(TokenMetadata),\n Err: NftError,\n });\n const Stats = IDL.Record({\n cycles: IDL.Nat,\n total_transactions: IDL.Nat,\n total_unique_holders: IDL.Nat,\n total_supply: IDL.Nat,\n });\n const SupportedInterface = IDL.Variant({\n Burn: IDL.Null,\n Mint: IDL.Null,\n Approval: IDL.Null,\n });\n const ManualReply_3 = IDL.Variant({ Ok: TokenMetadata, Err: NftError });\n return IDL.Service({\n dip721_approve: IDL.Func([IDL.Principal, IDL.Nat], [Result], []),\n dip721_balance_of: IDL.Func([IDL.Principal], [Result], ['query']),\n dip721_burn: IDL.Func([IDL.Nat], [Result], []),\n dip721_custodians: IDL.Func([], [IDL.Vec(IDL.Principal)], ['query']),\n dip721_cycles: IDL.Func([], [IDL.Nat], ['query']),\n dip721_is_approved_for_all: IDL.Func(\n [IDL.Principal, IDL.Principal],\n [Result_1],\n ['query'],\n ),\n dip721_logo: IDL.Func([], [IDL.Opt(IDL.Text)], ['query']),\n dip721_metadata: IDL.Func([], [ManualReply], ['query']),\n dip721_mint: IDL.Func(\n [IDL.Principal, IDL.Nat, IDL.Vec(IDL.Tuple(IDL.Text, GenericValue))],\n [Result],\n [],\n ),\n dip721_name: IDL.Func([], [IDL.Opt(IDL.Text)], ['query']),\n dip721_operator_of: IDL.Func([IDL.Nat], [Result_2], ['query']),\n dip721_operator_token_identifiers: IDL.Func(\n [IDL.Principal],\n [ManualReply_1],\n ['query'],\n ),\n dip721_operator_token_metadata: IDL.Func(\n [IDL.Principal],\n [ManualReply_2],\n ['query'],\n ),\n dip721_owner_of: IDL.Func([IDL.Nat], [Result_2], ['query']),\n dip721_owner_token_identifiers: IDL.Func(\n [IDL.Principal],\n [ManualReply_1],\n ['query'],\n ),\n dip721_owner_token_metadata: IDL.Func(\n [IDL.Principal],\n [ManualReply_2],\n ['query'],\n ),\n dip721_set_approval_for_all: IDL.Func(\n [IDL.Principal, IDL.Bool],\n [Result],\n [],\n ),\n dip721_set_custodians: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n dip721_set_logo: IDL.Func([IDL.Text], [], []),\n dip721_set_name: IDL.Func([IDL.Text], [], []),\n dip721_set_symbol: IDL.Func([IDL.Text], [], []),\n dip721_stats: IDL.Func([], [Stats], ['query']),\n dip721_supported_interfaces: IDL.Func(\n [],\n [IDL.Vec(SupportedInterface)],\n ['query'],\n ),\n dip721_symbol: IDL.Func([], [IDL.Opt(IDL.Text)], ['query']),\n dip721_token_metadata: IDL.Func([IDL.Nat], [ManualReply_3], ['query']),\n dip721_total_supply: IDL.Func([], [IDL.Nat], ['query']),\n dip721_total_transactions: IDL.Func([], [IDL.Nat], ['query']),\n dip721_total_unique_holders: IDL.Func([], [IDL.Nat], ['query']),\n dip721_transfer: IDL.Func([IDL.Principal, IDL.Nat], [Result], []),\n dip721_transfer_from: IDL.Func(\n [IDL.Principal, IDL.Principal, IDL.Nat],\n [Result],\n [],\n ),\n });\n};\nexport const init = ({ IDL }) => {\n const InitArgs = IDL.Record({\n cap: IDL.Opt(IDL.Principal),\n logo: IDL.Opt(IDL.Text),\n name: IDL.Opt(IDL.Text),\n custodians: IDL.Opt(IDL.Vec(IDL.Principal)),\n symbol: IDL.Opt(IDL.Text),\n });\n return [IDL.Opt(InitArgs)];\n};\n","import { Actor, ActorConfig, ActorSubclass } from \"@dfinity/agent\";\nimport { _SERVICE, GenericValue } from \"./dip721V2/dip721V2.did\";\nimport { idlFactory } from \"./dip721V2\";\nimport { principalFromString } from \"../utils\";\nimport {\n IdentifiedCall,\n tokenIdTFromExtTokenId,\n TokenManagerConfig,\n} from \"../index\";\nimport { BaseToken, Token } from \"./token\";\nimport { Principal } from \"@dfinity/principal\";\nimport { Value } from \"./icrc1/icrc1.did\";\n\nexport const DIP721_V2 = \"dip721_v2\";\nexport const DIP721_V2_MINT = \"dip721_v2_mint\";\nexport const DIP721_V2_BURN = \"dip721_v2_burn\";\nexport const DIP721_V2_APPROVAL = \"dip721_v2_approval\";\n\nexport type DIP721_V2_TYPE =\n | typeof DIP721_V2\n | typeof DIP721_V2_MINT\n | typeof DIP721_V2_BURN\n | typeof DIP721_V2_APPROVAL;\n\nconst flattenMetadataEntry = ([key, value]: [string, GenericValue]): Array<\n [string, Value]\n> => {\n const natValueKey = (\n [\n \"NatContent\",\n \"Nat64Content\",\n \"Nat32Content\",\n \"Nat16Content\",\n \"Nat8Content\",\n ] as Array\n ).find((k) => k in value);\n if (natValueKey) {\n return [[key, { Nat: BigInt(value[natValueKey]) }]];\n }\n const intValueKey = (\n [\n \"IntContent\",\n \"Int64Content\",\n \"Int32Content\",\n \"Int16Content\",\n \"Int8Content\",\n ] as Array\n ).find((k) => k in value);\n if (intValueKey) {\n return [[key, { Nat: BigInt(value[intValueKey]) }]];\n }\n if (\"FloatContent\" in value) {\n return [[key, { Text: value.FloatContent.toString() }]];\n }\n if (\"BoolContent\" in value) {\n return [[key, { Nat: BigInt(value.BoolContent ? 1 : 0) }]];\n }\n if (\"BlobContent\" in value) {\n return [[key, { Blob: value.BlobContent }]];\n }\n if (\"Principal\" in value) {\n return [[key, { Text: value.Principal.toText() }]];\n }\n if (\"TextContent\" in value) {\n return [[key, { Text: value.TextContent }]];\n }\n if (\"NestedContent\" in value) {\n return value.NestedContent.map(([nestedKey, nestedValue]) =>\n flattenMetadataEntry([key + \":\" + nestedKey, nestedValue])\n ).flat();\n }\n throw Error(\"DIP721 V2 metadata value could not be converted to value\");\n};\n\nexport type Dip721V2Methods =\n (T extends typeof DIP721_V2\n ? Pick<\n Token,\n | \"metadata\"\n | \"name\"\n | \"symbol\"\n | \"totalSupply\"\n | \"mintingAccount\"\n | \"balanceOf\"\n | \"ownerOf\"\n | \"tokens\"\n | \"tokensOf\"\n | \"transfer\"\n | \"getCustodians\"\n | \"setCustodian\"\n | \"logo\"\n >\n : {}) &\n (T extends typeof DIP721_V2_APPROVAL\n ? Pick<\n Token,\n \"approve\" | \"setApprovalForAll\" | \"isApprovedForAll\" | \"transferFrom\"\n >\n : {});\n\nexport class Dip721V2Token extends BaseToken implements Partial {\n static implementedStandards = [\n DIP721_V2,\n DIP721_V2_MINT,\n DIP721_V2_BURN,\n DIP721_V2_APPROVAL,\n ] as const;\n static accountType = \"principal\" as const;\n\n private readonly _actor: ActorSubclass<_SERVICE>;\n\n protected constructor({\n supportedStandards = [],\n ...actorConfig\n }: TokenManagerConfig) {\n super({ supportedStandards: supportedStandards, ...actorConfig });\n this._actor = Dip721V2Token.createActor(actorConfig);\n\n // Disable methods for unsupported standards\n if (!supportedStandards.includes(DIP721_V2)) {\n this.metadata = undefined;\n this.name = undefined;\n this.symbol = undefined;\n this.totalSupply = undefined;\n this.mintingAccount = undefined;\n this.balanceOf = undefined;\n this.ownerOf = undefined;\n this.tokens = undefined;\n this.tokensOf = undefined;\n this.transfer = undefined;\n this.getCustodians = undefined;\n this.setCustodian = undefined;\n this.logo = undefined;\n }\n if (!supportedStandards.includes(DIP721_V2_APPROVAL)) {\n this.approve = undefined;\n this.setApprovalForAll = undefined;\n this.isApprovedForAll = undefined;\n this.transferFrom = undefined;\n }\n }\n\n static create(config: TokenManagerConfig) {\n return new Dip721V2Token(config) as unknown as BaseToken &\n Dip721V2Methods;\n }\n\n static createActor(config: ActorConfig): ActorSubclass<_SERVICE> {\n return Actor.createActor(idlFactory, config);\n }\n\n static async supportedStandards(\n config: ActorConfig\n ): Promise> {\n try {\n const res = await Actor.createActor<_SERVICE>(\n idlFactory,\n config\n ).dip721_supported_interfaces();\n return [\n DIP721_V2,\n ...res.map((supportedInterface) =>\n \"Mint\" in supportedInterface\n ? DIP721_V2_MINT\n : \"Burn\" in supportedInterface\n ? DIP721_V2_BURN\n : DIP721_V2_APPROVAL\n ),\n ].map((name) => ({\n name,\n url: \"https://github.com/Psychedelic/DIP721\",\n }));\n } catch (_) {\n return [];\n }\n }\n\n static tokenType() {\n return \"nonFungible\" as const;\n }\n\n static identifyCall(\n methodName: string,\n args: any[]\n ): IdentifiedCall | undefined {\n return;\n }\n\n async metadata?() {\n const res = await this._actor.dip721_metadata();\n const metadata: Array<[string, Value]> = [\n [`${DIP721_V2}:created_at`, { Nat: res.created_at }],\n [`${DIP721_V2}:upgraded_at`, { Nat: res.upgraded_at }],\n ...res.custodians.map(\n (custodian) =>\n [`${DIP721_V2}:custodians`, { Text: custodian.toText() }] as [\n string,\n Value\n ]\n ),\n ];\n if (res.name.length) {\n metadata.push([`${DIP721_V2}:name`, { Text: res.name[0] }]);\n }\n if (res.symbol.length) {\n metadata.push([`${DIP721_V2}:symbol`, { Text: res.symbol[0] }]);\n }\n if (res.logo.length) {\n metadata.push([`${DIP721_V2}:logo`, { Text: res.logo[0] }]);\n }\n return metadata;\n }\n\n async name?() {\n return (await this._actor.dip721_name())[0] ?? \"Collection\";\n }\n\n async symbol?() {\n return (await this._actor.dip721_symbol())[0] ?? \"NFT\";\n }\n\n async totalSupply?() {\n return this._actor.dip721_total_supply();\n }\n\n async mintingAccount?() {\n const canisterId = await Actor.agentOf(this._actor)?.getPrincipal();\n if (!canisterId) {\n throw Error(\"Agent with principal is required\");\n }\n return canisterId.toText();\n }\n\n async balanceOf?(account: string) {\n const res = await this._actor.dip721_balance_of(\n principalFromString(account)\n );\n return \"Ok\" in res ? res.Ok : BigInt(0);\n }\n\n async ownerOf?(tokenId: bigint) {\n const res = await this._actor.dip721_owner_of(tokenId);\n return \"Ok\" in res ? res.Ok[0]?.toText() : undefined;\n }\n\n async tokens?() {\n // Get all tokens based on total supply, this does include burned tokens\n const totalSupply = (await this.totalSupply?.()) ?? BigInt(0);\n return Array.from({ length: Number(totalSupply) }).map((_, index) =>\n BigInt(index)\n );\n }\n\n async tokensOf?(account: string) {\n const res = await this._actor.dip721_owner_token_metadata(\n principalFromString(account)\n );\n return \"Ok\" in res\n ? res.Ok.map((tokenMetadata) => tokenMetadata.token_identifier)\n : [];\n }\n\n async metadataOf?(tokenId: bigint) {\n const res = await this._actor.dip721_token_metadata(tokenId);\n if (\"Ok\" in res) {\n const metadata: Array<[string, Value]> = [\n [`${DIP721_V2}:token_identifier`, { Nat: res.Ok.token_identifier }],\n [`${DIP721_V2}:minted_by`, { Text: res.Ok.minted_by.toText() }],\n [`${DIP721_V2}:minted_at`, { Nat: res.Ok.minted_at }],\n [`${DIP721_V2}:is_burned`, { Nat: BigInt(res.Ok.is_burned ? 1 : 0) }],\n ];\n if (res.Ok.owner.length) {\n metadata.push([\n `${DIP721_V2}:owner`,\n {\n Text: res.Ok.owner[0].toText(),\n },\n ]);\n }\n if (res.Ok.transferred_by.length) {\n metadata.push([\n `${DIP721_V2}:transferred_by`,\n {\n Text: res.Ok.transferred_by[0].toText(),\n },\n ]);\n }\n if (res.Ok.transferred_at.length) {\n metadata.push([\n `${DIP721_V2}:transferred_at`,\n {\n Nat: res.Ok.transferred_at[0],\n },\n ]);\n }\n if (res.Ok.burned_by.length) {\n metadata.push([\n `${DIP721_V2}:burned_by`,\n {\n Text: res.Ok.burned_by[0].toText(),\n },\n ]);\n }\n if (res.Ok.burned_at.length) {\n metadata.push([\n `${DIP721_V2}:burned_at`,\n {\n Nat: res.Ok.burned_at[0],\n },\n ]);\n }\n if (res.Ok.approved_by.length) {\n metadata.push([\n `${DIP721_V2}:approved_by`,\n {\n Text: res.Ok.approved_by[0].toText(),\n },\n ]);\n }\n if (res.Ok.approved_at.length) {\n metadata.push([\n `${DIP721_V2}:approved_at`,\n {\n Nat: res.Ok.approved_at[0],\n },\n ]);\n }\n if (res.Ok.operator.length) {\n metadata.push([\n `${DIP721_V2}:operator`,\n {\n Text: res.Ok.operator[0].toText(),\n },\n ]);\n }\n return [\n ...metadata,\n ...res.Ok.properties\n .map(([key, value]) =>\n flattenMetadataEntry([`${DIP721_V2}:properties:${key}`, value])\n )\n .flat(),\n ];\n }\n }\n\n public async transfer?(args: {\n to: string;\n tokenId: bigint;\n }): Promise {\n const res = await this._actor.dip721_transfer(\n principalFromString(args.to),\n args.tokenId\n );\n if (\"Ok\" in res) {\n return res.Ok;\n }\n throw Error(JSON.stringify(res.Err));\n }\n\n public async approve?(args: {\n spender: string;\n tokenId: bigint;\n approved: boolean;\n }): Promise {\n // Set approval to canister id when approval should be revoked\n const canisterId = await Actor.agentOf(this._actor)?.getPrincipal();\n if (!canisterId) {\n throw Error(\"Agent with principal is required\");\n }\n const res = await this._actor.dip721_approve(\n args.approved ? principalFromString(args.spender) : canisterId,\n args.tokenId\n );\n if (\"Ok\" in res) {\n return res.Ok;\n }\n throw Error(JSON.stringify(res.Err));\n }\n\n public async setApprovalForAll?(args: {\n operator: Principal;\n approved: boolean;\n }) {\n const res = await this._actor.dip721_set_approval_for_all(\n args.operator,\n args.approved\n );\n if (\"Ok\" in res) {\n return res.Ok;\n }\n throw Error(JSON.stringify(res.Err));\n }\n\n public async isApprovedForAll?(operator: Principal, account: string) {\n const res = await this._actor.dip721_is_approved_for_all(\n operator,\n principalFromString(account)\n );\n return \"Ok\" in res && res.Ok;\n }\n\n public async transferFrom?(args: {\n from: string;\n to: string;\n tokenId: bigint;\n }): Promise {\n const res = await this._actor.dip721_transfer_from(\n principalFromString(args.from),\n principalFromString(args.to),\n args.tokenId\n );\n if (\"Ok\" in res) {\n return res.Ok;\n }\n throw Error(JSON.stringify(res.Err));\n }\n\n public async getCustodians?() {\n return this._actor.dip721_custodians();\n }\n\n public async setCustodian?(args: {\n custodian: Principal;\n approved: boolean;\n }) {\n const custodians = await this.getCustodians!();\n if (args.approved) {\n custodians.push(args.custodian);\n } else {\n const index = custodians.findIndex(\n (custodian) => custodian.compareTo(args.custodian) === \"eq\"\n );\n if (index === -1) {\n return BigInt(0);\n }\n delete custodians[index];\n }\n await this._actor.dip721_set_custodians(custodians);\n return BigInt(0);\n }\n\n public async logo?() {\n return (await this._actor.dip721_logo())[0];\n }\n\n public async assetOf?(tokenId: bigint) {\n const metadata = await this.metadataOf!(tokenId);\n if (!metadata) {\n return;\n }\n const entry = metadata.find(\n ([key]) => key === `${DIP721_V2}:properties:location`\n );\n return entry && \"Text\" in entry[1]\n ? { location: entry[1].Text }\n : undefined;\n }\n\n public async imageOf?(tokenId: bigint) {\n const metadata = await this.metadataOf!(tokenId);\n if (!metadata) {\n return;\n }\n const entry = metadata.find(\n ([key]) => key === `${DIP721_V2}:properties:thumbnail`\n );\n return entry && \"Text\" in entry[1] ? entry[1].Text : undefined;\n }\n\n public async attributesOf?(tokenId: bigint) {\n const metadata = await this.metadataOf!(tokenId);\n if (!metadata) {\n return;\n }\n const traitTypeRegExp = new RegExp(\n `^${DIP721_V2}:properties:(?!location$)(?!thumbnail$)([^:]+$)`\n );\n return metadata\n .filter(([key]) => traitTypeRegExp.test(key))\n .map(([key, value]) => {\n const traitType = traitTypeRegExp.exec(key)![1];\n return { value, traitType };\n });\n }\n}\n","export const idlFactory = ({ IDL }) => {\n const Vec = IDL.Rec();\n const InitArgs = IDL.Record({\n cap: IDL.Opt(IDL.Principal),\n logo: IDL.Opt(IDL.Text),\n name: IDL.Opt(IDL.Text),\n custodians: IDL.Opt(IDL.Vec(IDL.Principal)),\n symbol: IDL.Opt(IDL.Text),\n });\n const NftError = IDL.Variant({\n UnauthorizedOperator: IDL.Null,\n SelfTransfer: IDL.Null,\n TokenNotFound: IDL.Null,\n UnauthorizedOwner: IDL.Null,\n SelfApprove: IDL.Null,\n OperatorNotFound: IDL.Null,\n ExistedNFT: IDL.Null,\n OwnerNotFound: IDL.Null,\n });\n const Result = IDL.Variant({ Ok: IDL.Nat, Err: NftError });\n const Result_1 = IDL.Variant({ Ok: IDL.Bool, Err: NftError });\n const ManualReply = IDL.Record({\n logo: IDL.Opt(IDL.Text),\n name: IDL.Opt(IDL.Text),\n created_at: IDL.Nat64,\n upgraded_at: IDL.Nat64,\n custodians: IDL.Vec(IDL.Principal),\n symbol: IDL.Opt(IDL.Text),\n });\n Vec.fill(\n IDL.Vec(\n IDL.Tuple(\n IDL.Text,\n IDL.Variant({\n Nat64Content: IDL.Nat64,\n Nat32Content: IDL.Nat32,\n BoolContent: IDL.Bool,\n Nat8Content: IDL.Nat8,\n Int64Content: IDL.Int64,\n IntContent: IDL.Int,\n NatContent: IDL.Nat,\n Nat16Content: IDL.Nat16,\n Int32Content: IDL.Int32,\n Int8Content: IDL.Int8,\n FloatContent: IDL.Float64,\n Int16Content: IDL.Int16,\n BlobContent: IDL.Vec(IDL.Nat8),\n NestedContent: Vec,\n Principal: IDL.Principal,\n TextContent: IDL.Text,\n }),\n ),\n ),\n );\n const GenericValue = IDL.Variant({\n Nat64Content: IDL.Nat64,\n Nat32Content: IDL.Nat32,\n BoolContent: IDL.Bool,\n Nat8Content: IDL.Nat8,\n Int64Content: IDL.Int64,\n IntContent: IDL.Int,\n NatContent: IDL.Nat,\n Nat16Content: IDL.Nat16,\n Int32Content: IDL.Int32,\n Int8Content: IDL.Int8,\n FloatContent: IDL.Float64,\n Int16Content: IDL.Int16,\n BlobContent: IDL.Vec(IDL.Nat8),\n NestedContent: Vec,\n Principal: IDL.Principal,\n TextContent: IDL.Text,\n });\n const Result_2 = IDL.Variant({\n Ok: IDL.Opt(IDL.Principal),\n Err: NftError,\n });\n const ManualReply_1 = IDL.Variant({\n Ok: IDL.Vec(IDL.Nat),\n Err: NftError,\n });\n const TokenMetadata = IDL.Record({\n transferred_at: IDL.Opt(IDL.Nat64),\n transferred_by: IDL.Opt(IDL.Principal),\n owner: IDL.Opt(IDL.Principal),\n operator: IDL.Opt(IDL.Principal),\n approved_at: IDL.Opt(IDL.Nat64),\n approved_by: IDL.Opt(IDL.Principal),\n properties: IDL.Vec(IDL.Tuple(IDL.Text, GenericValue)),\n is_burned: IDL.Bool,\n token_identifier: IDL.Nat,\n burned_at: IDL.Opt(IDL.Nat64),\n burned_by: IDL.Opt(IDL.Principal),\n minted_at: IDL.Nat64,\n minted_by: IDL.Principal,\n });\n const ManualReply_2 = IDL.Variant({\n Ok: IDL.Vec(TokenMetadata),\n Err: NftError,\n });\n const Stats = IDL.Record({\n cycles: IDL.Nat,\n total_transactions: IDL.Nat,\n total_unique_holders: IDL.Nat,\n total_supply: IDL.Nat,\n });\n const SupportedInterface = IDL.Variant({\n Burn: IDL.Null,\n Mint: IDL.Null,\n Approval: IDL.Null,\n });\n const ManualReply_3 = IDL.Variant({ Ok: TokenMetadata, Err: NftError });\n return IDL.Service({\n approve: IDL.Func([IDL.Principal, IDL.Nat], [Result], []),\n balanceOf: IDL.Func([IDL.Principal], [Result], ['query']),\n burn: IDL.Func([IDL.Nat], [Result], []),\n custodians: IDL.Func([], [IDL.Vec(IDL.Principal)], ['query']),\n cycles: IDL.Func([], [IDL.Nat], ['query']),\n dfx_info: IDL.Func([], [IDL.Text], ['query']),\n git_commit_hash: IDL.Func([], [IDL.Text], ['query']),\n isApprovedForAll: IDL.Func(\n [IDL.Principal, IDL.Principal],\n [Result_1],\n ['query'],\n ),\n logo: IDL.Func([], [IDL.Opt(IDL.Text)], ['query']),\n metadata: IDL.Func([], [ManualReply], ['query']),\n mint: IDL.Func(\n [IDL.Principal, IDL.Nat, IDL.Vec(IDL.Tuple(IDL.Text, GenericValue))],\n [Result],\n [],\n ),\n name: IDL.Func([], [IDL.Opt(IDL.Text)], ['query']),\n operatorOf: IDL.Func([IDL.Nat], [Result_2], ['query']),\n operatorTokenIdentifiers: IDL.Func(\n [IDL.Principal],\n [ManualReply_1],\n ['query'],\n ),\n operatorTokenMetadata: IDL.Func(\n [IDL.Principal],\n [ManualReply_2],\n ['query'],\n ),\n ownerOf: IDL.Func([IDL.Nat], [Result_2], ['query']),\n ownerTokenIdentifiers: IDL.Func(\n [IDL.Principal],\n [ManualReply_1],\n ['query'],\n ),\n ownerTokenMetadata: IDL.Func([IDL.Principal], [ManualReply_2], ['query']),\n rust_toolchain_info: IDL.Func([], [IDL.Text], ['query']),\n setApprovalForAll: IDL.Func([IDL.Principal, IDL.Bool], [Result], []),\n setCustodians: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n setLogo: IDL.Func([IDL.Text], [], []),\n setName: IDL.Func([IDL.Text], [], []),\n setSymbol: IDL.Func([IDL.Text], [], []),\n stats: IDL.Func([], [Stats], ['query']),\n supportedInterfaces: IDL.Func([], [IDL.Vec(SupportedInterface)], ['query']),\n symbol: IDL.Func([], [IDL.Opt(IDL.Text)], ['query']),\n tokenMetadata: IDL.Func([IDL.Nat], [ManualReply_3], ['query']),\n totalSupply: IDL.Func([], [IDL.Nat], ['query']),\n totalTransactions: IDL.Func([], [IDL.Nat], ['query']),\n totalUniqueHolders: IDL.Func([], [IDL.Nat], ['query']),\n transfer: IDL.Func([IDL.Principal, IDL.Nat], [Result], []),\n transferFrom: IDL.Func(\n [IDL.Principal, IDL.Principal, IDL.Nat],\n [Result],\n [],\n ),\n });\n};\nexport const init = ({ IDL }) => {\n const InitArgs = IDL.Record({\n cap: IDL.Opt(IDL.Principal),\n logo: IDL.Opt(IDL.Text),\n name: IDL.Opt(IDL.Text),\n custodians: IDL.Opt(IDL.Vec(IDL.Principal)),\n symbol: IDL.Opt(IDL.Text),\n });\n return [IDL.Opt(InitArgs)];\n};\n","import { Actor, ActorConfig, ActorSubclass } from \"@dfinity/agent\";\nimport { _SERVICE, GenericValue } from \"./dip721V2Beta/dip721V2Beta.did\";\nimport { idlFactory } from \"./dip721V2Beta\";\nimport { principalFromString } from \"../utils\";\nimport { IdentifiedCall, TokenManagerConfig } from \"../index\";\nimport { BaseToken, Token } from \"./token\";\nimport { Principal } from \"@dfinity/principal\";\nimport { Value } from \"./icrc1/icrc1.did\";\n\nexport const DIP721_V2_BETA = \"dip721_v2_beta\";\nexport const DIP721_V2_BETA_MINT = \"dip721_v2_beta_mint\";\nexport const DIP721_V2_BETA_BURN = \"dip721_v2_beta_burn\";\nexport const DIP721_V2_BETA_APPROVAL = \"dip721_v2_beta_approval\";\n\nexport type DIP721_V2_BETA_TYPE =\n | typeof DIP721_V2_BETA\n | typeof DIP721_V2_BETA_MINT\n | typeof DIP721_V2_BETA_BURN\n | typeof DIP721_V2_BETA_APPROVAL;\n\nconst flattenMetadataEntry = ([key, value]: [string, GenericValue]): Array<\n [string, Value]\n> => {\n const natValueKey = (\n [\n \"NatContent\",\n \"Nat64Content\",\n \"Nat32Content\",\n \"Nat16Content\",\n \"Nat8Content\",\n ] as Array\n ).find((k) => k in value);\n if (natValueKey) {\n return [[key, { Nat: BigInt(value[natValueKey]) }]];\n }\n const intValueKey = (\n [\n \"IntContent\",\n \"Int64Content\",\n \"Int32Content\",\n \"Int16Content\",\n \"Int8Content\",\n ] as Array\n ).find((k) => k in value);\n if (intValueKey) {\n return [[key, { Nat: BigInt(value[intValueKey]) }]];\n }\n if (\"FloatContent\" in value) {\n return [[key, { Text: value.FloatContent.toString() }]];\n }\n if (\"BoolContent\" in value) {\n return [[key, { Nat: BigInt(value.BoolContent ? 1 : 0) }]];\n }\n if (\"BlobContent\" in value) {\n return [[key, { Blob: value.BlobContent }]];\n }\n if (\"Principal\" in value) {\n return [[key, { Text: value.Principal.toText() }]];\n }\n if (\"TextContent\" in value) {\n return [[key, { Text: value.TextContent }]];\n }\n if (\"NestedContent\" in value) {\n return value.NestedContent.map(([nestedKey, nestedValue]) =>\n flattenMetadataEntry([key + \":\" + nestedKey, nestedValue])\n ).flat();\n }\n throw Error(\"DIP721 V2 Beta metadata value could not be converted to value\");\n};\nexport type Dip721V2BetaMethods =\n (T extends typeof DIP721_V2_BETA\n ? Pick<\n Token,\n | \"metadata\"\n | \"name\"\n | \"symbol\"\n | \"totalSupply\"\n | \"mintingAccount\"\n | \"balanceOf\"\n | \"ownerOf\"\n | \"tokens\"\n | \"tokensOf\"\n | \"transfer\"\n | \"getCustodians\"\n | \"setCustodian\"\n | \"logo\"\n >\n : {}) &\n (T extends typeof DIP721_V2_BETA_APPROVAL\n ? Pick<\n Token,\n \"approve\" | \"setApprovalForAll\" | \"isApprovedForAll\" | \"transferFrom\"\n >\n : {});\n\nexport class Dip721V2BetaToken extends BaseToken implements Partial {\n static implementedStandards = [\n DIP721_V2_BETA,\n DIP721_V2_BETA_MINT,\n DIP721_V2_BETA_BURN,\n DIP721_V2_BETA_APPROVAL,\n ] as const;\n static accountType = \"principal\" as const;\n\n private readonly _actor: ActorSubclass<_SERVICE>;\n\n protected constructor({\n supportedStandards = [],\n ...actorConfig\n }: TokenManagerConfig) {\n super({ supportedStandards, ...actorConfig });\n this._actor = Dip721V2BetaToken.createActor(actorConfig);\n\n // Disable methods for unsupported standards\n if (!supportedStandards.includes(DIP721_V2_BETA)) {\n this.metadata = undefined;\n this.name = undefined;\n this.symbol = undefined;\n this.totalSupply = undefined;\n this.mintingAccount = undefined;\n this.balanceOf = undefined;\n this.ownerOf = undefined;\n this.tokens = undefined;\n this.tokensOf = undefined;\n this.metadataOf = undefined;\n this.transfer = undefined;\n this.getCustodians = undefined;\n this.setCustodian = undefined;\n this.logo = undefined;\n }\n if (!supportedStandards.includes(DIP721_V2_BETA_APPROVAL)) {\n this.approve = undefined;\n this.setApprovalForAll = undefined;\n this.isApprovedForAll = undefined;\n this.transferFrom = undefined;\n }\n }\n\n static create(config: TokenManagerConfig) {\n return new Dip721V2BetaToken(config) as unknown as BaseToken &\n Dip721V2BetaMethods;\n }\n\n static createActor(config: ActorConfig): ActorSubclass<_SERVICE> {\n return Actor.createActor(idlFactory, config);\n }\n\n static async supportedStandards(\n config: ActorConfig\n ): Promise> {\n try {\n const res = await Actor.createActor<_SERVICE>(\n idlFactory,\n config\n ).supportedInterfaces();\n return [\n DIP721_V2_BETA,\n ...res.map((supportedInterface) =>\n \"Mint\" in supportedInterface\n ? DIP721_V2_BETA_MINT\n : \"Burn\" in supportedInterface\n ? DIP721_V2_BETA_BURN\n : DIP721_V2_BETA_APPROVAL\n ),\n ].map((name) => ({\n name,\n url: \"https://github.com/Psychedelic/DIP721\",\n }));\n } catch (_) {\n return [];\n }\n }\n\n static tokenType() {\n return \"nonFungible\" as const;\n }\n\n static identifyCall(\n methodName: string,\n args: any[]\n ): IdentifiedCall | undefined {\n return;\n }\n\n async metadata?() {\n const res = await this._actor.metadata();\n const metadata: Array<[string, Value]> = [\n [`${DIP721_V2_BETA}:created_at`, { Nat: res.created_at }],\n [`${DIP721_V2_BETA}:upgraded_at`, { Nat: res.upgraded_at }],\n ...res.custodians.map(\n (custodian) =>\n [`${DIP721_V2_BETA}:custodians`, { Text: custodian.toText() }] as [\n string,\n Value\n ]\n ),\n ];\n if (res.name.length) {\n metadata.push([`${DIP721_V2_BETA}:name`, { Text: res.name[0] }]);\n }\n if (res.symbol.length) {\n metadata.push([`${DIP721_V2_BETA}:symbol`, { Text: res.symbol[0] }]);\n }\n if (res.logo.length) {\n metadata.push([`${DIP721_V2_BETA}:logo`, { Text: res.logo[0] }]);\n }\n return metadata;\n }\n\n async name?() {\n return (await this._actor.name())[0] ?? \"Collection\";\n }\n\n async symbol?() {\n return (await this._actor.symbol())[0] ?? \"NFT\";\n }\n\n async totalSupply?() {\n return this._actor.totalSupply();\n }\n\n async mintingAccount?() {\n const canisterId = await Actor.agentOf(this._actor)?.getPrincipal();\n if (!canisterId) {\n throw Error(\"Agent with principal is required\");\n }\n return canisterId.toText();\n }\n\n async balanceOf?(account: string) {\n const res = await this._actor.balanceOf(principalFromString(account));\n return \"Ok\" in res ? res.Ok : BigInt(0);\n }\n\n async ownerOf?(tokenId: bigint) {\n const res = await this._actor.ownerOf(tokenId);\n return \"Ok\" in res ? res.Ok[0]?.toText() : undefined;\n }\n\n async tokens?() {\n // Get all tokens based on total supply, this does include burned tokens\n const totalSupply = (await this.totalSupply?.()) ?? BigInt(0);\n return Array.from({ length: Number(totalSupply) }).map((_, index) =>\n BigInt(index)\n );\n }\n\n async tokensOf?(account: string) {\n const res = await this._actor.ownerTokenMetadata(\n principalFromString(account)\n );\n return \"Ok\" in res\n ? res.Ok.map((tokenMetadata) => tokenMetadata.token_identifier)\n : [];\n }\n\n async metadataOf?(tokenId: bigint) {\n const res = await this._actor.tokenMetadata(tokenId);\n if (\"Ok\" in res) {\n const metadata: Array<[string, Value]> = [\n [\n `${DIP721_V2_BETA}:token_identifier`,\n { Nat: res.Ok.token_identifier },\n ],\n [`${DIP721_V2_BETA}:minted_by`, { Text: res.Ok.minted_by.toText() }],\n [`${DIP721_V2_BETA}:minted_at`, { Nat: res.Ok.minted_at }],\n [\n `${DIP721_V2_BETA}:is_burned`,\n { Nat: BigInt(res.Ok.is_burned ? 1 : 0) },\n ],\n ];\n if (res.Ok.owner.length) {\n metadata.push([\n `${DIP721_V2_BETA}:owner`,\n {\n Text: res.Ok.owner[0].toText(),\n },\n ]);\n }\n if (res.Ok.transferred_by.length) {\n metadata.push([\n `${DIP721_V2_BETA}:transferred_by`,\n {\n Text: res.Ok.transferred_by[0].toText(),\n },\n ]);\n }\n if (res.Ok.transferred_at.length) {\n metadata.push([\n `${DIP721_V2_BETA}:transferred_at`,\n {\n Nat: res.Ok.transferred_at[0],\n },\n ]);\n }\n if (res.Ok.burned_by.length) {\n metadata.push([\n `${DIP721_V2_BETA}:burned_by`,\n {\n Text: res.Ok.burned_by[0].toText(),\n },\n ]);\n }\n if (res.Ok.burned_at.length) {\n metadata.push([\n `${DIP721_V2_BETA}:burned_at`,\n {\n Nat: res.Ok.burned_at[0],\n },\n ]);\n }\n if (res.Ok.approved_by.length) {\n metadata.push([\n `${DIP721_V2_BETA}:approved_by`,\n {\n Text: res.Ok.approved_by[0].toText(),\n },\n ]);\n }\n if (res.Ok.approved_at.length) {\n metadata.push([\n `${DIP721_V2_BETA}:approved_at`,\n {\n Nat: res.Ok.approved_at[0],\n },\n ]);\n }\n if (res.Ok.operator.length) {\n metadata.push([\n `${DIP721_V2_BETA}:operator`,\n {\n Text: res.Ok.operator[0].toText(),\n },\n ]);\n }\n return [\n ...metadata,\n ...res.Ok.properties\n .map(([key, value]) =>\n flattenMetadataEntry([`${DIP721_V2_BETA}:properties:${key}`, value])\n )\n .flat(),\n ];\n }\n }\n\n async transfer?(args: { to: string; tokenId: bigint }): Promise {\n const res = await this._actor.transfer(\n principalFromString(args.to),\n args.tokenId\n );\n if (\"Ok\" in res) {\n return res.Ok;\n }\n throw Error(JSON.stringify(res.Err));\n }\n\n async approve?(args: {\n spender: string;\n tokenId: bigint;\n approved: boolean;\n }): Promise {\n // Set approval to canister id when approval should be revoked\n const canisterId = await Actor.agentOf(this._actor)?.getPrincipal();\n if (!canisterId) {\n throw Error(\"Agent with principal is required\");\n }\n const res = await this._actor.approve(\n args.approved ? principalFromString(args.spender) : canisterId,\n args.tokenId\n );\n if (\"Ok\" in res) {\n return res.Ok;\n }\n throw Error(JSON.stringify(res.Err));\n }\n\n async setApprovalForAll?(args: { operator: Principal; approved: boolean }) {\n const res = await this._actor.setApprovalForAll(\n args.operator,\n args.approved\n );\n if (\"Ok\" in res) {\n return res.Ok;\n }\n throw Error(JSON.stringify(res.Err));\n }\n\n async isApprovedForAll?(operator: Principal, account: string) {\n const res = await this._actor.isApprovedForAll(\n operator,\n principalFromString(account)\n );\n return \"Ok\" in res && res.Ok;\n }\n\n async transferFrom?(args: {\n from: string;\n to: string;\n tokenId: bigint;\n }): Promise {\n const res = await this._actor.transferFrom(\n principalFromString(args.from),\n principalFromString(args.to),\n args.tokenId\n );\n if (\"Ok\" in res) {\n return res.Ok;\n }\n throw Error(JSON.stringify(res.Err));\n }\n\n async getCustodians?() {\n return this._actor.custodians();\n }\n\n async setCustodian?(args: { custodian: Principal; approved: boolean }) {\n const custodians = await this.getCustodians!();\n if (args.approved) {\n custodians.push(args.custodian);\n } else {\n const index = custodians.findIndex(\n (custodian) => custodian.compareTo(args.custodian) === \"eq\"\n );\n if (index === -1) {\n return BigInt(0);\n }\n delete custodians[index];\n }\n await this._actor.setCustodians(custodians);\n return BigInt(0);\n }\n\n async logo?() {\n return (await this._actor.logo())[0];\n }\n\n async assetOf?(tokenId: bigint) {\n const metadata = await this.metadataOf!(tokenId);\n if (!metadata) {\n return;\n }\n const entry = metadata.find(\n ([key]) => key === `${DIP721_V2_BETA}:properties:location`\n );\n return entry && \"Text\" in entry[1]\n ? { location: entry[1].Text }\n : undefined;\n }\n\n public async imageOf?(tokenId: bigint) {\n const metadata = await this.metadataOf!(tokenId);\n if (!metadata) {\n return;\n }\n const entry = metadata.find(\n ([key]) => key === `${DIP721_V2_BETA}:properties:thumbnail`\n );\n return entry && \"Text\" in entry[1] ? entry[1].Text : undefined;\n }\n\n public async attributesOf?(tokenId: bigint) {\n const metadata = await this.metadataOf!(tokenId);\n if (!metadata) {\n return;\n }\n const traitTypeRegExp = new RegExp(\n `^${DIP721_V2_BETA}:properties:(?!location$)(?!thumbnail$)([^:]+$)`\n );\n return metadata\n .filter(([key]) => traitTypeRegExp.test(key))\n .map(([key, value]) => {\n const traitType = traitTypeRegExp.exec(key)![1];\n return { value, traitType };\n });\n }\n}\n","export const idlFactory = ({ IDL }) => {\n const AccountIdentifier = IDL.Text;\n const User = IDL.Variant({\n principal: IDL.Principal,\n address: AccountIdentifier,\n });\n const TokenIdentifier = IDL.Text;\n const Memo = IDL.Vec(IDL.Nat8);\n const SubAccount = IDL.Vec(IDL.Nat8);\n const Balance = IDL.Nat;\n const TransferRequest = IDL.Record({\n to: User,\n token: TokenIdentifier,\n notify: IDL.Bool,\n from: User,\n memo: Memo,\n subaccount: IDL.Opt(SubAccount),\n amount: Balance,\n });\n const TransactionId = IDL.Nat;\n const ApiError = IDL.Variant({\n ZeroAddress: IDL.Null,\n InvalidTokenId: IDL.Null,\n Unauthorized: IDL.Null,\n Other: IDL.Null,\n });\n const ApproveResult = IDL.Variant({ Ok: User, Err: ApiError });\n const CommonError = IDL.Variant({\n InvalidToken: TokenIdentifier,\n Other: IDL.Text,\n });\n const AccountIdentifierReturn = IDL.Variant({\n Ok: AccountIdentifier,\n Err: CommonError,\n });\n const Value = IDL.Variant({\n nat: IDL.Nat,\n blob: IDL.Vec(IDL.Nat8),\n nat8: IDL.Nat8,\n text: IDL.Text,\n });\n const MetadataValue = IDL.Tuple(IDL.Text, Value);\n const MetadataContainer = IDL.Variant({\n blob: IDL.Vec(IDL.Nat8),\n data: IDL.Vec(MetadataValue),\n json: IDL.Text,\n });\n const Metadata = IDL.Variant({\n fungible: IDL.Record({\n decimals: IDL.Nat8,\n metadata: IDL.Opt(MetadataContainer),\n name: IDL.Text,\n symbol: IDL.Text,\n }),\n nonfungible: IDL.Opt(MetadataContainer),\n });\n const TokenMetadata = IDL.Record({\n principal: IDL.Principal,\n metadata: Metadata,\n account_identifier: AccountIdentifier,\n token_identifier: TokenIdentifier,\n });\n const MetadataVal = IDL.Variant({\n Nat64Content: IDL.Nat64,\n Nat32Content: IDL.Nat32,\n Nat8Content: IDL.Nat8,\n NatContent: IDL.Nat,\n Nat16Content: IDL.Nat16,\n BlobContent: IDL.Vec(IDL.Nat8),\n TextContent: IDL.Text,\n });\n const MetadataKeyVal = IDL.Record({ key: IDL.Text, val: MetadataVal });\n const MetadataPurpose = IDL.Variant({\n Preview: IDL.Null,\n Rendered: IDL.Null,\n });\n const MetadataPart = IDL.Record({\n data: IDL.Vec(IDL.Nat8),\n key_val_data: IDL.Vec(MetadataKeyVal),\n purpose: MetadataPurpose,\n });\n const MetadataDesc = IDL.Vec(MetadataPart);\n const MetadataResult = IDL.Variant({ Ok: MetadataDesc, Err: ApiError });\n const ExtendedMetadataResult = IDL.Record({\n token_id: IDL.Nat64,\n metadata_desc: MetadataDesc,\n });\n const LogoResult = IDL.Record({ data: IDL.Text, logo_type: IDL.Text });\n const MetadataReturn = IDL.Variant({ Ok: Metadata, Err: CommonError });\n const MintReceiptPart = IDL.Record({\n id: IDL.Nat,\n token_id: IDL.Nat64,\n });\n const MintReceipt = IDL.Variant({ Ok: MintReceiptPart, Err: ApiError });\n const OwnerResult = IDL.Variant({ Ok: IDL.Principal, Err: ApiError });\n const TxReceipt = IDL.Variant({ Ok: IDL.Nat, Err: ApiError });\n const BalanceReturn = IDL.Variant({ Ok: Balance, Err: CommonError });\n const InterfaceId = IDL.Variant({\n Burn: IDL.Null,\n Mint: IDL.Null,\n Approval: IDL.Null,\n TransactionHistory: IDL.Null,\n TransferNotification: IDL.Null,\n });\n const TransferResponse = IDL.Variant({\n Ok: Balance,\n Err: IDL.Variant({\n CannotNotify: AccountIdentifier,\n InsufficientBalance: IDL.Null,\n InvalidToken: TokenIdentifier,\n Rejected: IDL.Null,\n Unauthorized: AccountIdentifier,\n Other: IDL.Text,\n }),\n });\n const erc721_token = IDL.Service({\n add: IDL.Func([TransferRequest], [TransactionId], []),\n approveDip721: IDL.Func([IDL.Principal, IDL.Nat64], [ApproveResult], []),\n balanceOfDip721: IDL.Func([IDL.Principal], [IDL.Nat64], [\"query\"]),\n bearer: IDL.Func([TokenIdentifier], [AccountIdentifierReturn], [\"query\"]),\n getAllMetadataForUser: IDL.Func(\n [User],\n [IDL.Vec(TokenMetadata)],\n [\"query\"]\n ),\n getMaxLimitDip721: IDL.Func([], [IDL.Nat16], [\"query\"]),\n getMetadataDip721: IDL.Func([IDL.Nat64], [MetadataResult], [\"query\"]),\n getMetadataForUserDip721: IDL.Func(\n [IDL.Principal],\n [IDL.Vec(ExtendedMetadataResult)],\n []\n ),\n getTokenIdsForUserDip721: IDL.Func(\n [IDL.Principal],\n [IDL.Vec(IDL.Nat64)],\n [\"query\"]\n ),\n logoDip721: IDL.Func([], [LogoResult], [\"query\"]),\n metadata: IDL.Func([TokenIdentifier], [MetadataReturn], [\"query\"]),\n mintDip721: IDL.Func([IDL.Principal, MetadataDesc], [MintReceipt], []),\n name: IDL.Func([], [IDL.Text], [\"query\"]),\n nameDip721: IDL.Func([], [IDL.Text], [\"query\"]),\n ownerOfDip721: IDL.Func([IDL.Nat64], [OwnerResult], [\"query\"]),\n safeTransferFromDip721: IDL.Func(\n [IDL.Principal, IDL.Principal, IDL.Nat64],\n [TxReceipt],\n []\n ),\n supply: IDL.Func([TokenIdentifier], [BalanceReturn], [\"query\"]),\n supportedInterfacesDip721: IDL.Func([], [IDL.Vec(InterfaceId)], [\"query\"]),\n symbolDip721: IDL.Func([], [IDL.Text], [\"query\"]),\n totalSupplyDip721: IDL.Func([], [IDL.Nat64], [\"query\"]),\n transfer: IDL.Func([TransferRequest], [TransferResponse], []),\n transferFromDip721: IDL.Func(\n [IDL.Principal, IDL.Principal, IDL.Nat64],\n [TxReceipt],\n []\n ),\n });\n return erc721_token;\n};\nexport const init = ({ IDL }) => {\n return [IDL.Principal, IDL.Text, IDL.Text, IDL.Principal];\n};\n","import { Actor, ActorConfig, ActorSubclass } from \"@dfinity/agent\";\nimport { _SERVICE } from \"./dip721Legacy/dip721Legacy.did\";\nimport { idlFactory } from \"./dip721Legacy\";\nimport { principalFromString } from \"../utils\";\nimport { IdentifiedCall, TokenManagerConfig } from \"../index\";\nimport { BaseToken, Token } from \"./token\";\nimport { Value } from \"./icrc1/icrc1.did\";\n\nexport const DIP721_LEGACY = \"dip721_legacy\";\nexport const DIP721_LEGACY_MINT = \"dip721_legacy_mint\";\nexport const DIP721_LEGACY_BURN = \"dip721_legacy_burn\";\nexport const DIP721_LEGACY_APPROVAL = \"dip721_legacy_approval\";\nexport const DIP721_LEGACY_TRANSACTION_HISTORY =\n \"DIP721_LEGACY_TRANSACTION_HISTORY\";\nexport const DIP721_LEGACY_TRANSFER_NOTIFICATION =\n \"DIP721_LEGACY_TRANSFER_NOTIFICATION\";\n\nexport type DIP721_LEGACY_TYPE =\n | typeof DIP721_LEGACY\n | typeof DIP721_LEGACY_MINT\n | typeof DIP721_LEGACY_BURN\n | typeof DIP721_LEGACY_APPROVAL\n | typeof DIP721_LEGACY_TRANSACTION_HISTORY\n | typeof DIP721_LEGACY_TRANSFER_NOTIFICATION;\n\nexport type Dip721LegacyMethods =\n (T extends typeof DIP721_LEGACY\n ? Pick<\n Token,\n | \"metadata\"\n | \"name\"\n | \"symbol\"\n | \"totalSupply\"\n | \"mintingAccount\"\n | \"balanceOf\"\n | \"ownerOf\"\n | \"tokens\"\n | \"tokensOf\"\n | \"transfer\"\n | \"logo\"\n >\n : {}) &\n (T extends typeof DIP721_LEGACY_APPROVAL\n ? Pick\n : {});\n\nexport class Dip721LegacyToken extends BaseToken implements Partial {\n static implementedStandards = [\n DIP721_LEGACY,\n DIP721_LEGACY_MINT,\n DIP721_LEGACY_BURN,\n DIP721_LEGACY_APPROVAL,\n ] as const;\n static accountType = \"principal\" as const;\n\n private readonly _actor: ActorSubclass<_SERVICE>;\n\n protected constructor({\n supportedStandards = [],\n ...actorConfig\n }: TokenManagerConfig) {\n super({ supportedStandards, ...actorConfig });\n this._actor = Dip721LegacyToken.createActor(actorConfig);\n\n // Disable methods for unsupported standards\n if (!supportedStandards.includes(DIP721_LEGACY)) {\n this.metadata = undefined;\n this.name = undefined;\n this.symbol = undefined;\n this.totalSupply = undefined;\n this.mintingAccount = undefined;\n this.balanceOf = undefined;\n this.ownerOf = undefined;\n this.tokens = undefined;\n this.tokensOf = undefined;\n this.transfer = undefined;\n this.logo = undefined;\n }\n if (!supportedStandards.includes(DIP721_LEGACY_APPROVAL)) {\n this.approve = undefined;\n this.transferFrom = undefined;\n }\n }\n\n static create(config: TokenManagerConfig) {\n return new Dip721LegacyToken(config) as unknown as BaseToken &\n Dip721LegacyMethods;\n }\n\n static createActor(config: ActorConfig): ActorSubclass<_SERVICE> {\n return Actor.createActor(idlFactory, config);\n }\n\n static async supportedStandards(\n config: ActorConfig\n ): Promise> {\n try {\n const res = await Actor.createActor<_SERVICE>(\n idlFactory,\n config\n ).supportedInterfacesDip721();\n return [\n DIP721_LEGACY,\n ...res.map((supportedInterface) =>\n \"Mint\" in supportedInterface\n ? DIP721_LEGACY_MINT\n : \"Burn\" in supportedInterface\n ? DIP721_LEGACY_BURN\n : \"Approval\" in supportedInterface\n ? DIP721_LEGACY_APPROVAL\n : \"TransactionHistory\" in supportedInterface\n ? DIP721_LEGACY_TRANSACTION_HISTORY\n : DIP721_LEGACY_TRANSFER_NOTIFICATION\n ),\n ].map((name) => ({\n name,\n url: \"https://github.com/Psychedelic/DIP721\",\n }));\n } catch (_) {\n return [];\n }\n }\n\n static tokenType() {\n return \"nonFungible\" as const;\n }\n\n static identifyCall(\n methodName: string,\n args: any[]\n ): IdentifiedCall | undefined {\n return;\n }\n\n async metadata?() {\n return [\n [`${DIP721_LEGACY}:name`, { Text: await this.name!() }],\n [`${DIP721_LEGACY}:symbol`, { Text: await this.symbol!() }],\n [`${DIP721_LEGACY}:total_supply`, { Nat: await this.totalSupply!() }],\n ] as Array<[string, Value]>;\n }\n\n async name?() {\n return (\n (await this._actor.nameDip721().catch(() => undefined)) ??\n (await this._actor.name())\n );\n }\n\n async symbol?() {\n return this._actor.symbolDip721();\n }\n\n async totalSupply?() {\n return this._actor.totalSupplyDip721();\n }\n\n async mintingAccount?() {\n const canisterId = await Actor.agentOf(this._actor)?.getPrincipal();\n if (!canisterId) {\n throw Error(\"Agent with principal is required\");\n }\n return canisterId.toText();\n }\n\n async balanceOf?(account: string) {\n return this._actor.balanceOfDip721(principalFromString(account));\n }\n\n async ownerOf?(tokenId: bigint) {\n const res = await this._actor.ownerOfDip721(tokenId);\n return \"Ok\" in res ? res.Ok.toText() : undefined;\n }\n\n async tokens?() {\n // Get all tokens based on total supply, this does include burned tokens\n const totalSupply = (await this.totalSupply?.()) ?? BigInt(0);\n return Array.from({ length: Number(totalSupply) }).map((_, index) =>\n BigInt(index)\n );\n }\n\n async tokensOf?(account: string) {\n return this._actor.getTokenIdsForUserDip721(principalFromString(account));\n }\n\n async metadataOf?(tokenId: bigint) {\n const res = await this._actor.getMetadataDip721(tokenId);\n return \"Ok\" in res\n ? (res.Ok.map((part) => {\n const purpose = \"Preview\" in part.purpose ? \"preview\" : \"rendered\";\n return [\n [purpose, { Blob: part.data }],\n ...part.key_val_data.map(({ key, val }) => [\n `${purpose}:${key}`,\n\n \"TextContent\" in val\n ? { Text: val.TextContent }\n : \"BlobContent\" in val\n ? { Blob: val.BlobContent }\n : \"Nat64Content\" in val\n ? { Nat: val[\"Nat64Content\"] }\n : \"Nat32Content\" in val\n ? { Nat: BigInt(val[\"Nat32Content\"]) }\n : \"Nat16Content\" in val\n ? { Nat: BigInt(val[\"Nat16Content\"]) }\n : \"Nat8Content\" in val\n ? { Nat: BigInt(val[\"Nat8Content\"]) }\n : { Nat: val[\"NatContent\"] },\n ]),\n ];\n }).flat() as Array<[string, Value]>)\n : undefined;\n }\n\n async transfer?(args: { to: string; tokenId: bigint }): Promise {\n const from = await Actor.agentOf(this._actor)?.getPrincipal();\n if (!from) {\n throw Error(\"Agent with principal is required\");\n }\n const res = await this._actor.transferFromDip721(\n from,\n principalFromString(args.to),\n args.tokenId\n );\n if (\"Ok\" in res) {\n return res.Ok;\n }\n throw Error(JSON.stringify(res.Err));\n }\n\n async approve?(args: {\n spender: string;\n tokenId: bigint;\n approved: boolean;\n }): Promise {\n // Set approval to canister id when approval should be revoked\n const canisterId = await Actor.agentOf(this._actor)?.getPrincipal();\n if (!canisterId) {\n throw Error(\"Agent with principal is required\");\n }\n const res = await this._actor.approveDip721(\n args.approved ? principalFromString(args.spender) : canisterId,\n args.tokenId\n );\n if (\"Ok\" in res) {\n return BigInt(0);\n }\n throw Error(JSON.stringify(res.Err));\n }\n\n async transferFrom?(args: {\n from: string;\n to: string;\n tokenId: bigint;\n }): Promise {\n const res = await this._actor.transferFromDip721(\n principalFromString(args.from),\n principalFromString(args.to),\n args.tokenId\n );\n if (\"Ok\" in res) {\n return res.Ok;\n }\n throw Error(JSON.stringify(res.Err));\n }\n\n async logo?() {\n return (await this._actor.logoDip721()).data;\n }\n}\n","export const idlFactory = ({ IDL }) => {\n const Subaccount = IDL.Vec(IDL.Nat8);\n const Account = IDL.Record({\n owner: IDL.Principal,\n subaccount: IDL.Opt(Subaccount),\n });\n const Value = IDL.Variant({\n Int: IDL.Int,\n Nat: IDL.Nat,\n Blob: IDL.Vec(IDL.Nat8),\n Text: IDL.Text,\n });\n const Timestamp = IDL.Nat64;\n const TransferArgs = IDL.Record({\n to: Account,\n fee: IDL.Opt(IDL.Nat),\n memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n from_subaccount: IDL.Opt(Subaccount),\n created_at_time: IDL.Opt(Timestamp),\n amount: IDL.Nat,\n });\n const TransferError = IDL.Variant({\n GenericError: IDL.Record({\n message: IDL.Text,\n error_code: IDL.Nat,\n }),\n TemporarilyUnavailable: IDL.Null,\n BadBurn: IDL.Record({ min_burn_amount: IDL.Nat }),\n Duplicate: IDL.Record({ duplicate_of: IDL.Nat }),\n BadFee: IDL.Record({ expected_fee: IDL.Nat }),\n CreatedInFuture: IDL.Record({ ledger_time: Timestamp }),\n TooOld: IDL.Null,\n InsufficientFunds: IDL.Record({ balance: IDL.Nat }),\n });\n const AllowanceArgs = IDL.Record({\n account: Account,\n spender: Account,\n });\n const ApproveArgs = IDL.Record({\n fee: IDL.Opt(IDL.Nat),\n memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n from_subaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n created_at_time: IDL.Opt(IDL.Nat64),\n amount: IDL.Nat,\n expected_allowance: IDL.Opt(IDL.Nat),\n expires_at: IDL.Opt(IDL.Nat64),\n spender: Account,\n });\n const ApproveError = IDL.Variant({\n GenericError: IDL.Record({\n message: IDL.Text,\n error_code: IDL.Nat,\n }),\n TemporarilyUnavailable: IDL.Null,\n Duplicate: IDL.Record({ duplicate_of: IDL.Nat }),\n BadFee: IDL.Record({ expected_fee: IDL.Nat }),\n AllowanceChanged: IDL.Record({ current_allowance: IDL.Nat }),\n CreatedInFuture: IDL.Record({ ledger_time: IDL.Nat64 }),\n TooOld: IDL.Null,\n Expired: IDL.Record({ ledger_time: IDL.Nat64 }),\n InsufficientFunds: IDL.Record({ balance: IDL.Nat }),\n });\n const TransferFromArgs = IDL.Record({\n spender_subaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n to: Account,\n fee: IDL.Opt(IDL.Nat),\n from: Account,\n memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n created_at_time: IDL.Opt(IDL.Nat64),\n amount: IDL.Nat,\n });\n const TransferFromError = IDL.Variant({\n GenericError: IDL.Record({\n message: IDL.Text,\n error_code: IDL.Nat,\n }),\n TemporarilyUnavailable: IDL.Null,\n InsufficientAllowance: IDL.Record({ allowance: IDL.Nat }),\n BadBurn: IDL.Record({ min_burn_amount: IDL.Nat }),\n Duplicate: IDL.Record({ duplicate_of: IDL.Nat }),\n BadFee: IDL.Record({ expected_fee: IDL.Nat }),\n CreatedInFuture: IDL.Record({ ledger_time: IDL.Nat64 }),\n TooOld: IDL.Null,\n InsufficientFunds: IDL.Record({ balance: IDL.Nat }),\n });\n return IDL.Service({\n icrc1_balance_of: IDL.Func([Account], [IDL.Nat], [\"query\"]),\n icrc1_decimals: IDL.Func([], [IDL.Nat8], [\"query\"]),\n icrc1_fee: IDL.Func([], [IDL.Nat], [\"query\"]),\n icrc1_metadata: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(IDL.Text, Value))],\n [\"query\"]\n ),\n icrc1_minting_account: IDL.Func([], [IDL.Opt(Account)], [\"query\"]),\n icrc1_name: IDL.Func([], [IDL.Text], [\"query\"]),\n icrc1_supported_standards: IDL.Func(\n [],\n [IDL.Vec(IDL.Record({ url: IDL.Text, name: IDL.Text }))],\n [\"query\"]\n ),\n icrc1_symbol: IDL.Func([], [IDL.Text], [\"query\"]),\n icrc1_total_supply: IDL.Func([], [IDL.Nat], [\"query\"]),\n icrc1_transfer: IDL.Func(\n [TransferArgs],\n [IDL.Variant({ Ok: IDL.Nat, Err: TransferError })],\n []\n ),\n icrc2_allowance: IDL.Func(\n [AllowanceArgs],\n [\n IDL.Record({\n allowance: IDL.Nat,\n expires_at: IDL.Opt(IDL.Nat64),\n }),\n ],\n [\"query\"]\n ),\n icrc2_approve: IDL.Func(\n [ApproveArgs],\n [IDL.Variant({ Ok: IDL.Nat, Err: ApproveError })],\n []\n ),\n icrc2_transfer_from: IDL.Func(\n [TransferFromArgs],\n [IDL.Variant({ Ok: IDL.Nat, Err: TransferFromError })],\n []\n ),\n });\n};\nexport const init = ({ IDL }) => {\n return [];\n};\n","import { Actor, ActorConfig, ActorSubclass } from \"@dfinity/agent\";\nimport { _SERVICE } from \"./icrc1/icrc1.did\";\nimport { idlFactory } from \"./icrc1\";\nimport {\n accountFromString,\n accountToString,\n ICP,\n IcpToken,\n IdentifiedCall,\n isAccountHash,\n TokenManagerConfig,\n} from \"../index\";\nimport { BaseToken, Token } from \"./token\";\n\nexport const ICRC1 = \"icrc1\";\nexport const ICRC2 = \"icrc2\";\n\nexport type ICRC1_TYPE = typeof ICRC1;\n\nexport type Icrc1Methods =\n (T extends typeof ICRC1\n ? Pick<\n Token,\n | \"metadata\"\n | \"name\"\n | \"symbol\"\n | \"decimals\"\n | \"fee\"\n | \"totalSupply\"\n | \"mintingAccount\"\n | \"balanceOf\"\n | \"transfer\"\n | \"logo\"\n >\n : {}) &\n (T extends typeof ICRC2\n ? Pick\n : {});\n\nexport class Icrc1Token extends BaseToken implements Partial {\n static implementedStandards = [ICRC1, ICRC2] as const;\n static accountType = \"account\" as const;\n\n private _actor: ActorSubclass<_SERVICE>;\n\n protected constructor({\n supportedStandards = [],\n ...actorConfig\n }: TokenManagerConfig) {\n super({ supportedStandards, ...actorConfig });\n this._actor = Icrc1Token.createActor(actorConfig);\n\n // Disable methods for unsupported standards\n if (!supportedStandards.includes(ICRC1)) {\n this.metadata = undefined;\n this.name = undefined;\n this.symbol = undefined;\n this.decimals = undefined;\n this.fee = undefined;\n this.totalSupply = undefined;\n this.mintingAccount = undefined;\n this.balanceOf = undefined;\n this.transfer = undefined;\n this.logo = undefined;\n }\n if (!supportedStandards.includes(ICRC2)) {\n this.approve = undefined;\n this.transferFrom = undefined;\n this.allowance = undefined;\n }\n }\n\n static create(config: TokenManagerConfig) {\n return new Icrc1Token(config) as unknown as BaseToken & Icrc1Methods;\n }\n\n static createActor(config: ActorConfig): ActorSubclass<_SERVICE> {\n return Actor.createActor(idlFactory, config);\n }\n\n static async supportedStandards(\n config: ActorConfig\n ): Promise> {\n return this.createActor(config)\n .icrc1_supported_standards()\n .catch(() => []);\n }\n\n static tokenType() {\n return \"fungible\" as const;\n }\n\n static identifyCall(\n methodName: string,\n args: any[]\n ): IdentifiedCall | undefined {\n if (methodName === \"icrc1_transfer\") {\n return {\n methodName: \"transfer\",\n args: [\n {\n to: accountToString({\n owner: args[0].to.owner,\n subaccount: args[0].to.subaccount[0],\n }),\n amount: args[0].amount,\n fee: args[0].fee[0],\n fromSubaccount: args[0].from_subaccount[0],\n memo: args[0].memo,\n createdAtTime: args[0].created_at_time[0],\n },\n ],\n };\n }\n }\n\n async metadata?() {\n return this._actor.icrc1_metadata();\n }\n\n async name?() {\n return this._actor.icrc1_name();\n }\n\n async symbol?() {\n return this._actor.icrc1_symbol();\n }\n\n async decimals?() {\n return this._actor.icrc1_decimals();\n }\n\n async fee?() {\n return this._actor.icrc1_fee();\n }\n\n async totalSupply?() {\n return this._actor.icrc1_total_supply();\n }\n\n async mintingAccount?() {\n return (await this._actor.icrc1_minting_account()).map(\n ({ owner, subaccount }) =>\n accountToString({ owner, subaccount: subaccount[0] })\n )[0];\n }\n\n async balanceOf?(account: string) {\n if (\n IcpToken.canisterIds.includes(Actor.canisterIdOf(this._actor).toText()) &&\n isAccountHash(account)\n ) {\n // Fallback to old ledger methods for account hash\n return (\n await IcpToken.create({\n ...this._config,\n supportedStandards: [ICP],\n })\n ).balanceOf(account);\n }\n const { owner, subaccount } = accountFromString(account);\n return this._actor.icrc1_balance_of({\n owner,\n subaccount: subaccount ? [subaccount] : [],\n });\n }\n\n async transfer?(args: {\n fromSubaccount?: Uint8Array;\n to: string;\n amount: bigint;\n fee?: bigint;\n memo?: Uint8Array;\n createdAtTime?: bigint;\n }): Promise {\n if (\n IcpToken.canisterIds.includes(Actor.canisterIdOf(this._actor).toText()) &&\n isAccountHash(args.to)\n ) {\n // Fallback to old ledger methods for account hash\n return (\n await IcpToken.create({\n ...this._config,\n supportedStandards: [ICP],\n })\n ).transfer(args);\n }\n const to = accountFromString(args.to);\n const res = await this._actor.icrc1_transfer({\n from_subaccount: args.fromSubaccount ? [args.fromSubaccount] : [],\n to: { owner: to.owner, subaccount: to.subaccount ? [to.subaccount] : [] },\n amount: args.amount,\n fee: args.fee ? [args.fee] : [],\n memo: args.memo ? [args.memo] : [],\n created_at_time: args.createdAtTime ? [args.createdAtTime] : [],\n });\n if (\"Ok\" in res) {\n return res.Ok;\n }\n throw Error(JSON.stringify(res.Err));\n }\n\n async logo?() {\n const logoMetadata = (await this._actor.icrc1_metadata()).find(\n ([key]) => key === \"icrc1:logo\"\n )?.[1];\n if (logoMetadata && \"Text\" in logoMetadata && logoMetadata.Text) {\n return logoMetadata.Text;\n }\n try {\n const asset = (\n await import(`../logos/${Actor.canisterIdOf(this._actor).toText()}.js`)\n ).default;\n return `data:image/svg+xml,${encodeURIComponent(\n asset.replace(/[\\n\\r]/g, \"\")\n ).replace(/%[\\dA-F]{2}/g, (match: string) => {\n switch (match) {\n case \"%20\":\n return \" \";\n case \"%3D\":\n return \"=\";\n case \"%3A\":\n return \":\";\n case \"%2F\":\n return \"/\";\n default:\n return match.toLowerCase();\n }\n })}`;\n } catch (_) {\n // Asset could not be loaded or doesn't exist\n }\n }\n\n async approve?(args: {\n fromSubaccount?: Uint8Array;\n spender: string;\n amount: bigint;\n expectedAllowance?: bigint;\n expiresAt?: bigint;\n fee?: bigint;\n memo?: Uint8Array;\n createdAtTime?: bigint;\n }) {\n const spender = accountFromString(args.spender);\n const res = await this._actor.icrc2_approve({\n from_subaccount: args.fromSubaccount ? [args.fromSubaccount] : [],\n spender: {\n owner: spender.owner,\n subaccount: spender.subaccount ? [spender.subaccount] : [],\n },\n amount: args.amount,\n expected_allowance: args.expectedAllowance\n ? [args.expectedAllowance]\n : [],\n expires_at: args.expiresAt ? [args.expiresAt] : [],\n fee: args.fee ? [args.fee] : [],\n memo: args.memo ? [args.memo] : [],\n created_at_time: args.createdAtTime ? [args.createdAtTime] : [],\n });\n if (\"Ok\" in res) {\n return res.Ok;\n }\n throw Error(JSON.stringify(res.Err));\n }\n\n async transferFrom?(args: {\n spenderSubaccount?: Uint8Array;\n from: string;\n to: string;\n amount: bigint;\n fee?: bigint;\n memo?: Uint8Array;\n createdAtTime?: bigint;\n }) {\n const from = accountFromString(args.from);\n const to = accountFromString(args.to);\n const res = await this._actor.icrc2_transfer_from({\n spender_subaccount: args.spenderSubaccount\n ? [args.spenderSubaccount]\n : [],\n from: {\n owner: from.owner,\n subaccount: from.subaccount ? [from.subaccount] : [],\n },\n to: { owner: to.owner, subaccount: to.subaccount ? [to.subaccount] : [] },\n amount: args.amount,\n fee: args.fee ? [args.fee] : [],\n memo: args.memo ? [args.memo] : [],\n created_at_time: args.createdAtTime ? [args.createdAtTime] : [],\n });\n if (\"Ok\" in res) {\n return res.Ok;\n }\n throw Error(JSON.stringify(res.Err));\n }\n\n async allowance?(args: { account: string; spender: string }) {\n const account = accountFromString(args.account);\n const spender = accountFromString(args.spender);\n const res = await this._actor.icrc2_allowance({\n account: {\n owner: account.owner,\n subaccount: account.subaccount ? [account.subaccount] : [],\n },\n spender: {\n owner: spender.owner,\n subaccount: spender.subaccount ? [spender.subaccount] : [],\n },\n });\n return {\n allowance: res.allowance,\n expiresAt: res.expires_at[0],\n };\n }\n}\n","export const idlFactory = ({ IDL }) => {\n const TxError = IDL.Variant({\n InsufficientAllowance: IDL.Null,\n InsufficientBalance: IDL.Null,\n ErrorOperationStyle: IDL.Null,\n Unauthorized: IDL.Null,\n LedgerTrap: IDL.Null,\n ErrorTo: IDL.Null,\n Other: IDL.Null,\n BlockUsed: IDL.Null,\n AmountTooSmall: IDL.Null,\n });\n const Result = IDL.Variant({ Ok: IDL.Nat, Err: TxError });\n const Metadata = IDL.Record({\n fee: IDL.Nat,\n decimals: IDL.Nat8,\n owner: IDL.Principal,\n logo: IDL.Text,\n name: IDL.Text,\n totalSupply: IDL.Nat,\n symbol: IDL.Text,\n });\n return IDL.Service({\n allowance: IDL.Func([IDL.Principal, IDL.Principal], [IDL.Nat], [\"query\"]),\n approve: IDL.Func([IDL.Principal, IDL.Nat], [Result], []),\n balanceOf: IDL.Func([IDL.Principal], [IDL.Nat], [\"query\"]),\n decimals: IDL.Func([], [IDL.Nat8], [\"query\"]),\n getMetadata: IDL.Func([], [Metadata], [\"query\"]),\n historySize: IDL.Func([], [IDL.Nat64], [\"query\"]),\n logo: IDL.Func([], [IDL.Text], [\"query\"]),\n name: IDL.Func([], [IDL.Text], [\"query\"]),\n symbol: IDL.Func([], [IDL.Text], [\"query\"]),\n totalSupply: IDL.Func([], [IDL.Nat], [\"query\"]),\n transfer: IDL.Func([IDL.Principal, IDL.Nat], [Result], []),\n transferFrom: IDL.Func(\n [IDL.Principal, IDL.Principal, IDL.Nat],\n [Result],\n []\n ),\n });\n};\nexport const init = ({ IDL }) => {\n return [\n IDL.Text,\n IDL.Text,\n IDL.Text,\n IDL.Nat8,\n IDL.Nat,\n IDL.Principal,\n IDL.Nat,\n IDL.Principal,\n IDL.Principal,\n ];\n};\n","import { Actor, ActorConfig, ActorSubclass } from \"@dfinity/agent\";\nimport { _SERVICE } from \"./dip20/dip20.did\";\nimport { idlFactory } from \"./dip20\";\nimport {\n IdentifiedCall,\n principalFromString,\n TokenManagerConfig,\n} from \"../index\";\nimport { BaseToken, Token } from \"./token\";\nimport { Principal } from \"@dfinity/principal\";\nimport { Value } from \"./icrc1/icrc1.did\";\n\nexport const DIP20 = \"dip20\";\n\nexport type DIP20_TYPE = typeof DIP20;\n\nexport type Dip20Methods =\n T extends typeof DIP20\n ? Pick<\n Token,\n | \"metadata\"\n | \"name\"\n | \"symbol\"\n | \"decimals\"\n | \"fee\"\n | \"totalSupply\"\n | \"mintingAccount\"\n | \"balanceOf\"\n | \"transfer\"\n | \"logo\"\n | \"approve\"\n | \"transferFrom\"\n | \"allowance\"\n >\n : {};\n\nexport class Dip20Token extends BaseToken implements Partial {\n static implementedStandards = [DIP20] as const;\n static accountType = \"principal\" as const;\n\n private _actor: ActorSubclass<_SERVICE>;\n\n protected constructor({\n supportedStandards = [],\n ...actorConfig\n }: TokenManagerConfig) {\n super({ supportedStandards, ...actorConfig });\n this._actor = Dip20Token.createActor(actorConfig);\n\n // Disable methods for unsupported standards\n if (!supportedStandards.includes(DIP20)) {\n this.metadata = undefined;\n this.name = undefined;\n this.symbol = undefined;\n this.decimals = undefined;\n this.fee = undefined;\n this.totalSupply = undefined;\n this.mintingAccount = undefined;\n this.balanceOf = undefined;\n this.transfer = undefined;\n this.logo = undefined;\n this.approve = undefined;\n this.transferFrom = undefined;\n this.allowance = undefined;\n }\n }\n\n static create(config: TokenManagerConfig) {\n return new Dip20Token(config) as unknown as BaseToken & Dip20Methods;\n }\n\n static createActor(config: ActorConfig): ActorSubclass<_SERVICE> {\n return Actor.createActor(idlFactory, config);\n }\n\n static async supportedStandards(\n config: ActorConfig\n ): Promise> {\n const actor = this.createActor(config);\n try {\n // There's no supported interfaces method,\n // so we have to rely on some runtime checks\n const metadata = (await actor.getMetadata()) as unknown;\n if (\n !metadata ||\n typeof metadata !== \"object\" ||\n !(\"fee\" in metadata) ||\n !(\"decimals\" in metadata) ||\n !(\"owner\" in metadata) ||\n !(\"logo\" in metadata) ||\n !(\"name\" in metadata) ||\n !(\"totalSupply\" in metadata) ||\n !(\"symbol\" in metadata) ||\n typeof metadata.fee !== \"bigint\" ||\n typeof metadata.decimals !== \"number\" ||\n !metadata.owner ||\n typeof metadata.owner !== \"object\" ||\n !(\"_isPrincipal\" in metadata.owner) ||\n !metadata.owner._isPrincipal ||\n typeof metadata.logo !== \"string\" ||\n typeof metadata.name !== \"string\" ||\n typeof metadata.totalSupply !== \"bigint\" ||\n typeof metadata.symbol !== \"string\"\n ) {\n // First we check if the metadata is missing data that we expect in DIP20\n return [];\n }\n const allowance = (await actor.allowance(\n // These addresses are random, allowance should always be 0 for them\n Principal.fromText(\n \"s7l4m-kbynv-wmpuo-li4xn-vlotx-ulyj6-afz7m-npdis-ajee4-xx5jj-tae\"\n ),\n Principal.fromText(\n \"kk4n5-atwef-77o6m-mour6-pzmjs-qyjwn-pwo7q-75u2d-plgjc-sefao-pae\"\n )\n )) as unknown;\n if (typeof allowance !== \"bigint\" || allowance !== BigInt(0)) {\n // Secondly we check if the allowance doesn't return the data we expect in DIP20\n return [];\n }\n // We're far from certain it's DIP20 at this point, a PR with additional checks is welcome\n return [{ name: DIP20, url: \"https://github.com/Psychedelic/DIP20\" }];\n } catch (_) {\n // Lastly if any of the above threw an error, it's not DIP20 either\n return [];\n }\n }\n\n static tokenType() {\n return \"fungible\" as const;\n }\n\n static identifyCall(\n methodName: string,\n args: any[]\n ): IdentifiedCall | undefined {\n if (methodName === \"transfer\") {\n return {\n methodName: \"transfer\",\n args: [\n {\n to: args[0].toText(),\n amount: args[1],\n },\n ],\n };\n }\n }\n\n async metadata?() {\n const metadata = await this._actor.getMetadata();\n const metadataEntries: Array<[string, Value]> = [\n [`${DIP20}:fee`, { Nat: metadata.fee }],\n [`${DIP20}:decimals`, { Nat: BigInt(metadata.decimals) }],\n [`${DIP20}:owner`, { Text: metadata.owner.toText() }],\n [`${DIP20}:logo`, { Text: metadata.logo }],\n [`${DIP20}:name`, { Text: metadata.name }],\n [`${DIP20}:totalSupply`, { Nat: metadata.totalSupply }],\n [`${DIP20}:symbol`, { Text: metadata.symbol }],\n ];\n return metadataEntries;\n }\n\n async name?() {\n return this._actor.name();\n }\n\n async symbol?() {\n return this._actor.symbol();\n }\n\n async decimals?() {\n return this._actor.decimals();\n }\n\n async fee?() {\n return (await this._actor.getMetadata()).fee;\n }\n\n async totalSupply?() {\n return this._actor.totalSupply();\n }\n\n async mintingAccount?() {\n const metadata = await this._actor.getMetadata();\n return metadata.owner.toText();\n }\n\n async balanceOf?(account: string) {\n return this._actor.balanceOf(principalFromString(account));\n }\n\n async transfer?(args: { to: string; amount: bigint }): Promise {\n const res = await this._actor.transfer(\n principalFromString(args.to),\n args.amount\n );\n if (\"Ok\" in res) {\n return res.Ok;\n }\n throw Error(JSON.stringify(res.Err));\n }\n\n async logo?() {\n return this._actor.logo();\n }\n\n async approve?(args: { spender: string; amount: bigint }) {\n const res = await this._actor.approve(\n principalFromString(args.spender),\n args.amount\n );\n if (\"Ok\" in res) {\n return res.Ok;\n }\n throw Error(JSON.stringify(res.Err));\n }\n\n async transferFrom?(args: { from: string; to: string; amount: bigint }) {\n const res = await this._actor.transferFrom(\n principalFromString(args.from),\n principalFromString(args.to),\n args.amount\n );\n if (\"Ok\" in res) {\n return res.Ok;\n }\n throw Error(JSON.stringify(res.Err));\n }\n\n async allowance?(args: { account: string; spender: string }) {\n return {\n allowance: await this._actor.allowance(\n principalFromString(args.account),\n principalFromString(args.spender)\n ),\n };\n }\n}\n","import { ActorConfig, HttpAgent } from \"@dfinity/agent\";\nimport { intersect, UnionToIntersection } from \"./utils\";\nimport {\n AccountType,\n BaseToken,\n IdentifiedCall,\n Token,\n TokenType,\n} from \"./tokens/token\";\nimport { ICP_TYPE, IcpMethods, IcpToken } from \"./tokens/icpToken\";\n// import { SLD_TYPE, SldMethods, SldToken } from \"./tokens/sldToken\";\nimport { EXT_TYPE, ExtMethods, ExtToken } from \"./tokens/extToken\";\nimport {\n DIP721_V2_TYPE,\n Dip721V2Methods,\n Dip721V2Token,\n} from \"./tokens/dip721V2Token\";\nimport {\n DIP721_V2_BETA_TYPE,\n Dip721V2BetaMethods,\n Dip721V2BetaToken,\n} from \"./tokens/dip721V2BetaToken\";\nimport {\n DIP721_LEGACY_TYPE,\n Dip721LegacyMethods,\n Dip721LegacyToken,\n} from \"./tokens/dip721LegacyToken\";\nimport { Icrc1Token } from \"./tokens/icrc1Token\";\nimport { DIP20_TYPE, Dip20Methods, Dip20Token } from \"./tokens/dip20Token\";\n\nexport interface TokenManagerConfig\n extends ActorConfig {\n readonly supportedStandards?: T[];\n}\n\nexport class TokenManager {\n private static readonly tokens = [\n Icrc1Token,\n IcpToken,\n // SldToken,\n ExtToken,\n Dip721V2Token,\n Dip721V2BetaToken,\n Dip721LegacyToken,\n Dip20Token,\n ];\n private readonly _tokens: (BaseToken & Token)[];\n\n protected constructor(config: TokenManagerConfig) {\n this._tokens = TokenManager.getTokens(config.supportedStandards ?? []).map(\n (token) => token.create(config)\n ) as typeof this._tokens;\n const methods: Array = [\n \"metadata\",\n \"name\",\n \"symbol\",\n \"decimals\",\n \"fee\",\n \"totalSupply\",\n \"mintingAccount\",\n \"balanceOf\",\n \"ownerOf\",\n \"tokens\",\n \"tokensOf\",\n \"metadataOf\",\n \"transfer\",\n \"approve\",\n \"getApproved\",\n \"setApprovalForAll\",\n \"isApprovedForAll\",\n \"transferFrom\",\n \"allowance\",\n \"getCustodians\",\n \"setCustodian\",\n \"mint\",\n \"burn\",\n \"royaltyFee\",\n \"setRoyaltyFee\",\n \"logo\",\n \"assetOf\",\n \"imageOf\",\n \"attributesOf\",\n ];\n methods.forEach((method) => {\n if (this._tokens.some((t) => method in t)) {\n // @ts-ignore\n this[method] = (...args: any[]) => {\n const token = this._tokens.find((t) => method in t);\n if (!token) {\n throw Error(\"Method not implemented\");\n }\n // @ts-ignore\n return token[method].apply(token, args);\n };\n }\n });\n }\n\n static create<\n T extends string | undefined = undefined,\n M = T extends\n | ICP_TYPE\n // | SLD_TYPE\n | EXT_TYPE\n | DIP721_V2_TYPE\n | DIP721_V2_BETA_TYPE\n | DIP721_LEGACY_TYPE\n | DIP20_TYPE\n ? IcpMethods &\n // SldMethods &\n ExtMethods &\n Dip721V2Methods &\n Dip721V2BetaMethods &\n Dip721LegacyMethods &\n Dip20Methods\n : Partial,\n R = T extends string ? UnionToIntersection : Promise\n >(config: TokenManagerConfig): R {\n if (config.supportedStandards) {\n return new TokenManager(config) as unknown as R;\n }\n return TokenManager.supportedStandards(config).then(\n (supportedStandards) =>\n new TokenManager({\n ...config,\n supportedStandards: supportedStandards.map(({ name }) => name),\n })\n ) as unknown as R;\n }\n\n static async supportedStandards(config: ActorConfig) {\n return (\n await Promise.all(\n TokenManager.tokens.map((token) =>\n token.supportedStandards({\n ...config,\n agent:\n config.agent instanceof HttpAgent\n ? new HttpAgent({\n source: config.agent,\n retryTimes: 1, // Only try to get supported standards for each token once\n })\n : config.agent,\n })\n )\n )\n ).flat();\n }\n\n static tokenType(supportedStandards: string[]): TokenType | undefined {\n return TokenManager.getTokens(supportedStandards)[0]?.tokenType(\n supportedStandards\n );\n }\n\n static accountType(supportedStandards: string[]): AccountType | undefined {\n const accountTypes = TokenManager.getTokens(supportedStandards).map(\n (token) => token.accountType\n );\n if (accountTypes.includes(\"hash\")) {\n // Least strict account type, all tokens that accept a hash can also accept account and principal\n return \"hash\";\n }\n if (accountTypes.includes(\"account\")) {\n // All tokens that accept an account can also accept principal\n return \"account\";\n }\n if (accountTypes.includes(\"principal\")) {\n // Only principals are supported, hash is not supported and accounts will use the primary subaccount\n return \"principal\";\n }\n }\n\n static identifyCall(\n supportedStandards: string[],\n methodName: string,\n args: any[]\n ): IdentifiedCall | undefined {\n for (const token of TokenManager.getTokens(supportedStandards)) {\n const data = token.identifyCall(methodName, args);\n if (data) {\n return data;\n }\n }\n }\n\n private static getTokens(supportedStandards: string[]) {\n return TokenManager.tokens.reduce(\n (tokens, token) =>\n intersect(supportedStandards, token.implementedStandards).length\n ? [...tokens, token]\n : tokens,\n [] as typeof TokenManager.tokens\n );\n }\n}\n\n// Re-export utils and all tokens\nexport * from \"./utils\";\nexport * from \"./tokens/token\";\nexport * from \"./tokens/icrc1Token\";\nexport * from \"./tokens/icpToken\";\n// export * from \"./tokens/sldToken\";\nexport * from \"./tokens/extToken\";\nexport * from \"./tokens/dip721V2Token\";\nexport * from \"./tokens/dip721V2BetaToken\";\nexport * from \"./tokens/dip721LegacyToken\";\nexport * from \"./tokens/dip20Token\";\n","import { Principal } from '@dfinity/principal';\nimport { RequestId } from '../request_id';\nimport { JsonObject } from '@dfinity/candid';\nimport { Identity } from '../auth';\nimport { HttpHeaderField } from './http/types';\n\n/**\n * Codes used by the replica for rejecting a message.\n * See {@link https://sdk.dfinity.org/docs/interface-spec/#reject-codes | the interface spec}.\n */\nexport enum ReplicaRejectCode {\n SysFatal = 1,\n SysTransient = 2,\n DestinationInvalid = 3,\n CanisterReject = 4,\n CanisterError = 5,\n}\n\n/**\n * Options when doing a {@link Agent.readState} call.\n */\nexport interface ReadStateOptions {\n /**\n * A list of paths to read the state of.\n */\n paths: ArrayBuffer[][];\n}\n\n/**\n *\n */\nexport type QueryResponse = QueryResponseReplied | QueryResponseRejected;\n\nexport const enum QueryResponseStatus {\n Replied = 'replied',\n Rejected = 'rejected',\n}\n\nexport interface HttpDetailsResponse {\n ok: boolean;\n status: number;\n statusText: string;\n headers: HttpHeaderField[];\n}\n\nexport type ApiQueryResponse = QueryResponse & { httpDetails: HttpDetailsResponse };\n\nexport interface QueryResponseBase {\n status: QueryResponseStatus;\n}\n\nexport interface QueryResponseReplied extends QueryResponseBase {\n status: QueryResponseStatus.Replied;\n reply: { arg: ArrayBuffer };\n}\n\nexport interface QueryResponseRejected extends QueryResponseBase {\n status: QueryResponseStatus.Rejected;\n reject_code: ReplicaRejectCode;\n reject_message: string;\n}\n\n/**\n * Options when doing a {@link Agent.query} call.\n */\nexport interface QueryFields {\n /**\n * The method name to call.\n */\n methodName: string;\n\n /**\n * A binary encoded argument. This is already encoded and will be sent as is.\n */\n arg: ArrayBuffer;\n}\n\n/**\n * Options when doing a {@link Agent.call} call.\n */\nexport interface CallOptions {\n /**\n * The method name to call.\n */\n methodName: string;\n\n /**\n * A binary encoded argument. This is already encoded and will be sent as is.\n */\n arg: ArrayBuffer;\n\n /**\n * An effective canister ID, used for routing. This should only be mentioned if\n * it's different from the canister ID.\n */\n effectiveCanisterId: Principal | string;\n}\n\nexport interface ReadStateResponse {\n certificate: ArrayBuffer;\n}\n\nexport interface SubmitResponse {\n requestId: RequestId;\n response: {\n ok: boolean;\n status: number;\n statusText: string;\n body: {\n error_code?: string;\n reject_code: number;\n reject_message: string;\n } | null;\n headers: HttpHeaderField[];\n };\n}\n\n/**\n * An Agent able to make calls and queries to a Replica.\n */\nexport interface Agent {\n readonly rootKey: ArrayBuffer | null;\n /**\n * Returns the principal ID associated with this agent (by default). It only shows\n * the principal of the default identity in the agent, which is the principal used\n * when calls don't specify it.\n */\n getPrincipal(): Promise;\n\n /**\n * Create the request for the read state call.\n * `readState` uses this internally.\n * Useful to avoid signing the same request multiple times.\n */\n createReadStateRequest?(\n options: ReadStateOptions,\n identity?: Identity,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): Promise;\n\n /**\n * Send a read state query to the replica. This includes a list of paths to return,\n * and will return a Certificate. This will only reject on communication errors,\n * but the certificate might contain less information than requested.\n * @param effectiveCanisterId A Canister ID related to this call.\n * @param options The options for this call.\n * @param identity Identity for the call. If not specified, uses the instance identity.\n * @param request The request to send in case it has already been created.\n */\n readState(\n effectiveCanisterId: Principal | string,\n options: ReadStateOptions,\n identity?: Identity,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n request?: any,\n ): Promise;\n\n call(canisterId: Principal | string, fields: CallOptions): Promise;\n\n /**\n * Query the status endpoint of the replica. This normally has a few fields that\n * corresponds to the version of the replica, its root public key, and any other\n * information made public.\n * @returns A JsonObject that is essentially a record of fields from the status\n * endpoint.\n */\n status(): Promise;\n\n /**\n * Send a query call to a canister. See\n * {@link https://sdk.dfinity.org/docs/interface-spec/#http-query | the interface spec}.\n * @param canisterId The Principal of the Canister to send the query to. Sending a query to\n * the management canister is not supported (as it has no meaning from an agent).\n * @param options Options to use to create and send the query.\n * @param identity Sender principal to use when sending the query.\n * @returns The response from the replica. The Promise will only reject when the communication\n * failed. If the query itself failed but no protocol errors happened, the response will\n * be of type QueryResponseRejected.\n */\n query(\n canisterId: Principal | string,\n options: QueryFields,\n identity?: Identity | Promise,\n ): Promise;\n\n /**\n * By default, the agent is configured to talk to the main Internet Computer,\n * and verifies responses using a hard-coded public key.\n *\n * This function will instruct the agent to ask the endpoint for its public\n * key, and use that instead. This is required when talking to a local test\n * instance, for example.\n *\n * Only use this when you are _not_ talking to the main Internet Computer,\n * otherwise you are prone to man-in-the-middle attacks! Do not call this\n * function by default.\n */\n fetchRootKey(): Promise;\n /**\n * If an application needs to invalidate an identity under certain conditions, an `Agent` may expose an `invalidateIdentity` method.\n * Invoking this method will set the inner identity used by the `Agent` to `null`.\n *\n * A use case for this would be - after a certain period of inactivity, a secure application chooses to invalidate the identity of any `HttpAgent` instances. An invalid identity can be replaced by `Agent.replaceIdentity`\n */\n invalidateIdentity?(): void;\n /**\n * If an application needs to replace an identity under certain conditions, an `Agent` may expose a `replaceIdentity` method.\n * Invoking this method will set the inner identity used by the `Agent` to a newly provided identity.\n *\n * A use case for this would be - after authenticating using `@dfinity/auth-client`, you can replace the `AnonymousIdentity` of your `Actor` with a `DelegationIdentity`.\n *\n * ```Actor.agentOf(defaultActor).replaceIdentity(await authClient.getIdentity());```\n */\n replaceIdentity?(identity: Identity): void;\n}\n","import { Principal } from '@dfinity/principal';\nimport { HttpAgentRequest } from './agent/http/types';\nimport { requestIdOf } from './request_id';\nimport { concat, toHex } from './utils/buffer';\n\nconst domainSeparator = new TextEncoder().encode('\\x0Aic-request');\n\n/**\n * A Key Pair, containing a secret and public key.\n */\nexport interface KeyPair {\n secretKey: ArrayBuffer;\n publicKey: PublicKey;\n}\n\n/**\n * A public key that is DER encoded. This is a branded ArrayBuffer.\n */\nexport type DerEncodedPublicKey = ArrayBuffer & { __derEncodedPublicKey__?: void };\n\n/**\n * A signature array buffer.\n */\nexport type Signature = ArrayBuffer & { __signature__: void };\n\n/**\n * A Public Key implementation.\n */\nexport interface PublicKey {\n // Get the public key bytes encoded with DER.\n toDer(): DerEncodedPublicKey;\n}\n\n/**\n * A General Identity object. This does not have to be a private key (for example,\n * the Anonymous identity), but it must be able to transform request.\n */\nexport interface Identity {\n /**\n * Get the principal represented by this identity. Normally should be a\n * `Principal.selfAuthenticating()`.\n */\n getPrincipal(): Principal;\n\n /**\n * Transform a request into a signed version of the request. This is done last\n * after the transforms on the body of a request. The returned object can be\n * anything, but must be serializable to CBOR.\n */\n transformRequest(request: HttpAgentRequest): Promise;\n}\n\n/**\n * An Identity that can sign blobs.\n */\nexport abstract class SignIdentity implements Identity {\n protected _principal: Principal | undefined;\n\n /**\n * Returns the public key that would match this identity's signature.\n */\n public abstract getPublicKey(): PublicKey;\n\n /**\n * Signs a blob of data, with this identity's private key.\n */\n public abstract sign(blob: ArrayBuffer): Promise;\n\n /**\n * Get the principal represented by this identity. Normally should be a\n * `Principal.selfAuthenticating()`.\n */\n public getPrincipal(): Principal {\n if (!this._principal) {\n this._principal = Principal.selfAuthenticating(new Uint8Array(this.getPublicKey().toDer()));\n }\n return this._principal;\n }\n\n /**\n * Transform a request into a signed version of the request. This is done last\n * after the transforms on the body of a request. The returned object can be\n * anything, but must be serializable to CBOR.\n * @param request - internet computer request to transform\n */\n public async transformRequest(request: HttpAgentRequest): Promise {\n const { body, ...fields } = request;\n const requestId = await requestIdOf(body);\n return {\n ...fields,\n body: {\n content: body,\n sender_pubkey: this.getPublicKey().toDer(),\n sender_sig: await this.sign(concat(domainSeparator, requestId)),\n },\n };\n }\n}\n\nexport class AnonymousIdentity implements Identity {\n public getPrincipal(): Principal {\n return Principal.anonymous();\n }\n\n public async transformRequest(request: HttpAgentRequest): Promise {\n return {\n ...request,\n body: { content: request.body },\n };\n }\n}\n\n/*\n * We need to communicate with other agents on the page about identities,\n * but those messages may need to go across boundaries where it's not possible to\n * serialize/deserialize object prototypes easily.\n * So these are lightweight, serializable objects that contain enough information to recreate\n * SignIdentities, but don't commit to having all methods of SignIdentity.\n *\n * Use Case:\n * * DOM Events that let differently-versioned components communicate to one another about\n * Identities, even if they're using slightly different versions of agent packages to\n * create/interpret them.\n */\nexport interface AnonymousIdentityDescriptor {\n type: 'AnonymousIdentity';\n}\nexport interface PublicKeyIdentityDescriptor {\n type: 'PublicKeyIdentity';\n publicKey: string;\n}\nexport type IdentityDescriptor = AnonymousIdentityDescriptor | PublicKeyIdentityDescriptor;\n\n/**\n * Create an IdentityDescriptor from a @dfinity/identity Identity\n * @param identity - identity describe in returned descriptor\n */\nexport function createIdentityDescriptor(\n identity: SignIdentity | AnonymousIdentity,\n): IdentityDescriptor {\n const identityIndicator: IdentityDescriptor =\n 'getPublicKey' in identity\n ? { type: 'PublicKeyIdentity', publicKey: toHex(identity.getPublicKey().toDer()) }\n : { type: 'AnonymousIdentity' };\n return identityIndicator;\n}\n","/**\n * Generates a random unsigned 32-bit integer between 0 and 0xffffffff\n * @returns {number} a random number\n */\nexport const randomNumber = (): number => {\n // determine whether browser crypto is available\n if (typeof window !== 'undefined' && !!window.crypto && !!window.crypto.getRandomValues) {\n const array = new Uint32Array(1);\n window.crypto.getRandomValues(array);\n return array[0];\n }\n // A second check for webcrypto, in case it is loaded under global instead of window\n if (typeof crypto !== 'undefined' && crypto.getRandomValues) {\n const array = new Uint32Array(1);\n crypto.getRandomValues(array);\n return array[0];\n }\n\n type nodeCrypto = {\n randomInt: (min: number, max: number) => number;\n };\n\n // determine whether node crypto is available\n if (typeof crypto !== 'undefined' && (crypto as unknown as nodeCrypto).randomInt) {\n return (crypto as unknown as nodeCrypto).randomInt(0, 0xffffffff);\n }\n\n // fall back to Math.random\n return Math.floor(Math.random() * 0xffffffff);\n};\n","import type { Principal } from '@dfinity/principal';\nimport { Expiry } from './transforms';\nimport { randomNumber } from '../../utils/random';\n\n/**\n * @internal\n */\nexport const enum Endpoint {\n Query = 'read',\n ReadState = 'read_state',\n Call = 'call',\n}\n\n// An HttpAgent request, before it gets encoded and sent to the server.\n// We create an empty request that we will fill later.\nexport type HttpAgentRequest =\n | HttpAgentQueryRequest\n | HttpAgentSubmitRequest\n | HttpAgentReadStateRequest;\n\nexport interface HttpAgentBaseRequest {\n readonly endpoint: Endpoint;\n request: RequestInit;\n}\n\nexport type HttpHeaderField = [string, string];\n\nexport interface HttpAgentSubmitRequest extends HttpAgentBaseRequest {\n readonly endpoint: Endpoint.Call;\n body: CallRequest;\n}\n\nexport interface HttpAgentQueryRequest extends HttpAgentBaseRequest {\n readonly endpoint: Endpoint.Query;\n body: ReadRequest;\n}\n\nexport interface HttpAgentReadStateRequest extends HttpAgentBaseRequest {\n readonly endpoint: Endpoint.ReadState;\n body: ReadRequest;\n}\n\nexport interface Signed {\n content: T;\n sender_pubkey: ArrayBuffer;\n sender_sig: ArrayBuffer;\n}\n\nexport interface UnSigned {\n content: T;\n}\n\nexport type Envelope = Signed | UnSigned;\n\nexport interface HttpAgentRequestTransformFn {\n (args: HttpAgentRequest): Promise;\n priority?: number;\n}\n\n// The fields in a \"call\" submit request.\n// tslint:disable:camel-case\nexport interface CallRequest extends Record {\n request_type: SubmitRequestType.Call;\n canister_id: Principal;\n method_name: string;\n arg: ArrayBuffer;\n sender: Uint8Array | Principal;\n ingress_expiry: Expiry;\n}\n// tslint:enable:camel-case\n\n// The types of values allowed in the `request_type` field for submit requests.\nexport enum SubmitRequestType {\n Call = 'call',\n}\n\n// The types of values allowed in the `request_type` field for read requests.\nexport const enum ReadRequestType {\n Query = 'query',\n ReadState = 'read_state',\n}\n\n// The fields in a \"query\" read request.\nexport interface QueryRequest extends Record {\n request_type: ReadRequestType.Query;\n canister_id: Principal;\n method_name: string;\n arg: ArrayBuffer;\n sender: Uint8Array | Principal;\n ingress_expiry: Expiry;\n}\n\nexport interface ReadStateRequest extends Record {\n request_type: ReadRequestType.ReadState;\n paths: ArrayBuffer[][];\n ingress_expiry: Expiry;\n sender: Uint8Array | Principal;\n}\n\nexport type ReadRequest = QueryRequest | ReadStateRequest;\n\n// A Nonce that can be used for calls.\nexport type Nonce = Uint8Array & { __nonce__: void };\n\n/**\n * Create a random Nonce, based on random values\n */\nexport function makeNonce(): Nonce {\n // Encode 128 bits.\n const buffer = new ArrayBuffer(16);\n const view = new DataView(buffer);\n const rand1 = randomNumber();\n const rand2 = randomNumber();\n const rand3 = randomNumber();\n const rand4 = randomNumber();\n\n view.setUint32(0, rand1);\n view.setUint32(4, rand2);\n view.setUint32(8, rand3);\n view.setUint32(12, rand4);\n\n return buffer as Nonce;\n}\n","import { lebEncode } from '@dfinity/candid';\nimport * as cbor from 'simple-cbor';\nimport {\n Endpoint,\n HttpAgentRequest,\n HttpAgentRequestTransformFn,\n HttpHeaderField,\n makeNonce,\n Nonce,\n} from './types';\nimport { toHex } from '../../utils/buffer';\n\nconst NANOSECONDS_PER_MILLISECONDS = BigInt(1_000_000);\n\nconst REPLICA_PERMITTED_DRIFT_MILLISECONDS = BigInt(60 * 1000);\n\nexport class Expiry {\n private readonly _value: bigint;\n\n constructor(deltaInMSec: number) {\n // Use bigint because it can overflow the maximum number allowed in a double float.\n this._value =\n (BigInt(Date.now()) + BigInt(deltaInMSec) - REPLICA_PERMITTED_DRIFT_MILLISECONDS) *\n NANOSECONDS_PER_MILLISECONDS;\n }\n\n public toCBOR(): cbor.CborValue {\n // TODO: change this to take the minimum amount of space (it always takes 8 bytes now).\n return cbor.value.u64(this._value.toString(16), 16);\n }\n\n public toHash(): ArrayBuffer {\n return lebEncode(this._value);\n }\n}\n\n/**\n * Create a Nonce transform, which takes a function that returns a Buffer, and adds it\n * as the nonce to every call requests.\n * @param nonceFn A function that returns a buffer. By default uses a semi-random method.\n */\nexport function makeNonceTransform(nonceFn: () => Nonce = makeNonce): HttpAgentRequestTransformFn {\n return async (request: HttpAgentRequest) => {\n const nonce = nonceFn();\n // Nonce needs to be inserted into the header for all requests, to enable logs to be correlated with requests.\n const headers = request.request.headers;\n // TODO: uncomment this when the http proxy supports it.\n // headers.set('X-IC-Request-ID', toHex(new Uint8Array(nonce)));\n request.request.headers = headers;\n\n // Nonce only needs to be inserted into the body for async calls, to prevent replay attacks.\n if (request.endpoint === Endpoint.Call) {\n request.body.nonce = nonceFn();\n }\n };\n}\n\n/**\n * Create a transform that adds a delay (by default 5 minutes) to the expiry.\n *\n * @param delayInMilliseconds The delay to add to the call time, in milliseconds.\n */\nexport function makeExpiryTransform(delayInMilliseconds: number): HttpAgentRequestTransformFn {\n return async (request: HttpAgentRequest) => {\n request.body.ingress_expiry = new Expiry(delayInMilliseconds);\n };\n}\n\n/**\n * Maps the default fetch headers field to the serializable HttpHeaderField.\n *\n * @param headers Fetch definition of the headers type\n * @returns array of header fields\n */\nexport function httpHeadersTransform(headers: Headers): HttpHeaderField[] {\n const headerFields: HttpHeaderField[] = [];\n headers.forEach((value, key) => {\n headerFields.push([key, value]);\n });\n return headerFields;\n}\n","import { HttpDetailsResponse } from '../api';\n\nexport class AgentHTTPResponseError extends Error {\n constructor(message: string, public readonly response: HttpDetailsResponse) {\n super(message);\n this.name = this.constructor.name;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n","import { JsonObject } from '@dfinity/candid';\nimport { Principal } from '@dfinity/principal';\nimport { AgentError } from '../../errors';\nimport { AnonymousIdentity, Identity } from '../../auth';\nimport * as cbor from '../../cbor';\nimport { requestIdOf } from '../../request_id';\nimport { fromHex } from '../../utils/buffer';\nimport {\n Agent,\n ApiQueryResponse,\n QueryFields,\n QueryResponse,\n ReadStateOptions,\n ReadStateResponse,\n SubmitResponse,\n} from '../api';\nimport { Expiry, httpHeadersTransform, makeNonceTransform } from './transforms';\nimport {\n CallRequest,\n Endpoint,\n HttpAgentRequest,\n HttpAgentRequestTransformFn,\n HttpAgentSubmitRequest,\n makeNonce,\n QueryRequest,\n ReadRequestType,\n SubmitRequestType,\n} from './types';\nimport { AgentHTTPResponseError } from './errors';\n\nexport * from './transforms';\nexport { Nonce, makeNonce } from './types';\n\nexport enum RequestStatusResponseStatus {\n Received = 'received',\n Processing = 'processing',\n Replied = 'replied',\n Rejected = 'rejected',\n Unknown = 'unknown',\n Done = 'done',\n}\n\n// Default delta for ingress expiry is 5 minutes.\nconst DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS = 5 * 60 * 1000;\n\n// Root public key for the IC, encoded as hex\nconst IC_ROOT_KEY =\n '308182301d060d2b0601040182dc7c0503010201060c2b0601040182dc7c05030201036100814' +\n 'c0e6ec71fab583b08bd81373c255c3c371b2e84863c98a4f1e08b74235d14fb5d9c0cd546d968' +\n '5f913a0c0b2cc5341583bf4b4392e467db96d65b9bb4cb717112f8472e0d5a4d14505ffd7484' +\n 'b01291091c5f87b98883463f98091a0baaae';\n\n// IC0 domain info\nconst IC0_DOMAIN = 'ic0.app';\nconst IC0_SUB_DOMAIN = '.ic0.app';\n\nconst ICP0_DOMAIN = 'icp0.io';\nconst ICP0_SUB_DOMAIN = '.icp0.io';\n\nconst ICP_API_DOMAIN = 'icp-api.io';\nconst ICP_API_SUB_DOMAIN = '.icp-api.io';\n\nclass HttpDefaultFetchError extends AgentError {\n constructor(public readonly message: string) {\n super(message);\n }\n}\nexport class IdentityInvalidError extends AgentError {\n constructor(public readonly message: string) {\n super(message);\n }\n}\n\n// HttpAgent options that can be used at construction.\nexport interface HttpAgentOptions {\n // Another HttpAgent to inherit configuration (pipeline and fetch) of. This\n // is only used at construction.\n source?: HttpAgent;\n\n // A surrogate to the global fetch function. Useful for testing.\n fetch?: typeof fetch;\n\n // Additional options to pass along to fetch. Will not override fields that\n // the agent already needs to set\n // Should follow the RequestInit interface, but we intentially support non-standard fields\n fetchOptions?: Record;\n\n // Additional options to pass along to fetch for the call API.\n callOptions?: Record;\n\n // The host to use for the client. By default, uses the same host as\n // the current page.\n host?: string;\n\n // The principal used to send messages. This cannot be empty at the request\n // time (will throw).\n identity?: Identity | Promise;\n\n credentials?: {\n name: string;\n password?: string;\n };\n /**\n * Prevents the agent from providing a unique {@link Nonce} with each call.\n * Enabling may cause rate limiting of identical requests\n * at the boundary nodes.\n *\n * To add your own nonce generation logic, you can use the following:\n * @example\n * import {makeNonceTransform, makeNonce} from '@dfinity/agent';\n * const agent = new HttpAgent({ disableNonce: true });\n * agent.addTransform(makeNonceTransform(makeNonce);\n * @default false\n */\n disableNonce?: boolean;\n /**\n * Number of times to retry requests before throwing an error\n * @default 3\n */\n retryTimes?: number;\n}\n\nfunction getDefaultFetch(): typeof fetch {\n let defaultFetch;\n\n if (typeof window !== 'undefined') {\n // Browser context\n if (window.fetch) {\n defaultFetch = window.fetch.bind(window);\n } else {\n throw new HttpDefaultFetchError(\n 'Fetch implementation was not available. You appear to be in a browser context, but window.fetch was not present.',\n );\n }\n } else if (typeof global !== 'undefined') {\n // Node context\n if (global.fetch) {\n defaultFetch = global.fetch.bind(global);\n } else {\n throw new HttpDefaultFetchError(\n 'Fetch implementation was not available. You appear to be in a Node.js context, but global.fetch was not available.',\n );\n }\n } else if (typeof self !== 'undefined') {\n if (self.fetch) {\n defaultFetch = self.fetch.bind(self);\n }\n }\n\n if (defaultFetch) {\n return defaultFetch;\n }\n throw new HttpDefaultFetchError(\n 'Fetch implementation was not available. Please provide fetch to the HttpAgent constructor, or ensure it is available in the window or global context.',\n );\n}\n\n// A HTTP agent allows users to interact with a client of the internet computer\n// using the available methods. It exposes an API that closely follows the\n// public view of the internet computer, and is not intended to be exposed\n// directly to the majority of users due to its low-level interface.\n//\n// There is a pipeline to apply transformations to the request before sending\n// it to the client. This is to decouple signature, nonce generation and\n// other computations so that this class can stay as simple as possible while\n// allowing extensions.\nexport class HttpAgent implements Agent {\n public rootKey = fromHex(IC_ROOT_KEY);\n private readonly _pipeline: HttpAgentRequestTransformFn[] = [];\n private _identity: Promise | null;\n private readonly _fetch: typeof fetch;\n private readonly _fetchOptions?: Record;\n private readonly _callOptions?: Record;\n private _timeDiffMsecs = 0;\n private readonly _host: URL;\n private readonly _credentials: string | undefined;\n private _rootKeyFetched = false;\n private readonly _retryTimes; // Retry requests N times before erroring by default\n public readonly _isAgent = true;\n\n constructor(options: HttpAgentOptions = {}) {\n if (options.source) {\n if (!(options.source instanceof HttpAgent)) {\n throw new Error(\"An Agent's source can only be another HttpAgent\");\n }\n this._pipeline = [...options.source._pipeline];\n this._identity = options.source._identity;\n this._fetch = options.source._fetch;\n this._host = options.source._host;\n this._credentials = options.source._credentials;\n } else {\n this._fetch = options.fetch || getDefaultFetch() || fetch.bind(global);\n this._fetchOptions = options.fetchOptions;\n this._callOptions = options.callOptions;\n }\n if (options.host !== undefined) {\n if (!options.host.match(/^[a-z]+:/) && typeof window !== 'undefined') {\n this._host = new URL(window.location.protocol + '//' + options.host);\n } else {\n this._host = new URL(options.host);\n }\n } else if (options.source !== undefined) {\n // Safe to ignore here.\n this._host = options.source._host;\n } else {\n const location = typeof window !== 'undefined' ? window.location : undefined;\n if (!location) {\n this._host = new URL('https://icp-api.io');\n console.warn(\n 'Could not infer host from window.location, defaulting to mainnet gateway of https://icp-api.io. Please provide a host to the HttpAgent constructor to avoid this warning.',\n );\n }\n // Mainnet and local will have the api route available\n const knownHosts = ['ic0.app', 'icp0.io', 'localhost', '127.0.0.1'];\n const hostname = location?.hostname;\n let knownHost;\n if (hostname && typeof hostname === 'string') {\n knownHost = knownHosts.find(host => hostname.endsWith(host));\n }\n\n if (location && knownHost) {\n // If the user is on a boundary-node provided host, we can use the same host for the agent\n this._host = new URL(\n `${location.protocol}//${knownHost}${location.port ? ':' + location.port : ''}`,\n );\n } else {\n this._host = new URL('https://icp-api.io');\n console.warn(\n 'Could not infer host from window.location, defaulting to mainnet gateway of https://icp-api.io. Please provide a host to the HttpAgent constructor to avoid this warning.',\n );\n }\n }\n // Default is 3, only set from option if greater or equal to 0\n this._retryTimes =\n options.retryTimes !== undefined && options.retryTimes >= 0 ? options.retryTimes : 3;\n // Rewrite to avoid redirects\n if (this._host.hostname.endsWith(IC0_SUB_DOMAIN)) {\n this._host.hostname = IC0_DOMAIN;\n } else if (this._host.hostname.endsWith(ICP0_SUB_DOMAIN)) {\n this._host.hostname = ICP0_DOMAIN;\n } else if (this._host.hostname.endsWith(ICP_API_SUB_DOMAIN)) {\n this._host.hostname = ICP_API_DOMAIN;\n }\n\n if (options.credentials) {\n const { name, password } = options.credentials;\n this._credentials = `${name}${password ? ':' + password : ''}`;\n }\n this._identity = Promise.resolve(options.identity || new AnonymousIdentity());\n\n // Add a nonce transform to ensure calls are unique\n if (!options.disableNonce) {\n this.addTransform(makeNonceTransform(makeNonce));\n }\n }\n\n public isLocal(): boolean {\n const hostname = this._host.hostname;\n return hostname === '127.0.0.1' || hostname.endsWith('localhost');\n }\n\n public addTransform(fn: HttpAgentRequestTransformFn, priority = fn.priority || 0): void {\n // Keep the pipeline sorted at all time, by priority.\n const i = this._pipeline.findIndex(x => (x.priority || 0) < priority);\n this._pipeline.splice(i >= 0 ? i : this._pipeline.length, 0, Object.assign(fn, { priority }));\n }\n\n public async getPrincipal(): Promise {\n if (!this._identity) {\n throw new IdentityInvalidError(\n \"This identity has expired due this application's security policy. Please refresh your authentication.\",\n );\n }\n return (await this._identity).getPrincipal();\n }\n\n public async call(\n canisterId: Principal | string,\n options: {\n methodName: string;\n arg: ArrayBuffer;\n effectiveCanisterId?: Principal | string;\n },\n identity?: Identity | Promise,\n ): Promise {\n const id = await (identity !== undefined ? await identity : await this._identity);\n if (!id) {\n throw new IdentityInvalidError(\n \"This identity has expired due this application's security policy. Please refresh your authentication.\",\n );\n }\n const canister = Principal.from(canisterId);\n const ecid = options.effectiveCanisterId\n ? Principal.from(options.effectiveCanisterId)\n : canister;\n\n const sender: Principal = id.getPrincipal() || Principal.anonymous();\n\n let ingress_expiry = new Expiry(DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS);\n\n // If the value is off by more than 30 seconds, reconcile system time with the network\n if (Math.abs(this._timeDiffMsecs) > 1_000 * 30) {\n ingress_expiry = new Expiry(DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS + this._timeDiffMsecs);\n }\n\n const submit: CallRequest = {\n request_type: SubmitRequestType.Call,\n canister_id: canister,\n method_name: options.methodName,\n arg: options.arg,\n sender,\n ingress_expiry,\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let transformedRequest: any = (await this._transform({\n request: {\n body: null,\n method: 'POST',\n headers: {\n 'Content-Type': 'application/cbor',\n ...(this._credentials ? { Authorization: 'Basic ' + btoa(this._credentials) } : {}),\n },\n },\n endpoint: Endpoint.Call,\n body: submit,\n })) as HttpAgentSubmitRequest;\n\n // Apply transform for identity.\n transformedRequest = await id.transformRequest(transformedRequest);\n\n const body = cbor.encode(transformedRequest.body);\n\n // Run both in parallel. The fetch is quite expensive, so we have plenty of time to\n // calculate the requestId locally.\n const request = this._requestAndRetry(() =>\n this._fetch('' + new URL(`/api/v2/canister/${ecid.toText()}/call`, this._host), {\n ...this._callOptions,\n ...transformedRequest.request,\n body,\n }),\n );\n\n const [response, requestId] = await Promise.all([request, requestIdOf(submit)]);\n\n const responseBuffer = await response.arrayBuffer();\n const responseBody = (\n response.status === 200 && responseBuffer.byteLength > 0 ? cbor.decode(responseBuffer) : null\n ) as SubmitResponse['response']['body'];\n\n return {\n requestId,\n response: {\n ok: response.ok,\n status: response.status,\n statusText: response.statusText,\n body: responseBody,\n headers: httpHeadersTransform(response.headers),\n },\n };\n }\n\n private async _requestAndRetry(request: () => Promise, tries = 0): Promise {\n const response = await request();\n if (response.ok) {\n return response;\n }\n\n const responseText = await response.clone().text();\n const errorMessage =\n `Server returned an error:\\n` +\n ` Code: ${response.status} (${response.statusText})\\n` +\n ` Body: ${responseText}\\n`;\n\n if (this._retryTimes > tries) {\n console.warn(errorMessage + ` Retrying request.`);\n return await this._requestAndRetry(request, tries + 1);\n }\n\n throw new AgentHTTPResponseError(errorMessage, {\n ok: response.ok,\n status: response.status,\n statusText: response.statusText,\n headers: httpHeadersTransform(response.headers),\n });\n }\n\n public async query(\n canisterId: Principal | string,\n fields: QueryFields,\n identity?: Identity | Promise,\n ): Promise {\n const id = await (identity !== undefined ? await identity : await this._identity);\n if (!id) {\n throw new IdentityInvalidError(\n \"This identity has expired due this application's security policy. Please refresh your authentication.\",\n );\n }\n\n const canister = typeof canisterId === 'string' ? Principal.fromText(canisterId) : canisterId;\n const sender = id?.getPrincipal() || Principal.anonymous();\n\n const request: QueryRequest = {\n request_type: ReadRequestType.Query,\n canister_id: canister,\n method_name: fields.methodName,\n arg: fields.arg,\n sender,\n ingress_expiry: new Expiry(DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS),\n };\n\n // TODO: remove this any. This can be a Signed or UnSigned request.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let transformedRequest: any = await this._transform({\n request: {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/cbor',\n ...(this._credentials ? { Authorization: 'Basic ' + btoa(this._credentials) } : {}),\n },\n },\n endpoint: Endpoint.Query,\n body: request,\n });\n\n // Apply transform for identity.\n transformedRequest = await id?.transformRequest(transformedRequest);\n\n const body = cbor.encode(transformedRequest.body);\n const response = await this._requestAndRetry(() =>\n this._fetch('' + new URL(`/api/v2/canister/${canister.toText()}/query`, this._host), {\n ...this._fetchOptions,\n ...transformedRequest.request,\n body,\n }),\n );\n\n const queryResponse: QueryResponse = cbor.decode(await response.arrayBuffer());\n\n return {\n ...queryResponse,\n httpDetails: {\n ok: response.ok,\n status: response.status,\n statusText: response.statusText,\n headers: httpHeadersTransform(response.headers),\n },\n };\n }\n\n public async createReadStateRequest(\n fields: ReadStateOptions,\n identity?: Identity | Promise,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): Promise {\n const id = await (identity !== undefined ? await identity : await this._identity);\n if (!id) {\n throw new IdentityInvalidError(\n \"This identity has expired due this application's security policy. Please refresh your authentication.\",\n );\n }\n const sender = id?.getPrincipal() || Principal.anonymous();\n\n // TODO: remove this any. This can be a Signed or UnSigned request.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const transformedRequest: any = await this._transform({\n request: {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/cbor',\n ...(this._credentials ? { Authorization: 'Basic ' + btoa(this._credentials) } : {}),\n },\n },\n endpoint: Endpoint.ReadState,\n body: {\n request_type: ReadRequestType.ReadState,\n paths: fields.paths,\n sender,\n ingress_expiry: new Expiry(DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS),\n },\n });\n\n // Apply transform for identity.\n return id?.transformRequest(transformedRequest);\n }\n\n public async readState(\n canisterId: Principal | string,\n fields: ReadStateOptions,\n identity?: Identity | Promise,\n // eslint-disable-next-line\n request?: any,\n ): Promise {\n const canister = typeof canisterId === 'string' ? Principal.fromText(canisterId) : canisterId;\n\n const transformedRequest = request ?? (await this.createReadStateRequest(fields, identity));\n const body = cbor.encode(transformedRequest.body);\n\n // TODO - https://dfinity.atlassian.net/browse/SDK-1092\n const response = await this._requestAndRetry(() =>\n this._fetch('' + new URL(`/api/v2/canister/${canister}/read_state`, this._host), {\n ...this._fetchOptions,\n ...transformedRequest.request,\n body,\n }),\n );\n\n if (!response.ok) {\n throw new Error(\n `Server returned an error:\\n` +\n ` Code: ${response.status} (${response.statusText})\\n` +\n ` Body: ${await response.text()}\\n`,\n );\n }\n return cbor.decode(await response.arrayBuffer());\n }\n\n /**\n * Allows agent to sync its time with the network. Can be called during intialization or mid-lifecycle if the device's clock has drifted away from the network time. This is necessary to set the Expiry for a request\n * @param {Principal} canisterId - Pass a canister ID if you need to sync the time with a particular replica. Uses the management canister by default\n */\n public async syncTime(canisterId?: Principal): Promise {\n const CanisterStatus = await import('../../canisterStatus');\n const callTime = Date.now();\n try {\n if (!canisterId) {\n console.log(\n 'Syncing time with the IC. No canisterId provided, so falling back to ryjl3-tyaaa-aaaaa-aaaba-cai',\n );\n }\n const status = await CanisterStatus.request({\n // Fall back with canisterId of the ICP Ledger\n canisterId: canisterId ?? Principal.from('ryjl3-tyaaa-aaaaa-aaaba-cai'),\n agent: this,\n paths: ['time'],\n });\n\n const replicaTime = status.get('time');\n if (replicaTime) {\n this._timeDiffMsecs = Number(replicaTime as any) - Number(callTime);\n }\n } catch (error) {\n console.error('Caught exception while attempting to sync time:', error);\n }\n }\n\n public async status(): Promise {\n const headers: Record = this._credentials\n ? {\n Authorization: 'Basic ' + btoa(this._credentials),\n }\n : {};\n\n const response = await this._requestAndRetry(() =>\n this._fetch('' + new URL(`/api/v2/status`, this._host), { headers, ...this._fetchOptions }),\n );\n\n return cbor.decode(await response.arrayBuffer());\n }\n\n public async fetchRootKey(): Promise {\n if (!this._rootKeyFetched) {\n // Hex-encoded version of the replica root key\n this.rootKey = ((await this.status()) as any).root_key;\n this._rootKeyFetched = true;\n }\n return this.rootKey;\n }\n\n public invalidateIdentity(): void {\n this._identity = null;\n }\n\n public replaceIdentity(identity: Identity): void {\n this._identity = Promise.resolve(identity);\n }\n\n protected _transform(request: HttpAgentRequest): Promise {\n let p = Promise.resolve(request);\n\n for (const fn of this._pipeline) {\n p = p.then(r => fn(r).then(r2 => r2 || r));\n }\n\n return p;\n }\n}\n","import { JsonObject } from '@dfinity/candid';\nimport {\n Agent,\n ApiQueryResponse,\n CallOptions,\n QueryFields,\n QueryResponse,\n ReadStateOptions,\n ReadStateResponse,\n SubmitResponse,\n} from './api';\nimport { Principal } from '@dfinity/principal';\n\nexport enum ProxyMessageKind {\n Error = 'err',\n GetPrincipal = 'gp',\n GetPrincipalResponse = 'gpr',\n Query = 'q',\n QueryResponse = 'qr',\n Call = 'c',\n CallResponse = 'cr',\n ReadState = 'rs',\n ReadStateResponse = 'rsr',\n Status = 's',\n StatusResponse = 'sr',\n}\n\nexport interface ProxyMessageBase {\n id: number;\n type: ProxyMessageKind;\n}\n\nexport interface ProxyMessageError extends ProxyMessageBase {\n type: ProxyMessageKind.Error;\n error: any;\n}\n\nexport interface ProxyMessageGetPrincipal extends ProxyMessageBase {\n type: ProxyMessageKind.GetPrincipal;\n}\n\nexport interface ProxyMessageGetPrincipalResponse extends ProxyMessageBase {\n type: ProxyMessageKind.GetPrincipalResponse;\n response: string;\n}\n\nexport interface ProxyMessageQuery extends ProxyMessageBase {\n type: ProxyMessageKind.Query;\n args: [string, QueryFields];\n}\n\nexport interface ProxyMessageQueryResponse extends ProxyMessageBase {\n type: ProxyMessageKind.QueryResponse;\n response: QueryResponse;\n}\n\nexport interface ProxyMessageCall extends ProxyMessageBase {\n type: ProxyMessageKind.Call;\n args: [string, CallOptions];\n}\n\nexport interface ProxyMessageCallResponse extends ProxyMessageBase {\n type: ProxyMessageKind.CallResponse;\n response: SubmitResponse;\n}\n\nexport interface ProxyMessageReadState extends ProxyMessageBase {\n type: ProxyMessageKind.ReadState;\n args: [string, ReadStateOptions];\n}\n\nexport interface ProxyMessageReadStateResponse extends ProxyMessageBase {\n type: ProxyMessageKind.ReadStateResponse;\n response: ReadStateResponse;\n}\n\nexport interface ProxyMessageStatus extends ProxyMessageBase {\n type: ProxyMessageKind.Status;\n}\n\nexport interface ProxyMessageStatusResponse extends ProxyMessageBase {\n type: ProxyMessageKind.StatusResponse;\n response: JsonObject;\n}\n\nexport type ProxyMessage =\n | ProxyMessageError\n | ProxyMessageGetPrincipal\n | ProxyMessageGetPrincipalResponse\n | ProxyMessageQuery\n | ProxyMessageQueryResponse\n | ProxyMessageCall\n | ProxyMessageReadState\n | ProxyMessageReadStateResponse\n | ProxyMessageCallResponse\n | ProxyMessageStatus\n | ProxyMessageStatusResponse;\n\n// A Stub Agent that forwards calls to another Agent implementation.\nexport class ProxyStubAgent {\n constructor(private _frontend: (msg: ProxyMessage) => void, private _agent: Agent) {}\n\n public onmessage(msg: ProxyMessage): void {\n switch (msg.type) {\n case ProxyMessageKind.GetPrincipal:\n this._agent.getPrincipal().then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.GetPrincipalResponse,\n response: response.toText(),\n });\n });\n break;\n case ProxyMessageKind.Query:\n this._agent.query(...msg.args).then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.QueryResponse,\n response,\n });\n });\n break;\n case ProxyMessageKind.Call:\n this._agent.call(...msg.args).then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.CallResponse,\n response,\n });\n });\n break;\n case ProxyMessageKind.ReadState:\n this._agent.readState(...msg.args).then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.ReadStateResponse,\n response,\n });\n });\n break;\n case ProxyMessageKind.Status:\n this._agent.status().then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.StatusResponse,\n response,\n });\n });\n break;\n\n default:\n throw new Error(`Invalid message received: ${JSON.stringify(msg)}`);\n }\n }\n}\n\n// An Agent that forwards calls to a backend. The calls are serialized\nexport class ProxyAgent implements Agent {\n private _nextId = 0;\n private _pendingCalls = new Map void, (reject: any) => void]>();\n public rootKey = null;\n\n constructor(private _backend: (msg: ProxyMessage) => void) {}\n\n public onmessage(msg: ProxyMessage): void {\n const id = msg.id;\n\n const maybePromise = this._pendingCalls.get(id);\n if (!maybePromise) {\n throw new Error('A proxy get the same message twice...');\n }\n\n this._pendingCalls.delete(id);\n const [resolve, reject] = maybePromise;\n\n switch (msg.type) {\n case ProxyMessageKind.Error:\n return reject(msg.error);\n case ProxyMessageKind.GetPrincipalResponse:\n case ProxyMessageKind.CallResponse:\n case ProxyMessageKind.QueryResponse:\n case ProxyMessageKind.ReadStateResponse:\n case ProxyMessageKind.StatusResponse:\n return resolve(msg.response);\n default:\n throw new Error(`Invalid message being sent to ProxyAgent: ${JSON.stringify(msg)}`);\n }\n }\n\n public async getPrincipal(): Promise {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.GetPrincipal,\n }).then(principal => {\n if (typeof principal !== 'string') {\n throw new Error('Invalid principal received.');\n }\n return Principal.fromText(principal);\n });\n }\n\n public readState(\n canisterId: Principal | string,\n fields: ReadStateOptions,\n ): Promise {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.ReadState,\n args: [canisterId.toString(), fields],\n }) as Promise;\n }\n\n public call(canisterId: Principal | string, fields: CallOptions): Promise {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.Call,\n args: [canisterId.toString(), fields],\n }) as Promise;\n }\n\n public status(): Promise {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.Status,\n }) as Promise;\n }\n\n public query(canisterId: Principal | string, fields: QueryFields): Promise {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.Query,\n args: [canisterId.toString(), fields],\n }) as Promise;\n }\n\n private async _sendAndWait(msg: ProxyMessage): Promise {\n return new Promise((resolve, reject) => {\n this._pendingCalls.set(msg.id, [resolve, reject]);\n\n this._backend(msg);\n });\n }\n\n public async fetchRootKey(): Promise {\n // Hex-encoded version of the replica root key\n const rootKey = ((await this.status()) as any).root_key;\n this.rootKey = rootKey;\n return rootKey;\n }\n}\n","import { GlobalInternetComputer } from '../index';\nimport { Agent } from './api';\n\nexport * from './api';\nexport * from './http';\nexport * from './proxy';\n\ndeclare const window: GlobalInternetComputer;\ndeclare const global: GlobalInternetComputer;\ndeclare const self: GlobalInternetComputer;\n\nexport function getDefaultAgent(): Agent {\n const agent =\n typeof window === 'undefined'\n ? typeof global === 'undefined'\n ? typeof self === 'undefined'\n ? undefined\n : self.ic.agent\n : global.ic.agent\n : window.ic.agent;\n\n if (!agent) {\n throw new Error('No Agent could be found.');\n }\n\n return agent;\n}\n","import { Principal } from '@dfinity/principal';\nimport { Agent, RequestStatusResponseStatus } from '../agent';\nimport { Certificate, CreateCertificateOptions } from '../certificate';\nimport { RequestId } from '../request_id';\nimport { toHex } from '../utils/buffer';\n\nexport * as strategy from './strategy';\nexport { defaultStrategy } from './strategy';\nexport type PollStrategy = (\n canisterId: Principal,\n requestId: RequestId,\n status: RequestStatusResponseStatus,\n) => Promise;\nexport type PollStrategyFactory = () => PollStrategy;\n\n/**\n * Polls the IC to check the status of the given request then\n * returns the response bytes once the request has been processed.\n * @param agent The agent to use to poll read_state.\n * @param canisterId The effective canister ID.\n * @param requestId The Request ID to poll status for.\n * @param strategy A polling strategy.\n * @param request Request for the readState call.\n */\nexport async function pollForResponse(\n agent: Agent,\n canisterId: Principal,\n requestId: RequestId,\n strategy: PollStrategy,\n // eslint-disable-next-line\n request?: any,\n blsVerify?: CreateCertificateOptions['blsVerify'],\n): Promise {\n const path = [new TextEncoder().encode('request_status'), requestId];\n const currentRequest = request ?? (await agent.createReadStateRequest?.({ paths: [path] }));\n const state = await agent.readState(canisterId, { paths: [path] }, undefined, currentRequest);\n if (agent.rootKey == null) throw new Error('Agent root key not initialized before polling');\n const cert = await Certificate.create({\n certificate: state.certificate,\n rootKey: agent.rootKey,\n canisterId: canisterId,\n blsVerify,\n });\n const maybeBuf = cert.lookup([...path, new TextEncoder().encode('status')]);\n let status;\n if (typeof maybeBuf === 'undefined') {\n // Missing requestId means we need to wait\n status = RequestStatusResponseStatus.Unknown;\n } else {\n status = new TextDecoder().decode(maybeBuf);\n }\n\n switch (status) {\n case RequestStatusResponseStatus.Replied: {\n return cert.lookup([...path, 'reply'])!;\n }\n\n case RequestStatusResponseStatus.Received:\n case RequestStatusResponseStatus.Unknown:\n case RequestStatusResponseStatus.Processing:\n // Execute the polling strategy, then retry.\n await strategy(canisterId, requestId, status);\n return pollForResponse(agent, canisterId, requestId, strategy, currentRequest);\n\n case RequestStatusResponseStatus.Rejected: {\n const rejectCode = new Uint8Array(cert.lookup([...path, 'reject_code'])!)[0];\n const rejectMessage = new TextDecoder().decode(cert.lookup([...path, 'reject_message'])!);\n throw new Error(\n `Call was rejected:\\n` +\n ` Request ID: ${toHex(requestId)}\\n` +\n ` Reject code: ${rejectCode}\\n` +\n ` Reject text: ${rejectMessage}\\n`,\n );\n }\n\n case RequestStatusResponseStatus.Done:\n // This is _technically_ not an error, but we still didn't see the `Replied` status so\n // we don't know the result and cannot decode it.\n throw new Error(\n `Call was marked as done but we never saw the reply:\\n` +\n ` Request ID: ${toHex(requestId)}\\n`,\n );\n }\n throw new Error('unreachable');\n}\n","/**\n * This file is generated from the candid for asset management.\n */\n/* tslint:disable */\n// @ts-ignore\nexport default ({ IDL }) => {\n const canister_id = IDL.Principal;\n const definite_canister_settings = IDL.Record({\n controllers: IDL.Vec(IDL.Principal),\n freezing_threshold: IDL.Nat,\n memory_allocation: IDL.Nat,\n compute_allocation: IDL.Nat,\n });\n const canister_settings = IDL.Record({\n controllers: IDL.Opt(IDL.Vec(IDL.Principal)),\n freezing_threshold: IDL.Opt(IDL.Nat),\n memory_allocation: IDL.Opt(IDL.Nat),\n compute_allocation: IDL.Opt(IDL.Nat),\n });\n const wasm_module = IDL.Vec(IDL.Nat8);\n return IDL.Service({\n canister_status: IDL.Func(\n [IDL.Record({ canister_id: canister_id })],\n [\n IDL.Record({\n status: IDL.Variant({\n stopped: IDL.Null,\n stopping: IDL.Null,\n running: IDL.Null,\n }),\n memory_size: IDL.Nat,\n cycles: IDL.Nat,\n settings: definite_canister_settings,\n module_hash: IDL.Opt(IDL.Vec(IDL.Nat8)),\n }),\n ],\n [],\n ),\n create_canister: IDL.Func(\n [IDL.Record({ settings: IDL.Opt(canister_settings) })],\n [IDL.Record({ canister_id: canister_id })],\n [],\n ),\n delete_canister: IDL.Func([IDL.Record({ canister_id: canister_id })], [], []),\n deposit_cycles: IDL.Func([IDL.Record({ canister_id: canister_id })], [], []),\n install_code: IDL.Func(\n [\n IDL.Record({\n arg: IDL.Vec(IDL.Nat8),\n wasm_module: wasm_module,\n mode: IDL.Variant({\n reinstall: IDL.Null,\n upgrade: IDL.Null,\n install: IDL.Null,\n }),\n canister_id: canister_id,\n }),\n ],\n [],\n [],\n ),\n provisional_create_canister_with_cycles: IDL.Func(\n [\n IDL.Record({\n settings: IDL.Opt(canister_settings),\n amount: IDL.Opt(IDL.Nat),\n }),\n ],\n [IDL.Record({ canister_id: canister_id })],\n [],\n ),\n provisional_top_up_canister: IDL.Func(\n [IDL.Record({ canister_id: canister_id, amount: IDL.Nat })],\n [],\n [],\n ),\n raw_rand: IDL.Func([], [IDL.Vec(IDL.Nat8)], []),\n start_canister: IDL.Func([IDL.Record({ canister_id: canister_id })], [], []),\n stop_canister: IDL.Func([IDL.Record({ canister_id: canister_id })], [], []),\n uninstall_code: IDL.Func([IDL.Record({ canister_id: canister_id })], [], []),\n update_settings: IDL.Func(\n [\n IDL.Record({\n canister_id: IDL.Principal,\n settings: canister_settings,\n }),\n ],\n [],\n [],\n ),\n });\n};\n","import { Buffer } from 'buffer/';\nimport {\n Agent,\n getDefaultAgent,\n HttpDetailsResponse,\n QueryResponseRejected,\n QueryResponseStatus,\n ReplicaRejectCode,\n SubmitResponse,\n} from './agent';\nimport { AgentError } from './errors';\nimport { IDL } from '@dfinity/candid';\nimport { pollForResponse, PollStrategyFactory, strategy } from './polling';\nimport { Principal } from '@dfinity/principal';\nimport { RequestId } from './request_id';\nimport { toHex } from './utils/buffer';\nimport { CreateCertificateOptions } from './certificate';\nimport managementCanisterIdl from './canisters/management_idl';\nimport _SERVICE from './canisters/management_service';\n\nexport class ActorCallError extends AgentError {\n constructor(\n public readonly canisterId: Principal,\n public readonly methodName: string,\n public readonly type: 'query' | 'update',\n public readonly props: Record,\n ) {\n super(\n [\n `Call failed:`,\n ` Canister: ${canisterId.toText()}`,\n ` Method: ${methodName} (${type})`,\n ...Object.getOwnPropertyNames(props).map(n => ` \"${n}\": ${JSON.stringify(props[n])}`),\n ].join('\\n'),\n );\n }\n}\n\nexport class QueryCallRejectedError extends ActorCallError {\n constructor(\n canisterId: Principal,\n methodName: string,\n public readonly result: QueryResponseRejected,\n ) {\n super(canisterId, methodName, 'query', {\n Status: result.status,\n Code: ReplicaRejectCode[result.reject_code] ?? `Unknown Code \"${result.reject_code}\"`,\n Message: result.reject_message,\n });\n }\n}\n\nexport class UpdateCallRejectedError extends ActorCallError {\n constructor(\n canisterId: Principal,\n methodName: string,\n public readonly requestId: RequestId,\n public readonly response: SubmitResponse['response'],\n ) {\n super(canisterId, methodName, 'update', {\n 'Request ID': toHex(requestId),\n ...(response.body\n ? {\n ...(response.body.error_code\n ? {\n 'Error code': response.body.error_code,\n }\n : {}),\n 'Reject code': String(response.body.reject_code),\n 'Reject message': response.body.reject_message,\n }\n : {\n 'HTTP status code': response.status.toString(),\n 'HTTP status text': response.statusText,\n }),\n });\n }\n}\n\n/**\n * Configuration to make calls to the Replica.\n */\nexport interface CallConfig {\n /**\n * An agent to use in this call, otherwise the actor or call will try to discover the\n * agent to use.\n */\n agent?: Agent;\n\n /**\n * A polling strategy factory that dictates how much and often we should poll the\n * read_state endpoint to get the result of an update call.\n */\n pollingStrategyFactory?: PollStrategyFactory;\n\n /**\n * The canister ID of this Actor.\n */\n canisterId?: string | Principal;\n\n /**\n * The effective canister ID. This should almost always be ignored.\n */\n effectiveCanisterId?: Principal;\n}\n\n/**\n * Configuration that can be passed to customize the Actor behaviour.\n */\nexport interface ActorConfig extends CallConfig {\n /**\n * The Canister ID of this Actor. This is required for an Actor.\n */\n canisterId: string | Principal;\n\n /**\n * An override function for update calls' CallConfig. This will be called on every calls.\n */\n callTransform?(\n methodName: string,\n args: unknown[],\n callConfig: CallConfig,\n ): Partial | void;\n\n /**\n * An override function for query calls' CallConfig. This will be called on every query.\n */\n queryTransform?(\n methodName: string,\n args: unknown[],\n callConfig: CallConfig,\n ): Partial | void;\n\n /**\n * Polyfill for BLS Certificate verification in case wasm is not supported\n */\n blsVerify?: CreateCertificateOptions['blsVerify'];\n}\n\n// TODO: move this to proper typing when Candid support TypeScript.\n/**\n * A subclass of an actor. Actor class itself is meant to be a based class.\n */\nexport type ActorSubclass> = Actor & T;\n\n/**\n * An actor method type, defined for each methods of the actor service.\n */\nexport interface ActorMethod {\n (...args: Args): Promise;\n withOptions(options: CallConfig): (...args: Args) => Promise;\n}\n\n/**\n * An actor method type, defined for each methods of the actor service.\n */\nexport interface ActorMethodWithHttpDetails\n extends ActorMethod {\n (...args: Args): Promise<{ httpDetails: HttpDetailsResponse; result: Ret }>;\n}\n\nexport type FunctionWithArgsAndReturn = (\n ...args: Args\n) => Ret;\n\n// Update all entries of T with the extra information from ActorMethodWithInfo\nexport type ActorMethodMappedWithHttpDetails = {\n [K in keyof T]: T[K] extends FunctionWithArgsAndReturn\n ? ActorMethodWithHttpDetails\n : never;\n};\n\n/**\n * The mode used when installing a canister.\n */\nexport enum CanisterInstallMode {\n Install = 'install',\n Reinstall = 'reinstall',\n Upgrade = 'upgrade',\n}\n\n/**\n * Internal metadata for actors. It's an enhanced version of ActorConfig with\n * some fields marked as required (as they are defaulted) and canisterId as\n * a Principal type.\n */\ninterface ActorMetadata {\n service: IDL.ServiceClass;\n agent?: Agent;\n config: ActorConfig;\n}\n\nconst metadataSymbol = Symbol.for('ic-agent-metadata');\n\nexport interface CreateActorClassOpts {\n httpDetails?: boolean;\n}\n\n/**\n * An actor base class. An actor is an object containing only functions that will\n * return a promise. These functions are derived from the IDL definition.\n */\nexport class Actor {\n /**\n * Get the Agent class this Actor would call, or undefined if the Actor would use\n * the default agent (global.ic.agent).\n * @param actor The actor to get the agent of.\n */\n public static agentOf(actor: Actor): Agent | undefined {\n return actor[metadataSymbol].config.agent;\n }\n\n /**\n * Get the interface of an actor, in the form of an instance of a Service.\n * @param actor The actor to get the interface of.\n */\n public static interfaceOf(actor: Actor): IDL.ServiceClass {\n return actor[metadataSymbol].service;\n }\n\n public static canisterIdOf(actor: Actor): Principal {\n return Principal.from(actor[metadataSymbol].config.canisterId);\n }\n\n public static async install(\n fields: {\n module: ArrayBuffer;\n mode?: CanisterInstallMode;\n arg?: ArrayBuffer;\n },\n config: ActorConfig,\n ): Promise {\n const mode = fields.mode === undefined ? CanisterInstallMode.Install : fields.mode;\n // Need to transform the arg into a number array.\n const arg = fields.arg ? [...new Uint8Array(fields.arg)] : [];\n // Same for module.\n const wasmModule = [...new Uint8Array(fields.module)];\n const canisterId =\n typeof config.canisterId === 'string'\n ? Principal.fromText(config.canisterId)\n : config.canisterId;\n\n await getManagementCanister(config).install_code({\n mode: { [mode]: null } as any,\n arg,\n wasm_module: wasmModule,\n canister_id: canisterId,\n });\n }\n\n public static async createCanister(config?: CallConfig): Promise {\n const { canister_id: canisterId } = await getManagementCanister(\n config || {},\n ).provisional_create_canister_with_cycles({ amount: [], settings: [] });\n\n return canisterId;\n }\n\n public static async createAndInstallCanister(\n interfaceFactory: IDL.InterfaceFactory,\n fields: {\n module: ArrayBuffer;\n arg?: ArrayBuffer;\n },\n config?: CallConfig,\n ): Promise {\n const canisterId = await this.createCanister(config);\n await this.install(\n {\n ...fields,\n },\n { ...config, canisterId },\n );\n\n return this.createActor(interfaceFactory, { ...config, canisterId });\n }\n\n public static createActorClass(\n interfaceFactory: IDL.InterfaceFactory,\n options?: CreateActorClassOpts,\n ): ActorConstructor {\n const service = interfaceFactory({ IDL });\n\n class CanisterActor extends Actor {\n [x: string]: ActorMethod;\n\n constructor(config: ActorConfig) {\n const canisterId =\n typeof config.canisterId === 'string'\n ? Principal.fromText(config.canisterId)\n : config.canisterId;\n\n super({\n config: {\n ...DEFAULT_ACTOR_CONFIG,\n ...config,\n canisterId,\n },\n service,\n });\n\n for (const [methodName, func] of service._fields) {\n if (options?.httpDetails) {\n func.annotations.push(ACTOR_METHOD_WITH_HTTP_DETAILS);\n }\n\n this[methodName] = _createActorMethod(this, methodName, func, config.blsVerify);\n }\n }\n }\n\n return CanisterActor;\n }\n\n public static createActor>(\n interfaceFactory: IDL.InterfaceFactory,\n configuration: ActorConfig,\n ): ActorSubclass {\n return new (this.createActorClass(interfaceFactory))(\n configuration,\n ) as unknown as ActorSubclass;\n }\n\n public static createActorWithHttpDetails>(\n interfaceFactory: IDL.InterfaceFactory,\n configuration: ActorConfig,\n ): ActorSubclass> {\n return new (this.createActorClass(interfaceFactory, { httpDetails: true }))(\n configuration,\n ) as unknown as ActorSubclass>;\n }\n\n private [metadataSymbol]: ActorMetadata;\n\n protected constructor(metadata: ActorMetadata) {\n this[metadataSymbol] = Object.freeze(metadata);\n }\n}\n\n// IDL functions can have multiple return values, so decoding always\n// produces an array. Ensure that functions with single or zero return\n// values behave as expected.\nfunction decodeReturnValue(types: IDL.Type[], msg: ArrayBuffer) {\n const returnValues = IDL.decode(types, Buffer.from(msg));\n switch (returnValues.length) {\n case 0:\n return undefined;\n case 1:\n return returnValues[0];\n default:\n return returnValues;\n }\n}\n\nconst DEFAULT_ACTOR_CONFIG = {\n pollingStrategyFactory: strategy.defaultStrategy,\n};\n\nexport type ActorConstructor = new (config: ActorConfig) => ActorSubclass;\n\nexport const ACTOR_METHOD_WITH_HTTP_DETAILS = 'http-details';\n\nfunction _createActorMethod(\n actor: Actor,\n methodName: string,\n func: IDL.FuncClass,\n blsVerify?: CreateCertificateOptions['blsVerify'],\n): ActorMethod {\n let caller: (options: CallConfig, ...args: unknown[]) => Promise;\n if (func.annotations.includes('query') || func.annotations.includes('composite_query')) {\n caller = async (options, ...args) => {\n // First, if there's a config transformation, call it.\n options = {\n ...options,\n ...actor[metadataSymbol].config.queryTransform?.(methodName, args, {\n ...actor[metadataSymbol].config,\n ...options,\n }),\n };\n\n const agent = options.agent || actor[metadataSymbol].config.agent || getDefaultAgent();\n const cid = Principal.from(options.canisterId || actor[metadataSymbol].config.canisterId);\n const arg = IDL.encode(func.argTypes, args);\n\n const result = await agent.query(cid, { methodName, arg });\n\n switch (result.status) {\n case QueryResponseStatus.Rejected:\n throw new QueryCallRejectedError(cid, methodName, result);\n\n case QueryResponseStatus.Replied:\n return func.annotations.includes(ACTOR_METHOD_WITH_HTTP_DETAILS)\n ? {\n httpDetails: result.httpDetails,\n result: decodeReturnValue(func.retTypes, result.reply.arg),\n }\n : decodeReturnValue(func.retTypes, result.reply.arg);\n }\n };\n } else {\n caller = async (options, ...args) => {\n // First, if there's a config transformation, call it.\n options = {\n ...options,\n ...actor[metadataSymbol].config.callTransform?.(methodName, args, {\n ...actor[metadataSymbol].config,\n ...options,\n }),\n };\n\n const agent = options.agent || actor[metadataSymbol].config.agent || getDefaultAgent();\n const { canisterId, effectiveCanisterId, pollingStrategyFactory } = {\n ...DEFAULT_ACTOR_CONFIG,\n ...actor[metadataSymbol].config,\n ...options,\n };\n const cid = Principal.from(canisterId);\n const ecid = effectiveCanisterId !== undefined ? Principal.from(effectiveCanisterId) : cid;\n const arg = IDL.encode(func.argTypes, args);\n const { requestId, response } = await agent.call(cid, {\n methodName,\n arg,\n effectiveCanisterId: ecid,\n });\n\n if (!response.ok || response.body /* IC-1462 */) {\n throw new UpdateCallRejectedError(cid, methodName, requestId, response);\n }\n\n const pollStrategy = pollingStrategyFactory();\n const responseBytes = await pollForResponse(agent, ecid, requestId, pollStrategy, blsVerify);\n const shouldIncludeHttpDetails = func.annotations.includes(ACTOR_METHOD_WITH_HTTP_DETAILS);\n\n if (responseBytes !== undefined) {\n return shouldIncludeHttpDetails\n ? {\n httpDetails: response,\n result: decodeReturnValue(func.retTypes, responseBytes),\n }\n : decodeReturnValue(func.retTypes, responseBytes);\n } else if (func.retTypes.length === 0) {\n return shouldIncludeHttpDetails\n ? {\n httpDetails: response,\n result: undefined,\n }\n : undefined;\n } else {\n throw new Error(`Call was returned undefined, but type [${func.retTypes.join(',')}].`);\n }\n };\n }\n\n const handler = (...args: unknown[]) => caller({}, ...args);\n handler.withOptions =\n (options: CallConfig) =>\n (...args: unknown[]) =>\n caller(options, ...args);\n return handler as ActorMethod;\n}\n\nexport type ManagementCanisterRecord = _SERVICE;\n\n/**\n * Create a management canister actor\n * @param config\n */\nexport function getManagementCanister(config: CallConfig): ActorSubclass {\n function transform(_methodName: string, args: unknown[], _callConfig: CallConfig) {\n const first = args[0] as any;\n let effectiveCanisterId = Principal.fromHex('');\n if (first && typeof first === 'object' && first.canister_id) {\n effectiveCanisterId = Principal.from(first.canister_id as unknown);\n }\n return { effectiveCanisterId };\n }\n\n return Actor.createActor(managementCanisterIdl, {\n ...config,\n canisterId: Principal.fromHex(''),\n ...{\n callTransform: transform,\n queryTransform: transform,\n },\n });\n}\n","import { Principal } from '@dfinity/principal';\nimport { RequestStatusResponseStatus } from '../agent';\nimport { toHex } from '../utils/buffer';\nimport { PollStrategy } from './index';\nimport { RequestId } from '../request_id';\n\nexport type Predicate = (\n canisterId: Principal,\n requestId: RequestId,\n status: RequestStatusResponseStatus,\n) => Promise;\n\nconst FIVE_MINUTES_IN_MSEC = 5 * 60 * 1000;\n\n/**\n * A best practices polling strategy: wait 2 seconds before the first poll, then 1 second\n * with an exponential backoff factor of 1.2. Timeout after 5 minutes.\n */\nexport function defaultStrategy(): PollStrategy {\n return chain(conditionalDelay(once(), 1000), backoff(1000, 1.2), timeout(FIVE_MINUTES_IN_MSEC));\n}\n\n/**\n * Predicate that returns true once.\n */\nexport function once(): Predicate {\n let first = true;\n return async () => {\n if (first) {\n first = false;\n return true;\n }\n return false;\n };\n}\n\n/**\n * Delay the polling once.\n * @param condition A predicate that indicates when to delay.\n * @param timeInMsec The amount of time to delay.\n */\nexport function conditionalDelay(condition: Predicate, timeInMsec: number): PollStrategy {\n return async (\n canisterId: Principal,\n requestId: RequestId,\n status: RequestStatusResponseStatus,\n ) => {\n if (await condition(canisterId, requestId, status)) {\n return new Promise(resolve => setTimeout(resolve, timeInMsec));\n }\n };\n}\n\n/**\n * Error out after a maximum number of polling has been done.\n * @param count The maximum attempts to poll.\n */\nexport function maxAttempts(count: number): PollStrategy {\n let attempts = count;\n return async (\n canisterId: Principal,\n requestId: RequestId,\n status: RequestStatusResponseStatus,\n ) => {\n if (--attempts <= 0) {\n throw new Error(\n `Failed to retrieve a reply for request after ${count} attempts:\\n` +\n ` Request ID: ${toHex(requestId)}\\n` +\n ` Request status: ${status}\\n`,\n );\n }\n };\n}\n\n/**\n * Throttle polling.\n * @param throttleInMsec Amount in millisecond to wait between each polling.\n */\nexport function throttle(throttleInMsec: number): PollStrategy {\n return () => new Promise(resolve => setTimeout(resolve, throttleInMsec));\n}\n\n/**\n * Reject a call after a certain amount of time.\n * @param timeInMsec Time in milliseconds before the polling should be rejected.\n */\nexport function timeout(timeInMsec: number): PollStrategy {\n const end = Date.now() + timeInMsec;\n return async (\n canisterId: Principal,\n requestId: RequestId,\n status: RequestStatusResponseStatus,\n ) => {\n if (Date.now() > end) {\n throw new Error(\n `Request timed out after ${timeInMsec} msec:\\n` +\n ` Request ID: ${toHex(requestId)}\\n` +\n ` Request status: ${status}\\n`,\n );\n }\n };\n}\n\n/**\n * A strategy that throttle, but using an exponential backoff strategy.\n * @param startingThrottleInMsec The throttle in milliseconds to start with.\n * @param backoffFactor The factor to multiple the throttle time between every poll. For\n * example if using 2, the throttle will double between every run.\n */\nexport function backoff(startingThrottleInMsec: number, backoffFactor: number): PollStrategy {\n let currentThrottling = startingThrottleInMsec;\n\n return () =>\n new Promise(resolve =>\n setTimeout(() => {\n currentThrottling *= backoffFactor;\n resolve();\n }, currentThrottling),\n );\n}\n\n/**\n * Chain multiple polling strategy. This _chains_ the strategies, so if you pass in,\n * say, two throttling strategy of 1 second, it will result in a throttle of 2 seconds.\n * @param strategies A strategy list to chain.\n */\nexport function chain(...strategies: PollStrategy[]): PollStrategy {\n return async (\n canisterId: Principal,\n requestId: RequestId,\n status: RequestStatusResponseStatus,\n ) => {\n for (const a of strategies) {\n await a(canisterId, requestId, status);\n }\n };\n}\n","/**\n * Return an array buffer from its hexadecimal representation.\n * @param hexString The hexadecimal string.\n */\nexport function fromHexString(hexString: string): ArrayBuffer {\n return new Uint8Array((hexString.match(/.{1,2}/g) ?? []).map(byte => parseInt(byte, 16))).buffer;\n}\n\n/**\n * Returns an hexadecimal representation of an array buffer.\n * @param bytes The array buffer.\n */\nexport function toHexString(bytes: ArrayBuffer): string {\n return new Uint8Array(bytes).reduce((str, byte) => str + byte.toString(16).padStart(2, '0'), '');\n}\n","export const bufEquals = (b1: ArrayBuffer, b2: ArrayBuffer): boolean => {\n if (b1.byteLength !== b2.byteLength) return false;\n const u1 = new Uint8Array(b1);\n const u2 = new Uint8Array(b2);\n for (let i = 0; i < u1.length; i++) {\n if (u1[i] !== u2[i]) return false;\n }\n return true;\n};\n\nexport const encodeLenBytes = (len: number): number => {\n if (len <= 0x7f) {\n return 1;\n } else if (len <= 0xff) {\n return 2;\n } else if (len <= 0xffff) {\n return 3;\n } else if (len <= 0xffffff) {\n return 4;\n } else {\n throw new Error('Length too long (> 4 bytes)');\n }\n};\n\nexport const encodeLen = (buf: Uint8Array, offset: number, len: number): number => {\n if (len <= 0x7f) {\n buf[offset] = len;\n return 1;\n } else if (len <= 0xff) {\n buf[offset] = 0x81;\n buf[offset + 1] = len;\n return 2;\n } else if (len <= 0xffff) {\n buf[offset] = 0x82;\n buf[offset + 1] = len >> 8;\n buf[offset + 2] = len;\n return 3;\n } else if (len <= 0xffffff) {\n buf[offset] = 0x83;\n buf[offset + 1] = len >> 16;\n buf[offset + 2] = len >> 8;\n buf[offset + 3] = len;\n return 4;\n } else {\n throw new Error('Length too long (> 4 bytes)');\n }\n};\n\nexport const decodeLenBytes = (buf: Uint8Array, offset: number): number => {\n if (buf[offset] < 0x80) return 1;\n if (buf[offset] === 0x80) throw new Error('Invalid length 0');\n if (buf[offset] === 0x81) return 2;\n if (buf[offset] === 0x82) return 3;\n if (buf[offset] === 0x83) return 4;\n throw new Error('Length too long (> 4 bytes)');\n};\n\nexport const decodeLen = (buf: Uint8Array, offset: number): number => {\n const lenBytes = decodeLenBytes(buf, offset);\n if (lenBytes === 1) return buf[offset];\n else if (lenBytes === 2) return buf[offset + 1];\n else if (lenBytes === 3) return (buf[offset + 1] << 8) + buf[offset + 2];\n else if (lenBytes === 4)\n return (buf[offset + 1] << 16) + (buf[offset + 2] << 8) + buf[offset + 3];\n throw new Error('Length too long (> 4 bytes)');\n};\n\n/**\n * A DER encoded `SEQUENCE(OID)` for DER-encoded-COSE\n */\nexport const DER_COSE_OID = Uint8Array.from([\n ...[0x30, 0x0c], // SEQUENCE\n ...[0x06, 0x0a], // OID with 10 bytes\n ...[0x2b, 0x06, 0x01, 0x04, 0x01, 0x83, 0xb8, 0x43, 0x01, 0x01], // DER encoded COSE\n]);\n\n/**\n * A DER encoded `SEQUENCE(OID)` for the Ed25519 algorithm\n */\nexport const ED25519_OID = Uint8Array.from([\n ...[0x30, 0x05], // SEQUENCE\n ...[0x06, 0x03], // OID with 3 bytes\n ...[0x2b, 0x65, 0x70], // id-Ed25519 OID\n]);\n\n/**\n * A DER encoded `SEQUENCE(OID)` for secp256k1 with the ECDSA algorithm\n */\nexport const SECP256K1_OID = Uint8Array.from([\n ...[0x30, 0x10], // SEQUENCE\n ...[0x06, 0x07], // OID with 7 bytes\n ...[0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01], // OID ECDSA\n ...[0x06, 0x05], // OID with 5 bytes\n ...[0x2b, 0x81, 0x04, 0x00, 0x0a], // OID secp256k1\n]);\n\n/**\n * Wraps the given `payload` in a DER encoding tagged with the given encoded `oid` like so:\n * `SEQUENCE(oid, BITSTRING(payload))`\n *\n * @param payload The payload to encode as the bit string\n * @param oid The DER encoded (and SEQUENCE wrapped!) OID to tag the payload with\n */\nexport function wrapDER(payload: ArrayBuffer, oid: Uint8Array): Uint8Array {\n // The Bit String header needs to include the unused bit count byte in its length\n const bitStringHeaderLength = 2 + encodeLenBytes(payload.byteLength + 1);\n const len = oid.byteLength + bitStringHeaderLength + payload.byteLength;\n let offset = 0;\n const buf = new Uint8Array(1 + encodeLenBytes(len) + len);\n // Sequence\n buf[offset++] = 0x30;\n // Sequence Length\n offset += encodeLen(buf, offset, len);\n\n // OID\n buf.set(oid, offset);\n offset += oid.byteLength;\n\n // Bit String Header\n buf[offset++] = 0x03;\n offset += encodeLen(buf, offset, payload.byteLength + 1);\n // 0 padding\n buf[offset++] = 0x00;\n buf.set(new Uint8Array(payload), offset);\n\n return buf;\n}\n\n/**\n * Extracts a payload from the given `derEncoded` data, and checks that it was tagged with the given `oid`.\n *\n * `derEncoded = SEQUENCE(oid, BITSTRING(payload))`\n *\n * @param derEncoded The DER encoded and tagged data\n * @param oid The DER encoded (and SEQUENCE wrapped!) expected OID\n * @returns The unwrapped payload\n */\nexport const unwrapDER = (derEncoded: ArrayBuffer, oid: Uint8Array): Uint8Array => {\n let offset = 0;\n const expect = (n: number, msg: string) => {\n if (buf[offset++] !== n) {\n throw new Error('Expected: ' + msg);\n }\n };\n\n const buf = new Uint8Array(derEncoded);\n expect(0x30, 'sequence');\n offset += decodeLenBytes(buf, offset);\n\n if (!bufEquals(buf.slice(offset, offset + oid.byteLength), oid)) {\n throw new Error('Not the expected OID.');\n }\n offset += oid.byteLength;\n\n expect(0x03, 'bit string');\n const payloadLen = decodeLen(buf, offset) - 1; // Subtracting 1 to account for the 0 padding\n offset += decodeLenBytes(buf, offset);\n expect(0x00, '0 padding');\n const result = buf.slice(offset);\n if (payloadLen !== result.length) {\n throw new Error(\n `DER payload mismatch: Expected length ${payloadLen} actual length ${result.length}`,\n );\n }\n return result;\n};\n","import { DerEncodedPublicKey, KeyPair, PublicKey, Signature, SignIdentity } from '@dfinity/agent';\nimport * as tweetnacl from 'tweetnacl';\nimport { fromHexString, toHexString } from '../buffer';\nimport { ED25519_OID, unwrapDER, wrapDER } from './der';\n\nexport class Ed25519PublicKey implements PublicKey {\n public static from(key: PublicKey): Ed25519PublicKey {\n return this.fromDer(key.toDer());\n }\n\n public static fromRaw(rawKey: ArrayBuffer): Ed25519PublicKey {\n return new Ed25519PublicKey(rawKey);\n }\n\n public static fromDer(derKey: DerEncodedPublicKey): Ed25519PublicKey {\n return new Ed25519PublicKey(this.derDecode(derKey));\n }\n\n // The length of Ed25519 public keys is always 32 bytes.\n private static RAW_KEY_LENGTH = 32;\n\n private static derEncode(publicKey: ArrayBuffer): DerEncodedPublicKey {\n return wrapDER(publicKey, ED25519_OID).buffer as DerEncodedPublicKey;\n }\n\n private static derDecode(key: DerEncodedPublicKey): ArrayBuffer {\n const unwrapped = unwrapDER(key, ED25519_OID);\n if (unwrapped.length !== this.RAW_KEY_LENGTH) {\n throw new Error('An Ed25519 public key must be exactly 32bytes long');\n }\n return unwrapped;\n }\n\n private readonly rawKey: ArrayBuffer;\n private readonly derKey: DerEncodedPublicKey;\n\n // `fromRaw` and `fromDer` should be used for instantiation, not this constructor.\n private constructor(key: ArrayBuffer) {\n this.rawKey = key;\n this.derKey = Ed25519PublicKey.derEncode(key);\n }\n\n public toDer(): DerEncodedPublicKey {\n return this.derKey;\n }\n\n public toRaw(): ArrayBuffer {\n return this.rawKey;\n }\n}\n\nexport class Ed25519KeyIdentity extends SignIdentity {\n public static generate(seed?: Uint8Array): Ed25519KeyIdentity {\n if (seed && seed.length !== 32) {\n throw new Error('Ed25519 Seed needs to be 32 bytes long.');\n }\n\n const { publicKey, secretKey } =\n seed === undefined ? tweetnacl.sign.keyPair() : tweetnacl.sign.keyPair.fromSeed(seed);\n return new this(Ed25519PublicKey.fromRaw(publicKey), secretKey);\n }\n\n public static fromParsedJson(obj: JsonnableEd25519KeyIdentity): Ed25519KeyIdentity {\n const [publicKeyDer, privateKeyRaw] = obj;\n return new Ed25519KeyIdentity(\n Ed25519PublicKey.fromDer(fromHexString(publicKeyDer) as DerEncodedPublicKey),\n fromHexString(privateKeyRaw),\n );\n }\n\n public static fromJSON(json: string): Ed25519KeyIdentity {\n const parsed = JSON.parse(json);\n if (Array.isArray(parsed)) {\n if (typeof parsed[0] === 'string' && typeof parsed[1] === 'string') {\n return this.fromParsedJson([parsed[0], parsed[1]]);\n } else {\n throw new Error('Deserialization error: JSON must have at least 2 items.');\n }\n }\n throw new Error(`Deserialization error: Invalid JSON type for string: ${JSON.stringify(json)}`);\n }\n\n public static fromKeyPair(publicKey: ArrayBuffer, privateKey: ArrayBuffer): Ed25519KeyIdentity {\n return new Ed25519KeyIdentity(Ed25519PublicKey.fromRaw(publicKey), privateKey);\n }\n\n public static fromSecretKey(secretKey: ArrayBuffer): Ed25519KeyIdentity {\n const keyPair = tweetnacl.sign.keyPair.fromSecretKey(new Uint8Array(secretKey));\n return Ed25519KeyIdentity.fromKeyPair(keyPair.publicKey, keyPair.secretKey);\n }\n\n protected _publicKey: Ed25519PublicKey;\n\n // `fromRaw` and `fromDer` should be used for instantiation, not this constructor.\n protected constructor(publicKey: PublicKey, protected _privateKey: ArrayBuffer) {\n super();\n this._publicKey = Ed25519PublicKey.from(publicKey);\n }\n\n /**\n * Serialize this key to JSON.\n */\n public toJSON(): JsonnableEd25519KeyIdentity {\n return [toHexString(this._publicKey.toDer()), toHexString(this._privateKey)];\n }\n\n /**\n * Return a copy of the key pair.\n */\n public getKeyPair(): KeyPair {\n return {\n secretKey: this._privateKey,\n publicKey: this._publicKey,\n };\n }\n\n /**\n * Return the public key.\n */\n public getPublicKey(): PublicKey {\n return this._publicKey;\n }\n\n /**\n * Signs a blob of data, with this identity's private key.\n * @param challenge - challenge to sign with this identity's secretKey, producing a signature\n */\n public async sign(challenge: ArrayBuffer): Promise {\n const blob = new Uint8Array(challenge);\n const signature = tweetnacl.sign.detached(blob, new Uint8Array(this._privateKey)).buffer;\n return signature as Signature;\n }\n}\n\ntype PublicKeyHex = string;\ntype SecretKeyHex = string;\nexport type JsonnableEd25519KeyIdentity = [PublicKeyHex, SecretKeyHex];\n","import {\n DerEncodedPublicKey,\n HttpAgentRequest,\n PublicKey,\n requestIdOf,\n Signature,\n SignIdentity,\n} from '@dfinity/agent';\nimport { Principal } from '@dfinity/principal';\nimport * as cbor from 'simple-cbor';\nimport { fromHexString, toHexString } from '../buffer';\n\nconst domainSeparator = new TextEncoder().encode('\\x1Aic-request-auth-delegation');\nconst requestDomainSeparator = new TextEncoder().encode('\\x0Aic-request');\n\nfunction _parseBlob(value: unknown): ArrayBuffer {\n if (typeof value !== 'string' || value.length < 64) {\n throw new Error('Invalid public key.');\n }\n\n return fromHexString(value);\n}\n\n/**\n * A single delegation object that is signed by a private key. This is constructed by\n * `DelegationChain.create()`.\n *\n * {@see DelegationChain}\n */\nexport class Delegation {\n constructor(\n public readonly pubkey: ArrayBuffer,\n public readonly expiration: bigint,\n public readonly targets?: Principal[],\n ) {}\n\n public toCBOR(): cbor.CborValue {\n // Expiration field needs to be encoded as a u64 specifically.\n return cbor.value.map({\n pubkey: cbor.value.bytes(this.pubkey),\n expiration: cbor.value.u64(this.expiration.toString(16), 16),\n ...(this.targets && {\n targets: cbor.value.array(this.targets.map(t => cbor.value.bytes(t.toUint8Array()))),\n }),\n });\n }\n\n public toJSON(): JsonnableDelegation {\n // every string should be hex and once-de-hexed,\n // discoverable what it is (e.g. de-hex to get JSON with a 'type' property, or de-hex to DER\n // with an OID). After de-hex, if it's not obvious what it is, it's an ArrayBuffer.\n return {\n expiration: this.expiration.toString(16),\n pubkey: toHexString(this.pubkey),\n ...(this.targets && { targets: this.targets.map(p => p.toHex()) }),\n };\n }\n}\n\n/**\n * Type of ReturnType.\n * The goal here is to stringify all non-JSON-compatible types to some bytes representation we can\n * stringify as hex.\n * (Hex shouldn't be ambiguous ever, because you can encode as DER with semantic OIDs).\n */\ninterface JsonnableDelegation {\n // A BigInt of Nanoseconds since epoch as hex\n expiration: string;\n // Hexadecimal representation of the DER public key.\n pubkey: string;\n // Array of strings, where each string is hex of principal blob (*NOT* textual representation).\n targets?: string[];\n}\n\n/**\n * A signed delegation, which lends its identity to the public key in the delegation\n * object. This is constructed by `DelegationChain.create()`.\n *\n * {@see DelegationChain}\n */\nexport interface SignedDelegation {\n delegation: Delegation;\n signature: Signature;\n}\n\n/**\n * Sign a single delegation object for a period of time.\n *\n * @param from The identity that lends its delegation.\n * @param to The identity that receives the delegation.\n * @param expiration An expiration date for this delegation.\n * @param targets Limit this delegation to the target principals.\n */\nasync function _createSingleDelegation(\n from: SignIdentity,\n to: PublicKey,\n expiration: Date,\n targets?: Principal[],\n): Promise {\n const delegation: Delegation = new Delegation(\n to.toDer(),\n BigInt(+expiration) * BigInt(1000000), // In nanoseconds.\n targets,\n );\n // The signature is calculated by signing the concatenation of the domain separator\n // and the message.\n // Note: To ensure Safari treats this as a user gesture, ensure to not use async methods\n // besides the actualy webauthn functionality (such as `sign`). Safari will de-register\n // a user gesture if you await an async call thats not fetch, xhr, or setTimeout.\n const challenge = new Uint8Array([\n ...domainSeparator,\n ...new Uint8Array(requestIdOf(delegation)),\n ]);\n const signature = await from.sign(challenge);\n\n return {\n delegation,\n signature,\n };\n}\n\nexport interface JsonnableDelegationChain {\n publicKey: string;\n delegations: Array<{\n signature: string;\n delegation: {\n pubkey: string;\n expiration: string;\n targets?: string[];\n };\n }>;\n}\n\n/**\n * A chain of delegations. This is JSON Serializable.\n * This is the object to serialize and pass to a DelegationIdentity. It does not keep any\n * private keys.\n */\nexport class DelegationChain {\n /**\n * Create a delegation chain between two (or more) keys. By default, the expiration time\n * will be very short (15 minutes).\n *\n * To build a chain of more than 2 identities, this function needs to be called multiple times,\n * passing the previous delegation chain into the options argument. For example:\n *\n * @example\n * const rootKey = createKey();\n * const middleKey = createKey();\n * const bottomeKey = createKey();\n *\n * const rootToMiddle = await DelegationChain.create(\n * root, middle.getPublicKey(), Date.parse('2100-01-01'),\n * );\n * const middleToBottom = await DelegationChain.create(\n * middle, bottom.getPublicKey(), Date.parse('2100-01-01'), { previous: rootToMiddle },\n * );\n *\n * // We can now use a delegation identity that uses the delegation above:\n * const identity = DelegationIdentity.fromDelegation(bottomKey, middleToBottom);\n *\n * @param from The identity that will delegate.\n * @param to The identity that gets delegated. It can now sign messages as if it was the\n * identity above.\n * @param expiration The length the delegation is valid. By default, 15 minutes from calling\n * this function.\n * @param options A set of options for this delegation. expiration and previous\n * @param options.previous - Another DelegationChain that this chain should start with.\n * @param options.targets - targets that scope the delegation (e.g. Canister Principals)\n */\n public static async create(\n from: SignIdentity,\n to: PublicKey,\n expiration: Date = new Date(Date.now() + 15 * 60 * 1000),\n options: {\n previous?: DelegationChain;\n targets?: Principal[];\n } = {},\n ): Promise {\n const delegation = await _createSingleDelegation(from, to, expiration, options.targets);\n return new DelegationChain(\n [...(options.previous?.delegations || []), delegation],\n options.previous?.publicKey || from.getPublicKey().toDer(),\n );\n }\n\n /**\n * Creates a DelegationChain object from a JSON string.\n *\n * @param json The JSON string to parse.\n */\n public static fromJSON(json: string | JsonnableDelegationChain): DelegationChain {\n const { publicKey, delegations } = typeof json === 'string' ? JSON.parse(json) : json;\n if (!Array.isArray(delegations)) {\n throw new Error('Invalid delegations.');\n }\n\n const parsedDelegations: SignedDelegation[] = delegations.map(signedDelegation => {\n const { delegation, signature } = signedDelegation;\n const { pubkey, expiration, targets } = delegation;\n if (targets !== undefined && !Array.isArray(targets)) {\n throw new Error('Invalid targets.');\n }\n\n return {\n delegation: new Delegation(\n _parseBlob(pubkey),\n BigInt(`0x${expiration}`), // expiration in JSON is an hexa string (See toJSON() below).\n targets &&\n targets.map((t: unknown) => {\n if (typeof t !== 'string') {\n throw new Error('Invalid target.');\n }\n return Principal.fromHex(t);\n }),\n ),\n signature: _parseBlob(signature) as Signature,\n };\n });\n\n return new this(parsedDelegations, _parseBlob(publicKey) as DerEncodedPublicKey);\n }\n\n /**\n * Creates a DelegationChain object from a list of delegations and a DER-encoded public key.\n *\n * @param delegations The list of delegations.\n * @param publicKey The DER-encoded public key of the key-pair signing the first delegation.\n */\n public static fromDelegations(\n delegations: SignedDelegation[],\n publicKey: DerEncodedPublicKey,\n ): DelegationChain {\n return new this(delegations, publicKey);\n }\n\n protected constructor(\n public readonly delegations: SignedDelegation[],\n public readonly publicKey: DerEncodedPublicKey,\n ) {}\n\n public toJSON(): JsonnableDelegationChain {\n return {\n delegations: this.delegations.map(signedDelegation => {\n const { delegation, signature } = signedDelegation;\n const { targets } = delegation;\n return {\n delegation: {\n expiration: delegation.expiration.toString(16),\n pubkey: toHexString(delegation.pubkey),\n ...(targets && {\n targets: targets.map(t => t.toHex()),\n }),\n },\n signature: toHexString(signature),\n };\n }),\n publicKey: toHexString(this.publicKey),\n };\n }\n}\n\n/**\n * An Identity that adds delegation to a request. Everywhere in this class, the name\n * innerKey refers to the SignIdentity that is being used to sign the requests, while\n * originalKey is the identity that is being borrowed. More identities can be used\n * in the middle to delegate.\n */\nexport class DelegationIdentity extends SignIdentity {\n /**\n * Create a delegation without having access to delegateKey.\n *\n * @param key The key used to sign the reqyests.\n * @param delegation A delegation object created using `createDelegation`.\n */\n public static fromDelegation(\n key: Pick,\n delegation: DelegationChain,\n ): DelegationIdentity {\n return new this(key, delegation);\n }\n\n protected constructor(\n private _inner: Pick,\n private _delegation: DelegationChain,\n ) {\n super();\n }\n\n public getDelegation(): DelegationChain {\n return this._delegation;\n }\n\n public getPublicKey(): PublicKey {\n return {\n toDer: () => this._delegation.publicKey,\n };\n }\n public sign(blob: ArrayBuffer): Promise {\n return this._inner.sign(blob);\n }\n\n public async transformRequest(request: HttpAgentRequest): Promise {\n const { body, ...fields } = request;\n const requestId = await requestIdOf(body);\n return {\n ...fields,\n body: {\n content: body,\n sender_sig: await this.sign(\n new Uint8Array([...requestDomainSeparator, ...new Uint8Array(requestId)]),\n ),\n sender_delegation: this._delegation.delegations,\n sender_pubkey: this._delegation.publicKey,\n },\n };\n }\n}\n\n/**\n * List of things to check for a delegation chain validity.\n */\nexport interface DelegationValidChecks {\n /**\n * Check that the scope is amongst the scopes that this delegation has access to.\n */\n scope?: Principal | string | Array;\n}\n\n/**\n * Analyze a DelegationChain and validate that it's valid, ie. not expired and apply to the\n * scope.\n * @param chain The chain to validate.\n * @param checks Various checks to validate on the chain.\n */\nexport function isDelegationValid(chain: DelegationChain, checks?: DelegationValidChecks): boolean {\n // Verify that the no delegation is expired. If any are in the chain, returns false.\n for (const { delegation } of chain.delegations) {\n // prettier-ignore\n if (+new Date(Number(delegation.expiration / BigInt(1000000))) <= +Date.now()) {\n return false;\n }\n }\n\n // Check the scopes.\n const scopes: Principal[] = [];\n const maybeScope = checks?.scope;\n if (maybeScope) {\n if (Array.isArray(maybeScope)) {\n scopes.push(...maybeScope.map(s => (typeof s === 'string' ? Principal.fromText(s) : s)));\n } else {\n scopes.push(typeof maybeScope === 'string' ? Principal.fromText(maybeScope) : maybeScope);\n }\n }\n\n for (const s of scopes) {\n const scope = s.toText();\n for (const { delegation } of chain.delegations) {\n if (delegation.targets === undefined) {\n continue;\n }\n\n let none = true;\n for (const target of delegation.targets) {\n if (target.toText() === scope) {\n none = false;\n break;\n }\n }\n if (none) {\n return false;\n }\n }\n }\n\n return true;\n}\n","import { DerEncodedPublicKey, PublicKey, Signature, SignIdentity } from '@dfinity/agent';\nimport borc from 'borc';\nimport * as tweetnacl from 'tweetnacl';\nimport { fromHexString, toHexString } from '../buffer';\nimport { DER_COSE_OID, wrapDER } from './der';\n\nfunction _coseToDerEncodedBlob(cose: ArrayBuffer): DerEncodedPublicKey {\n return wrapDER(cose, DER_COSE_OID).buffer as DerEncodedPublicKey;\n}\n\ntype PublicKeyCredentialWithAttachment = PublicKeyCredential & {\n // Extends `PublicKeyCredential` with an optional field introduced in the WebAuthn level 3 spec:\n // https://w3c.github.io/webauthn/#dom-publickeycredential-authenticatorattachment\n // Already supported by Chrome, Safari and Edge\n // Note: `null` is included here as a possible value because Edge set this value to null in the\n // past.\n authenticatorAttachment: AuthenticatorAttachment | undefined | null;\n};\n\n/**\n * From the documentation;\n * The authData is a byte array described in the spec. Parsing it will involve slicing bytes from\n * the array and converting them into usable objects.\n *\n * See https://webauthn.guide/#registration (subsection \"Example: Parsing the authenticator data\").\n *\n * @param authData The authData field of the attestation response.\n * @returns The COSE key of the authData.\n */\nfunction _authDataToCose(authData: ArrayBuffer): ArrayBuffer {\n const dataView = new DataView(new ArrayBuffer(2));\n const idLenBytes = authData.slice(53, 55);\n [...new Uint8Array(idLenBytes)].forEach((v, i) => dataView.setUint8(i, v));\n const credentialIdLength = dataView.getUint16(0);\n\n // Get the public key object.\n return authData.slice(55 + credentialIdLength);\n}\n\nexport class CosePublicKey implements PublicKey {\n protected _encodedKey: DerEncodedPublicKey;\n\n public constructor(protected _cose: ArrayBuffer) {\n this._encodedKey = _coseToDerEncodedBlob(_cose);\n }\n\n public toDer(): DerEncodedPublicKey {\n return this._encodedKey;\n }\n\n public getCose(): ArrayBuffer {\n return this._cose;\n }\n}\n\n/**\n * Create a challenge from a string or array. The default challenge is always the same\n * because we don't need to verify the authenticity of the key on the server (we don't\n * register our keys with the IC). Any challenge would do, even one per key, randomly\n * generated.\n *\n * @param challenge The challenge to transform into a byte array. By default a hard\n * coded string.\n */\nfunction _createChallengeBuffer(challenge: string | Uint8Array = ''): Uint8Array {\n if (typeof challenge === 'string') {\n return Uint8Array.from(challenge, c => c.charCodeAt(0));\n } else {\n return challenge;\n }\n}\n\n/**\n * Create a credentials to authenticate with a server. This is necessary in order in\n * WebAuthn to get credentials IDs (which give us the public key and allow us to\n * sign), but in the case of the Internet Computer, we don't actually need to register\n * it, so we don't.\n * @param credentialCreationOptions an optional CredentialCreationOptions object\n */\nasync function _createCredential(\n credentialCreationOptions?: CredentialCreationOptions,\n): Promise {\n const creds = (await navigator.credentials.create(\n credentialCreationOptions ?? {\n publicKey: {\n authenticatorSelection: {\n userVerification: 'preferred',\n },\n attestation: 'direct',\n challenge: _createChallengeBuffer(),\n pubKeyCredParams: [{ type: 'public-key', alg: PubKeyCoseAlgo.ECDSA_WITH_SHA256 }],\n rp: {\n name: 'Internet Identity Service',\n },\n user: {\n id: tweetnacl.randomBytes(16),\n name: 'Internet Identity',\n displayName: 'Internet Identity',\n },\n },\n },\n )) as PublicKeyCredentialWithAttachment;\n\n // Validate that it's the correct type at runtime, since WebAuthn does not HAVE to\n // reply with a PublicKeyCredential.\n if (creds.response === undefined || !(creds.rawId instanceof ArrayBuffer)) {\n return null;\n } else {\n return creds;\n }\n}\n\n// See https://www.iana.org/assignments/cose/cose.xhtml#algorithms for a complete\n// list of these algorithms. We only list the ones we support here.\nenum PubKeyCoseAlgo {\n ECDSA_WITH_SHA256 = -7,\n}\n\n/**\n * A SignIdentity that uses `navigator.credentials`. See https://webauthn.guide/ for\n * more information about WebAuthentication.\n */\nexport class WebAuthnIdentity extends SignIdentity {\n /**\n * Create an identity from a JSON serialization.\n * @param json - json to parse\n */\n public static fromJSON(json: string): WebAuthnIdentity {\n const { publicKey, rawId } = JSON.parse(json);\n\n if (typeof publicKey !== 'string' || typeof rawId !== 'string') {\n throw new Error('Invalid JSON string.');\n }\n\n return new this(fromHexString(rawId), fromHexString(publicKey), undefined);\n }\n\n /**\n * Create an identity.\n * @param credentialCreationOptions an optional CredentialCreationOptions Challenge\n */\n public static async create(\n credentialCreationOptions?: CredentialCreationOptions,\n ): Promise {\n const creds = await _createCredential(credentialCreationOptions);\n\n if (!creds || creds.type !== 'public-key') {\n throw new Error('Could not create credentials.');\n }\n\n const response = creds.response as AuthenticatorAttestationResponse;\n if (!(response.attestationObject instanceof ArrayBuffer)) {\n throw new Error('Was expecting an attestation response.');\n }\n\n // Parse the attestationObject as CBOR.\n const attObject = borc.decodeFirst(new Uint8Array(response.attestationObject));\n\n return new this(\n creds.rawId,\n _authDataToCose(attObject.authData),\n creds.authenticatorAttachment ?? undefined,\n );\n }\n\n protected _publicKey: CosePublicKey;\n\n public constructor(\n public readonly rawId: ArrayBuffer,\n cose: ArrayBuffer,\n protected authenticatorAttachment: AuthenticatorAttachment | undefined,\n ) {\n super();\n this._publicKey = new CosePublicKey(cose);\n }\n\n public getPublicKey(): PublicKey {\n return this._publicKey;\n }\n\n /**\n * WebAuthn level 3 spec introduces a new attribute on successful WebAuthn interactions,\n * see https://w3c.github.io/webauthn/#dom-publickeycredential-authenticatorattachment.\n * This attribute is already implemented for Chrome, Safari and Edge.\n *\n * Given the attribute is only available after a successful interaction, the information is\n * provided opportunistically and might also be `undefined`.\n */\n public getAuthenticatorAttachment(): AuthenticatorAttachment | undefined {\n return this.authenticatorAttachment;\n }\n\n public async sign(blob: ArrayBuffer): Promise {\n const result = (await navigator.credentials.get({\n publicKey: {\n allowCredentials: [\n {\n type: 'public-key',\n id: this.rawId,\n },\n ],\n challenge: blob,\n userVerification: 'preferred',\n },\n })) as PublicKeyCredentialWithAttachment;\n\n if (result.authenticatorAttachment !== null) {\n this.authenticatorAttachment = result.authenticatorAttachment;\n }\n\n const response = result.response as AuthenticatorAssertionResponse;\n if (\n response.signature instanceof ArrayBuffer &&\n response.authenticatorData instanceof ArrayBuffer\n ) {\n const cbor = borc.encode(\n new borc.Tagged(55799, {\n authenticator_data: new Uint8Array(response.authenticatorData),\n client_data_json: new TextDecoder().decode(response.clientDataJSON),\n signature: new Uint8Array(response.signature),\n }),\n );\n if (!cbor) {\n throw new Error('failed to encode cbor');\n }\n return cbor.buffer as Signature;\n } else {\n throw new Error('Invalid response from WebAuthn.');\n }\n }\n\n /**\n * Allow for JSON serialization of all information needed to reuse this identity.\n */\n public toJSON(): JsonnableWebAuthnIdentity {\n return {\n publicKey: toHexString(this._publicKey.getCose()),\n rawId: toHexString(this.rawId),\n };\n }\n}\n\n/**\n * ReturnType\n */\nexport interface JsonnableWebAuthnIdentity {\n // The hexadecimal representation of the DER encoded public key.\n publicKey: string;\n // The string representation of the local WebAuthn Credential.id (base64url encoded).\n rawId: string;\n}\n","import React, { FunctionComponent, useState } from \"react\";\nimport {\n LinkTransport,\n MixedTransport,\n PermissionResponseResult,\n PostMessageTransport,\n WalletAgent,\n} from \"@slide-computer/identity\";\nimport { ICRC1, TokenManager } from \"@slide-computer/tokens\";\nimport { Actor, ActorMethod, HttpAgent } from \"@dfinity/agent\";\nimport { Ed25519KeyIdentity } from \"@dfinity/identity\";\nimport { Principal } from \"@dfinity/principal\";\n\nconst origin = \"https://etk52-fqaaa-aaaak-ae4ca-cai.icp0.io\";\nconst transport = new MixedTransport({\n incoming: new PostMessageTransport({ origin }),\n outgoing: new LinkTransport({\n origin,\n open: async (url: string) => {\n const width = 380;\n const height = 540;\n const left = window.outerWidth / 2 + window.screenX - width / 2;\n const top = window.outerHeight / 2 + window.screenY - height / 2;\n window.open(\n url,\n \"slideWallet\",\n Object.entries({\n top,\n left,\n width,\n height,\n status: 0,\n toolbar: 0,\n menubar: 0,\n resizable: 0,\n opener: 1,\n })\n .map((entry) => entry.join(\"=\"))\n .join(\",\"),\n );\n },\n }),\n});\nconst identity = Ed25519KeyIdentity.generate(\n crypto.getRandomValues(new Uint8Array(32)),\n);\nconst agent = new WalletAgent({\n transport,\n identity,\n agent: new HttpAgent({\n identity: identity,\n }),\n});\nconst test = Actor.createActor<{ cowsay: ActorMethod<[string], [string]> }>(\n ({ IDL }) =>\n IDL.Service({\n cowsay: IDL.Func([IDL.Text], [IDL.Text], [\"query\"]),\n }),\n { canisterId: \"7igbu-3qaaa-aaaaa-qaapq-cai\" },\n);\n\nconst tokenAmountFromString = (str: string, decimals: number) => {\n const [number, ...decimalsStr] = str.replace(/[^\\d.]/g, \"\").split(\".\");\n return BigInt(\n `${number}${decimalsStr\n .join(\"\")\n .slice(0, decimals ?? 0)\n .padEnd(decimals ?? 0, \"0\")}`,\n );\n};\n\nconst App: FunctionComponent = () => {\n const [permission, setPermission] = useState();\n const [amount, setAmount] = useState(\"\");\n const [recipient, setRecipient] = useState(\"\");\n const [message, setMessage] = useState(\"\");\n\n // Connect to Slide wallet over JSON-RPC\n const connect = async () => {\n // await agent.fetchRootKey();\n const result = await agent.permission({\n version: 1,\n appMetaData: {\n name: \"Example Dapp\",\n },\n scopes: [\"canister_call\", \"delegation\"],\n targets: [Actor.canisterIdOf(test)],\n });\n agent.sender = Principal.selfAuthenticating(\n new Uint8Array(result.identities[0].publicKey.toDer()),\n );\n agent.delegationChain = result.identities[0].delegationChain;\n setPermission(result);\n };\n\n // Canister that will be called over RPC-JSON\n const send = async () => {\n const tokenManager = await TokenManager.create({\n agent,\n canisterId: \"ryjl3-tyaaa-aaaaa-aaaba-cai\",\n supportedStandards: [ICRC1],\n });\n const txId = await tokenManager.transfer?.({\n to: recipient,\n amount: tokenAmountFromString(amount, 8),\n fromSubaccount: new Uint8Array(\n permission?.identities[0].ledger?.subaccounts?.[0].bytes!,\n ),\n });\n requestAnimationFrame(() => alert(`txId: ${txId}`));\n };\n\n // Canister that will be called with delegation\n const cowSay = async () =>\n alert(await test.cowsay.withOptions({ agent })(message));\n\n return (\n \n {permission ? (\n
\n

\n Connected with{\" \"}\n {permission.identities[0].ledger?.subaccounts?.[0].name}\n

\n

Transaction approval demo

\n setRecipient(e.target.value)}\n />\n
\n setAmount(e.target.value.replace(/[^\\d.]/, \"\"))}\n />\n
\n \n

Delegation demo

\n setMessage(e.target.value)}\n />\n
\n \n
\n ) : (\n \n )}\n \n );\n};\n\nexport default App;\n","import { JsonRPC, Transport } from \"./types\";\n\nexport interface MixedTransportOptions {\n incoming: Pick;\n outgoing: Pick;\n}\n\nexport class MixedTransport implements Transport {\n constructor(private options: MixedTransportOptions) {}\n\n public async registerListener(\n listener: (data: Data) => Promise,\n ): Promise<() => void> {\n return this.options.incoming.registerListener(listener);\n }\n\n public async send(data: Data): Promise {\n return this.options.outgoing.send(data);\n }\n}\n","import { JsonRPC, Transport } from \"./types\";\n\nexport interface PostMessageTransportOptions {\n /** Expected origin of incoming messages and target origin of outgoing messages */\n origin: string;\n /** Retrieve window to send outgoing messages to */\n getWindow?: () => Window;\n}\n\nexport class PostMessageTransport implements Transport {\n constructor(private options: PostMessageTransportOptions) {}\n\n public async registerListener(\n listener: (data: Data) => Promise,\n ): Promise<() => void> {\n const messageListener = async (event: MessageEvent) => {\n if (\n event.origin !== this.options.origin ||\n typeof event.data !== \"object\" ||\n !event.data ||\n !(\"jsonrpc\" in event.data) ||\n event.data.jsonrpc !== \"2.0\"\n ) {\n return;\n }\n await listener(event.data);\n };\n window.addEventListener(\"message\", messageListener);\n return () => {\n window.removeEventListener(\"message\", messageListener);\n };\n }\n\n public async send(data: Data): Promise {\n this.options.getWindow?.().postMessage(data, this.options.origin);\n }\n}\n","import { JsonRPC, Transport } from \"./types\";\nimport { Buffer } from \"buffer\";\n\nexport interface LinkTransportOptions {\n /** Target origin of outgoing messages */\n origin?: string;\n /** Handler for outgoing message urls */\n open?: (url: string) => Promise;\n}\n\ntype Listener = (data: JsonRPC) => Promise;\n\ntype SearchParam = \"request\" | \"response\";\n\nexport const base64ToBase64url = (value: string) =>\n value.replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=/g, \"\");\n\nexport const base64urlToBase64 = (value: string) => {\n const base64 = value.replace(/-/g, \"+\").replace(/_/g, \"/\");\n return base64 + \"=\".repeat(base64.length % 4);\n};\n\nexport class LinkTransport implements Transport {\n private listeners: Listener[] = [];\n\n constructor(private options: LinkTransportOptions) {}\n\n public async registerListener(\n listener: (data: Data) => Promise,\n ): Promise<() => void> {\n this.listeners.push(listener as Listener);\n return () => {\n this.listeners.splice(this.listeners.indexOf(listener as Listener), 1);\n };\n }\n\n public async send(\n data: Data,\n param: SearchParam = \"request\",\n ): Promise {\n if (!this.options.origin) {\n return;\n }\n const searchParams = new URLSearchParams();\n searchParams.set(\n param,\n base64ToBase64url(\n Buffer.from(JSON.stringify(data), \"utf8\").toString(\"base64\"),\n ),\n );\n await this.options.open?.(\n `${this.options.origin}/rpc?${searchParams.toString()}`,\n );\n }\n\n public async receive(\n link: string,\n param: SearchParam = \"response\",\n ): Promise {\n const searchParams = new URLSearchParams(link.slice(link.indexOf(\"?\") + 1));\n const response = searchParams.get(param);\n if (!response) {\n return;\n }\n const data = JSON.parse(\n Buffer.from(base64urlToBase64(response), \"base64\").toString(\"utf8\"),\n );\n if (\n typeof data !== \"object\" ||\n !data ||\n !(\"jsonrpc\" in data) ||\n data.jsonrpc !== \"2.0\"\n ) {\n return;\n }\n await Promise.all(this.listeners.map((listener) => listener(data)));\n }\n}\n","import { ReportHandler } from 'web-vitals';\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from 'react';\nimport ReactDOM from 'react-dom/client';\nimport './index.css';\nimport App from './App';\nimport reportWebVitals from './reportWebVitals';\n\nconst root = ReactDOM.createRoot(\n document.getElementById('root') as HTMLElement\n);\nroot.render(\n \n \n \n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"names":["map","webpackAsyncContext","req","__webpack_require__","o","Promise","resolve","then","e","Error","code","ids","id","keys","Object","module","exports","request","async","canisterId","agent","paths","options","uniquePaths","Set","encodedPaths","path","encodePath","status","Map","promises","index","response","readState","data","Certificate","create","certificate","rootKey","lookup","set","decodeTime","decodeControllers","decodeHex","TextDecoder","decode","decodeStrategy","key","decodeLeb128","decodeCbor","decodeUtf8","console","warn","error","_a","message","includes","AgentError","group","groupEnd","all","encoder","TextEncoder","encode","arg","DataView","buffer","canisterBuffer","toUint8Array","ArrayBuffer","metaPath","encoded","buf","toHex","lebDecode","PipeArrayBuffer","Cbor","decoded","Date","Number","BigInt","tag","controllersRaw","Principal","fromUint8Array","Uint8Array","serializer","SelfDescribeCborSerializer","withDefaultEncoders","CborTag","value","serialize","decodePositiveBigInt","len","byteLength","res","i","addEncoder","name","priority","match","_isPrincipal","v","cbor","bytes","isView","tagged","fromHex","toString","Uint8ArrayDecoder","borc","createByteString","raw","concat","createByteStringFromHeap","start","end","this","_heap","slice","input","size","tags","val","Semantic","decodeFirst","CertificateVerificationError","constructor","reason","super","isBufferEqual","a","b","a8","b8","length","_rootKey","_canisterId","_blsVerify","cert","blsVerify","bls","verify","lookup_path","tree","rootHash","reconstruct","derKey","_checkDelegationAndGetKey","delegation","sig","signature","expectedLength","DER_PREFIX","KEY_LENGTH","TypeError","prefix","extractDER","msg","domain_sep","sigVer","err","d","rangeLookup","subnet_id","some","r","ltEq","gtEq","publicKeyLookup","t","hash","s","str","l","trees","find_label","flatten_forks","setPrototypeOf","prototype","uint8ToBuf","sha256","update","digest","hashValue","hashString","lebEncode","Array","isArray","vals","toHash","assign","requestIdOf","sorted","entries","filter","undefined","sort","k1","k2","compare","x","wasm","wasmBytes","base64Arraybuffer","cachegetUint8Memory0","passArray8ToWasm0","malloc","ptr","memory","init","instance","imports","Response","arrayBuffer","WebAssembly","instantiate","Instance","load","__wbindgen_wasm_module","pk","bls_init","pk1","sig1","msg1","m","w","ptr0","len0","__wbindgen_malloc","ptr1","len1","ptr2","len2","bls_verify","buffers","result","reduce","acc","curr","padStart","join","hexRe","RegExp","hex","test","parseInt","b1","b2","u1","u2","arr","byteOffset","_buffer","_view","read","num","subarray","readUint8","write","offset","alloc","amount","idlLabelToId","label","isSafeInteger","array","h","c","idlHash","eob","safeRead","pipe","safeReadUint8","byte","Math","ceil","log2","Pipe","weight","valueOf","slebEncode","isNeg","getLowerBytes","slebDecode","pipeView","writeIntLE","min","mul","sub","readUIntLE","iexp2","n","nBig","RangeError","magicNumber","zipWith","xs","ys","f","TypeTable","_typs","_idx","has","obj","add","type","idx","push","merge","knot","get","knotIdx","splice","delete","indexOf","typeName","Visitor","visitType","visitPrimitive","visitEmpty","visitBool","visitNull","visitReserved","visitText","visitNumber","visitInt","visitNat","visitFloat","visitFixedInt","visitFixedNat","visitPrincipal","visitConstruct","visitVec","ty","visitOpt","visitRecord","fields","visitTuple","components","visitVariant","visitRec","visitFunc","visitService","Type","display","valueToString","toReadableString","buildTypeTable","typeTable","_buildTypeTableImpl","PrimitiveType","checkType","ConstructType","RecClass","getType","encodeType","EmptyClass","accept","covariant","encodeValue","decodeValue","UnknownClass","typeFunc","decodedValue","defineProperty","writable","enumerable","configurable","BoolClass","NullClass","ReservedClass","TextClass","fatal","IntClass","isInteger","NatClass","FloatClass","_bits","view","setFloat32","setFloat64","getFloat32","getFloat64","FixedIntClass","max","ok","readIntLE","FixedNatClass","writeUIntLE","VecClass","_type","_blobOptimization","bits","BYTES_PER_ELEMENT","every","opCode","vec","Uint16Array","Uint32Array","BigUint64Array","Int8Array","Int16Array","Int32Array","BigInt64Array","rets","OptClass","opt","RecordClass","_fields","tryAsTuple","k","hasOwnProperty","values","T","forEach","_","record","expectedRecordIdx","actualRecordIdx","expectKey","expectType","expectedId","actualId","TupleClass","_components","tuple","wireType","VariantClass","variant","wireHash","_id","_counter","fill","decodePrincipalId","PrincipalId","PrincipalClass","toText","FuncClass","argTypes","retTypes","annotations","argsToString","types","principal","methodName","canister","method","methodLen","argLen","args","retLen","annLen","anns","encodeAnnotation","ann","ServiceClass","func","meths","labelBuf","JSON","stringify","_key","substring","toReadableString_max","magic","table","typs","magicBuffer","rawTable","rawTypes","prevHash","objectLength","pow","argLength","returnValues","returnValuesLength","annotationLength","servLength","methods","nameLength","funcName","funcType","rawList","readTypeTable","Rec","Null","Bool","Nat","Int","Nat8","Nat16","Nat32","Nat64","Int8","Int16","Int32","Int64","Float32","Float64","Text","Reserved","Empty","buildType","entry","Vec","Opt","Record","Tuple","Variant","Func","rec","typeRef","Service","output","ind","Unknown","ret","alphabet","lookupTable","lookUpTable","_arr","anonymous","managementCanister","selfAuthenticating","publicKey","sha","jsSha224","from","other","fromText","hexString","fromHexString","text","skip","decodeChar","char","toLowerCase","replace","isAnonymous","toUpperCase","checksumArrayBuf","setUint32","crc","getCrc32","checksum","matches","compareTo","cmp","chars","charCodeAt","arraybuffer","base64","encoded1","encoded2","encoded3","encoded4","bufferLength","p","b64","lens","getLens","validLen","placeHoldersLen","toByteArray","tmp","Arr","_byteLength","curByte","revLookup","fromByteArray","uint8","extraBytes","parts","maxChunkLength","encodeChunk","globalObject","BigNumber","isNumeric","mathceil","mathfloor","floor","bignumberError","tooManyDigits","BASE","LOG_BASE","MAX_SAFE_INTEGER","POWS_TEN","SQRT_BASE","MAX","bitFloor","coeffToString","z","j","y","xc","yc","intCheck","String","isOdd","toExponential","charAt","toFixedPoint","zs","clone","configObject","div","convertBase","parseNumeric","P","ONE","DECIMAL_PLACES","ROUNDING_MODE","TO_EXP_NEG","TO_EXP_POS","MIN_EXP","MAX_EXP","CRYPTO","MODULO_MODE","POW_PRECISION","FORMAT","groupSize","secondaryGroupSize","groupSeparator","decimalSeparator","fractionGroupSize","fractionGroupSeparator","suffix","ALPHABET","alphabetHasNormalDecimalDigits","caseChanged","isNum","_isBigNumber","search","round","DEBUG","format","rm","c0","ne","maxOrMin","call","normalise","pop","sd","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","crypto","getRandomValues","randomBytes","EXPONENTIAL_AT","RANGE","isBigNumber","maximum","arguments","lt","minimum","gt","random","pow2_53","random53bitInt","dp","rand","copy","sum","plus","decimal","toBaseOut","baseIn","baseOut","arrL","reverse","sign","callerIsToString","multiply","base","temp","xlo","xhi","carry","klo","khi","aL","bL","subtract","more","prod","prodL","q","qc","rem","remL","rem0","xi","xL","yc0","yL","yz","NaN","basePrefix","dotAfter","dotBefore","isInfinityOrNaN","whitespaceOrPlus","isNaN","p1","p2","absoluteValue","abs","comparedTo","decimalPlaces","dividedBy","dividedToIntegerBy","idiv","exponentiatedBy","half","isModExp","nIsBig","nIsNeg","nIsOdd","mod","times","integerValue","isEqualTo","eq","isFinite","isGreaterThan","isGreaterThanOrEqualTo","gte","isLessThan","isLessThanOrEqualTo","lte","isNegative","isPositive","isZero","minus","xLTy","xe","ye","modulo","multipliedBy","xcL","ycL","ylo","yhi","zc","sqrtBase","negated","precision","shiftedBy","squareRoot","sqrt","rep","toFixed","toFormat","split","g1","g2","intPart","fractionPart","intDigits","substr","toFraction","md","d0","d1","d2","exp","n0","n1","toNumber","toPrecision","toJSON","define","require","ieee754","customInspectSymbol","Symbol","Buffer","SlowBuffer","INSPECT_MAX_BYTES","K_MAX_LENGTH","createBuffer","encodingOrOffset","allocUnsafe","string","encoding","isEncoding","actual","fromString","arrayView","isInstance","fromArrayBuffer","fromArrayLike","fromArrayView","SharedArrayBuffer","isBuffer","checked","numberIsNaN","fromObject","toPrimitive","assertSize","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","dir","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","readUInt16BE","foundIndex","found","hexWrite","remaining","strLen","parsed","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","apply","decodeCodePointsArray","kMaxLength","TYPED_ARRAY_SUPPORT","proto","foo","typedArraySupport","poolSize","allocUnsafeSlow","_isBuffer","list","pos","swap16","swap32","swap64","toLocaleString","equals","inspect","trim","target","thisStart","thisEnd","thisCopy","targetCopy","hexSliceLookupTable","checkOffset","ext","checkInt","checkIEEE754","writeFloat","littleEndian","noAssert","writeDouble","newBuf","readUintLE","readUintBE","readUIntBE","readUInt8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readUInt32BE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUintLE","writeUintBE","writeUIntBE","writeUint8","writeUInt8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUInt16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeUInt32BE","limit","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","INVALID_BASE64_RE","Infinity","leadSurrogate","base64clean","src","dst","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","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","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","g","mant","SIMPLE_FLOAT_SINGLE","SIMPLE_FLOAT_DOUBLE","ERROR","parser","utils","Simple","Tagged","URL","Decoder","opts","nextPowerOf2","_heap8","_reset","_knownTags","arrayBufferToBignumber","global","log","bind","_depth","_parents","_currentParent","_ref","ref","_closeParent","_push","createTag","createUtf8String","createMap","createObject","createArray","_dec","hasChildren","tmpKey","buildMap","_createParent","_res","tagNumber","typ","createInt","createInt32","buildInt32","createInt64","f1","f2","buildInt64","createFloat","createFloatSingle","createFloatDouble","createInt32Neg","createInt64Neg","createTrue","createFalse","createNull","createUndefined","createInfinity","createInfinityNeg","createNaN","createNaNNeg","createUtf8StringFromHeap","createSimpleUnassigned","_createArrayStartFixed","len3","len4","_createObjectStartFixed","_decode","decodeAll","enc","Diagnose","fl","isNegativeZero","collectObject","diagnose","constants","HALF","FLOAT","DOUBLE","MAXINT_BN","BUF_NAN","BUF_INF_NEG","BUF_INF_POS","Encoder","streaming","stream","onData","semanticTypes","_pushUrl","_pushBigNumber","addTypes","genTypes","addSemanticType","fun","old","resultMethod","resultLength","finalize","pushWrite","_pushUInt8","_pushUInt16BE","_pushUInt32BE","_pushDoubleBE","_pushNaN","_pushInfinity","_pushFloat","writeHalf","parseHalf","b4","_pushInt","mt","orig","_pushIntNum","_pushNumber","_pushString","_pushBoolean","_pushUndefined","_pushArray","gen","pushAny","_pushTag","_pushDate","_pushBuffer","_pushNoFilter","_pushRegexp","source","_pushSet","_pushBigint","dec","slide","_pushMap","_pushRawMap","_pushObject","encodeCBOR","keyLength","keySorter","toType","isSimple","hasParent","convert","converters","er","u32","u","s16","lenA","lenB","count","wrtBigUInt64LE","checkIntBI","wrtBigUInt64BE","readBigUInt64LE","defineBigIntMethod","validateNumber","first","last","boundsError","readBigUInt64BE","readBigInt64LE","readBigInt64BE","writeBigUInt64LE","writeBigUInt64BE","writeBigInt64LE","writeBigInt64BE","errors","E","sym","getMessage","Base","stack","addNumericalSeparator","range","ERR_OUT_OF_RANGE","checkBounds","ERR_INVALID_ARG_TYPE","ERR_BUFFER_OUT_OF_BOUNDS","received","fn","BufferBigIntNotDefined","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","rt","LN2","URLWithLegacySupport","URLSearchParams","defaultBase","relative","url","location","protocolMap","defaultProtocol","urlParsed","protocol","host","self","pathname","auth","username","password","query","startsWith","hostname","href","origin","port","searchParams","createObjectURL","revokeObjectURL","userPass","__export","__importStar","BufferClasses","Float32Array","Float64Array","JsonDefaultCborEncoder","_serializer","_stable","undefined_","bool","number","doubleFloat","null_","serializeValue","find","getOwnPropertyNames","item","ToCborEncoder","toCBOR","CborSerializer","_encoders","stable","removeEncoder","getEncoderFor","chosenEncoder","MAX_U64_NUMBER","_concat","newBuffer","_serializeValue","major","minor","_serializeNumber","_serializeString","utf8","charcode","uSmall","u8","radix","u16","u64","iSmall","i8","i32","i64","done","newI64","reduceRight","true_","false_","items","keyA","keyB","localeCompare","single","nacl","gf","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","t1","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","b3","b5","b6","b7","b9","b10","b11","b12","b13","b14","b15","S","inv25519","pow2523","crypto_scalarmult","x32","x16","crypto_scalarmult_base","crypto_box_keypair","crypto_box_beforenm","blocks","d3","d4","d5","d6","d7","d8","d9","hibit","h0","h1","h2","h3","h4","h5","h6","h7","h8","h9","r0","r1","r2","r3","r4","r5","r6","r7","r8","r9","mac","macpos","mask","want","crypto_box_afternm","crypto_box_open_afternm","K","crypto_hashblocks_hl","hh","hl","bh0","bh1","bh2","bh3","bh4","bh5","bh6","bh7","bl0","bl1","bl2","bl3","bl4","bl5","bl6","bl7","th","tl","wh","wl","ah0","ah1","ah2","ah3","ah4","ah5","ah6","ah7","al0","al1","al2","al3","al4","al5","al6","al7","crypto_hash","cswap","pack","tx","zi","scalarmult","scalarbase","crypto_sign_keypair","sk","seeded","L","modL","crypto_sign","sm","smlen","crypto_sign_open","chk","den","den2","den4","den6","unpackneg","crypto_secretbox_BOXZEROBYTES","crypto_sign_BYTES","crypto_sign_PUBLICKEYBYTES","crypto_sign_SECRETKEYBYTES","checkLengths","checkArrayTypes","cleanup","lowlevel","crypto_box","crypto_box_open","crypto_secretbox_KEYBYTES","crypto_secretbox_NONCEBYTES","crypto_secretbox_ZEROBYTES","crypto_scalarmult_BYTES","crypto_scalarmult_SCALARBYTES","crypto_box_PUBLICKEYBYTES","crypto_box_SECRETKEYBYTES","crypto_box_BEFORENMBYTES","crypto_box_NONCEBYTES","crypto_box_ZEROBYTES","crypto_box_BOXZEROBYTES","crypto_sign_SEEDBYTES","crypto_hash_BYTES","secretbox","nonce","open","box","nonceLength","overheadLength","scalarMult","scalarLength","groupElementLength","secretKey","before","checkBoxLengths","after","keyPair","fromSecretKey","publicKeyLength","secretKeyLength","sharedKeyLength","signedMsg","mlen","detached","fromSeed","seed","seedLength","signatureLength","hashLength","setPRNG","msCrypto","CRC_TABLE","ensureBuffer","hasNewBufferAPI","_crc32","previous","crc32","bufferizeInt","signed","unsigned","aa","ca","encodeURIComponent","da","ea","fa","ha","ia","window","document","createElement","ja","ka","la","ma","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","ra","sa","ta","pa","qa","oa","removeAttribute","setAttribute","setAttributeNS","xlinkHref","ua","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","for","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","iterator","Ka","La","Ma","Na","Oa","prepareStackTrace","Reflect","construct","displayName","Pa","render","Qa","$$typeof","_context","_payload","_init","Ra","Sa","Ta","nodeName","Va","_valueTracker","getOwnPropertyDescriptor","getValue","setValue","stopTracking","Ua","Wa","Xa","activeElement","body","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","cb","db","ownerDocument","eb","fb","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","children","hb","ib","jb","textContent","kb","lb","mb","nb","namespaceURI","innerHTML","firstChild","removeChild","appendChild","MSApp","execUnsafeLocalFunction","ob","lastChild","nodeType","nodeValue","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","qb","rb","sb","style","setProperty","tb","menuitem","area","br","col","embed","hr","img","keygen","link","meta","param","track","wbr","ub","vb","is","wb","xb","srcElement","correspondingUseElement","parentNode","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","addEventListener","removeEventListener","Nb","onError","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","return","flags","Wb","memoizedState","dehydrated","Xb","Zb","child","sibling","current","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","B","unstable_now","ec","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","clz32","pc","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","Ac","eventTimes","Cc","C","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","Rc","Sc","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","isDehydrated","containerInfo","Xc","Yc","dispatchEvent","shift","Zc","$c","ad","bd","cd","ReactCurrentBatchConfig","dd","ed","transition","fd","gd","hd","Uc","stopPropagation","jd","kd","ld","nd","od","keyCode","charCode","pd","qd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","cancelBubble","persist","isPersistent","wd","xd","yd","eventPhase","bubbles","cancelable","timeStamp","now","isTrusted","td","ud","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","repeat","locale","which","Rd","Td","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","color","date","datetime","email","month","tel","time","week","me","oe","event","listeners","pe","qe","re","se","te","ue","ve","we","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","node","nextSibling","Le","contains","compareDocumentPosition","Me","HTMLIFrameElement","contentWindow","Ne","contentEditable","Oe","focusedElem","selectionRange","documentElement","selectionStart","selectionEnd","defaultView","getSelection","extend","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","element","left","scrollLeft","top","scrollTop","focus","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","animation","$e","af","bf","cf","df","ef","ff","hf","lf","mf","nf","Ub","listener","of","pf","qf","rf","sf","capture","passive","J","F","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","je","ke","unshift","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","setTimeout","Gf","clearTimeout","Hf","Jf","queueMicrotask","catch","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","G","Vf","H","Wf","Xf","Yf","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","childContextTypes","$f","ag","bg","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","gg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","zg","Ag","Bg","elementType","deletions","Cg","pendingProps","overflow","treeContext","retryLane","Dg","mode","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","defaultProps","Mg","Ng","Og","Pg","Qg","Rg","_currentValue","Sg","childLanes","Tg","dependencies","firstContext","lanes","Ug","Vg","context","memoizedValue","next","Wg","Xg","Yg","interleaved","Zg","$g","ah","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","bh","ch","eventTime","lane","payload","callback","dh","eh","fh","gh","ih","jh","Component","refs","kh","nh","isMounted","_reactInternals","enqueueSetState","lh","mh","enqueueReplaceState","enqueueForceUpdate","oh","shouldComponentUpdate","isPureReactComponent","ph","contextType","state","updater","qh","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","rh","props","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","sh","_owner","_stringRef","uh","vh","xh","yh","implementation","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","tagName","Jh","Kh","Lh","Mh","revealOrder","Nh","Oh","_workInProgressVersionPrimary","Ph","ReactCurrentDispatcher","Qh","Rh","N","O","Sh","Th","Uh","Vh","Q","Wh","Xh","Yh","Zh","$h","ai","bi","ci","baseQueue","queue","di","ei","fi","lastRenderedReducer","action","hasEagerState","eagerState","lastRenderedState","dispatch","gi","ii","ji","ki","getSnapshot","li","mi","R","lastEffect","stores","oi","pi","qi","ri","destroy","deps","si","ti","ui","vi","wi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","readContext","useCallback","useContext","useEffect","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ki","Li","Mi","Ni","WeakMap","Oi","Pi","Qi","Ri","getDerivedStateFromError","componentDidCatch","Si","componentStack","Ti","pingCache","Ui","Vi","Wi","Xi","ReactCurrentOwner","Yi","Zi","$i","aj","bj","cj","dj","ej","baseLanes","cachePool","transitions","fj","gj","hj","ij","jj","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","kj","lj","pendingContext","mj","Aj","Bj","Cj","Dj","nj","oj","pj","fallback","qj","rj","tj","dataset","dgst","uj","vj","_reactRetry","sj","subtreeFlags","wj","xj","isBackwards","rendering","renderingStartTime","tail","tailMode","yj","Ej","Fj","Gj","wasMultiple","multiple","suppressHydrationWarning","onClick","onclick","createElementNS","autoFocus","createTextNode","Hj","Ij","Jj","Kj","U","Lj","WeakSet","V","Mj","W","Nj","Oj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","insertBefore","_reactRootContainer","Xj","Yj","Zj","ak","onCommitFiberUnmount","componentWillUnmount","bk","ck","dk","ek","fk","isHidden","gk","hk","ik","jk","kk","lk","__reactInternalSnapshotBeforeUpdate","Wk","mk","nk","qk","rk","tk","uk","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","finishedWork","finishedLanes","Qk","timeoutHandle","Rk","Sk","Tk","Uk","Vk","mutableReadLanes","Bc","Pj","onCommitFiberRoot","mc","onRecoverableError","Xk","onPostCommitFiberRoot","Yk","Zk","al","isReactComponent","pendingChildren","bl","mutableSourceEagerHydrationData","cl","cache","pendingSuspenseBoundaries","el","gl","il","jl","zj","$k","ll","reportError","ml","_internalRoot","nl","ol","pl","ql","sl","rl","unmount","unstable_scheduleHydration","querySelectorAll","form","usingClientEntryPoint","Events","ul","findFiberByHostInstance","bundleType","version","rendererPackageName","vl","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","isDisabled","supportsFiber","inject","createPortal","dl","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","__self","__source","jsx","jsxs","setState","forceUpdate","escape","_status","_result","default","Children","toArray","only","Fragment","Profiler","PureComponent","StrictMode","Suspense","cloneElement","createContext","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","createFactory","createRef","forwardRef","isValidElement","lazy","memo","startTransition","unstable_act","sortIndex","performance","setImmediate","startTime","expirationTime","priorityLevel","navigator","scheduling","isInputPending","MessageChannel","port2","port1","onmessage","postMessage","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","delay","unstable_wrapCallback","lengths","exists","checkFinished","destroyed","finished","outputLen","u8a","createView","rotr","word","toBytes","Hash","_cloneInto","wrapConstructor","hashCons","hashC","blockLen","SHA2","padOffset","take","process","dataView","roundClean","digestInto","setBigUint64","_32n","_u32_max","oview","outLen","to","Maj","SHA256_K","IV","SHA256_W","SHA256","getUint32","W15","W2","s0","s1","T1","T2","Chi","SHA224","sha224","globalThis","concatBytes","arrays","bytesLength","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","getter","__esModule","definition","chunkId","miniCssF","Function","prop","inProgress","dataWebpackPrefix","script","needAttach","scripts","getElementsByTagName","getAttribute","charset","timeout","nc","onScriptComplete","prev","onerror","onload","doneFns","head","toStringTag","installedChunks","installedChunkData","promise","reject","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","chunkLoadingGlobal","ReplicaRejectCode","domainSeparator","SignIdentity","getPrincipal","_principal","getPublicKey","toDer","transformRequest","__rest","requestId","content","sender_pubkey","sender_sig","AnonymousIdentity","randomNumber","randomInt","SubmitRequestType","makeNonce","rand1","rand2","rand3","rand4","NANOSECONDS_PER_MILLISECONDS","REPLICA_PERMITTED_DRIFT_MILLISECONDS","Expiry","deltaInMSec","_value","httpHeadersTransform","headers","headerFields","AgentHTTPResponseError","RequestStatusResponseStatus","DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS","HttpDefaultFetchError","IdentityInvalidError","HttpAgent","_pipeline","_timeDiffMsecs","_rootKeyFetched","_isAgent","_identity","_fetch","_host","_credentials","fetch","defaultFetch","getDefaultFetch","_fetchOptions","fetchOptions","_callOptions","callOptions","knownHosts","knownHost","endsWith","_retryTimes","retryTimes","credentials","identity","disableNonce","addTransform","nonceFn","endpoint","makeNonceTransform","isLocal","findIndex","ecid","effectiveCanisterId","sender","ingress_expiry","submit","request_type","Call","canister_id","method_name","transformedRequest","_transform","Authorization","btoa","_requestAndRetry","responseBuffer","responseBody","statusText","tries","responseText","errorMessage","queryResponse","httpDetails","createReadStateRequest","syncTime","CanisterStatus","callTime","replicaTime","fetchRootKey","root_key","invalidateIdentity","replaceIdentity","ProxyMessageKind","CanisterInstallMode","encodeLenBytes","encodeLen","decodeLenBytes","ED25519_OID","unwrapDER","derEncoded","oid","expect","bufEquals","payloadLen","decodeLen","lenBytes","Ed25519PublicKey","rawKey","derEncode","fromDer","fromRaw","derDecode","bitStringHeaderLength","wrapDER","unwrapped","RAW_KEY_LENGTH","toRaw","toHexString","requestDomainSeparator","_parseBlob","Delegation","pubkey","expiration","targets","DelegationChain","delegations","challenge","_createSingleDelegation","_b","fromJSON","json","signedDelegation","fromDelegations","DelegationIdentity","_inner","_delegation","fromDelegation","getDelegation","blob","sender_delegation","isDelegationValid","chain","checks","scopes","maybeScope","scope","none","PubKeyCoseAlgo","HMAC","assertHash","iHash","oHash","assertExists","assertBytes","getPrototypeOf","hmac","_1n","_2n","hexes","bytesToHex","hexToNumber","hexToBytes","hexByte","bytesToNumberBE","bytesToNumberLE","numberToBytesBE","numberToBytesLE","ensureBytes","title","bitMask","u8n","u8fr","createHmacDrbg","hashLen","qByteLen","hmacFn","reset","reseed","genUntil","pred","validatorFns","bigint","function","boolean","stringOrUint8Array","field","object","Fp","isValid","validateObject","validators","optValidators","checkField","fieldName","isOptional","checkVal","_0n","_3n","_4n","_5n","_8n","power","pow2","invert","FpSqrt","p1div4","root","eql","sqr","c1","n2","nv","legendreC","Q1div2","neg","tonelliShanks","FIELD_FIELDS","nLength","nBitLength","_nBitLength","nByteLength","Field","ORDER","bitLen","redef","BITS","BYTES","sqrtP","freeze","MASK","is0","lhs","rhs","FpPow","sqrN","addN","subN","mulN","inv","invertBatch","lst","nums","lastMultiplied","inverted","FpInvertBatch","cmov","fromBytes","getFieldBytesLength","fieldOrder","bitLength","getMinHashLength","validateBasic","curve","Gx","Gy","b2n","h2b","ut","DER","Err","_parseInt","toSig","sBytes","rBytesLeft","hexFromSig","shl","rhl","weierstrassPoints","CURVE","allowedPrivateKeyLengths","wrapPrivateKey","isTorsionFree","clearCofactor","allowInfinityPoint","endo","beta","splitScalar","validatePointOpts","_c","point","_isCompressed","toAffine","weierstrassEquation","isWithinCurveOrder","assertGE","normPrivateKeyToScalar","pointPrecomputes","assertPrjPoint","Point","px","py","pz","fromAffine","normalizeZ","points","toInv","assertValidity","fromPrivateKey","privateKey","_setWindowSize","windowSize","_WINDOW_SIZE","right","hasEvenY","X1","Y1","Z1","X2","Y2","Z2","U1","U2","negate","double","X3","Y3","Z3","wNAF","wnaf","wNAFCached","comp","multiplyUnsafe","unsafeLadder","k1neg","k2neg","k1p","k2p","scalar","fake","f1p","f2p","constTimeNegate","multiplyAndAddUnsafe","iz","ax","ay","zz","cofactor","toRawBytes","isCompressed","condition","windows","elm","precomputeWindow","precomputes","maxNumber","shiftBy","wbits","offset1","offset2","cond1","cond2","precomputesMap","transform","ProjectivePoint","weierstrass","curveDef","bits2int","bits2int_modN","lowS","validateOpts","CURVE_ORDER","compressedLen","uncompressedLen","modN","invN","cat","y2","numToNByteStr","isBiggerThanHalfOrder","slcNum","Signature","recovery","fromCompact","fromDER","addRecoveryBit","recoverPublicKey","msgHash","radj","ir","hasHighS","normalizeS","toDERRawBytes","toDERHex","toCompactRawBytes","toCompactHex","isValidPrivateKey","randomPrivateKey","fieldLen","minLen","reduced","precompute","isProbPub","delta","ORDER_MASK","int2octets","prepSig","defaultSigOpts","prehash","extraEntropy","ent","h1int","seedArgs","k2sig","kBytes","normS","defaultVerOpts","getSharedSecret","privateA","publicB","privKey","drbg","_sig","derError","getHash","msgs","createCurve","defHash","CURVE_A","CURVE_B","p256","ECDSA_P256_OID","au8","toU8","isPoint","Gpows","ex","ey","ez","et","strict","normed","b2n_LE","uvRatio","isXOdd","X1Z2","X2Z1","Y1Z2","Y2Z1","x1y1","T3","safe","isSmallOrder","n2b_32LE","b2h","padh","concatB","arrs","RM1","v3","b20","b40","b80","b160","b240","b250","pow_p_5_8","pow_2_252_3","vx2","root1","root2","useRoot1","useRoot2","noRoot","modL_LE","_shaS","sha512a","etc","sha512Async","sha512s","hashFinish","asynchronous","hashable","_verify","pub","SB","hashed","cr","messages","subtle","sha512Sync","defineProperties","cnd","off","off1","off2","cnd1","cnd2","U32_MASK64","fromBig","Al","toBig","shrSH","_l","shrSL","rotrSH","rotrSL","rotrBH","rotrBL","rotr32H","_h","rotr32L","rotlSH","rotlSL","rotlBH","rotlBL","Bl","add3L","Cl","add3H","low","add4L","Dl","add4H","add5H","add5L","El","SHA512_Kh","SHA512_Kl","SHA512_W_H","SHA512_W_L","SHA512","Fl","Gl","Hl","W15h","W15l","s0h","s0l","W2h","W2l","s1h","s1l","SUMl","SUMh","sigma1h","sigma1l","CHIh","CHIl","T1ll","T1h","T1l","sigma0h","sigma0l","MAJh","MAJl","All","sha512","isEd25519SignatureValid","secp256k1P","secp256k1N","divNearest","sqrtMod","_6n","_11n","_22n","_23n","_44n","_88n","b22","b44","b88","b176","b220","b223","secp256k1","a1","a2","POW_2_128","c2","SECP256K1_OID","CANISTER_SIGNATURE_OID","isCanisterSignatureValid","DELEGATION_DOMAIN_SEP","isIdentitySignatureValid","delegationChain","isSignatureValid","getTime","signingPublicKey","params","oidSequenceLength","isECDSASignatureValid","isSecp256k1SignatureValid","ICP_NETWORK_CHAIN_ID","ICP_NETWORK_NAME","getDefaultAgent","pollForResponse","strategy","currentRequest","maybeBuf","Replied","Received","Processing","Rejected","rejectCode","rejectMessage","Done","IDL","definite_canister_settings","controllers","freezing_threshold","memory_allocation","compute_allocation","canister_settings","wasm_module","canister_status","stopped","stopping","running","memory_size","cycles","settings","module_hash","create_canister","delete_canister","deposit_cycles","install_code","reinstall","upgrade","install","provisional_create_canister_with_cycles","provisional_top_up_canister","raw_rand","start_canister","stop_canister","uninstall_code","update_settings","ActorCallError","QueryCallRejectedError","Status","Code","reject_code","Message","reject_message","UpdateCallRejectedError","error_code","metadataSymbol","Actor","metadata","agentOf","actor","interfaceOf","service","canisterIdOf","Install","wasmModule","getManagementCanister","createCanister","createAndInstallCanister","interfaceFactory","createActor","createActorClass","DEFAULT_ACTOR_CONFIG","ACTOR_METHOD_WITH_HTTP_DETAILS","_createActorMethod","configuration","createActorWithHttpDetails","decodeReturnValue","pollingStrategyFactory","strategies","once","timeInMsec","startingThrottleInMsec","backoffFactor","currentThrottling","backoff","caller","queryTransform","cid","reply","callTransform","pollStrategy","responseBytes","shouldIncludeHttpDetails","handler","withOptions","_methodName","_callConfig","managementCanisterIdl","ICP_CANISTER_ID","ACCOUNT_ID_SEP","accountToString","account","subaccount","arraybufferEqual","subaccountFromIndex","owner","ownerBytes","checksumBytes","base32Encode","compressedSubaccount","accountFromString","isAccountHash","chunks","hexCompressedSubAccount","accountToHash","shaObj","accountHashFromString","principalFromString","address","buff","checksumFromHash","numberToUint32","bigintToUint64","bigintFromUint64","getBigUint64","buf1","buf2","view1","view2","getUint8","base32Alphabet","actorOrigin","idlFactory","AccountIdentifier","AccountBalanceArgs","Tokens","e8s","Archive","Archives","archives","BlockIndex","GetBlocksArgs","Memo","Operation","Burn","Mint","Transfer","fee","TimeStamp","timestamp_nanos","Transaction","operation","created_at_time","Block","transaction","timestamp","parent_hash","BlockRange","QueryArchiveError","BadFirstBlockIndex","requested_index","first_valid_index","Other","error_message","QueryArchiveResult","QueryArchiveFn","QueryBlocksResponse","chain_length","first_block_index","archived_blocks","SubAccount","TransferArgs","from_subaccount","TransferError","TxTooOld","allowed_window_nanos","BadFee","expected_fee","TxDuplicate","duplicate_of","TxCreatedInFuture","InsufficientFunds","balance","TransferResult","TransferFeeArg","TransferFee","transfer_fee","account_balance","decimals","query_blocks","symbol","transfer","BaseToken","_config","ICP","IcpToken","supportedStandards","actorConfig","_actor","balanceOf","logo","canisterIds","tokenType","identifyCall","fromSubaccount","createdAtTime","anonymousAgent","asset","implementedStandards","accountType","SubAccount__1","TokenIndex","AccountIdentifier__1","Settlement","seller","buyer","price","TokenIdentifier","User","BalanceRequest","token","user","Balance","CommonError__1","InvalidToken","BalanceResponse","TokenIdentifier__1","CommonError","Result_7","Time","Listing","locked","Result_8","Extension","Metadata","fungible","nonfungible","HeaderField","HttpRequest","HttpStreamingCallbackToken","content_encoding","HttpStreamingCallbackResponse","HttpStreamingStrategy","Callback","HttpResponse","streaming_strategy","status_code","ListRequest","Result_3","Result_6","MintingRequest","Result_5","Result_4","SaleTransaction","tokens","Sale","expires","Balance__1","Result_2","Result_1","Result","TransferRequest","notify","TransferResponse","CannotNotify","InsufficientBalance","Unauthorized","acceptCycles","addAsset","adminKillHeartbeat","adminStartHeartbeat","allPayments","allSettlements","availableCycles","bearer","clearPayments","cronCapEvents","cronDisbursements","cronSettlements","details","extensions","failedSales","getAsset","getAssetHandles","getMinter","getRegistry","getTokens","historicExport","http_request","http_request_streaming_callback","initCap","listings","lock","mintNFT","payments","reserve","retreive","saleTransactions","salesSettlements","salesStats","setMinter","settle","settlements","stats","supply","tokens_ext","transactions","EXT_COMMON","EXT_NON_FUNGIBLE","tokenIdToExtTokenId","padding","tokenIdTFromExtTokenId","numberFromUint32","ExtToken","mintingAccount","totalSupply","ownerOf","tokensOf","assetOf","imageOf","attributesOf","tokenId","exec","unit","icon","collections","logoFromCanisterIdUrl","avatar","Image","image","urlIsImage","tokenIndex","traitTypeIndex","valueIndex","trait","_traitTypeIndex","_valueIndex","traitType","NftError","cap","custodians","UnauthorizedOperator","SelfTransfer","TokenNotFound","UnauthorizedOwner","SelfApprove","OperatorNotFound","ExistedNFT","OwnerNotFound","ManualReply","created_at","upgraded_at","Nat64Content","Nat32Content","BoolContent","Nat8Content","Int64Content","IntContent","NatContent","Nat16Content","Int32Content","Int8Content","FloatContent","Int16Content","BlobContent","NestedContent","TextContent","GenericValue","ManualReply_1","TokenMetadata","transferred_at","transferred_by","operator","approved_at","approved_by","properties","is_burned","token_identifier","burned_at","burned_by","minted_at","minted_by","ManualReply_2","Stats","total_transactions","total_unique_holders","total_supply","SupportedInterface","Approval","ManualReply_3","dip721_approve","dip721_balance_of","dip721_burn","dip721_custodians","dip721_cycles","dip721_is_approved_for_all","dip721_logo","dip721_metadata","dip721_mint","dip721_name","dip721_operator_of","dip721_operator_token_identifiers","dip721_operator_token_metadata","dip721_owner_of","dip721_owner_token_identifiers","dip721_owner_token_metadata","dip721_set_approval_for_all","dip721_set_custodians","dip721_set_logo","dip721_set_name","dip721_set_symbol","dip721_stats","dip721_supported_interfaces","dip721_symbol","dip721_token_metadata","dip721_total_supply","dip721_total_transactions","dip721_total_unique_holders","dip721_transfer","dip721_transfer_from","DIP721_V2","DIP721_V2_MINT","DIP721_V2_BURN","DIP721_V2_APPROVAL","flattenMetadataEntry","natValueKey","intValueKey","Blob","nestedKey","nestedValue","flat","Dip721V2Token","getCustodians","setCustodian","approve","setApprovalForAll","isApprovedForAll","transferFrom","supportedInterface","custodian","tokenMetadata","metadataOf","approved","spender","traitTypeRegExp","burn","dfx_info","git_commit_hash","mint","operatorOf","operatorTokenIdentifiers","operatorTokenMetadata","ownerTokenIdentifiers","ownerTokenMetadata","rust_toolchain_info","setCustodians","setLogo","setName","setSymbol","supportedInterfaces","totalTransactions","totalUniqueHolders","DIP721_V2_BETA","DIP721_V2_BETA_MINT","DIP721_V2_BETA_BURN","DIP721_V2_BETA_APPROVAL","Dip721V2BetaToken","TransactionId","ApiError","ZeroAddress","InvalidTokenId","ApproveResult","AccountIdentifierReturn","Value","nat","nat8","MetadataValue","MetadataContainer","account_identifier","MetadataVal","MetadataKeyVal","MetadataPurpose","Preview","Rendered","MetadataPart","key_val_data","purpose","MetadataDesc","MetadataResult","ExtendedMetadataResult","token_id","metadata_desc","LogoResult","logo_type","MetadataReturn","MintReceiptPart","MintReceipt","OwnerResult","TxReceipt","BalanceReturn","InterfaceId","TransactionHistory","TransferNotification","approveDip721","balanceOfDip721","getAllMetadataForUser","getMaxLimitDip721","getMetadataDip721","getMetadataForUserDip721","getTokenIdsForUserDip721","logoDip721","mintDip721","nameDip721","ownerOfDip721","safeTransferFromDip721","supportedInterfacesDip721","symbolDip721","totalSupplyDip721","transferFromDip721","DIP721_LEGACY","DIP721_LEGACY_MINT","DIP721_LEGACY_BURN","DIP721_LEGACY_APPROVAL","Dip721LegacyToken","part","Subaccount","Account","Timestamp","GenericError","TemporarilyUnavailable","BadBurn","min_burn_amount","Duplicate","CreatedInFuture","ledger_time","TooOld","AllowanceArgs","ApproveArgs","expected_allowance","expires_at","ApproveError","AllowanceChanged","current_allowance","Expired","TransferFromArgs","spender_subaccount","TransferFromError","InsufficientAllowance","allowance","icrc1_balance_of","icrc1_decimals","icrc1_fee","icrc1_metadata","icrc1_minting_account","icrc1_name","icrc1_supported_standards","icrc1_symbol","icrc1_total_supply","icrc1_transfer","icrc2_allowance","icrc2_approve","icrc2_transfer_from","ICRC1","ICRC2","Icrc1Token","logoMetadata","expectedAllowance","expiresAt","spenderSubaccount","TxError","ErrorOperationStyle","LedgerTrap","ErrorTo","BlockUsed","AmountTooSmall","getMetadata","historySize","DIP20","Dip20Token","TokenManager","_tokens","accountTypes","intersect","setB","Ed25519KeyIdentity","_privateKey","_publicKey","generate","tweetnacl","fromParsedJson","publicKeyDer","privateKeyRaw","fromKeyPair","getKeyPair","transport","registerListener","incoming","send","outgoing","messageListener","jsonrpc","getWindow","receive","base64urlToBase64","outerWidth","outerHeight","toolbar","menubar","resizable","opener","readStateResponses","delegatedRequests","requestIdFromReadStateOptions","permission","getCrypto","randomUUID","appMetaData","identities","derEncodedPublicKey","ledger","subaccounts","walletChallenge","networks","chainId","submitResponse","contentMap","canisterCallSignature","network","readStateResponse","cowsay","tokenAmountFromString","decimalsStr","padEnd","App","_permission$identitie3","_permission$identitie4","setPermission","setAmount","recipient","setRecipient","setMessage","_jsx","alignItems","justifyContent","_jsxs","placeholder","onChange","_tokenManager$transfe","_permission$identitie","_permission$identitie2","tokenManager","txId","requestAnimationFrame","alert","onPerfEntry","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","getElementById","React","reportWebVitals"],"sourceRoot":""}