(function (root, factory) {(typeof module === 'object' && module.exports) ? module.exports = factory() : root.Multiformats = factory()}(typeof self !== 'undefined' ? self : this, function () { "use strict";var Multiformats=(()=>{var R=Object.defineProperty;var he=Object.getOwnPropertyDescriptor;var pe=Object.getOwnPropertyNames;var ue=Object.prototype.hasOwnProperty;var N=(r,e)=>{for(var t in e)R(r,t,{get:e[t],enumerable:!0})},le=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of pe(e))!ue.call(r,o)&&o!==t&&R(r,o,{get:()=>e[o],enumerable:!(n=he(e,o))||n.enumerable});return r};var be=r=>le(R({},"__esModule",{value:!0}),r);var Ze={};N(Ze,{CID:()=>F,bytes:()=>P,digest:()=>T,hasher:()=>_,varint:()=>L});var P={};N(P,{coerce:()=>S,empty:()=>ee,equals:()=>J,fromHex:()=>xe,fromString:()=>me,isBinary:()=>ge,toHex:()=>we,toString:()=>ye});var ee=new Uint8Array(0);function we(r){return r.reduce((e,t)=>e+t.toString(16).padStart(2,"0"),"")}function xe(r){let e=r.match(/../g);return e!=null?new Uint8Array(e.map(t=>parseInt(t,16))):ee}function J(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),n=0;n>>0,p=new Uint8Array(w);u!==b;){for(var x=a[u],v=0,l=w-1;(x!==0||v>>0,p[l]=x%c>>>0,x=x/c>>>0;if(x!==0)throw new Error("Non-zero carry");E=v,u++}for(var m=w-E;m!==w&&p[m]===0;)m++;for(var k=d.repeat(f);m>>0,w=new Uint8Array(b);a[f];){var p=t[a.charCodeAt(f)];if(p===255)return;for(var x=0,v=b-1;(p!==0||x>>0,w[v]=p%256>>>0,p=p/256>>>0;if(p!==0)throw new Error("Non-zero carry");u=x,f++}if(a[f]!==" "){for(var l=b-u;l!==b&&w[l]===0;)l++;for(var m=new Uint8Array(E+(b-l)),k=E;l!==b;)m[k++]=w[l++];return m}}}function fe(a){var f=$(a);if(f)return f;throw new Error(`Non-${e} character`)}return{encode:z,decodeUnsafe:$,decode:fe}}var Ee=ve,Se=Ee,te=Se;var j=class{name;prefix;baseEncode;constructor(e,t,n){this.name=e,this.prefix=t,this.baseEncode=n}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}},Q=class{name;prefix;baseDecode;prefixCodePoint;constructor(e,t,n){if(this.name=e,this.prefix=t,t.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=t.codePointAt(0),this.baseDecode=n}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return re(this,e)}},G=class{decoders;constructor(e){this.decoders=e}or(e){return re(this,e)}decode(e){let t=e[0],n=this.decoders[t];if(n!=null)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}};function re(r,e){return new G({...r.decoders??{[r.prefix]:r},...e.decoders??{[e.prefix]:e}})}var X=class{name;prefix;baseEncode;baseDecode;encoder;decoder;constructor(e,t,n,o){this.name=e,this.prefix=t,this.baseEncode=n,this.baseDecode=o,this.encoder=new j(e,t,n),this.decoder=new Q(e,t,o)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}};function ne({name:r,prefix:e,encode:t,decode:n}){return new X(r,e,t,n)}function K({name:r,prefix:e,alphabet:t}){let{encode:n,decode:o}=te(t,r);return ne({prefix:e,name:r,encode:n,decode:i=>S(o(i))})}function Ae(r,e,t,n){let o={};for(let h=0;h=8&&(c-=8,s[U++]=255&d>>c)}if(c>=t||255&d<<8-c)throw new SyntaxError("Unexpected end of data");return s}function Ce(r,e,t){let n=e[e.length-1]==="=",o=(1<t;)s-=t,i+=e[o&c>>s];if(s!==0&&(i+=e[o&c<D,create:()=>M,decode:()=>Z,equals:()=>Y});var L={};N(L,{decode:()=>I,encodeTo:()=>A,encodingLength:()=>C});var De=se,oe=128,Ue=127,ze=~Ue,Ie=Math.pow(2,31);function se(r,e,t){e=e||[],t=t||0;for(var n=t;r>=Ie;)e[t++]=r&255|oe,r/=128;for(;r&ze;)e[t++]=r&255|oe,r>>>=7;return e[t]=r|0,se.bytes=t-n+1,e}var Me=W,Ne=128,ie=127;function W(r,n){var t=0,n=n||0,o=0,i=n,s,c=r.length;do{if(i>=c)throw W.bytes=0,new RangeError("Could not decode varint");s=r[i++],t+=o<28?(s&ie)<=Ne);return W.bytes=i-n,t}var Oe=Math.pow(2,7),Ve=Math.pow(2,14),Le=Math.pow(2,21),Te=Math.pow(2,28),Be=Math.pow(2,35),$e=Math.pow(2,42),ke=Math.pow(2,49),Fe=Math.pow(2,56),qe=Math.pow(2,63),Re=function(r){return r{let[z,$]=I(e.subarray(t));return t+=$,z},o=n(),i=B;if(o===18?(o=0,t=0):i=n(),o!==0&&o!==1)throw new RangeError(`Invalid CID version ${o}`);let s=t,c=n(),d=n(),U=t+d,h=U-s;return{version:o,codec:i,multihashCode:c,digestSize:d,multihashSize:h,size:U}}static parse(e,t){let[n,o]=je(e,t),i=r.decode(o);if(i.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return H(i).set(n,e),i}};function je(r,e){switch(r[0]){case"Q":{let t=e??y;return[y.prefix,t.decode(`${y.prefix}${r}`)]}case y.prefix:{let t=e??y;return[y.prefix,t.decode(r)]}case O.prefix:{let t=e??O;return[O.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}}function Qe(r,e,t){let{prefix:n}=t;if(n!==y.prefix)throw Error(`Cannot string encode V0 in ${t.name} encoding`);let o=e.get(n);if(o==null){let i=t.encode(r).slice(1);return e.set(n,i),i}else return o}function Ge(r,e,t){let{prefix:n}=t,o=e.get(n);if(o==null){let i=t.encode(r);return e.set(n,i),i}else return o}var B=112,Xe=18;function de(r,e,t){let n=C(r),o=n+C(e),i=new Uint8Array(o+t.byteLength);return A(r,i,0),A(e,i,n),i.set(t,o),i}var Ke=Symbol.for("@ipld/js-cid/CID");var _={};N(_,{Hasher:()=>q,from:()=>We});function We({name:r,code:e,encode:t}){return new q(r,e,t)}var q=class{name;code;encode;constructor(e,t,n){this.name=e,this.code=t,this.encode=n}digest(e){if(e instanceof Uint8Array){let t=this.encode(e);return t instanceof Uint8Array?M(this.code,t):t.then(n=>M(this.code,n))}else throw Error("Unknown type, must be binary type")}};return be(Ze);})(); return Multiformats}));