gun-eth 1.4.22 → 1.4.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,2 @@
1
+ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("gun"),require("gun/sea.js"),require("@noble/hashes/sha3"),require("@noble/curves/secp256k1"),require("../node_modules/ethers/lib.esm/crypto/crypto.js"),require("@noble/hashes/ripemd160"),require("aes-js"),require("@noble/hashes/scrypt"),require("@adraffy/ens-normalize"),require("../node_modules/ethers/lib.esm/utils/base64.js"),require("../node_modules/ethers/lib.esm/utils/geturl.js")):"function"==typeof define&&define.amd?define(["exports","gun","gun/sea.js","@noble/hashes/sha3","@noble/curves/secp256k1","../node_modules/ethers/lib.esm/crypto/crypto","@noble/hashes/ripemd160","aes-js","@noble/hashes/scrypt","@adraffy/ens-normalize","../node_modules/ethers/lib.esm/utils/base64","../node_modules/ethers/lib.esm/utils/geturl"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).GunEth={},t.Gun,t.SEA,t.sha3,t.secp256k1,t.crypto_js,t.ripemd160$1,t.aesJs,t.scrypt$1,t.ensNormalize$1,t.base64_js,t.geturl_js)}(this,(function(t,e,n,r,s,i,a,o,c,l,u,h){"use strict";var d="undefined"!=typeof document?document.currentScript:null;const p="6.13.4";function f(t,e,n){const r=e.split("|").map((t=>t.trim()));for(let n=0;n<r.length;n++)switch(e){case"any":return;case"bigint":case"boolean":case"number":case"string":if(typeof t===e)return}const s=new Error(`invalid value for type ${e}`);throw s.code="INVALID_ARGUMENT",s.argument=`value.${n}`,s.value=t,s}async function g(t){const e=Object.keys(t);return(await Promise.all(e.map((e=>Promise.resolve(t[e]))))).reduce(((t,n,r)=>(t[e[r]]=n,t)),{})}function y(t,e,n){for(let r in e){let s=e[r];const i=n?n[r]:null;i&&f(s,i,r),Object.defineProperty(t,r,{enumerable:!0,value:s,writable:!1})}}function m(t){if(null==t)return"null";if(Array.isArray(t))return"[ "+t.map(m).join(", ")+" ]";if(t instanceof Uint8Array){const e="0123456789abcdef";let n="0x";for(let r=0;r<t.length;r++)n+=e[t[r]>>4],n+=e[15&t[r]];return n}if("object"==typeof t&&"function"==typeof t.toJSON)return m(t.toJSON());switch(typeof t){case"boolean":case"symbol":case"number":return t.toString();case"bigint":return BigInt(t).toString();case"string":return JSON.stringify(t);case"object":{const e=Object.keys(t);return e.sort(),"{ "+e.map((e=>`${m(e)}: ${m(t[e])}`)).join(", ")+" }"}}return"[ COULD NOT SERIALIZE ]"}function b(t,e){return t&&t.code===e}function w(t){return b(t,"CALL_EXCEPTION")}function v(t,e,n){let r,s=t;{const r=[];if(n){if("message"in n||"code"in n||"name"in n)throw new Error(`value will overwrite populated values: ${m(n)}`);for(const t in n){if("shortMessage"===t)continue;const e=n[t];r.push(t+"="+m(e))}}r.push(`code=${e}`),r.push(`version=${p}`),r.length&&(t+=" ("+r.join(", ")+")")}switch(e){case"INVALID_ARGUMENT":r=new TypeError(t);break;case"NUMERIC_FAULT":case"BUFFER_OVERRUN":r=new RangeError(t);break;default:r=new Error(t)}return y(r,{code:e}),n&&Object.assign(r,n),null==r.shortMessage&&y(r,{shortMessage:s}),r}function E(t,e,n,r){if(!t)throw v(e,n,r)}function N(t,e,n,r){E(t,e,"INVALID_ARGUMENT",{argument:n,value:r})}function P(t,e,n){null==n&&(n=""),n&&(n=": "+n),E(t>=e,"missing arguemnt"+n,"MISSING_ARGUMENT",{count:t,expectedCount:e}),E(t<=e,"too many arguments"+n,"UNEXPECTED_ARGUMENT",{count:t,expectedCount:e})}const k=["NFD","NFC","NFKD","NFKC"].reduce(((t,e)=>{try{if("test"!=="test".normalize(e))throw new Error("bad");if("NFD"===e){const t=String.fromCharCode(233).normalize("NFD");if(t!==String.fromCharCode(101,769))throw new Error("broken")}t.push(e)}catch(t){}return t}),[]);function T(t){E(k.indexOf(t)>=0,"platform missing String.prototype.normalize","UNSUPPORTED_OPERATION",{operation:"String.prototype.normalize",info:{form:t}})}function R(t,e,n){if(null==n&&(n=""),t!==e){let t=n,e="new";n&&(t+=".",e+=" "+n),E(!1,`private constructor; use ${t}from* methods`,"UNSUPPORTED_OPERATION",{operation:e})}}function A(t,e,n){if(t instanceof Uint8Array)return n?new Uint8Array(t):t;if("string"==typeof t&&t.match(/^0x(?:[0-9a-f][0-9a-f])*$/i)){const e=new Uint8Array((t.length-2)/2);let n=2;for(let r=0;r<e.length;r++)e[r]=parseInt(t.substring(n,n+2),16),n+=2;return e}N(!1,"invalid BytesLike value",e||"value",t)}function O(t,e){return A(t,e,!1)}function I(t,e){return A(t,e,!0)}function S(t,e){return!("string"!=typeof t||!t.match(/^0x[0-9A-Fa-f]*$/))&&(("number"!=typeof e||t.length===2+2*e)&&(!0!==e||t.length%2==0))}function x(t){return S(t,!0)||t instanceof Uint8Array}const C="0123456789abcdef";function _(t){const e=O(t);let n="0x";for(let t=0;t<e.length;t++){const r=e[t];n+=C[(240&r)>>4]+C[15&r]}return n}function U(t){return"0x"+t.map((t=>_(t).substring(2))).join("")}function F(t){return S(t,!0)?(t.length-2)/2:O(t).length}function L(t,e,n){const r=O(t);return null!=n&&n>r.length&&E(!1,"cannot slice beyond data bounds","BUFFER_OVERRUN",{buffer:r,length:r.length,offset:n}),_(r.slice(null==e?0:e,null==n?r.length:n))}function D(t,e,n){const r=O(t);E(e>=r.length,"padding exceeds data length","BUFFER_OVERRUN",{buffer:new Uint8Array(r),length:e,offset:e+1});const s=new Uint8Array(e);return s.fill(0),n?s.set(r,e-r.length):s.set(r,0),_(s)}function B(t,e){return D(t,e,!0)}const G=BigInt(0),$=BigInt(1),M=9007199254740991;function j(t,e){let n=H(t,"value");const r=BigInt(q(e,"width")),s=$<<r-$;if(n<G){n=-n,E(n<=s,"too low","NUMERIC_FAULT",{operation:"toTwos",fault:"overflow",value:t});return(~n&($<<r)-$)+$}return E(n<s,"too high","NUMERIC_FAULT",{operation:"toTwos",fault:"overflow",value:t}),n}function K(t,e){const n=V(t,"value"),r=BigInt(q(e,"bits"));return n&($<<r)-$}function H(t,e){switch(typeof t){case"bigint":return t;case"number":return N(Number.isInteger(t),"underflow",e||"value",t),N(t>=-M&&t<=M,"overflow",e||"value",t),BigInt(t);case"string":try{if(""===t)throw new Error("empty string");return"-"===t[0]&&"-"!==t[1]?-BigInt(t.substring(1)):BigInt(t)}catch(n){N(!1,`invalid BigNumberish string: ${n.message}`,e||"value",t)}}N(!1,"invalid BigNumberish value",e||"value",t)}function V(t,e){const n=H(t,e);return E(n>=G,"unsigned value cannot be negative","NUMERIC_FAULT",{fault:"overflow",operation:"getUint",value:t}),n}const z="0123456789abcdef";function J(t){if(t instanceof Uint8Array){let e="0x0";for(const n of t)e+=z[n>>4],e+=z[15&n];return BigInt(e)}return H(t)}function q(t,e){switch(typeof t){case"bigint":return N(t>=-M&&t<=M,"overflow",e||"value",t),Number(t);case"number":return N(Number.isInteger(t),"underflow",e||"value",t),N(t>=-M&&t<=M,"overflow",e||"value",t),t;case"string":try{if(""===t)throw new Error("empty string");return q(BigInt(t),e)}catch(n){N(!1,`invalid numeric string: ${n.message}`,e||"value",t)}}N(!1,"invalid numeric value",e||"value",t)}function W(t,e){let n=V(t,"value").toString(16);if(null==e)n.length%2&&(n="0"+n);else{const r=q(e,"width");for(E(2*r>=n.length,`value exceeds width (${r} bytes)`,"NUMERIC_FAULT",{operation:"toBeHex",fault:"overflow",value:t});n.length<2*r;)n="0"+n}return"0x"+n}function Y(t){const e=V(t,"value");if(e===G)return new Uint8Array([]);let n=e.toString(16);n.length%2&&(n="0"+n);const r=new Uint8Array(n.length/2);for(let t=0;t<r.length;t++){const e=2*t;r[t]=parseInt(n.substring(e,e+2),16)}return r}function X(t){let e=_(x(t)?t:Y(t)).substring(2);for(;e.startsWith("0");)e=e.substring(1);return""===e&&(e="0"),"0x"+e}const Z="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";let Q=null;function tt(t){if(null==Q){Q={};for(let t=0;t<58;t++)Q[Z[t]]=BigInt(t)}const e=Q[t];return N(null!=e,"invalid base58 value","letter",t),e}const et=BigInt(0),nt=BigInt(58);function rt(t){const e=O(t);let n=J(e),r="";for(;n;)r=Z[Number(n%nt)]+r,n/=nt;for(let t=0;t<e.length&&!e[t];t++)r=Z[0]+r;return r}class st{filter;emitter;#t;constructor(t,e,n){this.#t=e,y(this,{emitter:t,filter:n})}async removeListener(){null!=this.#t&&await this.emitter.off(this.filter,this.#t)}}function it(t,e,n,r,s){if("BAD_PREFIX"===t||"UNEXPECTED_CONTINUE"===t){let t=0;for(let r=e+1;r<n.length&&n[r]>>6==2;r++)t++;return t}return"OVERRUN"===t?n.length-e-1:0}const at=Object.freeze({error:function(t,e,n,r,s){N(!1,`invalid codepoint at offset ${e}; ${t}`,"bytes",n)},ignore:it,replace:function(t,e,n,r,s){return"OVERLONG"===t?(N("number"==typeof s,"invalid bad code point for replacement","badCodepoint",s),r.push(s),0):(r.push(65533),it(t,e,n))}});function ot(t,e){N("string"==typeof t,"invalid string value","str",t),null!=e&&(T(e),t=t.normalize(e));let n=[];for(let e=0;e<t.length;e++){const r=t.charCodeAt(e);if(r<128)n.push(r);else if(r<2048)n.push(r>>6|192),n.push(63&r|128);else if(55296==(64512&r)){e++;const s=t.charCodeAt(e);N(e<t.length&&56320==(64512&s),"invalid surrogate pair","str",t);const i=65536+((1023&r)<<10)+(1023&s);n.push(i>>18|240),n.push(i>>12&63|128),n.push(i>>6&63|128),n.push(63&i|128)}else n.push(r>>12|224),n.push(r>>6&63|128),n.push(63&r|128)}return new Uint8Array(n)}function ct(t,e){return n=function(t,e){null==e&&(e=at.error);const n=O(t,"bytes"),r=[];let s=0;for(;s<n.length;){const t=n[s++];if(!(t>>7)){r.push(t);continue}let i=null,a=null;if(192==(224&t))i=1,a=127;else if(224==(240&t))i=2,a=2047;else{if(240!=(248&t)){s+=e(128==(192&t)?"UNEXPECTED_CONTINUE":"BAD_PREFIX",s-1,n,r);continue}i=3,a=65535}if(s-1+i>=n.length){s+=e("OVERRUN",s-1,n,r);continue}let o=t&(1<<8-i-1)-1;for(let t=0;t<i;t++){let t=n[s];if(128!=(192&t)){s+=e("MISSING_CONTINUE",s,n,r),o=null;break}o=o<<6|63&t,s++}null!==o&&(o>1114111?s+=e("OUT_OF_RANGE",s-1-i,n,r,o):o>=55296&&o<=57343?s+=e("UTF16_SURROGATE",s-1-i,n,r,o):o<=a?s+=e("OVERLONG",s-1-i,n,r,o):r.push(o))}return r}(t,e),n.map((t=>t<=65535?String.fromCharCode(t):(t-=65536,String.fromCharCode(55296+(t>>10&1023),56320+(1023&t))))).join("");var n}let lt=h.createGetUrl();const ut=new RegExp("^data:([^;:]*)?(;base64)?,(.*)$","i"),ht=new RegExp("^ipfs://(ipfs/)?(.*)$","i");let dt=!1;async function pt(t,e){try{const e=t.match(ut);if(!e)throw new Error("invalid data");return new vt(200,"OK",{"content-type":e[1]||"text/plain"},e[2]?u.decodeBase64(e[3]):ot(e[3].replace(/%([0-9a-f][0-9a-f])/gi,((t,e)=>String.fromCharCode(parseInt(e,16))))))}catch(e){return new vt(599,"BAD REQUEST (invalid data: URI)",{},null,new wt(t))}}function ft(t){return async function(e,n){try{const n=e.match(ht);if(!n)throw new Error("invalid link");return new wt(`${t}${n[2]}`)}catch(t){return new vt(599,"BAD REQUEST (invalid IPFS URI)",{},null,new wt(e))}}}const gt={data:pt,ipfs:ft("https://gateway.ipfs.io/ipfs/")},yt=new WeakMap;class mt{#e;#n;constructor(t){this.#e=[],this.#n=!1,yt.set(t,(()=>{if(!this.#n){this.#n=!0;for(const t of this.#e)setTimeout((()=>{t()}),0);this.#e=[]}}))}addListener(t){E(!this.#n,"singal already cancelled","UNSUPPORTED_OPERATION",{operation:"fetchCancelSignal.addCancelListener"}),this.#e.push(t)}get cancelled(){return this.#n}checkSignal(){E(!this.cancelled,"cancelled","CANCELLED",{})}}function bt(t){if(null==t)throw new Error("missing signal; should not happen");return t.checkSignal(),t}class wt{#r;#s;#i;#a;#o;#c;#l;#u;#h;#d;#p;#f;#g;#y;#m;get url(){return this.#c}set url(t){this.#c=String(t)}get body(){return null==this.#l?null:new Uint8Array(this.#l)}set body(t){if(null==t)this.#l=void 0,this.#u=void 0;else if("string"==typeof t)this.#l=ot(t),this.#u="text/plain";else if(t instanceof Uint8Array)this.#l=t,this.#u="application/octet-stream";else{if("object"!=typeof t)throw new Error("invalid body");this.#l=ot(JSON.stringify(t)),this.#u="application/json"}}hasBody(){return null!=this.#l}get method(){return this.#a?this.#a:this.hasBody()?"POST":"GET"}set method(t){null==t&&(t=""),this.#a=String(t).toUpperCase()}get headers(){const t=Object.assign({},this.#i);return this.#h&&(t.authorization=`Basic ${u.encodeBase64(ot(this.#h))}`),this.allowGzip&&(t["accept-encoding"]="gzip"),null==t["content-type"]&&this.#u&&(t["content-type"]=this.#u),this.body&&(t["content-length"]=String(this.body.length)),t}getHeader(t){return this.headers[t.toLowerCase()]}setHeader(t,e){this.#i[String(t).toLowerCase()]=String(e)}clearHeaders(){this.#i={}}[Symbol.iterator](){const t=this.headers,e=Object.keys(t);let n=0;return{next:()=>{if(n<e.length){const r=e[n++];return{value:[r,t[r]],done:!1}}return{value:void 0,done:!0}}}}get credentials(){return this.#h||null}setCredentials(t,e){N(!t.match(/:/),"invalid basic authentication username","username","[REDACTED]"),this.#h=`${t}:${e}`}get allowGzip(){return this.#s}set allowGzip(t){this.#s=!!t}get allowInsecureAuthentication(){return!!this.#r}set allowInsecureAuthentication(t){this.#r=!!t}get timeout(){return this.#o}set timeout(t){N(t>=0,"timeout must be non-zero","timeout",t),this.#o=t}get preflightFunc(){return this.#d||null}set preflightFunc(t){this.#d=t}get processFunc(){return this.#p||null}set processFunc(t){this.#p=t}get retryFunc(){return this.#f||null}set retryFunc(t){this.#f=t}get getUrlFunc(){return this.#m||lt}set getUrlFunc(t){this.#m=t}constructor(t){this.#c=String(t),this.#r=!1,this.#s=!0,this.#i={},this.#a="",this.#o=3e5,this.#y={slotInterval:250,maxAttempts:12},this.#m=null}toString(){return`<FetchRequest method=${JSON.stringify(this.method)} url=${JSON.stringify(this.url)} headers=${JSON.stringify(this.headers)} body=${this.#l?_(this.#l):"null"}>`}setThrottleParams(t){null!=t.slotInterval&&(this.#y.slotInterval=t.slotInterval),null!=t.maxAttempts&&(this.#y.maxAttempts=t.maxAttempts)}async#b(t,e,n,r,s){if(t>=this.#y.maxAttempts)return s.makeServerError("exceeded maximum retry limit");E(Et()<=e,"timeout","TIMEOUT",{operation:"request.send",reason:"timeout",request:r}),n>0&&await function(t){return new Promise((e=>setTimeout(e,t)))}(n);let i=this.clone();const a=(i.url.split(":")[0]||"").toLowerCase();if(a in gt){const t=await gt[a](i.url,bt(r.#g));if(t instanceof vt){let e=t;if(this.processFunc){bt(r.#g);try{e=await this.processFunc(i,e)}catch(t){null!=t.throttle&&"number"==typeof t.stall||e.makeServerError("error in post-processing function",t).assertOk()}}return e}i=t}this.preflightFunc&&(i=await this.preflightFunc(i));const o=await this.getUrlFunc(i,bt(r.#g));let c=new vt(o.statusCode,o.statusMessage,o.headers,o.body,r);if(301===c.statusCode||302===c.statusCode){try{const n=c.headers.location||"";return i.redirect(n).#b(t+1,e,0,r,c)}catch(t){}return c}if(429===c.statusCode&&(null==this.retryFunc||await this.retryFunc(i,c,t))){const n=c.headers["retry-after"];let s=this.#y.slotInterval*Math.trunc(Math.random()*Math.pow(2,t));return"string"==typeof n&&n.match(/^[1-9][0-9]*$/)&&(s=parseInt(n)),i.clone().#b(t+1,e,s,r,c)}if(this.processFunc){bt(r.#g);try{c=await this.processFunc(i,c)}catch(n){null!=n.throttle&&"number"==typeof n.stall||c.makeServerError("error in post-processing function",n).assertOk();let s=this.#y.slotInterval*Math.trunc(Math.random()*Math.pow(2,t));return n.stall>=0&&(s=n.stall),i.clone().#b(t+1,e,s,r,c)}}return c}send(){return E(null==this.#g,"request already sent","UNSUPPORTED_OPERATION",{operation:"fetchRequest.send"}),this.#g=new mt(this),this.#b(0,Et()+this.timeout,0,this,new vt(0,"",{},null,this))}cancel(){E(null!=this.#g,"request has not been sent","UNSUPPORTED_OPERATION",{operation:"fetchRequest.cancel"});const t=yt.get(this);if(!t)throw new Error("missing signal; should not happen");t()}redirect(t){const e=this.url.split(":")[0].toLowerCase(),n=t.split(":")[0].toLowerCase();E("GET"===this.method&&("https"!==e||"http"!==n)&&t.match(/^https?:/),"unsupported redirect","UNSUPPORTED_OPERATION",{operation:`redirect(${this.method} ${JSON.stringify(this.url)} => ${JSON.stringify(t)})`});const r=new wt(t);return r.method="GET",r.allowGzip=this.allowGzip,r.timeout=this.timeout,r.#i=Object.assign({},this.#i),this.#l&&(r.#l=new Uint8Array(this.#l)),r.#u=this.#u,r}clone(){const t=new wt(this.url);return t.#a=this.#a,this.#l&&(t.#l=this.#l),t.#u=this.#u,t.#i=Object.assign({},this.#i),t.#h=this.#h,this.allowGzip&&(t.allowGzip=!0),t.timeout=this.timeout,this.allowInsecureAuthentication&&(t.allowInsecureAuthentication=!0),t.#d=this.#d,t.#p=this.#p,t.#f=this.#f,t.#y=Object.assign({},this.#y),t.#m=this.#m,t}static lockConfig(){dt=!0}static getGateway(t){return gt[t.toLowerCase()]||null}static registerGateway(t,e){if("http"===(t=t.toLowerCase())||"https"===t)throw new Error(`cannot intercept ${t}; use registerGetUrl`);if(dt)throw new Error("gateways locked");gt[t]=e}static registerGetUrl(t){if(dt)throw new Error("gateways locked");lt=t}static createGetUrlFunc(t){return h.createGetUrl(t)}static createDataGateway(){return pt}static createIpfsGatewayFunc(t){return ft(t)}}class vt{#w;#v;#i;#l;#E;#N;toString(){return`<FetchResponse status=${this.statusCode} body=${this.#l?_(this.#l):"null"}>`}get statusCode(){return this.#w}get statusMessage(){return this.#v}get headers(){return Object.assign({},this.#i)}get body(){return null==this.#l?null:new Uint8Array(this.#l)}get bodyText(){try{return null==this.#l?"":ct(this.#l)}catch(t){E(!1,"response body is not valid UTF-8 data","UNSUPPORTED_OPERATION",{operation:"bodyText",info:{response:this}})}}get bodyJson(){try{return JSON.parse(this.bodyText)}catch(t){E(!1,"response body is not valid JSON","UNSUPPORTED_OPERATION",{operation:"bodyJson",info:{response:this}})}}[Symbol.iterator](){const t=this.headers,e=Object.keys(t);let n=0;return{next:()=>{if(n<e.length){const r=e[n++];return{value:[r,t[r]],done:!1}}return{value:void 0,done:!0}}}}constructor(t,e,n,r,s){this.#w=t,this.#v=e,this.#i=Object.keys(n).reduce(((t,e)=>(t[e.toLowerCase()]=String(n[e]),t)),{}),this.#l=null==r?null:new Uint8Array(r),this.#E=s||null,this.#N={message:""}}makeServerError(t,e){let n;n=t?`CLIENT ESCALATED SERVER ERROR (${this.statusCode} ${this.statusMessage}; ${t})`:`CLIENT ESCALATED SERVER ERROR (${t=`${this.statusCode} ${this.statusMessage}`})`;const r=new vt(599,n,this.headers,this.body,this.#E||void 0);return r.#N={message:t,error:e},r}throwThrottleError(t,e){null==e?e=-1:N(Number.isInteger(e)&&e>=0,"invalid stall timeout","stall",e);const n=new Error(t||"throttling requests");throw y(n,{stall:e,throttle:!0}),n}getHeader(t){return this.headers[t.toLowerCase()]}hasBody(){return null!=this.#l}get request(){return this.#E}ok(){return""===this.#N.message&&this.statusCode>=200&&this.statusCode<300}assertOk(){if(this.ok())return;let{message:t,error:e}=this.#N;""===t&&(t=`server response ${this.statusCode} ${this.statusMessage}`);let n=null;this.request&&(n=this.request.url);let r=null;try{this.#l&&(r=ct(this.#l))}catch(t){}E(!1,t,"SERVER_ERROR",{request:this.request||"unknown request",response:this,error:e,info:{requestUrl:n,responseBody:r,responseStatus:`${this.statusCode} ${this.statusMessage}`}})}}function Et(){return(new Date).getTime()}function Nt(t){let e=t.toString(16);for(;e.length<2;)e="0"+e;return"0x"+e}function Pt(t,e,n){let r=0;for(let s=0;s<n;s++)r=256*r+t[e+s];return r}function kt(t,e,n,r){const s=[];for(;n<e+1+r;){const i=Tt(t,n);s.push(i.result),E((n+=i.consumed)<=e+1+r,"child data too short","BUFFER_OVERRUN",{buffer:t,length:r,offset:e})}return{consumed:1+r,result:s}}function Tt(t,e){E(0!==t.length,"data too short","BUFFER_OVERRUN",{buffer:t,length:0,offset:1});const n=e=>{E(e<=t.length,"data short segment too short","BUFFER_OVERRUN",{buffer:t,length:t.length,offset:e})};if(t[e]>=248){const r=t[e]-247;n(e+1+r);const s=Pt(t,e+1,r);return n(e+1+r+s),kt(t,e,e+1+r,r+s)}if(t[e]>=192){const r=t[e]-192;return n(e+1+r),kt(t,e,e+1,r)}if(t[e]>=184){const r=t[e]-183;n(e+1+r);const s=Pt(t,e+1,r);n(e+1+r+s);return{consumed:1+r+s,result:_(t.slice(e+1+r,e+1+r+s))}}if(t[e]>=128){const r=t[e]-128;n(e+1+r);return{consumed:1+r,result:_(t.slice(e+1,e+1+r))}}return{consumed:1,result:Nt(t[e])}}function Rt(t){const e=O(t,"data"),n=Tt(e,0);return N(n.consumed===e.length,"unexpected junk after rlp payload","data",t),n.result}function At(t){const e=[];for(;t;)e.unshift(255&t),t>>=8;return e}function Ot(t){if(Array.isArray(t)){let e=[];if(t.forEach((function(t){e=e.concat(Ot(t))})),e.length<=55)return e.unshift(192+e.length),e;const n=At(e.length);return n.unshift(247+n.length),n.concat(e)}const e=Array.prototype.slice.call(O(t,"object"));if(1===e.length&&e[0]<=127)return e;if(e.length<=55)return e.unshift(128+e.length),e;const n=At(e.length);return n.unshift(183+n.length),n.concat(e)}const It="0123456789abcdef";function St(t){let e="0x";for(const n of Ot(t))e+=It[n>>4],e+=It[15&n];return e}function xt(t){const e=O(t,"randomBytes");e[6]=15&e[6]|64,e[8]=63&e[8]|128;const n=_(e);return[n.substring(2,10),n.substring(10,14),n.substring(14,18),n.substring(18,22),n.substring(22,34)].join("-")}const Ct=32,_t=new Uint8Array(Ct),Ut=["then"],Ft={},Lt=new WeakMap;function Dt(t){return Lt.get(t)}function Bt(t,e){Lt.set(t,e)}function Gt(t,e){const n=new Error(`deferred error during ABI decoding triggered accessing ${t}`);throw n.error=e,n}function $t(t,e,n){return t.indexOf(null)>=0?e.map(((t,e)=>t instanceof Mt?$t(Dt(t),t,n):t)):t.reduce(((t,r,s)=>{let i=e.getValue(r);return r in t||(n&&i instanceof Mt&&(i=$t(Dt(i),i,n)),t[r]=i),t}),{})}class Mt extends Array{#P;constructor(...t){const e=t[0];let n=t[1],r=(t[2]||[]).slice(),s=!0;e!==Ft&&(n=t,r=[],s=!1),super(n.length),n.forEach(((t,e)=>{this[e]=t}));const i=r.reduce(((t,e)=>("string"==typeof e&&t.set(e,(t.get(e)||0)+1),t)),new Map);if(Bt(this,Object.freeze(n.map(((t,e)=>{const n=r[e];return null!=n&&1===i.get(n)?n:null})))),this.#P=[],null==this.#P&&this.#P,!s)return;Object.freeze(this);const a=new Proxy(this,{get:(t,e,n)=>{if("string"==typeof e){if(e.match(/^[0-9]+$/)){const n=q(e,"%index");if(n<0||n>=this.length)throw new RangeError("out of result range");const r=t[n];return r instanceof Error&&Gt(`index ${n}`,r),r}if(Ut.indexOf(e)>=0)return Reflect.get(t,e,n);const r=t[e];if(r instanceof Function)return function(...e){return r.apply(this===n?t:this,e)};if(!(e in t))return t.getValue.apply(this===n?t:this,[e])}return Reflect.get(t,e,n)}});return Bt(a,Dt(this)),a}toArray(t){const e=[];return this.forEach(((n,r)=>{n instanceof Error&&Gt(`index ${r}`,n),t&&n instanceof Mt&&(n=n.toArray(t)),e.push(n)})),e}toObject(t){const e=Dt(this);return e.reduce(((n,r,s)=>(E(null!=r,`value at index ${s} unnamed`,"UNSUPPORTED_OPERATION",{operation:"toObject()"}),$t(e,this,t))),{})}slice(t,e){null==t&&(t=0),t<0&&(t+=this.length)<0&&(t=0),null==e&&(e=this.length),e<0&&(e+=this.length)<0&&(e=0),e>this.length&&(e=this.length);const n=Dt(this),r=[],s=[];for(let i=t;i<e;i++)r.push(this[i]),s.push(n[i]);return new Mt(Ft,r,s)}filter(t,e){const n=Dt(this),r=[],s=[];for(let i=0;i<this.length;i++){const a=this[i];a instanceof Error&&Gt(`index ${i}`,a),t.call(e,a,i,this)&&(r.push(a),s.push(n[i]))}return new Mt(Ft,r,s)}map(t,e){const n=[];for(let r=0;r<this.length;r++){const s=this[r];s instanceof Error&&Gt(`index ${r}`,s),n.push(t.call(e,s,r,this))}return n}getValue(t){const e=Dt(this).indexOf(t);if(-1===e)return;const n=this[e];return n instanceof Error&&Gt(`property ${JSON.stringify(t)}`,n.error),n}static fromItems(t,e){return new Mt(Ft,t,e)}}function jt(t){let e=Y(t);return E(e.length<=Ct,"value out-of-bounds","BUFFER_OVERRUN",{buffer:e,length:Ct,offset:e.length}),e.length!==Ct&&(e=I(U([_t.slice(e.length%Ct),e]))),e}class Kt{name;type;localName;dynamic;constructor(t,e,n,r){y(this,{name:t,type:e,localName:n,dynamic:r},{name:"string",type:"string",localName:"string",dynamic:"boolean"})}_throwError(t,e){N(!1,t,this.localName,e)}}class Ht{#k;#T;constructor(){this.#k=[],this.#T=0}get data(){return U(this.#k)}get length(){return this.#T}#R(t){return this.#k.push(t),this.#T+=t.length,t.length}appendWriter(t){return this.#R(I(t.data))}writeBytes(t){let e=I(t);const n=e.length%Ct;return n&&(e=I(U([e,_t.slice(n)]))),this.#R(e)}writeValue(t){return this.#R(jt(t))}writeUpdatableValue(){const t=this.#k.length;return this.#k.push(_t),this.#T+=Ct,e=>{this.#k[t]=jt(e)}}}class Vt{allowLoose;#k;#A;#O;#I;#S;constructor(t,e,n){y(this,{allowLoose:!!e}),this.#k=I(t),this.#O=0,this.#I=null,this.#S=null!=n?n:1024,this.#A=0}get data(){return _(this.#k)}get dataLength(){return this.#k.length}get consumed(){return this.#A}get bytes(){return new Uint8Array(this.#k)}#x(t){if(this.#I)return this.#I.#x(t);this.#O+=t,E(this.#S<1||this.#O<=this.#S*this.dataLength,`compressed ABI data exceeds inflation ratio of ${this.#S} ( see: https://github.com/ethers-io/ethers.js/issues/4537 )`,"BUFFER_OVERRUN",{buffer:I(this.#k),offset:this.#A,length:t,info:{bytesRead:this.#O,dataLength:this.dataLength}})}#C(t,e,n){let r=Math.ceil(e/Ct)*Ct;return this.#A+r>this.#k.length&&(this.allowLoose&&n&&this.#A+e<=this.#k.length?r=e:E(!1,"data out-of-bounds","BUFFER_OVERRUN",{buffer:I(this.#k),length:this.#k.length,offset:this.#A+r})),this.#k.slice(this.#A,this.#A+r)}subReader(t){const e=new Vt(this.#k.slice(this.#A+t),this.allowLoose,this.#S);return e.#I=this,e}readBytes(t,e){let n=this.#C(0,t,!!e);return this.#x(t),this.#A+=n.length,n.slice(0,t)}readValue(){return J(this.readBytes(Ct))}readIndex(){return q(J(this.readBytes(Ct)))}}let zt=!1;const Jt=function(t,e,n){return i.createHmac(t,e).update(n).digest()};let qt=Jt;function Wt(t,e,n){const r=O(e,"key"),s=O(n,"data");return _(qt(t,r,s))}Wt._=Jt,Wt.lock=function(){zt=!0},Wt.register=function(t){if(zt)throw new Error("computeHmac is locked");qt=t},Object.freeze(Wt);let Yt=!1;const Xt=function(t){return r.keccak_256(t)};let Zt=Xt;function Qt(t){const e=O(t,"data");return _(Zt(e))}Qt._=Xt,Qt.lock=function(){Yt=!0},Qt.register=function(t){if(Yt)throw new TypeError("keccak256 is locked");Zt=t},Object.freeze(Qt);let te=!1;const ee=function(t){return a.ripemd160(t)};let ne=ee;function re(t){const e=O(t,"data");return _(ne(e))}re._=ee,re.lock=function(){te=!0},re.register=function(t){if(te)throw new TypeError("ripemd160 is locked");ne=t},Object.freeze(re);let se=!1;const ie=function(t,e,n,r,s){return i.pbkdf2Sync(t,e,n,r,s)};let ae=ie;function oe(t,e,n,r,s){const i=O(t,"password"),a=O(e,"salt");return _(ae(i,a,n,r,s))}oe._=ie,oe.lock=function(){se=!0},oe.register=function(t){if(se)throw new Error("pbkdf2 is locked");ae=t},Object.freeze(oe);let ce=!1;const le=function(t){return new Uint8Array(i.randomBytes(t))};let ue=le;function he(t){return ue(t)}he._=le,he.lock=function(){ce=!0},he.register=function(t){if(ce)throw new Error("randomBytes is locked");ue=t},Object.freeze(he);let de=!1,pe=!1;const fe=async function(t,e,n,r,s,i,a){return await c.scryptAsync(t,e,{N:n,r:r,p:s,dkLen:i,onProgress:a})},ge=function(t,e,n,r,s,i){return c.scrypt(t,e,{N:n,r:r,p:s,dkLen:i})};let ye=fe,me=ge;async function be(t,e,n,r,s,i,a){const o=O(t,"passwd"),c=O(e,"salt");return _(await ye(o,c,n,r,s,i,a))}function we(t,e,n,r,s,i){const a=O(t,"passwd"),o=O(e,"salt");return _(me(a,o,n,r,s,i))}be._=fe,be.lock=function(){pe=!0},be.register=function(t){if(pe)throw new Error("scrypt is locked");ye=t},Object.freeze(be),we._=ge,we.lock=function(){de=!0},we.register=function(t){if(de)throw new Error("scryptSync is locked");me=t},Object.freeze(we);const ve=function(t){return i.createHash("sha256").update(t).digest()};let Ee=ve,Ne=!1;function Pe(t){const e=O(t,"data");return _(Ee(e))}Pe._=ve,Pe.lock=function(){Ne=!0},Pe.register=function(t){if(Ne)throw new Error("sha256 is locked");Ee=t},Object.freeze(Pe),Object.freeze(Pe);const ke="0x0000000000000000000000000000000000000000",Te="0x0000000000000000000000000000000000000000000000000000000000000000",Re=BigInt(0),Ae=BigInt(1),Oe=BigInt(2),Ie=BigInt(27),Se=BigInt(28),xe=BigInt(35),Ce={};function _e(t){return B(Y(t),32)}class Ue{#_;#U;#F;#L;get r(){return this.#_}set r(t){N(32===F(t),"invalid r","value",t),this.#_=_(t)}get s(){return this.#U}set s(t){N(32===F(t),"invalid s","value",t);const e=_(t);N(parseInt(e.substring(0,3))<8,"non-canonical s","value",e),this.#U=e}get v(){return this.#F}set v(t){const e=q(t,"value");N(27===e||28===e,"invalid v","v",t),this.#F=e}get networkV(){return this.#L}get legacyChainId(){const t=this.networkV;return null==t?null:Ue.getChainId(t)}get yParity(){return 27===this.v?0:1}get yParityAndS(){const t=O(this.s);return this.yParity&&(t[0]|=128),_(t)}get compactSerialized(){return U([this.r,this.yParityAndS])}get serialized(){return U([this.r,this.s,this.yParity?"0x1c":"0x1b"])}constructor(t,e,n,r){R(t,Ce,"Signature"),this.#_=e,this.#U=n,this.#F=r,this.#L=null}[Symbol.for("nodejs.util.inspect.custom")](){return`Signature { r: "${this.r}", s: "${this.s}", yParity: ${this.yParity}, networkV: ${this.networkV} }`}clone(){const t=new Ue(Ce,this.r,this.s,this.v);return this.networkV&&(t.#L=this.networkV),t}toJSON(){const t=this.networkV;return{_type:"signature",networkV:null!=t?t.toString():null,r:this.r,s:this.s,v:this.v}}static getChainId(t){const e=H(t,"v");return e==Ie||e==Se?Re:(N(e>=xe,"invalid EIP-155 v","v",t),(e-xe)/Oe)}static getChainIdV(t,e){return H(t)*Oe+BigInt(35+e-27)}static getNormalizedV(t){const e=H(t);return e===Re||e===Ie?27:e===Ae||e===Se?28:(N(e>=xe,"invalid v","v",t),e&Ae?27:28)}static from(t){function e(e,n){N(e,n,"signature",t)}if(null==t)return new Ue(Ce,Te,Te,27);if("string"==typeof t){const n=O(t,"signature");if(64===n.length){const t=_(n.slice(0,32)),e=n.slice(32,64),r=128&e[0]?28:27;return e[0]&=127,new Ue(Ce,t,_(e),r)}if(65===n.length){const t=_(n.slice(0,32)),r=n.slice(32,64);e(!(128&r[0]),"non-canonical s");const s=Ue.getNormalizedV(n[64]);return new Ue(Ce,t,_(r),s)}e(!1,"invalid raw signature length")}if(t instanceof Ue)return t.clone();const n=t.r;e(null!=n,"missing r");const r=_e(n),s=function(t,n){if(null!=t)return _e(t);if(null!=n){e(S(n,32),"invalid yParityAndS");const t=O(n);return t[0]&=127,_(t)}e(!1,"missing s")}(t.s,t.yParityAndS);e(!(128&O(s)[0]),"non-canonical s");const{networkV:i,v:a}=function(t,n,r){if(null!=t){const e=H(t);return{networkV:e>=xe?e:void 0,v:Ue.getNormalizedV(e)}}if(null!=n)return e(S(n,32),"invalid yParityAndS"),{v:128&O(n)[0]?28:27};if(null!=r){switch(q(r,"sig.yParity")){case 0:return{v:27};case 1:return{v:28}}e(!1,"invalid yParity")}e(!1,"missing v")}(t.v,t.yParityAndS,t.yParity),o=new Ue(Ce,r,s,a);return i&&(o.#L=i),e(null==t.yParity||q(t.yParity,"sig.yParity")===o.yParity,"yParity mismatch"),e(null==t.yParityAndS||t.yParityAndS===o.yParityAndS,"yParityAndS mismatch"),o}}class Fe{#D;constructor(t){N(32===F(t),"invalid private key","privateKey","[REDACTED]"),this.#D=_(t)}get privateKey(){return this.#D}get publicKey(){return Fe.computePublicKey(this.#D)}get compressedPublicKey(){return Fe.computePublicKey(this.#D,!0)}sign(t){N(32===F(t),"invalid digest length","digest",t);const e=s.secp256k1.sign(I(t),I(this.#D),{lowS:!0});return Ue.from({r:W(e.r,32),s:W(e.s,32),v:e.recovery?28:27})}computeSharedSecret(t){const e=Fe.computePublicKey(t);return _(s.secp256k1.getSharedSecret(I(this.#D),O(e),!1))}static computePublicKey(t,e){let n=O(t,"key");if(32===n.length){return _(s.secp256k1.getPublicKey(n,!!e))}if(64===n.length){const t=new Uint8Array(65);t[0]=4,t.set(n,1),n=t}return _(s.secp256k1.ProjectivePoint.fromHex(n).toRawBytes(e))}static recoverPublicKey(t,e){N(32===F(t),"invalid digest length","digest",t);const n=Ue.from(e);let r=s.secp256k1.Signature.fromCompact(I(U([n.r,n.s])));r=r.addRecoveryBit(n.yParity);const i=r.recoverPublicKey(I(t));return N(null!=i,"invalid signautre for digest","signature",e),"0x"+i.toHex(!1)}static addPoints(t,e,n){const r=s.secp256k1.ProjectivePoint.fromHex(Fe.computePublicKey(t).substring(2)),i=s.secp256k1.ProjectivePoint.fromHex(Fe.computePublicKey(e).substring(2));return"0x"+r.add(i).toHex(!!n)}}const Le=BigInt(0),De=BigInt(36);function Be(t){const e=(t=t.toLowerCase()).substring(2).split(""),n=new Uint8Array(40);for(let t=0;t<40;t++)n[t]=e[t].charCodeAt(0);const r=O(Qt(n));for(let t=0;t<40;t+=2)r[t>>1]>>4>=8&&(e[t]=e[t].toUpperCase()),(15&r[t>>1])>=8&&(e[t+1]=e[t+1].toUpperCase());return"0x"+e.join("")}const Ge={};for(let t=0;t<10;t++)Ge[String(t)]=String(t);for(let t=0;t<26;t++)Ge[String.fromCharCode(65+t)]=String(10+t);const $e=function(){const t={};for(let e=0;e<36;e++){t["0123456789abcdefghijklmnopqrstuvwxyz"[e]]=BigInt(e)}return t}();function Me(t){if(N("string"==typeof t,"invalid address","address",t),t.match(/^(0x)?[0-9a-fA-F]{40}$/)){t.startsWith("0x")||(t="0x"+t);const e=Be(t);return N(!t.match(/([A-F].*[a-f])|([a-f].*[A-F])/)||e===t,"bad address checksum","address",t),e}if(t.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)){N(t.substring(2,4)===function(t){let e=(t=(t=t.toUpperCase()).substring(4)+t.substring(0,2)+"00").split("").map((t=>Ge[t])).join("");for(;e.length>=15;){let t=e.substring(0,15);e=parseInt(t,10)%97+e.substring(t.length)}let n=String(98-parseInt(e,10)%97);for(;n.length<2;)n="0"+n;return n}(t),"bad icap checksum","address",t);let e=function(t){t=t.toLowerCase();let e=Le;for(let n=0;n<t.length;n++)e=e*De+$e[t[n]];return e}(t.substring(4)).toString(16);for(;e.length<40;)e="0"+e;return Be("0x"+e)}N(!1,"invalid address","address",t)}function je(t){return t&&"function"==typeof t.getAddress}async function Ke(t,e){const n=await e;return null!=n&&"0x0000000000000000000000000000000000000000"!==n||(E("string"!=typeof t,"unconfigured name","UNCONFIGURED_NAME",{value:t}),N(!1,"invalid AddressLike value; did not resolve to a value address","target",t)),Me(n)}function He(t,e){return"string"==typeof t?t.match(/^0x[0-9a-f]{40}$/i)?Me(t):(E(null!=e,"ENS resolution requires a provider","UNSUPPORTED_OPERATION",{operation:"resolveName"}),Ke(t,e.resolveName(t))):je(t)?Ke(t,t.getAddress()):t&&"function"==typeof t.then?Ke(t,t):void N(!1,"unsupported addressable value","target",t)}const Ve={};function ze(t,e){let n=!1;return e<0&&(n=!0,e*=-1),new We(Ve,`${n?"":"u"}int${e}`,t,{signed:n,width:e})}function Je(t,e){return new We(Ve,`bytes${e||""}`,t,{size:e})}const qe=Symbol.for("_ethers_typed");class We{type;value;#B;_typedSymbol;constructor(t,e,n,r){null==r&&(r=null),R(Ve,t,"Typed"),y(this,{_typedSymbol:qe,type:e,value:n}),this.#B=r,this.format()}format(){if("array"===this.type)throw new Error("");if("dynamicArray"===this.type)throw new Error("");return"tuple"===this.type?`tuple(${this.value.map((t=>t.format())).join(",")})`:this.type}defaultValue(){return 0}minValue(){return 0}maxValue(){return 0}isBigInt(){return!!this.type.match(/^u?int[0-9]+$/)}isData(){return this.type.startsWith("bytes")}isString(){return"string"===this.type}get tupleName(){if("tuple"!==this.type)throw TypeError("not a tuple");return this.#B}get arrayLength(){if("array"!==this.type)throw TypeError("not an array");return!0===this.#B?-1:!1===this.#B?this.value.length:null}static from(t,e){return new We(Ve,t,e)}static uint8(t){return ze(t,8)}static uint16(t){return ze(t,16)}static uint24(t){return ze(t,24)}static uint32(t){return ze(t,32)}static uint40(t){return ze(t,40)}static uint48(t){return ze(t,48)}static uint56(t){return ze(t,56)}static uint64(t){return ze(t,64)}static uint72(t){return ze(t,72)}static uint80(t){return ze(t,80)}static uint88(t){return ze(t,88)}static uint96(t){return ze(t,96)}static uint104(t){return ze(t,104)}static uint112(t){return ze(t,112)}static uint120(t){return ze(t,120)}static uint128(t){return ze(t,128)}static uint136(t){return ze(t,136)}static uint144(t){return ze(t,144)}static uint152(t){return ze(t,152)}static uint160(t){return ze(t,160)}static uint168(t){return ze(t,168)}static uint176(t){return ze(t,176)}static uint184(t){return ze(t,184)}static uint192(t){return ze(t,192)}static uint200(t){return ze(t,200)}static uint208(t){return ze(t,208)}static uint216(t){return ze(t,216)}static uint224(t){return ze(t,224)}static uint232(t){return ze(t,232)}static uint240(t){return ze(t,240)}static uint248(t){return ze(t,248)}static uint256(t){return ze(t,256)}static uint(t){return ze(t,256)}static int8(t){return ze(t,-8)}static int16(t){return ze(t,-16)}static int24(t){return ze(t,-24)}static int32(t){return ze(t,-32)}static int40(t){return ze(t,-40)}static int48(t){return ze(t,-48)}static int56(t){return ze(t,-56)}static int64(t){return ze(t,-64)}static int72(t){return ze(t,-72)}static int80(t){return ze(t,-80)}static int88(t){return ze(t,-88)}static int96(t){return ze(t,-96)}static int104(t){return ze(t,-104)}static int112(t){return ze(t,-112)}static int120(t){return ze(t,-120)}static int128(t){return ze(t,-128)}static int136(t){return ze(t,-136)}static int144(t){return ze(t,-144)}static int152(t){return ze(t,-152)}static int160(t){return ze(t,-160)}static int168(t){return ze(t,-168)}static int176(t){return ze(t,-176)}static int184(t){return ze(t,-184)}static int192(t){return ze(t,-192)}static int200(t){return ze(t,-200)}static int208(t){return ze(t,-208)}static int216(t){return ze(t,-216)}static int224(t){return ze(t,-224)}static int232(t){return ze(t,-232)}static int240(t){return ze(t,-240)}static int248(t){return ze(t,-248)}static int256(t){return ze(t,-256)}static int(t){return ze(t,-256)}static bytes1(t){return Je(t,1)}static bytes2(t){return Je(t,2)}static bytes3(t){return Je(t,3)}static bytes4(t){return Je(t,4)}static bytes5(t){return Je(t,5)}static bytes6(t){return Je(t,6)}static bytes7(t){return Je(t,7)}static bytes8(t){return Je(t,8)}static bytes9(t){return Je(t,9)}static bytes10(t){return Je(t,10)}static bytes11(t){return Je(t,11)}static bytes12(t){return Je(t,12)}static bytes13(t){return Je(t,13)}static bytes14(t){return Je(t,14)}static bytes15(t){return Je(t,15)}static bytes16(t){return Je(t,16)}static bytes17(t){return Je(t,17)}static bytes18(t){return Je(t,18)}static bytes19(t){return Je(t,19)}static bytes20(t){return Je(t,20)}static bytes21(t){return Je(t,21)}static bytes22(t){return Je(t,22)}static bytes23(t){return Je(t,23)}static bytes24(t){return Je(t,24)}static bytes25(t){return Je(t,25)}static bytes26(t){return Je(t,26)}static bytes27(t){return Je(t,27)}static bytes28(t){return Je(t,28)}static bytes29(t){return Je(t,29)}static bytes30(t){return Je(t,30)}static bytes31(t){return Je(t,31)}static bytes32(t){return Je(t,32)}static address(t){return new We(Ve,"address",t)}static bool(t){return new We(Ve,"bool",!!t)}static bytes(t){return new We(Ve,"bytes",t)}static string(t){return new We(Ve,"string",t)}static array(t,e){throw new Error("not implemented yet")}static tuple(t,e){throw new Error("not implemented yet")}static overrides(t){return new We(Ve,"overrides",Object.assign({},t))}static isTyped(t){return t&&"object"==typeof t&&"_typedSymbol"in t&&t._typedSymbol===qe}static dereference(t,e){if(We.isTyped(t)){if(t.type!==e)throw new Error(`invalid type: expecetd ${e}, got ${t.type}`);return t.value}return t}}class Ye extends Kt{constructor(t){super("address","address",t,!1)}defaultValue(){return"0x0000000000000000000000000000000000000000"}encode(t,e){let n=We.dereference(e,"string");try{n=Me(n)}catch(t){return this._throwError(t.message,e)}return t.writeValue(n)}decode(t){return Me(W(t.readValue(),20))}}class Xe extends Kt{coder;constructor(t){super(t.name,t.type,"_",t.dynamic),this.coder=t}defaultValue(){return this.coder.defaultValue()}encode(t,e){return this.coder.encode(t,e)}decode(t){return this.coder.decode(t)}}function Ze(t,e,n){let r=[];if(Array.isArray(n))r=n;else if(n&&"object"==typeof n){let t={};r=e.map((e=>{const r=e.localName;return E(r,"cannot encode object for signature with missing names","INVALID_ARGUMENT",{argument:"values",info:{coder:e},value:n}),E(!t[r],"cannot encode object for signature with duplicate names","INVALID_ARGUMENT",{argument:"values",info:{coder:e},value:n}),t[r]=!0,n[r]}))}else N(!1,"invalid tuple value","tuple",n);N(e.length===r.length,"types/value length mismatch","tuple",n);let s=new Ht,i=new Ht,a=[];e.forEach(((t,e)=>{let n=r[e];if(t.dynamic){let e=i.length;t.encode(i,n);let r=s.writeUpdatableValue();a.push((t=>{r(t+e)}))}else t.encode(s,n)})),a.forEach((t=>{t(s.length)}));let o=t.appendWriter(s);return o+=t.appendWriter(i),o}function Qe(t,e){let n=[],r=[],s=t.subReader(0);return e.forEach((e=>{let i=null;if(e.dynamic){let n=t.readIndex(),r=s.subReader(n);try{i=e.decode(r)}catch(t){if(b(t,"BUFFER_OVERRUN"))throw t;i=t,i.baseType=e.name,i.name=e.localName,i.type=e.type}}else try{i=e.decode(t)}catch(t){if(b(t,"BUFFER_OVERRUN"))throw t;i=t,i.baseType=e.name,i.name=e.localName,i.type=e.type}if(null==i)throw new Error("investigate");n.push(i),r.push(e.localName||null)})),Mt.fromItems(n,r)}class tn extends Kt{coder;length;constructor(t,e,n){super("array",t.type+"["+(e>=0?e:"")+"]",n,-1===e||t.dynamic),y(this,{coder:t,length:e})}defaultValue(){const t=this.coder.defaultValue(),e=[];for(let n=0;n<this.length;n++)e.push(t);return e}encode(t,e){const n=We.dereference(e,"array");Array.isArray(n)||this._throwError("expected array value",n);let r=this.length;-1===r&&(r=n.length,t.writeValue(n.length)),P(n.length,r,"coder array"+(this.localName?" "+this.localName:""));let s=[];for(let t=0;t<n.length;t++)s.push(this.coder);return Ze(t,s,n)}decode(t){let e=this.length;-1===e&&(e=t.readIndex(),E(e*Ct<=t.dataLength,"insufficient data length","BUFFER_OVERRUN",{buffer:t.bytes,offset:e*Ct,length:t.dataLength}));let n=[];for(let t=0;t<e;t++)n.push(new Xe(this.coder));return Qe(t,n)}}class en extends Kt{constructor(t){super("bool","bool",t,!1)}defaultValue(){return!1}encode(t,e){const n=We.dereference(e,"bool");return t.writeValue(n?1:0)}decode(t){return!!t.readValue()}}class nn extends Kt{constructor(t,e){super(t,t,e,!0)}defaultValue(){return"0x"}encode(t,e){e=I(e);let n=t.writeValue(e.length);return n+=t.writeBytes(e),n}decode(t){return t.readBytes(t.readIndex(),!0)}}class rn extends nn{constructor(t){super("bytes",t)}decode(t){return _(super.decode(t))}}class sn extends Kt{size;constructor(t,e){let n="bytes"+String(t);super(n,n,e,!1),y(this,{size:t},{size:"number"})}defaultValue(){return"0x0000000000000000000000000000000000000000000000000000000000000000".substring(0,2+2*this.size)}encode(t,e){let n=I(We.dereference(e,this.type));return n.length!==this.size&&this._throwError("incorrect data length",e),t.writeBytes(n)}decode(t){return _(t.readBytes(this.size))}}const an=new Uint8Array([]);class on extends Kt{constructor(t){super("null","",t,!1)}defaultValue(){return null}encode(t,e){return null!=e&&this._throwError("not null",e),t.writeBytes(an)}decode(t){return t.readBytes(0),null}}const cn=BigInt(0),ln=BigInt(1),un=BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");class hn extends Kt{size;signed;constructor(t,e,n){const r=(e?"int":"uint")+8*t;super(r,r,n,!1),y(this,{size:t,signed:e},{size:"number",signed:"boolean"})}defaultValue(){return 0}encode(t,e){let n=H(We.dereference(e,this.type)),r=K(un,256);if(this.signed){let t=K(r,8*this.size-1);(n>t||n<-(t+ln))&&this._throwError("value out-of-bounds",e),n=j(n,256)}else(n<cn||n>K(r,8*this.size))&&this._throwError("value out-of-bounds",e);return t.writeValue(n)}decode(t){let e=K(t.readValue(),8*this.size);return this.signed&&(e=function(t,e){const n=V(t,"value"),r=BigInt(q(e,"width"));if(E(n>>r===G,"overflow","NUMERIC_FAULT",{operation:"fromTwos",fault:"overflow",value:t}),n>>r-$)return-((~n&($<<r)-$)+$);return n}(e,8*this.size)),e}}class dn extends nn{constructor(t){super("string",t)}defaultValue(){return""}encode(t,e){return super.encode(t,ot(We.dereference(e,"string")))}decode(t){return ct(super.decode(t))}}class pn extends Kt{coders;constructor(t,e){let n=!1;const r=[];t.forEach((t=>{t.dynamic&&(n=!0),r.push(t.type)}));super("tuple","tuple("+r.join(",")+")",e,n),y(this,{coders:Object.freeze(t.slice())})}defaultValue(){const t=[];this.coders.forEach((e=>{t.push(e.defaultValue())}));const e=this.coders.reduce(((t,e)=>{const n=e.localName;return n&&(t[n]||(t[n]=0),t[n]++),t}),{});return this.coders.forEach(((n,r)=>{let s=n.localName;s&&1===e[s]&&("length"===s&&(s="_length"),null==t[s]&&(t[s]=t[r]))})),Object.freeze(t)}encode(t,e){const n=We.dereference(e,"tuple");return Ze(t,this.coders,n)}decode(t){return Qe(t,this.coders)}}function fn(t){return Qt(ot(t))}const gn=new Uint8Array(32);function yn(t){return N(0!==t.length,"invalid ENS name; empty component","comp",t),t}function mn(t){const e=ot(function(t){try{if(0===t.length)throw new Error("empty label");return l.ens_normalize(t)}catch(e){N(!1,`invalid ENS name (${e.message})`,"name",t)}}(t)),n=[];if(0===t.length)return n;let r=0;for(let t=0;t<e.length;t++){46===e[t]&&(n.push(yn(e.slice(r,t))),r=t+1)}return N(r<e.length,"invalid ENS name; empty component","name",t),n.push(yn(e.slice(r))),n}function bn(t){N("string"==typeof t,"invalid ENS name; not a string","name",t),N(t.length,"invalid ENS name (empty label)","name",t);let e=gn;const n=mn(t);for(;n.length;)e=Qt(U([e,Qt(n.pop())]));return _(e)}function wn(t,e){const n=null!=e?e:63;return N(n<=255,"DNS encoded label cannot exceed 255","length",n),_(U(mn(t).map((e=>{N(e.length<=n,`label ${JSON.stringify(t)} exceeds ${n} bytes`,"name",t);const r=new Uint8Array(e.length+1);return r.set(e,1),r[0]=r.length-1,r}))))+"00"}function vn(t,e){return{address:Me(t),storageKeys:e.map(((t,e)=>(N(S(t,32),"invalid slot",`storageKeys[${e}]`,t),t.toLowerCase())))}}function En(t){if(Array.isArray(t))return t.map(((e,n)=>Array.isArray(e)?(N(2===e.length,"invalid slot set",`value[${n}]`,e),vn(e[0],e[1])):(N(null!=e&&"object"==typeof e,"invalid address-slot set","value",t),vn(e.address,e.storageKeys))));N(null!=t&&"object"==typeof t,"invalid access list","value",t);const e=Object.keys(t).map((e=>{const n=t[e].reduce(((t,e)=>(t[e]=!0,t)),{});return vn(e,Object.keys(n).sort())}));return e.sort(((t,e)=>t.address.localeCompare(e.address))),e}function Nn(t){let e;return e="string"==typeof t?Fe.computePublicKey(t,!1):t.publicKey,Me(Qt("0x"+e.substring(4)).substring(26))}function Pn(t,e){return Nn(Fe.recoverPublicKey(t,e))}gn.fill(0);const kn=BigInt(0),Tn=BigInt(2),Rn=BigInt(27),An=BigInt(28),On=BigInt(35),In=BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),Sn=131072;function xn(t,e){let n=t.toString(16);for(;n.length<2;)n="0"+n;return n+=Pe(e).substring(4),"0x"+n}function Cn(t){return"0x"===t?null:Me(t)}function _n(t,e){try{return En(t)}catch(n){N(!1,n.message,e,t)}}function Un(t,e){return"0x"===t?0:q(t,e)}function Fn(t,e){if("0x"===t)return kn;const n=H(t,e);return N(n<=In,"value exceeds uint size",e,n),n}function Ln(t,e){const n=H(t,"value"),r=Y(n);return N(r.length<=32,"value too large",`tx.${e}`,n),r}function Dn(t){return En(t).map((t=>[t.address,t.storageKeys]))}function Bn(t,e){N(Array.isArray(t),`invalid ${e}`,"value",t);for(let e=0;e<t.length;e++)N(S(t[e],32),"invalid ${ param } hash",`value[${e}]`,t[e]);return t}function Gn(t,e){let n;try{if(n=Un(e[0],"yParity"),0!==n&&1!==n)throw new Error("bad yParity")}catch(t){N(!1,"invalid yParity","yParity",e[0])}const r=B(e[1],32),s=B(e[2],32),i=Ue.from({r:r,s:s,yParity:n});t.signature=i}class $n{#G;#$;#k;#M;#j;#K;#H;#V;#z;#J;#q;#W;#Y;#X;#Z;#Q;get type(){return this.#G}set type(t){switch(t){case null:this.#G=null;break;case 0:case"legacy":this.#G=0;break;case 1:case"berlin":case"eip-2930":this.#G=1;break;case 2:case"london":case"eip-1559":this.#G=2;break;case 3:case"cancun":case"eip-4844":this.#G=3;break;default:N(!1,"unsupported transaction type","type",t)}}get typeName(){switch(this.type){case 0:return"legacy";case 1:return"eip-2930";case 2:return"eip-1559";case 3:return"eip-4844"}return null}get to(){const t=this.#$;return null==t&&3===this.type?ke:t}set to(t){this.#$=null==t?null:Me(t)}get nonce(){return this.#M}set nonce(t){this.#M=q(t,"value")}get gasLimit(){return this.#j}set gasLimit(t){this.#j=H(t)}get gasPrice(){const t=this.#K;return null!=t||0!==this.type&&1!==this.type?t:kn}set gasPrice(t){this.#K=null==t?null:H(t,"gasPrice")}get maxPriorityFeePerGas(){const t=this.#H;return null==t?2===this.type||3===this.type?kn:null:t}set maxPriorityFeePerGas(t){this.#H=null==t?null:H(t,"maxPriorityFeePerGas")}get maxFeePerGas(){const t=this.#V;return null==t?2===this.type||3===this.type?kn:null:t}set maxFeePerGas(t){this.#V=null==t?null:H(t,"maxFeePerGas")}get data(){return this.#k}set data(t){this.#k=_(t)}get value(){return this.#z}set value(t){this.#z=H(t,"value")}get chainId(){return this.#J}set chainId(t){this.#J=H(t)}get signature(){return this.#q||null}set signature(t){this.#q=null==t?null:Ue.from(t)}get accessList(){const t=this.#W||null;return null==t?1===this.type||2===this.type||3===this.type?[]:null:t}set accessList(t){this.#W=null==t?null:En(t)}get maxFeePerBlobGas(){const t=this.#Y;return null==t&&3===this.type?kn:t}set maxFeePerBlobGas(t){this.#Y=null==t?null:H(t,"maxFeePerBlobGas")}get blobVersionedHashes(){let t=this.#X;return null==t&&3===this.type?[]:t}set blobVersionedHashes(t){if(null!=t){N(Array.isArray(t),"blobVersionedHashes must be an Array","value",t),t=t.slice();for(let e=0;e<t.length;e++)N(S(t[e],32),"invalid blobVersionedHash",`value[${e}]`,t[e])}this.#X=t}get blobs(){return null==this.#Q?null:this.#Q.map((t=>Object.assign({},t)))}set blobs(t){if(null==t)return void(this.#Q=null);const e=[],n=[];for(let r=0;r<t.length;r++){const s=t[r];if(x(s)){E(this.#Z,"adding a raw blob requires a KZG library","UNSUPPORTED_OPERATION",{operation:"set blobs()"});let t=O(s);if(N(t.length<=Sn,"blob is too large",`blobs[${r}]`,s),t.length!==Sn){const e=new Uint8Array(Sn);e.set(t),t=e}const i=this.#Z.blobToKzgCommitment(t),a=_(this.#Z.computeBlobKzgProof(t,i));e.push({data:_(t),commitment:_(i),proof:a}),n.push(xn(1,i))}else{const t=_(s.commitment);e.push({data:_(s.data),commitment:t,proof:_(s.proof)}),n.push(xn(1,t))}}this.#Q=e,this.#X=n}get kzg(){return this.#Z}set kzg(t){this.#Z=t}constructor(){this.#G=null,this.#$=null,this.#M=0,this.#j=kn,this.#K=null,this.#H=null,this.#V=null,this.#k="0x",this.#z=kn,this.#J=kn,this.#q=null,this.#W=null,this.#Y=null,this.#X=null,this.#Q=null,this.#Z=null}get hash(){return null==this.signature?null:Qt(this.#tt(!0,!1))}get unsignedHash(){return Qt(this.unsignedSerialized)}get from(){return null==this.signature?null:Pn(this.unsignedHash,this.signature)}get fromPublicKey(){return null==this.signature?null:Fe.recoverPublicKey(this.unsignedHash,this.signature)}isSigned(){return null!=this.signature}#tt(t,e){E(!t||null!=this.signature,"cannot serialize unsigned transaction; maybe you meant .unsignedSerialized","UNSUPPORTED_OPERATION",{operation:".serialized"});const n=t?this.signature:null;switch(this.inferType()){case 0:return function(t,e){const n=[Ln(t.nonce,"nonce"),Ln(t.gasPrice||0,"gasPrice"),Ln(t.gasLimit,"gasLimit"),t.to||"0x",Ln(t.value,"value"),t.data];let r=kn;if(t.chainId!=kn)r=H(t.chainId,"tx.chainId"),N(!e||null==e.networkV||e.legacyChainId===r,"tx.chainId/sig.v mismatch","sig",e);else if(t.signature){const e=t.signature.legacyChainId;null!=e&&(r=e)}if(!e)return r!==kn&&(n.push(Y(r)),n.push("0x"),n.push("0x")),St(n);let s=BigInt(27+e.yParity);return r!==kn?s=Ue.getChainIdV(r,e.v):BigInt(e.v)!==s&&N(!1,"tx.chainId/sig.v mismatch","sig",e),n.push(Y(s)),n.push(Y(e.r)),n.push(Y(e.s)),St(n)}(this,n);case 1:return function(t,e){const n=[Ln(t.chainId,"chainId"),Ln(t.nonce,"nonce"),Ln(t.gasPrice||0,"gasPrice"),Ln(t.gasLimit,"gasLimit"),t.to||"0x",Ln(t.value,"value"),t.data,Dn(t.accessList||[])];return e&&(n.push(Ln(e.yParity,"recoveryParam")),n.push(Y(e.r)),n.push(Y(e.s))),U(["0x01",St(n)])}(this,n);case 2:return function(t,e){const n=[Ln(t.chainId,"chainId"),Ln(t.nonce,"nonce"),Ln(t.maxPriorityFeePerGas||0,"maxPriorityFeePerGas"),Ln(t.maxFeePerGas||0,"maxFeePerGas"),Ln(t.gasLimit,"gasLimit"),t.to||"0x",Ln(t.value,"value"),t.data,Dn(t.accessList||[])];return e&&(n.push(Ln(e.yParity,"yParity")),n.push(Y(e.r)),n.push(Y(e.s))),U(["0x02",St(n)])}(this,n);case 3:return function(t,e,n){const r=[Ln(t.chainId,"chainId"),Ln(t.nonce,"nonce"),Ln(t.maxPriorityFeePerGas||0,"maxPriorityFeePerGas"),Ln(t.maxFeePerGas||0,"maxFeePerGas"),Ln(t.gasLimit,"gasLimit"),t.to||ke,Ln(t.value,"value"),t.data,Dn(t.accessList||[]),Ln(t.maxFeePerBlobGas||0,"maxFeePerBlobGas"),Bn(t.blobVersionedHashes||[],"blobVersionedHashes")];return e&&(r.push(Ln(e.yParity,"yParity")),r.push(Y(e.r)),r.push(Y(e.s)),n)?U(["0x03",St([r,n.map((t=>t.data)),n.map((t=>t.commitment)),n.map((t=>t.proof))])]):U(["0x03",St(r)])}(this,n,e?this.blobs:null)}E(!1,"unsupported transaction type","UNSUPPORTED_OPERATION",{operation:".serialized"})}get serialized(){return this.#tt(!0,!0)}get unsignedSerialized(){return this.#tt(!1,!1)}inferType(){const t=this.inferTypes();return t.indexOf(2)>=0?2:t.pop()}inferTypes(){const t=null!=this.gasPrice,e=null!=this.maxFeePerGas||null!=this.maxPriorityFeePerGas,n=null!=this.accessList,r=null!=this.#Y||this.#X;null!=this.maxFeePerGas&&null!=this.maxPriorityFeePerGas&&E(this.maxFeePerGas>=this.maxPriorityFeePerGas,"priorityFee cannot be more than maxFee","BAD_DATA",{value:this}),E(!e||0!==this.type&&1!==this.type,"transaction type cannot have maxFeePerGas or maxPriorityFeePerGas","BAD_DATA",{value:this}),E(0!==this.type||!n,"legacy transaction cannot have accessList","BAD_DATA",{value:this});const s=[];return null!=this.type?s.push(this.type):e?s.push(2):t?(s.push(1),n||s.push(0)):n?(s.push(1),s.push(2)):(r&&this.to||(s.push(0),s.push(1),s.push(2)),s.push(3)),s.sort(),s}isLegacy(){return 0===this.type}isBerlin(){return 1===this.type}isLondon(){return 2===this.type}isCancun(){return 3===this.type}clone(){return $n.from(this)}toJSON(){const t=t=>null==t?null:t.toString();return{type:this.type,to:this.to,data:this.data,nonce:this.nonce,gasLimit:t(this.gasLimit),gasPrice:t(this.gasPrice),maxPriorityFeePerGas:t(this.maxPriorityFeePerGas),maxFeePerGas:t(this.maxFeePerGas),value:t(this.value),chainId:t(this.chainId),sig:this.signature?this.signature.toJSON():null,accessList:this.accessList}}static from(t){if(null==t)return new $n;if("string"==typeof t){const e=O(t);if(e[0]>=127)return $n.from(function(t){const e=Rt(t);N(Array.isArray(e)&&(9===e.length||6===e.length),"invalid field count for legacy transaction","data",t);const n={type:0,nonce:Un(e[0],"nonce"),gasPrice:Fn(e[1],"gasPrice"),gasLimit:Fn(e[2],"gasLimit"),to:Cn(e[3]),value:Fn(e[4],"value"),data:_(e[5]),chainId:kn};if(6===e.length)return n;const r=Fn(e[6],"v"),s=Fn(e[7],"r"),i=Fn(e[8],"s");if(s===kn&&i===kn)n.chainId=r;else{let t=(r-On)/Tn;t<kn&&(t=kn),n.chainId=t,N(t!==kn||r===Rn||r===An,"non-canonical legacy v","v",e[6]),n.signature=Ue.from({r:B(e[7],32),s:B(e[8],32),v:r})}return n}(e));switch(e[0]){case 1:return $n.from(function(t){const e=Rt(O(t).slice(1));N(Array.isArray(e)&&(8===e.length||11===e.length),"invalid field count for transaction type: 1","data",_(t));const n={type:1,chainId:Fn(e[0],"chainId"),nonce:Un(e[1],"nonce"),gasPrice:Fn(e[2],"gasPrice"),gasLimit:Fn(e[3],"gasLimit"),to:Cn(e[4]),value:Fn(e[5],"value"),data:_(e[6]),accessList:_n(e[7],"accessList")};return 8===e.length||Gn(n,e.slice(8)),n}(e));case 2:return $n.from(function(t){const e=Rt(O(t).slice(1));N(Array.isArray(e)&&(9===e.length||12===e.length),"invalid field count for transaction type: 2","data",_(t));const n={type:2,chainId:Fn(e[0],"chainId"),nonce:Un(e[1],"nonce"),maxPriorityFeePerGas:Fn(e[2],"maxPriorityFeePerGas"),maxFeePerGas:Fn(e[3],"maxFeePerGas"),gasPrice:null,gasLimit:Fn(e[4],"gasLimit"),to:Cn(e[5]),value:Fn(e[6],"value"),data:_(e[7]),accessList:_n(e[8],"accessList")};return 9===e.length||Gn(n,e.slice(9)),n}(e));case 3:return $n.from(function(t){let e=Rt(O(t).slice(1)),n="3",r=null;if(4===e.length&&Array.isArray(e[0])){n="3 (network format)";const t=e[1],s=e[2],i=e[3];N(Array.isArray(t),"invalid network format: blobs not an array","fields[1]",t),N(Array.isArray(s),"invalid network format: commitments not an array","fields[2]",s),N(Array.isArray(i),"invalid network format: proofs not an array","fields[3]",i),N(t.length===s.length,"invalid network format: blobs/commitments length mismatch","fields",e),N(t.length===i.length,"invalid network format: blobs/proofs length mismatch","fields",e),r=[];for(let n=0;n<e[1].length;n++)r.push({data:t[n],commitment:s[n],proof:i[n]});e=e[0]}N(Array.isArray(e)&&(11===e.length||14===e.length),`invalid field count for transaction type: ${n}`,"data",_(t));const s={type:3,chainId:Fn(e[0],"chainId"),nonce:Un(e[1],"nonce"),maxPriorityFeePerGas:Fn(e[2],"maxPriorityFeePerGas"),maxFeePerGas:Fn(e[3],"maxFeePerGas"),gasPrice:null,gasLimit:Fn(e[4],"gasLimit"),to:Cn(e[5]),value:Fn(e[6],"value"),data:_(e[7]),accessList:_n(e[8],"accessList"),maxFeePerBlobGas:Fn(e[9],"maxFeePerBlobGas"),blobVersionedHashes:e[10]};r&&(s.blobs=r),N(null!=s.to,`invalid address for transaction type: ${n}`,"data",t),N(Array.isArray(s.blobVersionedHashes),"invalid blobVersionedHashes: must be an array","data",t);for(let e=0;e<s.blobVersionedHashes.length;e++)N(S(s.blobVersionedHashes[e],32),`invalid blobVersionedHash at index ${e}: must be length 32`,"data",t);return 11===e.length||Gn(s,e.slice(11)),s}(e))}E(!1,"unsupported transaction type","UNSUPPORTED_OPERATION",{operation:"from"})}const e=new $n;return null!=t.type&&(e.type=t.type),null!=t.to&&(e.to=t.to),null!=t.nonce&&(e.nonce=t.nonce),null!=t.gasLimit&&(e.gasLimit=t.gasLimit),null!=t.gasPrice&&(e.gasPrice=t.gasPrice),null!=t.maxPriorityFeePerGas&&(e.maxPriorityFeePerGas=t.maxPriorityFeePerGas),null!=t.maxFeePerGas&&(e.maxFeePerGas=t.maxFeePerGas),null!=t.maxFeePerBlobGas&&(e.maxFeePerBlobGas=t.maxFeePerBlobGas),null!=t.data&&(e.data=t.data),null!=t.value&&(e.value=t.value),null!=t.chainId&&(e.chainId=t.chainId),null!=t.signature&&(e.signature=Ue.from(t.signature)),null!=t.accessList&&(e.accessList=t.accessList),null!=t.blobVersionedHashes&&(e.blobVersionedHashes=t.blobVersionedHashes),null!=t.kzg&&(e.kzg=t.kzg),null!=t.blobs&&(e.blobs=t.blobs),null!=t.hash&&(N(e.isSigned(),"unsigned transaction cannot define '.hash'","tx",t),N(e.hash===t.hash,"hash mismatch","tx",t)),null!=t.from&&(N(e.isSigned(),"unsigned transaction cannot define '.from'","tx",t),N(e.from.toLowerCase()===(t.from||"").toLowerCase(),"from mismatch","tx",t)),e}}function Mn(t){return"string"==typeof t&&(t=ot(t)),Qt(U([ot("Ethereum Signed Message:\n"),ot(String(t.length)),t]))}const jn=new Uint8Array(32);jn.fill(0);const Kn=BigInt(-1),Hn=BigInt(0),Vn=BigInt(1),zn=BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");const Jn=W(Vn,32),qn=W(Hn,32),Wn={name:"string",version:"string",chainId:"uint256",verifyingContract:"address",salt:"bytes32"},Yn=["name","version","chainId","verifyingContract","salt"];function Xn(t){return function(e){return N("string"==typeof e,`invalid domain value for ${JSON.stringify(t)}`,`domain.${t}`,e),e}}const Zn={name:Xn("name"),version:Xn("version"),chainId:function(t){const e=H(t,"domain.chainId");return N(e>=0,"invalid chain ID","domain.chainId",t),Number.isSafeInteger(e)?Number(e):X(e)},verifyingContract:function(t){try{return Me(t).toLowerCase()}catch(t){}N(!1,'invalid domain value "verifyingContract"',"domain.verifyingContract",t)},salt:function(t){const e=O(t,"domain.salt");return N(32===e.length,'invalid domain value "salt"',"domain.salt",t),_(e)}};function Qn(t){{const e=t.match(/^(u?)int(\d+)$/);if(e){const n=""===e[1],r=parseInt(e[2]);N(r%8==0&&0!==r&&r<=256&&e[2]===String(r),"invalid numeric width","type",t);const s=K(zn,n?r-1:r),i=n?(s+Vn)*Kn:Hn;return function(e){const r=H(e,"value");return N(r>=i&&r<=s,`value out-of-bounds for ${t}`,"value",r),W(n?j(r,256):r,32)}}}{const e=t.match(/^bytes(\d+)$/);if(e){const n=parseInt(e[1]);return N(0!==n&&n<=32&&e[1]===String(n),"invalid bytes width","type",t),function(e){return N(O(e).length===n,`invalid length for ${t}`,"value",e),function(t){const e=O(t),n=e.length%32;return n?U([e,jn.slice(n)]):_(e)}(e)}}}switch(t){case"address":return function(t){return B(Me(t),32)};case"bool":return function(t){return t?Jn:qn};case"bytes":return function(t){return Qt(t)};case"string":return function(t){return fn(t)}}return null}function tr(t,e){return`${t}(${e.map((({name:t,type:e})=>e+" "+t)).join(",")})`}function er(t){const e=t.match(/^([^\x5b]*)((\x5b\d*\x5d)*)(\x5b(\d*)\x5d)$/);return e?{base:e[1],index:e[2]+e[4],array:{base:e[1],prefix:e[1]+e[2],count:e[5]?parseInt(e[5]):-1}}:{base:t}}class nr{primaryType;#et;get types(){return JSON.parse(this.#et)}#nt;#rt;constructor(t){this.#nt=new Map,this.#rt=new Map;const e=new Map,n=new Map,r=new Map,s={};Object.keys(t).forEach((i=>{s[i]=t[i].map((({name:e,type:n})=>{let{base:r,index:s}=er(n);return"int"!==r||t.int||(r="int256"),"uint"!==r||t.uint||(r="uint256"),{name:e,type:r+(s||"")}})),e.set(i,new Set),n.set(i,[]),r.set(i,new Set)})),this.#et=JSON.stringify(s);for(const r in s){const i=new Set;for(const a of s[r]){N(!i.has(a.name),`duplicate variable name ${JSON.stringify(a.name)} in ${JSON.stringify(r)}`,"types",t),i.add(a.name);const s=er(a.type).base;N(s!==r,`circular type reference to ${JSON.stringify(s)}`,"types",t);Qn(s)||(N(n.has(s),`unknown type ${JSON.stringify(s)}`,"types",t),n.get(s).push(r),e.get(r).add(s))}}const i=Array.from(n.keys()).filter((t=>0===n.get(t).length));N(0!==i.length,"missing primary type","types",t),N(1===i.length,`ambiguous primary types or unused types: ${i.map((t=>JSON.stringify(t))).join(", ")}`,"types",t),y(this,{primaryType:i[0]}),function s(i,a){N(!a.has(i),`circular type reference to ${JSON.stringify(i)}`,"types",t),a.add(i);for(const t of e.get(i))if(n.has(t)){s(t,a);for(const e of a)r.get(e).add(t)}a.delete(i)}(this.primaryType,new Set);for(const[t,e]of r){const n=Array.from(e);n.sort(),this.#nt.set(t,tr(t,s[t])+n.map((t=>tr(t,s[t]))).join(""))}}getEncoder(t){let e=this.#rt.get(t);return e||(e=this.#st(t),this.#rt.set(t,e)),e}#st(t){{const e=Qn(t);if(e)return e}const e=er(t).array;if(e){const t=e.prefix,n=this.getEncoder(t);return r=>{N(-1===e.count||e.count===r.length,`array length mismatch; expected length ${e.count}`,"value",r);let s=r.map(n);return this.#nt.has(t)&&(s=s.map(Qt)),Qt(U(s))}}const n=this.types[t];if(n){const e=fn(this.#nt.get(t));return t=>{const r=n.map((({name:e,type:n})=>{const r=this.getEncoder(n)(t[e]);return this.#nt.has(n)?Qt(r):r}));return r.unshift(e),U(r)}}N(!1,`unknown type: ${t}`,"type",t)}encodeType(t){const e=this.#nt.get(t);return N(e,`unknown type: ${JSON.stringify(t)}`,"name",t),e}encodeData(t,e){return this.getEncoder(t)(e)}hashStruct(t,e){return Qt(this.encodeData(t,e))}encode(t){return this.encodeData(this.primaryType,t)}hash(t){return this.hashStruct(this.primaryType,t)}_visit(t,e,n){if(Qn(t))return n(t,e);const r=er(t).array;if(r)return N(-1===r.count||r.count===e.length,`array length mismatch; expected length ${r.count}`,"value",e),e.map((t=>this._visit(r.prefix,t,n)));const s=this.types[t];if(s)return s.reduce(((t,{name:r,type:s})=>(t[r]=this._visit(s,e[r],n),t)),{});N(!1,`unknown type: ${t}`,"type",t)}visit(t,e){return this._visit(this.primaryType,t,e)}static from(t){return new nr(t)}static getPrimaryType(t){return nr.from(t).primaryType}static hashStruct(t,e,n){return nr.from(e).hashStruct(t,n)}static hashDomain(t){const e=[];for(const n in t){if(null==t[n])continue;const r=Wn[n];N(r,`invalid typed-data domain key: ${JSON.stringify(n)}`,"domain",t),e.push({name:n,type:r})}return e.sort(((t,e)=>Yn.indexOf(t.name)-Yn.indexOf(e.name))),nr.hashStruct("EIP712Domain",{EIP712Domain:e},t)}static encode(t,e,n){return U(["0x1901",nr.hashDomain(t),nr.from(e).hash(n)])}static hash(t,e,n){return Qt(nr.encode(t,e,n))}static async resolveNames(t,e,n,r){t=Object.assign({},t);for(const e in t)null==t[e]&&delete t[e];const s={};t.verifyingContract&&!S(t.verifyingContract,20)&&(s[t.verifyingContract]="0x");const i=nr.from(e);i.visit(n,((t,e)=>("address"!==t||S(e,20)||(s[e]="0x"),e)));for(const t in s)s[t]=await r(t);return t.verifyingContract&&s[t.verifyingContract]&&(t.verifyingContract=s[t.verifyingContract]),{domain:t,value:n=i.visit(n,((t,e)=>"address"===t&&s[e]?s[e]:e))}}static getPayload(t,e,n){nr.hashDomain(t);const r={},s=[];Yn.forEach((e=>{const n=t[e];null!=n&&(r[e]=Zn[e](n),s.push({name:e,type:Wn[e]}))}));const i=nr.from(e);e=i.types;const a=Object.assign({},e);return N(null==a.EIP712Domain,"types must not contain EIP712Domain type","types.EIP712Domain",e),a.EIP712Domain=s,i.encode(n),{types:a,domain:r,primaryType:i.primaryType,message:i.visit(n,((t,e)=>{if(t.match(/^bytes(\d*)/))return _(O(e));if(t.match(/^u?int/))return H(e).toString();switch(t){case"address":return e.toLowerCase();case"bool":return!!e;case"string":return N("string"==typeof e,"invalid string","value",e),e}N(!1,"unsupported type","type",t)}))}}}function rr(t){const e=new Set;return t.forEach((t=>e.add(t))),Object.freeze(e)}const sr=rr("external public payable override".split(" ")),ir="constant external internal payable private public pure view override",ar=rr(ir.split(" ")),or="constructor error event fallback function receive struct",cr=rr(or.split(" ")),lr="calldata memory storage payable indexed",ur=rr(lr.split(" ")),hr=rr([or,lr,"tuple returns",ir].join(" ").split(" ")),dr={"(":"OPEN_PAREN",")":"CLOSE_PAREN","[":"OPEN_BRACKET","]":"CLOSE_BRACKET",",":"COMMA","@":"AT"},pr=new RegExp("^(\\s*)"),fr=new RegExp("^([0-9]+)"),gr=new RegExp("^([a-zA-Z$_][a-zA-Z0-9$_]*)"),yr=new RegExp("^([a-zA-Z$_][a-zA-Z0-9$_]*)$"),mr=new RegExp("^(address|bool|bytes([0-9]*)|string|u?int([0-9]*))$");class br{#A;#it;get offset(){return this.#A}get length(){return this.#it.length-this.#A}constructor(t){this.#A=0,this.#it=t.slice()}clone(){return new br(this.#it)}reset(){this.#A=0}#at(t=0,e=0){return new br(this.#it.slice(t,e).map((e=>Object.freeze(Object.assign({},e,{match:e.match-t,linkBack:e.linkBack-t,linkNext:e.linkNext-t})))))}popKeyword(t){const e=this.peek();if("KEYWORD"!==e.type||!t.has(e.text))throw new Error(`expected keyword ${e.text}`);return this.pop().text}popType(t){if(this.peek().type!==t){const e=this.peek();throw new Error(`expected ${t}; got ${e.type} ${JSON.stringify(e.text)}`)}return this.pop().text}popParen(){const t=this.peek();if("OPEN_PAREN"!==t.type)throw new Error("bad start");const e=this.#at(this.#A+1,t.match+1);return this.#A=t.match+1,e}popParams(){const t=this.peek();if("OPEN_PAREN"!==t.type)throw new Error("bad start");const e=[];for(;this.#A<t.match-1;){const t=this.peek().linkNext;e.push(this.#at(this.#A+1,t)),this.#A=t}return this.#A=t.match+1,e}peek(){if(this.#A>=this.#it.length)throw new Error("out-of-bounds");return this.#it[this.#A]}peekKeyword(t){const e=this.peekType("KEYWORD");return null!=e&&t.has(e)?e:null}peekType(t){if(0===this.length)return null;const e=this.peek();return e.type===t?e.text:null}pop(){const t=this.peek();return this.#A++,t}toString(){const t=[];for(let e=this.#A;e<this.#it.length;e++){const n=this.#it[e];t.push(`${n.type}:${n.text}`)}return`<TokenString ${t.join(" ")}>`}}function wr(t){const e=[],n=e=>{const n=i<t.length?JSON.stringify(t[i]):"$EOI";throw new Error(`invalid token ${n} at ${i}: ${e}`)};let r=[],s=[],i=0;for(;i<t.length;){let a=t.substring(i),o=a.match(pr);o&&(i+=o[1].length,a=t.substring(i));const c={depth:r.length,linkBack:-1,linkNext:-1,match:-1,type:"",text:"",offset:i,value:-1};e.push(c);let l=dr[a[0]]||"";if(l){if(c.type=l,c.text=a[0],i++,"OPEN_PAREN"===l)r.push(e.length-1),s.push(e.length-1);else if("CLOSE_PAREN"==l)0===r.length&&n("no matching open bracket"),c.match=r.pop(),e[c.match].match=e.length-1,c.depth--,c.linkBack=s.pop(),e[c.linkBack].linkNext=e.length-1;else if("COMMA"===l)c.linkBack=s.pop(),e[c.linkBack].linkNext=e.length-1,s.push(e.length-1);else if("OPEN_BRACKET"===l)c.type="BRACKET";else if("CLOSE_BRACKET"===l){let t=e.pop().text;if(e.length>0&&"NUMBER"===e[e.length-1].type){const n=e.pop().text;t=n+t,e[e.length-1].value=q(n)}if(0===e.length||"BRACKET"!==e[e.length-1].type)throw new Error("missing opening bracket");e[e.length-1].text+=t}}else if(o=a.match(gr),o){if(c.text=o[1],i+=c.text.length,hr.has(c.text)){c.type="KEYWORD";continue}if(c.text.match(mr)){c.type="TYPE";continue}c.type="ID"}else{if(o=a.match(fr),!o)throw new Error(`unexpected token ${JSON.stringify(a[0])} at position ${i}`);c.text=o[1],c.type="NUMBER",i+=c.text.length}}return new br(e.map((t=>Object.freeze(t))))}function vr(t,e){let n=[];for(const r in e.keys())t.has(r)&&n.push(r);if(n.length>1)throw new Error(`conflicting types: ${n.join(", ")}`)}function Er(t,e){if(e.peekKeyword(cr)){const n=e.pop().text;if(n!==t)throw new Error(`expected ${t}, got ${n}`)}return e.popType("ID")}function Nr(t,e){const n=new Set;for(;;){const r=t.peekType("KEYWORD");if(null==r||e&&!e.has(r))break;if(t.pop(),n.has(r))throw new Error(`duplicate keywords: ${JSON.stringify(r)}`);n.add(r)}return Object.freeze(n)}function Pr(t){let e=Nr(t,ar);return vr(e,rr("constant payable nonpayable".split(" "))),vr(e,rr("pure view payable nonpayable".split(" "))),e.has("view")?"view":e.has("pure")?"pure":e.has("payable")?"payable":e.has("nonpayable")?"nonpayable":e.has("constant")?"view":"nonpayable"}function kr(t,e){return t.popParams().map((t=>Br.from(t,e)))}function Tr(t){if(t.peekType("AT")){if(t.pop(),t.peekType("NUMBER"))return H(t.pop().text);throw new Error("invalid gas")}return null}function Rr(t){if(t.length)throw new Error(`unexpected tokens at offset ${t.offset}: ${t.toString()}`)}const Ar=new RegExp(/^(.*)\[([0-9]*)\]$/);function Or(t){const e=t.match(mr);if(N(e,"invalid type","type",t),"uint"===t)return"uint256";if("int"===t)return"int256";if(e[2]){const n=parseInt(e[2]);N(0!==n&&n<=32,"invalid bytes length","type",t)}else if(e[3]){const n=parseInt(e[3]);N(0!==n&&n<=256&&n%8==0,"invalid numeric width","type",t)}return t}const Ir={},Sr=Symbol.for("_ethers_internal"),xr="_ParamTypeInternal",Cr="_ErrorInternal",_r="_EventInternal",Ur="_ConstructorInternal",Fr="_FallbackInternal",Lr="_FunctionInternal",Dr="_StructInternal";class Br{name;type;baseType;indexed;components;arrayLength;arrayChildren;constructor(t,e,n,r,s,i,a,o){if(R(t,Ir,"ParamType"),Object.defineProperty(this,Sr,{value:xr}),i&&(i=Object.freeze(i.slice())),"array"===r){if(null==a||null==o)throw new Error("")}else if(null!=a||null!=o)throw new Error("");if("tuple"===r){if(null==i)throw new Error("")}else if(null!=i)throw new Error("");y(this,{name:e,type:n,baseType:r,indexed:s,components:i,arrayLength:a,arrayChildren:o})}format(t){if(null==t&&(t="sighash"),"json"===t){const e=this.name||"";if(this.isArray()){const t=JSON.parse(this.arrayChildren.format("json"));return t.name=e,t.type+=`[${this.arrayLength<0?"":String(this.arrayLength)}]`,JSON.stringify(t)}const n={type:"tuple"===this.baseType?"tuple":this.type,name:e};return"boolean"==typeof this.indexed&&(n.indexed=this.indexed),this.isTuple()&&(n.components=this.components.map((e=>JSON.parse(e.format(t))))),JSON.stringify(n)}let e="";return this.isArray()?(e+=this.arrayChildren.format(t),e+=`[${this.arrayLength<0?"":String(this.arrayLength)}]`):this.isTuple()?e+="("+this.components.map((e=>e.format(t))).join("full"===t?", ":",")+")":e+=this.type,"sighash"!==t&&(!0===this.indexed&&(e+=" indexed"),"full"===t&&this.name&&(e+=" "+this.name)),e}isArray(){return"array"===this.baseType}isTuple(){return"tuple"===this.baseType}isIndexable(){return null!=this.indexed}walk(t,e){if(this.isArray()){if(!Array.isArray(t))throw new Error("invalid array value");if(-1!==this.arrayLength&&t.length!==this.arrayLength)throw new Error("array is wrong length");const n=this;return t.map((t=>n.arrayChildren.walk(t,e)))}if(this.isTuple()){if(!Array.isArray(t))throw new Error("invalid tuple value");if(t.length!==this.components.length)throw new Error("array is wrong length");const n=this;return t.map(((t,r)=>n.components[r].walk(t,e)))}return e(this.type,t)}#ot(t,e,n,r){if(this.isArray()){if(!Array.isArray(e))throw new Error("invalid array value");if(-1!==this.arrayLength&&e.length!==this.arrayLength)throw new Error("array is wrong length");const s=this.arrayChildren,i=e.slice();return i.forEach(((e,r)=>{s.#ot(t,e,n,(t=>{i[r]=t}))})),void r(i)}if(this.isTuple()){const s=this.components;let i;if(Array.isArray(e))i=e.slice();else{if(null==e||"object"!=typeof e)throw new Error("invalid tuple value");i=s.map((t=>{if(!t.name)throw new Error("cannot use object value with unnamed components");if(!(t.name in e))throw new Error(`missing value for component ${t.name}`);return e[t.name]}))}if(i.length!==this.components.length)throw new Error("array is wrong length");return i.forEach(((e,r)=>{s[r].#ot(t,e,n,(t=>{i[r]=t}))})),void r(i)}const s=n(this.type,e);s.then?t.push(async function(){r(await s)}()):r(s)}async walkAsync(t,e){const n=[],r=[t];return this.#ot(n,t,e,(t=>{r[0]=t})),n.length&&await Promise.all(n),r[0]}static from(t,e){if(Br.isParamType(t))return t;if("string"==typeof t)try{return Br.from(wr(t),e)}catch(e){N(!1,"invalid param type","obj",t)}else if(t instanceof br){let n="",r="",s=null;Nr(t,rr(["tuple"])).has("tuple")||t.peekType("OPEN_PAREN")?(r="tuple",s=t.popParams().map((t=>Br.from(t))),n=`tuple(${s.map((t=>t.format())).join(",")})`):(n=Or(t.popType("TYPE")),r=n);let i=null,a=null;for(;t.length&&t.peekType("BRACKET");){const e=t.pop();i=new Br(Ir,"",n,r,null,s,a,i),a=e.value,n+=e.text,r="array",s=null}let o=null;if(Nr(t,ur).has("indexed")){if(!e)throw new Error("");o=!0}const c=t.peekType("ID")?t.pop().text:"";if(t.length)throw new Error("leftover tokens");return new Br(Ir,c,n,r,o,s,a,i)}const n=t.name;N(!n||"string"==typeof n&&n.match(yr),"invalid name","obj.name",n);let r=t.indexed;null!=r&&(N(e,"parameter cannot be indexed","obj.indexed",t.indexed),r=!!r);let s=t.type,i=s.match(Ar);if(i){const e=parseInt(i[2]||"-1"),a=Br.from({type:i[1],components:t.components});return new Br(Ir,n||"",s,"array",r,null,e,a)}if("tuple"===s||s.startsWith("tuple(")||s.startsWith("(")){const e=null!=t.components?t.components.map((t=>Br.from(t))):null;return new Br(Ir,n||"",s,"tuple",r,e,null,null)}return s=Or(t.type),new Br(Ir,n||"",s,s,r,null,null,null)}static isParamType(t){return t&&t[Sr]===xr}}class Gr{type;inputs;constructor(t,e,n){R(t,Ir,"Fragment"),y(this,{type:e,inputs:n=Object.freeze(n.slice())})}static from(t){if("string"==typeof t){try{Gr.from(JSON.parse(t))}catch(t){}return Gr.from(wr(t))}if(t instanceof br){switch(t.peekKeyword(cr)){case"constructor":return Hr.from(t);case"error":return jr.from(t);case"event":return Kr.from(t);case"fallback":case"receive":return Vr.from(t);case"function":return zr.from(t);case"struct":return Jr.from(t)}}else if("object"==typeof t){switch(t.type){case"constructor":return Hr.from(t);case"error":return jr.from(t);case"event":return Kr.from(t);case"fallback":case"receive":return Vr.from(t);case"function":return zr.from(t);case"struct":return Jr.from(t)}E(!1,`unsupported type: ${t.type}`,"UNSUPPORTED_OPERATION",{operation:"Fragment.from"})}N(!1,"unsupported frgament object","obj",t)}static isConstructor(t){return Hr.isFragment(t)}static isError(t){return jr.isFragment(t)}static isEvent(t){return Kr.isFragment(t)}static isFunction(t){return zr.isFragment(t)}static isStruct(t){return Jr.isFragment(t)}}class $r extends Gr{name;constructor(t,e,n,r){super(t,e,r),N("string"==typeof n&&n.match(yr),"invalid identifier","name",n),r=Object.freeze(r.slice()),y(this,{name:n})}}function Mr(t,e){return"("+e.map((e=>e.format(t))).join("full"===t?", ":",")+")"}class jr extends $r{constructor(t,e,n){super(t,"error",e,n),Object.defineProperty(this,Sr,{value:Cr})}get selector(){return fn(this.format("sighash")).substring(0,10)}format(t){if(null==t&&(t="sighash"),"json"===t)return JSON.stringify({type:"error",name:this.name,inputs:this.inputs.map((e=>JSON.parse(e.format(t))))});const e=[];return"sighash"!==t&&e.push("error"),e.push(this.name+Mr(t,this.inputs)),e.join(" ")}static from(t){if(jr.isFragment(t))return t;if("string"==typeof t)return jr.from(wr(t));if(t instanceof br){const e=Er("error",t),n=kr(t);return Rr(t),new jr(Ir,e,n)}return new jr(Ir,t.name,t.inputs?t.inputs.map(Br.from):[])}static isFragment(t){return t&&t[Sr]===Cr}}class Kr extends $r{anonymous;constructor(t,e,n,r){super(t,"event",e,n),Object.defineProperty(this,Sr,{value:_r}),y(this,{anonymous:r})}get topicHash(){return fn(this.format("sighash"))}format(t){if(null==t&&(t="sighash"),"json"===t)return JSON.stringify({type:"event",anonymous:this.anonymous,name:this.name,inputs:this.inputs.map((e=>JSON.parse(e.format(t))))});const e=[];return"sighash"!==t&&e.push("event"),e.push(this.name+Mr(t,this.inputs)),"sighash"!==t&&this.anonymous&&e.push("anonymous"),e.join(" ")}static getTopicHash(t,e){e=(e||[]).map((t=>Br.from(t)));return new Kr(Ir,t,e,!1).topicHash}static from(t){if(Kr.isFragment(t))return t;if("string"==typeof t)try{return Kr.from(wr(t))}catch(e){N(!1,"invalid event fragment","obj",t)}else if(t instanceof br){const e=Er("event",t),n=kr(t,!0),r=!!Nr(t,rr(["anonymous"])).has("anonymous");return Rr(t),new Kr(Ir,e,n,r)}return new Kr(Ir,t.name,t.inputs?t.inputs.map((t=>Br.from(t,!0))):[],!!t.anonymous)}static isFragment(t){return t&&t[Sr]===_r}}class Hr extends Gr{payable;gas;constructor(t,e,n,r,s){super(t,e,n),Object.defineProperty(this,Sr,{value:Ur}),y(this,{payable:r,gas:s})}format(t){if(E(null!=t&&"sighash"!==t,"cannot format a constructor for sighash","UNSUPPORTED_OPERATION",{operation:"format(sighash)"}),"json"===t)return JSON.stringify({type:"constructor",stateMutability:this.payable?"payable":"undefined",payable:this.payable,gas:null!=this.gas?this.gas:void 0,inputs:this.inputs.map((e=>JSON.parse(e.format(t))))});const e=[`constructor${Mr(t,this.inputs)}`];return this.payable&&e.push("payable"),null!=this.gas&&e.push(`@${this.gas.toString()}`),e.join(" ")}static from(t){if(Hr.isFragment(t))return t;if("string"==typeof t)try{return Hr.from(wr(t))}catch(e){N(!1,"invalid constuctor fragment","obj",t)}else if(t instanceof br){Nr(t,rr(["constructor"]));const e=kr(t),n=!!Nr(t,sr).has("payable"),r=Tr(t);return Rr(t),new Hr(Ir,"constructor",e,n,r)}return new Hr(Ir,"constructor",t.inputs?t.inputs.map(Br.from):[],!!t.payable,null!=t.gas?t.gas:null)}static isFragment(t){return t&&t[Sr]===Ur}}class Vr extends Gr{payable;constructor(t,e,n){super(t,"fallback",e),Object.defineProperty(this,Sr,{value:Fr}),y(this,{payable:n})}format(t){const e=0===this.inputs.length?"receive":"fallback";if("json"===t){const t=this.payable?"payable":"nonpayable";return JSON.stringify({type:e,stateMutability:t})}return`${e}()${this.payable?" payable":""}`}static from(t){if(Vr.isFragment(t))return t;if("string"==typeof t)try{return Vr.from(wr(t))}catch(e){N(!1,"invalid fallback fragment","obj",t)}else if(t instanceof br){const e=t.toString();N(t.peekKeyword(rr(["fallback","receive"])),"type must be fallback or receive","obj",e);if("receive"===t.popKeyword(rr(["fallback","receive"]))){const e=kr(t);return N(0===e.length,"receive cannot have arguments","obj.inputs",e),Nr(t,rr(["payable"])),Rr(t),new Vr(Ir,[],!0)}let n=kr(t);n.length?N(1===n.length&&"bytes"===n[0].type,"invalid fallback inputs","obj.inputs",n.map((t=>t.format("minimal"))).join(", ")):n=[Br.from("bytes")];const r=Pr(t);if(N("nonpayable"===r||"payable"===r,"fallback cannot be constants","obj.stateMutability",r),Nr(t,rr(["returns"])).has("returns")){const e=kr(t);N(1===e.length&&"bytes"===e[0].type,"invalid fallback outputs","obj.outputs",e.map((t=>t.format("minimal"))).join(", "))}return Rr(t),new Vr(Ir,n,"payable"===r)}if("receive"===t.type)return new Vr(Ir,[],!0);if("fallback"===t.type){const e=[Br.from("bytes")],n="payable"===t.stateMutability;return new Vr(Ir,e,n)}N(!1,"invalid fallback description","obj",t)}static isFragment(t){return t&&t[Sr]===Fr}}class zr extends $r{constant;outputs;stateMutability;payable;gas;constructor(t,e,n,r,s,i){super(t,"function",e,r),Object.defineProperty(this,Sr,{value:Lr});y(this,{constant:"view"===n||"pure"===n,gas:i,outputs:s=Object.freeze(s.slice()),payable:"payable"===n,stateMutability:n})}get selector(){return fn(this.format("sighash")).substring(0,10)}format(t){if(null==t&&(t="sighash"),"json"===t)return JSON.stringify({type:"function",name:this.name,constant:this.constant,stateMutability:"nonpayable"!==this.stateMutability?this.stateMutability:void 0,payable:this.payable,gas:null!=this.gas?this.gas:void 0,inputs:this.inputs.map((e=>JSON.parse(e.format(t)))),outputs:this.outputs.map((e=>JSON.parse(e.format(t))))});const e=[];return"sighash"!==t&&e.push("function"),e.push(this.name+Mr(t,this.inputs)),"sighash"!==t&&("nonpayable"!==this.stateMutability&&e.push(this.stateMutability),this.outputs&&this.outputs.length&&(e.push("returns"),e.push(Mr(t,this.outputs))),null!=this.gas&&e.push(`@${this.gas.toString()}`)),e.join(" ")}static getSelector(t,e){e=(e||[]).map((t=>Br.from(t)));return new zr(Ir,t,"view",e,[],null).selector}static from(t){if(zr.isFragment(t))return t;if("string"==typeof t)try{return zr.from(wr(t))}catch(e){N(!1,"invalid function fragment","obj",t)}else if(t instanceof br){const e=Er("function",t),n=kr(t),r=Pr(t);let s=[];Nr(t,rr(["returns"])).has("returns")&&(s=kr(t));const i=Tr(t);return Rr(t),new zr(Ir,e,r,n,s,i)}let e=t.stateMutability;return null==e&&(e="payable","boolean"==typeof t.constant?(e="view",t.constant||(e="payable","boolean"!=typeof t.payable||t.payable||(e="nonpayable"))):"boolean"!=typeof t.payable||t.payable||(e="nonpayable")),new zr(Ir,t.name,e,t.inputs?t.inputs.map(Br.from):[],t.outputs?t.outputs.map(Br.from):[],null!=t.gas?t.gas:null)}static isFragment(t){return t&&t[Sr]===Lr}}class Jr extends $r{constructor(t,e,n){super(t,"struct",e,n),Object.defineProperty(this,Sr,{value:Dr})}format(){throw new Error("@TODO")}static from(t){if("string"==typeof t)try{return Jr.from(wr(t))}catch(e){N(!1,"invalid struct fragment","obj",t)}else if(t instanceof br){const e=Er("struct",t),n=kr(t);return Rr(t),new Jr(Ir,e,n)}return new Jr(Ir,t.name,t.inputs?t.inputs.map(Br.from):[])}static isFragment(t){return t&&t[Sr]===Dr}}const qr=new Map;qr.set(0,"GENERIC_PANIC"),qr.set(1,"ASSERT_FALSE"),qr.set(17,"OVERFLOW"),qr.set(18,"DIVIDE_BY_ZERO"),qr.set(33,"ENUM_RANGE_ERROR"),qr.set(34,"BAD_STORAGE_DATA"),qr.set(49,"STACK_UNDERFLOW"),qr.set(50,"ARRAY_RANGE_ERROR"),qr.set(65,"OUT_OF_MEMORY"),qr.set(81,"UNINITIALIZED_FUNCTION_CALL");const Wr=new RegExp(/^bytes([0-9]*)$/),Yr=new RegExp(/^(u?int)([0-9]*)$/);let Xr=null,Zr=1024;class Qr{#ct(t){if(t.isArray())return new tn(this.#ct(t.arrayChildren),t.arrayLength,t.name);if(t.isTuple())return new pn(t.components.map((t=>this.#ct(t))),t.name);switch(t.baseType){case"address":return new Ye(t.name);case"bool":return new en(t.name);case"string":return new dn(t.name);case"bytes":return new rn(t.name);case"":return new on(t.name)}let e=t.type.match(Yr);if(e){let n=parseInt(e[2]||"256");return N(0!==n&&n<=256&&n%8==0,"invalid "+e[1]+" bit length","param",t),new hn(n/8,"int"===e[1],t.name)}if(e=t.type.match(Wr),e){let n=parseInt(e[1]);return N(0!==n&&n<=32,"invalid bytes length","param",t),new sn(n,t.name)}N(!1,"invalid type","type",t.type)}getDefaultValue(t){const e=t.map((t=>this.#ct(Br.from(t))));return new pn(e,"_").defaultValue()}encode(t,e){P(e.length,t.length,"types/values length mismatch");const n=t.map((t=>this.#ct(Br.from(t)))),r=new pn(n,"_"),s=new Ht;return r.encode(s,e),s.data}decode(t,e,n){const r=t.map((t=>this.#ct(Br.from(t))));return new pn(r,"_").decode(new Vt(e,n,Zr))}static _setDefaultMaxInflation(t){N("number"==typeof t&&Number.isInteger(t),"invalid defaultMaxInflation factor","value",t),Zr=t}static defaultAbiCoder(){return null==Xr&&(Xr=new Qr),Xr}static getBuiltinCallException(t,e,n){return function(t,e,n,r){let s="missing revert data",i=null,a=null;if(n){s="execution reverted";const t=O(n);if(n=_(n),0===t.length)s+=" (no data present; likely require(false) occurred",i="require(false)";else if(t.length%32!=4)s+=" (could not decode reason; invalid data length)";else if("0x08c379a0"===_(t.slice(0,4)))try{i=r.decode(["string"],t.slice(4))[0],a={signature:"Error(string)",name:"Error",args:[i]},s+=`: ${JSON.stringify(i)}`}catch(t){s+=" (could not decode reason; invalid string data)"}else if("0x4e487b71"===_(t.slice(0,4)))try{const e=Number(r.decode(["uint256"],t.slice(4))[0]);a={signature:"Panic(uint256)",name:"Panic",args:[e]},i=`Panic due to ${qr.get(e)||"UNKNOWN"}(${e})`,s+=`: ${i}`}catch(t){s+=" (could not decode panic code)"}else s+=" (unknown custom error)"}const o={to:e.to?Me(e.to):null,data:e.data||"0x"};return e.from&&(o.from=Me(e.from)),v(s,"CALL_EXCEPTION",{action:t,data:n,reason:i,transaction:o,invocation:null,revert:a})}(t,e,n,Qr.defaultAbiCoder())}}class ts{fragment;name;signature;topic;args;constructor(t,e,n){const r=t.name,s=t.format();y(this,{fragment:t,name:r,signature:s,topic:e,args:n})}}class es{fragment;name;args;signature;selector;value;constructor(t,e,n,r){const s=t.name,i=t.format();y(this,{fragment:t,name:s,args:n,signature:i,selector:e,value:r})}}class ns{fragment;name;args;signature;selector;constructor(t,e,n){const r=t.name,s=t.format();y(this,{fragment:t,name:r,args:n,signature:s,selector:e})}}class rs{hash;_isIndexed;static isIndexed(t){return!(!t||!t._isIndexed)}constructor(t){y(this,{hash:t,_isIndexed:!0})}}const ss={0:"generic panic",1:"assert(false)",17:"arithmetic overflow",18:"division or modulo by zero",33:"enum overflow",34:"invalid encoded storage byte array accessed",49:"out-of-bounds array access; popping on an empty array",50:"out-of-bounds access of an array or bytesN",65:"out of memory",81:"uninitialized function"},is={"0x08c379a0":{signature:"Error(string)",name:"Error",inputs:["string"],reason:t=>`reverted with reason string ${JSON.stringify(t)}`},"0x4e487b71":{signature:"Panic(uint256)",name:"Panic",inputs:["uint256"],reason:t=>{let e="unknown panic code";return t>=0&&t<=255&&ss[t.toString()]&&(e=ss[t.toString()]),`reverted with panic code 0x${t.toString(16)} (${e})`}}};class as{fragments;deploy;fallback;receive;#lt;#ut;#ht;#dt;constructor(t){let e=[];e="string"==typeof t?JSON.parse(t):t,this.#ht=new Map,this.#lt=new Map,this.#ut=new Map;const n=[];for(const t of e)try{n.push(Gr.from(t))}catch(e){console.log(`[Warning] Invalid Fragment ${JSON.stringify(t)}:`,e.message)}y(this,{fragments:Object.freeze(n)});let r=null,s=!1;this.#dt=this.getAbiCoder(),this.fragments.forEach(((t,e)=>{let n;switch(t.type){case"constructor":return this.deploy?void console.log("duplicate definition - constructor"):void y(this,{deploy:t});case"fallback":return void(0===t.inputs.length?s=!0:(N(!r||t.payable!==r.payable,"conflicting fallback fragments",`fragments[${e}]`,t),r=t,s=r.payable));case"function":n=this.#ht;break;case"event":n=this.#ut;break;case"error":n=this.#lt;break;default:return}const i=t.format();n.has(i)||n.set(i,t)})),this.deploy||y(this,{deploy:Hr.from("constructor()")}),y(this,{fallback:r,receive:s})}format(t){const e=t?"minimal":"full";return this.fragments.map((t=>t.format(e)))}formatJson(){const t=this.fragments.map((t=>t.format("json")));return JSON.stringify(t.map((t=>JSON.parse(t))))}getAbiCoder(){return Qr.defaultAbiCoder()}#pt(t,e,n){if(S(t)){const e=t.toLowerCase();for(const t of this.#ht.values())if(e===t.selector)return t;return null}if(-1===t.indexOf("(")){const r=[];for(const[e,n]of this.#ht)e.split("(")[0]===t&&r.push(n);if(e){const t=e.length>0?e[e.length-1]:null;let n=e.length,s=!0;We.isTyped(t)&&"overrides"===t.type&&(s=!1,n--);for(let t=r.length-1;t>=0;t--){const e=r[t].inputs.length;e===n||s&&e===n-1||r.splice(t,1)}for(let t=r.length-1;t>=0;t--){const n=r[t].inputs;for(let s=0;s<e.length;s++)if(We.isTyped(e[s])){if(s>=n.length){if("overrides"===e[s].type)continue;r.splice(t,1);break}if(e[s].type!==n[s].baseType){r.splice(t,1);break}}}}if(1===r.length&&e&&e.length!==r[0].inputs.length){const t=e[e.length-1];(null==t||Array.isArray(t)||"object"!=typeof t)&&r.splice(0,1)}if(0===r.length)return null;if(r.length>1&&n){N(!1,`ambiguous function description (i.e. matches ${r.map((t=>JSON.stringify(t.format()))).join(", ")})`,"key",t)}return r[0]}const r=this.#ht.get(zr.from(t).format());return r||null}getFunctionName(t){const e=this.#pt(t,null,!1);return N(e,"no matching function","key",t),e.name}hasFunction(t){return!!this.#pt(t,null,!1)}getFunction(t,e){return this.#pt(t,e||null,!0)}forEachFunction(t){const e=Array.from(this.#ht.keys());e.sort(((t,e)=>t.localeCompare(e)));for(let n=0;n<e.length;n++){const r=e[n];t(this.#ht.get(r),n)}}#ft(t,e,n){if(S(t)){const e=t.toLowerCase();for(const t of this.#ut.values())if(e===t.topicHash)return t;return null}if(-1===t.indexOf("(")){const r=[];for(const[e,n]of this.#ut)e.split("(")[0]===t&&r.push(n);if(e){for(let t=r.length-1;t>=0;t--)r[t].inputs.length<e.length&&r.splice(t,1);for(let t=r.length-1;t>=0;t--){const n=r[t].inputs;for(let s=0;s<e.length;s++)if(We.isTyped(e[s])&&e[s].type!==n[s].baseType){r.splice(t,1);break}}}if(0===r.length)return null;if(r.length>1&&n){N(!1,`ambiguous event description (i.e. matches ${r.map((t=>JSON.stringify(t.format()))).join(", ")})`,"key",t)}return r[0]}const r=this.#ut.get(Kr.from(t).format());return r||null}getEventName(t){const e=this.#ft(t,null,!1);return N(e,"no matching event","key",t),e.name}hasEvent(t){return!!this.#ft(t,null,!1)}getEvent(t,e){return this.#ft(t,e||null,!0)}forEachEvent(t){const e=Array.from(this.#ut.keys());e.sort(((t,e)=>t.localeCompare(e)));for(let n=0;n<e.length;n++){const r=e[n];t(this.#ut.get(r),n)}}getError(t,e){if(S(t)){const e=t.toLowerCase();if(is[e])return jr.from(is[e].signature);for(const t of this.#lt.values())if(e===t.selector)return t;return null}if(-1===t.indexOf("(")){const e=[];for(const[n,r]of this.#lt)n.split("(")[0]===t&&e.push(r);if(0===e.length)return"Error"===t?jr.from("error Error(string)"):"Panic"===t?jr.from("error Panic(uint256)"):null;if(e.length>1){N(!1,`ambiguous error description (i.e. ${e.map((t=>JSON.stringify(t.format()))).join(", ")})`,"name",t)}return e[0]}if("Error(string)"===(t=jr.from(t).format()))return jr.from("error Error(string)");if("Panic(uint256)"===t)return jr.from("error Panic(uint256)");const n=this.#lt.get(t);return n||null}forEachError(t){const e=Array.from(this.#lt.keys());e.sort(((t,e)=>t.localeCompare(e)));for(let n=0;n<e.length;n++){const r=e[n];t(this.#lt.get(r),n)}}_decodeParams(t,e){return this.#dt.decode(t,e)}_encodeParams(t,e){return this.#dt.encode(t,e)}encodeDeploy(t){return this._encodeParams(this.deploy.inputs,t||[])}decodeErrorResult(t,e){if("string"==typeof t){const e=this.getError(t);N(e,"unknown error","fragment",t),t=e}return N(L(e,0,4)===t.selector,`data signature does not match error ${t.name}.`,"data",e),this._decodeParams(t.inputs,L(e,4))}encodeErrorResult(t,e){if("string"==typeof t){const e=this.getError(t);N(e,"unknown error","fragment",t),t=e}return U([t.selector,this._encodeParams(t.inputs,e||[])])}decodeFunctionData(t,e){if("string"==typeof t){const e=this.getFunction(t);N(e,"unknown function","fragment",t),t=e}return N(L(e,0,4)===t.selector,`data signature does not match function ${t.name}.`,"data",e),this._decodeParams(t.inputs,L(e,4))}encodeFunctionData(t,e){if("string"==typeof t){const e=this.getFunction(t);N(e,"unknown function","fragment",t),t=e}return U([t.selector,this._encodeParams(t.inputs,e||[])])}decodeFunctionResult(t,e){if("string"==typeof t){const e=this.getFunction(t);N(e,"unknown function","fragment",t),t=e}let n="invalid length for result data";const r=I(e);if(r.length%32==0)try{return this.#dt.decode(t.outputs,r)}catch(t){n="could not decode result data"}E(!1,n,"BAD_DATA",{value:_(r),info:{method:t.name,signature:t.format()}})}makeError(t,e){const n=O(t,"data"),r=Qr.getBuiltinCallException("call",e,n);if(r.message.startsWith("execution reverted (unknown custom error)")){const t=_(n.slice(0,4)),e=this.getError(t);if(e)try{const t=this.#dt.decode(e.inputs,n.slice(4));r.revert={name:e.name,signature:e.format(),args:t},r.reason=r.revert.signature,r.message=`execution reverted: ${r.reason}`}catch(t){r.message="execution reverted (coult not decode custom error)"}}const s=this.parseTransaction(e);return s&&(r.invocation={method:s.name,signature:s.signature,args:s.args}),r}encodeFunctionResult(t,e){if("string"==typeof t){const e=this.getFunction(t);N(e,"unknown function","fragment",t),t=e}return _(this.#dt.encode(t.outputs,e||[]))}encodeFilterTopics(t,e){if("string"==typeof t){const e=this.getEvent(t);N(e,"unknown event","eventFragment",t),t=e}E(e.length<=t.inputs.length,`too many arguments for ${t.format()}`,"UNEXPECTED_ARGUMENT",{count:e.length,expectedCount:t.inputs.length});const n=[];t.anonymous||n.push(t.topicHash);const r=(t,e)=>"string"===t.type?fn(e):"bytes"===t.type?Qt(_(e)):("bool"===t.type&&"boolean"==typeof e?e=e?"0x01":"0x00":t.type.match(/^u?int/)?e=W(e):t.type.match(/^bytes/)?e=D(e,32,!1):"address"===t.type&&this.#dt.encode(["address"],[e]),B(_(e),32));for(e.forEach(((e,s)=>{const i=t.inputs[s];i.indexed?null==e?n.push(null):"array"===i.baseType||"tuple"===i.baseType?N(!1,"filtering with tuples or arrays not supported","contract."+i.name,e):Array.isArray(e)?n.push(e.map((t=>r(i,t)))):n.push(r(i,e)):N(null==e,"cannot filter non-indexed parameters; must be null","contract."+i.name,e)}));n.length&&null===n[n.length-1];)n.pop();return n}encodeEventLog(t,e){if("string"==typeof t){const e=this.getEvent(t);N(e,"unknown event","eventFragment",t),t=e}const n=[],r=[],s=[];return t.anonymous||n.push(t.topicHash),N(e.length===t.inputs.length,"event arguments/values mismatch","values",e),t.inputs.forEach(((t,i)=>{const a=e[i];if(t.indexed)if("string"===t.type)n.push(fn(a));else if("bytes"===t.type)n.push(Qt(a));else{if("tuple"===t.baseType||"array"===t.baseType)throw new Error("not implemented");n.push(this.#dt.encode([t.type],[a]))}else r.push(t),s.push(a)})),{data:this.#dt.encode(r,s),topics:n}}decodeEventLog(t,e,n){if("string"==typeof t){const e=this.getEvent(t);N(e,"unknown event","eventFragment",t),t=e}if(null!=n&&!t.anonymous){const e=t.topicHash;N(S(n[0],32)&&n[0].toLowerCase()===e,"fragment/topic mismatch","topics[0]",n[0]),n=n.slice(1)}const r=[],s=[],i=[];t.inputs.forEach(((t,e)=>{t.indexed?"string"===t.type||"bytes"===t.type||"tuple"===t.baseType||"array"===t.baseType?(r.push(Br.from({type:"bytes32",name:t.name})),i.push(!0)):(r.push(t),i.push(!1)):(s.push(t),i.push(!1))}));const a=null!=n?this.#dt.decode(r,U(n)):null,o=this.#dt.decode(s,e,!0),c=[],l=[];let u=0,h=0;return t.inputs.forEach(((t,e)=>{let n=null;if(t.indexed)if(null==a)n=new rs(null);else if(i[e])n=new rs(a[h++]);else try{n=a[h++]}catch(t){n=t}else try{n=o[u++]}catch(t){n=t}c.push(n),l.push(t.name||null)})),Mt.fromItems(c,l)}parseTransaction(t){const e=O(t.data,"tx.data"),n=H(null!=t.value?t.value:0,"tx.value"),r=this.getFunction(_(e.slice(0,4)));if(!r)return null;const s=this.#dt.decode(r.inputs,e.slice(4));return new es(r,r.selector,s,n)}parseCallResult(t){throw new Error("@TODO")}parseLog(t){const e=this.getEvent(t.topics[0]);return!e||e.anonymous?null:new ts(e,e.topicHash,this.decodeEventLog(e,t.data,t.topics))}parseError(t){const e=_(t),n=this.getError(L(e,0,4));if(!n)return null;const r=this.#dt.decode(n.inputs,L(e,4));return new ns(n,n.selector,r)}static from(t){return t instanceof as?t:"string"==typeof t?new as(JSON.parse(t)):"function"==typeof t.formatJson?new as(t.formatJson()):"function"==typeof t.format?new as(t.format("json")):new as(t)}}const os=BigInt(0);function cs(t){return null==t?null:t}function ls(t){return null==t?null:t.toString()}class us{gasPrice;maxFeePerGas;maxPriorityFeePerGas;constructor(t,e,n){y(this,{gasPrice:cs(t),maxFeePerGas:cs(e),maxPriorityFeePerGas:cs(n)})}toJSON(){const{gasPrice:t,maxFeePerGas:e,maxPriorityFeePerGas:n}=this;return{_type:"FeeData",gasPrice:ls(t),maxFeePerGas:ls(e),maxPriorityFeePerGas:ls(n)}}}function hs(t){const e={};t.to&&(e.to=t.to),t.from&&(e.from=t.from),t.data&&(e.data=_(t.data));const n="chainId,gasLimit,gasPrice,maxFeePerBlobGas,maxFeePerGas,maxPriorityFeePerGas,value".split(/,/);for(const r of n)r in t&&null!=t[r]&&(e[r]=H(t[r],`request.${r}`));const r="type,nonce".split(/,/);for(const n of r)n in t&&null!=t[n]&&(e[n]=q(t[n],`request.${n}`));return t.accessList&&(e.accessList=En(t.accessList)),"blockTag"in t&&(e.blockTag=t.blockTag),"enableCcipRead"in t&&(e.enableCcipRead=!!t.enableCcipRead),"customData"in t&&(e.customData=t.customData),"blobVersionedHashes"in t&&t.blobVersionedHashes&&(e.blobVersionedHashes=t.blobVersionedHashes.slice()),"kzg"in t&&(e.kzg=t.kzg),"blobs"in t&&t.blobs&&(e.blobs=t.blobs.map((t=>x(t)?_(t):Object.assign({},t)))),e}class ds{provider;number;hash;timestamp;parentHash;parentBeaconBlockRoot;nonce;difficulty;gasLimit;gasUsed;stateRoot;receiptsRoot;blobGasUsed;excessBlobGas;miner;prevRandao;extraData;baseFeePerGas;#gt;constructor(t,e){this.#gt=t.transactions.map((t=>"string"!=typeof t?new gs(t,e):t)),y(this,{provider:e,hash:cs(t.hash),number:t.number,timestamp:t.timestamp,parentHash:t.parentHash,parentBeaconBlockRoot:t.parentBeaconBlockRoot,nonce:t.nonce,difficulty:t.difficulty,gasLimit:t.gasLimit,gasUsed:t.gasUsed,blobGasUsed:t.blobGasUsed,excessBlobGas:t.excessBlobGas,miner:t.miner,prevRandao:cs(t.prevRandao),extraData:t.extraData,baseFeePerGas:cs(t.baseFeePerGas),stateRoot:t.stateRoot,receiptsRoot:t.receiptsRoot})}get transactions(){return this.#gt.map((t=>"string"==typeof t?t:t.hash))}get prefetchedTransactions(){const t=this.#gt.slice();return 0===t.length?[]:(E("object"==typeof t[0],"transactions were not prefetched with block request","UNSUPPORTED_OPERATION",{operation:"transactionResponses()"}),t)}toJSON(){const{baseFeePerGas:t,difficulty:e,extraData:n,gasLimit:r,gasUsed:s,hash:i,miner:a,prevRandao:o,nonce:c,number:l,parentHash:u,parentBeaconBlockRoot:h,stateRoot:d,receiptsRoot:p,timestamp:f,transactions:g}=this;return{_type:"Block",baseFeePerGas:ls(t),difficulty:ls(e),extraData:n,gasLimit:ls(r),gasUsed:ls(s),blobGasUsed:ls(this.blobGasUsed),excessBlobGas:ls(this.excessBlobGas),hash:i,miner:a,prevRandao:o,nonce:c,number:l,parentHash:u,timestamp:f,parentBeaconBlockRoot:h,stateRoot:d,receiptsRoot:p,transactions:g}}[Symbol.iterator](){let t=0;const e=this.transactions;return{next:()=>t<this.length?{value:e[t++],done:!1}:{value:void 0,done:!0}}}get length(){return this.#gt.length}get date(){return null==this.timestamp?null:new Date(1e3*this.timestamp)}async getTransaction(t){let e;if("number"==typeof t)e=this.#gt[t];else{const n=t.toLowerCase();for(const t of this.#gt){if("string"==typeof t){if(t!==n)continue;e=t;break}if(t.hash!==n){e=t;break}}}if(null==e)throw new Error("no such tx");return"string"==typeof e?await this.provider.getTransaction(e):e}getPrefetchedTransaction(t){const e=this.prefetchedTransactions;if("number"==typeof t)return e[t];t=t.toLowerCase();for(const n of e)if(n.hash===t)return n;N(!1,"no matching transaction","indexOrHash",t)}isMined(){return!!this.hash}isLondon(){return!!this.baseFeePerGas}orphanedEvent(){if(!this.isMined())throw new Error("");return{orphan:"drop-block",hash:(t=this).hash,number:t.number};var t}}class ps{provider;transactionHash;blockHash;blockNumber;removed;address;data;topics;index;transactionIndex;constructor(t,e){this.provider=e;const n=Object.freeze(t.topics.slice());y(this,{transactionHash:t.transactionHash,blockHash:t.blockHash,blockNumber:t.blockNumber,removed:t.removed,address:t.address,data:t.data,topics:n,index:t.index,transactionIndex:t.transactionIndex})}toJSON(){const{address:t,blockHash:e,blockNumber:n,data:r,index:s,removed:i,topics:a,transactionHash:o,transactionIndex:c}=this;return{_type:"log",address:t,blockHash:e,blockNumber:n,data:r,index:s,removed:i,topics:a,transactionHash:o,transactionIndex:c}}async getBlock(){const t=await this.provider.getBlock(this.blockHash);return E(!!t,"failed to find transaction","UNKNOWN_ERROR",{}),t}async getTransaction(){const t=await this.provider.getTransaction(this.transactionHash);return E(!!t,"failed to find transaction","UNKNOWN_ERROR",{}),t}async getTransactionReceipt(){const t=await this.provider.getTransactionReceipt(this.transactionHash);return E(!!t,"failed to find transaction receipt","UNKNOWN_ERROR",{}),t}removedEvent(){return{orphan:"drop-log",log:{transactionHash:(t=this).transactionHash,blockHash:t.blockHash,blockNumber:t.blockNumber,address:t.address,data:t.data,topics:Object.freeze(t.topics.slice()),index:t.index}};var t}}class fs{provider;to;from;contractAddress;hash;index;blockHash;blockNumber;logsBloom;gasUsed;blobGasUsed;cumulativeGasUsed;gasPrice;blobGasPrice;type;status;root;#yt;constructor(t,e){this.#yt=Object.freeze(t.logs.map((t=>new ps(t,e))));let n=os;null!=t.effectiveGasPrice?n=t.effectiveGasPrice:null!=t.gasPrice&&(n=t.gasPrice),y(this,{provider:e,to:t.to,from:t.from,contractAddress:t.contractAddress,hash:t.hash,index:t.index,blockHash:t.blockHash,blockNumber:t.blockNumber,logsBloom:t.logsBloom,gasUsed:t.gasUsed,cumulativeGasUsed:t.cumulativeGasUsed,blobGasUsed:t.blobGasUsed,gasPrice:n,blobGasPrice:t.blobGasPrice,type:t.type,status:t.status,root:t.root})}get logs(){return this.#yt}toJSON(){const{to:t,from:e,contractAddress:n,hash:r,index:s,blockHash:i,blockNumber:a,logsBloom:o,logs:c,status:l,root:u}=this;return{_type:"TransactionReceipt",blockHash:i,blockNumber:a,contractAddress:n,cumulativeGasUsed:ls(this.cumulativeGasUsed),from:e,gasPrice:ls(this.gasPrice),blobGasUsed:ls(this.blobGasUsed),blobGasPrice:ls(this.blobGasPrice),gasUsed:ls(this.gasUsed),hash:r,index:s,logs:c,logsBloom:o,root:u,status:l,to:t}}get length(){return this.logs.length}[Symbol.iterator](){let t=0;return{next:()=>t<this.length?{value:this.logs[t++],done:!1}:{value:void 0,done:!0}}}get fee(){return this.gasUsed*this.gasPrice}async getBlock(){const t=await this.provider.getBlock(this.blockHash);if(null==t)throw new Error("TODO");return t}async getTransaction(){const t=await this.provider.getTransaction(this.hash);if(null==t)throw new Error("TODO");return t}async getResult(){return await this.provider.getTransactionResult(this.hash)}async confirmations(){return await this.provider.getBlockNumber()-this.blockNumber+1}removedEvent(){return ms(this)}reorderedEvent(t){return E(!t||t.isMined(),"unmined 'other' transction cannot be orphaned","UNSUPPORTED_OPERATION",{operation:"reorderedEvent(other)"}),ys(this,t)}}class gs{provider;blockNumber;blockHash;index;hash;type;to;from;nonce;gasLimit;gasPrice;maxPriorityFeePerGas;maxFeePerGas;maxFeePerBlobGas;data;value;chainId;signature;accessList;blobVersionedHashes;#mt;constructor(t,e){this.provider=e,this.blockNumber=null!=t.blockNumber?t.blockNumber:null,this.blockHash=null!=t.blockHash?t.blockHash:null,this.hash=t.hash,this.index=t.index,this.type=t.type,this.from=t.from,this.to=t.to||null,this.gasLimit=t.gasLimit,this.nonce=t.nonce,this.data=t.data,this.value=t.value,this.gasPrice=t.gasPrice,this.maxPriorityFeePerGas=null!=t.maxPriorityFeePerGas?t.maxPriorityFeePerGas:null,this.maxFeePerGas=null!=t.maxFeePerGas?t.maxFeePerGas:null,this.maxFeePerBlobGas=null!=t.maxFeePerBlobGas?t.maxFeePerBlobGas:null,this.chainId=t.chainId,this.signature=t.signature,this.accessList=null!=t.accessList?t.accessList:null,this.blobVersionedHashes=null!=t.blobVersionedHashes?t.blobVersionedHashes:null,this.#mt=-1}toJSON(){const{blockNumber:t,blockHash:e,index:n,hash:r,type:s,to:i,from:a,nonce:o,data:c,signature:l,accessList:u,blobVersionedHashes:h}=this;return{_type:"TransactionResponse",accessList:u,blockNumber:t,blockHash:e,blobVersionedHashes:h,chainId:ls(this.chainId),data:c,from:a,gasLimit:ls(this.gasLimit),gasPrice:ls(this.gasPrice),hash:r,maxFeePerGas:ls(this.maxFeePerGas),maxPriorityFeePerGas:ls(this.maxPriorityFeePerGas),maxFeePerBlobGas:ls(this.maxFeePerBlobGas),nonce:o,signature:l,to:i,index:n,type:s,value:ls(this.value)}}async getBlock(){let t=this.blockNumber;if(null==t){const e=await this.getTransaction();e&&(t=e.blockNumber)}if(null==t)return null;const e=this.provider.getBlock(t);if(null==e)throw new Error("TODO");return e}async getTransaction(){return this.provider.getTransaction(this.hash)}async confirmations(){if(null==this.blockNumber){const{tx:t,blockNumber:e}=await g({tx:this.getTransaction(),blockNumber:this.provider.getBlockNumber()});return null==t||null==t.blockNumber?0:e-t.blockNumber+1}return await this.provider.getBlockNumber()-this.blockNumber+1}async wait(t,e){const n=null==t?1:t,r=null==e?0:e;let s=this.#mt,i=-1,a=-1===s;const o=async()=>{if(a)return null;const{blockNumber:t,nonce:e}=await g({blockNumber:this.provider.getBlockNumber(),nonce:this.provider.getTransactionCount(this.from)});if(e<this.nonce)return void(s=t);if(a)return null;const r=await this.getTransaction();if(!r||null==r.blockNumber)for(-1===i&&(i=s-3,i<this.#mt&&(i=this.#mt));i<=t;){if(a)return null;const e=await this.provider.getBlock(i,!0);if(null==e)return;for(const t of e)if(t===this.hash)return;for(let r=0;r<e.length;r++){const i=await e.getTransaction(r);if(i.from===this.from&&i.nonce===this.nonce){if(a)return null;const e=await this.provider.getTransactionReceipt(i.hash);if(null==e)return;if(t-e.blockNumber+1<n)return;let r="replaced";i.data===this.data&&i.to===this.to&&i.value===this.value?r="repriced":"0x"===i.data&&i.from===i.to&&i.value===os&&(r="cancelled"),E(!1,"transaction was replaced","TRANSACTION_REPLACED",{cancelled:"replaced"===r||"cancelled"===r,reason:r,replacement:i.replaceableTransaction(s),hash:i.hash,receipt:e})}}i++}},c=t=>{if(null==t||0!==t.status)return t;E(!1,"transaction execution reverted","CALL_EXCEPTION",{action:"sendTransaction",data:null,reason:null,invocation:null,revert:null,transaction:{to:t.to,from:t.from,data:""},receipt:t})},l=await this.provider.getTransactionReceipt(this.hash);if(0===n)return c(l);if(l){if(await l.confirmations()>=n)return c(l)}else if(await o(),0===n)return null;const u=new Promise(((t,e)=>{const i=[],l=()=>{i.forEach((t=>t()))};if(i.push((()=>{a=!0})),r>0){const t=setTimeout((()=>{l(),e(v("wait for transaction timeout","TIMEOUT"))}),r);i.push((()=>{clearTimeout(t)}))}const u=async r=>{if(await r.confirmations()>=n){l();try{t(c(r))}catch(t){e(t)}}};if(i.push((()=>{this.provider.off(this.hash,u)})),this.provider.on(this.hash,u),s>=0){const t=async()=>{try{await o()}catch(t){if(b(t,"TRANSACTION_REPLACED"))return l(),void e(t)}a||this.provider.once("block",t)};i.push((()=>{this.provider.off("block",t)})),this.provider.once("block",t)}}));return await u}isMined(){return null!=this.blockHash}isLegacy(){return 0===this.type}isBerlin(){return 1===this.type}isLondon(){return 2===this.type}isCancun(){return 3===this.type}removedEvent(){return E(this.isMined(),"unmined transaction canot be orphaned","UNSUPPORTED_OPERATION",{operation:"removeEvent()"}),ms(this)}reorderedEvent(t){return E(this.isMined(),"unmined transaction canot be orphaned","UNSUPPORTED_OPERATION",{operation:"removeEvent()"}),E(!t||t.isMined(),"unmined 'other' transaction canot be orphaned","UNSUPPORTED_OPERATION",{operation:"removeEvent()"}),ys(this,t)}replaceableTransaction(t){N(Number.isInteger(t)&&t>=0,"invalid startBlock","startBlock",t);const e=new gs(this,this.provider);return e.#mt=t,e}}function ys(t,e){return{orphan:"reorder-transaction",tx:t,other:e}}function ms(t){return{orphan:"drop-transaction",tx:t}}class bs extends ps{interface;fragment;args;constructor(t,e,n){super(t,t.provider);y(this,{args:e.decodeEventLog(n,t.data,t.topics),fragment:n,interface:e})}get eventName(){return this.fragment.name}get eventSignature(){return this.fragment.format()}}class ws extends ps{error;constructor(t,e){super(t,t.provider),y(this,{error:e})}}class vs extends fs{#bt;constructor(t,e,n){super(n,e),this.#bt=t}get logs(){return super.logs.map((t=>{const e=t.topics.length?this.#bt.getEvent(t.topics[0]):null;if(e)try{return new bs(t,this.#bt,e)}catch(e){return new ws(t,e)}return t}))}}class Es extends gs{#bt;constructor(t,e,n){super(n,e),this.#bt=t}async wait(t,e){const n=await super.wait(t,e);return null==n?null:new vs(this.#bt,this.provider,n)}}class Ns extends st{log;constructor(t,e,n,r){super(t,e,n),y(this,{log:r})}async getBlock(){return await this.log.getBlock()}async getTransaction(){return await this.log.getTransaction()}async getTransactionReceipt(){return await this.log.getTransactionReceipt()}}class Ps extends Ns{constructor(t,e,n,r,s){super(t,e,n,new bs(s,t.interface,r));y(this,{args:t.interface.decodeEventLog(r,this.log.data,this.log.topics),fragment:r})}get eventName(){return this.fragment.name}get eventSignature(){return this.fragment.format()}}const ks=BigInt(0);function Ts(t){return t&&"function"==typeof t.call}function Rs(t){return t&&"function"==typeof t.estimateGas}function As(t){return t&&"function"==typeof t.resolveName}function Os(t){return t&&"function"==typeof t.sendTransaction}function Is(t){if(null!=t){if(As(t))return t;if(t.provider)return t.provider}}class Ss{#wt;fragment;constructor(t,e,n){if(y(this,{fragment:e}),e.inputs.length<n.length)throw new Error("too many arguments");const r=xs(t.runner,"resolveName"),s=As(r)?r:null;this.#wt=async function(){const r=await Promise.all(e.inputs.map(((t,e)=>null==n[e]?null:t.walkAsync(n[e],((t,e)=>"address"===t?Array.isArray(e)?Promise.all(e.map((t=>He(t,s)))):He(e,s):e)))));return t.interface.encodeFilterTopics(e,r)}()}getTopicFilter(){return this.#wt}}function xs(t,e){return null==t?null:"function"==typeof t[e]?t:t.provider&&"function"==typeof t.provider[e]?t.provider:null}function Cs(t){return null==t?null:t.provider||null}async function _s(t,e){const n=We.dereference(t,"overrides");N("object"==typeof n,"invalid overrides parameter","overrides",t);const r=hs(n);return N(null==r.to||(e||[]).indexOf("to")>=0,"cannot override to","overrides.to",r.to),N(null==r.data||(e||[]).indexOf("data")>=0,"cannot override data","overrides.data",r.data),r.from&&(r.from=r.from),r}function Us(t){const e=async function(e){const n=await _s(e,["data"]);n.to=await t.getAddress(),n.from&&(n.from=await He(n.from,Is(t.runner)));const r=t.interface,s=H(n.value||ks,"overrides.value")===ks,i="0x"===(n.data||"0x");!r.fallback||r.fallback.payable||!r.receive||i||s||N(!1,"cannot send data to receive or send value to non-payable fallback","overrides",e),N(r.fallback||i,"cannot send data to receive-only contract","overrides.data",n.data);return N(r.receive||r.fallback&&r.fallback.payable||s,"cannot send value to non-payable fallback","overrides.value",n.value),N(r.fallback||i,"cannot send data to receive-only contract","overrides.data",n.data),n},n=async function(n){const r=t.runner;E(Os(r),"contract runner does not support sending transactions","UNSUPPORTED_OPERATION",{operation:"sendTransaction"});const s=await r.sendTransaction(await e(n)),i=Cs(t.runner);return new Es(t.interface,i,s)},r=async t=>await n(t);return y(r,{_contract:t,estimateGas:async function(n){const r=xs(t.runner,"estimateGas");return E(Rs(r),"contract runner does not support gas estimation","UNSUPPORTED_OPERATION",{operation:"estimateGas"}),await r.estimateGas(await e(n))},populateTransaction:e,send:n,staticCall:async function(n){const r=xs(t.runner,"call");E(Ts(r),"contract runner does not support calling","UNSUPPORTED_OPERATION",{operation:"call"});const s=await e(n);try{return await r.call(s)}catch(e){if(w(e)&&e.data)throw t.interface.makeError(e.data,s);throw e}}}),r}function Fs(t,e){const n=function(...n){const r=t.interface.getFunction(e,n);return E(r,"no matching fragment","UNSUPPORTED_OPERATION",{operation:"fragment",info:{key:e,args:n}}),r},r=async function(...e){const r=n(...e);let s={};if(r.inputs.length+1===e.length&&(s=await _s(e.pop()),s.from&&(s.from=await He(s.from,Is(t.runner)))),r.inputs.length!==e.length)throw new Error("internal error: fragment inputs doesn't match arguments; should not happen");const i=await async function(t,e,n){const r=xs(t,"resolveName"),s=As(r)?r:null;return await Promise.all(e.map(((t,e)=>t.walkAsync(n[e],((t,e)=>(e=We.dereference(e,t),"address"===t?He(e,s):e))))))}(t.runner,r.inputs,e);return Object.assign({},s,await g({to:t.getAddress(),data:t.interface.encodeFunctionData(r,i)}))},s=async function(...t){const e=await a(...t);return 1===e.length?e[0]:e},i=async function(...e){const n=t.runner;E(Os(n),"contract runner does not support sending transactions","UNSUPPORTED_OPERATION",{operation:"sendTransaction"});const s=await n.sendTransaction(await r(...e)),i=Cs(t.runner);return new Es(t.interface,i,s)},a=async function(...e){const s=xs(t.runner,"call");E(Ts(s),"contract runner does not support calling","UNSUPPORTED_OPERATION",{operation:"call"});const i=await r(...e);let a="0x";try{a=await s.call(i)}catch(e){if(w(e)&&e.data)throw t.interface.makeError(e.data,i);throw e}const o=n(...e);return t.interface.decodeFunctionResult(o,a)},o=async(...t)=>n(...t).constant?await s(...t):await i(...t);return y(o,{name:t.interface.getFunctionName(e),_contract:t,_key:e,getFragment:n,estimateGas:async function(...e){const n=xs(t.runner,"estimateGas");return E(Rs(n),"contract runner does not support gas estimation","UNSUPPORTED_OPERATION",{operation:"estimateGas"}),await n.estimateGas(await r(...e))},populateTransaction:r,send:i,staticCall:s,staticCallResult:a}),Object.defineProperty(o,"fragment",{configurable:!1,enumerable:!0,get:()=>{const n=t.interface.getFunction(e);return E(n,"no matching fragment","UNSUPPORTED_OPERATION",{operation:"fragment",info:{key:e}}),n}}),o}const Ls=Symbol.for("_ethersInternal_contract"),Ds=new WeakMap;function Bs(t){return Ds.get(t[Ls])}async function Gs(t,e){let n,r=null;if(Array.isArray(e)){const r=function(e){if(S(e,32))return e;const n=t.interface.getEvent(e);return N(n,"unknown fragment","name",e),n.topicHash};n=e.map((t=>null==t?null:Array.isArray(t)?t.map(r):r(t)))}else"*"===e?n=[null]:"string"==typeof e?S(e,32)?n=[e]:(r=t.interface.getEvent(e),N(r,"unknown fragment","event",e),n=[r.topicHash]):(s=e)&&"object"==typeof s&&"getTopicFilter"in s&&"function"==typeof s.getTopicFilter&&s.fragment?n=await e.getTopicFilter():"fragment"in e?(r=e.fragment,n=[r.topicHash]):N(!1,"unknown event name","event",e);var s;n=n.map((t=>{if(null==t)return null;if(Array.isArray(t)){const e=Array.from(new Set(t.map((t=>t.toLowerCase()))).values());return 1===e.length?e[0]:(e.sort(),e)}return t.toLowerCase()}));return{fragment:r,tag:n.map((t=>null==t?"null":Array.isArray(t)?t.join("|"):t)).join("&"),topics:n}}async function $s(t,e){const{subs:n}=Bs(t);return n.get((await Gs(t,e)).tag)||null}async function Ms(t,e,n){const r=Cs(t.runner);E(r,"contract runner does not support subscribing","UNSUPPORTED_OPERATION",{operation:e});const{fragment:s,tag:i,topics:a}=await Gs(t,n),{addr:o,subs:c}=Bs(t);let l=c.get(i);if(!l){const e={address:o||t,topics:a},u=e=>{let r=s;if(null==r)try{r=t.interface.getEvent(e.topics[0])}catch(t){}if(r){const i=r,a=s?t.interface.decodeEventLog(s,e.data,e.topics):[];Ks(t,n,a,(r=>new Ps(t,r,n,i,e)))}else Ks(t,n,[],(r=>new Ns(t,r,n,e)))};let h=[];l={tag:i,listeners:[],start:()=>{h.length||h.push(r.on(e,u))},stop:async()=>{if(0==h.length)return;let t=h;h=[],await Promise.all(t),r.off(e,u)}},c.set(i,l)}return l}let js=Promise.resolve();async function Ks(t,e,n,r){try{await js}catch(t){}const s=async function(t,e,n,r){await js;const s=await $s(t,e);if(!s)return!1;const i=s.listeners.length;return s.listeners=s.listeners.filter((({listener:e,once:s})=>{const i=Array.from(n);r&&i.push(r(s?null:e));try{e.call(t,...i)}catch(t){}return!s})),0===s.listeners.length&&(s.stop(),Bs(t).subs.delete(s.tag)),i>0}(t,e,n,r);return js=s,await s}const Hs=["then"];class Vs{target;interface;runner;filters;[Ls];fallback;constructor(t,e,n,r){N("string"==typeof t||je(t),"invalid value for Contract target","target",t),null==n&&(n=null);const s=as.from(e);let i;y(this,{target:t,runner:n,interface:s}),Object.defineProperty(this,Ls,{value:{}});let a=null,o=null;if(r){const t=Cs(n);o=new Es(this.interface,t,r)}let c=new Map;if("string"==typeof t)if(S(t))a=t,i=Promise.resolve(t);else{const e=xs(n,"resolveName");if(!As(e))throw v("contract runner does not support name resolution","UNSUPPORTED_OPERATION",{operation:"resolveName"});i=e.resolveName(t).then((e=>{if(null==e)throw v("an ENS name used for a contract target must be correctly configured","UNCONFIGURED_NAME",{value:t});return Bs(this).addr=e,e}))}else i=t.getAddress().then((t=>{if(null==t)throw new Error("TODO");return Bs(this).addr=t,t}));var l,u;l=this,u={addrPromise:i,addr:a,deployTx:o,subs:c},Ds.set(l[Ls],u);const h=new Proxy({},{get:(t,e,n)=>{if("symbol"==typeof e||Hs.indexOf(e)>=0)return Reflect.get(t,e,n);try{return this.getEvent(e)}catch(t){if(!b(t,"INVALID_ARGUMENT")||"key"!==t.argument)throw t}},has:(t,e)=>Hs.indexOf(e)>=0?Reflect.has(t,e):Reflect.has(t,e)||this.interface.hasEvent(String(e))});return y(this,{filters:h}),y(this,{fallback:s.receive||s.fallback?Us(this):null}),new Proxy(this,{get:(t,e,n)=>{if("symbol"==typeof e||e in t||Hs.indexOf(e)>=0)return Reflect.get(t,e,n);try{return t.getFunction(e)}catch(t){if(!b(t,"INVALID_ARGUMENT")||"key"!==t.argument)throw t}},has:(t,e)=>"symbol"==typeof e||e in t||Hs.indexOf(e)>=0?Reflect.has(t,e):t.interface.hasFunction(e)})}connect(t){return new Vs(this.target,this.interface,t)}attach(t){return new Vs(t,this.interface,this.runner)}async getAddress(){return await Bs(this).addrPromise}async getDeployedCode(){const t=Cs(this.runner);E(t,"runner does not support .provider","UNSUPPORTED_OPERATION",{operation:"getDeployedCode"});const e=await t.getCode(await this.getAddress());return"0x"===e?null:e}async waitForDeployment(){const t=this.deploymentTransaction();if(t)return await t.wait(),this;if(null!=await this.getDeployedCode())return this;const e=Cs(this.runner);return E(null!=e,"contract runner does not support .provider","UNSUPPORTED_OPERATION",{operation:"waitForDeployment"}),new Promise(((t,n)=>{const r=async()=>{try{if(null!=await this.getDeployedCode())return t(this);e.once("block",r)}catch(t){n(t)}};r()}))}deploymentTransaction(){return Bs(this).deployTx}getFunction(t){"string"!=typeof t&&(t=t.format());return Fs(this,t)}getEvent(t){return"string"!=typeof t&&(t=t.format()),function(t,e){const n=function(...n){const r=t.interface.getEvent(e,n);return E(r,"no matching fragment","UNSUPPORTED_OPERATION",{operation:"fragment",info:{key:e,args:n}}),r},r=function(...e){return new Ss(t,n(...e),e)};return y(r,{name:t.interface.getEventName(e),_contract:t,_key:e,getFragment:n}),Object.defineProperty(r,"fragment",{configurable:!1,enumerable:!0,get:()=>{const n=t.interface.getEvent(e);return E(n,"no matching fragment","UNSUPPORTED_OPERATION",{operation:"fragment",info:{key:e}}),n}}),r}(this,t)}async queryTransaction(t){throw new Error("@TODO")}async queryFilter(t,e,n){null==e&&(e=0),null==n&&(n="latest");const{addr:r,addrPromise:s}=Bs(this),i=r||await s,{fragment:a,topics:o}=await Gs(this,t),c={address:i,topics:o,fromBlock:e,toBlock:n},l=Cs(this.runner);return E(l,"contract runner does not have a provider","UNSUPPORTED_OPERATION",{operation:"queryFilter"}),(await l.getLogs(c)).map((t=>{let e=a;if(null==e)try{e=this.interface.getEvent(t.topics[0])}catch(t){}if(e)try{return new bs(t,this.interface,e)}catch(e){return new ws(t,e)}return new ps(t,l)}))}async on(t,e){const n=await Ms(this,"on",t);return n.listeners.push({listener:e,once:!1}),n.start(),this}async once(t,e){const n=await Ms(this,"once",t);return n.listeners.push({listener:e,once:!0}),n.start(),this}async emit(t,...e){return await Ks(this,t,e,null)}async listenerCount(t){if(t){const e=await $s(this,t);return e?e.listeners.length:0}const{subs:e}=Bs(this);let n=0;for(const{listeners:t}of e.values())n+=t.length;return n}async listeners(t){if(t){const e=await $s(this,t);return e?e.listeners.map((({listener:t})=>t)):[]}const{subs:e}=Bs(this);let n=[];for(const{listeners:t}of e.values())n=n.concat(t.map((({listener:t})=>t)));return n}async off(t,e){const n=await $s(this,t);if(!n)return this;if(e){const t=n.listeners.map((({listener:t})=>t)).indexOf(e);t>=0&&n.listeners.splice(t,1)}return null!=e&&0!==n.listeners.length||(n.stop(),Bs(this).subs.delete(n.tag)),this}async removeAllListeners(t){if(t){const e=await $s(this,t);if(!e)return this;e.stop(),Bs(this).subs.delete(e.tag)}else{const{subs:t}=Bs(this);for(const{tag:e,stop:n}of t.values())n(),t.delete(e)}return this}async addListener(t,e){return await this.on(t,e)}async removeListener(t,e){return await this.off(t,e)}static buildClass(t){return class extends Vs{constructor(e,n=null){super(e,t,n)}}}static from(t,e,n){null==n&&(n=null);return new this(t,e,n)}}class zs extends(function(){return Vs}()){}function Js(t){return t.match(/^ipfs:\/\/ipfs\//i)?t=t.substring(12):t.match(/^ipfs:\/\//i)?t=t.substring(7):N(!1,"unsupported IPFS format","link",t),`https://gateway.ipfs.io/ipfs/${t}`}class qs{name;constructor(t){y(this,{name:t})}connect(t){return this}supportsCoinType(t){return!1}async encodeAddress(t,e){throw new Error("unsupported coin")}async decodeAddress(t,e){throw new Error("unsupported coin")}}const Ws=new RegExp("^(ipfs)://(.*)$","i"),Ys=[new RegExp("^(https)://(.*)$","i"),new RegExp("^(data):(.*)$","i"),Ws,new RegExp("^eip155:[0-9]+/(erc[0-9]+):(.*)$","i")];class Xs{provider;address;name;#vt;#Et;constructor(t,e,n){y(this,{provider:t,address:e,name:n}),this.#vt=null,this.#Et=new zs(e,["function supportsInterface(bytes4) view returns (bool)","function resolve(bytes, bytes) view returns (bytes)","function addr(bytes32) view returns (address)","function addr(bytes32, uint) view returns (bytes)","function text(bytes32, string) view returns (string)","function contenthash(bytes32) view returns (bytes)"],t)}async supportsWildcard(){return null==this.#vt&&(this.#vt=(async()=>{try{return await this.#Et.supportsInterface("0x9061b923")}catch(t){if(b(t,"CALL_EXCEPTION"))return!1;throw this.#vt=null,t}})()),await this.#vt}async#Nt(t,e){e=(e||[]).slice();const n=this.#Et.interface;e.unshift(bn(this.name));let r=null;await this.supportsWildcard()&&(r=n.getFunction(t),E(r,"missing fragment","UNKNOWN_ERROR",{info:{funcName:t}}),e=[wn(this.name,255),n.encodeFunctionData(r,e)],t="resolve(bytes,bytes)"),e.push({enableCcipRead:!0});try{const s=await this.#Et[t](...e);return r?n.decodeFunctionResult(r,s)[0]:s}catch(t){if(!b(t,"CALL_EXCEPTION"))throw t}return null}async getAddress(t){if(null==t&&(t=60),60===t)try{const t=await this.#Nt("addr(bytes32)");return null==t||t===ke?null:t}catch(t){if(b(t,"CALL_EXCEPTION"))return null;throw t}if(t>=0&&t<2147483648){let e=t+2147483648;const n=await this.#Nt("addr(bytes32,uint)",[e]);if(S(n,20))return Me(n)}let e=null;for(const n of this.provider.plugins)if(n instanceof qs&&n.supportsCoinType(t)){e=n;break}if(null==e)return null;const n=await this.#Nt("addr(bytes32,uint)",[t]);if(null==n||"0x"===n)return null;const r=await e.decodeAddress(t,n);if(null!=r)return r;E(!1,"invalid coin data","UNSUPPORTED_OPERATION",{operation:`getAddress(${t})`,info:{coinType:t,data:n}})}async getText(t){const e=await this.#Nt("text(bytes32,string)",[t]);return null==e||"0x"===e?null:e}async getContentHash(){const t=await this.#Nt("contenthash(bytes32)");if(null==t||"0x"===t)return null;const e=t.match(/^0x(e3010170|e5010172)(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);if(e){const t="e3010170"===e[1]?"ipfs":"ipns",n=parseInt(e[4],16);if(e[5].length===2*n)return`${t}://${rt("0x"+e[2])}`}const n=t.match(/^0xe40101fa011b20([0-9a-f]*)$/);if(n&&64===n[1].length)return`bzz://${n[1]}`;E(!1,"invalid or unsupported content hash data","UNSUPPORTED_OPERATION",{operation:"getContentHash()",info:{data:t}})}async getAvatar(){return(await this._getAvatar()).url}async _getAvatar(){const t=[{type:"name",value:this.name}];try{const e=await this.getText("avatar");if(null==e)return t.push({type:"!avatar",value:""}),{url:null,linkage:t};t.push({type:"avatar",value:e});for(let n=0;n<Ys.length;n++){const r=e.match(Ys[n]);if(null==r)continue;const s=r[1].toLowerCase();switch(s){case"https":case"data":return t.push({type:"url",value:e}),{linkage:t,url:e};case"ipfs":{const n=Js(e);return t.push({type:"ipfs",value:e}),t.push({type:"url",value:n}),{linkage:t,url:n}}case"erc721":case"erc1155":{const n="erc721"===s?"tokenURI(uint256)":"uri(uint256)";t.push({type:s,value:e});const i=await this.getAddress();if(null==i)return t.push({type:"!owner",value:""}),{url:null,linkage:t};const a=(r[2]||"").split("/");if(2!==a.length)return t.push({type:`!${s}caip`,value:r[2]||""}),{url:null,linkage:t};const o=a[1],c=new zs(a[0],["function tokenURI(uint) view returns (string)","function ownerOf(uint) view returns (address)","function uri(uint) view returns (string)","function balanceOf(address, uint256) view returns (uint)"],this.provider);if("erc721"===s){const e=await c.ownerOf(o);if(i!==e)return t.push({type:"!owner",value:e}),{url:null,linkage:t};t.push({type:"owner",value:e})}else if("erc1155"===s){const e=await c.balanceOf(i,o);if(!e)return t.push({type:"!balance",value:"0"}),{url:null,linkage:t};t.push({type:"balance",value:e.toString()})}let l=await c[n](o);if(null==l||"0x"===l)return t.push({type:"!metadata-url",value:""}),{url:null,linkage:t};t.push({type:"metadata-url-base",value:l}),"erc1155"===s&&(l=l.replace("{id}",W(o,32).substring(2)),t.push({type:"metadata-url-expanded",value:l})),l.match(/^ipfs:/i)&&(l=Js(l)),t.push({type:"metadata-url",value:l});let u={};const h=await new wt(l).send();h.assertOk();try{u=h.bodyJson}catch(e){try{t.push({type:"!metadata",value:h.bodyText})}catch(e){const n=h.body;return n&&t.push({type:"!metadata",value:_(n)}),{url:null,linkage:t}}return{url:null,linkage:t}}if(!u)return t.push({type:"!metadata",value:""}),{url:null,linkage:t};t.push({type:"metadata",value:JSON.stringify(u)});let d=u.image;if("string"!=typeof d)return t.push({type:"!imageUrl",value:""}),{url:null,linkage:t};if(d.match(/^(https:\/\/|data:)/i));else{if(null==d.match(Ws))return t.push({type:"!imageUrl-ipfs",value:d}),{url:null,linkage:t};t.push({type:"imageUrl-ipfs",value:d}),d=Js(d)}return t.push({type:"url",value:d}),{linkage:t,url:d}}}}}catch(t){}return{linkage:t,url:null}}static async getEnsAddress(t){const e=await t.getNetwork(),n=e.getPlugin("org.ethers.plugins.network.Ens");return E(n,"network does not support ENS","UNSUPPORTED_OPERATION",{operation:"getEnsAddress",info:{network:e}}),n.address}static async#Pt(t,e){const n=await Xs.getEnsAddress(t);try{const r=new zs(n,["function resolver(bytes32) view returns (address)"],t),s=await r.resolver(bn(e),{enableCcipRead:!0});return s===ke?null:s}catch(t){throw t}return null}static async fromName(t,e){let n=e;for(;;){if(""===n||"."===n)return null;if("eth"!==e&&"eth"===n)return null;const r=await Xs.#Pt(t,n);if(null!=r){const s=new Xs(t,r,e);return n===e||await s.supportsWildcard()?s:null}n=n.split(".").slice(1).join(".")}}}const Zs=BigInt(0);function Qs(t,e){return function(n){return null==n?e:t(n)}}function ti(t,e){return n=>{if(e&&null==n)return null;if(!Array.isArray(n))throw new Error("not an array");return n.map((e=>t(e)))}}function ei(t,e){return n=>{const r={};for(const s in t){let i=s;if(e&&s in e&&!(i in n))for(const t of e[s])if(t in n){i=t;break}try{const e=t[s](n[i]);void 0!==e&&(r[s]=e)}catch(t){E(!1,`invalid value for value.${s} (${t instanceof Error?t.message:"not-an-error"})`,"BAD_DATA",{value:n})}}return r}}function ni(t){return N(S(t,!0),"invalid data","value",t),t}function ri(t){return N(S(t,32),"invalid hash","value",t),t}const si=ei({address:Me,blockHash:ri,blockNumber:q,data:ni,index:q,removed:Qs((function(t){switch(t){case!0:case"true":return!0;case!1:case"false":return!1}N(!1,`invalid boolean; ${JSON.stringify(t)}`,"value",t)}),!1),topics:ti(ri),transactionHash:ri,transactionIndex:q},{index:["logIndex"]});const ii=ei({hash:Qs(ri),parentHash:ri,parentBeaconBlockRoot:Qs(ri,null),number:q,timestamp:q,nonce:Qs(ni),difficulty:H,gasLimit:H,gasUsed:H,stateRoot:Qs(ri,null),receiptsRoot:Qs(ri,null),blobGasUsed:Qs(H,null),excessBlobGas:Qs(H,null),miner:Qs(Me),prevRandao:Qs(ri,null),extraData:ni,baseFeePerGas:Qs(H)},{prevRandao:["mixHash"]});const ai=ei({transactionIndex:q,blockNumber:q,transactionHash:ri,address:Me,topics:ti(ri),data:ni,index:q,blockHash:ri},{index:["logIndex"]});const oi=ei({to:Qs(Me,null),from:Qs(Me,null),contractAddress:Qs(Me,null),index:q,root:Qs(_),gasUsed:H,blobGasUsed:Qs(H,null),logsBloom:Qs(ni),blockHash:ri,hash:ri,logs:ti((function(t){return ai(t)})),blockNumber:q,cumulativeGasUsed:H,effectiveGasPrice:Qs(H),blobGasPrice:Qs(H,null),status:Qs(q),type:Qs(q,0)},{effectiveGasPrice:["gasPrice"],hash:["transactionHash"],index:["transactionIndex"]});function ci(t){t.to&&H(t.to)===Zs&&(t.to="0x0000000000000000000000000000000000000000");const e=ei({hash:ri,index:Qs(q,void 0),type:t=>"0x"===t||null==t?0:q(t),accessList:Qs(En,null),blobVersionedHashes:Qs(ti(ri,!0),null),blockHash:Qs(ri,null),blockNumber:Qs(q,null),transactionIndex:Qs(q,null),from:Me,gasPrice:Qs(H),maxPriorityFeePerGas:Qs(H),maxFeePerGas:Qs(H),maxFeePerBlobGas:Qs(H,null),gasLimit:H,to:Qs(Me,null),value:H,nonce:q,data:ni,creates:Qs(Me,null),chainId:Qs(H,null)},{data:["input"],gasLimit:["gas"],index:["transactionIndex"]})(t);if(null==e.to&&null==e.creates&&(e.creates=function(t){const e=Me(t.from);let n=H(t.nonce,"tx.nonce").toString(16);return n="0"===n?"0x":n.length%2?"0x0"+n:"0x"+n,Me(L(Qt(St([e,n])),12))}(e)),1!==t.type&&2!==t.type||null!=t.accessList||(e.accessList=[]),t.signature?e.signature=Ue.from(t.signature):e.signature=Ue.from(t),null==e.chainId){const t=e.signature.legacyChainId;null!=t&&(e.chainId=t)}return e.blockHash&&H(e.blockHash)===Zs&&(e.blockHash=null),e}class li{name;constructor(t){y(this,{name:t})}clone(){return new li(this.name)}}class ui extends li{effectiveBlock;txBase;txCreate;txDataZero;txDataNonzero;txAccessListStorageKey;txAccessListAddress;constructor(t,e){null==t&&(t=0),super(`org.ethers.network.plugins.GasCost#${t||0}`);const n={effectiveBlock:t};function r(t,r){let s=(e||{})[t];null==s&&(s=r),N("number"==typeof s,`invalud value for ${t}`,"costs",e),n[t]=s}r("txBase",21e3),r("txCreate",32e3),r("txDataZero",4),r("txDataNonzero",16),r("txAccessListStorageKey",1900),r("txAccessListAddress",2400),y(this,n)}clone(){return new ui(this.effectiveBlock,this)}}class hi extends li{address;targetNetwork;constructor(t,e){super("org.ethers.plugins.network.Ens"),y(this,{address:t||"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",targetNetwork:null==e?1:e})}clone(){return new hi(this.address,this.targetNetwork)}}class di extends li{#c;#kt;get url(){return this.#c}get processFunc(){return this.#kt}constructor(t,e){super("org.ethers.plugins.network.FetchUrlFeeDataPlugin"),this.#c=t,this.#kt=e}clone(){return this}}const pi=new Map;class fi{#Tt;#J;#Rt;constructor(t,e){this.#Tt=t,this.#J=H(e),this.#Rt=new Map}toJSON(){return{name:this.name,chainId:String(this.chainId)}}get name(){return this.#Tt}set name(t){this.#Tt=t}get chainId(){return this.#J}set chainId(t){this.#J=H(t,"chainId")}matches(t){if(null==t)return!1;if("string"==typeof t){try{return this.chainId===H(t)}catch(t){}return this.name===t}if("number"==typeof t||"bigint"==typeof t){try{return this.chainId===H(t)}catch(t){}return!1}if("object"==typeof t){if(null!=t.chainId){try{return this.chainId===H(t.chainId)}catch(t){}return!1}return null!=t.name&&this.name===t.name}return!1}get plugins(){return Array.from(this.#Rt.values())}attachPlugin(t){if(this.#Rt.get(t.name))throw new Error(`cannot replace existing plugin: ${t.name} `);return this.#Rt.set(t.name,t.clone()),this}getPlugin(t){return this.#Rt.get(t)||null}getPlugins(t){return this.plugins.filter((e=>e.name.split("#")[0]===t))}clone(){const t=new fi(this.name,this.chainId);return this.plugins.forEach((e=>{t.attachPlugin(e.clone())})),t}computeIntrinsicGas(t){const e=this.getPlugin("org.ethers.plugins.network.GasCost")||new ui;let n=e.txBase;if(null==t.to&&(n+=e.txCreate),t.data)for(let r=2;r<t.data.length;r+=2)"00"===t.data.substring(r,r+2)?n+=e.txDataZero:n+=e.txDataNonzero;if(t.accessList){const r=En(t.accessList);for(const t in r)n+=e.txAccessListAddress+e.txAccessListStorageKey*r[t].storageKeys.length}return n}static from(t){if(function(){if(mi)return;function t(t,e,n){const r=function(){const r=new fi(t,e);return null!=n.ensNetwork&&r.attachPlugin(new hi(null,n.ensNetwork)),r.attachPlugin(new ui),(n.plugins||[]).forEach((t=>{r.attachPlugin(t)})),r};fi.register(t,r),fi.register(e,r),n.altNames&&n.altNames.forEach((t=>{fi.register(t,r)}))}mi=!0,t("mainnet",1,{ensNetwork:1,altNames:["homestead"]}),t("ropsten",3,{ensNetwork:3}),t("rinkeby",4,{ensNetwork:4}),t("goerli",5,{ensNetwork:5}),t("kovan",42,{ensNetwork:42}),t("sepolia",11155111,{ensNetwork:11155111}),t("holesky",17e3,{ensNetwork:17e3}),t("classic",61,{}),t("classicKotti",6,{}),t("arbitrum",42161,{ensNetwork:1}),t("arbitrum-goerli",421613,{}),t("arbitrum-sepolia",421614,{}),t("base",8453,{ensNetwork:1}),t("base-goerli",84531,{}),t("base-sepolia",84532,{}),t("bnb",56,{ensNetwork:1}),t("bnbt",97,{}),t("linea",59144,{ensNetwork:1}),t("linea-goerli",59140,{}),t("linea-sepolia",59141,{}),t("matic",137,{ensNetwork:1,plugins:[yi("https://gasstation.polygon.technology/v2")]}),t("matic-amoy",80002,{}),t("matic-mumbai",80001,{altNames:["maticMumbai","maticmum"],plugins:[yi("https://gasstation-testnet.polygon.technology/v2")]}),t("optimism",10,{ensNetwork:1,plugins:[]}),t("optimism-goerli",420,{}),t("optimism-sepolia",11155420,{}),t("xdai",100,{ensNetwork:1})}(),null==t)return fi.from("mainnet");if("number"==typeof t&&(t=BigInt(t)),"string"==typeof t||"bigint"==typeof t){const e=pi.get(t);if(e)return e();if("bigint"==typeof t)return new fi("unknown",t);N(!1,"unknown network","network",t)}if("function"==typeof t.clone){return t.clone()}if("object"==typeof t){N("string"==typeof t.name&&"number"==typeof t.chainId,"invalid network object name or chainId","network",t);const e=new fi(t.name,t.chainId);return(t.ensAddress||null!=t.ensNetwork)&&e.attachPlugin(new hi(t.ensAddress,t.ensNetwork)),e}N(!1,"invalid network","network",t)}static register(t,e){"number"==typeof t&&(t=BigInt(t));const n=pi.get(t);n&&N(!1,`conflicting network for ${JSON.stringify(n.name)}`,"nameOrChainId",t),pi.set(t,e)}}function gi(t,e){const n=String(t);if(!n.match(/^[0-9.]+$/))throw new Error(`invalid gwei value: ${t}`);const r=n.split(".");if(1===r.length&&r.push(""),2!==r.length)throw new Error(`invalid gwei value: ${t}`);for(;r[1].length<e;)r[1]+="0";if(r[1].length>9){let t=BigInt(r[1].substring(0,9));r[1].substring(9).match(/^0+$/)||t++,r[1]=t.toString()}return BigInt(r[0]+r[1])}function yi(t){return new di(t,(async(t,e,n)=>{let r;n.setHeader("User-Agent","ethers");try{const[e,s]=await Promise.all([n.send(),t()]);r=e;const i=r.bodyJson.standard;return{gasPrice:s.gasPrice,maxFeePerGas:gi(i.maxFee,9),maxPriorityFeePerGas:gi(i.maxPriorityFee,9)}}catch(t){E(!1,`error encountered with polygon gas station (${JSON.stringify(n.url)})`,"SERVER_ERROR",{request:n,response:r,error:t})}}))}let mi=!1;function bi(t){return JSON.parse(JSON.stringify(t))}class wi{#At;#Ot;#It;#St;constructor(t){this.#At=t,this.#Ot=null,this.#It=4e3,this.#St=-2}get pollingInterval(){return this.#It}set pollingInterval(t){this.#It=t}async#xt(){try{const t=await this.#At.getBlockNumber();if(-2===this.#St)return void(this.#St=t);if(t!==this.#St){for(let e=this.#St+1;e<=t;e++){if(null==this.#Ot)return;await this.#At.emit("block",e)}this.#St=t}}catch(t){}null!=this.#Ot&&(this.#Ot=this.#At._setTimeout(this.#xt.bind(this),this.#It))}start(){this.#Ot||(this.#Ot=this.#At._setTimeout(this.#xt.bind(this),this.#It),this.#xt())}stop(){this.#Ot&&(this.#At._clearTimeout(this.#Ot),this.#Ot=null)}pause(t){this.stop(),t&&(this.#St=-2)}resume(){this.start()}}class vi{#At;#xt;#Ct;constructor(t){this.#At=t,this.#Ct=!1,this.#xt=t=>{this._poll(t,this.#At)}}async _poll(t,e){throw new Error("sub-classes must override this")}start(){this.#Ct||(this.#Ct=!0,this.#xt(-2),this.#At.on("block",this.#xt))}stop(){this.#Ct&&(this.#Ct=!1,this.#At.off("block",this.#xt))}pause(t){this.stop()}resume(){this.start()}}class Ei extends vi{#_t;#Ut;constructor(t,e){super(t),this.#_t=e,this.#Ut=-2}pause(t){t&&(this.#Ut=-2),super.pause(t)}async _poll(t,e){const n=await e.getBlock(this.#_t);null!=n&&(-2===this.#Ut?this.#Ut=n.number:n.number>this.#Ut&&(e.emit(this.#_t,n.number),this.#Ut=n.number))}}class Ni extends vi{#wt;constructor(t,e){super(t),this.#wt=bi(e)}async _poll(t,e){throw new Error("@TODO")}}class Pi extends vi{#Ft;constructor(t,e){super(t),this.#Ft=e}async _poll(t,e){const n=await e.getTransactionReceipt(this.#Ft);n&&e.emit(this.#Ft,n)}}class ki{#At;#wt;#Ot;#Ct;#St;constructor(t,e){this.#At=t,this.#wt=bi(e),this.#Ot=this.#xt.bind(this),this.#Ct=!1,this.#St=-2}async#xt(t){if(-2===this.#St)return;const e=bi(this.#wt);e.fromBlock=this.#St+1,e.toBlock=t;const n=await this.#At.getLogs(e);if(0!==n.length)for(const t of n)this.#At.emit(this.#wt,t),this.#St=t.blockNumber;else this.#St<t-60&&(this.#St=t-60)}start(){this.#Ct||(this.#Ct=!0,-2===this.#St&&this.#At.getBlockNumber().then((t=>{this.#St=t})),this.#At.on("block",this.#Ot))}stop(){this.#Ct&&(this.#Ct=!1,this.#At.off("block",this.#Ot))}pause(t){this.stop(),t&&(this.#St=-2)}resume(){this.start()}}const Ti=BigInt(2);function Ri(t){return t&&"function"==typeof t.then}function Ai(t,e){return t+":"+JSON.stringify(e,((t,e)=>{if(null==e)return"null";if("bigint"==typeof e)return`bigint:${e.toString()}`;if("string"==typeof e)return e.toLowerCase();if("object"==typeof e&&!Array.isArray(e)){const t=Object.keys(e);return t.sort(),t.reduce(((t,n)=>(t[n]=e[n],t)),{})}return e}))}class Oi{name;constructor(t){y(this,{name:t})}start(){}stop(){}pause(t){}resume(){}}function Ii(t){return(t=Array.from(new Set(t).values())).sort(),t}async function Si(t,e){if(null==t)throw new Error("invalid event");if(Array.isArray(t)&&(t={topics:t}),"string"==typeof t)switch(t){case"block":case"debug":case"error":case"finalized":case"network":case"pending":case"safe":return{type:t,tag:t}}if(S(t,32)){const e=t.toLowerCase();return{type:"transaction",tag:Ai("tx",{hash:e}),hash:e}}if(t.orphan){const e=t;return{type:"orphan",tag:Ai("orphan",e),filter:(n=e,JSON.parse(JSON.stringify(n)))}}var n;if(t.address||t.topics){const n=t,r={topics:(n.topics||[]).map((t=>null==t?null:Array.isArray(t)?Ii(t.map((t=>t.toLowerCase()))):t.toLowerCase()))};if(n.address){const t=[],s=[],i=n=>{S(n)?t.push(n):s.push((async()=>{t.push(await He(n,e))})())};Array.isArray(n.address)?n.address.forEach(i):i(n.address),s.length&&await Promise.all(s),r.address=Ii(t.map((t=>t.toLowerCase())))}return{filter:r,tag:Ai("event",r),type:"event"}}N(!1,"unknown ProviderEvent","event",t)}function xi(){return(new Date).getTime()}const Ci={cacheTimeout:250,pollingInterval:4e3};class _i{#Lt;#Rt;#Dt;#Bt;#Gt;#$t;#Mt;#jt;#Kt;#Ht;#Vt;#B;constructor(t,e){if(this.#B=Object.assign({},Ci,e||{}),"any"===t)this.#$t=!0,this.#Gt=null;else if(t){const e=fi.from(t);this.#$t=!1,this.#Gt=Promise.resolve(e),setTimeout((()=>{this.emit("network",e,null)}),0)}else this.#$t=!1,this.#Gt=null;this.#jt=-1,this.#Mt=new Map,this.#Lt=new Map,this.#Rt=new Map,this.#Dt=null,this.#Bt=!1,this.#Kt=1,this.#Ht=new Map,this.#Vt=!1}get pollingInterval(){return this.#B.pollingInterval}get provider(){return this}get plugins(){return Array.from(this.#Rt.values())}attachPlugin(t){if(this.#Rt.get(t.name))throw new Error(`cannot replace existing plugin: ${t.name} `);return this.#Rt.set(t.name,t.connect(this)),this}getPlugin(t){return this.#Rt.get(t)||null}get disableCcipRead(){return this.#Vt}set disableCcipRead(t){this.#Vt=!!t}async#zt(t){const e=this.#B.cacheTimeout;if(e<0)return await this._perform(t);const n=Ai(t.method,t);let r=this.#Mt.get(n);return r||(r=this._perform(t),this.#Mt.set(n,r),setTimeout((()=>{this.#Mt.get(n)===r&&this.#Mt.delete(n)}),e)),await r}async ccipReadFetch(t,e,n){if(this.disableCcipRead||0===n.length||null==t.to)return null;const r=t.to.toLowerCase(),s=e.toLowerCase(),i=[];for(let e=0;e<n.length;e++){const a=n[e],o=a.replace("{sender}",r).replace("{data}",s),c=new wt(o);-1===a.indexOf("{data}")&&(c.body={data:s,sender:r}),this.emit("debug",{action:"sendCcipReadFetchRequest",request:c,index:e,urls:n});let l,u="unknown error";try{l=await c.send()}catch(t){i.push(t.message),this.emit("debug",{action:"receiveCcipReadFetchError",request:c,result:{error:t}});continue}try{const t=l.bodyJson;if(t.data)return this.emit("debug",{action:"receiveCcipReadFetchResult",request:c,result:t}),t.data;t.message&&(u=t.message),this.emit("debug",{action:"receiveCcipReadFetchError",request:c,result:t})}catch(t){}E(l.statusCode<400||l.statusCode>=500,`response not found during CCIP fetch: ${u}`,"OFFCHAIN_FAULT",{reason:"404_MISSING_RESOURCE",transaction:t,info:{url:a,errorMessage:u}}),i.push(u)}E(!1,`error encountered during CCIP fetch: ${i.map((t=>JSON.stringify(t))).join(", ")}`,"OFFCHAIN_FAULT",{reason:"500_SERVER_ERROR",transaction:t,info:{urls:n,errorMessages:i}})}_wrapBlock(t,e){return new ds(function(t){const e=ii(t);return e.transactions=t.transactions.map((t=>"string"==typeof t?t:ci(t))),e}(t),this)}_wrapLog(t,e){return new ps(function(t){return si(t)}(t),this)}_wrapTransactionReceipt(t,e){return new fs(function(t){return oi(t)}(t),this)}_wrapTransactionResponse(t,e){return new gs(ci(t),this)}_detectNetwork(){E(!1,"sub-classes must implement this","UNSUPPORTED_OPERATION",{operation:"_detectNetwork"})}async _perform(t){E(!1,`unsupported method: ${t.method}`,"UNSUPPORTED_OPERATION",{operation:t.method,info:t})}async getBlockNumber(){const t=q(await this.#zt({method:"getBlockNumber"}),"%response");return this.#jt>=0&&(this.#jt=t),t}_getAddress(t){return He(t,this)}_getBlockTag(t){if(null==t)return"latest";switch(t){case"earliest":return"0x0";case"finalized":case"latest":case"pending":case"safe":return t}return S(t)?S(t,32)?t:X(t):("bigint"==typeof t&&(t=q(t,"blockTag")),"number"==typeof t?t>=0?X(t):this.#jt>=0?X(this.#jt+t):this.getBlockNumber().then((e=>X(e+t))):void N(!1,"invalid blockTag","blockTag",t))}_getFilter(t){const e=(t.topics||[]).map((t=>null==t?null:Array.isArray(t)?Ii(t.map((t=>t.toLowerCase()))):t.toLowerCase())),n="blockHash"in t?t.blockHash:void 0,r=(t,r,s)=>{let i;switch(t.length){case 0:break;case 1:i=t[0];break;default:t.sort(),i=t}if(n&&(null!=r||null!=s))throw new Error("invalid filter");const a={};return i&&(a.address=i),e.length&&(a.topics=e),r&&(a.fromBlock=r),s&&(a.toBlock=s),n&&(a.blockHash=n),a};let s,i,a=[];if(t.address)if(Array.isArray(t.address))for(const e of t.address)a.push(this._getAddress(e));else a.push(this._getAddress(t.address));return"fromBlock"in t&&(s=this._getBlockTag(t.fromBlock)),"toBlock"in t&&(i=this._getBlockTag(t.toBlock)),a.filter((t=>"string"!=typeof t)).length||null!=s&&"string"!=typeof s||null!=i&&"string"!=typeof i?Promise.all([Promise.all(a),s,i]).then((t=>r(t[0],t[1],t[2]))):r(a,s,i)}_getTransactionRequest(t){const e=hs(t),n=[];if(["to","from"].forEach((t=>{if(null==e[t])return;const r=He(e[t],this);Ri(r)?n.push(async function(){e[t]=await r}()):e[t]=r})),null!=e.blockTag){const t=this._getBlockTag(e.blockTag);Ri(t)?n.push(async function(){e.blockTag=await t}()):e.blockTag=t}return n.length?async function(){return await Promise.all(n),e}():e}async getNetwork(){if(null==this.#Gt){const t=(async()=>{try{const t=await this._detectNetwork();return this.emit("network",t,null),t}catch(e){throw this.#Gt===t&&(this.#Gt=null),e}})();return this.#Gt=t,(await t).clone()}const t=this.#Gt,[e,n]=await Promise.all([t,this._detectNetwork()]);return e.chainId!==n.chainId&&(this.#$t?(this.emit("network",n,e),this.#Gt===t&&(this.#Gt=Promise.resolve(n))):E(!1,`network changed: ${e.chainId} => ${n.chainId} `,"NETWORK_ERROR",{event:"changed"})),e.clone()}async getFeeData(){const t=await this.getNetwork(),e=async()=>{const{_block:e,gasPrice:n,priorityFee:r}=await g({_block:this.#Jt("latest",!1),gasPrice:(async()=>{try{return H(await this.#zt({method:"getGasPrice"}),"%response")}catch(t){}return null})(),priorityFee:(async()=>{try{return H(await this.#zt({method:"getPriorityFee"}),"%response")}catch(t){}return null})()});let s=null,i=null;const a=this._wrapBlock(e,t);return a&&a.baseFeePerGas&&(i=null!=r?r:BigInt("1000000000"),s=a.baseFeePerGas*Ti+i),new us(n,s,i)},n=t.getPlugin("org.ethers.plugins.network.FetchUrlFeeDataPlugin");if(n){const t=new wt(n.url),r=await n.processFunc(e,this,t);return new us(r.gasPrice,r.maxFeePerGas,r.maxPriorityFeePerGas)}return await e()}async estimateGas(t){let e=this._getTransactionRequest(t);return Ri(e)&&(e=await e),H(await this.#zt({method:"estimateGas",transaction:e}),"%response")}async#qt(t,e,n){E(n<10,"CCIP read exceeded maximum redirections","OFFCHAIN_FAULT",{reason:"TOO_MANY_REDIRECTS",transaction:Object.assign({},t,{blockTag:e,enableCcipRead:!0})});const r=hs(t);try{return _(await this._perform({method:"call",transaction:r,blockTag:e}))}catch(t){if(!this.disableCcipRead&&w(t)&&t.data&&n>=0&&"latest"===e&&null!=r.to&&"0x556f1830"===L(t.data,0,4)){const s=t.data,i=await He(r.to,this);let a;try{a=function(t){const e={sender:"",urls:[],calldata:"",selector:"",extraData:"",errorArgs:[]};E(F(t)>=160,"insufficient OffchainLookup data","OFFCHAIN_FAULT",{reason:"insufficient OffchainLookup data"});const n=L(t,0,32);E(L(n,0,12)===L($i,0,12),"corrupt OffchainLookup sender","OFFCHAIN_FAULT",{reason:"corrupt OffchainLookup sender"}),e.sender=L(n,12);try{const n=[],r=q(L(t,32,64)),s=q(L(t,r,r+32)),i=L(t,r+32);for(let t=0;t<s;t++){const e=Ui(i,32*t);if(null==e)throw new Error("abort");n.push(e)}e.urls=n}catch(t){E(!1,"corrupt OffchainLookup urls","OFFCHAIN_FAULT",{reason:"corrupt OffchainLookup urls"})}try{const n=Fi(t,64);if(null==n)throw new Error("abort");e.calldata=n}catch(t){E(!1,"corrupt OffchainLookup calldata","OFFCHAIN_FAULT",{reason:"corrupt OffchainLookup calldata"})}E(L(t,100,128)===L($i,0,28),"corrupt OffchainLookup callbaackSelector","OFFCHAIN_FAULT",{reason:"corrupt OffchainLookup callbaackSelector"}),e.selector=L(t,96,100);try{const n=Fi(t,128);if(null==n)throw new Error("abort");e.extraData=n}catch(t){E(!1,"corrupt OffchainLookup extraData","OFFCHAIN_FAULT",{reason:"corrupt OffchainLookup extraData"})}return e.errorArgs="sender,urls,calldata,selector,extraData".split(/,/).map((t=>e[t])),e}(L(t.data,4))}catch(t){E(!1,t.message,"OFFCHAIN_FAULT",{reason:"BAD_DATA",transaction:r,info:{data:s}})}E(a.sender.toLowerCase()===i.toLowerCase(),"CCIP Read sender mismatch","CALL_EXCEPTION",{action:"call",data:s,reason:"OffchainLookup",transaction:r,invocation:null,revert:{signature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",name:"OffchainLookup",args:a.errorArgs}});const o=await this.ccipReadFetch(r,a.calldata,a.urls);E(null!=o,"CCIP Read failed to fetch data","OFFCHAIN_FAULT",{reason:"FETCH_FAILED",transaction:r,info:{data:t.data,errorArgs:a.errorArgs}});const c={to:i,data:U([a.selector,Gi([o,a.extraData])])};this.emit("debug",{action:"sendCcipReadCall",transaction:c});try{const t=await this.#qt(c,e,n+1);return this.emit("debug",{action:"receiveCcipReadCallResult",transaction:Object.assign({},c),result:t}),t}catch(t){throw this.emit("debug",{action:"receiveCcipReadCallError",transaction:Object.assign({},c),error:t}),t}}throw t}}async#Wt(t){const{value:e}=await g({network:this.getNetwork(),value:t});return e}async call(t){const{tx:e,blockTag:n}=await g({tx:this._getTransactionRequest(t),blockTag:this._getBlockTag(t.blockTag)});return await this.#Wt(this.#qt(e,n,t.enableCcipRead?0:-1))}async#Yt(t,e,n){let r=this._getAddress(e),s=this._getBlockTag(n);return"string"==typeof r&&"string"==typeof s||([r,s]=await Promise.all([r,s])),await this.#Wt(this.#zt(Object.assign(t,{address:r,blockTag:s})))}async getBalance(t,e){return H(await this.#Yt({method:"getBalance"},t,e),"%response")}async getTransactionCount(t,e){return q(await this.#Yt({method:"getTransactionCount"},t,e),"%response")}async getCode(t,e){return _(await this.#Yt({method:"getCode"},t,e))}async getStorage(t,e,n){const r=H(e,"position");return _(await this.#Yt({method:"getStorage",position:r},t,n))}async broadcastTransaction(t){const{blockNumber:e,hash:n,network:r}=await g({blockNumber:this.getBlockNumber(),hash:this._perform({method:"broadcastTransaction",signedTransaction:t}),network:this.getNetwork()}),s=$n.from(t);if(s.hash!==n)throw new Error("@TODO: the returned hash did not match");return this._wrapTransactionResponse(s,r).replaceableTransaction(e)}async#Jt(t,e){if(S(t,32))return await this.#zt({method:"getBlock",blockHash:t,includeTransactions:e});let n=this._getBlockTag(t);return"string"!=typeof n&&(n=await n),await this.#zt({method:"getBlock",blockTag:n,includeTransactions:e})}async getBlock(t,e){const{network:n,params:r}=await g({network:this.getNetwork(),params:this.#Jt(t,!!e)});return null==r?null:this._wrapBlock(r,n)}async getTransaction(t){const{network:e,params:n}=await g({network:this.getNetwork(),params:this.#zt({method:"getTransaction",hash:t})});return null==n?null:this._wrapTransactionResponse(n,e)}async getTransactionReceipt(t){const{network:e,params:n}=await g({network:this.getNetwork(),params:this.#zt({method:"getTransactionReceipt",hash:t})});if(null==n)return null;if(null==n.gasPrice&&null==n.effectiveGasPrice){const e=await this.#zt({method:"getTransaction",hash:t});if(null==e)throw new Error("report this; could not find tx or effectiveGasPrice");n.effectiveGasPrice=e.gasPrice}return this._wrapTransactionReceipt(n,e)}async getTransactionResult(t){const{result:e}=await g({network:this.getNetwork(),result:this.#zt({method:"getTransactionResult",hash:t})});return null==e?null:_(e)}async getLogs(t){let e=this._getFilter(t);Ri(e)&&(e=await e);const{network:n,params:r}=await g({network:this.getNetwork(),params:this.#zt({method:"getLogs",filter:e})});return r.map((t=>this._wrapLog(t,n)))}_getProvider(t){E(!1,"provider cannot connect to target network","UNSUPPORTED_OPERATION",{operation:"_getProvider()"})}async getResolver(t){return await Xs.fromName(this,t)}async getAvatar(t){const e=await this.getResolver(t);return e?await e.getAvatar():null}async resolveName(t){const e=await this.getResolver(t);return e?await e.getAddress():null}async lookupAddress(t){const e=bn((t=Me(t)).substring(2).toLowerCase()+".addr.reverse");try{const n=await Xs.getEnsAddress(this),r=new zs(n,["function resolver(bytes32) view returns (address)"],this),s=await r.resolver(e);if(null==s||s===ke)return null;const i=new zs(s,["function name(bytes32) view returns (string)"],this),a=await i.name(e);return await this.resolveName(a)!==t?null:a}catch(t){if(b(t,"BAD_DATA")&&"0x"===t.value)return null;if(b(t,"CALL_EXCEPTION"))return null;throw t}return null}async waitForTransaction(t,e,n){const r=null!=e?e:1;return 0===r?this.getTransactionReceipt(t):new Promise((async(e,s)=>{let i=null;const a=async n=>{try{const s=await this.getTransactionReceipt(t);if(null!=s&&n-s.blockNumber+1>=r)return e(s),void(i&&(clearTimeout(i),i=null))}catch(t){console.log("EEE",t)}this.once("block",a)};null!=n&&(i=setTimeout((()=>{null!=i&&(i=null,this.off("block",a),s(v("timeout","TIMEOUT",{reason:"timeout"})))}),n)),a(await this.getBlockNumber())}))}async waitForBlock(t){E(!1,"not implemented yet","NOT_IMPLEMENTED",{operation:"waitForBlock"})}_clearTimeout(t){const e=this.#Ht.get(t);e&&(e.timer&&clearTimeout(e.timer),this.#Ht.delete(t))}_setTimeout(t,e){null==e&&(e=0);const n=this.#Kt++,r=()=>{this.#Ht.delete(n),t()};if(this.paused)this.#Ht.set(n,{timer:null,func:r,time:e});else{const t=setTimeout(r,e);this.#Ht.set(n,{timer:t,func:r,time:xi()})}return n}_forEachSubscriber(t){for(const e of this.#Lt.values())t(e.subscriber)}_getSubscriber(t){switch(t.type){case"debug":case"error":case"network":return new Oi(t.type);case"block":{const t=new wi(this);return t.pollingInterval=this.pollingInterval,t}case"safe":case"finalized":return new Ei(this,t.type);case"event":return new ki(this,t.filter);case"transaction":return new Pi(this,t.hash);case"orphan":return new Ni(this,t.filter)}throw new Error(`unsupported event: ${t.type}`)}_recoverSubscriber(t,e){for(const n of this.#Lt.values())if(n.subscriber===t){n.started&&n.subscriber.stop(),n.subscriber=e,n.started&&e.start(),null!=this.#Dt&&e.pause(this.#Dt);break}}async#Xt(t,e){let n=await Si(t,this);return"event"===n.type&&e&&e.length>0&&!0===e[0].removed&&(n=await Si({orphan:"drop-log",log:e[0]},this)),this.#Lt.get(n.tag)||null}async#Zt(t){const e=await Si(t,this),n=e.tag;let r=this.#Lt.get(n);if(!r){r={subscriber:this._getSubscriber(e),tag:n,addressableMap:new WeakMap,nameMap:new Map,started:!1,listeners:[]},this.#Lt.set(n,r)}return r}async on(t,e){const n=await this.#Zt(t);return n.listeners.push({listener:e,once:!1}),n.started||(n.subscriber.start(),n.started=!0,null!=this.#Dt&&n.subscriber.pause(this.#Dt)),this}async once(t,e){const n=await this.#Zt(t);return n.listeners.push({listener:e,once:!0}),n.started||(n.subscriber.start(),n.started=!0,null!=this.#Dt&&n.subscriber.pause(this.#Dt)),this}async emit(t,...e){const n=await this.#Xt(t,e);if(!n||0===n.listeners.length)return!1;const r=n.listeners.length;return n.listeners=n.listeners.filter((({listener:n,once:r})=>{const s=new st(this,r?null:n,t);try{n.call(this,...e,s)}catch(t){}return!r})),0===n.listeners.length&&(n.started&&n.subscriber.stop(),this.#Lt.delete(n.tag)),r>0}async listenerCount(t){if(t){const e=await this.#Xt(t);return e?e.listeners.length:0}let e=0;for(const{listeners:t}of this.#Lt.values())e+=t.length;return e}async listeners(t){if(t){const e=await this.#Xt(t);return e?e.listeners.map((({listener:t})=>t)):[]}let e=[];for(const{listeners:t}of this.#Lt.values())e=e.concat(t.map((({listener:t})=>t)));return e}async off(t,e){const n=await this.#Xt(t);if(!n)return this;if(e){const t=n.listeners.map((({listener:t})=>t)).indexOf(e);t>=0&&n.listeners.splice(t,1)}return e&&0!==n.listeners.length||(n.started&&n.subscriber.stop(),this.#Lt.delete(n.tag)),this}async removeAllListeners(t){if(t){const{tag:e,started:n,subscriber:r}=await this.#Zt(t);n&&r.stop(),this.#Lt.delete(e)}else for(const[t,{started:e,subscriber:n}]of this.#Lt)e&&n.stop(),this.#Lt.delete(t);return this}async addListener(t,e){return await this.on(t,e)}async removeListener(t,e){return this.off(t,e)}get destroyed(){return this.#Bt}destroy(){this.removeAllListeners();for(const t of this.#Ht.keys())this._clearTimeout(t);this.#Bt=!0}get paused(){return null!=this.#Dt}set paused(t){!!t!==this.paused&&(this.paused?this.resume():this.pause(!1))}pause(t){if(this.#jt=-1,null!=this.#Dt){if(this.#Dt==!!t)return;E(!1,"cannot change pause type; resume first","UNSUPPORTED_OPERATION",{operation:"pause"})}this._forEachSubscriber((e=>e.pause(t))),this.#Dt=!!t;for(const t of this.#Ht.values())t.timer&&clearTimeout(t.timer),t.time=xi()-t.time}resume(){if(null!=this.#Dt){this._forEachSubscriber((t=>t.resume())),this.#Dt=null;for(const t of this.#Ht.values()){let e=t.time;e<0&&(e=0),t.time=xi(),setTimeout(t.func,e)}}}}function Ui(t,e){try{const n=Fi(t,e);if(n)return ct(n)}catch(t){}return null}function Fi(t,e){if("0x"===t)return null;try{const n=q(L(t,e,e+32)),r=q(L(t,n,n+32));return L(t,n+32,n+32+r)}catch(t){}return null}function Li(t){const e=Y(t);if(e.length>32)throw new Error("internal; should not happen");const n=new Uint8Array(32);return n.set(e,32-e.length),n}function Di(t){if(t.length%32==0)return t;const e=new Uint8Array(32*Math.ceil(t.length/32));return e.set(t),e}const Bi=new Uint8Array([]);function Gi(t){const e=[];let n=0;for(let r=0;r<t.length;r++)e.push(Bi),n+=32;for(let r=0;r<t.length;r++){const s=O(t[r]);e[r]=Li(n),e.push(Li(s.length)),e.push(Di(s)),n+=32+32*Math.ceil(s.length/32)}return U(e)}const $i="0x0000000000000000000000000000000000000000000000000000000000000000";function Mi(t,e){if(t.provider)return t.provider;E(!1,"missing provider","UNSUPPORTED_OPERATION",{operation:e})}async function ji(t,e){let n=hs(e);if(null!=n.to&&(n.to=He(n.to,t)),null!=n.from){const e=n.from;n.from=Promise.all([t.getAddress(),He(e,t)]).then((([t,e])=>(N(t.toLowerCase()===e.toLowerCase(),"transaction from mismatch","tx.from",e),t)))}else n.from=t.getAddress();return await g(n)}class Ki{provider;constructor(t){y(this,{provider:t||null})}async getNonce(t){return Mi(this,"getTransactionCount").getTransactionCount(await this.getAddress(),t)}async populateCall(t){return await ji(this,t)}async populateTransaction(t){const e=Mi(this,"populateTransaction"),n=await ji(this,t);null==n.nonce&&(n.nonce=await this.getNonce("pending")),null==n.gasLimit&&(n.gasLimit=await this.estimateGas(n));const r=await this.provider.getNetwork();if(null!=n.chainId){N(H(n.chainId)===r.chainId,"transaction chainId mismatch","tx.chainId",t.chainId)}else n.chainId=r.chainId;const s=null!=n.maxFeePerGas||null!=n.maxPriorityFeePerGas;if(null==n.gasPrice||2!==n.type&&!s?0!==n.type&&1!==n.type||!s||N(!1,"pre-eip-1559 transaction do not support maxFeePerGas/maxPriorityFeePerGas","tx",t):N(!1,"eip-1559 transaction do not support gasPrice","tx",t),2!==n.type&&null!=n.type||null==n.maxFeePerGas||null==n.maxPriorityFeePerGas)if(0===n.type||1===n.type){const t=await e.getFeeData();E(null!=t.gasPrice,"network does not support gasPrice","UNSUPPORTED_OPERATION",{operation:"getGasPrice"}),null==n.gasPrice&&(n.gasPrice=t.gasPrice)}else{const t=await e.getFeeData();if(null==n.type)if(null!=t.maxFeePerGas&&null!=t.maxPriorityFeePerGas)if(n.type=2,null!=n.gasPrice){const t=n.gasPrice;delete n.gasPrice,n.maxFeePerGas=t,n.maxPriorityFeePerGas=t}else null==n.maxFeePerGas&&(n.maxFeePerGas=t.maxFeePerGas),null==n.maxPriorityFeePerGas&&(n.maxPriorityFeePerGas=t.maxPriorityFeePerGas);else null!=t.gasPrice?(E(!s,"network does not support EIP-1559","UNSUPPORTED_OPERATION",{operation:"populateTransaction"}),null==n.gasPrice&&(n.gasPrice=t.gasPrice),n.type=0):E(!1,"failed to get consistent fee data","UNSUPPORTED_OPERATION",{operation:"signer.getFeeData"});else 2!==n.type&&3!==n.type||(null==n.maxFeePerGas&&(n.maxFeePerGas=t.maxFeePerGas),null==n.maxPriorityFeePerGas&&(n.maxPriorityFeePerGas=t.maxPriorityFeePerGas))}else n.type=2;return await g(n)}async estimateGas(t){return Mi(this,"estimateGas").estimateGas(await this.populateCall(t))}async call(t){return Mi(this,"call").call(await this.populateCall(t))}async resolveName(t){const e=Mi(this,"resolveName");return await e.resolveName(t)}async sendTransaction(t){const e=Mi(this,"sendTransaction"),n=await this.populateTransaction(t);delete n.from;const r=$n.from(n);return await e.broadcastTransaction(await this.signTransaction(r))}}class Hi extends Ki{address;constructor(t,e){super(e),y(this,{address:t})}async getAddress(){return this.address}connect(t){return new Hi(this.address,t)}#Qt(t,e){E(!1,`VoidSigner cannot sign ${t}`,"UNSUPPORTED_OPERATION",{operation:e})}async signTransaction(t){this.#Qt("transactions","signTransaction")}async signMessage(t){this.#Qt("messages","signMessage")}async signTypedData(t,e,n){this.#Qt("typed-data","signTypedData")}}class Vi{#At;#te;#Ot;#Ct;#ee;#ne;constructor(t){this.#At=t,this.#te=null,this.#Ot=this.#xt.bind(this),this.#Ct=!1,this.#ee=null,this.#ne=!1}_subscribe(t){throw new Error("subclasses must override this")}_emitResults(t,e){throw new Error("subclasses must override this")}_recover(t){throw new Error("subclasses must override this")}async#xt(t){try{null==this.#te&&(this.#te=this._subscribe(this.#At));let t=null;try{t=await this.#te}catch(t){if(!b(t,"UNSUPPORTED_OPERATION")||"eth_newFilter"!==t.operation)throw t}if(null==t)return this.#te=null,void this.#At._recoverSubscriber(this,this._recover(this.#At));const e=await this.#At.getNetwork();if(this.#ee||(this.#ee=e),this.#ee.chainId!==e.chainId)throw new Error("chaid changed");if(this.#ne)return;const n=await this.#At.send("eth_getFilterChanges",[t]);await this._emitResults(this.#At,n)}catch(t){console.log("@TODO",t)}this.#At.once("block",this.#Ot)}#re(){const t=this.#te;t&&(this.#te=null,t.then((t=>{this.#At.destroyed||this.#At.send("eth_uninstallFilter",[t])})))}start(){this.#Ct||(this.#Ct=!0,this.#xt(-2))}stop(){this.#Ct&&(this.#Ct=!1,this.#ne=!0,this.#re(),this.#At.off("block",this.#Ot))}pause(t){t&&this.#re(),this.#At.off("block",this.#Ot)}resume(){this.start()}}class zi extends Vi{#se;constructor(t,e){var n;super(t),this.#se=(n=e,JSON.parse(JSON.stringify(n)))}_recover(t){return new ki(t,this.#se)}async _subscribe(t){return await t.send("eth_newFilter",[this.#se])}async _emitResults(t,e){for(const n of e)t.emit(this.#se,t._wrapLog(n,t._network))}}class Ji extends Vi{async _subscribe(t){return await t.send("eth_newPendingTransactionFilter",[])}async _emitResults(t,e){for(const n of e)t.emit("pending",n)}}const qi="bigint,boolean,function,number,string,symbol".split(/,/g);function Wi(t){if(null==t||qi.indexOf(typeof t)>=0)return t;if("function"==typeof t.getAddress)return t;if(Array.isArray(t))return t.map(Wi);if("object"==typeof t)return Object.keys(t).reduce(((e,n)=>(e[n]=t[n],e)),{});throw new Error(`should not happen: ${t} (${typeof t})`)}function Yi(t){return new Promise((e=>{setTimeout(e,t)}))}function Xi(t){return t?t.toLowerCase():t}function Zi(t){return t&&"number"==typeof t.pollingInterval}const Qi={polling:!1,staticNetwork:null,batchStallTime:10,batchMaxSize:1<<20,batchMaxCount:100,cacheTimeout:250,pollingInterval:4e3};class ta extends Ki{address;constructor(t,e){super(t),y(this,{address:e=Me(e)})}connect(t){E(!1,"cannot reconnect JsonRpcSigner","UNSUPPORTED_OPERATION",{operation:"signer.connect"})}async getAddress(){return this.address}async populateTransaction(t){return await this.populateCall(t)}async sendUncheckedTransaction(t){const e=Wi(t),n=[];if(e.from){const r=e.from;n.push((async()=>{const n=await He(r,this.provider);N(null!=n&&n.toLowerCase()===this.address.toLowerCase(),"from address mismatch","transaction",t),e.from=n})())}else e.from=this.address;if(null==e.gasLimit&&n.push((async()=>{e.gasLimit=await this.provider.estimateGas({...e,from:this.address})})()),null!=e.to){const t=e.to;n.push((async()=>{e.to=await He(t,this.provider)})())}n.length&&await Promise.all(n);const r=this.provider.getRpcTransaction(e);return this.provider.send("eth_sendTransaction",[r])}async sendTransaction(t){const e=await this.provider.getBlockNumber(),n=await this.sendUncheckedTransaction(t);return await new Promise(((t,r)=>{const s=[1e3,100];let i=0;const a=async()=>{try{const r=await this.provider.getTransaction(n);if(null!=r)return void t(r.replaceableTransaction(e))}catch(t){if(b(t,"CANCELLED")||b(t,"BAD_DATA")||b(t,"NETWORK_ERROR")||b(t,"UNSUPPORTED_OPERATION"))return null==t.info&&(t.info={}),t.info.sendTransactionHash=n,void r(t);if(b(t,"INVALID_ARGUMENT")&&(i++,null==t.info&&(t.info={}),t.info.sendTransactionHash=n,i>10))return void r(t);this.provider.emit("error",v("failed to fetch transation after sending (will try again)","UNKNOWN_ERROR",{error:t}))}this.provider._setTimeout((()=>{a()}),s.pop()||4e3)};a()}))}async signTransaction(t){const e=Wi(t);if(e.from){const n=await He(e.from,this.provider);N(null!=n&&n.toLowerCase()===this.address.toLowerCase(),"from address mismatch","transaction",t),e.from=n}else e.from=this.address;const n=this.provider.getRpcTransaction(e);return await this.provider.send("eth_signTransaction",[n])}async signMessage(t){const e="string"==typeof t?ot(t):t;return await this.provider.send("personal_sign",[_(e),this.address.toLowerCase()])}async signTypedData(t,e,n){const r=Wi(n),s=await nr.resolveNames(t,e,r,(async t=>{const e=await He(t);return N(null!=e,"TypedData does not support null address","value",t),e}));return await this.provider.send("eth_signTypedData_v4",[this.address.toLowerCase(),JSON.stringify(nr.getPayload(s.domain,e,s.value))])}async unlock(t){return this.provider.send("personal_unlockAccount",[this.address.toLowerCase(),t,null])}async _legacySignMessage(t){const e="string"==typeof t?ot(t):t;return await this.provider.send("eth_sign",[this.address.toLowerCase(),_(e)])}}class ea extends _i{#B;#ie;#ae;#oe;#ce;#ee;#le;#ue(){if(this.#oe)return;const t=1===this._getOption("batchMaxCount")?0:this._getOption("batchStallTime");this.#oe=setTimeout((()=>{this.#oe=null;const t=this.#ae;for(this.#ae=[];t.length;){const e=[t.shift()];for(;t.length&&e.length!==this.#B.batchMaxCount;){e.push(t.shift());if(JSON.stringify(e.map((t=>t.payload))).length>this.#B.batchMaxSize){t.unshift(e.pop());break}}(async()=>{const t=1===e.length?e[0].payload:e.map((t=>t.payload));this.emit("debug",{action:"sendRpcPayload",payload:t});try{const n=await this._send(t);this.emit("debug",{action:"receiveRpcResult",result:n});for(const{resolve:t,reject:r,payload:s}of e){if(this.destroyed){r(v("provider destroyed; cancelled request","UNSUPPORTED_OPERATION",{operation:s.method}));continue}const e=n.filter((t=>t.id===s.id))[0];if(null!=e)"error"in e?r(this.getRpcError(s,e)):t(e.result);else{const t=v("missing response for request","BAD_DATA",{value:n,info:{payload:s}});this.emit("error",t),r(t)}}}catch(t){this.emit("debug",{action:"receiveRpcError",error:t});for(const{reject:n}of e)n(t)}})()}}),t)}constructor(t,e){super(t,e),this.#ie=1,this.#B=Object.assign({},Qi,e||{}),this.#ae=[],this.#oe=null,this.#ee=null,this.#le=null;{let t=null;const e=new Promise((e=>{t=e}));this.#ce={promise:e,resolve:t}}const n=this._getOption("staticNetwork");"boolean"==typeof n?(N(!n||"any"!==t,"staticNetwork cannot be used on special network 'any'","options",e),n&&null!=t&&(this.#ee=fi.from(t))):n&&(N(null==t||n.matches(t),"staticNetwork MUST match network object","options",e),this.#ee=n)}_getOption(t){return this.#B[t]}get _network(){return E(this.#ee,"network is not available yet","NETWORK_ERROR"),this.#ee}async _perform(t){if("call"===t.method||"estimateGas"===t.method){let e=t.transaction;if(e&&null!=e.type&&H(e.type)&&null==e.maxFeePerGas&&null==e.maxPriorityFeePerGas){const n=await this.getFeeData();null==n.maxFeePerGas&&null==n.maxPriorityFeePerGas&&(t=Object.assign({},t,{transaction:Object.assign({},e,{type:void 0})}))}}const e=this.getRpcRequest(t);return null!=e?await this.send(e.method,e.args):super._perform(t)}async _detectNetwork(){const t=this._getOption("staticNetwork");if(t){if(!0!==t)return t;if(this.#ee)return this.#ee}return this.#le?await this.#le:this.ready?(this.#le=(async()=>{try{const t=fi.from(H(await this.send("eth_chainId",[])));return this.#le=null,t}catch(t){throw this.#le=null,t}})(),await this.#le):(this.#le=(async()=>{const t={id:this.#ie++,method:"eth_chainId",params:[],jsonrpc:"2.0"};let e;this.emit("debug",{action:"sendRpcPayload",payload:t});try{e=(await this._send(t))[0],this.#le=null}catch(t){throw this.#le=null,this.emit("debug",{action:"receiveRpcError",error:t}),t}if(this.emit("debug",{action:"receiveRpcResult",result:e}),"result"in e)return fi.from(H(e.result));throw this.getRpcError(t,e)})(),await this.#le)}_start(){null!=this.#ce&&null!=this.#ce.resolve&&(this.#ce.resolve(),this.#ce=null,(async()=>{for(;null==this.#ee&&!this.destroyed;)try{this.#ee=await this._detectNetwork()}catch(t){if(this.destroyed)break;console.log("JsonRpcProvider failed to detect network and cannot start up; retry in 1s (perhaps the URL is wrong or the node is not started)"),this.emit("error",v("failed to bootstrap network detection","NETWORK_ERROR",{event:"initial-network-discovery",info:{error:t}})),await Yi(1e3)}this.#ue()})())}async _waitUntilReady(){if(null!=this.#ce)return await this.#ce.promise}_getSubscriber(t){return"pending"===t.type?new Ji(this):"event"===t.type?this._getOption("polling")?new ki(this,t.filter):new zi(this,t.filter):"orphan"===t.type&&"drop-log"===t.filter.orphan?new Oi("orphan"):super._getSubscriber(t)}get ready(){return null==this.#ce}getRpcTransaction(t){const e={};return["chainId","gasLimit","gasPrice","type","maxFeePerGas","maxPriorityFeePerGas","nonce","value"].forEach((n=>{if(null==t[n])return;let r=n;"gasLimit"===n&&(r="gas"),e[r]=X(H(t[n],`tx.${n}`))})),["from","to","data"].forEach((n=>{null!=t[n]&&(e[n]=_(t[n]))})),t.accessList&&(e.accessList=En(t.accessList)),t.blobVersionedHashes&&(e.blobVersionedHashes=t.blobVersionedHashes.map((t=>t.toLowerCase()))),e}getRpcRequest(t){switch(t.method){case"chainId":return{method:"eth_chainId",args:[]};case"getBlockNumber":return{method:"eth_blockNumber",args:[]};case"getGasPrice":return{method:"eth_gasPrice",args:[]};case"getPriorityFee":return{method:"eth_maxPriorityFeePerGas",args:[]};case"getBalance":return{method:"eth_getBalance",args:[Xi(t.address),t.blockTag]};case"getTransactionCount":return{method:"eth_getTransactionCount",args:[Xi(t.address),t.blockTag]};case"getCode":return{method:"eth_getCode",args:[Xi(t.address),t.blockTag]};case"getStorage":return{method:"eth_getStorageAt",args:[Xi(t.address),"0x"+t.position.toString(16),t.blockTag]};case"broadcastTransaction":return{method:"eth_sendRawTransaction",args:[t.signedTransaction]};case"getBlock":if("blockTag"in t)return{method:"eth_getBlockByNumber",args:[t.blockTag,!!t.includeTransactions]};if("blockHash"in t)return{method:"eth_getBlockByHash",args:[t.blockHash,!!t.includeTransactions]};break;case"getTransaction":return{method:"eth_getTransactionByHash",args:[t.hash]};case"getTransactionReceipt":return{method:"eth_getTransactionReceipt",args:[t.hash]};case"call":return{method:"eth_call",args:[this.getRpcTransaction(t.transaction),t.blockTag]};case"estimateGas":return{method:"eth_estimateGas",args:[this.getRpcTransaction(t.transaction)]};case"getLogs":return t.filter&&null!=t.filter.address&&(Array.isArray(t.filter.address)?t.filter.address=t.filter.address.map(Xi):t.filter.address=Xi(t.filter.address)),{method:"eth_getLogs",args:[t.filter]}}return null}getRpcError(t,e){const{method:n}=t,{error:r}=e;if("eth_estimateGas"===n&&r.message){const e=r.message;if(!e.match(/revert/i)&&e.match(/insufficient funds/i))return v("insufficient funds","INSUFFICIENT_FUNDS",{transaction:t.params[0],info:{payload:t,error:r}})}if("eth_call"===n||"eth_estimateGas"===n){const e=sa(r),s=Qr.getBuiltinCallException("eth_call"===n?"call":"estimateGas",t.params[0],e?e.data:null);return s.info={error:r,payload:t},s}const s=JSON.stringify(function(t){const e=[];return ia(t,e),e}(r));if("string"==typeof r.message&&r.message.match(/user denied|ethers-user-denied/i)){return v("user rejected action","ACTION_REJECTED",{action:{eth_sign:"signMessage",personal_sign:"signMessage",eth_signTypedData_v4:"signTypedData",eth_signTransaction:"signTransaction",eth_sendTransaction:"sendTransaction",eth_requestAccounts:"requestAccess",wallet_requestAccounts:"requestAccess"}[n]||"unknown",reason:"rejected",info:{payload:t,error:r}})}if("eth_sendRawTransaction"===n||"eth_sendTransaction"===n){const e=t.params[0];if(s.match(/insufficient funds|base fee exceeds gas limit/i))return v("insufficient funds for intrinsic transaction cost","INSUFFICIENT_FUNDS",{transaction:e,info:{error:r}});if(s.match(/nonce/i)&&s.match(/too low/i))return v("nonce has already been used","NONCE_EXPIRED",{transaction:e,info:{error:r}});if(s.match(/replacement transaction/i)&&s.match(/underpriced/i))return v("replacement fee too low","REPLACEMENT_UNDERPRICED",{transaction:e,info:{error:r}});if(s.match(/only replay-protected/i))return v("legacy pre-eip-155 transactions not supported","UNSUPPORTED_OPERATION",{operation:n,info:{transaction:e,info:{error:r}}})}let i=!!s.match(/the method .* does not exist/i);return i||r&&r.details&&r.details.startsWith("Unauthorized method:")&&(i=!0),i?v("unsupported operation","UNSUPPORTED_OPERATION",{operation:t.method,info:{error:r,payload:t}}):v("could not coalesce error","UNKNOWN_ERROR",{error:r,payload:t})}send(t,e){if(this.destroyed)return Promise.reject(v("provider destroyed; cancelled request","UNSUPPORTED_OPERATION",{operation:t}));const n=this.#ie++,r=new Promise(((r,s)=>{this.#ae.push({resolve:r,reject:s,payload:{method:t,params:e,id:n,jsonrpc:"2.0"}})}));return this.#ue(),r}async getSigner(t){null==t&&(t=0);const e=this.send("eth_accounts",[]);if("number"==typeof t){const n=await e;if(t>=n.length)throw new Error("no such account");return new ta(this,n[t])}const{accounts:n}=await g({network:this.getNetwork(),accounts:e});t=Me(t);for(const e of n)if(Me(e)===t)return new ta(this,t);throw new Error("invalid account")}async listAccounts(){return(await this.send("eth_accounts",[])).map((t=>new ta(this,t)))}destroy(){this.#oe&&(clearTimeout(this.#oe),this.#oe=null);for(const{payload:t,reject:e}of this.#ae)e(v("provider destroyed; cancelled request","UNSUPPORTED_OPERATION",{operation:t.method}));this.#ae=[],super.destroy()}}class na extends ea{#he;constructor(t,e){super(t,e);let n=this._getOption("pollingInterval");null==n&&(n=Qi.pollingInterval),this.#he=n}_getSubscriber(t){const e=super._getSubscriber(t);return Zi(e)&&(e.pollingInterval=this.#he),e}get pollingInterval(){return this.#he}set pollingInterval(t){if(!Number.isInteger(t)||t<0)throw new Error("invalid interval");this.#he=t,this._forEachSubscriber((t=>{Zi(t)&&(t.pollingInterval=this.#he)}))}}class ra extends na{#de;constructor(t,e,n){null==t&&(t="http://localhost:8545"),super(e,n),this.#de="string"==typeof t?new wt(t):t.clone()}_getConnection(){return this.#de.clone()}async send(t,e){return await this._start(),await super.send(t,e)}async _send(t){const e=this._getConnection();e.body=JSON.stringify(t),e.setHeader("content-type","application/json");const n=await e.send();n.assertOk();let r=n.bodyJson;return Array.isArray(r)||(r=[r]),r}}function sa(t){if(null==t)return null;if("string"==typeof t.message&&t.message.match(/revert/i)&&S(t.data))return{message:t.message,data:t.data};if("object"==typeof t){for(const e in t){const n=sa(t[e]);if(n)return n}return null}if("string"==typeof t)try{return sa(JSON.parse(t))}catch(t){}return null}function ia(t,e){if(null!=t){if("string"==typeof t.message&&e.push(t.message),"object"==typeof t)for(const n in t)ia(t[n],e);if("string"==typeof t)try{return ia(JSON.parse(t),e)}catch(t){}}}class aa extends na{#E;constructor(t,e,n){const r=Object.assign({},null!=n?n:{},{batchMaxCount:1});N(t&&t.request,"invalid EIP-1193 provider","ethereum",t),super(e,r),this.#E=async(e,n)=>{const r={method:e,params:n};this.emit("debug",{action:"sendEip1193Request",payload:r});try{const e=await t.request(r);return this.emit("debug",{action:"receiveEip1193Result",result:e}),e}catch(t){const e=new Error(t.message);throw e.code=t.code,e.data=t.data,e.payload=r,this.emit("debug",{action:"receiveEip1193Error",error:e}),e}}}async send(t,e){return await this._start(),await super.send(t,e)}async _send(t){N(!Array.isArray(t),"EIP-1193 does not support batch request","payload",t);try{const e=await this.#E(t.method,t.params||[]);return[{id:t.id,result:e}]}catch(e){return[{id:t.id,error:{code:e.code,data:e.data,message:e.message}}]}}getRpcError(t,e){switch((e=JSON.parse(JSON.stringify(e))).error.code||-1){case 4001:e.error.message=`ethers-user-denied: ${e.error.message}`;break;case 4200:e.error.message=`ethers-unsupported: ${e.error.message}`}return super.getRpcError(t,e)}async hasSigner(t){null==t&&(t=0);const e=await this.send("eth_accounts",[]);return"number"==typeof t?e.length>t:(t=t.toLowerCase(),0!==e.filter((e=>e.toLowerCase()===t)).length)}async getSigner(t){if(null==t&&(t=0),!await this.hasSigner(t))try{await this.#E("eth_requestAccounts",[])}catch(t){const e=t.payload;throw this.getRpcError(e,{id:e.id,error:t})}return await super.getSigner(t)}}class oa extends Ki{address;#pe;constructor(t,e){super(e),N(t&&"function"==typeof t.sign,"invalid private key","privateKey","[ REDACTED ]"),this.#pe=t;y(this,{address:Nn(this.signingKey.publicKey)})}get signingKey(){return this.#pe}get privateKey(){return this.signingKey.privateKey}async getAddress(){return this.address}connect(t){return new oa(this.#pe,t)}async signTransaction(t){t=hs(t);const{to:e,from:n}=await g({to:t.to?He(t.to,this.provider):void 0,from:t.from?He(t.from,this.provider):void 0});null!=e&&(t.to=e),null!=n&&(t.from=n),null!=t.from&&(N(Me(t.from)===this.address,"transaction from address mismatch","tx.from",t.from),delete t.from);const r=$n.from(t);return r.signature=this.signingKey.sign(r.unsignedHash),r.serialized}async signMessage(t){return this.signMessageSync(t)}signMessageSync(t){return this.signingKey.sign(Mn(t)).serialized}async signTypedData(t,e,n){const r=await nr.resolveNames(t,e,n,(async t=>{E(null!=this.provider,"cannot resolve ENS names without a provider","UNSUPPORTED_OPERATION",{operation:"resolveName",info:{name:t}});const e=await this.provider.resolveName(t);return E(null!=e,"unconfigured ENS name","UNCONFIGURED_NAME",{value:t}),e}));return this.signingKey.sign(nr.hash(r.domain,e,r.value)).serialized}}const ca=" !#$%&'()*+,-./<=>?@[]^_`{|}~",la=/^[a-z]*$/i;function ua(t,e){let n=97;return t.reduce(((t,r)=>(r===e?n++:r.match(la)?t.push(String.fromCharCode(n)+r):(n=97,t.push(r)),t)),[])}function ha(t){return N("0"===t[0],"unsupported auwl data","data",t),function(t,e){for(let n=28;n>=0;n--)t=t.split(ca[n]).join(e.substring(2*n,2*n+2));const n=[],r=t.replace(/(:|([0-9])|([A-Z][a-z]*))/g,((t,e,r,s)=>{if(r)for(let t=parseInt(r);t>=0;t--)n.push(";");else n.push(e.toLowerCase());return""}));if(r)throw new Error(`leftovers: ${JSON.stringify(r)}`);return ua(ua(n,";"),":")}(t.substring(59),t.substring(1,59))}class da{locale;constructor(t){y(this,{locale:t})}split(t){return t.toLowerCase().split(/\s+/g)}join(t){return t.join(" ")}}class pa extends da{#k;#fe;constructor(t,e,n){super(t),this.#k=e,this.#fe=n,this.#ge=null}get _data(){return this.#k}_decodeWords(){return ha(this.#k)}#ge;#ye(){if(null==this.#ge){const t=this._decodeWords();if(fn(t.join("\n")+"\n")!==this.#fe)throw new Error(`BIP39 Wordlist for ${this.locale} FAILED`);this.#ge=t}return this.#ge}getWord(t){const e=this.#ye();return N(t>=0&&t<e.length,`invalid word index: ${t}`,"index",t),e[t]}getWordIndex(t){return this.#ye().indexOf(t)}}let fa=null;class ga extends pa{constructor(){super("en","0erleonalorenseinceregesticitStanvetearctssi#ch2Athck&tneLl0And#Il.yLeOutO=S|S%b/ra@SurdU'0Ce[Cid|CountCu'Hie=IdOu,-Qui*Ro[TT]T%T*[Tu$0AptDD-tD*[Ju,M.UltV<)Vi)0Rob-0FairF%dRaid0A(EEntRee0Ead0MRRp%tS!_rmBumCoholErtI&LLeyLowMo,O}PhaReadySoT Ways0A>urAz(gOngOuntU'd0Aly,Ch%Ci|G G!GryIm$K!Noun)Nu$O` Sw T&naTiqueXietyY1ArtOlogyPe?P!Pro=Ril1ChCt-EaEnaGueMMedM%MyOundR<+Re,Ri=RowTTefa@Ti,Tw%k0KPe@SaultSetSi,SumeThma0H!>OmTa{T&dT.udeTra@0Ct]D.Gu,NtTh%ToTumn0Era+OcadoOid0AkeA*AyEsomeFulKw?d0Is:ByChel%C#D+GL<)Lc#y~MbooN<aNn RRelyRga(R*lSeS-SketTt!3A^AnAutyCau'ComeEfF%eG(Ha=H(dLie=LowLtN^Nef./TrayTt Twe&Y#d3Cyc!DKeNdOlogyRdR`Tt _{AdeAmeAnketA,EakE[IndOodO[omOu'UeUrUsh_rdAtDyIlMbNeNusOkO,Rd R(gRrowSsTtomUn)XY_{etA(AndA[A=EadEezeI{Id+IefIghtIngIskOccoliOk&OnzeOomO` OwnUsh2Bb!DdyD+tFf$oIldLbLkL!tNd!Nk Rd&Rg R,SS(e[SyTt Y Zz:Bba+B(B!CtusGeKe~LmM aMpNN$N)lNdyNn#NoeNvasNy#Pab!P.$Pta(RRb#RdRgoRpetRryRtSeShS(o/!Su$TT$ogT^Teg%yTt!UghtU'Ut]Ve3Il(gL yM|NsusNturyRe$Rta(_irAlkAmp]An+AosApt Ar+A'AtEapE{Ee'EfErryE,I{&IefIldIm}yOi)Oo'R#-U{!UnkUrn0G?Nnam#Rc!Tiz&TyVil_imApArifyAwAyE<ErkEv I{I|IffImbIn-IpO{OgO'O`OudOwnUbUmpU, Ut^_^A,C#utDeFfeeIlInL!@L%LumnMb(eMeMf%tM-Mm#Mp<yNc tNdu@NfirmNg*[N}@Nsid NtrolNv()OkOlPp PyR$ReRnR*@/Tt#U^UntryUp!Ur'Us(V Yo>_{Ad!AftAmA}AshAt AwlAzyEamEd.EekEwI{etImeIspIt-OpO[Ou^OwdUci$UelUi'Umb!Un^UshYY,$2BeLtu*PPbo?dRiousRr|Rta(R=Sh]/omTe3C!:DMa+MpN)Ng R(gShUght WnY3AlBa>BrisCadeCemb CideCl(eC%a>C*a'ErF&'F(eFyG*eLayLiv M<dMi'Ni$Nti,NyP?tP&dPos.P`PutyRi=ScribeS tSignSkSpair/royTailTe@VelopVi)Vo>3AgramAlAm#dAryCeE'lEtFf G.$Gn.yLemmaNn NosaurRe@RtSag*eScov Sea'ShSmi[S%d Splay/<)V tVideV%)Zzy5Ct%Cum|G~Lph(Ma(Na>NkeyN%OrSeUb!Ve_ftAg#AmaA,-AwEamE[IftIllInkIpI=OpUmY2CkMbNeR(g/T^Ty1Arf1Nam-:G G!RlyRnR`Sily/Sy1HoOlogyOnomy0GeItUca>1F%t0G1GhtTh 2BowD E@r-Eg<tEm|Eph<tEvat%I>Se0B?kBodyBra)Er+Ot]PloyPow Pty0Ab!A@DD![D%'EmyErgyF%)Ga+G(eH<)JoyLi,OughR-hRollSu*T Ti*TryVelope1Isode0U$Uip0AA'OdeOs]R%Upt0CapeSayS&)Ta>0Ern$H-s1Id&)IlOkeOl=1A@Amp!Ce[Ch<+C.eCludeCu'Ecu>Erci'Hau,Hib.I!I,ItOt-P<dPe@Pi*Pla(Po'P*[T&dTra0EEbrow:Br-CeCultyDeIntI`~L'MeMilyMousNNcyNtasyRmSh]TT$Th TigueUltV%.e3Atu*Bru?yD $EEdElMa!N)/iv$T^V W3B Ct]EldGu*LeLmLt N$NdNeNg NishReRmR,Sc$ShTT}[X_gAmeAshAtAv%EeIghtIpOatO{O%Ow UidUshY_mCusGIlLd~owOdOtR)Re,R+tRkRtu}RumRw?dSsil/ UndX_gi!AmeEqu|EshI&dIn+OgOntO,OwnOz&U.2ElNNnyRna)RyTu*:D+tInLaxy~ yMePRa+Rba+Rd&Rl-Rm|SSpTeTh U+Ze3N $NiusN*Nt!Nu(e/u*2O,0AntFtGg!Ng RaffeRlVe_dAn)A*A[IdeImp'ObeOomOryO=OwUe_tDde[LdOdO'RillaSpelSsipV nWn_bA)A(AntApeA[Av.yEatE&IdIefItOc yOupOwUnt_rdE[IdeIltIt?N3M:B.IrLfMm M, NdPpyRb%RdRshR=,TVeWkZ?d3AdAl`ArtAvyD+hogIght~oLmetLpNRo3Dd&Gh~NtPRe/%y5BbyCkeyLdLeLiday~owMeNeyOdPeRnRr%R'Sp.$/TelUrV 5BGeM<Mb!M%Nd*dNgryNtRd!RryRtSb<d3Brid:1EOn0EaEntifyLe2N%e4LLeg$L}[0A+Ita>M&'Mu}Pa@Po'Pro=Pul'0ChCludeComeC*a'DexD-a>Do%Du,ryF<tFl-tF%mHa!H .Iti$Je@JuryMa>N Noc|PutQuiryS<eSe@SideSpi*/$lTa@T e,ToVe,V.eVol=3On0L<dOla>Sue0Em1Ory:CketGu?RZz3AlousAns~yWel9BInKeUr}yY5D+I)MpNg!Ni%Nk/:Ng?oo3EnEpT^upY3CkDD}yNdNgdomSsTT^&TeTt&Wi4EeIfeO{Ow:BBelB%Dd DyKeMpNgua+PtopR+T T(UghUndryVaWWnWsu.Y Zy3Ad AfArnA=Ctu*FtGG$G&dIsu*M#NdNg`NsOp?dSs#Tt Vel3ArB tyBr?yC&'FeFtGhtKeMbM.NkOnQuid/Tt!VeZ?d5AdAnB, C$CkG-NelyNgOpTt yUdUn+VeY$5CkyGga+Mb N?N^Xury3R-s:Ch(eDG-G}tIdIlInJ%KeMm$NNa+Nda>NgoNs]Nu$P!Rb!R^Rg(R(eRketRria+SkSs/ T^T i$ThTrixTt XimumZe3AdowAnAsu*AtCh<-D$DiaLodyLtMb M%yNt]NuRcyR+R.RryShSsa+T$Thod3Dd!DnightLk~]M-NdNimumN%Nu>Rac!Rr%S ySs/akeXXedXtu*5Bi!DelDifyMM|N.%NkeyN, N`OnR$ReRn(gSqu.oTh T]T%Unta(U'VeVie5ChFf(LeLtiplySc!SeumShroomS-/Tu$3Self/ yTh:I=MePk(Rrow/yT]Tu*3ArCkEdGati=G!@I` PhewR=/TTw%kUtr$V WsXt3CeGht5B!I'M(eeOd!Rm$R`SeTab!TeTh(gTi)VelW5C!?Mb R'T:K0EyJe@Li+Scu*S =Ta(Vious0CurE<Tob 0Or1FF Fi)T&2L1Ay0DI=Ymp-0It0CeEI#L(eLy1EnEraIn]Po'T]1An+B.Ch?dD D(?yG<I|Ig($Ph<0Tr-h0H 0Tdo%T TputTside0AlEnEr0NN 0Yg&0/ 0O}:CtDd!GeIrLa)LmNdaNelN-N` P RadeR|RkRrotRtySsT^ThTi|TrolTt nU'VeYm|3A)AnutArAs<tL-<NN$tyNcilOp!Pp Rfe@Rm.Rs#T2O}OtoRa'Ys-$0AnoCn-Ctu*E)GGe#~LotNkO} Pe/olT^Zza_)A}tA,-A>AyEa'Ed+U{UgUn+2EmEtIntL?LeLi)NdNyOlPul?Rt]S.]Ssib!/TatoTt yV tyWd W _@i)Ai'Ed-tEf Epa*Es|EttyEv|I)IdeIm?yIntI%.yIs#Iva>IzeOb!mO)[Odu)Of.OgramOje@Omo>OofOp tyOsp O>@OudOvide2Bl-Dd(g~LpL'Mpk(N^PilPpyR^a'R.yRpo'R'ShTZz!3Ramid:99Al.yAntumArt E,]I{ItIzO>:Bb.Cco#CeCkD?DioIlInI'~yMpN^NdomN+PidReTeTh V&WZ%3AdyAlAs#BelBuildC$lCei=CipeC%dCyc!Du)F!@F%mFu'G]G*tGul?Je@LaxLea'LiefLyMa(Memb M(dMo=Nd NewNtOp&PairPeatPla)P%tQui*ScueSemb!Si,Sour)Sp#'SultTi*T*atTurnUn]Ve$ViewW?d2Y`m0BBb#CeChDeD+F!GhtGidNgOtPp!SkTu$V$V 5AdA,BotBu,CketM<)OfOkieOmSeTa>UghUndU>Y$5Bb DeGLeNNwayR$:DDd!D}[FeIlLadLm#L#LtLu>MeMp!NdTisfyToshiU)Usa+VeY1A!AnA*Att E}HemeHoolI&)I[%sOrp]OutRapRe&RiptRub1AAr^As#AtC#dC*tCt]Cur.yEdEkGm|Le@~M(?Ni%N'Nt&)RiesRvi)Ss]Tt!TupV&_dowAftAllowA*EdEllEriffIeldIftI}IpIv O{OeOotOpOrtOuld O=RimpRugUff!Y0Bl(gCkDeE+GhtGnL|Lk~yLv Mil?Mp!N)NgR&/ Tua>XZe1A>Et^IIllInIrtUll0AbAmEepEnd I)IdeIghtImOg<OtOwUsh0AllArtI!OkeOo`0A{AkeApIffOw0ApCc Ci$CkDaFtL?Ldi LidLut]L=Me#eNgOnRryRtUlUndUpUr)U`0A)A*Ati$AwnEakEci$EedEllEndH eI)Id IkeInIr.L.OilOns%O#OrtOtRayReadR(gY0Ua*UeezeUir*l_b!AdiumAffA+AirsAmpAndArtA>AyEakEelEmEpE*oI{IllIngO{Oma^O}OolOryO=Ra>gyReetRikeR#gRugg!Ud|UffUmb!Y!0Bje@Bm.BwayC)[ChDd&Ff G?G+,ItMm NNnyN'tP PplyP*meReRfa)R+Rpri'RroundR=ySpe@/a(1AllowAmpApArmE?EetIftImIngIt^Ord1MbolMptomRup/em:B!Ck!GIlL|LkNkPeR+tSk/eTtooXi3A^Am~NN<tNnisNtRm/Xt_nkAtEmeEnE%yE*EyIngIsOughtReeRi=RowUmbUnd 0CketDeG LtMb MeNyPRedSsueT!5A,BaccoDayDdl EGe` I!tK&MatoM%rowNeNgueNightOlO`PP-Pp!R^RnadoRtoi'SsT$Uri,W?dW WnY_{AdeAff-Ag-A(Ansf ApAshA=lAyEatEeEndI$IbeI{Igg ImIpOphyOub!U{UeUlyUmpetU,U`Y2BeIt]Mb!NaN}lRkeyRnRt!1El=EntyI)InI,O1PeP-$:5Ly5B*lla0Ab!Awa*C!Cov D DoFairFoldHappyIf%mIqueItIv 'KnownLo{TilUsu$Veil1Da>GradeHoldOnP Set1B<Ge0A+EEdEfulE![U$0Il.y:C<tCuumGueLidL!yL=NNishP%Rious/Ult3H-!L=tNd%Ntu*NueRbRifyRs]RyS'lT <3Ab!Br<tCiousCt%yDeoEw~a+Nta+Ol(Rtu$RusSaS.Su$T$Vid5C$I)IdLc<oLumeTeYa+:GeG#ItLk~LnutNtRfa*RmRri%ShSp/eT VeY3Al`Ap#ArA'lA` BDd(gEk&dIrdLcome/T_!AtEatEelEnE*IpIsp 0DeD`FeLd~NNdowNeNgNkNn Nt ReSdomSeShT}[5LfM<Nd OdOlRdRkRldRryR`_pE{E,!I,I>Ong::Rd3Ar~ow9UUngU`:3BraRo9NeO","0x3c8acc1e7b08d8e76f9fda015ef48dc8c710a73cb7e0f77b2c18a9b5a7adde60")}static wordlist(){return null==fa&&(fa=new ga),fa}}function ya(t){return(1<<t)-1<<8-t&255}function ma(t,e){T("NFKD"),null==e&&(e=ga.wordlist());const n=e.split(t);N(n.length%3==0&&n.length>=12&&n.length<=24,"invalid mnemonic length","mnemonic","[ REDACTED ]");const r=new Uint8Array(Math.ceil(11*n.length/8));let s=0;for(let t=0;t<n.length;t++){let i=e.getWordIndex(n[t].normalize("NFKD"));N(i>=0,`invalid mnemonic word at index ${t}`,"mnemonic","[ REDACTED ]");for(let t=0;t<11;t++)i&1<<10-t&&(r[s>>3]|=1<<7-s%8),s++}const i=32*n.length/3,a=ya(n.length/3);return N((O(Pe(r.slice(0,i/8)))[0]&a)===(r[r.length-1]&a),"invalid mnemonic checksum","mnemonic","[ REDACTED ]"),_(r.slice(0,i/8))}function ba(t,e){N(t.length%4==0&&t.length>=16&&t.length<=32,"invalid entropy size","entropy","[ REDACTED ]"),null==e&&(e=ga.wordlist());const n=[0];let r=11;for(let e=0;e<t.length;e++)r>8?(n[n.length-1]<<=8,n[n.length-1]|=t[e],r-=8):(n[n.length-1]<<=r,n[n.length-1]|=t[e]>>8-r,n.push(t[e]&((1<<8-r)-1&255)),r+=3);const s=t.length/4,i=parseInt(Pe(t).substring(2,4),16)&ya(s);return n[n.length-1]<<=s,n[n.length-1]|=i>>8-s,e.join(n.map((t=>e.getWord(t))))}const wa={};class va{phrase;password;wordlist;entropy;constructor(t,e,n,r,s){null==r&&(r=""),null==s&&(s=ga.wordlist()),R(t,wa,"Mnemonic"),y(this,{phrase:n,password:r,wordlist:s,entropy:e})}computeSeed(){const t=ot("mnemonic"+this.password,"NFKD");return oe(ot(this.phrase,"NFKD"),t,2048,64,"sha512")}static fromPhrase(t,e,n){const r=ma(t,n);return t=ba(O(r),n),new va(wa,r,t,e,n)}static fromEntropy(t,e,n){const r=O(t,"entropy"),s=ba(r,n);return new va(wa,_(r),s,e,n)}static entropyToPhrase(t,e){return ba(O(t,"entropy"),e)}static phraseToEntropy(t,e){return ma(t,e)}static isValidMnemonic(t,e){try{return ma(t,e),!0}catch(t){}return!1}}function Ea(t){return"string"!=typeof t||t.startsWith("0x")||(t="0x"+t),I(t)}function Na(t,e){for(t=String(t);t.length<e;)t="0"+t;return t}function Pa(t){return"string"==typeof t?ot(t,"NFKC"):I(t)}function ka(t,e){const n=e.match(/^([a-z0-9$_.-]*)(:([a-z]+))?(!)?$/i);N(null!=n,"invalid path","path",e);const r=n[1],s=n[3],i="!"===n[4];let a=t;for(const t of r.toLowerCase().split(".")){if(Array.isArray(a)){if(!t.match(/^[0-9]+$/))break;a=a[parseInt(t)]}else if("object"==typeof a){let e=null;for(const n in a)if(n.toLowerCase()===t){e=a[n];break}a=e}else a=null;if(null==a)break}if(N(!i||null!=a,"missing required value","path",r),s&&null!=a){if("int"===s){if("string"==typeof a&&a.match(/^-?[0-9]+$/))return parseInt(a);if(Number.isSafeInteger(a))return a}if("number"===s&&"string"==typeof a&&a.match(/^-?[0-9.]*$/))return parseFloat(a);if("data"===s&&"string"==typeof a)return Ea(a);if("array"===s&&Array.isArray(a))return a;if(s===typeof a)return a;N(!1,`wrong type found for ${s} `,"path",r)}return a}const Ta="m/44'/60'/0'/0/0";function Ra(t){try{const e=JSON.parse(t);if(3===(null!=e.version?parseInt(e.version):0))return!0}catch(t){}return!1}function Aa(t,e){const n=O(e),r=ka(t,"crypto.ciphertext:data!");N(_(Qt(U([n.slice(16,32),r]))).substring(2)===ka(t,"crypto.mac:string!").toLowerCase(),"incorrect password","password","[ REDACTED ]");const s=function(t,e,n){if("aes-128-ctr"===ka(t,"crypto.cipher:string")){const r=ka(t,"crypto.cipherparams.iv:data!");return _(new o.CTR(e,r).decrypt(n))}E(!1,"unsupported cipher","UNSUPPORTED_OPERATION",{operation:"decrypt"})}(t,n.slice(0,16),r),i=Nn(s);if(t.address){let e=t.address.toLowerCase();e.startsWith("0x")||(e="0x"+e),N(Me(e)===i,"keystore address/privateKey mismatch","address",t.address)}const a={address:i,privateKey:s};if("0.1"===ka(t,"x-ethers.version:string")){const e=n.slice(32,64),r=ka(t,"x-ethers.mnemonicCiphertext:data!"),s=ka(t,"x-ethers.mnemonicCounter:data!"),i=new o.CTR(e,s);a.mnemonic={path:ka(t,"x-ethers.path:string")||Ta,locale:ka(t,"x-ethers.locale:string")||"en",entropy:_(O(i.decrypt(r)))}}return a}function Oa(t){const e=ka(t,"crypto.kdf:string");if(e&&"string"==typeof e){if("scrypt"===e.toLowerCase()){const n=ka(t,"crypto.kdfparams.salt:data!"),r=ka(t,"crypto.kdfparams.n:int!"),s=ka(t,"crypto.kdfparams.r:int!"),i=ka(t,"crypto.kdfparams.p:int!");N(r>0&&!(r&r-1),"invalid kdf.N","kdf.N",r),N(s>0&&i>0,"invalid kdf","kdf",e);const a=ka(t,"crypto.kdfparams.dklen:int!");return N(32===a,"invalid kdf.dklen","kdf.dflen",a),{name:"scrypt",salt:n,N:r,r:s,p:i,dkLen:64}}if("pbkdf2"===e.toLowerCase()){const e=ka(t,"crypto.kdfparams.salt:data!"),n=ka(t,"crypto.kdfparams.prf:string!"),r=n.split("-").pop();N("sha256"===r||"sha512"===r,"invalid kdf.pdf","kdf.pdf",n);const s=ka(t,"crypto.kdfparams.c:int!"),i=ka(t,"crypto.kdfparams.dklen:int!");return N(32===i,"invalid kdf.dklen","kdf.dklen",i),{name:"pbkdf2",salt:e,count:s,dkLen:i,algorithm:r}}}N(!1,"unsupported key-derivation function","kdf",e)}function Ia(t){return new Promise((e=>{setTimeout((()=>{e()}),t)}))}function Sa(t){const e=null!=t.salt?O(t.salt,"options.salt"):he(32);let n=1<<17,r=8,s=1;return t.scrypt&&(t.scrypt.N&&(n=t.scrypt.N),t.scrypt.r&&(r=t.scrypt.r),t.scrypt.p&&(s=t.scrypt.p)),N("number"==typeof n&&n>0&&Number.isSafeInteger(n)&&(BigInt(n)&BigInt(n-1))===BigInt(0),"invalid scrypt N parameter","options.N",n),N("number"==typeof r&&r>0&&Number.isSafeInteger(r),"invalid scrypt r parameter","options.r",r),N("number"==typeof s&&s>0&&Number.isSafeInteger(s),"invalid scrypt p parameter","options.p",s),{name:"scrypt",dkLen:32,salt:e,N:n,r:r,p:s}}function xa(t,e,n,r){const s=O(n.privateKey,"privateKey"),i=null!=r.iv?O(r.iv,"options.iv"):he(16);N(16===i.length,"invalid options.iv length","options.iv",r.iv);const a=null!=r.uuid?O(r.uuid,"options.uuid"):he(16);N(16===a.length,"invalid options.uuid length","options.uuid",r.iv);const c=t.slice(0,16),l=t.slice(16,32),u=O(new o.CTR(c,i).encrypt(s)),h=Qt(U([l,u])),d={address:n.address.substring(2).toLowerCase(),id:xt(a),version:3,Crypto:{cipher:"aes-128-ctr",cipherparams:{iv:_(i).substring(2)},ciphertext:_(u).substring(2),kdf:"scrypt",kdfparams:{salt:_(e.salt).substring(2),n:e.N,dklen:32,p:e.p,r:e.r},mac:h.substring(2)}};if(n.mnemonic){const e=null!=r.client?r.client:`ethers/${p}`,s=n.mnemonic.path||Ta,i=n.mnemonic.locale||"en",a=t.slice(32,64),c=O(n.mnemonic.entropy,"account.mnemonic.entropy"),l=he(16),u=O(new o.CTR(a,l).encrypt(c)),h=new Date,f="UTC--"+(h.getUTCFullYear()+"-"+Na(h.getUTCMonth()+1,2)+"-"+Na(h.getUTCDate(),2)+"T"+Na(h.getUTCHours(),2)+"-"+Na(h.getUTCMinutes(),2)+"-"+Na(h.getUTCSeconds(),2)+".0Z")+"--"+d.address;d["x-ethers"]={client:e,gethFilename:f,path:s,locale:i,mnemonicCounter:_(l).substring(2),mnemonicCiphertext:_(u).substring(2),version:"0.1"}}return JSON.stringify(d)}function Ca(t,e,n){null==n&&(n={});const r=Pa(e),s=Sa(n);return xa(O(we(r,s.salt,s.N,s.r,s.p,64)),s,t,n)}async function _a(t,e,n){null==n&&(n={});const r=Pa(e),s=Sa(n);return xa(O(await be(r,s.salt,s.N,s.r,s.p,64,n.progressCallback)),s,t,n)}const Ua="m/44'/60'/0'/0/0",Fa=new Uint8Array([66,105,116,99,111,105,110,32,115,101,101,100]),La=2147483648,Da=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141");function Ba(t,e){let n="";for(;t;)n="0123456789abcdef"[t%16]+n,t=Math.trunc(t/16);for(;n.length<2*e;)n="0"+n;return"0x"+n}function Ga(t){const e=O(t);return rt(U([e,L(Pe(Pe(e)),0,4)]))}const $a={};function Ma(t,e,n,r){const s=new Uint8Array(37);t&La?(E(null!=r,"cannot derive child of neutered node","UNSUPPORTED_OPERATION",{operation:"deriveChild"}),s.set(O(r),1)):s.set(O(n));for(let e=24;e>=0;e-=8)s[33+(e>>3)]=t>>24-e&255;const i=O(Wt("sha512",e,s));return{IL:i.slice(0,32),IR:i.slice(32)}}function ja(t,e){const n=e.split("/");N(n.length>0,"invalid path","path",e),"m"===n[0]&&(N(0===t.depth,`cannot derive root path (i.e. path starting with "m/") for a node at non-zero depth ${t.depth}`,"path",e),n.shift());let r=t;for(let t=0;t<n.length;t++){const e=n[t];if(e.match(/^[0-9]+'$/)){const n=parseInt(e.substring(0,e.length-1));N(n<La,"invalid path index",`path[${t}]`,e),r=r.deriveChild(La+n)}else if(e.match(/^[0-9]+$/)){const n=parseInt(e);N(n<La,"invalid path index",`path[${t}]`,e),r=r.deriveChild(n)}else N(!1,"invalid path component",`path[${t}]`,e)}return r}class Ka extends oa{publicKey;fingerprint;parentFingerprint;mnemonic;chainCode;path;index;depth;constructor(t,e,n,r,s,i,a,o,c){super(e,c),R(t,$a,"HDNodeWallet"),y(this,{publicKey:e.compressedPublicKey});y(this,{parentFingerprint:n,fingerprint:L(re(Pe(this.publicKey)),0,4),chainCode:r,path:s,index:i,depth:a}),y(this,{mnemonic:o})}connect(t){return new Ka($a,this.signingKey,this.parentFingerprint,this.chainCode,this.path,this.index,this.depth,this.mnemonic,t)}#me(){const t={address:this.address,privateKey:this.privateKey},e=this.mnemonic;return this.path&&e&&"en"===e.wordlist.locale&&""===e.password&&(t.mnemonic={path:this.path,locale:"en",entropy:e.entropy}),t}async encrypt(t,e){return await _a(this.#me(),t,{progressCallback:e})}encryptSync(t){return Ca(this.#me(),t)}get extendedKey(){return E(this.depth<256,"Depth too deep","UNSUPPORTED_OPERATION",{operation:"extendedKey"}),Ga(U(["0x0488ADE4",Ba(this.depth,1),this.parentFingerprint,Ba(this.index,4),this.chainCode,U(["0x00",this.privateKey])]))}hasPath(){return null!=this.path}neuter(){return new Ha($a,this.address,this.publicKey,this.parentFingerprint,this.chainCode,this.path,this.index,this.depth,this.provider)}deriveChild(t){const e=q(t,"index");N(e<=4294967295,"invalid index","index",e);let n=this.path;n&&(n+="/"+(2147483647&e),e&La&&(n+="'"));const{IR:r,IL:s}=Ma(e,this.chainCode,this.publicKey,this.privateKey),i=new Fe(W((J(s)+BigInt(this.privateKey))%Da,32));return new Ka($a,i,this.fingerprint,_(r),n,e,this.depth+1,this.mnemonic,this.provider)}derivePath(t){return ja(this,t)}static#be(t,e){N(x(t),"invalid seed","seed","[REDACTED]");const n=O(t,"seed");N(n.length>=16&&n.length<=64,"invalid seed","seed","[REDACTED]");const r=O(Wt("sha512",Fa,n)),s=new Fe(_(r.slice(0,32)));return new Ka($a,s,"0x00000000",_(r.slice(32)),"m",0,0,e,null)}static fromExtendedKey(t){const e=Y(function(t){let e=et;for(let n=0;n<t.length;n++)e*=nt,e+=tt(t[n]);return e}(t));N(82===e.length||Ga(e.slice(0,78))===t,"invalid extended key","extendedKey","[ REDACTED ]");const n=e[4],r=_(e.slice(5,9)),s=parseInt(_(e.slice(9,13)).substring(2),16),i=_(e.slice(13,45)),a=e.slice(45,78);switch(_(e.slice(0,4))){case"0x0488b21e":case"0x043587cf":{const t=_(a);return new Ha($a,Nn(t),t,r,i,null,s,n,null)}case"0x0488ade4":case"0x04358394 ":if(0!==a[0])break;return new Ka($a,new Fe(a.slice(1)),r,i,null,s,n,null,null)}N(!1,"invalid extended key prefix","extendedKey","[ REDACTED ]")}static createRandom(t,e,n){null==t&&(t=""),null==e&&(e=Ua),null==n&&(n=ga.wordlist());const r=va.fromEntropy(he(16),t,n);return Ka.#be(r.computeSeed(),r).derivePath(e)}static fromMnemonic(t,e){return e||(e=Ua),Ka.#be(t.computeSeed(),t).derivePath(e)}static fromPhrase(t,e,n,r){null==e&&(e=""),null==n&&(n=Ua),null==r&&(r=ga.wordlist());const s=va.fromPhrase(t,e,r);return Ka.#be(s.computeSeed(),s).derivePath(n)}static fromSeed(t){return Ka.#be(t,null)}}class Ha extends Hi{publicKey;fingerprint;parentFingerprint;chainCode;path;index;depth;constructor(t,e,n,r,s,i,a,o,c){super(e,c),R(t,$a,"HDNodeVoidWallet"),y(this,{publicKey:n});y(this,{publicKey:n,fingerprint:L(re(Pe(n)),0,4),parentFingerprint:r,chainCode:s,path:i,index:a,depth:o})}connect(t){return new Ha($a,this.address,this.publicKey,this.parentFingerprint,this.chainCode,this.path,this.index,this.depth,t)}get extendedKey(){return E(this.depth<256,"Depth too deep","UNSUPPORTED_OPERATION",{operation:"extendedKey"}),Ga(U(["0x0488B21E",Ba(this.depth,1),this.parentFingerprint,Ba(this.index,4),this.chainCode,this.publicKey]))}hasPath(){return null!=this.path}deriveChild(t){const e=q(t,"index");N(e<=4294967295,"invalid index","index",e);let n=this.path;n&&(n+="/"+(2147483647&e),e&La&&(n+="'"));const{IR:r,IL:s}=Ma(e,this.chainCode,this.publicKey,null),i=Fe.addPoints(s,this.publicKey,!0),a=Nn(i);return new Ha($a,a,i,this.fingerprint,_(r),n,e,this.depth+1,this.provider)}derivePath(t){return ja(this,t)}}function Va(t){try{if(JSON.parse(t).encseed)return!0}catch(t){}return!1}function za(t,e){const n=JSON.parse(t),r=Pa(e),s=Me(ka(n,"ethaddr:string!")),i=Ea(ka(n,"encseed:string!"));N(i&&i.length%16==0,"invalid encseed","json",t);const a=O(oe(r,r,2e3,32,"sha256")).slice(0,16),c=i.slice(0,16),l=i.slice(16),u=new o.CBC(a,c),h=o.pkcs7Strip(O(u.decrypt(l)));let d="";for(let t=0;t<h.length;t++)d+=String.fromCharCode(h[t]);return{address:s,privateKey:fn(d)}}function Ja(t){return new Promise((e=>{setTimeout((()=>{e()}),t)}))}class qa extends oa{constructor(t,e){"string"!=typeof t||t.startsWith("0x")||(t="0x"+t),super("string"==typeof t?new Fe(t):t,e)}connect(t){return new qa(this.signingKey,t)}async encrypt(t,e){const n={address:this.address,privateKey:this.privateKey};return await _a(n,t,{progressCallback:e})}encryptSync(t){return Ca({address:this.address,privateKey:this.privateKey},t)}static#we(t){if(N(t,"invalid JSON wallet","json","[ REDACTED ]"),"mnemonic"in t&&t.mnemonic&&"en"===t.mnemonic.locale){const e=va.fromEntropy(t.mnemonic.entropy),n=Ka.fromMnemonic(e,t.mnemonic.path);if(n.address===t.address&&n.privateKey===t.privateKey)return n;console.log("WARNING: JSON mismatch address/privateKey != mnemonic; fallback onto private key")}const e=new qa(t.privateKey);return N(e.address===t.address,"address/privateKey mismatch","json","[ REDACTED ]"),e}static async fromEncryptedJson(t,e,n){let r=null;return Ra(t)?r=await async function(t,e,n){const r=JSON.parse(t),s=Pa(e),i=Oa(r);if("pbkdf2"===i.name){n&&(n(0),await Ia(0));const{salt:t,count:e,dkLen:a,algorithm:o}=i,c=oe(s,t,e,a,o);return n&&(n(1),await Ia(0)),Aa(r,c)}E("scrypt"===i.name,"cannot be reached","UNKNOWN_ERROR",{params:i});const{salt:a,N:o,r:c,p:l,dkLen:u}=i;return Aa(r,await be(s,a,o,c,l,u,n))}(t,e,n):Va(t)&&(n&&(n(0),await Ja(0)),r=za(t,e),n&&(n(1),await Ja(0))),qa.#we(r)}static fromEncryptedJsonSync(t,e){let n=null;return Ra(t)?n=function(t,e){const n=JSON.parse(t),r=Pa(e),s=Oa(n);if("pbkdf2"===s.name){const{salt:t,count:e,dkLen:i,algorithm:a}=s;return Aa(n,oe(r,t,e,i,a))}E("scrypt"===s.name,"cannot be reached","UNKNOWN_ERROR",{params:s});const{salt:i,N:a,r:o,p:c,dkLen:l}=s;return Aa(n,we(r,i,a,o,c,l))}(t,e):Va(t)?n=za(t,e):N(!1,"invalid JSON wallet","json","[ REDACTED ]"),qa.#we(n)}static createRandom(t){const e=Ka.createRandom();return t?e.connect(t):e}static fromPhrase(t,e){const n=Ka.fromPhrase(t);return e?n.connect(e):n}}var Wa={STEALTH_ANNOUNCER_ADDRESS:"",PROOF_OF_INTEGRITY_ADDRESS:""};let Ya={PROOF_OF_INTEGRITY_ADDRESS:"0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512",STEALTH_ANNOUNCER_ADDRESS:"0x5FbDB2315678afecb367f032d93F642f64180aa3"};if("undefined"==typeof window){const{fileURLToPath:t}=require("url"),{dirname:e}=require("path"),{readFileSync:n}=require("fs"),{join:r}=require("path");try{const s=t("undefined"==typeof document&&"undefined"==typeof location?require("url").pathToFileURL(s).href:"undefined"==typeof document?location.href:d&&"SCRIPT"===d.tagName.toUpperCase()&&d.src||new URL("gun-eth.bundle.min.js",document.baseURI).href),i=n(r(e(s),"contract-address.json"),"utf8");Ya=JSON.parse(i),console.log("Loaded contract addresses:",Ya)}catch(t){console.warn("Warning: contract-address.json not found or invalid")}}const Xa={CHAIN_ID:1337,PROOF_OF_INTEGRITY_ADDRESS:Ya.PROOF_OF_INTEGRITY_ADDRESS,STEALTH_ANNOUNCER_ADDRESS:Ya.STEALTH_ANNOUNCER_ADDRESS,RPC_URL:"http://127.0.0.1:8545",GUN_PEER:"http://localhost:8765/gun"},Za={optimismSepolia:{STEALTH_ANNOUNCER_ADDRESS:"0xD0F2e9DA59d2DFECFdE67CcF17300BB6093A72f8",PROOF_OF_INTEGRITY_ADDRESS:"0x...",RPC_URL:"https://sepolia.optimism.io",CHAIN_ID:11155420},arbitrumSepolia:{STEALTH_ANNOUNCER_ADDRESS:"0x...",PROOF_OF_INTEGRITY_ADDRESS:"0x...",RPC_URL:"https://sepolia-rollup.arbitrum.io/rpc",CHAIN_ID:421614},localhost:{RPC_URL:"http://127.0.0.1:8545",CHAIN_ID:1337}};function Qa(t){let e;if("localhost"===t)try{return e={...Za.localhost,...Wa},console.log("Using local addresses:",e),e}catch(t){throw console.warn("No local addresses found"),new Error("No local addresses found. Did you run local deployment?")}if(e=Za[t],!e)throw new Error(`Chain ${t} not supported. Supported chains: ${Object.keys(Za).join(", ")}`);return e}const to=[{inputs:[{internalType:"address",name:"_devAddress",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{internalType:"string",name:"senderPublicKey",type:"string"},{internalType:"string",name:"spendingPublicKey",type:"string"},{internalType:"address",name:"stealthAddress",type:"address"},{internalType:"uint256",name:"timestamp",type:"uint256"}],name:"StealthPaymentAnnounced",type:"event"},{anonymous:!1,inputs:[{internalType:"address",name:"newAddress",type:"address"}],name:"DevAddressUpdated",type:"event"},{anonymous:!1,inputs:[{internalType:"uint256",name:"newFee",type:"uint256"}],name:"DevFeeUpdated",type:"event"},{inputs:[{internalType:"string",name:"senderPublicKey",type:"string"},{internalType:"string",name:"spendingPublicKey",type:"string"},{internalType:"address",name:"stealthAddress",type:"address"}],name:"announcePayment",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"devAddress",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"devFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getAnnouncementsCount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"fromIndex",type:"uint256"},{internalType:"uint256",name:"toIndex",type:"uint256"}],name:"getAnnouncementsInRange",outputs:[{components:[{internalType:"string",name:"senderPublicKey",type:"string"},{internalType:"string",name:"spendingPublicKey",type:"string"},{internalType:"address",name:"stealthAddress",type:"address"},{internalType:"uint256",name:"timestamp",type:"uint256"}],internalType:"struct StealthAnnouncer.StealthAnnouncement[]",name:"",type:"tuple[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_newFee",type:"uint256"}],name:"updateDevFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_newAddress",type:"address"}],name:"updateDevAddress",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"withdrawStuckETH",outputs:[],stateMutability:"nonpayable",type:"function"}],eo=[{inputs:[{internalType:"bytes[]",name:"nodeIds",type:"bytes[]"},{internalType:"bytes32[]",name:"contentHashes",type:"bytes32[]"}],name:"batchUpdateData",outputs:[],stateMutability:"nonpayable",type:"function"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes",name:"nodeId",type:"bytes"},{indexed:!1,internalType:"bytes32",name:"contentHash",type:"bytes32"},{indexed:!1,internalType:"address",name:"updater",type:"address"}],name:"DataUpdated",type:"event"},{inputs:[{internalType:"bytes",name:"nodeId",type:"bytes"}],name:"getLatestRecord",outputs:[{internalType:"bytes32",name:"",type:"bytes32"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"nodeId",type:"bytes"},{internalType:"bytes32",name:"contentHash",type:"bytes32"}],name:"updateData",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"nodeId",type:"bytes"},{internalType:"bytes32",name:"contentHash",type:"bytes32"}],name:"verifyData",outputs:[{internalType:"bool",name:"",type:"bool"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"}];let no="",ro="";const so="Access GunDB with Ethereum";function io(){return _(he(32)).slice(2)}function ao(t){try{const e=Qt(_(t));return console.log("Generated password:",e),e}catch(t){return console.error("Error generating password:",t),null}}function oo(t){const e="0x"+(t=>{const e="=".repeat((4-t.length%4)%4),n=t.replace(/-/g,"+").replace(/_/g,"/")+e,r=atob(n);return Array.from(r,(t=>t.charCodeAt(0).toString(16).padStart(2,"0"))).join("")})(t),n=new qa(e);return{account:n,publicKey:n.address,privateKey:e}}const co=async()=>{if(no&&ro){const t=new ra(no,{chainId:Xa.CHAIN_ID,name:"localhost"});return new qa(ro,t)}if("undefined"!=typeof window&&void 0!==window.ethereum){await window.ethereum.request({method:"eth_requestAccounts"});return new aa(window.ethereum).getSigner()}throw new Error("No valid Ethereum provider found")};function lo(t,e){try{const n=Buffer.from(t,"base64"),r=Qt(U([n,O(e)])),s=new qa(r);return console.log("Debug deriveStealthAddress:",{sharedSecretHex:_(n),spendingPublicKey:e,stealthPrivateKey:r,stealthAddress:s.address}),{stealthPrivateKey:r,stealthAddress:s.address,wallet:s}}catch(t){throw console.error("Error in deriveStealthAddress:",t),t}}e.chain.MESSAGE_TO_SIGN=so,e.chain.setSigner=function(t,e){return no=t,ro=e,console.log("Standalone configuration set"),this},e.chain.getSigner=co(),e.chain.verifySignature=async function(t,e){try{const n=function(t,e){return Pn(Mn(t),e)}(t,e);return n}catch(t){return console.error("Error verifying signature:",t),null}},e.chain.generatePassword=function(t){return ao(t)},e.chain.createSignature=async function(t){try{if(t!==so)throw new Error("Invalid message, valid message is: "+so);const e=await co(),n=await e.signMessage(t);return console.log("Signature created:",n),n}catch(t){return console.error("Error creating signature:",t),null}},e.chain.createAndStoreEncryptedPair=async function(t,e){try{const r=this,s=await n.pair(),i=await n.pair(),a=await n.pair(),o=ao(e),c=await n.encrypt(JSON.stringify(s),o),l=await n.encrypt(JSON.stringify(i),o),u=await n.encrypt(JSON.stringify(a),o),h=oo(i.priv),d=oo(a.priv);r.get("gun-eth").get("users").get(t).put({pair:c,v_pair:l,s_pair:u,publicKeys:{viewingPublicKey:i.epub,viewingPublicKey:i.epub,spendingPublicKey:d.publicKey,ethViewingAddress:h.publicKey}}),console.log("Encrypted pairs and public keys stored for:",t)}catch(t){throw console.error("Error creating and storing encrypted pair:",t),t}},e.chain.getAndDecryptPair=async function(t,e){try{const r=this,s=await r.get("gun-eth").get("users").get(t).get("pair").then();if(!s)throw new Error("No encrypted data found for this address");const i=ao(e),a=await n.decrypt(s,i);return console.log(a),a}catch(t){return console.error("Error retrieving and decrypting pair:",t),null}},e.chain.proof=function(t,e,n,r){if(console.log("Proof plugin called with:",{chain:t,nodeId:e,data:n}),"function"!=typeof r)return console.error("Callback must be a function"),this;try{const s=Qa(t);console.log(`Using ${t} configuration:`,s);new zs(s.PROOF_OF_INTEGRITY_ADDRESS,eo,signer);const i=async(t,e)=>{console.log("Verifying on chain:",{nodeId:t,contentHash:e});const n=await co(),r=new zs(PROOF_CONTRACT_ADDRESS,eo,n),[s,i,a]=await r.verifyData(ot(t),e);return console.log("Verification result:",{isValid:s,timestamp:i,updater:a}),{isValid:s,timestamp:i,updater:a}},a=async(t,e)=>{console.log("Writing on chain:",{nodeId:t,contentHash:e});const n=await co(),r=new zs(PROOF_CONTRACT_ADDRESS,eo,n),s=await r.updateData(ot(t),e);console.log("Transaction sent:",s.hash);const i=await s.wait();return console.log("Transaction confirmed:",i),s},o=async t=>{const e=await co(),n=new zs(PROOF_CONTRACT_ADDRESS,eo,e),[r,s,i]=await n.getLatestRecord(ot(t));return console.log("Latest record from blockchain:",{nodeId:t,contentHash:r,timestamp:s,updater:i}),{contentHash:r,timestamp:s,updater:i}};if(e&&!n)gun.get(e).once((async t=>{if(!t)return void(r&&r({err:"Node not found in GunDB"}));console.log("existingData",t);const n=t._contentHash;if(console.log("contentHash",n),n)try{const{isValid:t,timestamp:s,updater:a}=await i(e,n),c=await o(e);t?r&&r({ok:!0,message:"Data verified on blockchain",timestamp:s,updater:a,latestRecord:c}):r&&r({ok:!1,message:"Data not verified on blockchain",latestRecord:c})}catch(t){r&&r({err:t.message})}else r&&r({err:"No content hash found for this node"})}));else if(n&&!e){const t=io(),e=Qt(ot(JSON.stringify(n)));gun.get(t).put({...n,_contentHash:e},(async n=>{if(console.log("ack",n),n.err)r&&r({err:"Error saving data to GunDB"});else try{const n=await a(t,e);r&&r({ok:!0,message:"Data written to GunDB and blockchain",nodeId:t,txHash:n.hash})}catch(t){r&&r({err:t.message})}}))}else r&&r({err:"Invalid input. Provide either nodeId or data, not both."});return gun}catch(t){return r({err:t.message}),this}},e.chain.gunToEthAccount=function(t){return oo(t)},e.chain.generateStealthAddress=async function(t,e){try{const r=this,s=await r.get("gun-eth").get("users").get(t).get("publicKeys").then();if(!s||!s.viewingPublicKey||!s.spendingPublicKey)throw new Error("Recipient's public keys not found");const i=await this.verifySignature(so,e),a=ao(e),o=await r.get("gun-eth").get("users").get(i).then();if(!o||!o.s_pair)throw new Error("Sender's keys not found");let c;try{const t=await n.decrypt(o.s_pair,a);c="string"==typeof t?JSON.parse(t):t}catch(t){throw console.error("Error decrypting spending pair:",t),new Error("Unable to decrypt spending pair")}const l=await n.secret(s.viewingPublicKey,c);if(!l)throw new Error("Unable to generate shared secret");console.log("Generate shared secret:",l);const{stealthAddress:u}=lo(l,s.spendingPublicKey);return{stealthAddress:u,senderPublicKey:c.epub,spendingPublicKey:s.spendingPublicKey}}catch(t){throw console.error("Error generating stealth address:",t),t}},e.chain.publishStealthKeys=async function(t){try{const e=this,r=await this.verifySignature(so,t),s=ao(t),i=await e.get("gun-eth").get("users").get(r).then();if(!i||!i.v_pair||!i.s_pair)throw new Error("Keys not found");const a=JSON.parse(await n.decrypt(i.v_pair,s)),o=JSON.parse(await n.decrypt(i.s_pair,s)),c=oo(a.priv),l=oo(o.priv);e.get("gun-eth").get("users").get(r).get("publicKeys").put({viewingPublicKey:c.publicKey,spendingPublicKey:l.publicKey}),console.log("Stealth public keys published successfully")}catch(t){throw console.error("Error publishing stealth keys:",t),t}},e.chain.recoverStealthFunds=async function(t,e,r,s){try{const i=this,a=ao(r),o=await this.verifySignature(so,r),c=await i.get("gun-eth").get("users").get(o).then();if(!c||!c.v_pair||!c.s_pair)throw new Error("Keys not found");let l;try{const t=await n.decrypt(c.v_pair,a);l="string"==typeof t?JSON.parse(t):t}catch(t){throw console.error("Error decrypting keys:",t),new Error("Unable to decrypt keys")}const u=await n.secret(e,l);if(!u)throw new Error("Unable to generate shared secret");console.log("Recover shared secret:",u);const{wallet:h,stealthAddress:d}=lo(u,s);if(d.toLowerCase()!==t.toLowerCase())throw console.error("Mismatch:",{recovered:d,expected:t,sharedSecret:u}),new Error("Recovered stealth address does not match");return{wallet:h,address:d}}catch(t){throw console.error("Error recovering stealth funds:",t),t}},e.chain.announceStealthPayment=async function(t,e,n,r,s={onChain:!1,chain:"optimismSepolia"}){try{const i=this,a=await this.verifySignature(so,r);if(s.onChain){const r=await co(),i=Qa(s.chain),a=new zs(i.STEALTH_ANNOUNCER_ADDRESS,to,r),o=await a.devFee();console.log("Dev fee:",o.toString());const c=await a.announcePayment(e,n,t,{value:o});console.log("Transaction sent:",c.hash);const l=await c.wait();console.log("Transaction confirmed:",l.hash),console.log("Stealth payment announced on-chain (dev fee paid)")}else i.get("gun-eth").get("stealth-payments").set({stealthAddress:t,senderAddress:a,senderPublicKey:e,spendingPublicKey:n,timestamp:Date.now()}),console.log("Stealth payment announced off-chain")}catch(t){throw console.error("Error announcing stealth payment:",t),console.error("Error details:",t.stack),t}},e.chain.getStealthPayments=async function(t,e={source:"both"}){try{const n=[];if("onChain"===e.source||"both"===e.source){const e=await co(),r="development"===process.env.NODE_ENV?Xa.STEALTH_ANNOUNCER_ADDRESS:STEALTH_ANNOUNCER_ADDRESS,s=new zs(r,to,e);try{const e=await s.getAnnouncementsCount(),r=Number(e.toString());if(console.log("Total on-chain announcements:",r),r>0){const e=100,i=r-1;for(let r=0;r<=i;r+=e){const a=Math.min(r+e-1,i),o=await s.getAnnouncementsInRange(r,a);for(const e of o)try{if(!(e&&e.stealthAddress&&e.senderPublicKey&&e.spendingPublicKey)){console.log("Invalid announcement:",e);continue}const r=await this.recoverStealthFunds(e.stealthAddress,e.senderPublicKey,t,e.spendingPublicKey);n.push({stealthAddress:e.stealthAddress,senderPublicKey:e.senderPublicKey,spendingPublicKey:e.spendingPublicKey,timestamp:Number(e.timestamp),source:"onChain",wallet:r})}catch(t){console.log(`Announcement not for us: ${e.stealthAddress}`);continue}}}}catch(t){console.error("Error retrieving on-chain announcements:",t)}}if("offChain"===e.source||"both"===e.source){const t=this,e=await new Promise((e=>{const n=[];t.get("gun-eth").get("stealth-payments").get(recipientAddress).map().once(((t,e)=>{t?.stealthAddress&&n.push({...t,id:e,source:"offChain"})})),setTimeout((()=>e(n)),2e3)}));n.push(...e)}return console.log(`Found ${n.length} stealth payments`),n}catch(t){throw console.error("Error retrieving stealth payments:",t),t}},e.chain.cleanStealthPayments=async function(t){try{const e=this,n=await e.get("gun-eth").get("stealth-payments").get(t).map().once().then();n&&Object.keys(n).forEach((async r=>{const s=n[r];s&&s.stealthAddress&&s.senderPublicKey&&s.spendingPublicKey||await e.get("gun-eth").get("stealth-payments").get(t).get(r).put(null)}))}catch(t){console.error("Error cleaning stealth payments:",t)}};class uo{static generateRandomId=io;static generatePassword=ao;static gunToEthAccount=oo;static getSigner=co;static deriveStealthAddress=lo;static chainMethods={setSigner:e.chain.setSigner,getSigner:e.chain.getSigner,verifySignature:e.chain.verifySignature,generatePassword:e.chain.generatePassword,createSignature:e.chain.createSignature,createAndStoreEncryptedPair:e.chain.createAndStoreEncryptedPair,getAndDecryptPair:e.chain.getAndDecryptPair,proof:e.chain.proof,gunToEthAccount:e.chain.gunToEthAccount,generateStealthAddress:e.chain.generateStealthAddress,publishStealthKeys:e.chain.publishStealthKeys,recoverStealthFunds:e.chain.recoverStealthFunds,announceStealthPayment:e.chain.announceStealthPayment,getStealthPayments:e.chain.getStealthPayments,cleanStealthPayments:e.chain.cleanStealthPayments};static MESSAGE_TO_SIGN=so;static PROOF_CONTRACT_ADDRESS=PROOF_CONTRACT_ADDRESS;static LOCAL_CONFIG=Xa}t.default=e,t.GunEth=uo,t.MESSAGE_TO_SIGN=so,t.deriveStealthAddress=lo,t.generatePassword=ao,t.generateRandomId=io,t.getSigner=co,t.gunToEthAccount=oo,Object.defineProperty(t,"__esModule",{value:!0})}));
2
+ //# sourceMappingURL=gun-eth.bundle.min.js.map