commonerainternal 1.3.1

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.
Files changed (3) hide show
  1. package/README.md +215 -0
  2. package/dist/index.js +15 -0
  3. package/package.json +27 -0
package/README.md ADDED
@@ -0,0 +1,215 @@
1
+ ### USAGE
2
+
3
+ ```js
4
+
5
+ "use client";
6
+ import { useState, useEffect } from 'react';
7
+ import { detectWallets ,getGeolocationData,Auth} from "ihubinternal"
8
+
9
+
10
+ function App() {
11
+
12
+ const [wallets, setWallets] = useState([]);
13
+ const [showPopup, setShowPopup] = useState(false);
14
+
15
+ const [location, setLocation] = useState({
16
+ latitude: null,
17
+ longitude: null,
18
+ error: null,
19
+ isFetching: false,
20
+ });
21
+
22
+
23
+
24
+ useEffect(() => {
25
+ async function fetchLocation() {
26
+ const locationdata = await getGeolocationData();
27
+
28
+ setLocation({
29
+ latitude: locationdata.latitude || null,
30
+ longitude: locationdata.longitude || null,
31
+ error: locationdata.error || null,
32
+ isFetching: false,
33
+ });
34
+ console.log(locationdata)
35
+ }
36
+
37
+ fetchLocation();
38
+ }, []);
39
+
40
+
41
+
42
+ useEffect(() => {
43
+ let wallets=detectWallets()
44
+ setWallets(wallets)
45
+ }, []);
46
+
47
+
48
+ const getWalletIcon = (walletName) => {
49
+ const icons = {
50
+ metamask: "",
51
+ phantom: "/plogo.png",
52
+ solflare:"/solflare.svg"
53
+
54
+ };
55
+
56
+ return icons[walletName];
57
+ }
58
+
59
+
60
+ const RUN=async (wallet)=>{
61
+
62
+ const config={
63
+ wallet:wallet,
64
+ required_mint:"mintaddresshere",
65
+ mint_amount:"100000.0",
66
+ geo_code:"false",
67
+ geo_code_locs:"",
68
+ coords:{
69
+ latitude:location.latitude,
70
+ longitude:location.longitude
71
+ }
72
+ }
73
+
74
+ const result=await Auth(config)
75
+
76
+ if(result.success){
77
+
78
+ if(result.alreadyAuthenticated) {
79
+ alert("already authenticated")
80
+ console.log(result.token)
81
+ // RUN YOUR CUSTOM LOGIC HERE
82
+
83
+ }
84
+ else if(result.alreadyAuthenticated==false){
85
+
86
+ console.log(result.token)
87
+ localStorage.setItem("vjwt",result.token)
88
+ alert("authenticated")
89
+
90
+ // RUN YOUR CUSTOM LOGIC HERE
91
+ }
92
+
93
+
94
+ }
95
+ else{
96
+
97
+ switch(result.error){
98
+
99
+ case "INSUFFICIENT_TOKENS":
100
+
101
+ alert(`You need ${result.required} tokens to access`);
102
+ break;
103
+
104
+ case "LOCATION_DENIED":
105
+
106
+ alert("Access denied for your location");
107
+ break;
108
+
109
+ case "LOCATION_ERROR":
110
+
111
+ alert("Location permission denied")
112
+ break;
113
+
114
+ }}}
115
+
116
+ return (
117
+ <div className="items-center justify-center p-20" style={{ background: '',minHeight: '90vh'}}>
118
+
119
+
120
+ <button
121
+ onClick={() => setShowPopup(true)}
122
+ className="
123
+ px-10 py-1
124
+ text-lg font-bold
125
+ uppercase tracking-widest
126
+ rounded-lg
127
+ transition duration-300 ease-in-out
128
+
129
+ bg-white/10 backdrop-blur-md
130
+ border border-purple-500/50
131
+
132
+ text-white
133
+ shadow-[0_0_15px_rgba(168,85,247,0.7)]
134
+ hover:bg-white/20 hover:border-fuchsia-500/70
135
+ transform hover:scale-[1.02]
136
+ "
137
+ >
138
+ Connect Wallet
139
+ </button>
140
+
141
+
142
+
143
+ {showPopup && (
144
+
145
+ <div
146
+ className="fixed inset-0 z-50 bg-black bg-opacity-80 flex items-center justify-center p-2 backdrop-blur-sm"
147
+ onClick={() => setShowPopup(false)}
148
+ >
149
+
150
+ <div
151
+ className="bg-gray-900/95 p-6 rounded-xl shadow-[0_0_40px_rgba(124,58,237,0.9)] w-full max-w-sm border border-purple-700/70"
152
+ onClick={(e) => e.stopPropagation()}
153
+ >
154
+ <div className="flex justify-between items-center mb-2">
155
+ <h2 className="text-2xl font-bold text-white tracking-wide">
156
+ Connect Wallet
157
+ </h2>
158
+ <button
159
+ onClick={() => setShowPopup(false)}
160
+ className="text-gray-400 hover:text-white transition duration-200 p-1"
161
+ aria-label="Close"
162
+ >
163
+ </button>
164
+ </div>
165
+
166
+
167
+ <div className="space-y-3">
168
+ {wallets.map((wallet,index) => (
169
+
170
+ <button
171
+
172
+ key={wallet.address||index}
173
+ onClick={()=>RUN(wallet)}
174
+ className="
175
+ flex items-center justify-start gap-3
176
+ w-full p-3
177
+ rounded-lg
178
+ transition duration-200
179
+ bg-gray-800/80
180
+ border border-transparent
181
+ hover:bg-purple-600/30
182
+ hover:border-fuchsia-500
183
+ shadow-md
184
+ hover:scale-[1.02]
185
+ "
186
+ >
187
+
188
+ <img
189
+ src={getWalletIcon(wallet)}
190
+ alt={`${wallet.wallet} icon`}
191
+ className="w-8 h-8 rounded-md"
192
+ />
193
+
194
+
195
+ <span className="text-lg font-semibold text-white font-mono">
196
+ {wallet=="phantom"?("PHANTOM"):("SOLFLARE")}
197
+ </span>
198
+
199
+ </button>
200
+ ))}
201
+ </div>
202
+
203
+ {wallets.length === 0 && (
204
+ <p className="text-center text-gray-400 pt-4">No wallets detected. Please install a Solana wallet extension (e.g., Phantom or Solflare).</p>
205
+ )}
206
+ </div>
207
+ </div>
208
+ )}
209
+ </div>
210
+ );
211
+ }
212
+
213
+ export default App;
214
+
215
+ ```
package/dist/index.js ADDED
@@ -0,0 +1,15 @@
1
+ "use client";var Kc=Object.defineProperty;var Jc=(r,t)=>{for(var e in t)Kc(r,e,{get:t[e],enumerable:!0})};function Wc(r){if(r.length>=255)throw new TypeError("Alphabet too long");let t=new Uint8Array(256);for(let l=0;l<t.length;l++)t[l]=255;for(let l=0;l<r.length;l++){let u=r.charAt(l),f=u.charCodeAt(0);if(t[f]!==255)throw new TypeError(u+" is ambiguous");t[f]=l}let e=r.length,n=r.charAt(0),s=Math.log(e)/Math.log(256),i=Math.log(256)/Math.log(e);function o(l){if(l instanceof Uint8Array||(ArrayBuffer.isView(l)?l=new Uint8Array(l.buffer,l.byteOffset,l.byteLength):Array.isArray(l)&&(l=Uint8Array.from(l))),!(l instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(l.length===0)return"";let u=0,f=0,d=0,g=l.length;for(;d!==g&&l[d]===0;)d++,u++;let m=(g-d)*i+1>>>0,p=new Uint8Array(m);for(;d!==g;){let E=l[d],P=0;for(let C=m-1;(E!==0||P<f)&&C!==-1;C--,P++)E+=256*p[C]>>>0,p[C]=E%e>>>0,E=E/e>>>0;if(E!==0)throw new Error("Non-zero carry");f=P,d++}let y=m-f;for(;y!==m&&p[y]===0;)y++;let A=n.repeat(u);for(;y<m;++y)A+=r.charAt(p[y]);return A}function a(l){if(typeof l!="string")throw new TypeError("Expected String");if(l.length===0)return new Uint8Array;let u=0,f=0,d=0;for(;l[u]===n;)f++,u++;let g=(l.length-u)*s+1>>>0,m=new Uint8Array(g);for(;u<l.length;){let E=l.charCodeAt(u);if(E>255)return;let P=t[E];if(P===255)return;let C=0;for(let O=g-1;(P!==0||C<d)&&O!==-1;O--,C++)P+=e*m[O]>>>0,m[O]=P%256>>>0,P=P/256>>>0;if(P!==0)throw new Error("Non-zero carry");d=C,u++}let p=g-d;for(;p!==g&&m[p]===0;)p++;let y=new Uint8Array(f+(g-p)),A=f;for(;p!==g;)y[A++]=m[p++];return y}function c(l){let u=a(l);if(u)return u;throw new Error("Non-base"+e+" character")}return{encode:o,decodeUnsafe:a,decode:c}}var Mi=Wc;var jc="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz",Bs=Mi(jc);function Ot(r){let t=new Uint8Array(r),e="";for(let s of t)e+=String.fromCharCode(s);return btoa(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function Be(r){let t=r.replace(/-/g,"+").replace(/_/g,"/"),e=(4-t.length%4)%4,n=t.padEnd(t.length+e,"="),s=atob(n),i=new ArrayBuffer(s.length),o=new Uint8Array(i);for(let a=0;a<s.length;a++)o[a]=s.charCodeAt(a);return i}function zt(){return Zc.stubThis(globalThis?.PublicKeyCredential!==void 0&&typeof globalThis.PublicKeyCredential=="function")}var Zc={stubThis:r=>r};function sn(r){let{id:t}=r;return{...r,id:Be(t),transports:r.transports}}function on(r){return r==="localhost"||/^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$/i.test(r)}var rt=class extends Error{constructor({message:t,code:e,cause:n,name:s}){super(t,{cause:n}),Object.defineProperty(this,"code",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.name=s??n.name,this.code=e}};function Gi({error:r,options:t}){let{publicKey:e}=t;if(!e)throw Error("options was missing required publicKey property");if(r.name==="AbortError"){if(t.signal instanceof AbortSignal)return new rt({message:"Registration ceremony was sent an abort signal",code:"ERROR_CEREMONY_ABORTED",cause:r})}else if(r.name==="ConstraintError"){if(e.authenticatorSelection?.requireResidentKey===!0)return new rt({message:"Discoverable credentials were required but no available authenticator supported it",code:"ERROR_AUTHENTICATOR_MISSING_DISCOVERABLE_CREDENTIAL_SUPPORT",cause:r});if(t.mediation==="conditional"&&e.authenticatorSelection?.userVerification==="required")return new rt({message:"User verification was required during automatic registration but it could not be performed",code:"ERROR_AUTO_REGISTER_USER_VERIFICATION_FAILURE",cause:r});if(e.authenticatorSelection?.userVerification==="required")return new rt({message:"User verification was required but no available authenticator supported it",code:"ERROR_AUTHENTICATOR_MISSING_USER_VERIFICATION_SUPPORT",cause:r})}else{if(r.name==="InvalidStateError")return new rt({message:"The authenticator was previously registered",code:"ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED",cause:r});if(r.name==="NotAllowedError")return new rt({message:r.message,code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:r});if(r.name==="NotSupportedError")return e.pubKeyCredParams.filter(s=>s.type==="public-key").length===0?new rt({message:'No entry in pubKeyCredParams was of type "public-key"',code:"ERROR_MALFORMED_PUBKEYCREDPARAMS",cause:r}):new rt({message:"No available authenticator supported any of the specified pubKeyCredParams algorithms",code:"ERROR_AUTHENTICATOR_NO_SUPPORTED_PUBKEYCREDPARAMS_ALG",cause:r});if(r.name==="SecurityError"){let n=globalThis.location.hostname;if(on(n)){if(e.rp.id!==n)return new rt({message:`The RP ID "${e.rp.id}" is invalid for this domain`,code:"ERROR_INVALID_RP_ID",cause:r})}else return new rt({message:`${globalThis.location.hostname} is an invalid domain`,code:"ERROR_INVALID_DOMAIN",cause:r})}else if(r.name==="TypeError"){if(e.user.id.byteLength<1||e.user.id.byteLength>64)return new rt({message:"User ID was not between 1 and 64 characters",code:"ERROR_INVALID_USER_ID_LENGTH",cause:r})}else if(r.name==="UnknownError")return new rt({message:"The authenticator was unable to process the specified options, or could not create a new credential",code:"ERROR_AUTHENTICATOR_GENERAL_ERROR",cause:r})}return r}var Ns=class{constructor(){Object.defineProperty(this,"controller",{enumerable:!0,configurable:!0,writable:!0,value:void 0})}createNewAbortSignal(){if(this.controller){let e=new Error("Cancelling existing WebAuthn API call for new one");e.name="AbortError",this.controller.abort(e)}let t=new AbortController;return this.controller=t,t.signal}cancelCeremony(){if(this.controller){let t=new Error("Manually cancelling existing WebAuthn API call");t.name="AbortError",this.controller.abort(t),this.controller=void 0}}},an=new Ns;var qc=["cross-platform","platform"];function cn(r){if(r&&!(qc.indexOf(r)<0))return r}async function Hi(r){!r.optionsJSON&&r.challenge&&(console.warn("startRegistration() was not called correctly. It will try to continue with the provided options, but this call should be refactored to use the expected call structure instead. See https://simplewebauthn.dev/docs/packages/browser#typeerror-cannot-read-properties-of-undefined-reading-challenge for more information."),r={optionsJSON:r});let{optionsJSON:t,useAutoRegister:e=!1}=r;if(!zt())throw new Error("WebAuthn is not supported in this browser");let n={...t,challenge:Be(t.challenge),user:{...t.user,id:Be(t.user.id)},excludeCredentials:t.excludeCredentials?.map(sn)},s={};e&&(s.mediation="conditional"),s.publicKey=n,s.signal=an.createNewAbortSignal();let i;try{i=await navigator.credentials.create(s)}catch(m){throw Gi({error:m,options:s})}if(!i)throw new Error("Registration was not completed");let{id:o,rawId:a,response:c,type:l}=i,u;typeof c.getTransports=="function"&&(u=c.getTransports());let f;if(typeof c.getPublicKeyAlgorithm=="function")try{f=c.getPublicKeyAlgorithm()}catch(m){Is("getPublicKeyAlgorithm()",m)}let d;if(typeof c.getPublicKey=="function")try{let m=c.getPublicKey();m!==null&&(d=Ot(m))}catch(m){Is("getPublicKey()",m)}let g;if(typeof c.getAuthenticatorData=="function")try{g=Ot(c.getAuthenticatorData())}catch(m){Is("getAuthenticatorData()",m)}return{id:o,rawId:Ot(a),response:{attestationObject:Ot(c.attestationObject),clientDataJSON:Ot(c.clientDataJSON),transports:u,publicKeyAlgorithm:f,publicKey:d,authenticatorData:g},type:l,clientExtensionResults:i.getClientExtensionResults(),authenticatorAttachment:cn(i.authenticatorAttachment)}}function Is(r,t){console.warn(`The browser extension that intercepted this WebAuthn API call incorrectly implemented ${r}. You should report this error to them.
2
+ `,t)}function Vi(){if(!zt())return vs.stubThis(new Promise(t=>t(!1)));let r=globalThis.PublicKeyCredential;return r?.isConditionalMediationAvailable===void 0?vs.stubThis(new Promise(t=>t(!1))):vs.stubThis(r.isConditionalMediationAvailable())}var vs={stubThis:r=>r};function Qi({error:r,options:t}){let{publicKey:e}=t;if(!e)throw Error("options was missing required publicKey property");if(r.name==="AbortError"){if(t.signal instanceof AbortSignal)return new rt({message:"Authentication ceremony was sent an abort signal",code:"ERROR_CEREMONY_ABORTED",cause:r})}else{if(r.name==="NotAllowedError")return new rt({message:r.message,code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:r});if(r.name==="SecurityError"){let n=globalThis.location.hostname;if(on(n)){if(e.rpId!==n)return new rt({message:`The RP ID "${e.rpId}" is invalid for this domain`,code:"ERROR_INVALID_RP_ID",cause:r})}else return new rt({message:`${globalThis.location.hostname} is an invalid domain`,code:"ERROR_INVALID_DOMAIN",cause:r})}else if(r.name==="UnknownError")return new rt({message:"The authenticator was unable to process the specified options, or could not create a new assertion signature",code:"ERROR_AUTHENTICATOR_GENERAL_ERROR",cause:r})}return r}async function _i(r){!r.optionsJSON&&r.challenge&&(console.warn("startAuthentication() was not called correctly. It will try to continue with the provided options, but this call should be refactored to use the expected call structure instead. See https://simplewebauthn.dev/docs/packages/browser#typeerror-cannot-read-properties-of-undefined-reading-challenge for more information."),r={optionsJSON:r});let{optionsJSON:t,useBrowserAutofill:e=!1,verifyBrowserAutofillInput:n=!0}=r;if(!zt())throw new Error("WebAuthn is not supported in this browser");let s;t.allowCredentials?.length!==0&&(s=t.allowCredentials?.map(sn));let i={...t,challenge:Be(t.challenge),allowCredentials:s},o={};if(e){if(!await Vi())throw Error("Browser does not support WebAuthn autofill");if(document.querySelectorAll("input[autocomplete$='webauthn']").length<1&&n)throw Error('No <input> with "webauthn" as the only or last value in its `autocomplete` attribute was detected');o.mediation="conditional",i.allowCredentials=[]}o.publicKey=i,o.signal=an.createNewAbortSignal();let a;try{a=await navigator.credentials.get(o)}catch(g){throw Qi({error:g,options:o})}if(!a)throw new Error("Authentication was not completed");let{id:c,rawId:l,response:u,type:f}=a,d;return u.userHandle&&(d=Ot(u.userHandle)),{id:c,rawId:Ot(l),response:{authenticatorData:Ot(u.authenticatorData),clientDataJSON:Ot(u.clientDataJSON),signature:Ot(u.signature),userHandle:d},type:f,clientExtensionResults:a.getClientExtensionResults(),authenticatorAttachment:cn(a.authenticatorAttachment)}}var zi="6.16.0";function Yc(r,t,e){let n=t.split("|").map(i=>i.trim());for(let i=0;i<n.length;i++)switch(t){case"any":return;case"bigint":case"boolean":case"number":case"string":if(typeof r===t)return}let s=new Error(`invalid value for type ${t}`);throw s.code="INVALID_ARGUMENT",s.argument=`value.${e}`,s.value=r,s}async function nt(r){let t=Object.keys(r);return(await Promise.all(t.map(n=>Promise.resolve(r[n])))).reduce((n,s,i)=>(n[t[i]]=s,n),{})}function N(r,t,e){for(let n in t){let s=t[n],i=e?e[n]:null;i&&Yc(s,i,n),Object.defineProperty(r,n,{enumerable:!0,value:s,writable:!1})}}function Xe(r,t){if(r==null)return"null";if(t==null&&(t=new Set),typeof r=="object"){if(t.has(r))return"[Circular]";t.add(r)}if(Array.isArray(r))return"[ "+r.map(e=>Xe(e,t)).join(", ")+" ]";if(r instanceof Uint8Array){let e="0123456789abcdef",n="0x";for(let s=0;s<r.length;s++)n+=e[r[s]>>4],n+=e[r[s]&15];return n}if(typeof r=="object"&&typeof r.toJSON=="function")return Xe(r.toJSON(),t);switch(typeof r){case"boolean":case"number":case"symbol":return r.toString();case"bigint":return BigInt(r).toString();case"string":return JSON.stringify(r);case"object":{let e=Object.keys(r);return e.sort(),"{ "+e.map(n=>`${Xe(n,t)}: ${Xe(r[n],t)}`).join(", ")+" }"}}return"[ COULD NOT SERIALIZE ]"}function Y(r,t){return r&&r.code===t}function $e(r){return Y(r,"CALL_EXCEPTION")}function V(r,t,e){let n=r;{let i=[];if(e){if("message"in e||"code"in e||"name"in e)throw new Error(`value will overwrite populated values: ${Xe(e)}`);for(let o in e){if(o==="shortMessage")continue;let a=e[o];i.push(o+"="+Xe(a))}}i.push(`code=${t}`),i.push(`version=${zi}`),i.length&&(r+=" ("+i.join(", ")+")")}let s;switch(t){case"INVALID_ARGUMENT":s=new TypeError(r);break;case"NUMERIC_FAULT":case"BUFFER_OVERRUN":s=new RangeError(r);break;default:s=new Error(r)}return N(s,{code:t}),e&&Object.assign(s,e),s.shortMessage==null&&N(s,{shortMessage:n}),s}function w(r,t,e,n){if(!r)throw V(t,e,n)}function h(r,t,e,n){w(r,t,"INVALID_ARGUMENT",{argument:e,value:n})}function Nr(r,t,e){e==null&&(e=""),e&&(e=": "+e),w(r>=t,"missing argument"+e,"MISSING_ARGUMENT",{count:r,expectedCount:t}),w(r<=t,"too many arguments"+e,"UNEXPECTED_ARGUMENT",{count:r,expectedCount:t})}var Xc=["NFD","NFC","NFKD","NFKC"].reduce((r,t)=>{try{if("test".normalize(t)!=="test")throw new Error("bad");if(t==="NFD"&&"\xE9".normalize("NFD")!=="e\u0301")throw new Error("broken");r.push(t)}catch{}return r},[]);function Rs(r){w(Xc.indexOf(r)>=0,"platform missing String.prototype.normalize","UNSUPPORTED_OPERATION",{operation:"String.prototype.normalize",info:{form:r}})}function oe(r,t,e){if(e==null&&(e=""),r!==t){let n=e,s="new";e&&(n+=".",s+=" "+e),w(!1,`private constructor; use ${n}from* methods`,"UNSUPPORTED_OPERATION",{operation:s})}}function Ji(r,t,e){if(r instanceof Uint8Array)return e?new Uint8Array(r):r;if(typeof r=="string"&&r.length%2===0&&r.match(/^0x[0-9a-f]*$/i)){let n=new Uint8Array((r.length-2)/2),s=2;for(let i=0;i<n.length;i++)n[i]=parseInt(r.substring(s,s+2),16),s+=2;return n}h(!1,"invalid BytesLike value",t||"value",r)}function R(r,t){return Ji(r,t,!1)}function $(r,t){return Ji(r,t,!0)}function F(r,t){return!(typeof r!="string"||!r.match(/^0x[0-9A-Fa-f]*$/)||typeof t=="number"&&r.length!==2+2*t||t===!0&&r.length%2!==0)}function Ne(r){return F(r,!0)||r instanceof Uint8Array}var Ki="0123456789abcdef";function b(r){let t=R(r),e="0x";for(let n=0;n<t.length;n++){let s=t[n];e+=Ki[(s&240)>>4]+Ki[s&15]}return e}function H(r){return"0x"+r.map(t=>b(t).substring(2)).join("")}function Kt(r){return F(r,!0)?(r.length-2)/2:R(r).length}function j(r,t,e){let n=R(r);return e!=null&&e>n.length&&w(!1,"cannot slice beyond data bounds","BUFFER_OVERRUN",{buffer:n,length:n.length,offset:e}),b(n.slice(t??0,e??n.length))}function Wi(r,t,e){let n=R(r);w(t>=n.length,"padding exceeds data length","BUFFER_OVERRUN",{buffer:new Uint8Array(n),length:t,offset:t+1});let s=new Uint8Array(t);return s.fill(0),e?s.set(n,t-n.length):s.set(n,0),b(s)}function mt(r,t){return Wi(r,t,!0)}function ks(r,t){return Wi(r,t,!1)}var Ir=BigInt(0),Dt=BigInt(1),tr=9007199254740991;function Cs(r,t){let e=Rr(r,"value"),n=BigInt(T(t,"width"));if(w(e>>n===Ir,"overflow","NUMERIC_FAULT",{operation:"fromTwos",fault:"overflow",value:r}),e>>n-Dt){let s=(Dt<<n)-Dt;return-((~e&s)+Dt)}return e}function vr(r,t){let e=x(r,"value"),n=BigInt(T(t,"width")),s=Dt<<n-Dt;if(e<Ir){e=-e,w(e<=s,"too low","NUMERIC_FAULT",{operation:"toTwos",fault:"overflow",value:r});let i=(Dt<<n)-Dt;return(~e&i)+Dt}else w(e<s,"too high","NUMERIC_FAULT",{operation:"toTwos",fault:"overflow",value:r});return e}function ae(r,t){let e=Rr(r,"value"),n=BigInt(T(t,"bits"));return e&(Dt<<n)-Dt}function x(r,t){switch(typeof r){case"bigint":return r;case"number":return h(Number.isInteger(r),"underflow",t||"value",r),h(r>=-tr&&r<=tr,"overflow",t||"value",r),BigInt(r);case"string":try{if(r==="")throw new Error("empty string");return r[0]==="-"&&r[1]!=="-"?-BigInt(r.substring(1)):BigInt(r)}catch(e){h(!1,`invalid BigNumberish string: ${e.message}`,t||"value",r)}}h(!1,"invalid BigNumberish value",t||"value",r)}function Rr(r,t){let e=x(r,t);return w(e>=Ir,"unsigned value cannot be negative","NUMERIC_FAULT",{fault:"overflow",operation:"getUint",value:r}),e}var ji="0123456789abcdef";function er(r){if(r instanceof Uint8Array){let t="0x0";for(let e of r)t+=ji[e>>4],t+=ji[e&15];return BigInt(t)}return x(r)}function T(r,t){switch(typeof r){case"bigint":return h(r>=-tr&&r<=tr,"overflow",t||"value",r),Number(r);case"number":return h(Number.isInteger(r),"underflow",t||"value",r),h(r>=-tr&&r<=tr,"overflow",t||"value",r),r;case"string":try{if(r==="")throw new Error("empty string");return T(BigInt(r),t)}catch(e){h(!1,`invalid numeric string: ${e.message}`,t||"value",r)}}h(!1,"invalid numeric value",t||"value",r)}function Os(r){return T(er(r))}function bt(r,t){let e=Rr(r,"value"),n=e.toString(16);if(t==null)n.length%2&&(n="0"+n);else{let s=T(t,"width");if(s===0&&e===Ir)return"0x";for(w(s*2>=n.length,`value exceeds width (${s} bytes)`,"NUMERIC_FAULT",{operation:"toBeHex",fault:"overflow",value:r});n.length<s*2;)n="0"+n}return"0x"+n}function X(r,t){let e=Rr(r,"value");if(e===Ir){let i=t!=null?T(t,"width"):0;return new Uint8Array(i)}let n=e.toString(16);if(n.length%2&&(n="0"+n),t!=null){let i=T(t,"width");for(;n.length<i*2;)n="00"+n;w(i*2===n.length,`value exceeds width (${i} bytes)`,"NUMERIC_FAULT",{operation:"toBeArray",fault:"overflow",value:r})}let s=new Uint8Array(n.length/2);for(let i=0;i<s.length;i++){let o=i*2;s[i]=parseInt(n.substring(o,o+2),16)}return s}function yt(r){let t=b(Ne(r)?r:X(r)).substring(2);for(;t.startsWith("0");)t=t.substring(1);return t===""&&(t="0"),"0x"+t}var Zi="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";var Cd=BigInt(0),qi=BigInt(58);function Ts(r){let t=R(r),e=er(t),n="";for(;e;)n=Zi[Number(e%qi)]+n,e/=qi;for(let s=0;s<t.length&&!t[s];s++)n=Zi[0]+n;return n}function Yi(r){return $(Buffer.from(r,"base64"))}function Xi(r){return Buffer.from(R(r)).toString("base64")}var Ie=class{filter;emitter;#t;constructor(t,e,n){this.#t=e,N(this,{emitter:t,filter:n})}async removeListener(){this.#t!=null&&await this.emitter.off(this.filter,this.#t)}};function $c(r,t,e,n,s){h(!1,`invalid codepoint at offset ${t}; ${r}`,"bytes",e)}function $i(r,t,e,n,s){if(r==="BAD_PREFIX"||r==="UNEXPECTED_CONTINUE"){let i=0;for(let o=t+1;o<e.length&&e[o]>>6===2;o++)i++;return i}return r==="OVERRUN"?e.length-t-1:0}function tl(r,t,e,n,s){return r==="OVERLONG"?(h(typeof s=="number","invalid bad code point for replacement","badCodepoint",s),n.push(s),0):(n.push(65533),$i(r,t,e,n,s))}var to=Object.freeze({error:$c,ignore:$i,replace:tl});function el(r,t){t==null&&(t=to.error);let e=R(r,"bytes"),n=[],s=0;for(;s<e.length;){let i=e[s++];if(i>>7===0){n.push(i);continue}let o=null,a=null;if((i&224)===192)o=1,a=127;else if((i&240)===224)o=2,a=2047;else if((i&248)===240)o=3,a=65535;else{(i&192)===128?s+=t("UNEXPECTED_CONTINUE",s-1,e,n):s+=t("BAD_PREFIX",s-1,e,n);continue}if(s-1+o>=e.length){s+=t("OVERRUN",s-1,e,n);continue}let c=i&(1<<8-o-1)-1;for(let l=0;l<o;l++){let u=e[s];if((u&192)!=128){s+=t("MISSING_CONTINUE",s,e,n),c=null;break}c=c<<6|u&63,s++}if(c!==null){if(c>1114111){s+=t("OUT_OF_RANGE",s-1-o,e,n,c);continue}if(c>=55296&&c<=57343){s+=t("UTF16_SURROGATE",s-1-o,e,n,c);continue}if(c<=a){s+=t("OVERLONG",s-1-o,e,n,c);continue}n.push(c)}}return n}function wt(r,t){h(typeof r=="string","invalid string value","str",r),t!=null&&(Rs(t),r=r.normalize(t));let e=[];for(let n=0;n<r.length;n++){let s=r.charCodeAt(n);if(s<128)e.push(s);else if(s<2048)e.push(s>>6|192),e.push(s&63|128);else if((s&64512)==55296){n++;let i=r.charCodeAt(n);h(n<r.length&&(i&64512)===56320,"invalid surrogate pair","str",r);let o=65536+((s&1023)<<10)+(i&1023);e.push(o>>18|240),e.push(o>>12&63|128),e.push(o>>6&63|128),e.push(o&63|128)}else e.push(s>>12|224),e.push(s>>6&63|128),e.push(s&63|128)}return new Uint8Array(e)}function rl(r){return r.map(t=>t<=65535?String.fromCharCode(t):(t-=65536,String.fromCharCode((t>>10&1023)+55296,(t&1023)+56320))).join("")}function ce(r,t){return rl(el(r,t))}import nl from"http";import sl from"https";import{gunzipSync as il}from"zlib";function ln(r){async function t(e,n){w(n==null||!n.cancelled,"request cancelled before sending","CANCELLED");let s=e.url.split(":")[0].toLowerCase();w(s==="http"||s==="https",`unsupported protocol ${s}`,"UNSUPPORTED_OPERATION",{info:{protocol:s},operation:"request"}),w(s==="https"||!e.credentials||e.allowInsecureAuthentication,"insecure authorized connections unsupported","UNSUPPORTED_OPERATION",{operation:"request"});let i=e.method,o=Object.assign({},e.headers),a={method:i,headers:o};r&&r.agent&&(a.agent=r.agent);let c=null;try{c=new AbortController,a.abort=c.signal}catch(f){console.log(f)}let l=(s==="http"?nl:sl).request(e.url,a);l.setTimeout(e.timeout);let u=e.body;return u&&l.write(Buffer.from(u)),l.end(),new Promise((f,d)=>{n&&n.addListener(()=>{c&&c.abort(),d(V("request cancelled","CANCELLED"))}),l.on("timeout",()=>{d(V("request timeout","TIMEOUT"))}),l.once("response",g=>{let m=g.statusCode||0,p=g.statusMessage||"",y=Object.keys(g.headers||{}).reduce((E,P)=>{let C=g.headers[P]||"";return Array.isArray(C)&&(C=C.join(", ")),E[P]=C,E},{}),A=null;g.on("data",E=>{if(n)try{n.checkSignal()}catch(P){return d(P)}if(A==null)A=E;else{let P=new Uint8Array(A.length+E.length);P.set(A,0),P.set(E,A.length),A=P}}),g.on("end",()=>{try{y["content-encoding"]==="gzip"&&A&&(A=R(il(A))),f({statusCode:m,statusMessage:p,headers:y,body:A})}catch(E){d(V("bad response data","SERVER_ERROR",{request:e,info:{response:g,error:E}}))}}),g.on("error",E=>{E.response={statusCode:m,statusMessage:p,headers:y,body:A},d(E)})}),l.on("error",g=>{d(g)})})}return t}var zd=ln({});var ol=12,al=250,eo=ln(),cl=new RegExp("^data:([^;:]*)?(;base64)?,(.*)$","i"),ll=new RegExp("^ipfs://(ipfs/)?(.*)$","i"),Ss=!1;async function no(r,t){try{let e=r.match(cl);if(!e)throw new Error("invalid data");return new Wt(200,"OK",{"content-type":e[1]||"text/plain"},e[2]?Yi(e[3]):ul(e[3]))}catch{return new Wt(599,"BAD REQUEST (invalid data: URI)",{},null,new Tt(r))}}function so(r){async function t(e,n){try{let s=e.match(ll);if(!s)throw new Error("invalid link");return new Tt(`${r}${s[2]}`)}catch{return new Wt(599,"BAD REQUEST (invalid IPFS URI)",{},null,new Tt(e))}}return t}var un={data:no,ipfs:so("https://gateway.ipfs.io/ipfs/")},io=new WeakMap,hn=class{#t;#e;constructor(t){this.#t=[],this.#e=!1,io.set(t,()=>{if(!this.#e){this.#e=!0;for(let e of this.#t)setTimeout(()=>{e()},0);this.#t=[]}})}addListener(t){w(!this.#e,"singal already cancelled","UNSUPPORTED_OPERATION",{operation:"fetchCancelSignal.addCancelListener"}),this.#t.push(t)}get cancelled(){return this.#e}checkSignal(){w(!this.cancelled,"cancelled","CANCELLED",{})}};function fn(r){if(r==null)throw new Error("missing signal; should not happen");return r.checkSignal(),r}var Tt=class r{#t;#e;#r;#n;#s;#o;#i;#a;#d;#l;#p;#g;#c;#u;#f;get url(){return this.#o}set url(t){this.#o=String(t)}get body(){return this.#i==null?null:new Uint8Array(this.#i)}set body(t){if(t==null)this.#i=void 0,this.#a=void 0;else if(typeof t=="string")this.#i=wt(t),this.#a="text/plain";else if(t instanceof Uint8Array)this.#i=t,this.#a="application/octet-stream";else if(typeof t=="object")this.#i=wt(JSON.stringify(t)),this.#a="application/json";else throw new Error("invalid body")}hasBody(){return this.#i!=null}get method(){return this.#n?this.#n:this.hasBody()?"POST":"GET"}set method(t){t==null&&(t=""),this.#n=String(t).toUpperCase()}get headers(){let t=Object.assign({},this.#r);return this.#d&&(t.authorization=`Basic ${Xi(wt(this.#d))}`),this.allowGzip&&(t["accept-encoding"]="gzip"),t["content-type"]==null&&this.#a&&(t["content-type"]=this.#a),this.body&&(t["content-length"]=String(this.body.length)),t}getHeader(t){return this.headers[t.toLowerCase()]}setHeader(t,e){this.#r[String(t).toLowerCase()]=String(e)}clearHeaders(){this.#r={}}[Symbol.iterator](){let t=this.headers,e=Object.keys(t),n=0;return{next:()=>{if(n<e.length){let s=e[n++];return{value:[s,t[s]],done:!1}}return{value:void 0,done:!0}}}}get credentials(){return this.#d||null}setCredentials(t,e){h(!t.match(/:/),"invalid basic authentication username","username","[REDACTED]"),this.#d=`${t}:${e}`}get allowGzip(){return this.#e}set allowGzip(t){this.#e=!!t}get allowInsecureAuthentication(){return!!this.#t}set allowInsecureAuthentication(t){this.#t=!!t}get timeout(){return this.#s}set timeout(t){h(t>=0,"timeout must be non-zero","timeout",t),this.#s=t}get preflightFunc(){return this.#l||null}set preflightFunc(t){this.#l=t}get processFunc(){return this.#p||null}set processFunc(t){this.#p=t}get retryFunc(){return this.#g||null}set retryFunc(t){this.#g=t}get getUrlFunc(){return this.#f||eo}set getUrlFunc(t){this.#f=t}constructor(t){this.#o=String(t),this.#t=!1,this.#e=!0,this.#r={},this.#n="",this.#s=3e5,this.#u={slotInterval:al,maxAttempts:ol},this.#f=null}toString(){return`<FetchRequest method=${JSON.stringify(this.method)} url=${JSON.stringify(this.url)} headers=${JSON.stringify(this.headers)} body=${this.#i?b(this.#i):"null"}>`}setThrottleParams(t){t.slotInterval!=null&&(this.#u.slotInterval=t.slotInterval),t.maxAttempts!=null&&(this.#u.maxAttempts=t.maxAttempts)}async#h(t,e,n,s,i){if(t>=this.#u.maxAttempts)return i.makeServerError("exceeded maximum retry limit");w(ro()<=e,"timeout","TIMEOUT",{operation:"request.send",reason:"timeout",request:s}),n>0&&await fl(n);let o=this.clone(),a=(o.url.split(":")[0]||"").toLowerCase();if(a in un){let u=await un[a](o.url,fn(s.#c));if(u instanceof Wt){let f=u;if(this.processFunc){fn(s.#c);try{f=await this.processFunc(o,f)}catch(d){(d.throttle==null||typeof d.stall!="number")&&f.makeServerError("error in post-processing function",d).assertOk()}}return f}o=u}this.preflightFunc&&(o=await this.preflightFunc(o));let c=await this.getUrlFunc(o,fn(s.#c)),l=new Wt(c.statusCode,c.statusMessage,c.headers,c.body,s);if(l.statusCode===301||l.statusCode===302){try{let u=l.headers.location||"";return o.redirect(u).#h(t+1,e,0,s,l)}catch{}return l}else if(l.statusCode===429&&(this.retryFunc==null||await this.retryFunc(o,l,t))){let u=l.headers["retry-after"],f=this.#u.slotInterval*Math.trunc(Math.random()*Math.pow(2,t));return typeof u=="string"&&u.match(/^[1-9][0-9]*$/)&&(f=parseInt(u)),o.clone().#h(t+1,e,f,s,l)}if(this.processFunc){fn(s.#c);try{l=await this.processFunc(o,l)}catch(u){(u.throttle==null||typeof u.stall!="number")&&l.makeServerError("error in post-processing function",u).assertOk();let f=this.#u.slotInterval*Math.trunc(Math.random()*Math.pow(2,t));return u.stall>=0&&(f=u.stall),o.clone().#h(t+1,e,f,s,l)}}return l}send(){return w(this.#c==null,"request already sent","UNSUPPORTED_OPERATION",{operation:"fetchRequest.send"}),this.#c=new hn(this),this.#h(0,ro()+this.timeout,0,this,new Wt(0,"",{},null,this))}cancel(){w(this.#c!=null,"request has not been sent","UNSUPPORTED_OPERATION",{operation:"fetchRequest.cancel"});let t=io.get(this);if(!t)throw new Error("missing signal; should not happen");t()}redirect(t){let e=this.url.split(":")[0].toLowerCase(),n=t.split(":")[0].toLowerCase();w(this.method==="GET"&&(e!=="https"||n!=="http")&&t.match(/^https?:/),"unsupported redirect","UNSUPPORTED_OPERATION",{operation:`redirect(${this.method} ${JSON.stringify(this.url)} => ${JSON.stringify(t)})`});let s=new r(t);return s.method="GET",s.allowGzip=this.allowGzip,s.timeout=this.timeout,s.#r=Object.assign({},this.#r),this.#i&&(s.#i=new Uint8Array(this.#i)),s.#a=this.#a,s}clone(){let t=new r(this.url);return t.#n=this.#n,this.#i&&(t.#i=this.#i),t.#a=this.#a,t.#r=Object.assign({},this.#r),t.#d=this.#d,this.allowGzip&&(t.allowGzip=!0),t.timeout=this.timeout,this.allowInsecureAuthentication&&(t.allowInsecureAuthentication=!0),t.#l=this.#l,t.#p=this.#p,t.#g=this.#g,t.#u=Object.assign({},this.#u),t.#f=this.#f,t}static lockConfig(){Ss=!0}static getGateway(t){return un[t.toLowerCase()]||null}static registerGateway(t,e){if(t=t.toLowerCase(),t==="http"||t==="https")throw new Error(`cannot intercept ${t}; use registerGetUrl`);if(Ss)throw new Error("gateways locked");un[t]=e}static registerGetUrl(t){if(Ss)throw new Error("gateways locked");eo=t}static createGetUrlFunc(t){return ln(t)}static createDataGateway(){return no}static createIpfsGatewayFunc(t){return so(t)}},Wt=class r{#t;#e;#r;#n;#s;#o;toString(){return`<FetchResponse status=${this.statusCode} body=${this.#n?b(this.#n):"null"}>`}get statusCode(){return this.#t}get statusMessage(){return this.#e}get headers(){return Object.assign({},this.#r)}get body(){return this.#n==null?null:new Uint8Array(this.#n)}get bodyText(){try{return this.#n==null?"":ce(this.#n)}catch{w(!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{w(!1,"response body is not valid JSON","UNSUPPORTED_OPERATION",{operation:"bodyJson",info:{response:this}})}}[Symbol.iterator](){let t=this.headers,e=Object.keys(t),n=0;return{next:()=>{if(n<e.length){let s=e[n++];return{value:[s,t[s]],done:!1}}return{value:void 0,done:!0}}}}constructor(t,e,n,s,i){this.#t=t,this.#e=e,this.#r=Object.keys(n).reduce((o,a)=>(o[a.toLowerCase()]=String(n[a]),o),{}),this.#n=s==null?null:new Uint8Array(s),this.#s=i||null,this.#o={message:""}}makeServerError(t,e){let n;t?n=`CLIENT ESCALATED SERVER ERROR (${this.statusCode} ${this.statusMessage}; ${t})`:(t=`${this.statusCode} ${this.statusMessage}`,n=`CLIENT ESCALATED SERVER ERROR (${t})`);let s=new r(599,n,this.headers,this.body,this.#s||void 0);return s.#o={message:t,error:e},s}throwThrottleError(t,e){e==null?e=-1:h(Number.isInteger(e)&&e>=0,"invalid stall timeout","stall",e);let n=new Error(t||"throttling requests");throw N(n,{stall:e,throttle:!0}),n}getHeader(t){return this.headers[t.toLowerCase()]}hasBody(){return this.#n!=null}get request(){return this.#s}ok(){return this.#o.message===""&&this.statusCode>=200&&this.statusCode<300}assertOk(){if(this.ok())return;let{message:t,error:e}=this.#o;t===""&&(t=`server response ${this.statusCode} ${this.statusMessage}`);let n=null;this.request&&(n=this.request.url);let s=null;try{this.#n&&(s=ce(this.#n))}catch{}w(!1,t,"SERVER_ERROR",{request:this.request||"unknown request",response:this,error:e,info:{requestUrl:n,responseBody:s,responseStatus:`${this.statusCode} ${this.statusMessage}`}})}};function ro(){return new Date().getTime()}function ul(r){return wt(r.replace(/%([0-9a-f][0-9a-f])/gi,(t,e)=>String.fromCharCode(parseInt(e,16))))}function fl(r){return new Promise(t=>setTimeout(t,r))}function hl(r){let t=r.toString(16);for(;t.length<2;)t="0"+t;return"0x"+t}function oo(r,t,e){let n=0;for(let s=0;s<e;s++)n=n*256+r[t+s];return n}function ao(r,t,e,n){let s=[];for(;e<t+1+n;){let i=co(r,e);s.push(i.result),e+=i.consumed,w(e<=t+1+n,"child data too short","BUFFER_OVERRUN",{buffer:r,length:n,offset:t})}return{consumed:1+n,result:s}}function co(r,t){w(r.length!==0,"data too short","BUFFER_OVERRUN",{buffer:r,length:0,offset:1});let e=n=>{w(n<=r.length,"data short segment too short","BUFFER_OVERRUN",{buffer:r,length:r.length,offset:n})};if(r[t]>=248){let n=r[t]-247;e(t+1+n);let s=oo(r,t+1,n);return e(t+1+n+s),ao(r,t,t+1+n,n+s)}else if(r[t]>=192){let n=r[t]-192;return e(t+1+n),ao(r,t,t+1,n)}else if(r[t]>=184){let n=r[t]-183;e(t+1+n);let s=oo(r,t+1,n);e(t+1+n+s);let i=b(r.slice(t+1+n,t+1+n+s));return{consumed:1+n+s,result:i}}else if(r[t]>=128){let n=r[t]-128;e(t+1+n);let s=b(r.slice(t+1,t+1+n));return{consumed:1+n,result:s}}return{consumed:1,result:hl(r[t])}}function ve(r){let t=R(r,"data"),e=co(t,0);return h(e.consumed===t.length,"unexpected junk after rlp payload","data",r),e.result}function lo(r){let t=[];for(;r;)t.unshift(r&255),r>>=8;return t}function fo(r){if(Array.isArray(r)){let n=[];if(r.forEach(function(i){n=n.concat(fo(i))}),n.length<=55)return n.unshift(192+n.length),n;let s=lo(n.length);return s.unshift(247+s.length),s.concat(n)}let t=Array.prototype.slice.call(R(r,"object"));if(t.length===1&&t[0]<=127)return t;if(t.length<=55)return t.unshift(128+t.length),t;let e=lo(t.length);return e.unshift(183+e.length),e.concat(t)}var uo="0123456789abcdef";function St(r){let t="0x";for(let e of fo(r))t+=uo[e>>4],t+=uo[e&15];return t}var dt=32,Us=new Uint8Array(dt),dl=["then"],dn={},go=new WeakMap;function Re(r){return go.get(r)}function ho(r,t){go.set(r,t)}function kr(r,t){let e=new Error(`deferred error during ABI decoding triggered accessing ${r}`);throw e.error=t,e}function Ls(r,t,e){return r.indexOf(null)>=0?t.map((n,s)=>n instanceof jt?Ls(Re(n),n,e):n):r.reduce((n,s,i)=>{let o=t.getValue(s);return s in n||(e&&o instanceof jt&&(o=Ls(Re(o),o,e)),n[s]=o),n},{})}var jt=class r extends Array{#t;constructor(...t){let e=t[0],n=t[1],s=(t[2]||[]).slice(),i=!0;e!==dn&&(n=t,s=[],i=!1),super(n.length),n.forEach((c,l)=>{this[l]=c});let o=s.reduce((c,l)=>(typeof l=="string"&&c.set(l,(c.get(l)||0)+1),c),new Map);if(ho(this,Object.freeze(n.map((c,l)=>{let u=s[l];return u!=null&&o.get(u)===1?u:null}))),this.#t=[],this.#t==null&&this.#t,!i)return;Object.freeze(this);let a=new Proxy(this,{get:(c,l,u)=>{if(typeof l=="string"){if(l.match(/^[0-9]+$/)){let d=T(l,"%index");if(d<0||d>=this.length)throw new RangeError("out of result range");let g=c[d];return g instanceof Error&&kr(`index ${d}`,g),g}if(dl.indexOf(l)>=0)return Reflect.get(c,l,u);let f=c[l];if(f instanceof Function)return function(...d){return f.apply(this===u?c:this,d)};if(!(l in c))return c.getValue.apply(this===u?c:this,[l])}return Reflect.get(c,l,u)}});return ho(a,Re(this)),a}toArray(t){let e=[];return this.forEach((n,s)=>{n instanceof Error&&kr(`index ${s}`,n),t&&n instanceof r&&(n=n.toArray(t)),e.push(n)}),e}toObject(t){let e=Re(this);return e.reduce((n,s,i)=>(w(s!=null,`value at index ${i} unnamed`,"UNSUPPORTED_OPERATION",{operation:"toObject()"}),Ls(e,this,t)),{})}slice(t,e){t==null&&(t=0),t<0&&(t+=this.length,t<0&&(t=0)),e==null&&(e=this.length),e<0&&(e+=this.length,e<0&&(e=0)),e>this.length&&(e=this.length);let n=Re(this),s=[],i=[];for(let o=t;o<e;o++)s.push(this[o]),i.push(n[o]);return new r(dn,s,i)}filter(t,e){let n=Re(this),s=[],i=[];for(let o=0;o<this.length;o++){let a=this[o];a instanceof Error&&kr(`index ${o}`,a),t.call(e,a,o,this)&&(s.push(a),i.push(n[o]))}return new r(dn,s,i)}map(t,e){let n=[];for(let s=0;s<this.length;s++){let i=this[s];i instanceof Error&&kr(`index ${s}`,i),n.push(t.call(e,i,s,this))}return n}getValue(t){let e=Re(this).indexOf(t);if(e===-1)return;let n=this[e];return n instanceof Error&&kr(`property ${JSON.stringify(t)}`,n.error),n}static fromItems(t,e){return new r(dn,t,e)}};function po(r){let t=X(r);return w(t.length<=dt,"value out-of-bounds","BUFFER_OVERRUN",{buffer:t,length:dt,offset:t.length}),t.length!==dt&&(t=$(H([Us.slice(t.length%dt),t]))),t}var ot=class{name;type;localName;dynamic;constructor(t,e,n,s){N(this,{name:t,type:e,localName:n,dynamic:s},{name:"string",type:"string",localName:"string",dynamic:"boolean"})}_throwError(t,e){h(!1,t,this.localName,e)}},ke=class{#t;#e;constructor(){this.#t=[],this.#e=0}get data(){return H(this.#t)}get length(){return this.#e}#r(t){return this.#t.push(t),this.#e+=t.length,t.length}appendWriter(t){return this.#r($(t.data))}writeBytes(t){let e=$(t),n=e.length%dt;return n&&(e=$(H([e,Us.slice(n)]))),this.#r(e)}writeValue(t){return this.#r(po(t))}writeUpdatableValue(){let t=this.#t.length;return this.#t.push(Us),this.#e+=dt,e=>{this.#t[t]=po(e)}}},pn=class r{allowLoose;#t;#e;#r;#n;#s;constructor(t,e,n){N(this,{allowLoose:!!e}),this.#t=$(t),this.#r=0,this.#n=null,this.#s=n??1024,this.#e=0}get data(){return b(this.#t)}get dataLength(){return this.#t.length}get consumed(){return this.#e}get bytes(){return new Uint8Array(this.#t)}#o(t){if(this.#n)return this.#n.#o(t);this.#r+=t,w(this.#s<1||this.#r<=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:$(this.#t),offset:this.#e,length:t,info:{bytesRead:this.#r,dataLength:this.dataLength}})}#i(t,e,n){let s=Math.ceil(e/dt)*dt;return this.#e+s>this.#t.length&&(this.allowLoose&&n&&this.#e+e<=this.#t.length?s=e:w(!1,"data out-of-bounds","BUFFER_OVERRUN",{buffer:$(this.#t),length:this.#t.length,offset:this.#e+s})),this.#t.slice(this.#e,this.#e+s)}subReader(t){let e=new r(this.#t.slice(this.#e+t),this.allowLoose,this.#s);return e.#n=this,e}readBytes(t,e){let n=this.#i(0,t,!!e);return this.#o(t),this.#e+=n.length,n.slice(0,t)}readValue(){return er(this.readBytes(dt))}readIndex(){return Os(this.readBytes(dt))}};import{createHash as Ds,createHmac as Pp,pbkdf2Sync as Bp,randomBytes as Np}from"crypto";function Cr(r){if(!Number.isSafeInteger(r)||r<0)throw new Error(`Wrong positive integer: ${r}`)}function Or(r,...t){if(!(r instanceof Uint8Array))throw new Error("Expected Uint8Array");if(t.length>0&&!t.includes(r.length))throw new Error(`Expected Uint8Array of length ${t}, not of length=${r.length}`)}function mo(r){if(typeof r!="function"||typeof r.create!="function")throw new Error("Hash should be wrapped by utils.wrapConstructor");Cr(r.outputLen),Cr(r.blockLen)}function Zt(r,t=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(t&&r.finished)throw new Error("Hash#digest() has already been called")}function gn(r,t){Or(r);let e=t.outputLen;if(r.length<e)throw new Error(`digestInto() expects output buffer of length at least ${e}`)}var mn=BigInt(4294967295),yo=BigInt(32);function pl(r,t=!1){return t?{h:Number(r&mn),l:Number(r>>yo&mn)}:{h:Number(r>>yo&mn)|0,l:Number(r&mn)|0}}function wo(r,t=!1){let e=new Uint32Array(r.length),n=new Uint32Array(r.length);for(let s=0;s<r.length;s++){let{h:i,l:o}=pl(r[s],t);[e[s],n[s]]=[i,o]}return[e,n]}var Ao=(r,t,e)=>r<<e|t>>>32-e,bo=(r,t,e)=>t<<e|r>>>32-e,Eo=(r,t,e)=>t<<e-32|r>>>64-e,xo=(r,t,e)=>r<<e-32|t>>>64-e;import*as Tr from"node:crypto";var yn=Tr&&typeof Tr=="object"&&"webcrypto"in Tr?Tr.webcrypto:void 0;var Po=r=>r instanceof Uint8Array;var Bo=r=>new Uint32Array(r.buffer,r.byteOffset,Math.floor(r.byteLength/4)),wn=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),Ft=(r,t)=>r<<32-t|r>>>t,gl=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;if(!gl)throw new Error("Non little-endian hardware is not supported");function ml(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function ue(r){if(typeof r=="string"&&(r=ml(r)),!Po(r))throw new Error(`expected Uint8Array, got ${typeof r}`);return r}function No(...r){let t=new Uint8Array(r.reduce((n,s)=>n+s.length,0)),e=0;return r.forEach(n=>{if(!Po(n))throw new Error("Uint8Array expected");t.set(n,e),e+=n.length}),t}var le=class{clone(){return this._cloneInto()}},Cp={}.toString;function An(r){let t=n=>r().update(ue(n)).digest(),e=r();return t.outputLen=e.outputLen,t.blockLen=e.blockLen,t.create=()=>r(),t}function Io(r){let t=(n,s)=>r(s).update(ue(n)).digest(),e=r({});return t.outputLen=e.outputLen,t.blockLen=e.blockLen,t.create=n=>r(n),t}function vo(r=32){if(yn&&typeof yn.getRandomValues=="function")return yn.getRandomValues(new Uint8Array(r));throw new Error("crypto.getRandomValues must be defined")}var[Co,Oo,To]=[[],[],[]],yl=BigInt(0),Sr=BigInt(1),wl=BigInt(2),Al=BigInt(7),bl=BigInt(256),El=BigInt(113);for(let r=0,t=Sr,e=1,n=0;r<24;r++){[e,n]=[n,(2*e+3*n)%5],Co.push(2*(5*n+e)),Oo.push((r+1)*(r+2)/2%64);let s=yl;for(let i=0;i<7;i++)t=(t<<Sr^(t>>Al)*El)%bl,t&wl&&(s^=Sr<<(Sr<<BigInt(i))-Sr);To.push(s)}var[xl,Pl]=wo(To,!0),Ro=(r,t,e)=>e>32?Eo(r,t,e):Ao(r,t,e),ko=(r,t,e)=>e>32?xo(r,t,e):bo(r,t,e);function Bl(r,t=24){let e=new Uint32Array(10);for(let n=24-t;n<24;n++){for(let o=0;o<10;o++)e[o]=r[o]^r[o+10]^r[o+20]^r[o+30]^r[o+40];for(let o=0;o<10;o+=2){let a=(o+8)%10,c=(o+2)%10,l=e[c],u=e[c+1],f=Ro(l,u,1)^e[a],d=ko(l,u,1)^e[a+1];for(let g=0;g<50;g+=10)r[o+g]^=f,r[o+g+1]^=d}let s=r[2],i=r[3];for(let o=0;o<24;o++){let a=Oo[o],c=Ro(s,i,a),l=ko(s,i,a),u=Co[o];s=r[u],i=r[u+1],r[u]=c,r[u+1]=l}for(let o=0;o<50;o+=10){for(let a=0;a<10;a++)e[a]=r[o+a];for(let a=0;a<10;a++)r[o+a]^=~e[(a+2)%10]&e[(a+4)%10]}r[0]^=xl[n],r[1]^=Pl[n]}e.fill(0)}var bn=class r extends le{constructor(t,e,n,s=!1,i=24){if(super(),this.blockLen=t,this.suffix=e,this.outputLen=n,this.enableXOF=s,this.rounds=i,this.pos=0,this.posOut=0,this.finished=!1,this.destroyed=!1,Cr(n),0>=this.blockLen||this.blockLen>=200)throw new Error("Sha3 supports only keccak-f1600 function");this.state=new Uint8Array(200),this.state32=Bo(this.state)}keccak(){Bl(this.state32,this.rounds),this.posOut=0,this.pos=0}update(t){Zt(this);let{blockLen:e,state:n}=this;t=ue(t);let s=t.length;for(let i=0;i<s;){let o=Math.min(e-this.pos,s-i);for(let a=0;a<o;a++)n[this.pos++]^=t[i++];this.pos===e&&this.keccak()}return this}finish(){if(this.finished)return;this.finished=!0;let{state:t,suffix:e,pos:n,blockLen:s}=this;t[n]^=e,(e&128)!==0&&n===s-1&&this.keccak(),t[s-1]^=128,this.keccak()}writeInto(t){Zt(this,!1),Or(t),this.finish();let e=this.state,{blockLen:n}=this;for(let s=0,i=t.length;s<i;){this.posOut>=n&&this.keccak();let o=Math.min(n-this.posOut,i-s);t.set(e.subarray(this.posOut,this.posOut+o),s),this.posOut+=o,s+=o}return t}xofInto(t){if(!this.enableXOF)throw new Error("XOF is not possible for this instance");return this.writeInto(t)}xof(t){return Cr(t),this.xofInto(new Uint8Array(t))}digestInto(t){if(gn(t,this),this.finished)throw new Error("digest() was already called");return this.writeInto(t),this.destroy(),t}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,this.state.fill(0)}_cloneInto(t){let{blockLen:e,suffix:n,outputLen:s,rounds:i,enableXOF:o}=this;return t||(t=new r(e,n,s,o,i)),t.state32.set(this.state32),t.pos=this.pos,t.posOut=this.posOut,t.finished=this.finished,t.rounds=i,t.suffix=n,t.outputLen=s,t.enableXOF=o,t.destroyed=this.destroyed,t}},fe=(r,t,e)=>An(()=>new bn(t,r,e)),Lp=fe(6,144,224/8),Dp=fe(6,136,256/8),Fp=fe(6,104,384/8),Mp=fe(6,72,512/8),Gp=fe(1,144,224/8),So=fe(1,136,256/8),Hp=fe(1,104,384/8),Vp=fe(1,72,512/8),Uo=(r,t,e)=>Io((n={})=>new bn(t,r,n.dkLen===void 0?e:n.dkLen,!0)),Qp=Uo(31,168,128/8),_p=Uo(31,136,256/8);var Lo=!1,Do=function(r){return So(r)},Fo=Do;function z(r){let t=R(r,"data");return b(Fo(t))}z._=Do;z.lock=function(){Lo=!0};z.register=function(r){if(Lo)throw new TypeError("keccak256 is locked");Fo=r};Object.freeze(z);function Nl(r,t,e,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(t,e,n);let s=BigInt(32),i=BigInt(4294967295),o=Number(e>>s&i),a=Number(e&i),c=n?4:0,l=n?0:4;r.setUint32(t+c,o,n),r.setUint32(t+l,a,n)}var En=class extends le{constructor(t,e,n,s){super(),this.blockLen=t,this.outputLen=e,this.padOffset=n,this.isLE=s,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(t),this.view=wn(this.buffer)}update(t){Zt(this);let{view:e,buffer:n,blockLen:s}=this;t=ue(t);let i=t.length;for(let o=0;o<i;){let a=Math.min(s-this.pos,i-o);if(a===s){let c=wn(t);for(;s<=i-o;o+=s)this.process(c,o);continue}n.set(t.subarray(o,o+a),this.pos),this.pos+=a,o+=a,this.pos===s&&(this.process(e,0),this.pos=0)}return this.length+=t.length,this.roundClean(),this}digestInto(t){Zt(this),gn(t,this),this.finished=!0;let{buffer:e,view:n,blockLen:s,isLE:i}=this,{pos:o}=this;e[o++]=128,this.buffer.subarray(o).fill(0),this.padOffset>s-o&&(this.process(n,0),o=0);for(let f=o;f<s;f++)e[f]=0;Nl(n,s-8,BigInt(this.length*8),i),this.process(n,0);let a=wn(t),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let l=c/4,u=this.get();if(l>u.length)throw new Error("_sha2: outputLen bigger than state");for(let f=0;f<l;f++)a.setUint32(4*f,u[f],i)}digest(){let{buffer:t,outputLen:e}=this;this.digestInto(t);let n=t.slice(0,e);return this.destroy(),n}_cloneInto(t){t||(t=new this.constructor),t.set(...this.get());let{blockLen:e,buffer:n,length:s,finished:i,destroyed:o,pos:a}=this;return t.length=s,t.pos=a,t.finished=i,t.destroyed=o,s%e&&t.buffer.set(n),t}};var Il=(r,t,e)=>r&t^~r&e,vl=(r,t,e)=>r&t^r&e^t&e,Rl=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),he=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),de=new Uint32Array(64),Fs=class extends En{constructor(){super(64,32,8,!1),this.A=he[0]|0,this.B=he[1]|0,this.C=he[2]|0,this.D=he[3]|0,this.E=he[4]|0,this.F=he[5]|0,this.G=he[6]|0,this.H=he[7]|0}get(){let{A:t,B:e,C:n,D:s,E:i,F:o,G:a,H:c}=this;return[t,e,n,s,i,o,a,c]}set(t,e,n,s,i,o,a,c){this.A=t|0,this.B=e|0,this.C=n|0,this.D=s|0,this.E=i|0,this.F=o|0,this.G=a|0,this.H=c|0}process(t,e){for(let f=0;f<16;f++,e+=4)de[f]=t.getUint32(e,!1);for(let f=16;f<64;f++){let d=de[f-15],g=de[f-2],m=Ft(d,7)^Ft(d,18)^d>>>3,p=Ft(g,17)^Ft(g,19)^g>>>10;de[f]=p+de[f-7]+m+de[f-16]|0}let{A:n,B:s,C:i,D:o,E:a,F:c,G:l,H:u}=this;for(let f=0;f<64;f++){let d=Ft(a,6)^Ft(a,11)^Ft(a,25),g=u+d+Il(a,c,l)+Rl[f]+de[f]|0,p=(Ft(n,2)^Ft(n,13)^Ft(n,22))+vl(n,s,i)|0;u=l,l=c,c=a,a=o+g|0,o=i,i=s,s=n,n=g+p|0}n=n+this.A|0,s=s+this.B|0,i=i+this.C|0,o=o+this.D|0,a=a+this.E|0,c=c+this.F|0,l=l+this.G|0,u=u+this.H|0,this.set(n,s,i,o,a,c,l,u)}roundClean(){de.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var Mo=An(()=>new Fs);var xn=class extends le{constructor(t,e){super(),this.finished=!1,this.destroyed=!1,mo(t);let n=ue(e);if(this.iHash=t.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let s=this.blockLen,i=new Uint8Array(s);i.set(n.length>s?t.create().update(n).digest():n);for(let o=0;o<i.length;o++)i[o]^=54;this.iHash.update(i),this.oHash=t.create();for(let o=0;o<i.length;o++)i[o]^=106;this.oHash.update(i),i.fill(0)}update(t){return Zt(this),this.iHash.update(t),this}digestInto(t){Zt(this),Or(t,this.outputLen),this.finished=!0,this.iHash.digestInto(t),this.oHash.update(t),this.oHash.digestInto(t),this.destroy()}digest(){let t=new Uint8Array(this.oHash.outputLen);return this.digestInto(t),t}_cloneInto(t){t||(t=Object.create(Object.getPrototypeOf(this),{}));let{oHash:e,iHash:n,finished:s,destroyed:i,blockLen:o,outputLen:a}=this;return t=t,t.finished=s,t.destroyed=i,t.blockLen=o,t.outputLen=a,t.oHash=e._cloneInto(t.oHash),t.iHash=n._cloneInto(t.iHash),t}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},Ms=(r,t,e)=>new xn(r,t).update(e).digest();Ms.create=(r,t)=>new xn(r,t);var Go=function(r){return Ds("sha256").update(r).digest()},Ho=function(r){return Ds("sha512").update(r).digest()},Vo=Go,Qo=Ho,_o=!1,zo=!1;function pe(r){let t=R(r,"data");return b(Vo(t))}pe._=Go;pe.lock=function(){_o=!0};pe.register=function(r){if(_o)throw new Error("sha256 is locked");Vo=r};Object.freeze(pe);function Pn(r){let t=R(r,"data");return b(Qo(t))}Pn._=Ho;Pn.lock=function(){zo=!0};Pn.register=function(r){if(zo)throw new Error("sha512 is locked");Qo=r};Object.freeze(pe);var Qs={};Jc(Qs,{bitGet:()=>Ll,bitLen:()=>Ul,bitMask:()=>Ur,bitSet:()=>Dl,bytesToHex:()=>Ce,bytesToNumberBE:()=>qt,bytesToNumberLE:()=>In,concatBytes:()=>rr,createHmacDrbg:()=>Vs,ensureBytes:()=>It,equalBytes:()=>Tl,hexToBytes:()=>Oe,hexToNumber:()=>Hs,numberToBytesBE:()=>ge,numberToBytesLE:()=>vn,numberToHexUnpadded:()=>Wo,numberToVarBytesBE:()=>Ol,utf8ToBytes:()=>Sl,validateObject:()=>me});var Jo=BigInt(0),Bn=BigInt(1),kl=BigInt(2),Nn=r=>r instanceof Uint8Array,Cl=Array.from({length:256},(r,t)=>t.toString(16).padStart(2,"0"));function Ce(r){if(!Nn(r))throw new Error("Uint8Array expected");let t="";for(let e=0;e<r.length;e++)t+=Cl[r[e]];return t}function Wo(r){let t=r.toString(16);return t.length&1?`0${t}`:t}function Hs(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);return BigInt(r===""?"0":`0x${r}`)}function Oe(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);let t=r.length;if(t%2)throw new Error("padded hex string expected, got unpadded hex of length "+t);let e=new Uint8Array(t/2);for(let n=0;n<e.length;n++){let s=n*2,i=r.slice(s,s+2),o=Number.parseInt(i,16);if(Number.isNaN(o)||o<0)throw new Error("Invalid byte sequence");e[n]=o}return e}function qt(r){return Hs(Ce(r))}function In(r){if(!Nn(r))throw new Error("Uint8Array expected");return Hs(Ce(Uint8Array.from(r).reverse()))}function ge(r,t){return Oe(r.toString(16).padStart(t*2,"0"))}function vn(r,t){return ge(r,t).reverse()}function Ol(r){return Oe(Wo(r))}function It(r,t,e){let n;if(typeof t=="string")try{n=Oe(t)}catch(i){throw new Error(`${r} must be valid hex string, got "${t}". Cause: ${i}`)}else if(Nn(t))n=Uint8Array.from(t);else throw new Error(`${r} must be hex string or Uint8Array`);let s=n.length;if(typeof e=="number"&&s!==e)throw new Error(`${r} expected ${e} bytes, got ${s}`);return n}function rr(...r){let t=new Uint8Array(r.reduce((n,s)=>n+s.length,0)),e=0;return r.forEach(n=>{if(!Nn(n))throw new Error("Uint8Array expected");t.set(n,e),e+=n.length}),t}function Tl(r,t){if(r.length!==t.length)return!1;for(let e=0;e<r.length;e++)if(r[e]!==t[e])return!1;return!0}function Sl(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function Ul(r){let t;for(t=0;r>Jo;r>>=Bn,t+=1);return t}function Ll(r,t){return r>>BigInt(t)&Bn}var Dl=(r,t,e)=>r|(e?Bn:Jo)<<BigInt(t),Ur=r=>(kl<<BigInt(r-1))-Bn,Gs=r=>new Uint8Array(r),Ko=r=>Uint8Array.from(r);function Vs(r,t,e){if(typeof r!="number"||r<2)throw new Error("hashLen must be a number");if(typeof t!="number"||t<2)throw new Error("qByteLen must be a number");if(typeof e!="function")throw new Error("hmacFn must be a function");let n=Gs(r),s=Gs(r),i=0,o=()=>{n.fill(1),s.fill(0),i=0},a=(...f)=>e(s,n,...f),c=(f=Gs())=>{s=a(Ko([0]),f),n=a(),f.length!==0&&(s=a(Ko([1]),f),n=a())},l=()=>{if(i++>=1e3)throw new Error("drbg: tried 1000 values");let f=0,d=[];for(;f<t;){n=a();let g=n.slice();d.push(g),f+=n.length}return rr(...d)};return(f,d)=>{o(),c(f);let g;for(;!(g=d(l()));)c();return o(),g}}var Fl={bigint:r=>typeof r=="bigint",function:r=>typeof r=="function",boolean:r=>typeof r=="boolean",string:r=>typeof r=="string",stringOrUint8Array:r=>typeof r=="string"||r instanceof Uint8Array,isSafeInteger:r=>Number.isSafeInteger(r),array:r=>Array.isArray(r),field:(r,t)=>t.Fp.isValid(r),hash:r=>typeof r=="function"&&Number.isSafeInteger(r.outputLen)};function me(r,t,e={}){let n=(s,i,o)=>{let a=Fl[i];if(typeof a!="function")throw new Error(`Invalid validator "${i}", expected function`);let c=r[s];if(!(o&&c===void 0)&&!a(c,r))throw new Error(`Invalid param ${String(s)}=${c} (${typeof c}), expected ${i}`)};for(let[s,i]of Object.entries(t))n(s,i,!1);for(let[s,i]of Object.entries(e))n(s,i,!0);return r}var ct=BigInt(0),et=BigInt(1),Te=BigInt(2),Ml=BigInt(3),_s=BigInt(4),jo=BigInt(5),Zo=BigInt(8),Gl=BigInt(9),Hl=BigInt(16);function gt(r,t){let e=r%t;return e>=ct?e:t+e}function Vl(r,t,e){if(e<=ct||t<ct)throw new Error("Expected power/modulo > 0");if(e===et)return ct;let n=et;for(;t>ct;)t&et&&(n=n*r%e),r=r*r%e,t>>=et;return n}function vt(r,t,e){let n=r;for(;t-- >ct;)n*=n,n%=e;return n}function Rn(r,t){if(r===ct||t<=ct)throw new Error(`invert: expected positive integers, got n=${r} mod=${t}`);let e=gt(r,t),n=t,s=ct,i=et,o=et,a=ct;for(;e!==ct;){let l=n/e,u=n%e,f=s-o*l,d=i-a*l;n=e,e=u,s=o,i=a,o=f,a=d}if(n!==et)throw new Error("invert: does not exist");return gt(s,t)}function Ql(r){let t=(r-et)/Te,e,n,s;for(e=r-et,n=0;e%Te===ct;e/=Te,n++);for(s=Te;s<r&&Vl(s,t,r)!==r-et;s++);if(n===1){let o=(r+et)/_s;return function(c,l){let u=c.pow(l,o);if(!c.eql(c.sqr(u),l))throw new Error("Cannot find square root");return u}}let i=(e+et)/Te;return function(a,c){if(a.pow(c,t)===a.neg(a.ONE))throw new Error("Cannot find square root");let l=n,u=a.pow(a.mul(a.ONE,s),e),f=a.pow(c,i),d=a.pow(c,e);for(;!a.eql(d,a.ONE);){if(a.eql(d,a.ZERO))return a.ZERO;let g=1;for(let p=a.sqr(d);g<l&&!a.eql(p,a.ONE);g++)p=a.sqr(p);let m=a.pow(u,et<<BigInt(l-g-1));u=a.sqr(m),f=a.mul(f,m),d=a.mul(d,u),l=g}return f}}function _l(r){if(r%_s===Ml){let t=(r+et)/_s;return function(n,s){let i=n.pow(s,t);if(!n.eql(n.sqr(i),s))throw new Error("Cannot find square root");return i}}if(r%Zo===jo){let t=(r-jo)/Zo;return function(n,s){let i=n.mul(s,Te),o=n.pow(i,t),a=n.mul(s,o),c=n.mul(n.mul(a,Te),o),l=n.mul(a,n.sub(c,n.ONE));if(!n.eql(n.sqr(l),s))throw new Error("Cannot find square root");return l}}return r%Hl,Ql(r)}var zl=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function zs(r){let t={ORDER:"bigint",MASK:"bigint",BYTES:"isSafeInteger",BITS:"isSafeInteger"},e=zl.reduce((n,s)=>(n[s]="function",n),t);return me(r,e)}function Kl(r,t,e){if(e<ct)throw new Error("Expected power > 0");if(e===ct)return r.ONE;if(e===et)return t;let n=r.ONE,s=t;for(;e>ct;)e&et&&(n=r.mul(n,s)),s=r.sqr(s),e>>=et;return n}function Jl(r,t){let e=new Array(t.length),n=t.reduce((i,o,a)=>r.is0(o)?i:(e[a]=i,r.mul(i,o)),r.ONE),s=r.inv(n);return t.reduceRight((i,o,a)=>r.is0(o)?i:(e[a]=r.mul(i,e[a]),r.mul(i,o)),s),e}function Ks(r,t){let e=t!==void 0?t:r.toString(2).length,n=Math.ceil(e/8);return{nBitLength:e,nByteLength:n}}function qo(r,t,e=!1,n={}){if(r<=ct)throw new Error(`Expected Field ORDER > 0, got ${r}`);let{nBitLength:s,nByteLength:i}=Ks(r,t);if(i>2048)throw new Error("Field lengths over 2048 bytes are not supported");let o=_l(r),a=Object.freeze({ORDER:r,BITS:s,BYTES:i,MASK:Ur(s),ZERO:ct,ONE:et,create:c=>gt(c,r),isValid:c=>{if(typeof c!="bigint")throw new Error(`Invalid field element: expected bigint, got ${typeof c}`);return ct<=c&&c<r},is0:c=>c===ct,isOdd:c=>(c&et)===et,neg:c=>gt(-c,r),eql:(c,l)=>c===l,sqr:c=>gt(c*c,r),add:(c,l)=>gt(c+l,r),sub:(c,l)=>gt(c-l,r),mul:(c,l)=>gt(c*l,r),pow:(c,l)=>Kl(a,c,l),div:(c,l)=>gt(c*Rn(l,r),r),sqrN:c=>c*c,addN:(c,l)=>c+l,subN:(c,l)=>c-l,mulN:(c,l)=>c*l,inv:c=>Rn(c,r),sqrt:n.sqrt||(c=>o(a,c)),invertBatch:c=>Jl(a,c),cmov:(c,l,u)=>u?l:c,toBytes:c=>e?vn(c,i):ge(c,i),fromBytes:c=>{if(c.length!==i)throw new Error(`Fp.fromBytes: expected ${i}, got ${c.length}`);return e?In(c):qt(c)}});return Object.freeze(a)}function Yo(r){if(typeof r!="bigint")throw new Error("field order must be bigint");let t=r.toString(2).length;return Math.ceil(t/8)}function Js(r){let t=Yo(r);return t+Math.ceil(t/2)}function Xo(r,t,e=!1){let n=r.length,s=Yo(t),i=Js(t);if(n<16||n<i||n>1024)throw new Error(`expected ${i}-1024 bytes of input, got ${n}`);let o=e?qt(r):In(r),a=gt(o,t-et)+et;return e?vn(a,s):ge(a,s)}var jl=BigInt(0),Ws=BigInt(1);function $o(r,t){let e=(s,i)=>{let o=i.negate();return s?o:i},n=s=>{let i=Math.ceil(t/s)+1,o=2**(s-1);return{windows:i,windowSize:o}};return{constTimeNegate:e,unsafeLadder(s,i){let o=r.ZERO,a=s;for(;i>jl;)i&Ws&&(o=o.add(a)),a=a.double(),i>>=Ws;return o},precomputeWindow(s,i){let{windows:o,windowSize:a}=n(i),c=[],l=s,u=l;for(let f=0;f<o;f++){u=l,c.push(u);for(let d=1;d<a;d++)u=u.add(l),c.push(u);l=u.double()}return c},wNAF(s,i,o){let{windows:a,windowSize:c}=n(s),l=r.ZERO,u=r.BASE,f=BigInt(2**s-1),d=2**s,g=BigInt(s);for(let m=0;m<a;m++){let p=m*c,y=Number(o&f);o>>=g,y>c&&(y-=d,o+=Ws);let A=p,E=p+Math.abs(y)-1,P=m%2!==0,C=y<0;y===0?u=u.add(e(P,i[A])):l=l.add(e(C,i[E]))}return{p:l,f:u}},wNAFCached(s,i,o,a){let c=s._WINDOW_SIZE||1,l=i.get(s);return l||(l=this.precomputeWindow(s,c),c!==1&&i.set(s,a(l))),this.wNAF(c,l,o)}}}function js(r){return zs(r.Fp),me(r,{n:"bigint",h:"bigint",Gx:"field",Gy:"field"},{nBitLength:"isSafeInteger",nByteLength:"isSafeInteger"}),Object.freeze({...Ks(r.n,r.nBitLength),...r,p:r.Fp.ORDER})}function Zl(r){let t=js(r);me(t,{a:"field",b:"field"},{allowedPrivateKeyLengths:"array",wrapPrivateKey:"boolean",isTorsionFree:"function",clearCofactor:"function",allowInfinityPoint:"boolean",fromBytes:"function",toBytes:"function"});let{endo:e,Fp:n,a:s}=t;if(e){if(!n.eql(s,n.ZERO))throw new Error("Endomorphism can only be defined for Koblitz curves that have a=0");if(typeof e!="object"||typeof e.beta!="bigint"||typeof e.splitScalar!="function")throw new Error("Expected endomorphism with beta: bigint and splitScalar: function")}return Object.freeze({...t})}var{bytesToNumberBE:ql,hexToBytes:Yl}=Qs,Se={Err:class extends Error{constructor(t=""){super(t)}},_parseInt(r){let{Err:t}=Se;if(r.length<2||r[0]!==2)throw new t("Invalid signature integer tag");let e=r[1],n=r.subarray(2,e+2);if(!e||n.length!==e)throw new t("Invalid signature integer: wrong length");if(n[0]&128)throw new t("Invalid signature integer: negative");if(n[0]===0&&!(n[1]&128))throw new t("Invalid signature integer: unnecessary leading zero");return{d:ql(n),l:r.subarray(e+2)}},toSig(r){let{Err:t}=Se,e=typeof r=="string"?Yl(r):r;if(!(e instanceof Uint8Array))throw new Error("ui8a expected");let n=e.length;if(n<2||e[0]!=48)throw new t("Invalid signature tag");if(e[1]!==n-2)throw new t("Invalid signature: incorrect length");let{d:s,l:i}=Se._parseInt(e.subarray(2)),{d:o,l:a}=Se._parseInt(i);if(a.length)throw new t("Invalid signature: left bytes after parsing");return{r:s,s:o}},hexFromSig(r){let t=l=>Number.parseInt(l[0],16)&8?"00"+l:l,e=l=>{let u=l.toString(16);return u.length&1?`0${u}`:u},n=t(e(r.s)),s=t(e(r.r)),i=n.length/2,o=s.length/2,a=e(i),c=e(o);return`30${e(o+i+4)}02${c}${s}02${a}${n}`}},Yt=BigInt(0),Ut=BigInt(1),dg=BigInt(2),ta=BigInt(3),pg=BigInt(4);function Xl(r){let t=Zl(r),{Fp:e}=t,n=t.toBytes||((m,p,y)=>{let A=p.toAffine();return rr(Uint8Array.from([4]),e.toBytes(A.x),e.toBytes(A.y))}),s=t.fromBytes||(m=>{let p=m.subarray(1),y=e.fromBytes(p.subarray(0,e.BYTES)),A=e.fromBytes(p.subarray(e.BYTES,2*e.BYTES));return{x:y,y:A}});function i(m){let{a:p,b:y}=t,A=e.sqr(m),E=e.mul(A,m);return e.add(e.add(E,e.mul(m,p)),y)}if(!e.eql(e.sqr(t.Gy),i(t.Gx)))throw new Error("bad generator point: equation left != right");function o(m){return typeof m=="bigint"&&Yt<m&&m<t.n}function a(m){if(!o(m))throw new Error("Expected valid bigint: 0 < bigint < curve.n")}function c(m){let{allowedPrivateKeyLengths:p,nByteLength:y,wrapPrivateKey:A,n:E}=t;if(p&&typeof m!="bigint"){if(m instanceof Uint8Array&&(m=Ce(m)),typeof m!="string"||!p.includes(m.length))throw new Error("Invalid key");m=m.padStart(y*2,"0")}let P;try{P=typeof m=="bigint"?m:qt(It("private key",m,y))}catch{throw new Error(`private key must be ${y} bytes, hex or bigint, not ${typeof m}`)}return A&&(P=gt(P,E)),a(P),P}let l=new Map;function u(m){if(!(m instanceof f))throw new Error("ProjectivePoint expected")}class f{constructor(p,y,A){if(this.px=p,this.py=y,this.pz=A,p==null||!e.isValid(p))throw new Error("x required");if(y==null||!e.isValid(y))throw new Error("y required");if(A==null||!e.isValid(A))throw new Error("z required")}static fromAffine(p){let{x:y,y:A}=p||{};if(!p||!e.isValid(y)||!e.isValid(A))throw new Error("invalid affine point");if(p instanceof f)throw new Error("projective point not allowed");let E=P=>e.eql(P,e.ZERO);return E(y)&&E(A)?f.ZERO:new f(y,A,e.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(p){let y=e.invertBatch(p.map(A=>A.pz));return p.map((A,E)=>A.toAffine(y[E])).map(f.fromAffine)}static fromHex(p){let y=f.fromAffine(s(It("pointHex",p)));return y.assertValidity(),y}static fromPrivateKey(p){return f.BASE.multiply(c(p))}_setWindowSize(p){this._WINDOW_SIZE=p,l.delete(this)}assertValidity(){if(this.is0()){if(t.allowInfinityPoint&&!e.is0(this.py))return;throw new Error("bad point: ZERO")}let{x:p,y}=this.toAffine();if(!e.isValid(p)||!e.isValid(y))throw new Error("bad point: x or y not FE");let A=e.sqr(y),E=i(p);if(!e.eql(A,E))throw new Error("bad point: equation left != right");if(!this.isTorsionFree())throw new Error("bad point: not in prime-order subgroup")}hasEvenY(){let{y:p}=this.toAffine();if(e.isOdd)return!e.isOdd(p);throw new Error("Field doesn't support isOdd")}equals(p){u(p);let{px:y,py:A,pz:E}=this,{px:P,py:C,pz:O}=p,k=e.eql(e.mul(y,O),e.mul(P,E)),S=e.eql(e.mul(A,O),e.mul(C,E));return k&&S}negate(){return new f(this.px,e.neg(this.py),this.pz)}double(){let{a:p,b:y}=t,A=e.mul(y,ta),{px:E,py:P,pz:C}=this,O=e.ZERO,k=e.ZERO,S=e.ZERO,U=e.mul(E,E),it=e.mul(P,P),K=e.mul(C,C),_=e.mul(E,P);return _=e.add(_,_),S=e.mul(E,C),S=e.add(S,S),O=e.mul(p,S),k=e.mul(A,K),k=e.add(O,k),O=e.sub(it,k),k=e.add(it,k),k=e.mul(O,k),O=e.mul(_,O),S=e.mul(A,S),K=e.mul(p,K),_=e.sub(U,K),_=e.mul(p,_),_=e.add(_,S),S=e.add(U,U),U=e.add(S,U),U=e.add(U,K),U=e.mul(U,_),k=e.add(k,U),K=e.mul(P,C),K=e.add(K,K),U=e.mul(K,_),O=e.sub(O,U),S=e.mul(K,it),S=e.add(S,S),S=e.add(S,S),new f(O,k,S)}add(p){u(p);let{px:y,py:A,pz:E}=this,{px:P,py:C,pz:O}=p,k=e.ZERO,S=e.ZERO,U=e.ZERO,it=t.a,K=e.mul(t.b,ta),_=e.mul(y,P),xt=e.mul(A,C),Pt=e.mul(E,O),re=e.add(y,A),B=e.add(P,C);re=e.mul(re,B),B=e.add(_,xt),re=e.sub(re,B),B=e.add(y,E);let v=e.add(P,O);return B=e.mul(B,v),v=e.add(_,Pt),B=e.sub(B,v),v=e.add(A,E),k=e.add(C,O),v=e.mul(v,k),k=e.add(xt,Pt),v=e.sub(v,k),U=e.mul(it,B),k=e.mul(K,Pt),U=e.add(k,U),k=e.sub(xt,U),U=e.add(xt,U),S=e.mul(k,U),xt=e.add(_,_),xt=e.add(xt,_),Pt=e.mul(it,Pt),B=e.mul(K,B),xt=e.add(xt,Pt),Pt=e.sub(_,Pt),Pt=e.mul(it,Pt),B=e.add(B,Pt),_=e.mul(xt,B),S=e.add(S,_),_=e.mul(v,B),k=e.mul(re,k),k=e.sub(k,_),_=e.mul(re,xt),U=e.mul(v,U),U=e.add(U,_),new f(k,S,U)}subtract(p){return this.add(p.negate())}is0(){return this.equals(f.ZERO)}wNAF(p){return g.wNAFCached(this,l,p,y=>{let A=e.invertBatch(y.map(E=>E.pz));return y.map((E,P)=>E.toAffine(A[P])).map(f.fromAffine)})}multiplyUnsafe(p){let y=f.ZERO;if(p===Yt)return y;if(a(p),p===Ut)return this;let{endo:A}=t;if(!A)return g.unsafeLadder(this,p);let{k1neg:E,k1:P,k2neg:C,k2:O}=A.splitScalar(p),k=y,S=y,U=this;for(;P>Yt||O>Yt;)P&Ut&&(k=k.add(U)),O&Ut&&(S=S.add(U)),U=U.double(),P>>=Ut,O>>=Ut;return E&&(k=k.negate()),C&&(S=S.negate()),S=new f(e.mul(S.px,A.beta),S.py,S.pz),k.add(S)}multiply(p){a(p);let y=p,A,E,{endo:P}=t;if(P){let{k1neg:C,k1:O,k2neg:k,k2:S}=P.splitScalar(y),{p:U,f:it}=this.wNAF(O),{p:K,f:_}=this.wNAF(S);U=g.constTimeNegate(C,U),K=g.constTimeNegate(k,K),K=new f(e.mul(K.px,P.beta),K.py,K.pz),A=U.add(K),E=it.add(_)}else{let{p:C,f:O}=this.wNAF(y);A=C,E=O}return f.normalizeZ([A,E])[0]}multiplyAndAddUnsafe(p,y,A){let E=f.BASE,P=(O,k)=>k===Yt||k===Ut||!O.equals(E)?O.multiplyUnsafe(k):O.multiply(k),C=P(this,y).add(P(p,A));return C.is0()?void 0:C}toAffine(p){let{px:y,py:A,pz:E}=this,P=this.is0();p==null&&(p=P?e.ONE:e.inv(E));let C=e.mul(y,p),O=e.mul(A,p),k=e.mul(E,p);if(P)return{x:e.ZERO,y:e.ZERO};if(!e.eql(k,e.ONE))throw new Error("invZ was invalid");return{x:C,y:O}}isTorsionFree(){let{h:p,isTorsionFree:y}=t;if(p===Ut)return!0;if(y)return y(f,this);throw new Error("isTorsionFree() has not been declared for the elliptic curve")}clearCofactor(){let{h:p,clearCofactor:y}=t;return p===Ut?this:y?y(f,this):this.multiplyUnsafe(t.h)}toRawBytes(p=!0){return this.assertValidity(),n(f,this,p)}toHex(p=!0){return Ce(this.toRawBytes(p))}}f.BASE=new f(t.Gx,t.Gy,e.ONE),f.ZERO=new f(e.ZERO,e.ONE,e.ZERO);let d=t.nBitLength,g=$o(f,t.endo?Math.ceil(d/2):d);return{CURVE:t,ProjectivePoint:f,normPrivateKeyToScalar:c,weierstrassEquation:i,isWithinCurveOrder:o}}function $l(r){let t=js(r);return me(t,{hash:"hash",hmac:"function",randomBytes:"function"},{bits2int:"function",bits2int_modN:"function",lowS:"boolean"}),Object.freeze({lowS:!0,...t})}function ea(r){let t=$l(r),{Fp:e,n}=t,s=e.BYTES+1,i=2*e.BYTES+1;function o(B){return Yt<B&&B<e.ORDER}function a(B){return gt(B,n)}function c(B){return Rn(B,n)}let{ProjectivePoint:l,normPrivateKeyToScalar:u,weierstrassEquation:f,isWithinCurveOrder:d}=Xl({...t,toBytes(B,v,D){let q=v.toAffine(),W=e.toBytes(q.x),ft=rr;return D?ft(Uint8Array.from([v.hasEvenY()?2:3]),W):ft(Uint8Array.from([4]),W,e.toBytes(q.y))},fromBytes(B){let v=B.length,D=B[0],q=B.subarray(1);if(v===s&&(D===2||D===3)){let W=qt(q);if(!o(W))throw new Error("Point is not on curve");let ft=f(W),Bt=e.sqrt(ft),Nt=(Bt&Ut)===Ut;return(D&1)===1!==Nt&&(Bt=e.neg(Bt)),{x:W,y:Bt}}else if(v===i&&D===4){let W=e.fromBytes(q.subarray(0,e.BYTES)),ft=e.fromBytes(q.subarray(e.BYTES,2*e.BYTES));return{x:W,y:ft}}else throw new Error(`Point of length ${v} was invalid. Expected ${s} compressed bytes or ${i} uncompressed bytes`)}}),g=B=>Ce(ge(B,t.nByteLength));function m(B){let v=n>>Ut;return B>v}function p(B){return m(B)?a(-B):B}let y=(B,v,D)=>qt(B.slice(v,D));class A{constructor(v,D,q){this.r=v,this.s=D,this.recovery=q,this.assertValidity()}static fromCompact(v){let D=t.nByteLength;return v=It("compactSignature",v,D*2),new A(y(v,0,D),y(v,D,2*D))}static fromDER(v){let{r:D,s:q}=Se.toSig(It("DER",v));return new A(D,q)}assertValidity(){if(!d(this.r))throw new Error("r must be 0 < r < CURVE.n");if(!d(this.s))throw new Error("s must be 0 < s < CURVE.n")}addRecoveryBit(v){return new A(this.r,this.s,v)}recoverPublicKey(v){let{r:D,s:q,recovery:W}=this,ft=S(It("msgHash",v));if(W==null||![0,1,2,3].includes(W))throw new Error("recovery id invalid");let Bt=W===2||W===3?D+t.n:D;if(Bt>=e.ORDER)throw new Error("recovery id 2 or 3 invalid");let Nt=(W&1)===0?"02":"03",ne=l.fromHex(Nt+g(Bt)),se=c(Bt),Ze=a(-ft*se),Br=a(q*se),ie=l.BASE.multiplyAndAddUnsafe(ne,Ze,Br);if(!ie)throw new Error("point at infinify");return ie.assertValidity(),ie}hasHighS(){return m(this.s)}normalizeS(){return this.hasHighS()?new A(this.r,a(-this.s),this.recovery):this}toDERRawBytes(){return Oe(this.toDERHex())}toDERHex(){return Se.hexFromSig({r:this.r,s:this.s})}toCompactRawBytes(){return Oe(this.toCompactHex())}toCompactHex(){return g(this.r)+g(this.s)}}let E={isValidPrivateKey(B){try{return u(B),!0}catch{return!1}},normPrivateKeyToScalar:u,randomPrivateKey:()=>{let B=Js(t.n);return Xo(t.randomBytes(B),t.n)},precompute(B=8,v=l.BASE){return v._setWindowSize(B),v.multiply(BigInt(3)),v}};function P(B,v=!0){return l.fromPrivateKey(B).toRawBytes(v)}function C(B){let v=B instanceof Uint8Array,D=typeof B=="string",q=(v||D)&&B.length;return v?q===s||q===i:D?q===2*s||q===2*i:B instanceof l}function O(B,v,D=!0){if(C(B))throw new Error("first arg must be private key");if(!C(v))throw new Error("second arg must be public key");return l.fromHex(v).multiply(u(B)).toRawBytes(D)}let k=t.bits2int||function(B){let v=qt(B),D=B.length*8-t.nBitLength;return D>0?v>>BigInt(D):v},S=t.bits2int_modN||function(B){return a(k(B))},U=Ur(t.nBitLength);function it(B){if(typeof B!="bigint")throw new Error("bigint expected");if(!(Yt<=B&&B<U))throw new Error(`bigint expected < 2^${t.nBitLength}`);return ge(B,t.nByteLength)}function K(B,v,D=_){if(["recovered","canonical"].some(Pe=>Pe in D))throw new Error("sign() legacy options not supported");let{hash:q,randomBytes:W}=t,{lowS:ft,prehash:Bt,extraEntropy:Nt}=D;ft==null&&(ft=!0),B=It("msgHash",B),Bt&&(B=It("prehashed msgHash",q(B)));let ne=S(B),se=u(v),Ze=[it(se),it(ne)];if(Nt!=null){let Pe=Nt===!0?W(e.BYTES):Nt;Ze.push(It("extraEntropy",Pe))}let Br=rr(...Ze),ie=ne;function Ps(Pe){let qe=k(Pe);if(!d(qe))return;let Li=c(qe),_t=l.BASE.multiply(qe).toAffine(),Ye=a(_t.x);if(Ye===Yt)return;let nn=a(Li*a(ie+Ye*se));if(nn===Yt)return;let Di=(_t.x===Ye?0:2)|Number(_t.y&Ut),Fi=nn;return ft&&m(nn)&&(Fi=p(nn),Di^=1),new A(Ye,Fi,Di)}return{seed:Br,k2sig:Ps}}let _={lowS:t.lowS,prehash:!1},xt={lowS:t.lowS,prehash:!1};function Pt(B,v,D=_){let{seed:q,k2sig:W}=K(B,v,D),ft=t;return Vs(ft.hash.outputLen,ft.nByteLength,ft.hmac)(q,W)}l.BASE._setWindowSize(8);function re(B,v,D,q=xt){let W=B;if(v=It("msgHash",v),D=It("publicKey",D),"strict"in q)throw new Error("options.strict was renamed to lowS");let{lowS:ft,prehash:Bt}=q,Nt,ne;try{if(typeof W=="string"||W instanceof Uint8Array)try{Nt=A.fromDER(W)}catch(_t){if(!(_t instanceof Se.Err))throw _t;Nt=A.fromCompact(W)}else if(typeof W=="object"&&typeof W.r=="bigint"&&typeof W.s=="bigint"){let{r:_t,s:Ye}=W;Nt=new A(_t,Ye)}else throw new Error("PARSE");ne=l.fromHex(D)}catch(_t){if(_t.message==="PARSE")throw new Error("signature must be Signature instance, Uint8Array or hex string");return!1}if(ft&&Nt.hasHighS())return!1;Bt&&(v=t.hash(v));let{r:se,s:Ze}=Nt,Br=S(v),ie=c(Ze),Ps=a(Br*ie),Pe=a(se*ie),qe=l.BASE.multiplyAndAddUnsafe(ne,Ps,Pe)?.toAffine();return qe?a(qe.x)===se:!1}return{CURVE:t,getPublicKey:P,getSharedSecret:O,sign:Pt,verify:re,ProjectivePoint:l,Signature:A,utils:E}}function tu(r){return{hash:r,hmac:(t,...e)=>Ms(r,t,No(...e)),randomBytes:vo}}function ra(r,t){let e=n=>ea({...r,...tu(n)});return Object.freeze({...e(t),create:e})}var ia=BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),na=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),eu=BigInt(1),Zs=BigInt(2),sa=(r,t)=>(r+t/Zs)/t;function ru(r){let t=ia,e=BigInt(3),n=BigInt(6),s=BigInt(11),i=BigInt(22),o=BigInt(23),a=BigInt(44),c=BigInt(88),l=r*r*r%t,u=l*l*r%t,f=vt(u,e,t)*u%t,d=vt(f,e,t)*u%t,g=vt(d,Zs,t)*l%t,m=vt(g,s,t)*g%t,p=vt(m,i,t)*m%t,y=vt(p,a,t)*p%t,A=vt(y,c,t)*y%t,E=vt(A,a,t)*p%t,P=vt(E,e,t)*u%t,C=vt(P,o,t)*m%t,O=vt(C,n,t)*l%t,k=vt(O,Zs,t);if(!qs.eql(qs.sqr(k),r))throw new Error("Cannot find square root");return k}var qs=qo(ia,void 0,void 0,{sqrt:ru}),Xt=ra({a:BigInt(0),b:BigInt(7),Fp:qs,n:na,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),h:BigInt(1),lowS:!0,endo:{beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar:r=>{let t=na,e=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),n=-eu*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),s=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),i=e,o=BigInt("0x100000000000000000000000000000000"),a=sa(i*r,t),c=sa(-n*r,t),l=gt(r-a*e-c*s,t),u=gt(-a*n-c*i,t),f=l>o,d=u>o;if(f&&(l=t-l),d&&(u=t-u),l>o||u>o)throw new Error("splitScalar: Endomorphism failed, k="+r);return{k1neg:f,k1:l,k2neg:d,k2:u}}}},Mo),Pg=BigInt(0);var Bg=Xt.ProjectivePoint;var $t="0x0000000000000000000000000000000000000000";var kn="0x0000000000000000000000000000000000000000000000000000000000000000";var oa=BigInt(0),aa=BigInt(1),Xs=BigInt(2),ca=BigInt(27),la=BigInt(28),Cn=BigInt(35),ua=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),nu=ua/Xs,su=Symbol.for("nodejs.util.inspect.custom"),Ue={};function Ys(r){return mt(X(r),32)}var lt=class r{#t;#e;#r;#n;get r(){return this.#t}set r(t){h(Kt(t)===32,"invalid r","value",t),this.#t=b(t)}get s(){return h(parseInt(this.#e.substring(0,3))<8,"non-canonical s; use ._s","s",this.#e),this.#e}set s(t){h(Kt(t)===32,"invalid s","value",t),this.#e=b(t)}get _s(){return this.#e}isValid(){return BigInt(this.#e)<=nu}get v(){return this.#r}set v(t){let e=T(t,"value");h(e===27||e===28,"invalid v","v",t),this.#r=e}get networkV(){return this.#n}get legacyChainId(){let t=this.networkV;return t==null?null:r.getChainId(t)}get yParity(){return this.v===27?0:1}get yParityAndS(){let t=R(this.s);return this.yParity&&(t[0]|=128),b(t)}get compactSerialized(){return H([this.r,this.yParityAndS])}get serialized(){return H([this.r,this.s,this.yParity?"0x1c":"0x1b"])}constructor(t,e,n,s){oe(t,Ue,"Signature"),this.#t=e,this.#e=n,this.#r=s,this.#n=null}getCanonical(){if(this.isValid())return this;let t=ua-BigInt(this._s),e=55-this.v,n=new r(Ue,this.r,Ys(t),e);return this.networkV&&(n.#n=this.networkV),n}clone(){let t=new r(Ue,this.r,this._s,this.v);return this.networkV&&(t.#n=this.networkV),t}toJSON(){let t=this.networkV;return{_type:"signature",networkV:t!=null?t.toString():null,r:this.r,s:this._s,v:this.v}}[su](){return this.toString()}toString(){return this.isValid()?`Signature { r: ${this.r}, s: ${this._s}, v: ${this.v} }`:`Signature { r: ${this.r}, s: ${this._s}, v: ${this.v}, valid: false }`}static getChainId(t){let e=x(t,"v");return e==ca||e==la?oa:(h(e>=Cn,"invalid EIP-155 v","v",t),(e-Cn)/Xs)}static getChainIdV(t,e){return x(t)*Xs+BigInt(35+e-27)}static getNormalizedV(t){let e=x(t);return e===oa||e===ca?27:e===aa||e===la?28:(h(e>=Cn,"invalid v","v",t),e&aa?27:28)}static from(t){function e(l,u){h(l,u,"signature",t)}if(t==null)return new r(Ue,kn,kn,27);if(typeof t=="string"){let l=R(t,"signature");if(l.length===64){let u=b(l.slice(0,32)),f=l.slice(32,64),d=f[0]&128?28:27;return f[0]&=127,new r(Ue,u,b(f),d)}if(l.length===65){let u=b(l.slice(0,32)),f=b(l.slice(32,64)),d=r.getNormalizedV(l[64]);return new r(Ue,u,f,d)}e(!1,"invalid raw signature length")}if(t instanceof r)return t.clone();let n=t.r;e(n!=null,"missing r");let s=Ys(n),i=(function(l,u){if(l!=null)return Ys(l);if(u!=null){e(F(u,32),"invalid yParityAndS");let f=R(u);return f[0]&=127,b(f)}e(!1,"missing s")})(t.s,t.yParityAndS),{networkV:o,v:a}=(function(l,u,f){if(l!=null){let d=x(l);return{networkV:d>=Cn?d:void 0,v:r.getNormalizedV(d)}}if(u!=null)return e(F(u,32),"invalid yParityAndS"),{v:R(u)[0]&128?28:27};if(f!=null){switch(T(f,"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),c=new r(Ue,s,i,a);return o&&(c.#n=o),e(t.yParity==null||T(t.yParity,"sig.yParity")===c.yParity,"yParity mismatch"),e(t.yParityAndS==null||t.yParityAndS===c.yParityAndS,"yParityAndS mismatch"),c}};var ye=class r{#t;constructor(t){h(Kt(t)===32,"invalid private key","privateKey","[REDACTED]"),this.#t=b(t)}get privateKey(){return this.#t}get publicKey(){return r.computePublicKey(this.#t)}get compressedPublicKey(){return r.computePublicKey(this.#t,!0)}sign(t){h(Kt(t)===32,"invalid digest length","digest",t);let e=Xt.sign($(t),$(this.#t),{lowS:!0});return lt.from({r:bt(e.r,32),s:bt(e.s,32),v:e.recovery?28:27})}computeSharedSecret(t){let e=r.computePublicKey(t);return b(Xt.getSharedSecret($(this.#t),R(e),!1))}static computePublicKey(t,e){let n=R(t,"key");if(n.length===32){let i=Xt.getPublicKey(n,!!e);return b(i)}if(n.length===64){let i=new Uint8Array(65);i[0]=4,i.set(n,1),n=i}let s=Xt.ProjectivePoint.fromHex(n);return b(s.toRawBytes(e))}static recoverPublicKey(t,e){h(Kt(t)===32,"invalid digest length","digest",t);let n=lt.from(e),s=Xt.Signature.fromCompact($(H([n.r,n.s])));s=s.addRecoveryBit(n.yParity);let i=s.recoverPublicKey($(t));return h(i!=null,"invalid signature for digest","signature",e),"0x"+i.toHex(!1)}static addPoints(t,e,n){let s=Xt.ProjectivePoint.fromHex(r.computePublicKey(t).substring(2)),i=Xt.ProjectivePoint.fromHex(r.computePublicKey(e).substring(2));return"0x"+s.add(i).toHex(!!n)}};var iu=BigInt(0),ou=BigInt(36);function fa(r){r=r.toLowerCase();let t=r.substring(2).split(""),e=new Uint8Array(40);for(let s=0;s<40;s++)e[s]=t[s].charCodeAt(0);let n=R(z(e));for(let s=0;s<40;s+=2)n[s>>1]>>4>=8&&(t[s]=t[s].toUpperCase()),(n[s>>1]&15)>=8&&(t[s+1]=t[s+1].toUpperCase());return"0x"+t.join("")}var $s={};for(let r=0;r<10;r++)$s[String(r)]=String(r);for(let r=0;r<26;r++)$s[String.fromCharCode(65+r)]=String(10+r);var ha=15;function au(r){r=r.toUpperCase(),r=r.substring(4)+r.substring(0,2)+"00";let t=r.split("").map(n=>$s[n]).join("");for(;t.length>=ha;){let n=t.substring(0,ha);t=parseInt(n,10)%97+t.substring(n.length)}let e=String(98-parseInt(t,10)%97);for(;e.length<2;)e="0"+e;return e}var cu=(function(){let r={};for(let t=0;t<36;t++){let e="0123456789abcdefghijklmnopqrstuvwxyz"[t];r[e]=BigInt(t)}return r})();function lu(r){r=r.toLowerCase();let t=iu;for(let e=0;e<r.length;e++)t=t*ou+cu[r[e]];return t}function L(r){if(h(typeof r=="string","invalid address","address",r),r.match(/^(0x)?[0-9a-fA-F]{40}$/)){r.startsWith("0x")||(r="0x"+r);let t=fa(r);return h(!r.match(/([A-F].*[a-f])|([a-f].*[A-F])/)||t===r,"bad address checksum","address",r),t}if(r.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)){h(r.substring(2,4)===au(r),"bad icap checksum","address",r);let t=lu(r.substring(4)).toString(16);for(;t.length<40;)t="0"+t;return fa("0x"+t)}h(!1,"invalid address","address",r)}function ti(r){let t=L(r.from),n=x(r.nonce,"tx.nonce").toString(16);return n==="0"?n="0x":n.length%2?n="0x0"+n:n="0x"+n,L(j(z(St([t,n])),12))}function On(r){return r&&typeof r.getAddress=="function"}async function ei(r,t){let e=await t;return(e==null||e==="0x0000000000000000000000000000000000000000")&&(w(typeof r!="string","unconfigured name","UNCONFIGURED_NAME",{value:r}),h(!1,"invalid AddressLike value; did not resolve to a value address","target",r)),L(e)}function at(r,t){if(typeof r=="string")return r.match(/^0x[0-9a-f]{40}$/i)?L(r):(w(t!=null,"ENS resolution requires a provider","UNSUPPORTED_OPERATION",{operation:"resolveName"}),ei(r,t.resolveName(r)));if(On(r))return ei(r,r.getAddress());if(r&&typeof r.then=="function")return ei(r,r);h(!1,"unsupported addressable value","target",r)}var Mt={};function I(r,t){let e=!1;return t<0&&(e=!0,t*=-1),new Z(Mt,`${e?"":"u"}int${t}`,r,{signed:e,width:t})}function Q(r,t){return new Z(Mt,`bytes${t||""}`,r,{size:t})}var da=Symbol.for("_ethers_typed"),Z=class r{type;value;#t;_typedSymbol;constructor(t,e,n,s){s==null&&(s=null),oe(Mt,t,"Typed"),N(this,{_typedSymbol:da,type:e,value:n}),this.#t=s,this.format()}format(){if(this.type==="array")throw new Error("");if(this.type==="dynamicArray")throw new Error("");return this.type==="tuple"?`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 this.type==="string"}get tupleName(){if(this.type!=="tuple")throw TypeError("not a tuple");return this.#t}get arrayLength(){if(this.type!=="array")throw TypeError("not an array");return this.#t===!0?-1:this.#t===!1?this.value.length:null}static from(t,e){return new r(Mt,t,e)}static uint8(t){return I(t,8)}static uint16(t){return I(t,16)}static uint24(t){return I(t,24)}static uint32(t){return I(t,32)}static uint40(t){return I(t,40)}static uint48(t){return I(t,48)}static uint56(t){return I(t,56)}static uint64(t){return I(t,64)}static uint72(t){return I(t,72)}static uint80(t){return I(t,80)}static uint88(t){return I(t,88)}static uint96(t){return I(t,96)}static uint104(t){return I(t,104)}static uint112(t){return I(t,112)}static uint120(t){return I(t,120)}static uint128(t){return I(t,128)}static uint136(t){return I(t,136)}static uint144(t){return I(t,144)}static uint152(t){return I(t,152)}static uint160(t){return I(t,160)}static uint168(t){return I(t,168)}static uint176(t){return I(t,176)}static uint184(t){return I(t,184)}static uint192(t){return I(t,192)}static uint200(t){return I(t,200)}static uint208(t){return I(t,208)}static uint216(t){return I(t,216)}static uint224(t){return I(t,224)}static uint232(t){return I(t,232)}static uint240(t){return I(t,240)}static uint248(t){return I(t,248)}static uint256(t){return I(t,256)}static uint(t){return I(t,256)}static int8(t){return I(t,-8)}static int16(t){return I(t,-16)}static int24(t){return I(t,-24)}static int32(t){return I(t,-32)}static int40(t){return I(t,-40)}static int48(t){return I(t,-48)}static int56(t){return I(t,-56)}static int64(t){return I(t,-64)}static int72(t){return I(t,-72)}static int80(t){return I(t,-80)}static int88(t){return I(t,-88)}static int96(t){return I(t,-96)}static int104(t){return I(t,-104)}static int112(t){return I(t,-112)}static int120(t){return I(t,-120)}static int128(t){return I(t,-128)}static int136(t){return I(t,-136)}static int144(t){return I(t,-144)}static int152(t){return I(t,-152)}static int160(t){return I(t,-160)}static int168(t){return I(t,-168)}static int176(t){return I(t,-176)}static int184(t){return I(t,-184)}static int192(t){return I(t,-192)}static int200(t){return I(t,-200)}static int208(t){return I(t,-208)}static int216(t){return I(t,-216)}static int224(t){return I(t,-224)}static int232(t){return I(t,-232)}static int240(t){return I(t,-240)}static int248(t){return I(t,-248)}static int256(t){return I(t,-256)}static int(t){return I(t,-256)}static bytes1(t){return Q(t,1)}static bytes2(t){return Q(t,2)}static bytes3(t){return Q(t,3)}static bytes4(t){return Q(t,4)}static bytes5(t){return Q(t,5)}static bytes6(t){return Q(t,6)}static bytes7(t){return Q(t,7)}static bytes8(t){return Q(t,8)}static bytes9(t){return Q(t,9)}static bytes10(t){return Q(t,10)}static bytes11(t){return Q(t,11)}static bytes12(t){return Q(t,12)}static bytes13(t){return Q(t,13)}static bytes14(t){return Q(t,14)}static bytes15(t){return Q(t,15)}static bytes16(t){return Q(t,16)}static bytes17(t){return Q(t,17)}static bytes18(t){return Q(t,18)}static bytes19(t){return Q(t,19)}static bytes20(t){return Q(t,20)}static bytes21(t){return Q(t,21)}static bytes22(t){return Q(t,22)}static bytes23(t){return Q(t,23)}static bytes24(t){return Q(t,24)}static bytes25(t){return Q(t,25)}static bytes26(t){return Q(t,26)}static bytes27(t){return Q(t,27)}static bytes28(t){return Q(t,28)}static bytes29(t){return Q(t,29)}static bytes30(t){return Q(t,30)}static bytes31(t){return Q(t,31)}static bytes32(t){return Q(t,32)}static address(t){return new r(Mt,"address",t)}static bool(t){return new r(Mt,"bool",!!t)}static bytes(t){return new r(Mt,"bytes",t)}static string(t){return new r(Mt,"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 r(Mt,"overrides",Object.assign({},t))}static isTyped(t){return t&&typeof t=="object"&&"_typedSymbol"in t&&t._typedSymbol===da}static dereference(t,e){if(r.isTyped(t)){if(t.type!==e)throw new Error(`invalid type: expecetd ${e}, got ${t.type}`);return t.value}return t}};var Tn=class extends ot{constructor(t){super("address","address",t,!1)}defaultValue(){return"0x0000000000000000000000000000000000000000"}encode(t,e){let n=Z.dereference(e,"string");try{n=L(n)}catch(s){return this._throwError(s.message,e)}return t.writeValue(n)}decode(t){return L(bt(t.readValue(),20))}};var Sn=class extends ot{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 ri(r,t,e){let n=[];if(Array.isArray(e))n=e;else if(e&&typeof e=="object"){let c={};n=t.map(l=>{let u=l.localName;return w(u,"cannot encode object for signature with missing names","INVALID_ARGUMENT",{argument:"values",info:{coder:l},value:e}),w(!c[u],"cannot encode object for signature with duplicate names","INVALID_ARGUMENT",{argument:"values",info:{coder:l},value:e}),c[u]=!0,e[u]})}else h(!1,"invalid tuple value","tuple",e);h(t.length===n.length,"types/value length mismatch","tuple",e);let s=new ke,i=new ke,o=[];t.forEach((c,l)=>{let u=n[l];if(c.dynamic){let f=i.length;c.encode(i,u);let d=s.writeUpdatableValue();o.push(g=>{d(g+f)})}else c.encode(s,u)}),o.forEach(c=>{c(s.length)});let a=r.appendWriter(s);return a+=r.appendWriter(i),a}function ni(r,t){let e=[],n=[],s=r.subReader(0);return t.forEach(i=>{let o=null;if(i.dynamic){let a=r.readIndex(),c=s.subReader(a);try{o=i.decode(c)}catch(l){if(Y(l,"BUFFER_OVERRUN"))throw l;o=l,o.baseType=i.name,o.name=i.localName,o.type=i.type}}else try{o=i.decode(r)}catch(a){if(Y(a,"BUFFER_OVERRUN"))throw a;o=a,o.baseType=i.name,o.name=i.localName,o.type=i.type}if(o==null)throw new Error("investigate");e.push(o),n.push(i.localName||null)}),jt.fromItems(e,n)}var Un=class extends ot{coder;length;constructor(t,e,n){let s=t.type+"["+(e>=0?e:"")+"]",i=e===-1||t.dynamic;super("array",s,n,i),N(this,{coder:t,length:e})}defaultValue(){let t=this.coder.defaultValue(),e=[];for(let n=0;n<this.length;n++)e.push(t);return e}encode(t,e){let n=Z.dereference(e,"array");Array.isArray(n)||this._throwError("expected array value",n);let s=this.length;s===-1&&(s=n.length,t.writeValue(n.length)),Nr(n.length,s,"coder array"+(this.localName?" "+this.localName:""));let i=[];for(let o=0;o<n.length;o++)i.push(this.coder);return ri(t,i,n)}decode(t){let e=this.length;e===-1&&(e=t.readIndex(),w(e*dt<=t.dataLength,"insufficient data length","BUFFER_OVERRUN",{buffer:t.bytes,offset:e*dt,length:t.dataLength}));let n=[];for(let s=0;s<e;s++)n.push(new Sn(this.coder));return ni(t,n)}};var Ln=class extends ot{constructor(t){super("bool","bool",t,!1)}defaultValue(){return!1}encode(t,e){let n=Z.dereference(e,"bool");return t.writeValue(n?1:0)}decode(t){return!!t.readValue()}};var Lr=class extends ot{constructor(t,e){super(t,t,e,!0)}defaultValue(){return"0x"}encode(t,e){e=$(e);let n=t.writeValue(e.length);return n+=t.writeBytes(e),n}decode(t){return t.readBytes(t.readIndex(),!0)}},Dn=class extends Lr{constructor(t){super("bytes",t)}decode(t){return b(super.decode(t))}};var Fn=class extends ot{size;constructor(t,e){let n="bytes"+String(t);super(n,n,e,!1),N(this,{size:t},{size:"number"})}defaultValue(){return"0x0000000000000000000000000000000000000000000000000000000000000000".substring(0,2+this.size*2)}encode(t,e){let n=$(Z.dereference(e,this.type));return n.length!==this.size&&this._throwError("incorrect data length",e),t.writeBytes(n)}decode(t){return b(t.readBytes(this.size))}};var uu=new Uint8Array([]),Mn=class extends ot{constructor(t){super("null","",t,!1)}defaultValue(){return null}encode(t,e){return e!=null&&this._throwError("not null",e),t.writeBytes(uu)}decode(t){return t.readBytes(0),null}};var fu=BigInt(0),hu=BigInt(1),du=BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),Gn=class extends ot{size;signed;constructor(t,e,n){let s=(e?"int":"uint")+t*8;super(s,s,n,!1),N(this,{size:t,signed:e},{size:"number",signed:"boolean"})}defaultValue(){return 0}encode(t,e){let n=x(Z.dereference(e,this.type)),s=ae(du,dt*8);if(this.signed){let i=ae(s,this.size*8-1);(n>i||n<-(i+hu))&&this._throwError("value out-of-bounds",e),n=vr(n,8*dt)}else(n<fu||n>ae(s,this.size*8))&&this._throwError("value out-of-bounds",e);return t.writeValue(n)}decode(t){let e=ae(t.readValue(),this.size*8);return this.signed&&(e=Cs(e,this.size*8)),e}};var Hn=class extends Lr{constructor(t){super("string",t)}defaultValue(){return""}encode(t,e){return super.encode(t,wt(Z.dereference(e,"string")))}decode(t){return ce(super.decode(t))}};var Le=class extends ot{coders;constructor(t,e){let n=!1,s=[];t.forEach(o=>{o.dynamic&&(n=!0),s.push(o.type)});let i="tuple("+s.join(",")+")";super("tuple",i,e,n),N(this,{coders:Object.freeze(t.slice())})}defaultValue(){let t=[];this.coders.forEach(n=>{t.push(n.defaultValue())});let e=this.coders.reduce((n,s)=>{let i=s.localName;return i&&(n[i]||(n[i]=0),n[i]++),n},{});return this.coders.forEach((n,s)=>{let i=n.localName;!i||e[i]!==1||(i==="length"&&(i="_length"),t[i]==null&&(t[i]=t[s]))}),Object.freeze(t)}encode(t,e){let n=Z.dereference(e,"tuple");return ri(t,this.coders,n)}decode(t){return ni(t,this.coders)}};function si(r,t){return{address:L(r),storageKeys:t.map((e,n)=>(h(F(e,32),"invalid slot",`storageKeys[${n}]`,e),e.toLowerCase()))}}function Rt(r){if(Array.isArray(r))return r.map((e,n)=>Array.isArray(e)?(h(e.length===2,"invalid slot set",`value[${n}]`,e),si(e[0],e[1])):(h(e!=null&&typeof e=="object","invalid address-slot set","value",r),si(e.address,e.storageKeys)));h(r!=null&&typeof r=="object","invalid access list","value",r);let t=Object.keys(r).map(e=>{let n=r[e].reduce((s,i)=>(s[i]=!0,s),{});return si(e,Object.keys(n).sort())});return t.sort((e,n)=>e.address.localeCompare(n.address)),t}function Dr(r){return{address:L(r.address),nonce:x(r.nonce!=null?r.nonce:0),chainId:x(r.chainId!=null?r.chainId:0),signature:lt.from(r.signature)}}function pu(r){let t;return typeof r=="string"?t=ye.computePublicKey(r,!1):t=r.publicKey,L(z("0x"+t.substring(4)).substring(26))}function pa(r,t){return pu(ye.recoverPublicKey(r,t))}var ht=BigInt(0),gu=BigInt(2),mu=BigInt(27),yu=BigInt(28),wu=BigInt(35),Au=BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),bu=Symbol.for("nodejs.util.inspect.custom"),ii=4096*32,Vn=128;function Eu(r){return{blobToKzgCommitment:n=>{if("computeBlobProof"in r){if("blobToKzgCommitment"in r&&typeof r.blobToKzgCommitment=="function")return R(r.blobToKzgCommitment(b(n)))}else if("blobToKzgCommitment"in r&&typeof r.blobToKzgCommitment=="function")return R(r.blobToKzgCommitment(n));if("blobToKZGCommitment"in r&&typeof r.blobToKZGCommitment=="function")return R(r.blobToKZGCommitment(b(n)));h(!1,"unsupported KZG library","kzg",r)},computeBlobKzgProof:(n,s)=>{if("computeBlobProof"in r&&typeof r.computeBlobProof=="function")return R(r.computeBlobProof(b(n),b(s)));if("computeBlobKzgProof"in r&&typeof r.computeBlobKzgProof=="function")return r.computeBlobKzgProof(n,s);if("computeBlobKZGProof"in r&&typeof r.computeBlobKZGProof=="function")return R(r.computeBlobKZGProof(b(n),b(s)));h(!1,"unsupported KZG library","kzg",r)}}}function ga(r,t){let e=r.toString(16);for(;e.length<2;)e="0"+e;return e+=pe(t).substring(4),"0x"+e}function nr(r){return r==="0x"?null:L(r)}function Qn(r,t){try{return Rt(r)}catch(e){h(!1,e.message,t,r)}}function xu(r,t){try{if(!Array.isArray(r))throw new Error("authorizationList: invalid array");let e=[];for(let n=0;n<r.length;n++){let s=r[n];if(!Array.isArray(s))throw new Error(`authorization[${n}]: invalid array`);if(s.length!==6)throw new Error(`authorization[${n}]: wrong length`);if(!s[1])throw new Error(`authorization[${n}]: null address`);e.push({address:nr(s[1]),nonce:J(s[2],"nonce"),chainId:J(s[0],"chainId"),signature:lt.from({yParity:Fe(s[3],"yParity"),r:mt(s[4],32),s:mt(s[5],32)})})}return e}catch(e){h(!1,e.message,t,r)}}function Fe(r,t){return r==="0x"?0:T(r,t)}function J(r,t){if(r==="0x")return ht;let e=x(r,t);return h(e<=Au,"value exceeds uint size",t,e),e}function M(r,t){let e=x(r,"value"),n=X(e);return h(n.length<=32,"value too large",`tx.${t}`,e),n}function _n(r){return Rt(r).map(t=>[t.address,t.storageKeys])}function Pu(r){return r.map(t=>[M(t.chainId,"chainId"),t.address,M(t.nonce,"nonce"),M(t.signature.yParity,"yParity"),X(t.signature.r),X(t.signature._s)])}function Bu(r,t){h(Array.isArray(r),`invalid ${t}`,"value",r);for(let e=0;e<r.length;e++)h(F(r[e],32),"invalid ${ param } hash",`value[${e}]`,r[e]);return r}function Nu(r){let t=ve(r);h(Array.isArray(t)&&(t.length===9||t.length===6),"invalid field count for legacy transaction","data",r);let e={type:0,nonce:Fe(t[0],"nonce"),gasPrice:J(t[1],"gasPrice"),gasLimit:J(t[2],"gasLimit"),to:nr(t[3]),value:J(t[4],"value"),data:b(t[5]),chainId:ht};if(t.length===6)return e;let n=J(t[6],"v"),s=J(t[7],"r"),i=J(t[8],"s");if(s===ht&&i===ht)e.chainId=n;else{let o=(n-wu)/gu;o<ht&&(o=ht),e.chainId=o,h(o!==ht||n===mu||n===yu,"non-canonical legacy v","v",t[6]),e.signature=lt.from({r:mt(t[7],32),s:mt(t[8],32),v:n})}return e}function Iu(r,t){let e=[M(r.nonce,"nonce"),M(r.gasPrice||0,"gasPrice"),M(r.gasLimit,"gasLimit"),r.to||"0x",M(r.value,"value"),r.data],n=ht;if(r.chainId!=ht)n=x(r.chainId,"tx.chainId"),h(!t||t.networkV==null||t.legacyChainId===n,"tx.chainId/sig.v mismatch","sig",t);else if(r.signature){let i=r.signature.legacyChainId;i!=null&&(n=i)}if(!t)return n!==ht&&(e.push(X(n)),e.push("0x"),e.push("0x")),St(e);let s=BigInt(27+t.yParity);return n!==ht?s=lt.getChainIdV(n,t.v):BigInt(t.v)!==s&&h(!1,"tx.chainId/sig.v mismatch","sig",t),e.push(X(s)),e.push(X(t.r)),e.push(X(t._s)),St(e)}function zn(r,t){let e;try{if(e=Fe(t[0],"yParity"),e!==0&&e!==1)throw new Error("bad yParity")}catch{h(!1,"invalid yParity","yParity",t[0])}let n=mt(t[1],32),s=mt(t[2],32),i=lt.from({r:n,s,yParity:e});r.signature=i}function vu(r){let t=ve(R(r).slice(1));h(Array.isArray(t)&&(t.length===9||t.length===12),"invalid field count for transaction type: 2","data",b(r));let e={type:2,chainId:J(t[0],"chainId"),nonce:Fe(t[1],"nonce"),maxPriorityFeePerGas:J(t[2],"maxPriorityFeePerGas"),maxFeePerGas:J(t[3],"maxFeePerGas"),gasPrice:null,gasLimit:J(t[4],"gasLimit"),to:nr(t[5]),value:J(t[6],"value"),data:b(t[7]),accessList:Qn(t[8],"accessList")};return t.length===9||zn(e,t.slice(9)),e}function Ru(r,t){let e=[M(r.chainId,"chainId"),M(r.nonce,"nonce"),M(r.maxPriorityFeePerGas||0,"maxPriorityFeePerGas"),M(r.maxFeePerGas||0,"maxFeePerGas"),M(r.gasLimit,"gasLimit"),r.to||"0x",M(r.value,"value"),r.data,_n(r.accessList||[])];return t&&(e.push(M(t.yParity,"yParity")),e.push(X(t.r)),e.push(X(t.s))),H(["0x02",St(e)])}function ku(r){let t=ve(R(r).slice(1));h(Array.isArray(t)&&(t.length===8||t.length===11),"invalid field count for transaction type: 1","data",b(r));let e={type:1,chainId:J(t[0],"chainId"),nonce:Fe(t[1],"nonce"),gasPrice:J(t[2],"gasPrice"),gasLimit:J(t[3],"gasLimit"),to:nr(t[4]),value:J(t[5],"value"),data:b(t[6]),accessList:Qn(t[7],"accessList")};return t.length===8||zn(e,t.slice(8)),e}function Cu(r,t){let e=[M(r.chainId,"chainId"),M(r.nonce,"nonce"),M(r.gasPrice||0,"gasPrice"),M(r.gasLimit,"gasLimit"),r.to||"0x",M(r.value,"value"),r.data,_n(r.accessList||[])];return t&&(e.push(M(t.yParity,"recoveryParam")),e.push(X(t.r)),e.push(X(t.s))),H(["0x01",St(e)])}function Ou(r){let t=ve(R(r).slice(1)),e="3",n=null,s=null;if(t.length===4&&Array.isArray(t[0])){e="3 (network format)";let o=t[1],a=t[2],c=t[3];h(Array.isArray(o),"invalid network format: blobs not an array","fields[1]",o),h(Array.isArray(a),"invalid network format: commitments not an array","fields[2]",a),h(Array.isArray(c),"invalid network format: proofs not an array","fields[3]",c),h(o.length===a.length,"invalid network format: blobs/commitments length mismatch","fields",t),h(o.length===c.length,"invalid network format: blobs/proofs length mismatch","fields",t),s=[];for(let l=0;l<t[1].length;l++)s.push({data:o[l],commitment:a[l],proof:c[l]});t=t[0]}else if(t.length===5&&Array.isArray(t[0])){e="3 (EIP-7594 network format)",n=T(t[1]);let o=t[2],a=t[3],c=t[4];h(n===1,`unsupported EIP-7594 network format version: ${n}`,"fields[1]",n),h(Array.isArray(o),"invalid EIP-7594 network format: blobs not an array","fields[2]",o),h(Array.isArray(a),"invalid EIP-7594 network format: commitments not an array","fields[3]",a),h(Array.isArray(c),"invalid EIP-7594 network format: proofs not an array","fields[4]",c),h(o.length===a.length,"invalid network format: blobs/commitments length mismatch","fields",t),h(o.length*Vn===c.length,"invalid network format: blobs/proofs length mismatch","fields",t),s=[];for(let l=0;l<o.length;l++){let u=[];for(let f=0;f<Vn;f++)u.push(c[l*Vn+f]);s.push({data:o[l],commitment:a[l],proof:H(u)})}t=t[0]}h(Array.isArray(t)&&(t.length===11||t.length===14),`invalid field count for transaction type: ${e}`,"data",b(r));let i={type:3,chainId:J(t[0],"chainId"),nonce:Fe(t[1],"nonce"),maxPriorityFeePerGas:J(t[2],"maxPriorityFeePerGas"),maxFeePerGas:J(t[3],"maxFeePerGas"),gasPrice:null,gasLimit:J(t[4],"gasLimit"),to:nr(t[5]),value:J(t[6],"value"),data:b(t[7]),accessList:Qn(t[8],"accessList"),maxFeePerBlobGas:J(t[9],"maxFeePerBlobGas"),blobVersionedHashes:t[10],blobWrapperVersion:n};s&&(i.blobs=s),h(i.to!=null,`invalid address for transaction type: ${e}`,"data",r),h(Array.isArray(i.blobVersionedHashes),"invalid blobVersionedHashes: must be an array","data",r);for(let o=0;o<i.blobVersionedHashes.length;o++)h(F(i.blobVersionedHashes[o],32),`invalid blobVersionedHash at index ${o}: must be length 32`,"data",r);return t.length===11||zn(i,t.slice(11)),i}function Tu(r,t,e){let n=[M(r.chainId,"chainId"),M(r.nonce,"nonce"),M(r.maxPriorityFeePerGas||0,"maxPriorityFeePerGas"),M(r.maxFeePerGas||0,"maxFeePerGas"),M(r.gasLimit,"gasLimit"),r.to||$t,M(r.value,"value"),r.data,_n(r.accessList||[]),M(r.maxFeePerBlobGas||0,"maxFeePerBlobGas"),Bu(r.blobVersionedHashes||[],"blobVersionedHashes")];if(t&&(n.push(M(t.yParity,"yParity")),n.push(X(t.r)),n.push(X(t.s)),e)){if(r.blobWrapperVersion!=null){let s=X(r.blobWrapperVersion),i=[];for(let{proof:o}of e){let a=R(o),c=a.length/Vn;for(let l=0;l<a.length;l+=c)i.push(a.subarray(l,l+c))}return H(["0x03",St([n,s,e.map(o=>o.data),e.map(o=>o.commitment),i])])}return H(["0x03",St([n,e.map(s=>s.data),e.map(s=>s.commitment),e.map(s=>s.proof)])])}return H(["0x03",St(n)])}function Su(r){let t=ve(R(r).slice(1));h(Array.isArray(t)&&(t.length===10||t.length===13),"invalid field count for transaction type: 4","data",b(r));let e={type:4,chainId:J(t[0],"chainId"),nonce:Fe(t[1],"nonce"),maxPriorityFeePerGas:J(t[2],"maxPriorityFeePerGas"),maxFeePerGas:J(t[3],"maxFeePerGas"),gasPrice:null,gasLimit:J(t[4],"gasLimit"),to:nr(t[5]),value:J(t[6],"value"),data:b(t[7]),accessList:Qn(t[8],"accessList"),authorizationList:xu(t[9],"authorizationList")};return t.length===10||zn(e,t.slice(10)),e}function Uu(r,t){let e=[M(r.chainId,"chainId"),M(r.nonce,"nonce"),M(r.maxPriorityFeePerGas||0,"maxPriorityFeePerGas"),M(r.maxFeePerGas||0,"maxFeePerGas"),M(r.gasLimit,"gasLimit"),r.to||"0x",M(r.value,"value"),r.data,_n(r.accessList||[]),Pu(r.authorizationList||[])];return t&&(e.push(M(t.yParity,"yParity")),e.push(X(t.r)),e.push(X(t.s))),H(["0x04",St(e)])}var De=class r{#t;#e;#r;#n;#s;#o;#i;#a;#d;#l;#p;#g;#c;#u;#f;#h;#w;#m;get type(){return this.#t}set type(t){switch(t){case null:this.#t=null;break;case 0:case"legacy":this.#t=0;break;case 1:case"berlin":case"eip-2930":this.#t=1;break;case 2:case"london":case"eip-1559":this.#t=2;break;case 3:case"cancun":case"eip-4844":this.#t=3;break;case 4:case"pectra":case"eip-7702":this.#t=4;break;default:h(!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";case 4:return"eip-7702"}return null}get to(){let t=this.#e;return t==null&&this.type===3?$t:t}set to(t){this.#e=t==null?null:L(t)}get nonce(){return this.#n}set nonce(t){this.#n=T(t,"value")}get gasLimit(){return this.#s}set gasLimit(t){this.#s=x(t)}get gasPrice(){let t=this.#o;return t==null&&(this.type===0||this.type===1)?ht:t}set gasPrice(t){this.#o=t==null?null:x(t,"gasPrice")}get maxPriorityFeePerGas(){let t=this.#i;return t??(this.type===2||this.type===3?ht:null)}set maxPriorityFeePerGas(t){this.#i=t==null?null:x(t,"maxPriorityFeePerGas")}get maxFeePerGas(){let t=this.#a;return t??(this.type===2||this.type===3?ht:null)}set maxFeePerGas(t){this.#a=t==null?null:x(t,"maxFeePerGas")}get data(){return this.#r}set data(t){this.#r=b(t)}get value(){return this.#d}set value(t){this.#d=x(t,"value")}get chainId(){return this.#l}set chainId(t){this.#l=x(t)}get signature(){return this.#p||null}set signature(t){this.#p=t==null?null:lt.from(t)}isValid(){let t=this.signature;if(t&&!t.isValid())return!1;let e=this.authorizationList;if(e){for(let n of e)if(!n.signature.isValid())return!1}return!0}get accessList(){let t=this.#g||null;return t??(this.type===1||this.type===2||this.type===3?[]:null)}set accessList(t){this.#g=t==null?null:Rt(t)}get authorizationList(){let t=this.#w||null;return t==null&&this.type===4?[]:t}set authorizationList(t){this.#w=t==null?null:t.map(e=>Dr(e))}get maxFeePerBlobGas(){let t=this.#c;return t==null&&this.type===3?ht:t}set maxFeePerBlobGas(t){this.#c=t==null?null:x(t,"maxFeePerBlobGas")}get blobVersionedHashes(){let t=this.#u;return t==null&&this.type===3?[]:t}set blobVersionedHashes(t){if(t!=null){h(Array.isArray(t),"blobVersionedHashes must be an Array","value",t),t=t.slice();for(let e=0;e<t.length;e++)h(F(t[e],32),"invalid blobVersionedHash",`value[${e}]`,t[e])}this.#u=t}get blobs(){return this.#h==null?null:this.#h.map(t=>Object.assign({},t))}set blobs(t){if(t==null){this.#h=null;return}let e=[],n=[];for(let s=0;s<t.length;s++){let i=t[s];if(Ne(i)){w(this.#f,"adding a raw blob requires a KZG library","UNSUPPORTED_OPERATION",{operation:"set blobs()"});let o=R(i);if(h(o.length<=ii,"blob is too large",`blobs[${s}]`,i),o.length!==ii){let l=new Uint8Array(ii);l.set(o),o=l}let a=this.#f.blobToKzgCommitment(o),c=b(this.#f.computeBlobKzgProof(o,a));e.push({data:b(o),commitment:b(a),proof:c}),n.push(ga(1,a))}else{let o=b(i.data),a=b(i.commitment),c=b(i.proof);e.push({data:o,commitment:a,proof:c}),n.push(ga(1,a))}}this.#h=e,this.#u=n}get kzg(){return this.#f}set kzg(t){t==null?this.#f=null:this.#f=Eu(t)}get blobWrapperVersion(){return this.#m}set blobWrapperVersion(t){this.#m=t}constructor(){this.#t=null,this.#e=null,this.#n=0,this.#s=ht,this.#o=null,this.#i=null,this.#a=null,this.#r="0x",this.#d=ht,this.#l=ht,this.#p=null,this.#g=null,this.#c=null,this.#u=null,this.#f=null,this.#h=null,this.#w=null,this.#m=null}get hash(){return this.signature==null?null:z(this.#y(!0,!1))}get unsignedHash(){return z(this.unsignedSerialized)}get from(){return this.signature==null?null:pa(this.unsignedHash,this.signature.getCanonical())}get fromPublicKey(){return this.signature==null?null:ye.recoverPublicKey(this.unsignedHash,this.signature.getCanonical())}isSigned(){return this.signature!=null}#y(t,e){w(!t||this.signature!=null,"cannot serialize unsigned transaction; maybe you meant .unsignedSerialized","UNSUPPORTED_OPERATION",{operation:".serialized"});let n=t?this.signature:null;switch(this.inferType()){case 0:return Iu(this,n);case 1:return Cu(this,n);case 2:return Ru(this,n);case 3:return Tu(this,n,e?this.blobs:null);case 4:return Uu(this,n)}w(!1,"unsupported transaction type","UNSUPPORTED_OPERATION",{operation:".serialized"})}get serialized(){return this.#y(!0,!0)}get unsignedSerialized(){return this.#y(!1,!1)}inferType(){let t=this.inferTypes();return t.indexOf(2)>=0?2:t.pop()}inferTypes(){let t=this.gasPrice!=null,e=this.maxFeePerGas!=null||this.maxPriorityFeePerGas!=null,n=this.accessList!=null,s=this.#c!=null||this.#u;this.maxFeePerGas!=null&&this.maxPriorityFeePerGas!=null&&w(this.maxFeePerGas>=this.maxPriorityFeePerGas,"priorityFee cannot be more than maxFee","BAD_DATA",{value:this}),w(!e||this.type!==0&&this.type!==1,"transaction type cannot have maxFeePerGas or maxPriorityFeePerGas","BAD_DATA",{value:this}),w(this.type!==0||!n,"legacy transaction cannot have accessList","BAD_DATA",{value:this});let i=[];return this.type!=null?i.push(this.type):this.authorizationList&&this.authorizationList.length?i.push(4):e?i.push(2):t?(i.push(1),n||i.push(0)):n?(i.push(1),i.push(2)):(s&&this.to||(i.push(0),i.push(1),i.push(2)),i.push(3)),i.sort(),i}isLegacy(){return this.type===0}isBerlin(){return this.type===1}isLondon(){return this.type===2}isCancun(){return this.type===3}clone(){return r.from(this)}toJSON(){let t=e=>e==null?null:e.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}}[bu](){return this.toString()}toString(){let t=[],e=s=>{let i=this[s];typeof i=="string"&&(i=JSON.stringify(i)),t.push(`${s}: ${i}`)};this.type&&e("type"),e("to"),e("data"),e("nonce"),e("gasLimit"),e("value"),this.chainId!=null&&e("chainId"),this.signature&&(e("from"),t.push(`signature: ${this.signature.toString()}`));let n=this.authorizationList;if(n){let s=[];for(let i of n){let o=[];o.push(`address: ${JSON.stringify(i.address)}`),i.nonce!=null&&o.push(`nonce: ${i.nonce}`),i.chainId!=null&&o.push(`chainId: ${i.chainId}`),i.signature&&o.push(`signature: ${i.signature.toString()}`),s.push(`Authorization { ${o.join(", ")} }`)}t.push(`authorizations: [ ${s.join(", ")} ]`)}return`Transaction { ${t.join(", ")} }`}static from(t){if(t==null)return new r;if(typeof t=="string"){let n=R(t);if(n[0]>=127)return r.from(Nu(n));switch(n[0]){case 1:return r.from(ku(n));case 2:return r.from(vu(n));case 3:return r.from(Ou(n));case 4:return r.from(Su(n))}w(!1,"unsupported transaction type","UNSUPPORTED_OPERATION",{operation:"from"})}let e=new r;return t.type!=null&&(e.type=t.type),t.to!=null&&(e.to=t.to),t.nonce!=null&&(e.nonce=t.nonce),t.gasLimit!=null&&(e.gasLimit=t.gasLimit),t.gasPrice!=null&&(e.gasPrice=t.gasPrice),t.maxPriorityFeePerGas!=null&&(e.maxPriorityFeePerGas=t.maxPriorityFeePerGas),t.maxFeePerGas!=null&&(e.maxFeePerGas=t.maxFeePerGas),t.maxFeePerBlobGas!=null&&(e.maxFeePerBlobGas=t.maxFeePerBlobGas),t.data!=null&&(e.data=t.data),t.value!=null&&(e.value=t.value),t.chainId!=null&&(e.chainId=t.chainId),t.signature!=null&&(e.signature=lt.from(t.signature)),t.accessList!=null&&(e.accessList=t.accessList),t.authorizationList!=null&&(e.authorizationList=t.authorizationList),t.blobVersionedHashes!=null&&(e.blobVersionedHashes=t.blobVersionedHashes),t.kzg!=null&&(e.kzg=t.kzg),t.blobWrapperVersion!=null&&(e.blobWrapperVersion=t.blobWrapperVersion),t.blobs!=null&&(e.blobs=t.blobs),t.hash!=null&&(h(e.isSigned(),"unsigned transaction cannot define '.hash'","tx",t),h(e.hash===t.hash,"hash mismatch","tx",t)),t.from!=null&&(h(e.isSigned(),"unsigned transaction cannot define '.from'","tx",t),h(e.from.toLowerCase()===(t.from||"").toLowerCase(),"from mismatch","tx",t)),e}};function Gt(r){return z(wt(r))}var Lu="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",ma=new Map([[8217,"apostrophe"],[8260,"fraction slash"],[12539,"middle dot"]]),ya=4;function Du(r){let t=0;function e(){return r[t++]<<8|r[t++]}let n=e(),s=1,i=[0,1];for(let O=1;O<n;O++)i.push(s+=e());let o=e(),a=t;t+=o;let c=0,l=0;function u(){return c==0&&(l=l<<8|r[t++],c=8),l>>--c&1}let f=31,d=2**f,g=d>>>1,m=g>>1,p=d-1,y=0;for(let O=0;O<f;O++)y=y<<1|u();let A=[],E=0,P=d;for(;;){let O=Math.floor(((y-E+1)*s-1)/P),k=0,S=n;for(;S-k>1;){let K=k+S>>>1;O<i[K]?S=K:k=K}if(k==0)break;A.push(k);let U=E+Math.floor(P*i[k]/s),it=E+Math.floor(P*i[k+1]/s)-1;for(;((U^it)&g)==0;)y=y<<1&p|u(),U=U<<1&p,it=it<<1&p|1;for(;U&~it&m;)y=y&g|y<<1&p>>>1|u(),U=U<<1^g,it=(it^g)<<1|g|1;E=U,P=1+it-U}let C=n-4;return A.map(O=>{switch(O-C){case 3:return C+65792+(r[a++]<<16|r[a++]<<8|r[a++]);case 2:return C+256+(r[a++]<<8|r[a++]);case 1:return C+r[a++];default:return O-1}})}function Fu(r){let t=0;return()=>r[t++]}function Ea(r){return Fu(Du(Mu(r)))}function Mu(r){let t=[];[..."ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"].forEach((s,i)=>t[s.charCodeAt(0)]=i);let e=r.length,n=new Uint8Array(6*e>>3);for(let s=0,i=0,o=0,a=0;s<e;s++)a=a<<6|t[r.charCodeAt(s)],o+=6,o>=8&&(n[i++]=a>>(o-=8));return n}function Gu(r){return r&1?~r>>1:r>>1}function Hu(r,t){let e=Array(r);for(let n=0,s=0;n<r;n++)e[n]=s+=Gu(t());return e}function Gr(r,t=0){let e=[];for(;;){let n=r(),s=r();if(!s)break;t+=n;for(let i=0;i<s;i++)e.push(t+i);t+=s+1}return e}function xa(r){return Hr(()=>{let t=Gr(r);if(t.length)return t})}function Pa(r){let t=[];for(;;){let e=r();if(e==0)break;t.push(Vu(e,r))}for(;;){let e=r()-1;if(e<0)break;t.push(Qu(e,r))}return t.flat()}function Hr(r){let t=[];for(;;){let e=r(t.length);if(!e)break;t.push(e)}return t}function Ba(r,t,e){let n=Array(r).fill().map(()=>[]);for(let s=0;s<t;s++)Hu(r,e).forEach((i,o)=>n[o].push(i));return n}function Vu(r,t){let e=1+t(),n=t(),s=Hr(t);return Ba(s.length,1+r,t).flatMap((o,a)=>{let[c,...l]=o;return Array(s[a]).fill().map((u,f)=>{let d=f*n;return[c+f*e,l.map(g=>g+d)]})})}function Qu(r,t){let e=1+t();return Ba(e,1+r,t).map(s=>[s[0],s.slice(1)])}function _u(r){let t=[],e=Gr(r);return s(n([]),[]),t;function n(i){let o=r(),a=Hr(()=>{let c=Gr(r).map(l=>e[l]);if(c.length)return n(c)});return{S:o,B:a,Q:i}}function s({S:i,B:o},a,c){if(!(i&4&&c===a[a.length-1])){i&2&&(c=a[a.length-1]),i&1&&t.push(a);for(let l of o)for(let u of l.Q)s(l,[...a,u],c)}}}function zu(r){return r.toString(16).toUpperCase().padStart(2,"0")}function Na(r){return`{${zu(r)}}`}function Ku(r){let t=[];for(let e=0,n=r.length;e<n;){let s=r.codePointAt(e);e+=s<65536?1:2,t.push(s)}return t}function or(r){let e=r.length;if(e<4096)return String.fromCodePoint(...r);let n=[];for(let s=0;s<e;)n.push(String.fromCodePoint(...r.slice(s,s+=4096)));return n.join("")}function Ju(r,t){let e=r.length,n=e-t.length;for(let s=0;n==0&&s<e;s++)n=r[s]-t[s];return n}var Wu="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",Vr=44032,Jn=4352,Wn=4449,jn=4519,Ia=19,va=21,ar=28,Zn=va*ar,ju=Ia*Zn,Zu=Vr+ju,qu=Jn+Ia,Yu=Wn+va,Xu=jn+ar;function Fr(r){return r>>24&255}function Ra(r){return r&16777215}var ai,wa,ci,Kn;function $u(){let r=Ea(Wu);ai=new Map(xa(r).flatMap((t,e)=>t.map(n=>[n,e+1<<24]))),wa=new Set(Gr(r)),ci=new Map,Kn=new Map;for(let[t,e]of Pa(r)){if(!wa.has(t)&&e.length==2){let[n,s]=e,i=Kn.get(n);i||(i=new Map,Kn.set(n,i)),i.set(s,t)}ci.set(t,e.reverse())}}function ka(r){return r>=Vr&&r<Zu}function tf(r,t){if(r>=Jn&&r<qu&&t>=Wn&&t<Yu)return Vr+(r-Jn)*Zn+(t-Wn)*ar;if(ka(r)&&t>jn&&t<Xu&&(r-Vr)%ar==0)return r+(t-jn);{let e=Kn.get(r);return e&&(e=e.get(t),e)?e:-1}}function Ca(r){ai||$u();let t=[],e=[],n=!1;function s(i){let o=ai.get(i);o&&(n=!0,i|=o),t.push(i)}for(let i of r)for(;;){if(i<128)t.push(i);else if(ka(i)){let o=i-Vr,a=o/Zn|0,c=o%Zn/ar|0,l=o%ar;s(Jn+a),s(Wn+c),l>0&&s(jn+l)}else{let o=ci.get(i);o?e.push(...o):s(i)}if(!e.length)break;i=e.pop()}if(n&&t.length>1){let i=Fr(t[0]);for(let o=1;o<t.length;o++){let a=Fr(t[o]);if(a==0||i<=a){i=a;continue}let c=o-1;for(;;){let l=t[c+1];if(t[c+1]=t[c],t[c]=l,!c||(i=Fr(t[--c]),i<=a))break}i=Fr(t[o])}}return t}function ef(r){let t=[],e=[],n=-1,s=0;for(let i of r){let o=Fr(i),a=Ra(i);if(n==-1)o==0?n=a:t.push(a);else if(s>0&&s>=o)o==0?(t.push(n,...e),e.length=0,n=a):e.push(a),s=o;else{let c=tf(n,a);c>=0?n=c:s==0&&o==0?(t.push(n),n=a):(e.push(a),s=o)}}return n>=0&&t.push(n,...e),t}function Oa(r){return Ca(r).map(Ra)}function rf(r){return ef(Ca(r))}var Aa=45;var Ta=".",Sa=65039,Ua=1,qn=r=>Array.from(r);function Qr(r,t){return r.P.has(t)||r.Q.has(t)}var li=class extends Array{get is_emoji(){return!0}},ui,La,Ge,fi,Da,nf,ir,oi,sr,Me,ba,hi;function di(){if(ui)return;let r=Ea(Lu),t=()=>Gr(r),e=()=>new Set(t()),n=(u,f)=>f.forEach(d=>u.add(d));ui=new Map(Pa(r)),La=e(),Ge=t(),fi=new Set(t().map(u=>Ge[u])),Ge=new Set(Ge),Da=e(),nf=e();let s=xa(r),i=r(),o=()=>{let u=new Set;return t().forEach(f=>n(u,s[f])),n(u,t()),u};ir=Hr(u=>{let f=Hr(r).map(d=>d+96);if(f.length){let d=u>=i;f[0]-=32,f=or(f),d&&(f=`Restricted[${f}]`);let g=o(),m=o(),p=!r();return{N:f,P:g,Q:m,M:p,R:d}}}),oi=e(),sr=new Map;let a=t().concat(qn(oi)).sort((u,f)=>u-f);a.forEach((u,f)=>{let d=r(),g=a[f]=d?a[f-d]:{V:[],M:new Map};g.V.push(u),oi.has(u)||sr.set(u,g)});for(let{V:u,M:f}of new Set(sr.values())){let d=[];for(let m of u){let p=ir.filter(A=>Qr(A,m)),y=d.find(({G:A})=>p.some(E=>A.has(E)));y||(y={G:new Set,V:[]},d.push(y)),y.V.push(m),n(y.G,p)}let g=d.flatMap(m=>qn(m.G));for(let{G:m,V:p}of d){let y=new Set(g.filter(A=>!m.has(A)));for(let A of p)f.set(A,y)}}Me=new Set;let c=new Set,l=u=>Me.has(u)?c.add(u):Me.add(u);for(let u of ir){for(let f of u.P)l(f);for(let f of u.Q)l(f)}for(let u of Me)!sr.has(u)&&!c.has(u)&&sr.set(u,Ua);n(Me,Oa(Me)),ba=_u(r).map(u=>li.from(u)).sort(Ju),hi=new Map;for(let u of ba){let f=[hi];for(let d of u){let g=f.map(m=>{let p=m.get(d);return p||(p=new Map,m.set(d,p)),p});d===Sa?f.push(...g):f=g}for(let d of f)d.V=u}}function pi(r){return(Fa(r)?"":`${gi(Yn([r]))} `)+Na(r)}function gi(r){return`"${r}"\u200E`}function sf(r){if(r.length>=4&&r[2]==Aa&&r[3]==Aa)throw new Error(`invalid label extension: "${or(r.slice(0,4))}"`)}function of(r){for(let e=r.lastIndexOf(95);e>0;)if(r[--e]!==95)throw new Error("underscore allowed only at start")}function af(r){let t=r[0],e=ma.get(t);if(e)throw Mr(`leading ${e}`);let n=r.length,s=-1;for(let i=1;i<n;i++){t=r[i];let o=ma.get(t);if(o){if(s==i)throw Mr(`${e} + ${o}`);s=i+1,e=o}}if(s==n)throw Mr(`trailing ${e}`)}function Yn(r,t=1/0,e=Na){let n=[];cf(r[0])&&n.push("\u25CC"),r.length>t&&(t>>=1,r=[...r.slice(0,t),8230,...r.slice(-t)]);let s=0,i=r.length;for(let o=0;o<i;o++){let a=r[o];Fa(a)&&(n.push(or(r.slice(s,o))),n.push(e(a)),s=o+1)}return n.push(or(r.slice(s,i))),n.join("")}function cf(r){return di(),Ge.has(r)}function Fa(r){return di(),Da.has(r)}function Ma(r){return hf(lf(r,rf,gf))}function lf(r,t,e){if(!r)return[];di();let n=0;return r.split(Ta).map(s=>{let i=Ku(s),o={input:i,offset:n};n+=i.length+1;try{let a=o.tokens=pf(i,t,e),c=a.length,l;if(!c)throw new Error("empty label");let u=o.output=a.flat();if(of(u),!(o.emoji=c>1||a[0].is_emoji)&&u.every(d=>d<128))sf(u),l="ASCII";else{let d=a.flatMap(g=>g.is_emoji?[]:g);if(!d.length)l="Emoji";else{if(Ge.has(u[0]))throw Mr("leading combining mark");for(let p=1;p<c;p++){let y=a[p];if(!y.is_emoji&&Ge.has(y[0]))throw Mr(`emoji + combining mark: "${or(a[p-1])} + ${Yn([y[0]])}"`)}af(u);let g=qn(new Set(d)),[m]=ff(g);df(m,d),uf(m,g),l=m.N}}o.type=l}catch(a){o.error=a}return o})}function uf(r,t){let e,n=[];for(let s of t){let i=sr.get(s);if(i===Ua)return;if(i){let o=i.M.get(s);if(e=e?e.filter(a=>o.has(a)):qn(o),!e.length)return}else n.push(s)}if(e){for(let s of e)if(n.every(i=>Qr(s,i)))throw new Error(`whole-script confusable: ${r.N}/${s.N}`)}}function ff(r){let t=ir;for(let e of r){let n=t.filter(s=>Qr(s,e));if(!n.length)throw ir.some(s=>Qr(s,e))?Ha(t[0],e):Ga(e);if(t=n,n.length==1)break}return t}function hf(r){return r.map(({input:t,error:e,output:n})=>{if(e){let s=e.message;throw new Error(r.length==1?s:`Invalid label ${gi(Yn(t,63))}: ${s}`)}return or(n)}).join(Ta)}function Ga(r){return new Error(`disallowed character: ${pi(r)}`)}function Ha(r,t){let e=pi(t),n=ir.find(s=>s.P.has(t));return n&&(e=`${n.N} ${e}`),new Error(`illegal mixture: ${r.N} + ${e}`)}function Mr(r){return new Error(`illegal placement: ${r}`)}function df(r,t){for(let e of t)if(!Qr(r,e))throw Ha(r,e);if(r.M){let e=Oa(t);for(let n=1,s=e.length;n<s;n++)if(fi.has(e[n])){let i=n+1;for(let o;i<s&&fi.has(o=e[i]);i++)for(let a=n;a<i;a++)if(e[a]==o)throw new Error(`duplicate non-spacing marks: ${pi(o)}`);if(i-n>ya)throw new Error(`excessive non-spacing marks: ${gi(Yn(e.slice(n-1,i)))} (${i-n}/${ya})`);n=i}}}function pf(r,t,e){let n=[],s=[];for(r=r.slice().reverse();r.length;){let i=mf(r);if(i)s.length&&(n.push(t(s)),s=[]),n.push(e(i));else{let o=r.pop();if(Me.has(o))s.push(o);else{let a=ui.get(o);if(a)s.push(...a);else if(!La.has(o))throw Ga(o)}}}return s.length&&n.push(t(s)),n}function gf(r){return r.filter(t=>t!=Sa)}function mf(r,t){let e=hi,n,s=r.length;for(;s&&(e=e.get(r[--s]),!!e);){let{V:i}=e;i&&(n=i,t&&t.push(...r.slice(s).reverse()),r.length=s)}return n}var Qa=new Uint8Array(32);Qa.fill(0);function Va(r){return h(r.length!==0,"invalid ENS name; empty component","comp",r),r}function _a(r){let t=wt(za(r)),e=[];if(r.length===0)return e;let n=0;for(let s=0;s<t.length;s++)t[s]===46&&(e.push(Va(t.slice(n,s))),n=s+1);return h(n<t.length,"invalid ENS name; empty component","name",r),e.push(Va(t.slice(n))),e}function za(r){try{if(r.length===0)throw new Error("empty label");return Ma(r)}catch(t){h(!1,`invalid ENS name (${t.message})`,"name",r)}}function cr(r){h(typeof r=="string","invalid ENS name; not a string","name",r),h(r.length,"invalid ENS name (empty label)","name",r);let t=Qa,e=_a(r);for(;e.length;)t=z(H([t,z(e.pop())]));return b(t)}function mi(r,t){let e=t??63;return h(e<=255,"DNS encoded label cannot exceed 255","length",e),b(H(_a(r).map(n=>{h(n.length<=e,`label ${JSON.stringify(r)} exceeds ${e} bytes`,"name",r);let s=new Uint8Array(n.length+1);return s.set(n,1),s[0]=s.length-1,s})))+"00"}var ja=new Uint8Array(32);ja.fill(0);var yf=BigInt(-1),Za=BigInt(0),qa=BigInt(1),wf=BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");function Af(r){let t=R(r),e=t.length%32;return e?H([t,ja.slice(e)]):b(t)}var bf=bt(qa,32),Ef=bt(Za,32),Ka={name:"string",version:"string",chainId:"uint256",verifyingContract:"address",salt:"bytes32"},yi=["name","version","chainId","verifyingContract","salt"];function Ja(r){return function(t){return h(typeof t=="string",`invalid domain value for ${JSON.stringify(r)}`,`domain.${r}`,t),t}}var xf={name:Ja("name"),version:Ja("version"),chainId:function(r){let t=x(r,"domain.chainId");return h(t>=0,"invalid chain ID","domain.chainId",r),Number.isSafeInteger(t)?Number(t):yt(t)},verifyingContract:function(r){try{return L(r).toLowerCase()}catch{}h(!1,'invalid domain value "verifyingContract"',"domain.verifyingContract",r)},salt:function(r){let t=R(r,"domain.salt");return h(t.length===32,'invalid domain value "salt"',"domain.salt",r),b(t)}};function wi(r){{let t=r.match(/^(u?)int(\d+)$/);if(t){let e=t[1]==="",n=parseInt(t[2]);h(n%8===0&&n!==0&&n<=256&&t[2]===String(n),"invalid numeric width","type",r);let s=ae(wf,e?n-1:n),i=e?(s+qa)*yf:Za;return function(o){let a=x(o,"value");return h(a>=i&&a<=s,`value out-of-bounds for ${r}`,"value",a),bt(e?vr(a,256):a,32)}}}{let t=r.match(/^bytes(\d+)$/);if(t){let e=parseInt(t[1]);return h(e!==0&&e<=32&&t[1]===String(e),"invalid bytes width","type",r),function(n){let s=R(n);return h(s.length===e,`invalid length for ${r}`,"value",n),Af(n)}}}switch(r){case"address":return function(t){return mt(L(t),32)};case"bool":return function(t){return t?bf:Ef};case"bytes":return function(t){return z(t)};case"string":return function(t){return Gt(t)}}return null}function Wa(r,t){return`${r}(${t.map(({name:e,type:n})=>n+" "+e).join(",")})`}function Xn(r){let t=r.match(/^([^\x5b]*)((\x5b\d*\x5d)*)(\x5b(\d*)\x5d)$/);return t?{base:t[1],index:t[2]+t[4],array:{base:t[1],prefix:t[1]+t[2],count:t[5]?parseInt(t[5]):-1}}:{base:r}}var lr=class r{primaryType;#t;get types(){return JSON.parse(this.#t)}#e;#r;constructor(t){this.#e=new Map,this.#r=new Map;let e=new Map,n=new Map,s=new Map,i={};Object.keys(t).forEach(c=>{i[c]=t[c].map(({name:l,type:u})=>{let{base:f,index:d}=Xn(u);return f==="int"&&!t.int&&(f="int256"),f==="uint"&&!t.uint&&(f="uint256"),{name:l,type:f+(d||"")}}),e.set(c,new Set),n.set(c,[]),s.set(c,new Set)}),this.#t=JSON.stringify(i);for(let c in i){let l=new Set;for(let u of i[c]){h(!l.has(u.name),`duplicate variable name ${JSON.stringify(u.name)} in ${JSON.stringify(c)}`,"types",t),l.add(u.name);let f=Xn(u.type).base;h(f!==c,`circular type reference to ${JSON.stringify(f)}`,"types",t),!wi(f)&&(h(n.has(f),`unknown type ${JSON.stringify(f)}`,"types",t),n.get(f).push(c),e.get(c).add(f))}}let o=Array.from(n.keys()).filter(c=>n.get(c).length===0);h(o.length!==0,"missing primary type","types",t),h(o.length===1,`ambiguous primary types or unused types: ${o.map(c=>JSON.stringify(c)).join(", ")}`,"types",t),N(this,{primaryType:o[0]});function a(c,l){h(!l.has(c),`circular type reference to ${JSON.stringify(c)}`,"types",t),l.add(c);for(let u of e.get(c))if(n.has(u)){a(u,l);for(let f of l)s.get(f).add(u)}l.delete(c)}a(this.primaryType,new Set);for(let[c,l]of s){let u=Array.from(l);u.sort(),this.#e.set(c,Wa(c,i[c])+u.map(f=>Wa(f,i[f])).join(""))}}getEncoder(t){let e=this.#r.get(t);return e||(e=this.#n(t),this.#r.set(t,e)),e}#n(t){{let s=wi(t);if(s)return s}let e=Xn(t).array;if(e){let s=e.prefix,i=this.getEncoder(s);return o=>{h(e.count===-1||e.count===o.length,`array length mismatch; expected length ${e.count}`,"value",o);let a=o.map(i);return this.#e.has(s)&&(a=a.map(z)),z(H(a))}}let n=this.types[t];if(n){let s=Gt(this.#e.get(t));return i=>{let o=n.map(({name:a,type:c})=>{let l=this.getEncoder(c)(i[a]);return this.#e.has(c)?z(l):l});return o.unshift(s),H(o)}}h(!1,`unknown type: ${t}`,"type",t)}encodeType(t){let e=this.#e.get(t);return h(e,`unknown type: ${JSON.stringify(t)}`,"name",t),e}encodeData(t,e){return this.getEncoder(t)(e)}hashStruct(t,e){return z(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(wi(t))return n(t,e);let s=Xn(t).array;if(s)return h(s.count===-1||s.count===e.length,`array length mismatch; expected length ${s.count}`,"value",e),e.map(o=>this._visit(s.prefix,o,n));let i=this.types[t];if(i)return i.reduce((o,{name:a,type:c})=>(o[a]=this._visit(c,e[a],n),o),{});h(!1,`unknown type: ${t}`,"type",t)}visit(t,e){return this._visit(this.primaryType,t,e)}static from(t){return new r(t)}static getPrimaryType(t){return r.from(t).primaryType}static hashStruct(t,e,n){return r.from(e).hashStruct(t,n)}static hashDomain(t){let e=[];for(let n in t){if(t[n]==null)continue;let s=Ka[n];h(s,`invalid typed-data domain key: ${JSON.stringify(n)}`,"domain",t),e.push({name:n,type:s})}return e.sort((n,s)=>yi.indexOf(n.name)-yi.indexOf(s.name)),r.hashStruct("EIP712Domain",{EIP712Domain:e},t)}static encode(t,e,n){return H(["0x1901",r.hashDomain(t),r.from(e).hash(n)])}static hash(t,e,n){return z(r.encode(t,e,n))}static async resolveNames(t,e,n,s){t=Object.assign({},t);for(let a in t)t[a]==null&&delete t[a];let i={};t.verifyingContract&&!F(t.verifyingContract,20)&&(i[t.verifyingContract]="0x");let o=r.from(e);o.visit(n,(a,c)=>(a==="address"&&!F(c,20)&&(i[c]="0x"),c));for(let a in i)i[a]=await s(a);return t.verifyingContract&&i[t.verifyingContract]&&(t.verifyingContract=i[t.verifyingContract]),n=o.visit(n,(a,c)=>a==="address"&&i[c]?i[c]:c),{domain:t,value:n}}static getPayload(t,e,n){r.hashDomain(t);let s={},i=[];yi.forEach(c=>{let l=t[c];l!=null&&(s[c]=xf[c](l),i.push({name:c,type:Ka[c]}))});let o=r.from(e);e=o.types;let a=Object.assign({},e);return h(a.EIP712Domain==null,"types must not contain EIP712Domain type","types.EIP712Domain",e),a.EIP712Domain=i,o.encode(n),{types:a,domain:s,primaryType:o.primaryType,message:o.visit(n,(c,l)=>{if(c.match(/^bytes(\d*)/))return b(R(l));if(c.match(/^u?int/))return x(l).toString();switch(c){case"address":return l.toLowerCase();case"bool":return!!l;case"string":return h(typeof l=="string","invalid string","value",l),l}h(!1,"unsupported type","type",c)})}}};function At(r){let t=new Set;return r.forEach(e=>t.add(e)),Object.freeze(t)}var Pf="external public payable override",Bf=At(Pf.split(" ")),oc="constant external internal payable private public pure view override",Nf=At(oc.split(" ")),ac="constructor error event fallback function receive struct",cc=At(ac.split(" ")),lc="calldata memory storage payable indexed",If=At(lc.split(" ")),vf="tuple returns",Rf=[ac,lc,vf,oc].join(" "),kf=At(Rf.split(" ")),Cf={"(":"OPEN_PAREN",")":"CLOSE_PAREN","[":"OPEN_BRACKET","]":"CLOSE_BRACKET",",":"COMMA","@":"AT"},Of=new RegExp("^(\\s*)"),Tf=new RegExp("^([0-9]+)"),Sf=new RegExp("^([a-zA-Z$_][a-zA-Z0-9$_]*)"),uc=new RegExp("^([a-zA-Z$_][a-zA-Z0-9$_]*)$"),fc=new RegExp("^(address|bool|bytes([0-9]*)|string|u?int([0-9]*))$"),Ht=class r{#t;#e;get offset(){return this.#t}get length(){return this.#e.length-this.#t}constructor(t){this.#t=0,this.#e=t.slice()}clone(){return new r(this.#e)}reset(){this.#t=0}#r(t=0,e=0){return new r(this.#e.slice(t,e).map(n=>Object.freeze(Object.assign({},n,{match:n.match-t,linkBack:n.linkBack-t,linkNext:n.linkNext-t}))))}popKeyword(t){let e=this.peek();if(e.type!=="KEYWORD"||!t.has(e.text))throw new Error(`expected keyword ${e.text}`);return this.pop().text}popType(t){if(this.peek().type!==t){let e=this.peek();throw new Error(`expected ${t}; got ${e.type} ${JSON.stringify(e.text)}`)}return this.pop().text}popParen(){let t=this.peek();if(t.type!=="OPEN_PAREN")throw new Error("bad start");let e=this.#r(this.#t+1,t.match+1);return this.#t=t.match+1,e}popParams(){let t=this.peek();if(t.type!=="OPEN_PAREN")throw new Error("bad start");let e=[];for(;this.#t<t.match-1;){let n=this.peek().linkNext;e.push(this.#r(this.#t+1,n)),this.#t=n}return this.#t=t.match+1,e}peek(){if(this.#t>=this.#e.length)throw new Error("out-of-bounds");return this.#e[this.#t]}peekKeyword(t){let e=this.peekType("KEYWORD");return e!=null&&t.has(e)?e:null}peekType(t){if(this.length===0)return null;let e=this.peek();return e.type===t?e.text:null}pop(){let t=this.peek();return this.#t++,t}toString(){let t=[];for(let e=this.#t;e<this.#e.length;e++){let n=this.#e[e];t.push(`${n.type}:${n.text}`)}return`<TokenString ${t.join(" ")}>`}};function we(r){let t=[],e=o=>{let a=i<r.length?JSON.stringify(r[i]):"$EOI";throw new Error(`invalid token ${a} at ${i}: ${o}`)},n=[],s=[],i=0;for(;i<r.length;){let o=r.substring(i),a=o.match(Of);a&&(i+=a[1].length,o=r.substring(i));let c={depth:n.length,linkBack:-1,linkNext:-1,match:-1,type:"",text:"",offset:i,value:-1};t.push(c);let l=Cf[o[0]]||"";if(l){if(c.type=l,c.text=o[0],i++,l==="OPEN_PAREN")n.push(t.length-1),s.push(t.length-1);else if(l=="CLOSE_PAREN")n.length===0&&e("no matching open bracket"),c.match=n.pop(),t[c.match].match=t.length-1,c.depth--,c.linkBack=s.pop(),t[c.linkBack].linkNext=t.length-1;else if(l==="COMMA")c.linkBack=s.pop(),t[c.linkBack].linkNext=t.length-1,s.push(t.length-1);else if(l==="OPEN_BRACKET")c.type="BRACKET";else if(l==="CLOSE_BRACKET"){let u=t.pop().text;if(t.length>0&&t[t.length-1].type==="NUMBER"){let f=t.pop().text;u=f+u,t[t.length-1].value=T(f)}if(t.length===0||t[t.length-1].type!=="BRACKET")throw new Error("missing opening bracket");t[t.length-1].text+=u}continue}if(a=o.match(Sf),a){if(c.text=a[1],i+=c.text.length,kf.has(c.text)){c.type="KEYWORD";continue}if(c.text.match(fc)){c.type="TYPE";continue}c.type="ID";continue}if(a=o.match(Tf),a){c.text=a[1],c.type="NUMBER",i+=c.text.length;continue}throw new Error(`unexpected token ${JSON.stringify(o[0])} at position ${i}`)}return new Ht(t.map(o=>Object.freeze(o)))}function Ya(r,t){let e=[];for(let n in t.keys())r.has(n)&&e.push(n);if(e.length>1)throw new Error(`conflicting types: ${e.join(", ")}`)}function ts(r,t){if(t.peekKeyword(cc)){let e=t.pop().text;if(e!==r)throw new Error(`expected ${r}, got ${e}`)}return t.popType("ID")}function ee(r,t){let e=new Set;for(;;){let n=r.peekType("KEYWORD");if(n==null||t&&!t.has(n))break;if(r.pop(),e.has(n))throw new Error(`duplicate keywords: ${JSON.stringify(n)}`);e.add(n)}return Object.freeze(e)}function hc(r){let t=ee(r,Nf);return Ya(t,At("constant payable nonpayable".split(" "))),Ya(t,At("pure view payable nonpayable".split(" "))),t.has("view")?"view":t.has("pure")?"pure":t.has("payable")?"payable":t.has("nonpayable")?"nonpayable":t.has("constant")?"view":"nonpayable"}function te(r,t){return r.popParams().map(e=>ut.from(e,t))}function dc(r){if(r.peekType("AT")){if(r.pop(),r.peekType("NUMBER"))return x(r.pop().text);throw new Error("invalid gas")}return null}function _e(r){if(r.length)throw new Error(`unexpected tokens at offset ${r.offset}: ${r.toString()}`)}var Uf=new RegExp(/^(.*)\[([0-9]*)\]$/);function Xa(r){let t=r.match(fc);if(h(t,"invalid type","type",r),r==="uint")return"uint256";if(r==="int")return"int256";if(t[2]){let e=parseInt(t[2]);h(e!==0&&e<=32,"invalid bytes length","type",r)}else if(t[3]){let e=parseInt(t[3]);h(e!==0&&e<=256&&e%8===0,"invalid numeric width","type",r)}return r}var tt={},Et=Symbol.for("_ethers_internal"),$a="_ParamTypeInternal",tc="_ErrorInternal",ec="_EventInternal",rc="_ConstructorInternal",nc="_FallbackInternal",sc="_FunctionInternal",ic="_StructInternal",ut=class r{name;type;baseType;indexed;components;arrayLength;arrayChildren;constructor(t,e,n,s,i,o,a,c){if(oe(t,tt,"ParamType"),Object.defineProperty(this,Et,{value:$a}),o&&(o=Object.freeze(o.slice())),s==="array"){if(a==null||c==null)throw new Error("")}else if(a!=null||c!=null)throw new Error("");if(s==="tuple"){if(o==null)throw new Error("")}else if(o!=null)throw new Error("");N(this,{name:e,type:n,baseType:s,indexed:i,components:o,arrayLength:a,arrayChildren:c})}format(t){if(t==null&&(t="sighash"),t==="json"){let n=this.name||"";if(this.isArray()){let i=JSON.parse(this.arrayChildren.format("json"));return i.name=n,i.type+=`[${this.arrayLength<0?"":String(this.arrayLength)}]`,JSON.stringify(i)}let s={type:this.baseType==="tuple"?"tuple":this.type,name:n};return typeof this.indexed=="boolean"&&(s.indexed=this.indexed),this.isTuple()&&(s.components=this.components.map(i=>JSON.parse(i.format(t)))),JSON.stringify(s)}let e="";return this.isArray()?(e+=this.arrayChildren.format(t),e+=`[${this.arrayLength<0?"":String(this.arrayLength)}]`):this.isTuple()?e+="("+this.components.map(n=>n.format(t)).join(t==="full"?", ":",")+")":e+=this.type,t!=="sighash"&&(this.indexed===!0&&(e+=" indexed"),t==="full"&&this.name&&(e+=" "+this.name)),e}isArray(){return this.baseType==="array"}isTuple(){return this.baseType==="tuple"}isIndexable(){return this.indexed!=null}walk(t,e){if(this.isArray()){if(!Array.isArray(t))throw new Error("invalid array value");if(this.arrayLength!==-1&&t.length!==this.arrayLength)throw new Error("array is wrong length");let n=this;return t.map(s=>n.arrayChildren.walk(s,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");let n=this;return t.map((s,i)=>n.components[i].walk(s,e))}return e(this.type,t)}#t(t,e,n,s){if(this.isArray()){if(!Array.isArray(e))throw new Error("invalid array value");if(this.arrayLength!==-1&&e.length!==this.arrayLength)throw new Error("array is wrong length");let o=this.arrayChildren,a=e.slice();a.forEach((c,l)=>{o.#t(t,c,n,u=>{a[l]=u})}),s(a);return}if(this.isTuple()){let o=this.components,a;if(Array.isArray(e))a=e.slice();else{if(e==null||typeof e!="object")throw new Error("invalid tuple value");a=o.map(c=>{if(!c.name)throw new Error("cannot use object value with unnamed components");if(!(c.name in e))throw new Error(`missing value for component ${c.name}`);return e[c.name]})}if(a.length!==this.components.length)throw new Error("array is wrong length");a.forEach((c,l)=>{o[l].#t(t,c,n,u=>{a[l]=u})}),s(a);return}let i=n(this.type,e);i.then?t.push((async function(){s(await i)})()):s(i)}async walkAsync(t,e){let n=[],s=[t];return this.#t(n,t,e,i=>{s[0]=i}),n.length&&await Promise.all(n),s[0]}static from(t,e){if(r.isParamType(t))return t;if(typeof t=="string")try{return r.from(we(t),e)}catch{h(!1,"invalid param type","obj",t)}else if(t instanceof Ht){let a="",c="",l=null;ee(t,At(["tuple"])).has("tuple")||t.peekType("OPEN_PAREN")?(c="tuple",l=t.popParams().map(p=>r.from(p)),a=`tuple(${l.map(p=>p.format()).join(",")})`):(a=Xa(t.popType("TYPE")),c=a);let u=null,f=null;for(;t.length&&t.peekType("BRACKET");){let p=t.pop();u=new r(tt,"",a,c,null,l,f,u),f=p.value,a+=p.text,c="array",l=null}let d=null;if(ee(t,If).has("indexed")){if(!e)throw new Error("");d=!0}let m=t.peekType("ID")?t.pop().text:"";if(t.length)throw new Error("leftover tokens");return new r(tt,m,a,c,d,l,f,u)}let n=t.name;h(!n||typeof n=="string"&&n.match(uc),"invalid name","obj.name",n);let s=t.indexed;s!=null&&(h(e,"parameter cannot be indexed","obj.indexed",t.indexed),s=!!s);let i=t.type,o=i.match(Uf);if(o){let a=parseInt(o[2]||"-1"),c=r.from({type:o[1],components:t.components});return new r(tt,n||"",i,"array",s,null,a,c)}if(i==="tuple"||i.startsWith("tuple(")||i.startsWith("(")){let a=t.components!=null?t.components.map(l=>r.from(l)):null;return new r(tt,n||"",i,"tuple",s,a,null,null)}return i=Xa(t.type),new r(tt,n||"",i,i,s,null,null,null)}static isParamType(t){return t&&t[Et]===$a}},ze=class r{type;inputs;constructor(t,e,n){oe(t,tt,"Fragment"),n=Object.freeze(n.slice()),N(this,{type:e,inputs:n})}static from(t){if(typeof t=="string"){try{r.from(JSON.parse(t))}catch{}return r.from(we(t))}if(t instanceof Ht)switch(t.peekKeyword(cc)){case"constructor":return Ve.from(t);case"error":return Lt.from(t);case"event":return He.from(t);case"fallback":case"receive":return $n.from(t);case"function":return Qe.from(t);case"struct":return _r.from(t)}else if(typeof t=="object"){switch(t.type){case"constructor":return Ve.from(t);case"error":return Lt.from(t);case"event":return He.from(t);case"fallback":case"receive":return $n.from(t);case"function":return Qe.from(t);case"struct":return _r.from(t)}w(!1,`unsupported type: ${t.type}`,"UNSUPPORTED_OPERATION",{operation:"Fragment.from"})}h(!1,"unsupported frgament object","obj",t)}static isConstructor(t){return Ve.isFragment(t)}static isError(t){return Lt.isFragment(t)}static isEvent(t){return He.isFragment(t)}static isFunction(t){return Qe.isFragment(t)}static isStruct(t){return _r.isFragment(t)}},ur=class extends ze{name;constructor(t,e,n,s){super(t,e,s),h(typeof n=="string"&&n.match(uc),"invalid identifier","name",n),s=Object.freeze(s.slice()),N(this,{name:n})}};function zr(r,t){return"("+t.map(e=>e.format(r)).join(r==="full"?", ":",")+")"}var Lt=class r extends ur{constructor(t,e,n){super(t,"error",e,n),Object.defineProperty(this,Et,{value:tc})}get selector(){return Gt(this.format("sighash")).substring(0,10)}format(t){if(t==null&&(t="sighash"),t==="json")return JSON.stringify({type:"error",name:this.name,inputs:this.inputs.map(n=>JSON.parse(n.format(t)))});let e=[];return t!=="sighash"&&e.push("error"),e.push(this.name+zr(t,this.inputs)),e.join(" ")}static from(t){if(r.isFragment(t))return t;if(typeof t=="string")return r.from(we(t));if(t instanceof Ht){let e=ts("error",t),n=te(t);return _e(t),new r(tt,e,n)}return new r(tt,t.name,t.inputs?t.inputs.map(ut.from):[])}static isFragment(t){return t&&t[Et]===tc}},He=class r extends ur{anonymous;constructor(t,e,n,s){super(t,"event",e,n),Object.defineProperty(this,Et,{value:ec}),N(this,{anonymous:s})}get topicHash(){return Gt(this.format("sighash"))}format(t){if(t==null&&(t="sighash"),t==="json")return JSON.stringify({type:"event",anonymous:this.anonymous,name:this.name,inputs:this.inputs.map(n=>JSON.parse(n.format(t)))});let e=[];return t!=="sighash"&&e.push("event"),e.push(this.name+zr(t,this.inputs)),t!=="sighash"&&this.anonymous&&e.push("anonymous"),e.join(" ")}static getTopicHash(t,e){return e=(e||[]).map(s=>ut.from(s)),new r(tt,t,e,!1).topicHash}static from(t){if(r.isFragment(t))return t;if(typeof t=="string")try{return r.from(we(t))}catch{h(!1,"invalid event fragment","obj",t)}else if(t instanceof Ht){let e=ts("event",t),n=te(t,!0),s=!!ee(t,At(["anonymous"])).has("anonymous");return _e(t),new r(tt,e,n,s)}return new r(tt,t.name,t.inputs?t.inputs.map(e=>ut.from(e,!0)):[],!!t.anonymous)}static isFragment(t){return t&&t[Et]===ec}},Ve=class r extends ze{payable;gas;constructor(t,e,n,s,i){super(t,e,n),Object.defineProperty(this,Et,{value:rc}),N(this,{payable:s,gas:i})}format(t){if(w(t!=null&&t!=="sighash","cannot format a constructor for sighash","UNSUPPORTED_OPERATION",{operation:"format(sighash)"}),t==="json")return JSON.stringify({type:"constructor",stateMutability:this.payable?"payable":"undefined",payable:this.payable,gas:this.gas!=null?this.gas:void 0,inputs:this.inputs.map(n=>JSON.parse(n.format(t)))});let e=[`constructor${zr(t,this.inputs)}`];return this.payable&&e.push("payable"),this.gas!=null&&e.push(`@${this.gas.toString()}`),e.join(" ")}static from(t){if(r.isFragment(t))return t;if(typeof t=="string")try{return r.from(we(t))}catch{h(!1,"invalid constuctor fragment","obj",t)}else if(t instanceof Ht){ee(t,At(["constructor"]));let e=te(t),n=!!ee(t,Bf).has("payable"),s=dc(t);return _e(t),new r(tt,"constructor",e,n,s)}return new r(tt,"constructor",t.inputs?t.inputs.map(ut.from):[],!!t.payable,t.gas!=null?t.gas:null)}static isFragment(t){return t&&t[Et]===rc}},$n=class r extends ze{payable;constructor(t,e,n){super(t,"fallback",e),Object.defineProperty(this,Et,{value:nc}),N(this,{payable:n})}format(t){let e=this.inputs.length===0?"receive":"fallback";if(t==="json"){let n=this.payable?"payable":"nonpayable";return JSON.stringify({type:e,stateMutability:n})}return`${e}()${this.payable?" payable":""}`}static from(t){if(r.isFragment(t))return t;if(typeof t=="string")try{return r.from(we(t))}catch{h(!1,"invalid fallback fragment","obj",t)}else if(t instanceof Ht){let e=t.toString(),n=t.peekKeyword(At(["fallback","receive"]));if(h(n,"type must be fallback or receive","obj",e),t.popKeyword(At(["fallback","receive"]))==="receive"){let a=te(t);return h(a.length===0,"receive cannot have arguments","obj.inputs",a),ee(t,At(["payable"])),_e(t),new r(tt,[],!0)}let i=te(t);i.length?h(i.length===1&&i[0].type==="bytes","invalid fallback inputs","obj.inputs",i.map(a=>a.format("minimal")).join(", ")):i=[ut.from("bytes")];let o=hc(t);if(h(o==="nonpayable"||o==="payable","fallback cannot be constants","obj.stateMutability",o),ee(t,At(["returns"])).has("returns")){let a=te(t);h(a.length===1&&a[0].type==="bytes","invalid fallback outputs","obj.outputs",a.map(c=>c.format("minimal")).join(", "))}return _e(t),new r(tt,i,o==="payable")}if(t.type==="receive")return new r(tt,[],!0);if(t.type==="fallback"){let e=[ut.from("bytes")],n=t.stateMutability==="payable";return new r(tt,e,n)}h(!1,"invalid fallback description","obj",t)}static isFragment(t){return t&&t[Et]===nc}},Qe=class r extends ur{constant;outputs;stateMutability;payable;gas;constructor(t,e,n,s,i,o){super(t,"function",e,s),Object.defineProperty(this,Et,{value:sc}),i=Object.freeze(i.slice()),N(this,{constant:n==="view"||n==="pure",gas:o,outputs:i,payable:n==="payable",stateMutability:n})}get selector(){return Gt(this.format("sighash")).substring(0,10)}format(t){if(t==null&&(t="sighash"),t==="json")return JSON.stringify({type:"function",name:this.name,constant:this.constant,stateMutability:this.stateMutability!=="nonpayable"?this.stateMutability:void 0,payable:this.payable,gas:this.gas!=null?this.gas:void 0,inputs:this.inputs.map(n=>JSON.parse(n.format(t))),outputs:this.outputs.map(n=>JSON.parse(n.format(t)))});let e=[];return t!=="sighash"&&e.push("function"),e.push(this.name+zr(t,this.inputs)),t!=="sighash"&&(this.stateMutability!=="nonpayable"&&e.push(this.stateMutability),this.outputs&&this.outputs.length&&(e.push("returns"),e.push(zr(t,this.outputs))),this.gas!=null&&e.push(`@${this.gas.toString()}`)),e.join(" ")}static getSelector(t,e){return e=(e||[]).map(s=>ut.from(s)),new r(tt,t,"view",e,[],null).selector}static from(t){if(r.isFragment(t))return t;if(typeof t=="string")try{return r.from(we(t))}catch{h(!1,"invalid function fragment","obj",t)}else if(t instanceof Ht){let n=ts("function",t),s=te(t),i=hc(t),o=[];ee(t,At(["returns"])).has("returns")&&(o=te(t));let a=dc(t);return _e(t),new r(tt,n,i,s,o,a)}let e=t.stateMutability;return e==null&&(e="payable",typeof t.constant=="boolean"?(e="view",t.constant||(e="payable",typeof t.payable=="boolean"&&!t.payable&&(e="nonpayable"))):typeof t.payable=="boolean"&&!t.payable&&(e="nonpayable")),new r(tt,t.name,e,t.inputs?t.inputs.map(ut.from):[],t.outputs?t.outputs.map(ut.from):[],t.gas!=null?t.gas:null)}static isFragment(t){return t&&t[Et]===sc}},_r=class r extends ur{constructor(t,e,n){super(t,"struct",e,n),Object.defineProperty(this,Et,{value:ic})}format(){throw new Error("@TODO")}static from(t){if(typeof t=="string")try{return r.from(we(t))}catch{h(!1,"invalid struct fragment","obj",t)}else if(t instanceof Ht){let e=ts("struct",t),n=te(t);return _e(t),new r(tt,e,n)}return new r(tt,t.name,t.inputs?t.inputs.map(ut.from):[])}static isFragment(t){return t&&t[Et]===ic}};var Vt=new Map;Vt.set(0,"GENERIC_PANIC");Vt.set(1,"ASSERT_FALSE");Vt.set(17,"OVERFLOW");Vt.set(18,"DIVIDE_BY_ZERO");Vt.set(33,"ENUM_RANGE_ERROR");Vt.set(34,"BAD_STORAGE_DATA");Vt.set(49,"STACK_UNDERFLOW");Vt.set(50,"ARRAY_RANGE_ERROR");Vt.set(65,"OUT_OF_MEMORY");Vt.set(81,"UNINITIALIZED_FUNCTION_CALL");var Lf=new RegExp(/^bytes([0-9]*)$/),Df=new RegExp(/^(u?int)([0-9]*)$/),Ai=null,pc=1024;function Ff(r,t,e,n){let s="missing revert data",i=null,o=null,a=null;if(e){s="execution reverted";let l=R(e);if(e=b(e),l.length===0)s+=" (no data present; likely require(false) occurred",i="require(false)";else if(l.length%32!==4)s+=" (could not decode reason; invalid data length)";else if(b(l.slice(0,4))==="0x08c379a0")try{i=n.decode(["string"],l.slice(4))[0],a={signature:"Error(string)",name:"Error",args:[i]},s+=`: ${JSON.stringify(i)}`}catch{s+=" (could not decode reason; invalid string data)"}else if(b(l.slice(0,4))==="0x4e487b71")try{let u=Number(n.decode(["uint256"],l.slice(4))[0]);a={signature:"Panic(uint256)",name:"Panic",args:[u]},i=`Panic due to ${Vt.get(u)||"UNKNOWN"}(${u})`,s+=`: ${i}`}catch{s+=" (could not decode panic code)"}else s+=" (unknown custom error)"}let c={to:t.to?L(t.to):null,data:t.data||"0x"};return t.from&&(c.from=L(t.from)),V(s,"CALL_EXCEPTION",{action:r,data:e,reason:i,transaction:c,invocation:o,revert:a})}var Ae=class r{#t(t){if(t.isArray())return new Un(this.#t(t.arrayChildren),t.arrayLength,t.name);if(t.isTuple())return new Le(t.components.map(n=>this.#t(n)),t.name);switch(t.baseType){case"address":return new Tn(t.name);case"bool":return new Ln(t.name);case"string":return new Hn(t.name);case"bytes":return new Dn(t.name);case"":return new Mn(t.name)}let e=t.type.match(Df);if(e){let n=parseInt(e[2]||"256");return h(n!==0&&n<=256&&n%8===0,"invalid "+e[1]+" bit length","param",t),new Gn(n/8,e[1]==="int",t.name)}if(e=t.type.match(Lf),e){let n=parseInt(e[1]);return h(n!==0&&n<=32,"invalid bytes length","param",t),new Fn(n,t.name)}h(!1,"invalid type","type",t.type)}getDefaultValue(t){let e=t.map(s=>this.#t(ut.from(s)));return new Le(e,"_").defaultValue()}encode(t,e){Nr(e.length,t.length,"types/values length mismatch");let n=t.map(o=>this.#t(ut.from(o))),s=new Le(n,"_"),i=new ke;return s.encode(i,e),i.data}decode(t,e,n){let s=t.map(o=>this.#t(ut.from(o)));return new Le(s,"_").decode(new pn(e,n,pc))}static _setDefaultMaxInflation(t){h(typeof t=="number"&&Number.isInteger(t),"invalid defaultMaxInflation factor","value",t),pc=t}static defaultAbiCoder(){return Ai==null&&(Ai=new r),Ai}static getBuiltinCallException(t,e,n){return Ff(t,e,n,r.defaultAbiCoder())}};var es=class{fragment;name;signature;topic;args;constructor(t,e,n){let s=t.name,i=t.format();N(this,{fragment:t,name:s,signature:i,topic:e,args:n})}},rs=class{fragment;name;args;signature;selector;value;constructor(t,e,n,s){let i=t.name,o=t.format();N(this,{fragment:t,name:i,args:n,signature:o,selector:e,value:s})}},ns=class{fragment;name;args;signature;selector;constructor(t,e,n){let s=t.name,i=t.format();N(this,{fragment:t,name:s,args:n,signature:i,selector:e})}},Kr=class{hash;_isIndexed;static isIndexed(t){return!!(t&&t._isIndexed)}constructor(t){N(this,{hash:t,_isIndexed:!0})}},gc={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"},mc={"0x08c379a0":{signature:"Error(string)",name:"Error",inputs:["string"],reason:r=>`reverted with reason string ${JSON.stringify(r)}`},"0x4e487b71":{signature:"Panic(uint256)",name:"Panic",inputs:["uint256"],reason:r=>{let t="unknown panic code";return r>=0&&r<=255&&gc[r.toString()]&&(t=gc[r.toString()]),`reverted with panic code 0x${r.toString(16)} (${t})`}}},Jr=class r{fragments;deploy;fallback;receive;#t;#e;#r;#n;constructor(t){let e=[];typeof t=="string"?e=JSON.parse(t):e=t,this.#r=new Map,this.#t=new Map,this.#e=new Map;let n=[];for(let o of e)try{n.push(ze.from(o))}catch(a){console.log(`[Warning] Invalid Fragment ${JSON.stringify(o)}:`,a.message)}N(this,{fragments:Object.freeze(n)});let s=null,i=!1;this.#n=this.getAbiCoder(),this.fragments.forEach((o,a)=>{let c;switch(o.type){case"constructor":if(this.deploy){console.log("duplicate definition - constructor");return}N(this,{deploy:o});return;case"fallback":o.inputs.length===0?i=!0:(h(!s||o.payable!==s.payable,"conflicting fallback fragments",`fragments[${a}]`,o),s=o,i=s.payable);return;case"function":c=this.#r;break;case"event":c=this.#e;break;case"error":c=this.#t;break;default:return}let l=o.format();c.has(l)||c.set(l,o)}),this.deploy||N(this,{deploy:Ve.from("constructor()")}),N(this,{fallback:s,receive:i})}format(t){let e=t?"minimal":"full";return this.fragments.map(s=>s.format(e))}formatJson(){let t=this.fragments.map(e=>e.format("json"));return JSON.stringify(t.map(e=>JSON.parse(e)))}getAbiCoder(){return Ae.defaultAbiCoder()}#s(t,e,n){if(F(t)){let i=t.toLowerCase();for(let o of this.#r.values())if(i===o.selector)return o;return null}if(t.indexOf("(")===-1){let i=[];for(let[o,a]of this.#r)o.split("(")[0]===t&&i.push(a);if(e){let o=e.length>0?e[e.length-1]:null,a=e.length,c=!0;Z.isTyped(o)&&o.type==="overrides"&&(c=!1,a--);for(let l=i.length-1;l>=0;l--){let u=i[l].inputs.length;u!==a&&(!c||u!==a-1)&&i.splice(l,1)}for(let l=i.length-1;l>=0;l--){let u=i[l].inputs;for(let f=0;f<e.length;f++)if(Z.isTyped(e[f])){if(f>=u.length){if(e[f].type==="overrides")continue;i.splice(l,1);break}if(e[f].type!==u[f].baseType){i.splice(l,1);break}}}}if(i.length===1&&e&&e.length!==i[0].inputs.length){let o=e[e.length-1];(o==null||Array.isArray(o)||typeof o!="object")&&i.splice(0,1)}if(i.length===0)return null;if(i.length>1&&n){let o=i.map(a=>JSON.stringify(a.format())).join(", ");h(!1,`ambiguous function description (i.e. matches ${o})`,"key",t)}return i[0]}let s=this.#r.get(Qe.from(t).format());return s||null}getFunctionName(t){let e=this.#s(t,null,!1);return h(e,"no matching function","key",t),e.name}hasFunction(t){return!!this.#s(t,null,!1)}getFunction(t,e){return this.#s(t,e||null,!0)}forEachFunction(t){let e=Array.from(this.#r.keys());e.sort((n,s)=>n.localeCompare(s));for(let n=0;n<e.length;n++){let s=e[n];t(this.#r.get(s),n)}}#o(t,e,n){if(F(t)){let i=t.toLowerCase();for(let o of this.#e.values())if(i===o.topicHash)return o;return null}if(t.indexOf("(")===-1){let i=[];for(let[o,a]of this.#e)o.split("(")[0]===t&&i.push(a);if(e){for(let o=i.length-1;o>=0;o--)i[o].inputs.length<e.length&&i.splice(o,1);for(let o=i.length-1;o>=0;o--){let a=i[o].inputs;for(let c=0;c<e.length;c++)if(Z.isTyped(e[c])&&e[c].type!==a[c].baseType){i.splice(o,1);break}}}if(i.length===0)return null;if(i.length>1&&n){let o=i.map(a=>JSON.stringify(a.format())).join(", ");h(!1,`ambiguous event description (i.e. matches ${o})`,"key",t)}return i[0]}let s=this.#e.get(He.from(t).format());return s||null}getEventName(t){let e=this.#o(t,null,!1);return h(e,"no matching event","key",t),e.name}hasEvent(t){return!!this.#o(t,null,!1)}getEvent(t,e){return this.#o(t,e||null,!0)}forEachEvent(t){let e=Array.from(this.#e.keys());e.sort((n,s)=>n.localeCompare(s));for(let n=0;n<e.length;n++){let s=e[n];t(this.#e.get(s),n)}}getError(t,e){if(F(t)){let s=t.toLowerCase();if(mc[s])return Lt.from(mc[s].signature);for(let i of this.#t.values())if(s===i.selector)return i;return null}if(t.indexOf("(")===-1){let s=[];for(let[i,o]of this.#t)i.split("(")[0]===t&&s.push(o);if(s.length===0)return t==="Error"?Lt.from("error Error(string)"):t==="Panic"?Lt.from("error Panic(uint256)"):null;if(s.length>1){let i=s.map(o=>JSON.stringify(o.format())).join(", ");h(!1,`ambiguous error description (i.e. ${i})`,"name",t)}return s[0]}if(t=Lt.from(t).format(),t==="Error(string)")return Lt.from("error Error(string)");if(t==="Panic(uint256)")return Lt.from("error Panic(uint256)");let n=this.#t.get(t);return n||null}forEachError(t){let e=Array.from(this.#t.keys());e.sort((n,s)=>n.localeCompare(s));for(let n=0;n<e.length;n++){let s=e[n];t(this.#t.get(s),n)}}_decodeParams(t,e){return this.#n.decode(t,e)}_encodeParams(t,e){return this.#n.encode(t,e)}encodeDeploy(t){return this._encodeParams(this.deploy.inputs,t||[])}decodeErrorResult(t,e){if(typeof t=="string"){let n=this.getError(t);h(n,"unknown error","fragment",t),t=n}return h(j(e,0,4)===t.selector,`data signature does not match error ${t.name}.`,"data",e),this._decodeParams(t.inputs,j(e,4))}encodeErrorResult(t,e){if(typeof t=="string"){let n=this.getError(t);h(n,"unknown error","fragment",t),t=n}return H([t.selector,this._encodeParams(t.inputs,e||[])])}decodeFunctionData(t,e){if(typeof t=="string"){let n=this.getFunction(t);h(n,"unknown function","fragment",t),t=n}return h(j(e,0,4)===t.selector,`data signature does not match function ${t.name}.`,"data",e),this._decodeParams(t.inputs,j(e,4))}encodeFunctionData(t,e){if(typeof t=="string"){let n=this.getFunction(t);h(n,"unknown function","fragment",t),t=n}return H([t.selector,this._encodeParams(t.inputs,e||[])])}decodeFunctionResult(t,e){if(typeof t=="string"){let i=this.getFunction(t);h(i,"unknown function","fragment",t),t=i}let n="invalid length for result data",s=$(e);if(s.length%32===0)try{return this.#n.decode(t.outputs,s)}catch{n="could not decode result data"}w(!1,n,"BAD_DATA",{value:b(s),info:{method:t.name,signature:t.format()}})}makeError(t,e){let n=R(t,"data"),s=Ae.getBuiltinCallException("call",e,n);if(s.message.startsWith("execution reverted (unknown custom error)")){let a=b(n.slice(0,4)),c=this.getError(a);if(c)try{let l=this.#n.decode(c.inputs,n.slice(4));s.revert={name:c.name,signature:c.format(),args:l},s.reason=s.revert.signature,s.message=`execution reverted: ${s.reason}`}catch{s.message="execution reverted (coult not decode custom error)"}}let o=this.parseTransaction(e);return o&&(s.invocation={method:o.name,signature:o.signature,args:o.args}),s}encodeFunctionResult(t,e){if(typeof t=="string"){let n=this.getFunction(t);h(n,"unknown function","fragment",t),t=n}return b(this.#n.encode(t.outputs,e||[]))}encodeFilterTopics(t,e){if(typeof t=="string"){let i=this.getEvent(t);h(i,"unknown event","eventFragment",t),t=i}w(e.length<=t.inputs.length,`too many arguments for ${t.format()}`,"UNEXPECTED_ARGUMENT",{count:e.length,expectedCount:t.inputs.length});let n=[];t.anonymous||n.push(t.topicHash);let s=(i,o)=>i.type==="string"?Gt(o):i.type==="bytes"?z(b(o)):(i.type==="bool"&&typeof o=="boolean"?o=o?"0x01":"0x00":i.type.match(/^u?int/)?o=bt(o):i.type.match(/^bytes/)?o=ks(o,32):i.type==="address"&&this.#n.encode(["address"],[o]),mt(b(o),32));for(e.forEach((i,o)=>{let a=t.inputs[o];if(!a.indexed){h(i==null,"cannot filter non-indexed parameters; must be null","contract."+a.name,i);return}i==null?n.push(null):a.baseType==="array"||a.baseType==="tuple"?h(!1,"filtering with tuples or arrays not supported","contract."+a.name,i):Array.isArray(i)?n.push(i.map(c=>s(a,c))):n.push(s(a,i))});n.length&&n[n.length-1]===null;)n.pop();return n}encodeEventLog(t,e){if(typeof t=="string"){let o=this.getEvent(t);h(o,"unknown event","eventFragment",t),t=o}let n=[],s=[],i=[];return t.anonymous||n.push(t.topicHash),h(e.length===t.inputs.length,"event arguments/values mismatch","values",e),t.inputs.forEach((o,a)=>{let c=e[a];if(o.indexed)if(o.type==="string")n.push(Gt(c));else if(o.type==="bytes")n.push(z(c));else{if(o.baseType==="tuple"||o.baseType==="array")throw new Error("not implemented");n.push(this.#n.encode([o.type],[c]))}else s.push(o),i.push(c)}),{data:this.#n.encode(s,i),topics:n}}decodeEventLog(t,e,n){if(typeof t=="string"){let g=this.getEvent(t);h(g,"unknown event","eventFragment",t),t=g}if(n!=null&&!t.anonymous){let g=t.topicHash;h(F(n[0],32)&&n[0].toLowerCase()===g,"fragment/topic mismatch","topics[0]",n[0]),n=n.slice(1)}let s=[],i=[],o=[];t.inputs.forEach((g,m)=>{g.indexed?g.type==="string"||g.type==="bytes"||g.baseType==="tuple"||g.baseType==="array"?(s.push(ut.from({type:"bytes32",name:g.name})),o.push(!0)):(s.push(g),o.push(!1)):(i.push(g),o.push(!1))});let a=n!=null?this.#n.decode(s,H(n)):null,c=this.#n.decode(i,e,!0),l=[],u=[],f=0,d=0;return t.inputs.forEach((g,m)=>{let p=null;if(g.indexed)if(a==null)p=new Kr(null);else if(o[m])p=new Kr(a[d++]);else try{p=a[d++]}catch(y){p=y}else try{p=c[f++]}catch(y){p=y}l.push(p),u.push(g.name||null)}),jt.fromItems(l,u)}parseTransaction(t){let e=R(t.data,"tx.data"),n=x(t.value!=null?t.value:0,"tx.value"),s=this.getFunction(b(e.slice(0,4)));if(!s)return null;let i=this.#n.decode(s.inputs,e.slice(4));return new rs(s,s.selector,i,n)}parseCallResult(t){throw new Error("@TODO")}parseLog(t){let e=this.getEvent(t.topics[0]);return!e||e.anonymous?null:new es(e,e.topicHash,this.decodeEventLog(e,t.data,t.topics))}parseError(t){let e=b(t),n=this.getError(j(e,0,4));if(!n)return null;let s=this.#n.decode(n.inputs,j(e,4));return new ns(n,n.selector,s)}static from(t){return t instanceof r?t:typeof t=="string"?new r(JSON.parse(t)):typeof t.formatJson=="function"?new r(t.formatJson()):typeof t.format=="function"?new r(t.format("json")):new r(t)}};var yc=BigInt(0);function fr(r){return r??null}function st(r){return r==null?null:r.toString()}var hr=class{gasPrice;maxFeePerGas;maxPriorityFeePerGas;constructor(t,e,n){N(this,{gasPrice:fr(t),maxFeePerGas:fr(e),maxPriorityFeePerGas:fr(n)})}toJSON(){let{gasPrice:t,maxFeePerGas:e,maxPriorityFeePerGas:n}=this;return{_type:"FeeData",gasPrice:st(t),maxFeePerGas:st(e),maxPriorityFeePerGas:st(n)}}};function Ee(r){let t={};r.to&&(t.to=r.to),r.from&&(t.from=r.from),r.data&&(t.data=b(r.data));let e="chainId,gasLimit,gasPrice,maxFeePerBlobGas,maxFeePerGas,maxPriorityFeePerGas,value".split(/,/);for(let s of e)!(s in r)||r[s]==null||(t[s]=x(r[s],`request.${s}`));let n="type,nonce".split(/,/);for(let s of n)!(s in r)||r[s]==null||(t[s]=T(r[s],`request.${s}`));return r.accessList&&(t.accessList=Rt(r.accessList)),r.authorizationList&&(t.authorizationList=r.authorizationList.slice()),"blockTag"in r&&(t.blockTag=r.blockTag),"enableCcipRead"in r&&(t.enableCcipRead=!!r.enableCcipRead),"customData"in r&&(t.customData=r.customData),"blobVersionedHashes"in r&&r.blobVersionedHashes&&(t.blobVersionedHashes=r.blobVersionedHashes.slice()),"kzg"in r&&(t.kzg=r.kzg),"blobWrapperVersion"in r&&(t.blobWrapperVersion=r.blobWrapperVersion),"blobs"in r&&r.blobs&&(t.blobs=r.blobs.map(s=>Ne(s)?b(s):Object.assign({},s))),t}var Wr=class{provider;number;hash;timestamp;parentHash;parentBeaconBlockRoot;nonce;difficulty;gasLimit;gasUsed;stateRoot;receiptsRoot;blobGasUsed;excessBlobGas;miner;prevRandao;extraData;baseFeePerGas;#t;constructor(t,e){this.#t=t.transactions.map(n=>typeof n!="string"?new be(n,e):n),N(this,{provider:e,hash:fr(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:fr(t.prevRandao),extraData:t.extraData,baseFeePerGas:fr(t.baseFeePerGas),stateRoot:t.stateRoot,receiptsRoot:t.receiptsRoot})}get transactions(){return this.#t.map(t=>typeof t=="string"?t:t.hash)}get prefetchedTransactions(){let t=this.#t.slice();return t.length===0?[]:(w(typeof t[0]=="object","transactions were not prefetched with block request","UNSUPPORTED_OPERATION",{operation:"transactionResponses()"}),t)}toJSON(){let{baseFeePerGas:t,difficulty:e,extraData:n,gasLimit:s,gasUsed:i,hash:o,miner:a,prevRandao:c,nonce:l,number:u,parentHash:f,parentBeaconBlockRoot:d,stateRoot:g,receiptsRoot:m,timestamp:p,transactions:y}=this;return{_type:"Block",baseFeePerGas:st(t),difficulty:st(e),extraData:n,gasLimit:st(s),gasUsed:st(i),blobGasUsed:st(this.blobGasUsed),excessBlobGas:st(this.excessBlobGas),hash:o,miner:a,prevRandao:c,nonce:l,number:u,parentHash:f,timestamp:p,parentBeaconBlockRoot:d,stateRoot:g,receiptsRoot:m,transactions:y}}[Symbol.iterator](){let t=0,e=this.transactions;return{next:()=>t<this.length?{value:e[t++],done:!1}:{value:void 0,done:!0}}}get length(){return this.#t.length}get date(){return this.timestamp==null?null:new Date(this.timestamp*1e3)}async getTransaction(t){let e;if(typeof t=="number")e=this.#t[t];else{let n=t.toLowerCase();for(let s of this.#t)if(typeof s=="string"){if(s!==n)continue;e=s;break}else{if(s.hash!==n)continue;e=s;break}}if(e==null)throw new Error("no such tx");return typeof e=="string"?await this.provider.getTransaction(e):e}getPrefetchedTransaction(t){let e=this.prefetchedTransactions;if(typeof t=="number")return e[t];t=t.toLowerCase();for(let n of e)if(n.hash===t)return n;h(!1,"no matching transaction","indexOrHash",t)}isMined(){return!!this.hash}isLondon(){return!!this.baseFeePerGas}orphanedEvent(){if(!this.isMined())throw new Error("");return Gf(this)}},Qt=class{provider;transactionHash;blockHash;blockNumber;removed;address;data;topics;index;transactionIndex;constructor(t,e){this.provider=e;let n=Object.freeze(t.topics.slice());N(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(){let{address:t,blockHash:e,blockNumber:n,data:s,index:i,removed:o,topics:a,transactionHash:c,transactionIndex:l}=this;return{_type:"log",address:t,blockHash:e,blockNumber:n,data:s,index:i,removed:o,topics:a,transactionHash:c,transactionIndex:l}}async getBlock(){let t=await this.provider.getBlock(this.blockHash);return w(!!t,"failed to find transaction","UNKNOWN_ERROR",{}),t}async getTransaction(){let t=await this.provider.getTransaction(this.transactionHash);return w(!!t,"failed to find transaction","UNKNOWN_ERROR",{}),t}async getTransactionReceipt(){let t=await this.provider.getTransactionReceipt(this.transactionHash);return w(!!t,"failed to find transaction receipt","UNKNOWN_ERROR",{}),t}removedEvent(){return Hf(this)}},Ke=class{provider;to;from;contractAddress;hash;index;blockHash;blockNumber;logsBloom;gasUsed;blobGasUsed;cumulativeGasUsed;gasPrice;blobGasPrice;type;status;root;#t;constructor(t,e){this.#t=Object.freeze(t.logs.map(s=>new Qt(s,e)));let n=yc;t.effectiveGasPrice!=null?n=t.effectiveGasPrice:t.gasPrice!=null&&(n=t.gasPrice),N(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.#t}toJSON(){let{to:t,from:e,contractAddress:n,hash:s,index:i,blockHash:o,blockNumber:a,logsBloom:c,logs:l,status:u,root:f}=this;return{_type:"TransactionReceipt",blockHash:o,blockNumber:a,contractAddress:n,cumulativeGasUsed:st(this.cumulativeGasUsed),from:e,gasPrice:st(this.gasPrice),blobGasUsed:st(this.blobGasUsed),blobGasPrice:st(this.blobGasPrice),gasUsed:st(this.gasUsed),hash:s,index:i,logs:l,logsBloom:c,root:f,status:u,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(){let t=await this.provider.getBlock(this.blockHash);if(t==null)throw new Error("TODO");return t}async getTransaction(){let t=await this.provider.getTransaction(this.hash);if(t==null)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 Ac(this)}reorderedEvent(t){return w(!t||t.isMined(),"unmined 'other' transction cannot be orphaned","UNSUPPORTED_OPERATION",{operation:"reorderedEvent(other)"}),wc(this,t)}},be=class r{provider;blockNumber;blockHash;index;hash;type;to;from;nonce;gasLimit;gasPrice;maxPriorityFeePerGas;maxFeePerGas;maxFeePerBlobGas;data;value;chainId;signature;accessList;blobVersionedHashes;authorizationList;#t;constructor(t,e){this.provider=e,this.blockNumber=t.blockNumber!=null?t.blockNumber:null,this.blockHash=t.blockHash!=null?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=t.maxPriorityFeePerGas!=null?t.maxPriorityFeePerGas:null,this.maxFeePerGas=t.maxFeePerGas!=null?t.maxFeePerGas:null,this.maxFeePerBlobGas=t.maxFeePerBlobGas!=null?t.maxFeePerBlobGas:null,this.chainId=t.chainId,this.signature=t.signature,this.accessList=t.accessList!=null?t.accessList:null,this.blobVersionedHashes=t.blobVersionedHashes!=null?t.blobVersionedHashes:null,this.authorizationList=t.authorizationList!=null?t.authorizationList:null,this.#t=-1}toJSON(){let{blockNumber:t,blockHash:e,index:n,hash:s,type:i,to:o,from:a,nonce:c,data:l,signature:u,accessList:f,blobVersionedHashes:d}=this;return{_type:"TransactionResponse",accessList:f,blockNumber:t,blockHash:e,blobVersionedHashes:d,chainId:st(this.chainId),data:l,from:a,gasLimit:st(this.gasLimit),gasPrice:st(this.gasPrice),hash:s,maxFeePerGas:st(this.maxFeePerGas),maxPriorityFeePerGas:st(this.maxPriorityFeePerGas),maxFeePerBlobGas:st(this.maxFeePerBlobGas),nonce:c,signature:u,to:o,index:n,type:i,value:st(this.value)}}async getBlock(){let t=this.blockNumber;if(t==null){let n=await this.getTransaction();n&&(t=n.blockNumber)}if(t==null)return null;let e=this.provider.getBlock(t);if(e==null)throw new Error("TODO");return e}async getTransaction(){return this.provider.getTransaction(this.hash)}async confirmations(){if(this.blockNumber==null){let{tx:e,blockNumber:n}=await nt({tx:this.getTransaction(),blockNumber:this.provider.getBlockNumber()});return e==null||e.blockNumber==null?0:n-e.blockNumber+1}return await this.provider.getBlockNumber()-this.blockNumber+1}async wait(t,e){let n=t??1,s=e??0,i=this.#t,o=-1,a=i===-1,c=async()=>{if(a)return null;let{blockNumber:d,nonce:g}=await nt({blockNumber:this.provider.getBlockNumber(),nonce:this.provider.getTransactionCount(this.from)});if(g<this.nonce){i=d;return}if(a)return null;let m=await this.getTransaction();if(!(m&&m.blockNumber!=null))for(o===-1&&(o=i-3,o<this.#t&&(o=this.#t));o<=d;){if(a)return null;let p=await this.provider.getBlock(o,!0);if(p==null)return;for(let y of p)if(y===this.hash)return;for(let y=0;y<p.length;y++){let A=await p.getTransaction(y);if(A.from===this.from&&A.nonce===this.nonce){if(a)return null;let E=await this.provider.getTransactionReceipt(A.hash);if(E==null||d-E.blockNumber+1<n)return;let P="replaced";A.data===this.data&&A.to===this.to&&A.value===this.value?P="repriced":A.data==="0x"&&A.from===A.to&&A.value===yc&&(P="cancelled"),w(!1,"transaction was replaced","TRANSACTION_REPLACED",{cancelled:P==="replaced"||P==="cancelled",reason:P,replacement:A.replaceableTransaction(i),hash:A.hash,receipt:E})}}o++}},l=d=>{if(d==null||d.status!==0)return d;w(!1,"transaction execution reverted","CALL_EXCEPTION",{action:"sendTransaction",data:null,reason:null,invocation:null,revert:null,transaction:{to:d.to,from:d.from,data:""},receipt:d})},u=await this.provider.getTransactionReceipt(this.hash);if(n===0)return l(u);if(u){if(n===1||await u.confirmations()>=n)return l(u)}else if(await c(),n===0)return null;return await new Promise((d,g)=>{let m=[],p=()=>{m.forEach(A=>A())};if(m.push(()=>{a=!0}),s>0){let A=setTimeout(()=>{p(),g(V("wait for transaction timeout","TIMEOUT"))},s);m.push(()=>{clearTimeout(A)})}let y=async A=>{if(await A.confirmations()>=n){p();try{d(l(A))}catch(E){g(E)}}};if(m.push(()=>{this.provider.off(this.hash,y)}),this.provider.on(this.hash,y),i>=0){let A=async()=>{try{await c()}catch(E){if(Y(E,"TRANSACTION_REPLACED")){p(),g(E);return}}a||this.provider.once("block",A)};m.push(()=>{this.provider.off("block",A)}),this.provider.once("block",A)}})}isMined(){return this.blockHash!=null}isLegacy(){return this.type===0}isBerlin(){return this.type===1}isLondon(){return this.type===2}isCancun(){return this.type===3}removedEvent(){return w(this.isMined(),"unmined transaction canot be orphaned","UNSUPPORTED_OPERATION",{operation:"removeEvent()"}),Ac(this)}reorderedEvent(t){return w(this.isMined(),"unmined transaction canot be orphaned","UNSUPPORTED_OPERATION",{operation:"removeEvent()"}),w(!t||t.isMined(),"unmined 'other' transaction canot be orphaned","UNSUPPORTED_OPERATION",{operation:"removeEvent()"}),wc(this,t)}replaceableTransaction(t){h(Number.isInteger(t)&&t>=0,"invalid startBlock","startBlock",t);let e=new r(this,this.provider);return e.#t=t,e}};function Gf(r){return{orphan:"drop-block",hash:r.hash,number:r.number}}function wc(r,t){return{orphan:"reorder-transaction",tx:r,other:t}}function Ac(r){return{orphan:"drop-transaction",tx:r}}function Hf(r){return{orphan:"drop-log",log:{transactionHash:r.transactionHash,blockHash:r.blockHash,blockNumber:r.blockNumber,address:r.address,data:r.data,topics:Object.freeze(r.topics.slice()),index:r.index}}}var dr=class extends Qt{interface;fragment;args;constructor(t,e,n){super(t,t.provider);let s=e.decodeEventLog(n,t.data,t.topics);N(this,{args:s,fragment:n,interface:e})}get eventName(){return this.fragment.name}get eventSignature(){return this.fragment.format()}},jr=class extends Qt{error;constructor(t,e){super(t,t.provider),N(this,{error:e})}},bi=class extends Ke{#t;constructor(t,e,n){super(n,e),this.#t=t}get logs(){return super.logs.map(t=>{let e=t.topics.length?this.#t.getEvent(t.topics[0]):null;if(e)try{return new dr(t,this.#t,e)}catch(n){return new jr(t,n)}return t})}},pr=class extends be{#t;constructor(t,e,n){super(n,e),this.#t=t}async wait(t,e){let n=await super.wait(t,e);return n==null?null:new bi(this.#t,this.provider,n)}},Zr=class extends Ie{log;constructor(t,e,n,s){super(t,e,n),N(this,{log:s})}async getBlock(){return await this.log.getBlock()}async getTransaction(){return await this.log.getTransaction()}async getTransactionReceipt(){return await this.log.getTransactionReceipt()}},ss=class extends Zr{constructor(t,e,n,s,i){super(t,e,n,new dr(i,t.interface,s));let o=t.interface.decodeEventLog(s,this.log.data,this.log.topics);N(this,{args:o,fragment:s})}get eventName(){return this.fragment.name}get eventSignature(){return this.fragment.format()}};var bc=BigInt(0);function xc(r){return r&&typeof r.call=="function"}function Pc(r){return r&&typeof r.estimateGas=="function"}function cs(r){return r&&typeof r.resolveName=="function"}function Bc(r){return r&&typeof r.sendTransaction=="function"}function Nc(r){if(r!=null){if(cs(r))return r;if(r.provider)return r.provider}}var Ei=class{#t;fragment;constructor(t,e,n){if(N(this,{fragment:e}),e.inputs.length<n.length)throw new Error("too many arguments");let s=We(t.runner,"resolveName"),i=cs(s)?s:null;this.#t=(async function(){let o=await Promise.all(e.inputs.map((a,c)=>n[c]==null?null:a.walkAsync(n[c],(u,f)=>u==="address"?Array.isArray(f)?Promise.all(f.map(d=>at(d,i))):at(f,i):f)));return t.interface.encodeFilterTopics(e,o)})()}getTopicFilter(){return this.#t}};function We(r,t){return r==null?null:typeof r[t]=="function"?r:r.provider&&typeof r.provider[t]=="function"?r.provider:null}function Je(r){return r==null?null:r.provider||null}async function Ic(r,t){let e=Z.dereference(r,"overrides");h(typeof e=="object","invalid overrides parameter","overrides",r);let n=Ee(e);return h(n.to==null||(t||[]).indexOf("to")>=0,"cannot override to","overrides.to",n.to),h(n.data==null||(t||[]).indexOf("data")>=0,"cannot override data","overrides.data",n.data),n.from&&(n.from=n.from),n}async function Vf(r,t,e){let n=We(r,"resolveName"),s=cs(n)?n:null;return await Promise.all(t.map((i,o)=>i.walkAsync(e[o],(a,c)=>(c=Z.dereference(c,a),a==="address"?at(c,s):c))))}function Qf(r){let t=async function(o){let a=await Ic(o,["data"]);a.to=await r.getAddress(),a.from&&(a.from=await at(a.from,Nc(r.runner)));let c=r.interface,l=x(a.value||bc,"overrides.value")===bc,u=(a.data||"0x")==="0x";c.fallback&&!c.fallback.payable&&c.receive&&!u&&!l&&h(!1,"cannot send data to receive or send value to non-payable fallback","overrides",o),h(c.fallback||u,"cannot send data to receive-only contract","overrides.data",a.data);let f=c.receive||c.fallback&&c.fallback.payable;return h(f||l,"cannot send value to non-payable fallback","overrides.value",a.value),h(c.fallback||u,"cannot send data to receive-only contract","overrides.data",a.data),a},e=async function(o){let a=We(r.runner,"call");w(xc(a),"contract runner does not support calling","UNSUPPORTED_OPERATION",{operation:"call"});let c=await t(o);try{return await a.call(c)}catch(l){throw $e(l)&&l.data?r.interface.makeError(l.data,c):l}},n=async function(o){let a=r.runner;w(Bc(a),"contract runner does not support sending transactions","UNSUPPORTED_OPERATION",{operation:"sendTransaction"});let c=await a.sendTransaction(await t(o)),l=Je(r.runner);return new pr(r.interface,l,c)},s=async function(o){let a=We(r.runner,"estimateGas");return w(Pc(a),"contract runner does not support gas estimation","UNSUPPORTED_OPERATION",{operation:"estimateGas"}),await a.estimateGas(await t(o))},i=async o=>await n(o);return N(i,{_contract:r,estimateGas:s,populateTransaction:t,send:n,staticCall:e}),i}function _f(r,t){let e=function(...l){let u=r.interface.getFunction(t,l);return w(u,"no matching fragment","UNSUPPORTED_OPERATION",{operation:"fragment",info:{key:t,args:l}}),u},n=async function(...l){let u=e(...l),f={};if(u.inputs.length+1===l.length&&(f=await Ic(l.pop()),f.from&&(f.from=await at(f.from,Nc(r.runner)))),u.inputs.length!==l.length)throw new Error("internal error: fragment inputs doesn't match arguments; should not happen");let d=await Vf(r.runner,u.inputs,l);return Object.assign({},f,await nt({to:r.getAddress(),data:r.interface.encodeFunctionData(u,d)}))},s=async function(...l){let u=await a(...l);return u.length===1?u[0]:u},i=async function(...l){let u=r.runner;w(Bc(u),"contract runner does not support sending transactions","UNSUPPORTED_OPERATION",{operation:"sendTransaction"});let f=await u.sendTransaction(await n(...l)),d=Je(r.runner);return new pr(r.interface,d,f)},o=async function(...l){let u=We(r.runner,"estimateGas");return w(Pc(u),"contract runner does not support gas estimation","UNSUPPORTED_OPERATION",{operation:"estimateGas"}),await u.estimateGas(await n(...l))},a=async function(...l){let u=We(r.runner,"call");w(xc(u),"contract runner does not support calling","UNSUPPORTED_OPERATION",{operation:"call"});let f=await n(...l),d="0x";try{d=await u.call(f)}catch(m){throw $e(m)&&m.data?r.interface.makeError(m.data,f):m}let g=e(...l);return r.interface.decodeFunctionResult(g,d)},c=async(...l)=>e(...l).constant?await s(...l):await i(...l);return N(c,{name:r.interface.getFunctionName(t),_contract:r,_key:t,getFragment:e,estimateGas:o,populateTransaction:n,send:i,staticCall:s,staticCallResult:a}),Object.defineProperty(c,"fragment",{configurable:!1,enumerable:!0,get:()=>{let l=r.interface.getFunction(t);return w(l,"no matching fragment","UNSUPPORTED_OPERATION",{operation:"fragment",info:{key:t}}),l}}),c}function zf(r,t){let e=function(...s){let i=r.interface.getEvent(t,s);return w(i,"no matching fragment","UNSUPPORTED_OPERATION",{operation:"fragment",info:{key:t,args:s}}),i},n=function(...s){return new Ei(r,e(...s),s)};return N(n,{name:r.interface.getEventName(t),_contract:r,_key:t,getFragment:e}),Object.defineProperty(n,"fragment",{configurable:!1,enumerable:!0,get:()=>{let s=r.interface.getEvent(t);return w(s,"no matching fragment","UNSUPPORTED_OPERATION",{operation:"fragment",info:{key:t}}),s}}),n}var os=Symbol.for("_ethersInternal_contract"),vc=new WeakMap;function Kf(r,t){vc.set(r[os],t)}function kt(r){return vc.get(r[os])}function Jf(r){return r&&typeof r=="object"&&"getTopicFilter"in r&&typeof r.getTopicFilter=="function"&&r.fragment}async function Bi(r,t){let e,n=null;if(Array.isArray(t)){let i=function(o){if(F(o,32))return o;let a=r.interface.getEvent(o);return h(a,"unknown fragment","name",o),a.topicHash};e=t.map(o=>o==null?null:Array.isArray(o)?o.map(i):i(o))}else t==="*"?e=[null]:typeof t=="string"?F(t,32)?e=[t]:(n=r.interface.getEvent(t),h(n,"unknown fragment","event",t),e=[n.topicHash]):Jf(t)?e=await t.getTopicFilter():"fragment"in t?(n=t.fragment,e=[n.topicHash]):h(!1,"unknown event name","event",t);e=e.map(i=>{if(i==null)return null;if(Array.isArray(i)){let o=Array.from(new Set(i.map(a=>a.toLowerCase())).values());return o.length===1?o[0]:(o.sort(),o)}return i.toLowerCase()});let s=e.map(i=>i==null?"null":Array.isArray(i)?i.join("|"):i).join("&");return{fragment:n,tag:s,topics:e}}async function qr(r,t){let{subs:e}=kt(r);return e.get((await Bi(r,t)).tag)||null}async function Ec(r,t,e){let n=Je(r.runner);w(n,"contract runner does not support subscribing","UNSUPPORTED_OPERATION",{operation:t});let{fragment:s,tag:i,topics:o}=await Bi(r,e),{addr:a,subs:c}=kt(r),l=c.get(i);if(!l){let f={address:a||r,topics:o},d=y=>{let A=s;if(A==null)try{A=r.interface.getEvent(y.topics[0])}catch{}if(A){let E=A,P=s?r.interface.decodeEventLog(s,y.data,y.topics):[];Pi(r,e,P,C=>new ss(r,C,e,E,y))}else Pi(r,e,[],E=>new Zr(r,E,e,y))},g=[];l={tag:i,listeners:[],start:()=>{g.length||g.push(n.on(f,d))},stop:async()=>{if(g.length==0)return;let y=g;g=[],await Promise.all(y),n.off(f,d)}},c.set(i,l)}return l}var xi=Promise.resolve();async function Wf(r,t,e,n){await xi;let s=await qr(r,t);if(!s)return!1;let i=s.listeners.length;return s.listeners=s.listeners.filter(({listener:o,once:a})=>{let c=Array.from(e);n&&c.push(n(a?null:o));try{o.call(r,...c)}catch{}return!a}),s.listeners.length===0&&(s.stop(),kt(r).subs.delete(s.tag)),i>0}async function Pi(r,t,e,n){try{await xi}catch{}let s=Wf(r,t,e,n);return xi=s,await s}var is=["then"],as=class r{target;interface;runner;filters;[os];fallback;constructor(t,e,n,s){h(typeof t=="string"||On(t),"invalid value for Contract target","target",t),n==null&&(n=null);let i=Jr.from(e);N(this,{target:t,runner:n,interface:i}),Object.defineProperty(this,os,{value:{}});let o,a=null,c=null;if(s){let f=Je(n);c=new pr(this.interface,f,s)}let l=new Map;if(typeof t=="string")if(F(t))a=t,o=Promise.resolve(t);else{let f=We(n,"resolveName");if(!cs(f))throw V("contract runner does not support name resolution","UNSUPPORTED_OPERATION",{operation:"resolveName"});o=f.resolveName(t).then(d=>{if(d==null)throw V("an ENS name used for a contract target must be correctly configured","UNCONFIGURED_NAME",{value:t});return kt(this).addr=d,d})}else o=t.getAddress().then(f=>{if(f==null)throw new Error("TODO");return kt(this).addr=f,f});Kf(this,{addrPromise:o,addr:a,deployTx:c,subs:l});let u=new Proxy({},{get:(f,d,g)=>{if(typeof d=="symbol"||is.indexOf(d)>=0)return Reflect.get(f,d,g);try{return this.getEvent(d)}catch(m){if(!Y(m,"INVALID_ARGUMENT")||m.argument!=="key")throw m}},has:(f,d)=>is.indexOf(d)>=0?Reflect.has(f,d):Reflect.has(f,d)||this.interface.hasEvent(String(d))});return N(this,{filters:u}),N(this,{fallback:i.receive||i.fallback?Qf(this):null}),new Proxy(this,{get:(f,d,g)=>{if(typeof d=="symbol"||d in f||is.indexOf(d)>=0)return Reflect.get(f,d,g);try{return f.getFunction(d)}catch(m){if(!Y(m,"INVALID_ARGUMENT")||m.argument!=="key")throw m}},has:(f,d)=>typeof d=="symbol"||d in f||is.indexOf(d)>=0?Reflect.has(f,d):f.interface.hasFunction(d)})}connect(t){return new r(this.target,this.interface,t)}attach(t){return new r(t,this.interface,this.runner)}async getAddress(){return await kt(this).addrPromise}async getDeployedCode(){let t=Je(this.runner);w(t,"runner does not support .provider","UNSUPPORTED_OPERATION",{operation:"getDeployedCode"});let e=await t.getCode(await this.getAddress());return e==="0x"?null:e}async waitForDeployment(){let t=this.deploymentTransaction();if(t)return await t.wait(),this;if(await this.getDeployedCode()!=null)return this;let n=Je(this.runner);return w(n!=null,"contract runner does not support .provider","UNSUPPORTED_OPERATION",{operation:"waitForDeployment"}),new Promise((s,i)=>{let o=async()=>{try{if(await this.getDeployedCode()!=null)return s(this);n.once("block",o)}catch(a){i(a)}};o()})}deploymentTransaction(){return kt(this).deployTx}getFunction(t){return typeof t!="string"&&(t=t.format()),_f(this,t)}getEvent(t){return typeof t!="string"&&(t=t.format()),zf(this,t)}async queryTransaction(t){throw new Error("@TODO")}async queryFilter(t,e,n){e==null&&(e=0),n==null&&(n="latest");let{addr:s,addrPromise:i}=kt(this),o=s||await i,{fragment:a,topics:c}=await Bi(this,t),l={address:o,topics:c,fromBlock:e,toBlock:n},u=Je(this.runner);return w(u,"contract runner does not have a provider","UNSUPPORTED_OPERATION",{operation:"queryFilter"}),(await u.getLogs(l)).map(f=>{let d=a;if(d==null)try{d=this.interface.getEvent(f.topics[0])}catch{}if(d)try{return new dr(f,this.interface,d)}catch(g){return new jr(f,g)}return new Qt(f,u)})}async on(t,e){let n=await Ec(this,"on",t);return n.listeners.push({listener:e,once:!1}),n.start(),this}async once(t,e){let n=await Ec(this,"once",t);return n.listeners.push({listener:e,once:!0}),n.start(),this}async emit(t,...e){return await Pi(this,t,e,null)}async listenerCount(t){if(t){let s=await qr(this,t);return s?s.listeners.length:0}let{subs:e}=kt(this),n=0;for(let{listeners:s}of e.values())n+=s.length;return n}async listeners(t){if(t){let s=await qr(this,t);return s?s.listeners.map(({listener:i})=>i):[]}let{subs:e}=kt(this),n=[];for(let{listeners:s}of e.values())n=n.concat(s.map(({listener:i})=>i));return n}async off(t,e){let n=await qr(this,t);if(!n)return this;if(e){let s=n.listeners.map(({listener:i})=>i).indexOf(e);s>=0&&n.listeners.splice(s,1)}return(e==null||n.listeners.length===0)&&(n.stop(),kt(this).subs.delete(n.tag)),this}async removeAllListeners(t){if(t){let e=await qr(this,t);if(!e)return this;e.stop(),kt(this).subs.delete(e.tag)}else{let{subs:e}=kt(this);for(let{tag:n,stop:s}of e.values())s(),e.delete(n)}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){class e extends r{constructor(s,i=null){super(s,t,i)}}return e}static from(t,e,n){return n==null&&(n=null),new this(t,e,n)}};function jf(){return as}var Jt=class extends jf(){};function Ni(r){return r.match(/^ipfs:\/\/ipfs\//i)?r=r.substring(12):r.match(/^ipfs:\/\//i)?r=r.substring(7):h(!1,"unsupported IPFS format","link",r),`https://gateway.ipfs.io/ipfs/${r}`}var ls=class{name;constructor(t){N(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")}};var kc=new RegExp("^(ipfs)://(.*)$","i"),Rc=[new RegExp("^(https)://(.*)$","i"),new RegExp("^(data):(.*)$","i"),kc,new RegExp("^eip155:[0-9]+/(erc[0-9]+):(.*)$","i")],gr=class r{provider;address;name;#t;#e;constructor(t,e,n){N(this,{provider:t,address:e,name:n}),this.#t=null,this.#e=new Jt(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 this.#t==null&&(this.#t=(async()=>{try{return await this.#e.supportsInterface("0x9061b923")}catch(t){if(Y(t,"CALL_EXCEPTION"))return!1;throw this.#t=null,t}})()),await this.#t}async#r(t,e){e=(e||[]).slice();let n=this.#e.interface;e.unshift(cr(this.name));let s=null;await this.supportsWildcard()&&(s=n.getFunction(t),w(s,"missing fragment","UNKNOWN_ERROR",{info:{funcName:t}}),e=[mi(this.name,255),n.encodeFunctionData(s,e)],t="resolve(bytes,bytes)"),e.push({enableCcipRead:!0});try{let i=await this.#e[t](...e);return s?n.decodeFunctionResult(s,i)[0]:i}catch(i){if(!Y(i,"CALL_EXCEPTION"))throw i}return null}async getAddress(t){if(t==null&&(t=60),t===60)try{let i=await this.#r("addr(bytes32)");return i==null||i===$t?null:i}catch(i){if(Y(i,"CALL_EXCEPTION"))return null;throw i}if(t>=0&&t<2147483648){let i=t+2147483648,o=await this.#r("addr(bytes32,uint)",[i]);if(F(o,20))return L(o)}let e=null;for(let i of this.provider.plugins)if(i instanceof ls&&i.supportsCoinType(t)){e=i;break}if(e==null)return null;let n=await this.#r("addr(bytes32,uint)",[t]);if(n==null||n==="0x")return null;let s=await e.decodeAddress(t,n);if(s!=null)return s;w(!1,"invalid coin data","UNSUPPORTED_OPERATION",{operation:`getAddress(${t})`,info:{coinType:t,data:n}})}async getText(t){let e=await this.#r("text(bytes32,string)",[t]);return e==null||e==="0x"?null:e}async getContentHash(){let t=await this.#r("contenthash(bytes32)");if(t==null||t==="0x")return null;let e=t.match(/^0x(e3010170|e5010172)(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);if(e){let s=e[1]==="e3010170"?"ipfs":"ipns",i=parseInt(e[4],16);if(e[5].length===i*2)return`${s}://${Ts("0x"+e[2])}`}let n=t.match(/^0xe40101fa011b20([0-9a-f]*)$/);if(n&&n[1].length===64)return`bzz://${n[1]}`;w(!1,"invalid or unsupported content hash data","UNSUPPORTED_OPERATION",{operation:"getContentHash()",info:{data:t}})}async getAvatar(){return(await this._getAvatar()).url}async _getAvatar(){let t=[{type:"name",value:this.name}];try{let e=await this.getText("avatar");if(e==null)return t.push({type:"!avatar",value:""}),{url:null,linkage:t};t.push({type:"avatar",value:e});for(let n=0;n<Rc.length;n++){let s=e.match(Rc[n]);if(s==null)continue;let i=s[1].toLowerCase();switch(i){case"https":case"data":return t.push({type:"url",value:e}),{linkage:t,url:e};case"ipfs":{let o=Ni(e);return t.push({type:"ipfs",value:e}),t.push({type:"url",value:o}),{linkage:t,url:o}}case"erc721":case"erc1155":{let o=i==="erc721"?"tokenURI(uint256)":"uri(uint256)";t.push({type:i,value:e});let a=await this.getAddress();if(a==null)return t.push({type:"!owner",value:""}),{url:null,linkage:t};let c=(s[2]||"").split("/");if(c.length!==2)return t.push({type:`!${i}caip`,value:s[2]||""}),{url:null,linkage:t};let l=c[1],u=new Jt(c[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(i==="erc721"){let p=await u.ownerOf(l);if(a!==p)return t.push({type:"!owner",value:p}),{url:null,linkage:t};t.push({type:"owner",value:p})}else if(i==="erc1155"){let p=await u.balanceOf(a,l);if(!p)return t.push({type:"!balance",value:"0"}),{url:null,linkage:t};t.push({type:"balance",value:p.toString()})}let f=await u[o](l);if(f==null||f==="0x")return t.push({type:"!metadata-url",value:""}),{url:null,linkage:t};t.push({type:"metadata-url-base",value:f}),i==="erc1155"&&(f=f.replace("{id}",bt(l,32).substring(2)),t.push({type:"metadata-url-expanded",value:f})),f.match(/^ipfs:/i)&&(f=Ni(f)),t.push({type:"metadata-url",value:f});let d={},g=await new Tt(f).send();g.assertOk();try{d=g.bodyJson}catch{try{t.push({type:"!metadata",value:g.bodyText})}catch{let A=g.body;return A&&t.push({type:"!metadata",value:b(A)}),{url:null,linkage:t}}return{url:null,linkage:t}}if(!d)return t.push({type:"!metadata",value:""}),{url:null,linkage:t};t.push({type:"metadata",value:JSON.stringify(d)});let m=d.image;if(typeof m!="string")return t.push({type:"!imageUrl",value:""}),{url:null,linkage:t};if(!m.match(/^(https:\/\/|data:)/i)){if(m.match(kc)==null)return t.push({type:"!imageUrl-ipfs",value:m}),{url:null,linkage:t};t.push({type:"imageUrl-ipfs",value:m}),m=Ni(m)}return t.push({type:"url",value:m}),{linkage:t,url:m}}}}}catch{}return{linkage:t,url:null}}static async getEnsAddress(t){let e=await t.getNetwork(),n=e.getPlugin("org.ethers.plugins.network.Ens");return w(n,"network does not support ENS","UNSUPPORTED_OPERATION",{operation:"getEnsAddress",info:{network:e}}),n.address}static async#n(t,e){let n=await r.getEnsAddress(t);try{let i=await new Jt(n,["function resolver(bytes32) view returns (address)"],t).resolver(cr(e),{enableCcipRead:!0});return i===$t?null:i}catch(s){throw s}return null}static async fromName(t,e){let n=e;for(;;){if(n===""||n==="."||e!=="eth"&&n==="eth")return null;let s=await r.#n(t,n);if(s!=null){let i=new r(t,s,e);return n!==e&&!await i.supportsWildcard()?null:i}n=n.split(".").slice(1).join(".")}}};var Cc=BigInt(0);function G(r,t){return(function(e){return e==null?t:r(e)})}function Yr(r,t){return(e=>{if(t&&e==null)return null;if(!Array.isArray(e))throw new Error("not an array");return e.map(n=>r(n))})}function Xr(r,t){return(e=>{let n={};for(let s in r){let i=s;if(t&&s in t&&!(i in e)){for(let o of t[s])if(o in e){i=o;break}}try{let o=r[s](e[i]);o!==void 0&&(n[s]=o)}catch(o){let a=o instanceof Error?o.message:"not-an-error";w(!1,`invalid value for value.${s} (${a})`,"BAD_DATA",{value:e})}}return n})}function Zf(r){switch(r){case!0:case"true":return!0;case!1:case"false":return!1}h(!1,`invalid boolean; ${JSON.stringify(r)}`,"value",r)}function mr(r){return h(F(r,!0),"invalid data","value",r),r}function pt(r){return h(F(r,32),"invalid hash","value",r),r}var qf=Xr({address:L,blockHash:pt,blockNumber:T,data:mr,index:T,removed:G(Zf,!1),topics:Yr(pt),transactionHash:pt,transactionIndex:T},{index:["logIndex"]});function Oc(r){return qf(r)}var Yf=Xr({hash:G(pt),parentHash:pt,parentBeaconBlockRoot:G(pt,null),number:T,timestamp:T,nonce:G(mr),difficulty:x,gasLimit:x,gasUsed:x,stateRoot:G(pt,null),receiptsRoot:G(pt,null),blobGasUsed:G(x,null),excessBlobGas:G(x,null),miner:G(L),prevRandao:G(pt,null),extraData:mr,baseFeePerGas:G(x)},{prevRandao:["mixHash"]});function Tc(r){let t=Yf(r);return t.transactions=r.transactions.map(e=>typeof e=="string"?e:Ii(e)),t}var Xf=Xr({transactionIndex:T,blockNumber:T,transactionHash:pt,address:L,topics:Yr(pt),data:mr,index:T,blockHash:pt},{index:["logIndex"]});function $f(r){return Xf(r)}var th=Xr({to:G(L,null),from:G(L,null),contractAddress:G(L,null),index:T,root:G(b),gasUsed:x,blobGasUsed:G(x,null),logsBloom:G(mr),blockHash:pt,hash:pt,logs:Yr($f),blockNumber:T,cumulativeGasUsed:x,effectiveGasPrice:G(x),blobGasPrice:G(x,null),status:G(T),type:G(T,0)},{effectiveGasPrice:["gasPrice"],hash:["transactionHash"],index:["transactionIndex"]});function Sc(r){return th(r)}function Ii(r){r.to&&x(r.to)===Cc&&(r.to="0x0000000000000000000000000000000000000000");let t=Xr({hash:pt,index:G(T,void 0),type:e=>e==="0x"||e==null?0:T(e),accessList:G(Rt,null),blobVersionedHashes:G(Yr(pt,!0),null),authorizationList:G(Yr(e=>{let n;if(e.signature)n=e.signature;else{let s=e.yParity;s==="0x1b"?s=0:s==="0x1c"&&(s=1),n=Object.assign({},e,{yParity:s})}return{address:L(e.address),chainId:x(e.chainId),nonce:x(e.nonce),signature:lt.from(n)}},!1),null),blockHash:G(pt,null),blockNumber:G(T,null),transactionIndex:G(T,null),from:L,gasPrice:G(x),maxPriorityFeePerGas:G(x),maxFeePerGas:G(x),maxFeePerBlobGas:G(x,null),gasLimit:x,to:G(L,null),value:x,nonce:T,data:mr,creates:G(L,null),chainId:G(x,null)},{data:["input"],gasLimit:["gas"],index:["transactionIndex"]})(r);if(t.to==null&&t.creates==null&&(t.creates=ti(t)),(r.type===1||r.type===2)&&r.accessList==null&&(t.accessList=[]),r.signature?t.signature=lt.from(r.signature):t.signature=lt.from(r),t.chainId==null){let e=t.signature.legacyChainId;e!=null&&(t.chainId=e)}return t.blockHash&&x(t.blockHash)===Cc&&(t.blockHash=null),t}var eh="0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",yr=class r{name;constructor(t){N(this,{name:t})}clone(){return new r(this.name)}},wr=class r extends yr{effectiveBlock;txBase;txCreate;txDataZero;txDataNonzero;txAccessListStorageKey;txAccessListAddress;constructor(t,e){t==null&&(t=0),super(`org.ethers.network.plugins.GasCost#${t||0}`);let n={effectiveBlock:t};function s(i,o){let a=(e||{})[i];a==null&&(a=o),h(typeof a=="number",`invalud value for ${i}`,"costs",e),n[i]=a}s("txBase",21e3),s("txCreate",32e3),s("txDataZero",4),s("txDataNonzero",16),s("txAccessListStorageKey",1900),s("txAccessListAddress",2400),N(this,n)}clone(){return new r(this.effectiveBlock,this)}},Ar=class r extends yr{address;targetNetwork;constructor(t,e){super("org.ethers.plugins.network.Ens"),N(this,{address:t||eh,targetNetwork:e??1})}clone(){return new r(this.address,this.targetNetwork)}};var $r=class extends yr{#t;#e;get url(){return this.#t}get processFunc(){return this.#e}constructor(t,e){super("org.ethers.plugins.network.FetchUrlFeeDataPlugin"),this.#t=t,this.#e=e}clone(){return this}};var vi=new Map,Ct=class r{#t;#e;#r;constructor(t,e){this.#t=t,this.#e=x(e),this.#r=new Map}toJSON(){return{name:this.name,chainId:String(this.chainId)}}get name(){return this.#t}set name(t){this.#t=t}get chainId(){return this.#e}set chainId(t){this.#e=x(t,"chainId")}matches(t){if(t==null)return!1;if(typeof t=="string"){try{return this.chainId===x(t)}catch{}return this.name===t}if(typeof t=="number"||typeof t=="bigint"){try{return this.chainId===x(t)}catch{}return!1}if(typeof t=="object"){if(t.chainId!=null){try{return this.chainId===x(t.chainId)}catch{}return!1}return t.name!=null?this.name===t.name:!1}return!1}get plugins(){return Array.from(this.#r.values())}attachPlugin(t){if(this.#r.get(t.name))throw new Error(`cannot replace existing plugin: ${t.name} `);return this.#r.set(t.name,t.clone()),this}getPlugin(t){return this.#r.get(t)||null}getPlugins(t){return this.plugins.filter(e=>e.name.split("#")[0]===t)}clone(){let t=new r(this.name,this.chainId);return this.plugins.forEach(e=>{t.attachPlugin(e.clone())}),t}computeIntrinsicGas(t){let e=this.getPlugin("org.ethers.plugins.network.GasCost")||new wr,n=e.txBase;if(t.to==null&&(n+=e.txCreate),t.data)for(let s=2;s<t.data.length;s+=2)t.data.substring(s,s+2)==="00"?n+=e.txDataZero:n+=e.txDataNonzero;if(t.accessList){let s=Rt(t.accessList);for(let i in s)n+=e.txAccessListAddress+e.txAccessListStorageKey*s[i].storageKeys.length}return n}static from(t){if(rh(),t==null)return r.from("mainnet");if(typeof t=="number"&&(t=BigInt(t)),typeof t=="string"||typeof t=="bigint"){let e=vi.get(t);if(e)return e();if(typeof t=="bigint")return new r("unknown",t);h(!1,"unknown network","network",t)}if(typeof t.clone=="function")return t.clone();if(typeof t=="object"){h(typeof t.name=="string"&&typeof t.chainId=="number","invalid network object name or chainId","network",t);let e=new r(t.name,t.chainId);return(t.ensAddress||t.ensNetwork!=null)&&e.attachPlugin(new Ar(t.ensAddress,t.ensNetwork)),e}h(!1,"invalid network","network",t)}static register(t,e){typeof t=="number"&&(t=BigInt(t));let n=vi.get(t);n&&h(!1,`conflicting network for ${JSON.stringify(n.name)}`,"nameOrChainId",t),vi.set(t,e)}};function Uc(r,t){let e=String(r);if(!e.match(/^[0-9.]+$/))throw new Error(`invalid gwei value: ${r}`);let n=e.split(".");if(n.length===1&&n.push(""),n.length!==2)throw new Error(`invalid gwei value: ${r}`);for(;n[1].length<t;)n[1]+="0";if(n[1].length>9){let s=BigInt(n[1].substring(0,9));n[1].substring(9).match(/^0+$/)||s++,n[1]=s.toString()}return BigInt(n[0]+n[1])}function Lc(r){return new $r(r,async(t,e,n)=>{n.setHeader("User-Agent","ethers");let s;try{let[i,o]=await Promise.all([n.send(),t()]);s=i;let a=s.bodyJson.standard;return{gasPrice:o.gasPrice,maxFeePerGas:Uc(a.maxFee,9),maxPriorityFeePerGas:Uc(a.maxPriorityFee,9)}}catch(i){w(!1,`error encountered with polygon gas station (${JSON.stringify(n.url)})`,"SERVER_ERROR",{request:n,response:s,error:i})}})}var Dc=!1;function rh(){if(Dc)return;Dc=!0;function r(t,e,n){let s=function(){let i=new Ct(t,e);return n.ensNetwork!=null&&i.attachPlugin(new Ar(null,n.ensNetwork)),i.attachPlugin(new wr),(n.plugins||[]).forEach(o=>{i.attachPlugin(o)}),i};Ct.register(t,s),Ct.register(e,s),n.altNames&&n.altNames.forEach(i=>{Ct.register(i,s)})}r("mainnet",1,{ensNetwork:1,altNames:["homestead"]}),r("ropsten",3,{ensNetwork:3}),r("rinkeby",4,{ensNetwork:4}),r("goerli",5,{ensNetwork:5}),r("kovan",42,{ensNetwork:42}),r("sepolia",11155111,{ensNetwork:11155111}),r("holesky",17e3,{ensNetwork:17e3}),r("classic",61,{}),r("classicKotti",6,{}),r("arbitrum",42161,{ensNetwork:1}),r("arbitrum-goerli",421613,{}),r("arbitrum-sepolia",421614,{}),r("base",8453,{ensNetwork:1}),r("base-goerli",84531,{}),r("base-sepolia",84532,{}),r("bnb",56,{ensNetwork:1}),r("bnbt",97,{}),r("filecoin",314,{}),r("filecoin-calibration",314159,{}),r("linea",59144,{ensNetwork:1}),r("linea-goerli",59140,{}),r("linea-sepolia",59141,{}),r("matic",137,{ensNetwork:1,plugins:[Lc("https://gasstation.polygon.technology/v2")]}),r("matic-amoy",80002,{}),r("matic-mumbai",80001,{altNames:["maticMumbai","maticmum"],plugins:[Lc("https://gasstation-testnet.polygon.technology/v2")]}),r("optimism",10,{ensNetwork:1,plugins:[]}),r("optimism-goerli",420,{}),r("optimism-sepolia",11155420,{}),r("xdai",100,{ensNetwork:1})}function Ri(r){return JSON.parse(JSON.stringify(r))}var us=class{#t;#e;#r;#n;constructor(t){this.#t=t,this.#e=null,this.#r=4e3,this.#n=-2}get pollingInterval(){return this.#r}set pollingInterval(t){this.#r=t}async#s(){try{let t=await this.#t.getBlockNumber();if(this.#n===-2){this.#n=t;return}if(t!==this.#n){for(let e=this.#n+1;e<=t;e++){if(this.#e==null)return;await this.#t.emit("block",e)}this.#n=t}}catch{}this.#e!=null&&(this.#e=this.#t._setTimeout(this.#s.bind(this),this.#r))}start(){this.#e||(this.#e=this.#t._setTimeout(this.#s.bind(this),this.#r),this.#s())}stop(){this.#e&&(this.#t._clearTimeout(this.#e),this.#e=null)}pause(t){this.stop(),t&&(this.#n=-2)}resume(){this.start()}},tn=class{#t;#e;#r;constructor(t){this.#t=t,this.#r=!1,this.#e=e=>{this._poll(e,this.#t)}}async _poll(t,e){throw new Error("sub-classes must override this")}start(){this.#r||(this.#r=!0,this.#e(-2),this.#t.on("block",this.#e))}stop(){this.#r&&(this.#r=!1,this.#t.off("block",this.#e))}pause(t){this.stop()}resume(){this.start()}},fs=class extends tn{#t;#e;constructor(t,e){super(t),this.#t=e,this.#e=-2}pause(t){t&&(this.#e=-2),super.pause(t)}async _poll(t,e){let n=await e.getBlock(this.#t);n!=null&&(this.#e===-2?this.#e=n.number:n.number>this.#e&&(e.emit(this.#t,n.number),this.#e=n.number))}},hs=class extends tn{#t;constructor(t,e){super(t),this.#t=Ri(e)}async _poll(t,e){throw new Error("@TODO")}},ds=class extends tn{#t;constructor(t,e){super(t),this.#t=e}async _poll(t,e){let n=await e.getTransactionReceipt(this.#t);n&&e.emit(this.#t,n)}},xe=class{#t;#e;#r;#n;#s;constructor(t,e){this.#t=t,this.#e=Ri(e),this.#r=this.#o.bind(this),this.#n=!1,this.#s=-2}async#o(t){if(this.#s===-2)return;let e=Ri(this.#e);e.fromBlock=this.#s+1,e.toBlock=t;let n=await this.#t.getLogs(e);if(n.length===0){this.#s<t-60&&(this.#s=t-60);return}for(let s of n)this.#t.emit(this.#e,s),this.#s=s.blockNumber}start(){this.#n||(this.#n=!0,this.#s===-2&&this.#t.getBlockNumber().then(t=>{this.#s=t}),this.#t.on("block",this.#r))}stop(){this.#n&&(this.#n=!1,this.#t.off("block",this.#r))}pause(t){this.stop(),t&&(this.#s=-2)}resume(){this.start()}};var nh=BigInt(2),sh=10;function ps(r){return r&&typeof r.then=="function"}function gs(r,t){return r+":"+JSON.stringify(t,(e,n)=>{if(n==null)return"null";if(typeof n=="bigint")return`bigint:${n.toString()}`;if(typeof n=="string")return n.toLowerCase();if(typeof n=="object"&&!Array.isArray(n)){let s=Object.keys(n);return s.sort(),s.reduce((i,o)=>(i[o]=n[o],i),{})}return n})}var br=class{name;constructor(t){N(this,{name:t})}start(){}stop(){}pause(t){}resume(){}};function ih(r){return JSON.parse(JSON.stringify(r))}function Oi(r){return r=Array.from(new Set(r).values()),r.sort(),r}async function ki(r,t){if(r==null)throw new Error("invalid event");if(Array.isArray(r)&&(r={topics:r}),typeof r=="string")switch(r){case"block":case"debug":case"error":case"finalized":case"network":case"pending":case"safe":return{type:r,tag:r}}if(F(r,32)){let e=r.toLowerCase();return{type:"transaction",tag:gs("tx",{hash:e}),hash:e}}if(r.orphan){let e=r;return{type:"orphan",tag:gs("orphan",e),filter:ih(e)}}if(r.address||r.topics){let e=r,n={topics:(e.topics||[]).map(s=>s==null?null:Array.isArray(s)?Oi(s.map(i=>i.toLowerCase())):s.toLowerCase())};if(e.address){let s=[],i=[],o=a=>{F(a)?s.push(a):i.push((async()=>{s.push(await at(a,t))})())};Array.isArray(e.address)?e.address.forEach(o):o(e.address),i.length&&await Promise.all(i),n.address=Oi(s.map(a=>a.toLowerCase()))}return{filter:n,tag:gs("event",n),type:"event"}}h(!1,"unknown ProviderEvent","event",r)}function Ci(){return new Date().getTime()}var oh={cacheTimeout:250,pollingInterval:4e3},en=class{#t;#e;#r;#n;#s;#o;#i;#a;#d;#l;#p;#g;constructor(t,e){if(this.#g=Object.assign({},oh,e||{}),t==="any")this.#o=!0,this.#s=null;else if(t){let n=Ct.from(t);this.#o=!1,this.#s=Promise.resolve(n),setTimeout(()=>{this.emit("network",n,null)},0)}else this.#o=!1,this.#s=null;this.#a=-1,this.#i=new Map,this.#t=new Map,this.#e=new Map,this.#r=null,this.#n=!1,this.#d=1,this.#l=new Map,this.#p=!1}get pollingInterval(){return this.#g.pollingInterval}get provider(){return this}get plugins(){return Array.from(this.#e.values())}attachPlugin(t){if(this.#e.get(t.name))throw new Error(`cannot replace existing plugin: ${t.name} `);return this.#e.set(t.name,t.connect(this)),this}getPlugin(t){return this.#e.get(t)||null}get disableCcipRead(){return this.#p}set disableCcipRead(t){this.#p=!!t}async#c(t){let e=this.#g.cacheTimeout;if(e<0)return await this._perform(t);let n=gs(t.method,t),s=this.#i.get(n);return s||(s=this._perform(t),this.#i.set(n,s),setTimeout(()=>{this.#i.get(n)===s&&this.#i.delete(n)},e)),await s}async ccipReadFetch(t,e,n){if(this.disableCcipRead||n.length===0||t.to==null)return null;let s=t.to.toLowerCase(),i=e.toLowerCase(),o=[];for(let a=0;a<n.length;a++){let c=n[a],l=c.replace("{sender}",s).replace("{data}",i),u=new Tt(l);c.indexOf("{data}")===-1&&(u.body={data:i,sender:s}),this.emit("debug",{action:"sendCcipReadFetchRequest",request:u,index:a,urls:n});let f="unknown error",d;try{d=await u.send()}catch(g){o.push(g.message),this.emit("debug",{action:"receiveCcipReadFetchError",request:u,result:{error:g}});continue}try{let g=d.bodyJson;if(g.data)return this.emit("debug",{action:"receiveCcipReadFetchResult",request:u,result:g}),g.data;g.message&&(f=g.message),this.emit("debug",{action:"receiveCcipReadFetchError",request:u,result:g})}catch{}w(d.statusCode<400||d.statusCode>=500,`response not found during CCIP fetch: ${f}`,"OFFCHAIN_FAULT",{reason:"404_MISSING_RESOURCE",transaction:t,info:{url:c,errorMessage:f}}),o.push(f)}w(!1,`error encountered during CCIP fetch: ${o.map(a=>JSON.stringify(a)).join(", ")}`,"OFFCHAIN_FAULT",{reason:"500_SERVER_ERROR",transaction:t,info:{urls:n,errorMessages:o}})}_wrapBlock(t,e){return new Wr(Tc(t),this)}_wrapLog(t,e){return new Qt(Oc(t),this)}_wrapTransactionReceipt(t,e){return new Ke(Sc(t),this)}_wrapTransactionResponse(t,e){return new be(Ii(t),this)}_detectNetwork(){w(!1,"sub-classes must implement this","UNSUPPORTED_OPERATION",{operation:"_detectNetwork"})}async _perform(t){w(!1,`unsupported method: ${t.method}`,"UNSUPPORTED_OPERATION",{operation:t.method,info:t})}async getBlockNumber(){let t=T(await this.#c({method:"getBlockNumber"}),"%response");return this.#a>=0&&(this.#a=t),t}_getAddress(t){return at(t,this)}_getBlockTag(t){if(t==null)return"latest";switch(t){case"earliest":return"0x0";case"finalized":case"latest":case"pending":case"safe":return t}if(F(t))return F(t,32)?t:yt(t);if(typeof t=="bigint"&&(t=T(t,"blockTag")),typeof t=="number")return t>=0?yt(t):this.#a>=0?yt(this.#a+t):this.getBlockNumber().then(e=>yt(e+t));h(!1,"invalid blockTag","blockTag",t)}_getFilter(t){let e=(t.topics||[]).map(c=>c==null?null:Array.isArray(c)?Oi(c.map(l=>l.toLowerCase())):c.toLowerCase()),n="blockHash"in t?t.blockHash:void 0,s=(c,l,u)=>{let f;switch(c.length){case 0:break;case 1:f=c[0];break;default:c.sort(),f=c}if(n&&(l!=null||u!=null))throw new Error("invalid filter");let d={};return f&&(d.address=f),e.length&&(d.topics=e),l&&(d.fromBlock=l),u&&(d.toBlock=u),n&&(d.blockHash=n),d},i=[];if(t.address)if(Array.isArray(t.address))for(let c of t.address)i.push(this._getAddress(c));else i.push(this._getAddress(t.address));let o;"fromBlock"in t&&(o=this._getBlockTag(t.fromBlock));let a;return"toBlock"in t&&(a=this._getBlockTag(t.toBlock)),i.filter(c=>typeof c!="string").length||o!=null&&typeof o!="string"||a!=null&&typeof a!="string"?Promise.all([Promise.all(i),o,a]).then(c=>s(c[0],c[1],c[2])):s(i,o,a)}_getTransactionRequest(t){let e=Ee(t),n=[];if(["to","from"].forEach(s=>{if(e[s]==null)return;let i=at(e[s],this);ps(i)?n.push((async function(){e[s]=await i})()):e[s]=i}),e.blockTag!=null){let s=this._getBlockTag(e.blockTag);ps(s)?n.push((async function(){e.blockTag=await s})()):e.blockTag=s}return n.length?(async function(){return await Promise.all(n),e})():e}async getNetwork(){if(this.#s==null){let s=(async()=>{try{let i=await this._detectNetwork();return this.emit("network",i,null),i}catch(i){throw this.#s===s&&(this.#s=null),i}})();return this.#s=s,(await s).clone()}let t=this.#s,[e,n]=await Promise.all([t,this._detectNetwork()]);return e.chainId!==n.chainId&&(this.#o?(this.emit("network",n,e),this.#s===t&&(this.#s=Promise.resolve(n))):w(!1,`network changed: ${e.chainId} => ${n.chainId} `,"NETWORK_ERROR",{event:"changed"})),e.clone()}async getFeeData(){let t=await this.getNetwork(),e=async()=>{let{_block:s,gasPrice:i,priorityFee:o}=await nt({_block:this.#w("latest",!1),gasPrice:(async()=>{try{let u=await this.#c({method:"getGasPrice"});return x(u,"%response")}catch{}return null})(),priorityFee:(async()=>{try{let u=await this.#c({method:"getPriorityFee"});return x(u,"%response")}catch{}return null})()}),a=null,c=null,l=this._wrapBlock(s,t);return l&&l.baseFeePerGas&&(c=o??BigInt("1000000000"),a=l.baseFeePerGas*nh+c),new hr(i,a,c)},n=t.getPlugin("org.ethers.plugins.network.FetchUrlFeeDataPlugin");if(n){let s=new Tt(n.url),i=await n.processFunc(e,this,s);return new hr(i.gasPrice,i.maxFeePerGas,i.maxPriorityFeePerGas)}return await e()}async estimateGas(t){let e=this._getTransactionRequest(t);return ps(e)&&(e=await e),x(await this.#c({method:"estimateGas",transaction:e}),"%response")}async#u(t,e,n){w(n<sh,"CCIP read exceeded maximum redirections","OFFCHAIN_FAULT",{reason:"TOO_MANY_REDIRECTS",transaction:Object.assign({},t,{blockTag:e,enableCcipRead:!0})});let s=Ee(t);try{return b(await this._perform({method:"call",transaction:s,blockTag:e}))}catch(i){if(!this.disableCcipRead&&$e(i)&&i.data&&n>=0&&e==="latest"&&s.to!=null&&j(i.data,0,4)==="0x556f1830"){let o=i.data,a=await at(s.to,this),c;try{c=fh(j(i.data,4))}catch(f){w(!1,f.message,"OFFCHAIN_FAULT",{reason:"BAD_DATA",transaction:s,info:{data:o}})}w(c.sender.toLowerCase()===a.toLowerCase(),"CCIP Read sender mismatch","CALL_EXCEPTION",{action:"call",data:o,reason:"OffchainLookup",transaction:s,invocation:null,revert:{signature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",name:"OffchainLookup",args:c.errorArgs}});let l=await this.ccipReadFetch(s,c.calldata,c.urls);w(l!=null,"CCIP Read failed to fetch data","OFFCHAIN_FAULT",{reason:"FETCH_FAILED",transaction:s,info:{data:i.data,errorArgs:c.errorArgs}});let u={to:a,data:H([c.selector,uh([l,c.extraData])])};this.emit("debug",{action:"sendCcipReadCall",transaction:u});try{let f=await this.#u(u,e,n+1);return this.emit("debug",{action:"receiveCcipReadCallResult",transaction:Object.assign({},u),result:f}),f}catch(f){throw this.emit("debug",{action:"receiveCcipReadCallError",transaction:Object.assign({},u),error:f}),f}}throw i}}async#f(t){let{value:e}=await nt({network:this.getNetwork(),value:t});return e}async call(t){let{tx:e,blockTag:n}=await nt({tx:this._getTransactionRequest(t),blockTag:this._getBlockTag(t.blockTag)});return await this.#f(this.#u(e,n,t.enableCcipRead?0:-1))}async#h(t,e,n){let s=this._getAddress(e),i=this._getBlockTag(n);return(typeof s!="string"||typeof i!="string")&&([s,i]=await Promise.all([s,i])),await this.#f(this.#c(Object.assign(t,{address:s,blockTag:i})))}async getBalance(t,e){return x(await this.#h({method:"getBalance"},t,e),"%response")}async getTransactionCount(t,e){return T(await this.#h({method:"getTransactionCount"},t,e),"%response")}async getCode(t,e){return b(await this.#h({method:"getCode"},t,e))}async getStorage(t,e,n){let s=x(e,"position");return b(await this.#h({method:"getStorage",position:s},t,n))}async broadcastTransaction(t){let{blockNumber:e,hash:n,network:s}=await nt({blockNumber:this.getBlockNumber(),hash:this._perform({method:"broadcastTransaction",signedTransaction:t}),network:this.getNetwork()}),i=De.from(t);if(i.hash!==n)throw new Error("@TODO: the returned hash did not match");return this._wrapTransactionResponse(i,s).replaceableTransaction(e)}async#w(t,e){if(F(t,32))return await this.#c({method:"getBlock",blockHash:t,includeTransactions:e});let n=this._getBlockTag(t);return typeof n!="string"&&(n=await n),await this.#c({method:"getBlock",blockTag:n,includeTransactions:e})}async getBlock(t,e){let{network:n,params:s}=await nt({network:this.getNetwork(),params:this.#w(t,!!e)});return s==null?null:this._wrapBlock(s,n)}async getTransaction(t){let{network:e,params:n}=await nt({network:this.getNetwork(),params:this.#c({method:"getTransaction",hash:t})});return n==null?null:this._wrapTransactionResponse(n,e)}async getTransactionReceipt(t){let{network:e,params:n}=await nt({network:this.getNetwork(),params:this.#c({method:"getTransactionReceipt",hash:t})});if(n==null)return null;if(n.gasPrice==null&&n.effectiveGasPrice==null){let s=await this.#c({method:"getTransaction",hash:t});if(s==null)throw new Error("report this; could not find tx or effectiveGasPrice");n.effectiveGasPrice=s.gasPrice}return this._wrapTransactionReceipt(n,e)}async getTransactionResult(t){let{result:e}=await nt({network:this.getNetwork(),result:this.#c({method:"getTransactionResult",hash:t})});return e==null?null:b(e)}async getLogs(t){let e=this._getFilter(t);ps(e)&&(e=await e);let{network:n,params:s}=await nt({network:this.getNetwork(),params:this.#c({method:"getLogs",filter:e})});return s.map(i=>this._wrapLog(i,n))}_getProvider(t){w(!1,"provider cannot connect to target network","UNSUPPORTED_OPERATION",{operation:"_getProvider()"})}async getResolver(t){return await gr.fromName(this,t)}async getAvatar(t){let e=await this.getResolver(t);return e?await e.getAvatar():null}async resolveName(t){let e=await this.getResolver(t);return e?await e.getAddress():null}async lookupAddress(t){t=L(t);let e=cr(t.substring(2).toLowerCase()+".addr.reverse");try{let n=await gr.getEnsAddress(this),i=await new Jt(n,["function resolver(bytes32) view returns (address)"],this).resolver(e);if(i==null||i===$t)return null;let a=await new Jt(i,["function name(bytes32) view returns (string)"],this).name(e);return await this.resolveName(a)!==t?null:a}catch(n){if(Y(n,"BAD_DATA")&&n.value==="0x"||Y(n,"CALL_EXCEPTION"))return null;throw n}return null}async waitForTransaction(t,e,n){let s=e??1;return s===0?this.getTransactionReceipt(t):new Promise(async(i,o)=>{let a=null,c=(async l=>{try{let u=await this.getTransactionReceipt(t);if(u!=null&&l-u.blockNumber+1>=s){i(u),a&&(clearTimeout(a),a=null);return}}catch(u){console.log("EEE",u)}this.once("block",c)});n!=null&&(a=setTimeout(()=>{a!=null&&(a=null,this.off("block",c),o(V("timeout","TIMEOUT",{reason:"timeout"})))},n)),c(await this.getBlockNumber())})}async waitForBlock(t){w(!1,"not implemented yet","NOT_IMPLEMENTED",{operation:"waitForBlock"})}_clearTimeout(t){let e=this.#l.get(t);e&&(e.timer&&clearTimeout(e.timer),this.#l.delete(t))}_setTimeout(t,e){e==null&&(e=0);let n=this.#d++,s=()=>{this.#l.delete(n),t()};if(this.paused)this.#l.set(n,{timer:null,func:s,time:e});else{let i=setTimeout(s,e);this.#l.set(n,{timer:i,func:s,time:Ci()})}return n}_forEachSubscriber(t){for(let e of this.#t.values())t(e.subscriber)}_getSubscriber(t){switch(t.type){case"debug":case"error":case"network":return new br(t.type);case"block":{let e=new us(this);return e.pollingInterval=this.pollingInterval,e}case"safe":case"finalized":return new fs(this,t.type);case"event":return new xe(this,t.filter);case"transaction":return new ds(this,t.hash);case"orphan":return new hs(this,t.filter)}throw new Error(`unsupported event: ${t.type}`)}_recoverSubscriber(t,e){for(let n of this.#t.values())if(n.subscriber===t){n.started&&n.subscriber.stop(),n.subscriber=e,n.started&&e.start(),this.#r!=null&&e.pause(this.#r);break}}async#m(t,e){let n=await ki(t,this);return n.type==="event"&&e&&e.length>0&&e[0].removed===!0&&(n=await ki({orphan:"drop-log",log:e[0]},this)),this.#t.get(n.tag)||null}async#y(t){let e=await ki(t,this),n=e.tag,s=this.#t.get(n);return s||(s={subscriber:this._getSubscriber(e),tag:n,addressableMap:new WeakMap,nameMap:new Map,started:!1,listeners:[]},this.#t.set(n,s)),s}async on(t,e){let n=await this.#y(t);return n.listeners.push({listener:e,once:!1}),n.started||(n.subscriber.start(),n.started=!0,this.#r!=null&&n.subscriber.pause(this.#r)),this}async once(t,e){let n=await this.#y(t);return n.listeners.push({listener:e,once:!0}),n.started||(n.subscriber.start(),n.started=!0,this.#r!=null&&n.subscriber.pause(this.#r)),this}async emit(t,...e){let n=await this.#m(t,e);if(!n||n.listeners.length===0)return!1;let s=n.listeners.length;return n.listeners=n.listeners.filter(({listener:i,once:o})=>{let a=new Ie(this,o?null:i,t);try{i.call(this,...e,a)}catch{}return!o}),n.listeners.length===0&&(n.started&&n.subscriber.stop(),this.#t.delete(n.tag)),s>0}async listenerCount(t){if(t){let n=await this.#m(t);return n?n.listeners.length:0}let e=0;for(let{listeners:n}of this.#t.values())e+=n.length;return e}async listeners(t){if(t){let n=await this.#m(t);return n?n.listeners.map(({listener:s})=>s):[]}let e=[];for(let{listeners:n}of this.#t.values())e=e.concat(n.map(({listener:s})=>s));return e}async off(t,e){let n=await this.#m(t);if(!n)return this;if(e){let s=n.listeners.map(({listener:i})=>i).indexOf(e);s>=0&&n.listeners.splice(s,1)}return(!e||n.listeners.length===0)&&(n.started&&n.subscriber.stop(),this.#t.delete(n.tag)),this}async removeAllListeners(t){if(t){let{tag:e,started:n,subscriber:s}=await this.#y(t);n&&s.stop(),this.#t.delete(e)}else for(let[e,{started:n,subscriber:s}]of this.#t)n&&s.stop(),this.#t.delete(e);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.#n}destroy(){this.removeAllListeners();for(let t of this.#l.keys())this._clearTimeout(t);this.#n=!0}get paused(){return this.#r!=null}set paused(t){!!t!==this.paused&&(this.paused?this.resume():this.pause(!1))}pause(t){if(this.#a=-1,this.#r!=null){if(this.#r==!!t)return;w(!1,"cannot change pause type; resume first","UNSUPPORTED_OPERATION",{operation:"pause"})}this._forEachSubscriber(e=>e.pause(t)),this.#r=!!t;for(let e of this.#l.values())e.timer&&clearTimeout(e.timer),e.time=Ci()-e.time}resume(){if(this.#r!=null){this._forEachSubscriber(t=>t.resume()),this.#r=null;for(let t of this.#l.values()){let e=t.time;e<0&&(e=0),t.time=Ci(),setTimeout(t.func,e)}}}};function ah(r,t){try{let e=Ti(r,t);if(e)return ce(e)}catch{}return null}function Ti(r,t){if(r==="0x")return null;try{let e=T(j(r,t,t+32)),n=T(j(r,e,e+32));return j(r,e+32,e+32+n)}catch{}return null}function Fc(r){let t=X(r);if(t.length>32)throw new Error("internal; should not happen");let e=new Uint8Array(32);return e.set(t,32-t.length),e}function ch(r){if(r.length%32===0)return r;let t=new Uint8Array(Math.ceil(r.length/32)*32);return t.set(r),t}var lh=new Uint8Array([]);function uh(r){let t=[],e=0;for(let n=0;n<r.length;n++)t.push(lh),e+=32;for(let n=0;n<r.length;n++){let s=R(r[n]);t[n]=Fc(e),t.push(Fc(s.length)),t.push(ch(s)),e+=32+Math.ceil(s.length/32)*32}return H(t)}var Mc="0x0000000000000000000000000000000000000000000000000000000000000000";function fh(r){let t={sender:"",urls:[],calldata:"",selector:"",extraData:"",errorArgs:[]};w(Kt(r)>=160,"insufficient OffchainLookup data","OFFCHAIN_FAULT",{reason:"insufficient OffchainLookup data"});let e=j(r,0,32);w(j(e,0,12)===j(Mc,0,12),"corrupt OffchainLookup sender","OFFCHAIN_FAULT",{reason:"corrupt OffchainLookup sender"}),t.sender=j(e,12);try{let n=[],s=T(j(r,32,64)),i=T(j(r,s,s+32)),o=j(r,s+32);for(let a=0;a<i;a++){let c=ah(o,a*32);if(c==null)throw new Error("abort");n.push(c)}t.urls=n}catch{w(!1,"corrupt OffchainLookup urls","OFFCHAIN_FAULT",{reason:"corrupt OffchainLookup urls"})}try{let n=Ti(r,64);if(n==null)throw new Error("abort");t.calldata=n}catch{w(!1,"corrupt OffchainLookup calldata","OFFCHAIN_FAULT",{reason:"corrupt OffchainLookup calldata"})}w(j(r,100,128)===j(Mc,0,28),"corrupt OffchainLookup callbaackSelector","OFFCHAIN_FAULT",{reason:"corrupt OffchainLookup callbaackSelector"}),t.selector=j(r,96,100);try{let n=Ti(r,128);if(n==null)throw new Error("abort");t.extraData=n}catch{w(!1,"corrupt OffchainLookup extraData","OFFCHAIN_FAULT",{reason:"corrupt OffchainLookup extraData"})}return t.errorArgs="sender,urls,calldata,selector,extraData".split(/,/).map(n=>t[n]),t}function je(r,t){if(r.provider)return r.provider;w(!1,"missing provider","UNSUPPORTED_OPERATION",{operation:t})}async function Gc(r,t){let e=Ee(t);if(e.to!=null&&(e.to=at(e.to,r)),e.from!=null){let n=e.from;e.from=Promise.all([r.getAddress(),at(n,r)]).then(([s,i])=>(h(s.toLowerCase()===i.toLowerCase(),"transaction from mismatch","tx.from",i),s))}else e.from=r.getAddress();return await nt(e)}var rn=class{provider;constructor(t){N(this,{provider:t||null})}async getNonce(t){return je(this,"getTransactionCount").getTransactionCount(await this.getAddress(),t)}async populateCall(t){return await Gc(this,t)}async populateTransaction(t){let e=je(this,"populateTransaction"),n=await Gc(this,t);n.nonce==null&&(n.nonce=await this.getNonce("pending")),n.gasLimit==null&&(n.gasLimit=await this.estimateGas(n));let s=await this.provider.getNetwork();if(n.chainId!=null){let o=x(n.chainId);h(o===s.chainId,"transaction chainId mismatch","tx.chainId",t.chainId)}else n.chainId=s.chainId;let i=n.maxFeePerGas!=null||n.maxPriorityFeePerGas!=null;if(n.gasPrice!=null&&(n.type===2||i)?h(!1,"eip-1559 transaction do not support gasPrice","tx",t):(n.type===0||n.type===1)&&i&&h(!1,"pre-eip-1559 transaction do not support maxFeePerGas/maxPriorityFeePerGas","tx",t),(n.type===2||n.type==null)&&n.maxFeePerGas!=null&&n.maxPriorityFeePerGas!=null)n.type=2;else if(n.type===0||n.type===1){let o=await e.getFeeData();w(o.gasPrice!=null,"network does not support gasPrice","UNSUPPORTED_OPERATION",{operation:"getGasPrice"}),n.gasPrice==null&&(n.gasPrice=o.gasPrice)}else{let o=await e.getFeeData();if(n.type==null)if(o.maxFeePerGas!=null&&o.maxPriorityFeePerGas!=null)if(n.authorizationList&&n.authorizationList.length?n.type=4:n.type=2,n.gasPrice!=null){let a=n.gasPrice;delete n.gasPrice,n.maxFeePerGas=a,n.maxPriorityFeePerGas=a}else n.maxFeePerGas==null&&(n.maxFeePerGas=o.maxFeePerGas),n.maxPriorityFeePerGas==null&&(n.maxPriorityFeePerGas=o.maxPriorityFeePerGas);else o.gasPrice!=null?(w(!i,"network does not support EIP-1559","UNSUPPORTED_OPERATION",{operation:"populateTransaction"}),n.gasPrice==null&&(n.gasPrice=o.gasPrice),n.type=0):w(!1,"failed to get consistent fee data","UNSUPPORTED_OPERATION",{operation:"signer.getFeeData"});else(n.type===2||n.type===3||n.type===4)&&(n.maxFeePerGas==null&&(n.maxFeePerGas=o.maxFeePerGas),n.maxPriorityFeePerGas==null&&(n.maxPriorityFeePerGas=o.maxPriorityFeePerGas))}return await nt(n)}async populateAuthorization(t){let e=Object.assign({},t);return e.chainId==null&&(e.chainId=(await je(this,"getNetwork").getNetwork()).chainId),e.nonce==null&&(e.nonce=await this.getNonce()),e}async estimateGas(t){return je(this,"estimateGas").estimateGas(await this.populateCall(t))}async call(t){return je(this,"call").call(await this.populateCall(t))}async resolveName(t){return await je(this,"resolveName").resolveName(t)}async sendTransaction(t){let e=je(this,"sendTransaction"),n=await this.populateTransaction(t);delete n.from;let s=De.from(n);return await e.broadcastTransaction(await this.signTransaction(s))}authorize(t){w(!1,"authorization not implemented for this signer","UNSUPPORTED_OPERATION",{operation:"authorize"})}};function hh(r){return JSON.parse(JSON.stringify(r))}var ms=class{#t;#e;#r;#n;#s;#o;constructor(t){this.#t=t,this.#e=null,this.#r=this.#i.bind(this),this.#n=!1,this.#s=null,this.#o=!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#i(t){try{this.#e==null&&(this.#e=this._subscribe(this.#t));let e=null;try{e=await this.#e}catch(i){if(!Y(i,"UNSUPPORTED_OPERATION")||i.operation!=="eth_newFilter")throw i}if(e==null){this.#e=null,this.#t._recoverSubscriber(this,this._recover(this.#t));return}let n=await this.#t.getNetwork();if(this.#s||(this.#s=n),this.#s.chainId!==n.chainId)throw new Error("chaid changed");if(this.#o)return;let s=await this.#t.send("eth_getFilterChanges",[e]);await this._emitResults(this.#t,s)}catch(e){console.log("@TODO",e)}this.#t.once("block",this.#r)}#a(){let t=this.#e;t&&(this.#e=null,t.then(e=>{this.#t.destroyed||this.#t.send("eth_uninstallFilter",[e])}))}start(){this.#n||(this.#n=!0,this.#i(-2))}stop(){this.#n&&(this.#n=!1,this.#o=!0,this.#a(),this.#t.off("block",this.#r))}pause(t){t&&this.#a(),this.#t.off("block",this.#r)}resume(){this.start()}},ys=class extends ms{#t;constructor(t,e){super(t),this.#t=hh(e)}_recover(t){return new xe(t,this.#t)}async _subscribe(t){return await t.send("eth_newFilter",[this.#t])}async _emitResults(t,e){for(let n of e)t.emit(this.#t,t._wrapLog(n,t._network))}},ws=class extends ms{async _subscribe(t){return await t.send("eth_newPendingTransactionFilter",[])}async _emitResults(t,e){for(let n of e)t.emit("pending",n)}};var dh="bigint,boolean,function,number,string,symbol".split(/,/g);function As(r){if(r==null||dh.indexOf(typeof r)>=0||typeof r.getAddress=="function")return r;if(Array.isArray(r))return r.map(As);if(typeof r=="object")return Object.keys(r).reduce((t,e)=>(t[e]=r[e],t),{});throw new Error(`should not happen: ${r} (${typeof r})`)}function ph(r){return new Promise(t=>{setTimeout(t,r)})}function Er(r){return r&&r.toLowerCase()}function Hc(r){return r&&typeof r.pollingInterval=="number"}var Vc={polling:!1,staticNetwork:null,batchStallTime:10,batchMaxSize:1<<20,batchMaxCount:100,cacheTimeout:250,pollingInterval:4e3},xr=class extends rn{address;constructor(t,e){super(t),e=L(e),N(this,{address:e})}connect(t){w(!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){let e=As(t),n=[];if(e.from){let i=e.from;n.push((async()=>{let o=await at(i,this.provider);h(o!=null&&o.toLowerCase()===this.address.toLowerCase(),"from address mismatch","transaction",t),e.from=o})())}else e.from=this.address;if(e.gasLimit==null&&n.push((async()=>{e.gasLimit=await this.provider.estimateGas({...e,from:this.address})})()),e.to!=null){let i=e.to;n.push((async()=>{e.to=await at(i,this.provider)})())}n.length&&await Promise.all(n);let s=this.provider.getRpcTransaction(e);return this.provider.send("eth_sendTransaction",[s])}async sendTransaction(t){let e=await this.provider.getBlockNumber(),n=await this.sendUncheckedTransaction(t);return await new Promise((s,i)=>{let o=[1e3,100],a=0,c=async()=>{try{let l=await this.provider.getTransaction(n);if(l!=null){s(l.replaceableTransaction(e));return}}catch(l){if(Y(l,"CANCELLED")||Y(l,"BAD_DATA")||Y(l,"NETWORK_ERROR")||Y(l,"UNSUPPORTED_OPERATION")){l.info==null&&(l.info={}),l.info.sendTransactionHash=n,i(l);return}if(Y(l,"INVALID_ARGUMENT")&&(a++,l.info==null&&(l.info={}),l.info.sendTransactionHash=n,a>10)){i(l);return}this.provider.emit("error",V("failed to fetch transation after sending (will try again)","UNKNOWN_ERROR",{error:l}))}this.provider._setTimeout(()=>{c()},o.pop()||4e3)};c()})}async signTransaction(t){let e=As(t);if(e.from){let s=await at(e.from,this.provider);h(s!=null&&s.toLowerCase()===this.address.toLowerCase(),"from address mismatch","transaction",t),e.from=s}else e.from=this.address;let n=this.provider.getRpcTransaction(e);return await this.provider.send("eth_signTransaction",[n])}async signMessage(t){let e=typeof t=="string"?wt(t):t;return await this.provider.send("personal_sign",[b(e),this.address.toLowerCase()])}async signTypedData(t,e,n){let s=As(n),i=await lr.resolveNames(t,e,s,async o=>{let a=await at(o);return h(a!=null,"TypedData does not support null address","value",o),a});return await this.provider.send("eth_signTypedData_v4",[this.address.toLowerCase(),JSON.stringify(lr.getPayload(i.domain,e,i.value))])}async unlock(t){return this.provider.send("personal_unlockAccount",[this.address.toLowerCase(),t,null])}async _legacySignMessage(t){let e=typeof t=="string"?wt(t):t;return await this.provider.send("eth_sign",[this.address.toLowerCase(),b(e)])}},bs=class extends en{#t;#e;#r;#n;#s;#o;#i;#a(){if(this.#n)return;let t=this._getOption("batchMaxCount")===1?0:this._getOption("batchStallTime");this.#n=setTimeout(()=>{this.#n=null;let e=this.#r;for(this.#r=[];e.length;){let n=[e.shift()];for(;e.length&&n.length!==this.#t.batchMaxCount;)if(n.push(e.shift()),JSON.stringify(n.map(i=>i.payload)).length>this.#t.batchMaxSize){e.unshift(n.pop());break}(async()=>{let s=n.length===1?n[0].payload:n.map(i=>i.payload);this.emit("debug",{action:"sendRpcPayload",payload:s});try{let i=await this._send(s);this.emit("debug",{action:"receiveRpcResult",result:i});for(let{resolve:o,reject:a,payload:c}of n){if(this.destroyed){a(V("provider destroyed; cancelled request","UNSUPPORTED_OPERATION",{operation:c.method}));continue}let l=i.filter(u=>u.id===c.id)[0];if(l==null){let u=V("missing response for request","BAD_DATA",{value:i,info:{payload:c}});this.emit("error",u),a(u);continue}if("error"in l){a(this.getRpcError(c,l));continue}o(l.result)}}catch(i){this.emit("debug",{action:"receiveRpcError",error:i});for(let{reject:o}of n)o(i)}})()}},t)}constructor(t,e){super(t,e),this.#e=1,this.#t=Object.assign({},Vc,e||{}),this.#r=[],this.#n=null,this.#o=null,this.#i=null;{let s=null,i=new Promise(o=>{s=o});this.#s={promise:i,resolve:s}}let n=this._getOption("staticNetwork");typeof n=="boolean"?(h(!n||t!=="any","staticNetwork cannot be used on special network 'any'","options",e),n&&t!=null&&(this.#o=Ct.from(t))):n&&(h(t==null||n.matches(t),"staticNetwork MUST match network object","options",e),this.#o=n)}_getOption(t){return this.#t[t]}get _network(){return w(this.#o,"network is not available yet","NETWORK_ERROR"),this.#o}async _perform(t){if(t.method==="call"||t.method==="estimateGas"){let n=t.transaction;if(n&&n.type!=null&&x(n.type)&&n.maxFeePerGas==null&&n.maxPriorityFeePerGas==null){let s=await this.getFeeData();s.maxFeePerGas==null&&s.maxPriorityFeePerGas==null&&(t=Object.assign({},t,{transaction:Object.assign({},n,{type:void 0})}))}}let e=this.getRpcRequest(t);return e!=null?await this.send(e.method,e.args):super._perform(t)}async _detectNetwork(){let t=this._getOption("staticNetwork");if(t)if(t===!0){if(this.#o)return this.#o}else return t;return this.#i?await this.#i:this.ready?(this.#i=(async()=>{try{let e=Ct.from(x(await this.send("eth_chainId",[])));return this.#i=null,e}catch(e){throw this.#i=null,e}})(),await this.#i):(this.#i=(async()=>{let e={id:this.#e++,method:"eth_chainId",params:[],jsonrpc:"2.0"};this.emit("debug",{action:"sendRpcPayload",payload:e});let n;try{n=(await this._send(e))[0],this.#i=null}catch(s){throw this.#i=null,this.emit("debug",{action:"receiveRpcError",error:s}),s}if(this.emit("debug",{action:"receiveRpcResult",result:n}),"result"in n)return Ct.from(x(n.result));throw this.getRpcError(e,n)})(),await this.#i)}_start(){this.#s==null||this.#s.resolve==null||(this.#s.resolve(),this.#s=null,(async()=>{for(;this.#o==null&&!this.destroyed;)try{this.#o=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 ph(1e3)}this.#a()})())}async _waitUntilReady(){if(this.#s!=null)return await this.#s.promise}_getSubscriber(t){return t.type==="pending"?new ws(this):t.type==="event"?this._getOption("polling")?new xe(this,t.filter):new ys(this,t.filter):t.type==="orphan"&&t.filter.orphan==="drop-log"?new br("orphan"):super._getSubscriber(t)}get ready(){return this.#s==null}getRpcTransaction(t){let e={};return["chainId","gasLimit","gasPrice","type","maxFeePerGas","maxPriorityFeePerGas","nonce","value"].forEach(n=>{if(t[n]==null)return;let s=n;n==="gasLimit"&&(s="gas"),e[s]=yt(x(t[n],`tx.${n}`))}),["from","to","data"].forEach(n=>{t[n]!=null&&(e[n]=b(t[n]))}),t.accessList&&(e.accessList=Rt(t.accessList)),t.blobVersionedHashes&&(e.blobVersionedHashes=t.blobVersionedHashes.map(n=>n.toLowerCase())),t.authorizationList&&(e.authorizationList=t.authorizationList.map(n=>{let s=Dr(n);return{address:s.address,nonce:yt(s.nonce),chainId:yt(s.chainId),yParity:yt(s.signature.yParity),r:yt(s.signature.r),s:yt(s.signature.s)}})),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:[Er(t.address),t.blockTag]};case"getTransactionCount":return{method:"eth_getTransactionCount",args:[Er(t.address),t.blockTag]};case"getCode":return{method:"eth_getCode",args:[Er(t.address),t.blockTag]};case"getStorage":return{method:"eth_getStorageAt",args:[Er(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&&t.filter.address!=null&&(Array.isArray(t.filter.address)?t.filter.address=t.filter.address.map(Er):t.filter.address=Er(t.filter.address)),{method:"eth_getLogs",args:[t.filter]}}return null}getRpcError(t,e){let{method:n}=t,{error:s}=e;if(n==="eth_estimateGas"&&s.message){let a=s.message;if(!a.match(/revert/i)&&a.match(/insufficient funds/i))return V("insufficient funds","INSUFFICIENT_FUNDS",{transaction:t.params[0],info:{payload:t,error:s}});if(a.match(/nonce/i)&&a.match(/too low/i))return V("nonce has already been used","NONCE_EXPIRED",{transaction:t.params[0],info:{payload:t,error:s}})}if(n==="eth_call"||n==="eth_estimateGas"){let a=Si(s),c=Ae.getBuiltinCallException(n==="eth_call"?"call":"estimateGas",t.params[0],a?a.data:null);return c.info={error:s,payload:t},c}let i=JSON.stringify(gh(s));if(typeof s.message=="string"&&s.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:s}});if(n==="eth_sendRawTransaction"||n==="eth_sendTransaction"){let a=t.params[0];if(i.match(/insufficient funds|base fee exceeds gas limit/i))return V("insufficient funds for intrinsic transaction cost","INSUFFICIENT_FUNDS",{transaction:a,info:{error:s}});if(i.match(/nonce/i)&&i.match(/too low/i))return V("nonce has already been used","NONCE_EXPIRED",{transaction:a,info:{error:s}});if(i.match(/replacement transaction/i)&&i.match(/underpriced/i))return V("replacement fee too low","REPLACEMENT_UNDERPRICED",{transaction:a,info:{error:s}});if(i.match(/only replay-protected/i))return V("legacy pre-eip-155 transactions not supported","UNSUPPORTED_OPERATION",{operation:n,info:{transaction:a,info:{error:s}}})}let o=!!i.match(/the method .* does not exist/i);return o||s&&s.details&&s.details.startsWith("Unauthorized method:")&&(o=!0),o?V("unsupported operation","UNSUPPORTED_OPERATION",{operation:t.method,info:{error:s,payload:t}}):V("could not coalesce error","UNKNOWN_ERROR",{error:s,payload:t})}send(t,e){if(this.destroyed)return Promise.reject(V("provider destroyed; cancelled request","UNSUPPORTED_OPERATION",{operation:t}));let n=this.#e++,s=new Promise((i,o)=>{this.#r.push({resolve:i,reject:o,payload:{method:t,params:e,id:n,jsonrpc:"2.0"}})});return this.#a(),s}async getSigner(t){t==null&&(t=0);let e=this.send("eth_accounts",[]);if(typeof t=="number"){let s=await e;if(t>=s.length)throw new Error("no such account");return new xr(this,s[t])}let{accounts:n}=await nt({network:this.getNetwork(),accounts:e});t=L(t);for(let s of n)if(L(s)===t)return new xr(this,t);throw new Error("invalid account")}async listAccounts(){return(await this.send("eth_accounts",[])).map(e=>new xr(this,e))}destroy(){this.#n&&(clearTimeout(this.#n),this.#n=null);for(let{payload:t,reject:e}of this.#r)e(V("provider destroyed; cancelled request","UNSUPPORTED_OPERATION",{operation:t.method}));this.#r=[],super.destroy()}},Es=class extends bs{#t;constructor(t,e){super(t,e);let n=this._getOption("pollingInterval");n==null&&(n=Vc.pollingInterval),this.#t=n}_getSubscriber(t){let e=super._getSubscriber(t);return Hc(e)&&(e.pollingInterval=this.#t),e}get pollingInterval(){return this.#t}set pollingInterval(t){if(!Number.isInteger(t)||t<0)throw new Error("invalid interval");this.#t=t,this._forEachSubscriber(e=>{Hc(e)&&(e.pollingInterval=this.#t)})}};function Si(r){if(r==null)return null;if(typeof r.message=="string"&&r.message.match(/revert/i)&&F(r.data))return{message:r.message,data:r.data};if(typeof r=="object"){for(let t in r){let e=Si(r[t]);if(e)return e}return null}if(typeof r=="string")try{return Si(JSON.parse(r))}catch{}return null}function Ui(r,t){if(r!=null){if(typeof r.message=="string"&&t.push(r.message),typeof r=="object")for(let e in r)Ui(r[e],t);if(typeof r=="string")try{return Ui(JSON.parse(r),t)}catch{}}}function gh(r){let t=[];return Ui(r,t),t}var Pr=class r extends Es{#t;#e;constructor(t,e,n){let s=Object.assign({},n??{},{batchMaxCount:1});h(t&&t.request,"invalid EIP-1193 provider","ethereum",t),super(e,s),this.#e=null,n&&n.providerInfo&&(this.#e=n.providerInfo),this.#t=async(i,o)=>{let a={method:i,params:o};this.emit("debug",{action:"sendEip1193Request",payload:a});try{let c=await t.request(a);return this.emit("debug",{action:"receiveEip1193Result",result:c}),c}catch(c){let l=new Error(c.message);throw l.code=c.code,l.data=c.data,l.payload=a,this.emit("debug",{action:"receiveEip1193Error",error:l}),l}}}get providerInfo(){return this.#e}async send(t,e){return await this._start(),await super.send(t,e)}async _send(t){h(!Array.isArray(t),"EIP-1193 does not support batch request","payload",t);try{let e=await this.#t(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)),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}`;break}return super.getRpcError(t,e)}async hasSigner(t){t==null&&(t=0);let e=await this.send("eth_accounts",[]);return typeof t=="number"?e.length>t:(t=t.toLowerCase(),e.filter(n=>n.toLowerCase()===t).length!==0)}async getSigner(t){if(t==null&&(t=0),!await this.hasSigner(t))try{await this.#t("eth_requestAccounts",[])}catch(e){let n=e.payload;throw this.getRpcError(n,{id:n.id,error:e})}return await super.getSigner(t)}static async discover(t){if(t==null&&(t={}),t.provider)return new r(t.provider);let e=t.window?t.window:typeof window<"u"?window:null;if(e==null)return null;let n=t.anyProvider;if(n&&e.ethereum)return new r(e.ethereum);if(!("addEventListener"in e&&"dispatchEvent"in e&&"removeEventListener"in e))return null;let s=t.timeout?t.timeout:300;return s===0?null:await new Promise((i,o)=>{let a=[],c=f=>{a.push(f.detail),n&&l()},l=()=>{if(clearTimeout(u),a.length)if(t&&t.filter){let f=t.filter(a.map(d=>Object.assign({},d.info)));if(f==null)i(null);else if(f instanceof r)i(f);else{let d=null;if(f.uuid&&(d=a.filter(m=>f.uuid===m.info.uuid)[0]),d){let{provider:g,info:m}=d;i(new r(g,void 0,{providerInfo:m}))}else o(V("filter returned unknown info","UNSUPPORTED_OPERATION",{value:f}))}}else{let{provider:f,info:d}=a[0];i(new r(f,void 0,{providerInfo:d}))}else i(null);e.removeEventListener("eip6963:announceProvider",c)},u=setTimeout(()=>{l()},s);e.addEventListener("eip6963:announceProvider",c),e.dispatchEvent(new Event("eip6963:requestProvider"))})}};async function mh(r){if(!zt())return console.error("WebAuthn is not supported in this browser."),null;try{let t=await Hi(r);return console.log(t),t}catch(t){return console.error("WebAuthn Registration Error:",t),t.name==="NotAllowedError"?console.log("Registration cancelled by user or permission denied."):console.log(`Registration failed: ${t.message}`),null}}async function yh(r){if(!zt())return console.error("WebAuthn is not supported in this browser."),null;try{return await _i(r)}catch(t){return console.error("WebAuthn Signing Error:",t),t.name==="NotAllowedError"?alert("Signing cancelled by user or permission denied."):alert(`Signing failed: ${t.message}`),null}}function $w(){return new Promise((r,t)=>{if(!navigator.geolocation){r({latitude:null,longitude:null,error:"Geolocation not supported by this browser.",isFetching:!1});return}let e=s=>{let{latitude:i,longitude:o}=s.coords;r({latitude:i,longitude:o,error:null,isFetching:!1})},n=s=>{let i;s.code===1?i="Permission Denied: Location access was blocked.":i=`Error (${s.code}): ${s.message}`,r({latitude:null,longitude:null,error:i,isFetching:!1})};navigator.geolocation.getCurrentPosition(e,n,{enableHighAccuracy:!0,timeout:5e3})})}function tA(){if(typeof window>"u")return[];let r=[];return(window.phantom?.solana||window.solana)&&r.push("phantom"),window.backpack&&r.push("backpack"),window.solflare&&r.push("solflare"),window.ethereum&&r.push("metamask"),r}var xs="https://itsxpulse-401.hf.space/x401_auth",wh=new URL("https://itsxpulse-401.hf.space/x401_auth").pathname,Ah="https://itsxpulse-401.hf.space/x401_web_auth_challange";async function bh(){return(await(await fetch(Ah,{method:"get",mode:"cors",headers:{"content-type":"application/json"}})).json()).challange}async function Qc(){let r=await fetch(xs,{mode:"cors",method:"get",cache:"no-cache",headers:{"content-type":"application/json"}}),t=await r.json(),e=r.headers.get("X-401-Nonce")||"",n=r.headers.get("X-401-Mechanism");return console.log("Nonce:",e,"Mechanism:",n),console.log("Initial response:",t),e}function _c(r){return`CHALLENGE::${r}::${wh}::401`}async function zc(r,t){if(t=="phantom"){await window.phantom.solana.connect();let e=new TextEncoder().encode(r),n=await window.phantom.solana.signMessage(e,"utf8");return{signature:n.signature,publicKey:n.publicKey.toString()}}else if(t=="solflare"){await window.solflare.solana.connect();let e=new TextEncoder().encode(r),n=await window.solflare.solana.signMessage(e,"utf8");return{signature:n.signature,publicKey:n.publicKey.toString()}}else if(t=="metamask"){let n=await new Pr(window.ethereum).getSigner(),s=await n.signMessage(r),i=await n.getAddress();return{signature:Uint8Array.from(Buffer.from(s,"hex")),publicKey:i}}}async function eA(r){let t=null;if(r.device_auth){if(!localStorage.getItem("v_wauth")){let o=await bh();localStorage.setItem("v_wauth_challange",o);let c={rp:{id:window.location.hostname,name:"Velocity Infra WebAuthn"},user:{id:"velocityuser",name:"velocityinfra",displayName:"velocityuser"},challenge:o,pubKeyCredParams:[{type:"public-key",alg:-7}],authenticatorSelection:{authenticatorAttachment:"platform",userVerification:"required",residentKey:"required"},timeout:6e4,attestation:"none"},l=await mh(c);t=l.id,localStorage.setItem("v_wauth",t),console.log(`\u2705 Registration Success! ID stored: ${l.id}`)}let s={challenge:localStorage.getItem("v_wauth_challange"),rpId:window.location.hostname,allowCredentials:[{id:t,type:"public-key"}],authenticatorSelection:{authenticatorAttachment:"platform"},userVerification:"required"};if(await yh(s)!==null){console.log("Starting authentication...");let o=await Qc();if(console.log("Got nonce:",o),!o){console.error("Failed to get nonce!");return}console.log("Building payload...");let a=_c(o),{signature:c,publicKey:l}=await zc(a,r.wallet),u=Bs.encode(c);console.log("Signature:",u),console.log("Public Key:",l),console.log("Sending authenticated request...");let f=await fetch(xs,{mode:"cors",method:"get",cache:"no-store",headers:{"X-401-Nonce":o,"X-401-Signature":u,"X-401-Addr":l,"X-Lat":r.coords.latitude,"X-Long":r.coords.longitude,required_mint:r.required_mint,mint_amount:r.mint_amount,helius_api_key:"",geo_code:r.geo_code,geo_code_locs:r.geo_code_locs,eth:r.wallet=="metamask"?"true":"false"}}),d=await f.json();if(f.status==500&&d.status=="locerror")return{success:!1,error:"LOCATION_ERROR",message:"Location access error"};if(f.status==500)return{success:!1,error:"INSUFFICIENT_TOKENS",message:`You need ${r.mint_amount}tokens to access the platform`,required:r.mint_amount};if(f.status==401&&d.status=="locdeny")return{success:!1,error:"LOCATION_DENIED",message:"Access denied for your location"};if(f.status==200)return{success:!0,alreadyAuthenticated:!1,token:d.token,data:d}}}else{let e=localStorage.getItem("vjwt");if(e){let s=await(await fetch(xs,{mode:"cors",method:"get",cache:"no-store",headers:{"content-type":"application/json","x-jwt":e}})).json();return{success:!0,alreadyAuthenticated:!0}}else{console.log("Starting authentication...");let n=await Qc();if(console.log("Got nonce:",n),!n){console.error("Failed to get nonce!");return}console.log("Building payload...");let s=_c(n);console.log("Requesting signature from wallet...");let{signature:i,publicKey:o}=await zc(s,r.wallet),a=Bs.encode(i);console.log("Signature:",a),console.log("Public Key:",o),console.log("Sending authenticated request...");let c=await fetch(xs,{mode:"cors",method:"get",cache:"no-store",headers:{"X-401-Nonce":n,"X-401-Signature":a,"X-401-Addr":o,"X-Lat":r.coords.latitude,"X-Long":r.coords.longitude,required_mint:r.required_mint,mint_amount:r.mint_amount,helius_api_key:"",geo_code:r.geo_code,geo_code_locs:r.geo_code_locs,eth:r.wallet=="metamask"?"true":"false"}}),l=await c.json();if(c.status==500&&l.status=="locerror")return{success:!1,error:"LOCATION_ERROR",message:"Location access error"};if(c.status==500)return{success:!1,error:"INSUFFICIENT_TOKENS",message:`You need ${r.mint_amount}tokens to access the platform`,required:r.mint_amount};if(c.status==401&&l.status=="locdeny")return{success:!1,error:"LOCATION_DENIED",message:"Access denied for your location"};if(c.status==200)return{success:!0,alreadyAuthenticated:!1,token:l.token,data:l}}}}export{eA as VelocityAuth,tA as detectWallets,$w as getGeolocationData};
3
+ /*! Bundled license information:
4
+
5
+ @noble/hashes/esm/utils.js:
6
+ (*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) *)
7
+
8
+ @noble/curves/esm/abstract/utils.js:
9
+ @noble/curves/esm/abstract/modular.js:
10
+ @noble/curves/esm/abstract/curve.js:
11
+ @noble/curves/esm/abstract/weierstrass.js:
12
+ @noble/curves/esm/_shortw_utils.js:
13
+ @noble/curves/esm/secp256k1.js:
14
+ (*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) *)
15
+ */
package/package.json ADDED
@@ -0,0 +1,27 @@
1
+ {
2
+ "name": "commonerainternal",
3
+ "version": "1.3.1",
4
+ "main": "dist/index.js",
5
+ "files": [
6
+ "dist"
7
+ ],
8
+ "scripts": {
9
+ "build": "node build.js",
10
+ "prepublishOnly": "npm run build"
11
+ },
12
+ "type": "module",
13
+ "description": "401 implementation",
14
+ "author": "commonera",
15
+ "license": "ISC",
16
+ "dependencies": {
17
+ "@simplewebauthn/browser": "^13.2.2",
18
+ "bs58": "^6.0.0",
19
+ "ethers": "^6.16.0",
20
+ "playwright": "^1.57.0"
21
+ },
22
+ "devDependencies": {
23
+ "@vitest/browser": "^4.0.15",
24
+ "esbuild": "^0.27.0",
25
+ "vitest": "^4.0.15"
26
+ }
27
+ }