@monygroupcorp/micro-web3 0.1.3 → 1.2.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.
@@ -1,4 +1,4 @@
1
- !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@monygroupcorp/microact")):"function"==typeof define&&define.amd?define(["exports","@monygroupcorp/microact"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).microWeb3={},t.microact)}(this,function(t,e){"use strict";var r="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function n(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var i,o={exports:{}},s=o.exports;var a=(i||(i=1,function(t){!function(t,e){function r(t,e){if(!t)throw new Error(e||"Assertion failed")}function n(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}function i(t,e,r){if(i.isBN(t))return t;this.negative=0,this.words=null,this.length=0,this.red=null,null!==t&&("le"!==e&&"be"!==e||(r=e,e=10),this._init(t||0,e||10,r||"be"))}var o;"object"==typeof t?t.exports=i:e.BN=i,i.BN=i,i.wordSize=26;try{o="undefined"!=typeof window&&void 0!==window.Buffer?window.Buffer:require("buffer").Buffer}catch(t){}function s(t,e){var n=t.charCodeAt(e);return n>=48&&n<=57?n-48:n>=65&&n<=70?n-55:n>=97&&n<=102?n-87:void r(!1,"Invalid character in "+t)}function a(t,e,r){var n=s(t,r);return r-1>=e&&(n|=s(t,r-1)<<4),n}function l(t,e,n,i){for(var o=0,s=0,a=Math.min(t.length,n),l=e;l<a;l++){var c=t.charCodeAt(l)-48;o*=i,s=c>=49?c-49+10:c>=17?c-17+10:c,r(c>=0&&s<i,"Invalid character"),o+=s}return o}function c(t,e){t.words=e.words,t.length=e.length,t.negative=e.negative,t.red=e.red}if(i.isBN=function(t){return t instanceof i||null!==t&&"object"==typeof t&&t.constructor.wordSize===i.wordSize&&Array.isArray(t.words)},i.max=function(t,e){return t.cmp(e)>0?t:e},i.min=function(t,e){return t.cmp(e)<0?t:e},i.prototype._init=function(t,e,n){if("number"==typeof t)return this._initNumber(t,e,n);if("object"==typeof t)return this._initArray(t,e,n);"hex"===e&&(e=16),r(e===(0|e)&&e>=2&&e<=36);var i=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&(i++,this.negative=1),i<t.length&&(16===e?this._parseHex(t,i,n):(this._parseBase(t,e,i),"le"===n&&this._initArray(this.toArray(),e,n)))},i.prototype._initNumber=function(t,e,n){t<0&&(this.negative=1,t=-t),t<67108864?(this.words=[67108863&t],this.length=1):t<4503599627370496?(this.words=[67108863&t,t/67108864&67108863],this.length=2):(r(t<9007199254740992),this.words=[67108863&t,t/67108864&67108863,1],this.length=3),"le"===n&&this._initArray(this.toArray(),e,n)},i.prototype._initArray=function(t,e,n){if(r("number"==typeof t.length),t.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(t.length/3),this.words=new Array(this.length);for(var i=0;i<this.length;i++)this.words[i]=0;var o,s,a=0;if("be"===n)for(i=t.length-1,o=0;i>=0;i-=3)s=t[i]|t[i-1]<<8|t[i-2]<<16,this.words[o]|=s<<a&67108863,this.words[o+1]=s>>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);else if("le"===n)for(i=0,o=0;i<t.length;i+=3)s=t[i]|t[i+1]<<8|t[i+2]<<16,this.words[o]|=s<<a&67108863,this.words[o+1]=s>>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);return this._strip()},i.prototype._parseHex=function(t,e,r){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var n=0;n<this.length;n++)this.words[n]=0;var i,o=0,s=0;if("be"===r)for(n=t.length-1;n>=e;n-=2)i=a(t,e,n)<<o,this.words[s]|=67108863&i,o>=18?(o-=18,s+=1,this.words[s]|=i>>>26):o+=8;else for(n=(t.length-e)%2==0?e+1:e;n<t.length;n+=2)i=a(t,e,n)<<o,this.words[s]|=67108863&i,o>=18?(o-=18,s+=1,this.words[s]|=i>>>26):o+=8;this._strip()},i.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var n=0,i=1;i<=67108863;i*=e)n++;n--,i=i/e|0;for(var o=t.length-r,s=o%n,a=Math.min(o,o-s)+r,c=0,u=r;u<a;u+=n)c=l(t,u,u+n,e),this.imuln(i),this.words[0]+c<67108864?this.words[0]+=c:this._iaddn(c);if(0!==s){var h=1;for(c=l(t,u,t.length,e),u=0;u<s;u++)h*=e;this.imuln(h),this.words[0]+c<67108864?this.words[0]+=c:this._iaddn(c)}this._strip()},i.prototype.copy=function(t){t.words=new Array(this.length);for(var e=0;e<this.length;e++)t.words[e]=this.words[e];t.length=this.length,t.negative=this.negative,t.red=this.red},i.prototype._move=function(t){c(t,this)},i.prototype.clone=function(){var t=new i(null);return this.copy(t),t},i.prototype._expand=function(t){for(;this.length<t;)this.words[this.length++]=0;return this},i.prototype._strip=function(){for(;this.length>1&&0===this.words[this.length-1];)this.length--;return this._normSign()},i.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},"undefined"!=typeof Symbol&&"function"==typeof Symbol.for)try{i.prototype[Symbol.for("nodejs.util.inspect.custom")]=u}catch(t){i.prototype.inspect=u}else i.prototype.inspect=u;function u(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"}var h=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],d=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],f=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function p(t,e,r){r.negative=e.negative^t.negative;var n=t.length+e.length|0;r.length=n,n=n-1|0;var i=0|t.words[0],o=0|e.words[0],s=i*o,a=67108863&s,l=s/67108864|0;r.words[0]=a;for(var c=1;c<n;c++){for(var u=l>>>26,h=67108863&l,d=Math.min(c,e.length-1),f=Math.max(0,c-t.length+1);f<=d;f++){var p=c-f|0;u+=(s=(i=0|t.words[p])*(o=0|e.words[f])+h)/67108864|0,h=67108863&s}r.words[c]=0|h,l=0|u}return 0!==l?r.words[c]=0|l:r.length--,r._strip()}i.prototype.toString=function(t,e){var n;if(e=0|e||1,16===(t=t||10)||"hex"===t){n="";for(var i=0,o=0,s=0;s<this.length;s++){var a=this.words[s],l=(16777215&(a<<i|o)).toString(16);o=a>>>24-i&16777215,(i+=2)>=26&&(i-=26,s--),n=0!==o||s!==this.length-1?h[6-l.length]+l+n:l+n}for(0!==o&&(n=o.toString(16)+n);n.length%e!==0;)n="0"+n;return 0!==this.negative&&(n="-"+n),n}if(t===(0|t)&&t>=2&&t<=36){var c=d[t],u=f[t];n="";var p=this.clone();for(p.negative=0;!p.isZero();){var m=p.modrn(u).toString(t);n=(p=p.idivn(u)).isZero()?m+n:h[c-m.length]+m+n}for(this.isZero()&&(n="0"+n);n.length%e!==0;)n="0"+n;return 0!==this.negative&&(n="-"+n),n}r(!1,"Base should be between 2 and 36")},i.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},i.prototype.toJSON=function(){return this.toString(16,2)},o&&(i.prototype.toBuffer=function(t,e){return this.toArrayLike(o,t,e)}),i.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},i.prototype.toArrayLike=function(t,e,n){this._strip();var i=this.byteLength(),o=n||Math.max(1,i);r(i<=o,"byte array longer than desired length"),r(o>0,"Requested array length <= 0");var s=function(t,e){return t.allocUnsafe?t.allocUnsafe(e):new t(e)}(t,o);return this["_toArrayLike"+("le"===e?"LE":"BE")](s,i),s},i.prototype._toArrayLikeLE=function(t,e){for(var r=0,n=0,i=0,o=0;i<this.length;i++){var s=this.words[i]<<o|n;t[r++]=255&s,r<t.length&&(t[r++]=s>>8&255),r<t.length&&(t[r++]=s>>16&255),6===o?(r<t.length&&(t[r++]=s>>24&255),n=0,o=0):(n=s>>>24,o+=2)}if(r<t.length)for(t[r++]=n;r<t.length;)t[r++]=0},i.prototype._toArrayLikeBE=function(t,e){for(var r=t.length-1,n=0,i=0,o=0;i<this.length;i++){var s=this.words[i]<<o|n;t[r--]=255&s,r>=0&&(t[r--]=s>>8&255),r>=0&&(t[r--]=s>>16&255),6===o?(r>=0&&(t[r--]=s>>24&255),n=0,o=0):(n=s>>>24,o+=2)}if(r>=0)for(t[r--]=n;r>=0;)t[r--]=0},Math.clz32?i.prototype._countBits=function(t){return 32-Math.clz32(t)}:i.prototype._countBits=function(t){var e=t,r=0;return e>=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},i.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 8191&e||(r+=13,e>>>=13),127&e||(r+=7,e>>>=7),15&e||(r+=4,e>>>=4),3&e||(r+=2,e>>>=2),1&e||r++,r},i.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},i.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;e<this.length;e++){var r=this._zeroBits(this.words[e]);if(t+=r,26!==r)break}return t},i.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},i.prototype.toTwos=function(t){return 0!==this.negative?this.abs().inotn(t).iaddn(1):this.clone()},i.prototype.fromTwos=function(t){return this.testn(t-1)?this.notn(t).iaddn(1).ineg():this.clone()},i.prototype.isNeg=function(){return 0!==this.negative},i.prototype.neg=function(){return this.clone().ineg()},i.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},i.prototype.iuor=function(t){for(;this.length<t.length;)this.words[this.length++]=0;for(var e=0;e<t.length;e++)this.words[e]=this.words[e]|t.words[e];return this._strip()},i.prototype.ior=function(t){return r(0===(this.negative|t.negative)),this.iuor(t)},i.prototype.or=function(t){return this.length>t.length?this.clone().ior(t):t.clone().ior(this)},i.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},i.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;r<e.length;r++)this.words[r]=this.words[r]&t.words[r];return this.length=e.length,this._strip()},i.prototype.iand=function(t){return r(0===(this.negative|t.negative)),this.iuand(t)},i.prototype.and=function(t){return this.length>t.length?this.clone().iand(t):t.clone().iand(this)},i.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},i.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var n=0;n<r.length;n++)this.words[n]=e.words[n]^r.words[n];if(this!==e)for(;n<e.length;n++)this.words[n]=e.words[n];return this.length=e.length,this._strip()},i.prototype.ixor=function(t){return r(0===(this.negative|t.negative)),this.iuxor(t)},i.prototype.xor=function(t){return this.length>t.length?this.clone().ixor(t):t.clone().ixor(this)},i.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},i.prototype.inotn=function(t){r("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),n=t%26;this._expand(e),n>0&&e--;for(var i=0;i<e;i++)this.words[i]=67108863&~this.words[i];return n>0&&(this.words[i]=~this.words[i]&67108863>>26-n),this._strip()},i.prototype.notn=function(t){return this.clone().inotn(t)},i.prototype.setn=function(t,e){r("number"==typeof t&&t>=0);var n=t/26|0,i=t%26;return this._expand(n+1),this.words[n]=e?this.words[n]|1<<i:this.words[n]&~(1<<i),this._strip()},i.prototype.iadd=function(t){var e,r,n;if(0!==this.negative&&0===t.negative)return this.negative=0,e=this.isub(t),this.negative^=1,this._normSign();if(0===this.negative&&0!==t.negative)return t.negative=0,e=this.isub(t),t.negative=1,e._normSign();this.length>t.length?(r=this,n=t):(r=t,n=this);for(var i=0,o=0;o<n.length;o++)e=(0|r.words[o])+(0|n.words[o])+i,this.words[o]=67108863&e,i=e>>>26;for(;0!==i&&o<r.length;o++)e=(0|r.words[o])+i,this.words[o]=67108863&e,i=e>>>26;if(this.length=r.length,0!==i)this.words[this.length]=i,this.length++;else if(r!==this)for(;o<r.length;o++)this.words[o]=r.words[o];return this},i.prototype.add=function(t){var e;return 0!==t.negative&&0===this.negative?(t.negative=0,e=this.sub(t),t.negative^=1,e):0===t.negative&&0!==this.negative?(this.negative=0,e=t.sub(this),this.negative=1,e):this.length>t.length?this.clone().iadd(t):t.clone().iadd(this)},i.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r,n,i=this.cmp(t);if(0===i)return this.negative=0,this.length=1,this.words[0]=0,this;i>0?(r=this,n=t):(r=t,n=this);for(var o=0,s=0;s<n.length;s++)o=(e=(0|r.words[s])-(0|n.words[s])+o)>>26,this.words[s]=67108863&e;for(;0!==o&&s<r.length;s++)o=(e=(0|r.words[s])+o)>>26,this.words[s]=67108863&e;if(0===o&&s<r.length&&r!==this)for(;s<r.length;s++)this.words[s]=r.words[s];return this.length=Math.max(this.length,s),r!==this&&(this.negative=1),this._strip()},i.prototype.sub=function(t){return this.clone().isub(t)};var m=function(t,e,r){var n,i,o,s=t.words,a=e.words,l=r.words,c=0,u=0|s[0],h=8191&u,d=u>>>13,f=0|s[1],p=8191&f,m=f>>>13,g=0|s[2],v=8191&g,w=g>>>13,y=0|s[3],b=8191&y,E=y>>>13,A=0|s[4],k=8191&A,S=A>>>13,C=0|s[5],x=8191&C,_=C>>>13,T=0|s[6],P=8191&T,I=T>>>13,N=0|s[7],M=8191&N,B=N>>>13,R=0|s[8],F=8191&R,O=R>>>13,D=0|s[9],U=8191&D,L=D>>>13,q=0|a[0],z=8191&q,G=q>>>13,H=0|a[1],j=8191&H,K=H>>>13,W=0|a[2],V=8191&W,$=W>>>13,J=0|a[3],Q=8191&J,Y=J>>>13,X=0|a[4],Z=8191&X,tt=X>>>13,et=0|a[5],rt=8191&et,nt=et>>>13,it=0|a[6],ot=8191&it,st=it>>>13,at=0|a[7],lt=8191&at,ct=at>>>13,ut=0|a[8],ht=8191&ut,dt=ut>>>13,ft=0|a[9],pt=8191&ft,mt=ft>>>13;r.negative=t.negative^e.negative,r.length=19;var gt=(c+(n=Math.imul(h,z))|0)+((8191&(i=(i=Math.imul(h,G))+Math.imul(d,z)|0))<<13)|0;c=((o=Math.imul(d,G))+(i>>>13)|0)+(gt>>>26)|0,gt&=67108863,n=Math.imul(p,z),i=(i=Math.imul(p,G))+Math.imul(m,z)|0,o=Math.imul(m,G);var vt=(c+(n=n+Math.imul(h,j)|0)|0)+((8191&(i=(i=i+Math.imul(h,K)|0)+Math.imul(d,j)|0))<<13)|0;c=((o=o+Math.imul(d,K)|0)+(i>>>13)|0)+(vt>>>26)|0,vt&=67108863,n=Math.imul(v,z),i=(i=Math.imul(v,G))+Math.imul(w,z)|0,o=Math.imul(w,G),n=n+Math.imul(p,j)|0,i=(i=i+Math.imul(p,K)|0)+Math.imul(m,j)|0,o=o+Math.imul(m,K)|0;var wt=(c+(n=n+Math.imul(h,V)|0)|0)+((8191&(i=(i=i+Math.imul(h,$)|0)+Math.imul(d,V)|0))<<13)|0;c=((o=o+Math.imul(d,$)|0)+(i>>>13)|0)+(wt>>>26)|0,wt&=67108863,n=Math.imul(b,z),i=(i=Math.imul(b,G))+Math.imul(E,z)|0,o=Math.imul(E,G),n=n+Math.imul(v,j)|0,i=(i=i+Math.imul(v,K)|0)+Math.imul(w,j)|0,o=o+Math.imul(w,K)|0,n=n+Math.imul(p,V)|0,i=(i=i+Math.imul(p,$)|0)+Math.imul(m,V)|0,o=o+Math.imul(m,$)|0;var yt=(c+(n=n+Math.imul(h,Q)|0)|0)+((8191&(i=(i=i+Math.imul(h,Y)|0)+Math.imul(d,Q)|0))<<13)|0;c=((o=o+Math.imul(d,Y)|0)+(i>>>13)|0)+(yt>>>26)|0,yt&=67108863,n=Math.imul(k,z),i=(i=Math.imul(k,G))+Math.imul(S,z)|0,o=Math.imul(S,G),n=n+Math.imul(b,j)|0,i=(i=i+Math.imul(b,K)|0)+Math.imul(E,j)|0,o=o+Math.imul(E,K)|0,n=n+Math.imul(v,V)|0,i=(i=i+Math.imul(v,$)|0)+Math.imul(w,V)|0,o=o+Math.imul(w,$)|0,n=n+Math.imul(p,Q)|0,i=(i=i+Math.imul(p,Y)|0)+Math.imul(m,Q)|0,o=o+Math.imul(m,Y)|0;var bt=(c+(n=n+Math.imul(h,Z)|0)|0)+((8191&(i=(i=i+Math.imul(h,tt)|0)+Math.imul(d,Z)|0))<<13)|0;c=((o=o+Math.imul(d,tt)|0)+(i>>>13)|0)+(bt>>>26)|0,bt&=67108863,n=Math.imul(x,z),i=(i=Math.imul(x,G))+Math.imul(_,z)|0,o=Math.imul(_,G),n=n+Math.imul(k,j)|0,i=(i=i+Math.imul(k,K)|0)+Math.imul(S,j)|0,o=o+Math.imul(S,K)|0,n=n+Math.imul(b,V)|0,i=(i=i+Math.imul(b,$)|0)+Math.imul(E,V)|0,o=o+Math.imul(E,$)|0,n=n+Math.imul(v,Q)|0,i=(i=i+Math.imul(v,Y)|0)+Math.imul(w,Q)|0,o=o+Math.imul(w,Y)|0,n=n+Math.imul(p,Z)|0,i=(i=i+Math.imul(p,tt)|0)+Math.imul(m,Z)|0,o=o+Math.imul(m,tt)|0;var Et=(c+(n=n+Math.imul(h,rt)|0)|0)+((8191&(i=(i=i+Math.imul(h,nt)|0)+Math.imul(d,rt)|0))<<13)|0;c=((o=o+Math.imul(d,nt)|0)+(i>>>13)|0)+(Et>>>26)|0,Et&=67108863,n=Math.imul(P,z),i=(i=Math.imul(P,G))+Math.imul(I,z)|0,o=Math.imul(I,G),n=n+Math.imul(x,j)|0,i=(i=i+Math.imul(x,K)|0)+Math.imul(_,j)|0,o=o+Math.imul(_,K)|0,n=n+Math.imul(k,V)|0,i=(i=i+Math.imul(k,$)|0)+Math.imul(S,V)|0,o=o+Math.imul(S,$)|0,n=n+Math.imul(b,Q)|0,i=(i=i+Math.imul(b,Y)|0)+Math.imul(E,Q)|0,o=o+Math.imul(E,Y)|0,n=n+Math.imul(v,Z)|0,i=(i=i+Math.imul(v,tt)|0)+Math.imul(w,Z)|0,o=o+Math.imul(w,tt)|0,n=n+Math.imul(p,rt)|0,i=(i=i+Math.imul(p,nt)|0)+Math.imul(m,rt)|0,o=o+Math.imul(m,nt)|0;var At=(c+(n=n+Math.imul(h,ot)|0)|0)+((8191&(i=(i=i+Math.imul(h,st)|0)+Math.imul(d,ot)|0))<<13)|0;c=((o=o+Math.imul(d,st)|0)+(i>>>13)|0)+(At>>>26)|0,At&=67108863,n=Math.imul(M,z),i=(i=Math.imul(M,G))+Math.imul(B,z)|0,o=Math.imul(B,G),n=n+Math.imul(P,j)|0,i=(i=i+Math.imul(P,K)|0)+Math.imul(I,j)|0,o=o+Math.imul(I,K)|0,n=n+Math.imul(x,V)|0,i=(i=i+Math.imul(x,$)|0)+Math.imul(_,V)|0,o=o+Math.imul(_,$)|0,n=n+Math.imul(k,Q)|0,i=(i=i+Math.imul(k,Y)|0)+Math.imul(S,Q)|0,o=o+Math.imul(S,Y)|0,n=n+Math.imul(b,Z)|0,i=(i=i+Math.imul(b,tt)|0)+Math.imul(E,Z)|0,o=o+Math.imul(E,tt)|0,n=n+Math.imul(v,rt)|0,i=(i=i+Math.imul(v,nt)|0)+Math.imul(w,rt)|0,o=o+Math.imul(w,nt)|0,n=n+Math.imul(p,ot)|0,i=(i=i+Math.imul(p,st)|0)+Math.imul(m,ot)|0,o=o+Math.imul(m,st)|0;var kt=(c+(n=n+Math.imul(h,lt)|0)|0)+((8191&(i=(i=i+Math.imul(h,ct)|0)+Math.imul(d,lt)|0))<<13)|0;c=((o=o+Math.imul(d,ct)|0)+(i>>>13)|0)+(kt>>>26)|0,kt&=67108863,n=Math.imul(F,z),i=(i=Math.imul(F,G))+Math.imul(O,z)|0,o=Math.imul(O,G),n=n+Math.imul(M,j)|0,i=(i=i+Math.imul(M,K)|0)+Math.imul(B,j)|0,o=o+Math.imul(B,K)|0,n=n+Math.imul(P,V)|0,i=(i=i+Math.imul(P,$)|0)+Math.imul(I,V)|0,o=o+Math.imul(I,$)|0,n=n+Math.imul(x,Q)|0,i=(i=i+Math.imul(x,Y)|0)+Math.imul(_,Q)|0,o=o+Math.imul(_,Y)|0,n=n+Math.imul(k,Z)|0,i=(i=i+Math.imul(k,tt)|0)+Math.imul(S,Z)|0,o=o+Math.imul(S,tt)|0,n=n+Math.imul(b,rt)|0,i=(i=i+Math.imul(b,nt)|0)+Math.imul(E,rt)|0,o=o+Math.imul(E,nt)|0,n=n+Math.imul(v,ot)|0,i=(i=i+Math.imul(v,st)|0)+Math.imul(w,ot)|0,o=o+Math.imul(w,st)|0,n=n+Math.imul(p,lt)|0,i=(i=i+Math.imul(p,ct)|0)+Math.imul(m,lt)|0,o=o+Math.imul(m,ct)|0;var St=(c+(n=n+Math.imul(h,ht)|0)|0)+((8191&(i=(i=i+Math.imul(h,dt)|0)+Math.imul(d,ht)|0))<<13)|0;c=((o=o+Math.imul(d,dt)|0)+(i>>>13)|0)+(St>>>26)|0,St&=67108863,n=Math.imul(U,z),i=(i=Math.imul(U,G))+Math.imul(L,z)|0,o=Math.imul(L,G),n=n+Math.imul(F,j)|0,i=(i=i+Math.imul(F,K)|0)+Math.imul(O,j)|0,o=o+Math.imul(O,K)|0,n=n+Math.imul(M,V)|0,i=(i=i+Math.imul(M,$)|0)+Math.imul(B,V)|0,o=o+Math.imul(B,$)|0,n=n+Math.imul(P,Q)|0,i=(i=i+Math.imul(P,Y)|0)+Math.imul(I,Q)|0,o=o+Math.imul(I,Y)|0,n=n+Math.imul(x,Z)|0,i=(i=i+Math.imul(x,tt)|0)+Math.imul(_,Z)|0,o=o+Math.imul(_,tt)|0,n=n+Math.imul(k,rt)|0,i=(i=i+Math.imul(k,nt)|0)+Math.imul(S,rt)|0,o=o+Math.imul(S,nt)|0,n=n+Math.imul(b,ot)|0,i=(i=i+Math.imul(b,st)|0)+Math.imul(E,ot)|0,o=o+Math.imul(E,st)|0,n=n+Math.imul(v,lt)|0,i=(i=i+Math.imul(v,ct)|0)+Math.imul(w,lt)|0,o=o+Math.imul(w,ct)|0,n=n+Math.imul(p,ht)|0,i=(i=i+Math.imul(p,dt)|0)+Math.imul(m,ht)|0,o=o+Math.imul(m,dt)|0;var Ct=(c+(n=n+Math.imul(h,pt)|0)|0)+((8191&(i=(i=i+Math.imul(h,mt)|0)+Math.imul(d,pt)|0))<<13)|0;c=((o=o+Math.imul(d,mt)|0)+(i>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,n=Math.imul(U,j),i=(i=Math.imul(U,K))+Math.imul(L,j)|0,o=Math.imul(L,K),n=n+Math.imul(F,V)|0,i=(i=i+Math.imul(F,$)|0)+Math.imul(O,V)|0,o=o+Math.imul(O,$)|0,n=n+Math.imul(M,Q)|0,i=(i=i+Math.imul(M,Y)|0)+Math.imul(B,Q)|0,o=o+Math.imul(B,Y)|0,n=n+Math.imul(P,Z)|0,i=(i=i+Math.imul(P,tt)|0)+Math.imul(I,Z)|0,o=o+Math.imul(I,tt)|0,n=n+Math.imul(x,rt)|0,i=(i=i+Math.imul(x,nt)|0)+Math.imul(_,rt)|0,o=o+Math.imul(_,nt)|0,n=n+Math.imul(k,ot)|0,i=(i=i+Math.imul(k,st)|0)+Math.imul(S,ot)|0,o=o+Math.imul(S,st)|0,n=n+Math.imul(b,lt)|0,i=(i=i+Math.imul(b,ct)|0)+Math.imul(E,lt)|0,o=o+Math.imul(E,ct)|0,n=n+Math.imul(v,ht)|0,i=(i=i+Math.imul(v,dt)|0)+Math.imul(w,ht)|0,o=o+Math.imul(w,dt)|0;var xt=(c+(n=n+Math.imul(p,pt)|0)|0)+((8191&(i=(i=i+Math.imul(p,mt)|0)+Math.imul(m,pt)|0))<<13)|0;c=((o=o+Math.imul(m,mt)|0)+(i>>>13)|0)+(xt>>>26)|0,xt&=67108863,n=Math.imul(U,V),i=(i=Math.imul(U,$))+Math.imul(L,V)|0,o=Math.imul(L,$),n=n+Math.imul(F,Q)|0,i=(i=i+Math.imul(F,Y)|0)+Math.imul(O,Q)|0,o=o+Math.imul(O,Y)|0,n=n+Math.imul(M,Z)|0,i=(i=i+Math.imul(M,tt)|0)+Math.imul(B,Z)|0,o=o+Math.imul(B,tt)|0,n=n+Math.imul(P,rt)|0,i=(i=i+Math.imul(P,nt)|0)+Math.imul(I,rt)|0,o=o+Math.imul(I,nt)|0,n=n+Math.imul(x,ot)|0,i=(i=i+Math.imul(x,st)|0)+Math.imul(_,ot)|0,o=o+Math.imul(_,st)|0,n=n+Math.imul(k,lt)|0,i=(i=i+Math.imul(k,ct)|0)+Math.imul(S,lt)|0,o=o+Math.imul(S,ct)|0,n=n+Math.imul(b,ht)|0,i=(i=i+Math.imul(b,dt)|0)+Math.imul(E,ht)|0,o=o+Math.imul(E,dt)|0;var _t=(c+(n=n+Math.imul(v,pt)|0)|0)+((8191&(i=(i=i+Math.imul(v,mt)|0)+Math.imul(w,pt)|0))<<13)|0;c=((o=o+Math.imul(w,mt)|0)+(i>>>13)|0)+(_t>>>26)|0,_t&=67108863,n=Math.imul(U,Q),i=(i=Math.imul(U,Y))+Math.imul(L,Q)|0,o=Math.imul(L,Y),n=n+Math.imul(F,Z)|0,i=(i=i+Math.imul(F,tt)|0)+Math.imul(O,Z)|0,o=o+Math.imul(O,tt)|0,n=n+Math.imul(M,rt)|0,i=(i=i+Math.imul(M,nt)|0)+Math.imul(B,rt)|0,o=o+Math.imul(B,nt)|0,n=n+Math.imul(P,ot)|0,i=(i=i+Math.imul(P,st)|0)+Math.imul(I,ot)|0,o=o+Math.imul(I,st)|0,n=n+Math.imul(x,lt)|0,i=(i=i+Math.imul(x,ct)|0)+Math.imul(_,lt)|0,o=o+Math.imul(_,ct)|0,n=n+Math.imul(k,ht)|0,i=(i=i+Math.imul(k,dt)|0)+Math.imul(S,ht)|0,o=o+Math.imul(S,dt)|0;var Tt=(c+(n=n+Math.imul(b,pt)|0)|0)+((8191&(i=(i=i+Math.imul(b,mt)|0)+Math.imul(E,pt)|0))<<13)|0;c=((o=o+Math.imul(E,mt)|0)+(i>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,n=Math.imul(U,Z),i=(i=Math.imul(U,tt))+Math.imul(L,Z)|0,o=Math.imul(L,tt),n=n+Math.imul(F,rt)|0,i=(i=i+Math.imul(F,nt)|0)+Math.imul(O,rt)|0,o=o+Math.imul(O,nt)|0,n=n+Math.imul(M,ot)|0,i=(i=i+Math.imul(M,st)|0)+Math.imul(B,ot)|0,o=o+Math.imul(B,st)|0,n=n+Math.imul(P,lt)|0,i=(i=i+Math.imul(P,ct)|0)+Math.imul(I,lt)|0,o=o+Math.imul(I,ct)|0,n=n+Math.imul(x,ht)|0,i=(i=i+Math.imul(x,dt)|0)+Math.imul(_,ht)|0,o=o+Math.imul(_,dt)|0;var Pt=(c+(n=n+Math.imul(k,pt)|0)|0)+((8191&(i=(i=i+Math.imul(k,mt)|0)+Math.imul(S,pt)|0))<<13)|0;c=((o=o+Math.imul(S,mt)|0)+(i>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,n=Math.imul(U,rt),i=(i=Math.imul(U,nt))+Math.imul(L,rt)|0,o=Math.imul(L,nt),n=n+Math.imul(F,ot)|0,i=(i=i+Math.imul(F,st)|0)+Math.imul(O,ot)|0,o=o+Math.imul(O,st)|0,n=n+Math.imul(M,lt)|0,i=(i=i+Math.imul(M,ct)|0)+Math.imul(B,lt)|0,o=o+Math.imul(B,ct)|0,n=n+Math.imul(P,ht)|0,i=(i=i+Math.imul(P,dt)|0)+Math.imul(I,ht)|0,o=o+Math.imul(I,dt)|0;var It=(c+(n=n+Math.imul(x,pt)|0)|0)+((8191&(i=(i=i+Math.imul(x,mt)|0)+Math.imul(_,pt)|0))<<13)|0;c=((o=o+Math.imul(_,mt)|0)+(i>>>13)|0)+(It>>>26)|0,It&=67108863,n=Math.imul(U,ot),i=(i=Math.imul(U,st))+Math.imul(L,ot)|0,o=Math.imul(L,st),n=n+Math.imul(F,lt)|0,i=(i=i+Math.imul(F,ct)|0)+Math.imul(O,lt)|0,o=o+Math.imul(O,ct)|0,n=n+Math.imul(M,ht)|0,i=(i=i+Math.imul(M,dt)|0)+Math.imul(B,ht)|0,o=o+Math.imul(B,dt)|0;var Nt=(c+(n=n+Math.imul(P,pt)|0)|0)+((8191&(i=(i=i+Math.imul(P,mt)|0)+Math.imul(I,pt)|0))<<13)|0;c=((o=o+Math.imul(I,mt)|0)+(i>>>13)|0)+(Nt>>>26)|0,Nt&=67108863,n=Math.imul(U,lt),i=(i=Math.imul(U,ct))+Math.imul(L,lt)|0,o=Math.imul(L,ct),n=n+Math.imul(F,ht)|0,i=(i=i+Math.imul(F,dt)|0)+Math.imul(O,ht)|0,o=o+Math.imul(O,dt)|0;var Mt=(c+(n=n+Math.imul(M,pt)|0)|0)+((8191&(i=(i=i+Math.imul(M,mt)|0)+Math.imul(B,pt)|0))<<13)|0;c=((o=o+Math.imul(B,mt)|0)+(i>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,n=Math.imul(U,ht),i=(i=Math.imul(U,dt))+Math.imul(L,ht)|0,o=Math.imul(L,dt);var Bt=(c+(n=n+Math.imul(F,pt)|0)|0)+((8191&(i=(i=i+Math.imul(F,mt)|0)+Math.imul(O,pt)|0))<<13)|0;c=((o=o+Math.imul(O,mt)|0)+(i>>>13)|0)+(Bt>>>26)|0,Bt&=67108863;var Rt=(c+(n=Math.imul(U,pt))|0)+((8191&(i=(i=Math.imul(U,mt))+Math.imul(L,pt)|0))<<13)|0;return c=((o=Math.imul(L,mt))+(i>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,l[0]=gt,l[1]=vt,l[2]=wt,l[3]=yt,l[4]=bt,l[5]=Et,l[6]=At,l[7]=kt,l[8]=St,l[9]=Ct,l[10]=xt,l[11]=_t,l[12]=Tt,l[13]=Pt,l[14]=It,l[15]=Nt,l[16]=Mt,l[17]=Bt,l[18]=Rt,0!==c&&(l[19]=c,r.length++),r};function g(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var n=0,i=0,o=0;o<r.length-1;o++){var s=i;i=0;for(var a=67108863&n,l=Math.min(o,e.length-1),c=Math.max(0,o-t.length+1);c<=l;c++){var u=o-c,h=(0|t.words[u])*(0|e.words[c]),d=67108863&h;a=67108863&(d=d+a|0),i+=(s=(s=s+(h/67108864|0)|0)+(d>>>26)|0)>>>26,s&=67108863}r.words[o]=a,n=s,s=i}return 0!==n?r.words[o]=n:r.length--,r._strip()}function v(t,e,r){return g(t,e,r)}Math.imul||(m=p),i.prototype.mulTo=function(t,e){var r=this.length+t.length;return 10===this.length&&10===t.length?m(this,t,e):r<63?p(this,t,e):r<1024?g(this,t,e):v(this,t,e)},i.prototype.mul=function(t){var e=new i(null);return e.words=new Array(this.length+t.length),this.mulTo(t,e)},i.prototype.mulf=function(t){var e=new i(null);return e.words=new Array(this.length+t.length),v(this,t,e)},i.prototype.imul=function(t){return this.clone().mulTo(t,this)},i.prototype.imuln=function(t){var e=t<0;e&&(t=-t),r("number"==typeof t),r(t<67108864);for(var n=0,i=0;i<this.length;i++){var o=(0|this.words[i])*t,s=(67108863&o)+(67108863&n);n>>=26,n+=o/67108864|0,n+=s>>>26,this.words[i]=67108863&s}return 0!==n&&(this.words[i]=n,this.length++),this.length=0===t?1:this.length,e?this.ineg():this},i.prototype.muln=function(t){return this.clone().imuln(t)},i.prototype.sqr=function(){return this.mul(this)},i.prototype.isqr=function(){return this.imul(this.clone())},i.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),r=0;r<e.length;r++){var n=r/26|0,i=r%26;e[r]=t.words[n]>>>i&1}return e}(t);if(0===e.length)return new i(1);for(var r=this,n=0;n<e.length&&0===e[n];n++,r=r.sqr());if(++n<e.length)for(var o=r.sqr();n<e.length;n++,o=o.sqr())0!==e[n]&&(r=r.mul(o));return r},i.prototype.iushln=function(t){r("number"==typeof t&&t>=0);var e,n=t%26,i=(t-n)/26,o=67108863>>>26-n<<26-n;if(0!==n){var s=0;for(e=0;e<this.length;e++){var a=this.words[e]&o,l=(0|this.words[e])-a<<n;this.words[e]=l|s,s=a>>>26-n}s&&(this.words[e]=s,this.length++)}if(0!==i){for(e=this.length-1;e>=0;e--)this.words[e+i]=this.words[e];for(e=0;e<i;e++)this.words[e]=0;this.length+=i}return this._strip()},i.prototype.ishln=function(t){return r(0===this.negative),this.iushln(t)},i.prototype.iushrn=function(t,e,n){var i;r("number"==typeof t&&t>=0),i=e?(e-e%26)/26:0;var o=t%26,s=Math.min((t-o)/26,this.length),a=67108863^67108863>>>o<<o,l=n;if(i-=s,i=Math.max(0,i),l){for(var c=0;c<s;c++)l.words[c]=this.words[c];l.length=s}if(0===s);else if(this.length>s)for(this.length-=s,c=0;c<this.length;c++)this.words[c]=this.words[c+s];else this.words[0]=0,this.length=1;var u=0;for(c=this.length-1;c>=0&&(0!==u||c>=i);c--){var h=0|this.words[c];this.words[c]=u<<26-o|h>>>o,u=h&a}return l&&0!==u&&(l.words[l.length++]=u),0===this.length&&(this.words[0]=0,this.length=1),this._strip()},i.prototype.ishrn=function(t,e,n){return r(0===this.negative),this.iushrn(t,e,n)},i.prototype.shln=function(t){return this.clone().ishln(t)},i.prototype.ushln=function(t){return this.clone().iushln(t)},i.prototype.shrn=function(t){return this.clone().ishrn(t)},i.prototype.ushrn=function(t){return this.clone().iushrn(t)},i.prototype.testn=function(t){r("number"==typeof t&&t>=0);var e=t%26,n=(t-e)/26,i=1<<e;return!(this.length<=n||!(this.words[n]&i))},i.prototype.imaskn=function(t){r("number"==typeof t&&t>=0);var e=t%26,n=(t-e)/26;if(r(0===this.negative,"imaskn works only with positive numbers"),this.length<=n)return this;if(0!==e&&n++,this.length=Math.min(n,this.length),0!==e){var i=67108863^67108863>>>e<<e;this.words[this.length-1]&=i}return this._strip()},i.prototype.maskn=function(t){return this.clone().imaskn(t)},i.prototype.iaddn=function(t){return r("number"==typeof t),r(t<67108864),t<0?this.isubn(-t):0!==this.negative?1===this.length&&(0|this.words[0])<=t?(this.words[0]=t-(0|this.words[0]),this.negative=0,this):(this.negative=0,this.isubn(t),this.negative=1,this):this._iaddn(t)},i.prototype._iaddn=function(t){this.words[0]+=t;for(var e=0;e<this.length&&this.words[e]>=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},i.prototype.isubn=function(t){if(r("number"==typeof t),r(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e<this.length&&this.words[e]<0;e++)this.words[e]+=67108864,this.words[e+1]-=1;return this._strip()},i.prototype.addn=function(t){return this.clone().iaddn(t)},i.prototype.subn=function(t){return this.clone().isubn(t)},i.prototype.iabs=function(){return this.negative=0,this},i.prototype.abs=function(){return this.clone().iabs()},i.prototype._ishlnsubmul=function(t,e,n){var i,o,s=t.length+n;this._expand(s);var a=0;for(i=0;i<t.length;i++){o=(0|this.words[i+n])+a;var l=(0|t.words[i])*e;a=((o-=67108863&l)>>26)-(l/67108864|0),this.words[i+n]=67108863&o}for(;i<this.length-n;i++)a=(o=(0|this.words[i+n])+a)>>26,this.words[i+n]=67108863&o;if(0===a)return this._strip();for(r(-1===a),a=0,i=0;i<this.length;i++)a=(o=-(0|this.words[i])+a)>>26,this.words[i]=67108863&o;return this.negative=1,this._strip()},i.prototype._wordDiv=function(t,e){var r=(this.length,t.length),n=this.clone(),o=t,s=0|o.words[o.length-1];0!=(r=26-this._countBits(s))&&(o=o.ushln(r),n.iushln(r),s=0|o.words[o.length-1]);var a,l=n.length-o.length;if("mod"!==e){(a=new i(null)).length=l+1,a.words=new Array(a.length);for(var c=0;c<a.length;c++)a.words[c]=0}var u=n.clone()._ishlnsubmul(o,1,l);0===u.negative&&(n=u,a&&(a.words[l]=1));for(var h=l-1;h>=0;h--){var d=67108864*(0|n.words[o.length+h])+(0|n.words[o.length+h-1]);for(d=Math.min(d/s|0,67108863),n._ishlnsubmul(o,d,h);0!==n.negative;)d--,n.negative=0,n._ishlnsubmul(o,1,h),n.isZero()||(n.negative^=1);a&&(a.words[h]=d)}return a&&a._strip(),n._strip(),"div"!==e&&0!==r&&n.iushrn(r),{div:a||null,mod:n}},i.prototype.divmod=function(t,e,n){return r(!t.isZero()),this.isZero()?{div:new i(0),mod:new i(0)}:0!==this.negative&&0===t.negative?(a=this.neg().divmod(t,e),"mod"!==e&&(o=a.div.neg()),"div"!==e&&(s=a.mod.neg(),n&&0!==s.negative&&s.iadd(t)),{div:o,mod:s}):0===this.negative&&0!==t.negative?(a=this.divmod(t.neg(),e),"mod"!==e&&(o=a.div.neg()),{div:o,mod:a.mod}):0!==(this.negative&t.negative)?(a=this.neg().divmod(t.neg(),e),"div"!==e&&(s=a.mod.neg(),n&&0!==s.negative&&s.isub(t)),{div:a.div,mod:s}):t.length>this.length||this.cmp(t)<0?{div:new i(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new i(this.modrn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new i(this.modrn(t.words[0]))}:this._wordDiv(t,e);var o,s,a},i.prototype.div=function(t){return this.divmod(t,"div",!1).div},i.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},i.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},i.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,n=t.ushrn(1),i=t.andln(1),o=r.cmp(n);return o<0||1===i&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},i.prototype.modrn=function(t){var e=t<0;e&&(t=-t),r(t<=67108863);for(var n=(1<<26)%t,i=0,o=this.length-1;o>=0;o--)i=(n*i+(0|this.words[o]))%t;return e?-i:i},i.prototype.modn=function(t){return this.modrn(t)},i.prototype.idivn=function(t){var e=t<0;e&&(t=-t),r(t<=67108863);for(var n=0,i=this.length-1;i>=0;i--){var o=(0|this.words[i])+67108864*n;this.words[i]=o/t|0,n=o%t}return this._strip(),e?this.ineg():this},i.prototype.divn=function(t){return this.clone().idivn(t)},i.prototype.egcd=function(t){r(0===t.negative),r(!t.isZero());var e=this,n=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var o=new i(1),s=new i(0),a=new i(0),l=new i(1),c=0;e.isEven()&&n.isEven();)e.iushrn(1),n.iushrn(1),++c;for(var u=n.clone(),h=e.clone();!e.isZero();){for(var d=0,f=1;0===(e.words[0]&f)&&d<26;++d,f<<=1);if(d>0)for(e.iushrn(d);d-- >0;)(o.isOdd()||s.isOdd())&&(o.iadd(u),s.isub(h)),o.iushrn(1),s.iushrn(1);for(var p=0,m=1;0===(n.words[0]&m)&&p<26;++p,m<<=1);if(p>0)for(n.iushrn(p);p-- >0;)(a.isOdd()||l.isOdd())&&(a.iadd(u),l.isub(h)),a.iushrn(1),l.iushrn(1);e.cmp(n)>=0?(e.isub(n),o.isub(a),s.isub(l)):(n.isub(e),a.isub(o),l.isub(s))}return{a:a,b:l,gcd:n.iushln(c)}},i.prototype._invmp=function(t){r(0===t.negative),r(!t.isZero());var e=this,n=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var o,s=new i(1),a=new i(0),l=n.clone();e.cmpn(1)>0&&n.cmpn(1)>0;){for(var c=0,u=1;0===(e.words[0]&u)&&c<26;++c,u<<=1);if(c>0)for(e.iushrn(c);c-- >0;)s.isOdd()&&s.iadd(l),s.iushrn(1);for(var h=0,d=1;0===(n.words[0]&d)&&h<26;++h,d<<=1);if(h>0)for(n.iushrn(h);h-- >0;)a.isOdd()&&a.iadd(l),a.iushrn(1);e.cmp(n)>=0?(e.isub(n),s.isub(a)):(n.isub(e),a.isub(s))}return(o=0===e.cmpn(1)?s:a).cmpn(0)<0&&o.iadd(t),o},i.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var n=0;e.isEven()&&r.isEven();n++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var i=e.cmp(r);if(i<0){var o=e;e=r,r=o}else if(0===i||0===r.cmpn(1))break;e.isub(r)}return r.iushln(n)},i.prototype.invm=function(t){return this.egcd(t).a.umod(t)},i.prototype.isEven=function(){return!(1&this.words[0])},i.prototype.isOdd=function(){return!(1&~this.words[0])},i.prototype.andln=function(t){return this.words[0]&t},i.prototype.bincn=function(t){r("number"==typeof t);var e=t%26,n=(t-e)/26,i=1<<e;if(this.length<=n)return this._expand(n+1),this.words[n]|=i,this;for(var o=i,s=n;0!==o&&s<this.length;s++){var a=0|this.words[s];o=(a+=o)>>>26,a&=67108863,this.words[s]=a}return 0!==o&&(this.words[s]=o,this.length++),this},i.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},i.prototype.cmpn=function(t){var e,n=t<0;if(0!==this.negative&&!n)return-1;if(0===this.negative&&n)return 1;if(this._strip(),this.length>1)e=1;else{n&&(t=-t),r(t<=67108863,"Number is too big");var i=0|this.words[0];e=i===t?0:i<t?-1:1}return 0!==this.negative?0|-e:e},i.prototype.cmp=function(t){if(0!==this.negative&&0===t.negative)return-1;if(0===this.negative&&0!==t.negative)return 1;var e=this.ucmp(t);return 0!==this.negative?0|-e:e},i.prototype.ucmp=function(t){if(this.length>t.length)return 1;if(this.length<t.length)return-1;for(var e=0,r=this.length-1;r>=0;r--){var n=0|this.words[r],i=0|t.words[r];if(n!==i){n<i?e=-1:n>i&&(e=1);break}}return e},i.prototype.gtn=function(t){return 1===this.cmpn(t)},i.prototype.gt=function(t){return 1===this.cmp(t)},i.prototype.gten=function(t){return this.cmpn(t)>=0},i.prototype.gte=function(t){return this.cmp(t)>=0},i.prototype.ltn=function(t){return-1===this.cmpn(t)},i.prototype.lt=function(t){return-1===this.cmp(t)},i.prototype.lten=function(t){return this.cmpn(t)<=0},i.prototype.lte=function(t){return this.cmp(t)<=0},i.prototype.eqn=function(t){return 0===this.cmpn(t)},i.prototype.eq=function(t){return 0===this.cmp(t)},i.red=function(t){return new S(t)},i.prototype.toRed=function(t){return r(!this.red,"Already a number in reduction context"),r(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},i.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},i.prototype._forceRed=function(t){return this.red=t,this},i.prototype.forceRed=function(t){return r(!this.red,"Already a number in reduction context"),this._forceRed(t)},i.prototype.redAdd=function(t){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},i.prototype.redIAdd=function(t){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},i.prototype.redSub=function(t){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},i.prototype.redISub=function(t){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},i.prototype.redShl=function(t){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},i.prototype.redMul=function(t){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},i.prototype.redIMul=function(t){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},i.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},i.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},i.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},i.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},i.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},i.prototype.redPow=function(t){return r(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var w={k256:null,p224:null,p192:null,p25519:null};function y(t,e){this.name=t,this.p=new i(e,16),this.n=this.p.bitLength(),this.k=new i(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function b(){y.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function E(){y.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function A(){y.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function k(){y.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function S(t){if("string"==typeof t){var e=i._prime(t);this.m=e.p,this.prime=e}else r(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function C(t){S.call(this,t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new i(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}y.prototype._tmp=function(){var t=new i(null);return t.words=new Array(Math.ceil(this.n/13)),t},y.prototype.ireduce=function(t){var e,r=t;do{this.split(r,this.tmp),e=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(e>this.n);var n=e<this.n?-1:r.ucmp(this.p);return 0===n?(r.words[0]=0,r.length=1):n>0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},y.prototype.split=function(t,e){t.iushrn(this.n,0,e)},y.prototype.imulK=function(t){return t.imul(this.k)},n(b,y),b.prototype.split=function(t,e){for(var r=4194303,n=Math.min(t.length,9),i=0;i<n;i++)e.words[i]=t.words[i];if(e.length=n,t.length<=9)return t.words[0]=0,void(t.length=1);var o=t.words[9];for(e.words[e.length++]=o&r,i=10;i<t.length;i++){var s=0|t.words[i];t.words[i-10]=(s&r)<<4|o>>>22,o=s}o>>>=22,t.words[i-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},b.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r<t.length;r++){var n=0|t.words[r];e+=977*n,t.words[r]=67108863&e,e=64*n+(e/67108864|0)}return 0===t.words[t.length-1]&&(t.length--,0===t.words[t.length-1]&&t.length--),t},n(E,y),n(A,y),n(k,y),k.prototype.imulK=function(t){for(var e=0,r=0;r<t.length;r++){var n=19*(0|t.words[r])+e,i=67108863&n;n>>>=26,t.words[r]=i,e=n}return 0!==e&&(t.words[t.length++]=e),t},i._prime=function(t){if(w[t])return w[t];var e;if("k256"===t)e=new b;else if("p224"===t)e=new E;else if("p192"===t)e=new A;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new k}return w[t]=e,e},S.prototype._verify1=function(t){r(0===t.negative,"red works only with positives"),r(t.red,"red works only with red numbers")},S.prototype._verify2=function(t,e){r(0===(t.negative|e.negative),"red works only with positives"),r(t.red&&t.red===e.red,"red works only with red numbers")},S.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):(c(t,t.umod(this.m)._forceRed(this)),t)},S.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},S.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},S.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},S.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},S.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},S.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},S.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},S.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},S.prototype.isqr=function(t){return this.imul(t,t.clone())},S.prototype.sqr=function(t){return this.mul(t,t)},S.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(r(e%2==1),3===e){var n=this.m.add(new i(1)).iushrn(2);return this.pow(t,n)}for(var o=this.m.subn(1),s=0;!o.isZero()&&0===o.andln(1);)s++,o.iushrn(1);r(!o.isZero());var a=new i(1).toRed(this),l=a.redNeg(),c=this.m.subn(1).iushrn(1),u=this.m.bitLength();for(u=new i(2*u*u).toRed(this);0!==this.pow(u,c).cmp(l);)u.redIAdd(l);for(var h=this.pow(u,o),d=this.pow(t,o.addn(1).iushrn(1)),f=this.pow(t,o),p=s;0!==f.cmp(a);){for(var m=f,g=0;0!==m.cmp(a);g++)m=m.redSqr();r(g<p);var v=this.pow(h,new i(1).iushln(p-g-1));d=d.redMul(v),h=v.redSqr(),f=f.redMul(h),p=g}return d},S.prototype.invm=function(t){var e=t._invmp(this.m);return 0!==e.negative?(e.negative=0,this.imod(e).redNeg()):this.imod(e)},S.prototype.pow=function(t,e){if(e.isZero())return new i(1).toRed(this);if(0===e.cmpn(1))return t.clone();var r=new Array(16);r[0]=new i(1).toRed(this),r[1]=t;for(var n=2;n<r.length;n++)r[n]=this.mul(r[n-1],t);var o=r[0],s=0,a=0,l=e.bitLength()%26;for(0===l&&(l=26),n=e.length-1;n>=0;n--){for(var c=e.words[n],u=l-1;u>=0;u--){var h=c>>u&1;o!==r[0]&&(o=this.sqr(o)),0!==h||0!==s?(s<<=1,s|=h,(4===++a||0===n&&0===u)&&(o=this.mul(o,r[s]),a=0,s=0)):a=0}l=26}return o},S.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},S.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},i.mont=function(t){return new C(t)},n(C,S),C.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},C.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},C.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),o=i;return i.cmp(this.m)>=0?o=i.isub(this.m):i.cmpn(0)<0&&(o=i.iadd(this.m)),o._forceRed(this)},C.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new i(0)._forceRed(this);var r=t.mul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),o=r.isub(n).iushrn(this.shift),s=o;return o.cmp(this.m)>=0?s=o.isub(this.m):o.cmpn(0)<0&&(s=o.iadd(this.m)),s._forceRed(this)},C.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(t,s)}(o)),o.exports),l=n(a);let c=!1,u=!1;const h={debug:1,default:2,info:2,warning:3,error:4,off:5};let d=h.default,f=null;const p=function(){try{const t=[];if(["NFD","NFC","NFKD","NFKC"].forEach(e=>{try{if("test"!=="test".normalize(e))throw new Error("bad normalize")}catch(r){t.push(e)}}),t.length)throw new Error("missing "+t.join(", "));if(String.fromCharCode(233).normalize("NFD")!==String.fromCharCode(101,769))throw new Error("broken implementation")}catch(t){return t.message}return null}();var m,g;!function(t){t.DEBUG="DEBUG",t.INFO="INFO",t.WARNING="WARNING",t.ERROR="ERROR",t.OFF="OFF"}(m||(m={})),function(t){t.UNKNOWN_ERROR="UNKNOWN_ERROR",t.NOT_IMPLEMENTED="NOT_IMPLEMENTED",t.UNSUPPORTED_OPERATION="UNSUPPORTED_OPERATION",t.NETWORK_ERROR="NETWORK_ERROR",t.SERVER_ERROR="SERVER_ERROR",t.TIMEOUT="TIMEOUT",t.BUFFER_OVERRUN="BUFFER_OVERRUN",t.NUMERIC_FAULT="NUMERIC_FAULT",t.MISSING_NEW="MISSING_NEW",t.INVALID_ARGUMENT="INVALID_ARGUMENT",t.MISSING_ARGUMENT="MISSING_ARGUMENT",t.UNEXPECTED_ARGUMENT="UNEXPECTED_ARGUMENT",t.CALL_EXCEPTION="CALL_EXCEPTION",t.INSUFFICIENT_FUNDS="INSUFFICIENT_FUNDS",t.NONCE_EXPIRED="NONCE_EXPIRED",t.REPLACEMENT_UNDERPRICED="REPLACEMENT_UNDERPRICED",t.UNPREDICTABLE_GAS_LIMIT="UNPREDICTABLE_GAS_LIMIT",t.TRANSACTION_REPLACED="TRANSACTION_REPLACED",t.ACTION_REJECTED="ACTION_REJECTED"}(g||(g={}));const v="0123456789abcdef";class w{constructor(t){Object.defineProperty(this,"version",{enumerable:!0,value:t,writable:!1})}_log(t,e){const r=t.toLowerCase();null==h[r]&&this.throwArgumentError("invalid log level name","logLevel",t),d>h[r]||console.log.apply(console,e)}debug(...t){this._log(w.levels.DEBUG,t)}info(...t){this._log(w.levels.INFO,t)}warn(...t){this._log(w.levels.WARNING,t)}makeError(t,e,r){if(u)return this.makeError("censored error",e,{});e||(e=w.errors.UNKNOWN_ERROR),r||(r={});const n=[];Object.keys(r).forEach(t=>{const e=r[t];try{if(e instanceof Uint8Array){let r="";for(let t=0;t<e.length;t++)r+=v[e[t]>>4],r+=v[15&e[t]];n.push(t+"=Uint8Array(0x"+r+")")}else n.push(t+"="+JSON.stringify(e))}catch(e){n.push(t+"="+JSON.stringify(r[t].toString()))}}),n.push(`code=${e}`),n.push(`version=${this.version}`);const i=t;let o="";switch(e){case g.NUMERIC_FAULT:{o="NUMERIC_FAULT";const e=t;switch(e){case"overflow":case"underflow":case"division-by-zero":o+="-"+e;break;case"negative-power":case"negative-width":o+="-unsupported";break;case"unbound-bitwise-result":o+="-unbound-result"}break}case g.CALL_EXCEPTION:case g.INSUFFICIENT_FUNDS:case g.MISSING_NEW:case g.NONCE_EXPIRED:case g.REPLACEMENT_UNDERPRICED:case g.TRANSACTION_REPLACED:case g.UNPREDICTABLE_GAS_LIMIT:o=e}o&&(t+=" [ See: https://links.ethers.org/v5-errors-"+o+" ]"),n.length&&(t+=" ("+n.join(", ")+")");const s=new Error(t);return s.reason=i,s.code=e,Object.keys(r).forEach(function(t){s[t]=r[t]}),s}throwError(t,e,r){throw this.makeError(t,e,r)}throwArgumentError(t,e,r){return this.throwError(t,w.errors.INVALID_ARGUMENT,{argument:e,value:r})}assert(t,e,r,n){t||this.throwError(e,r,n)}assertArgument(t,e,r,n){t||this.throwArgumentError(e,r,n)}checkNormalize(t){p&&this.throwError("platform missing String.prototype.normalize",w.errors.UNSUPPORTED_OPERATION,{operation:"String.prototype.normalize",form:p})}checkSafeUint53(t,e){"number"==typeof t&&(null==e&&(e="value not safe"),(t<0||t>=9007199254740991)&&this.throwError(e,w.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"out-of-safe-range",value:t}),t%1&&this.throwError(e,w.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"non-integer",value:t}))}checkArgumentCount(t,e,r){r=r?": "+r:"",t<e&&this.throwError("missing argument"+r,w.errors.MISSING_ARGUMENT,{count:t,expectedCount:e}),t>e&&this.throwError("too many arguments"+r,w.errors.UNEXPECTED_ARGUMENT,{count:t,expectedCount:e})}checkNew(t,e){t!==Object&&null!=t||this.throwError("missing new",w.errors.MISSING_NEW,{name:e.name})}checkAbstract(t,e){t===e?this.throwError("cannot instantiate abstract class "+JSON.stringify(e.name)+" directly; use a sub-class",w.errors.UNSUPPORTED_OPERATION,{name:t.name,operation:"new"}):t!==Object&&null!=t||this.throwError("missing new",w.errors.MISSING_NEW,{name:e.name})}static globalLogger(){return f||(f=new w("logger/5.8.0")),f}static setCensorship(t,e){if(!t&&e&&this.globalLogger().throwError("cannot permanently disable censorship",w.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"}),c){if(!t)return;this.globalLogger().throwError("error censorship permanent",w.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"})}u=!!t,c=!!e}static setLogLevel(t){const e=h[t.toLowerCase()];null!=e?d=e:w.globalLogger().warn("invalid log level - "+t)}static from(t){return new w(t)}}w.errors=g,w.levels=m;const y=new w("bytes/5.8.0");function b(t){return!!t.toHexString}function E(t){return t.slice||(t.slice=function(){const e=Array.prototype.slice.call(arguments);return E(new Uint8Array(Array.prototype.slice.apply(t,e)))}),t}function A(t){return P(t)&&!(t.length%2)||S(t)}function k(t){return"number"==typeof t&&t==t&&t%1==0}function S(t){if(null==t)return!1;if(t.constructor===Uint8Array)return!0;if("string"==typeof t)return!1;if(!k(t.length)||t.length<0)return!1;for(let e=0;e<t.length;e++){const r=t[e];if(!k(r)||r<0||r>=256)return!1}return!0}function C(t,e){if(e||(e={}),"number"==typeof t){y.checkSafeUint53(t,"invalid arrayify value");const e=[];for(;t;)e.unshift(255&t),t=parseInt(String(t/256));return 0===e.length&&e.push(0),E(new Uint8Array(e))}if(e.allowMissingPrefix&&"string"==typeof t&&"0x"!==t.substring(0,2)&&(t="0x"+t),b(t)&&(t=t.toHexString()),P(t)){let r=t.substring(2);r.length%2&&("left"===e.hexPad?r="0"+r:"right"===e.hexPad?r+="0":y.throwArgumentError("hex data is odd-length","value",t));const n=[];for(let t=0;t<r.length;t+=2)n.push(parseInt(r.substring(t,t+2),16));return E(new Uint8Array(n))}return S(t)?E(new Uint8Array(t)):y.throwArgumentError("invalid arrayify value","value",t)}function x(t){const e=t.map(t=>C(t)),r=e.reduce((t,e)=>t+e.length,0),n=new Uint8Array(r);return e.reduce((t,e)=>(n.set(e,t),t+e.length),0),E(n)}function _(t){let e=C(t);if(0===e.length)return e;let r=0;for(;r<e.length&&0===e[r];)r++;return r&&(e=e.slice(r)),e}function T(t,e){(t=C(t)).length>e&&y.throwArgumentError("value out of range","value",arguments[0]);const r=new Uint8Array(e);return r.set(t,e-t.length),E(r)}function P(t,e){return!("string"!=typeof t||!t.match(/^0x[0-9A-Fa-f]*$/))&&(!e||t.length===2+2*e)}const I="0123456789abcdef";function N(t,e){if(e||(e={}),"number"==typeof t){y.checkSafeUint53(t,"invalid hexlify value");let e="";for(;t;)e=I[15&t]+e,t=Math.floor(t/16);return e.length?(e.length%2&&(e="0"+e),"0x"+e):"0x00"}if("bigint"==typeof t)return(t=t.toString(16)).length%2?"0x0"+t:"0x"+t;if(e.allowMissingPrefix&&"string"==typeof t&&"0x"!==t.substring(0,2)&&(t="0x"+t),b(t))return t.toHexString();if(P(t))return t.length%2&&("left"===e.hexPad?t="0x0"+t.substring(2):"right"===e.hexPad?t+="0":y.throwArgumentError("hex data is odd-length","value",t)),t.toLowerCase();if(S(t)){let e="0x";for(let r=0;r<t.length;r++){let n=t[r];e+=I[(240&n)>>4]+I[15&n]}return e}return y.throwArgumentError("invalid hexlify value","value",t)}function M(t){if("string"!=typeof t)t=N(t);else if(!P(t)||t.length%2)return null;return(t.length-2)/2}function B(t,e,r){return"string"!=typeof t?t=N(t):(!P(t)||t.length%2)&&y.throwArgumentError("invalid hexData","value",t),e=2+2*e,null!=r?"0x"+t.substring(e,2+2*r):"0x"+t.substring(e)}function R(t){let e="0x";return t.forEach(t=>{e+=N(t).substring(2)}),e}function F(t){const e=O(N(t,{hexPad:"left"}));return"0x"===e?"0x0":e}function O(t){"string"!=typeof t&&(t=N(t)),P(t)||y.throwArgumentError("invalid hex string","value",t),t=t.substring(2);let e=0;for(;e<t.length&&"0"===t[e];)e++;return"0x"+t.substring(e)}function D(t,e){for("string"!=typeof t?t=N(t):P(t)||y.throwArgumentError("invalid hex string","value",t),t.length>2*e+2&&y.throwArgumentError("value out of range","value",arguments[1]);t.length<2*e+2;)t="0x0"+t.substring(2);return t}function U(t){const e={r:"0x",s:"0x",_vs:"0x",recoveryParam:0,v:0,yParityAndS:"0x",compact:"0x"};if(A(t)){let r=C(t);64===r.length?(e.v=27+(r[32]>>7),r[32]&=127,e.r=N(r.slice(0,32)),e.s=N(r.slice(32,64))):65===r.length?(e.r=N(r.slice(0,32)),e.s=N(r.slice(32,64)),e.v=r[64]):y.throwArgumentError("invalid signature string","signature",t),e.v<27&&(0===e.v||1===e.v?e.v+=27:y.throwArgumentError("signature invalid v byte","signature",t)),e.recoveryParam=1-e.v%2,e.recoveryParam&&(r[32]|=128),e._vs=N(r.slice(32,64))}else{if(e.r=t.r,e.s=t.s,e.v=t.v,e.recoveryParam=t.recoveryParam,e._vs=t._vs,null!=e._vs){const r=T(C(e._vs),32);e._vs=N(r);const n=r[0]>=128?1:0;null==e.recoveryParam?e.recoveryParam=n:e.recoveryParam!==n&&y.throwArgumentError("signature recoveryParam mismatch _vs","signature",t),r[0]&=127;const i=N(r);null==e.s?e.s=i:e.s!==i&&y.throwArgumentError("signature v mismatch _vs","signature",t)}if(null==e.recoveryParam)null==e.v?y.throwArgumentError("signature missing v and recoveryParam","signature",t):0===e.v||1===e.v?e.recoveryParam=e.v:e.recoveryParam=1-e.v%2;else if(null==e.v)e.v=27+e.recoveryParam;else{const r=0===e.v||1===e.v?e.v:1-e.v%2;e.recoveryParam!==r&&y.throwArgumentError("signature recoveryParam mismatch v","signature",t)}null!=e.r&&P(e.r)?e.r=D(e.r,32):y.throwArgumentError("signature missing or invalid r","signature",t),null!=e.s&&P(e.s)?e.s=D(e.s,32):y.throwArgumentError("signature missing or invalid s","signature",t);const r=C(e.s);r[0]>=128&&y.throwArgumentError("signature s out of range","signature",t),e.recoveryParam&&(r[0]|=128);const n=N(r);e._vs&&(P(e._vs)||y.throwArgumentError("signature invalid _vs","signature",t),e._vs=D(e._vs,32)),null==e._vs?e._vs=n:e._vs!==n&&y.throwArgumentError("signature _vs mismatch v and s","signature",t)}return e.yParityAndS=e._vs,e.compact=e.r+e.yParityAndS.substring(2),e}function L(t){return N(x([(t=U(t)).r,t.s,t.recoveryParam?"0x1c":"0x1b"]))}const q="bignumber/5.8.0";var z=l.BN;const G=new w(q),H={},j=9007199254740991;let K=!1;class W{constructor(t,e){t!==H&&G.throwError("cannot call constructor directly; use BigNumber.from",w.errors.UNSUPPORTED_OPERATION,{operation:"new (BigNumber)"}),this._hex=e,this._isBigNumber=!0,Object.freeze(this)}fromTwos(t){return $(J(this).fromTwos(t))}toTwos(t){return $(J(this).toTwos(t))}abs(){return"-"===this._hex[0]?W.from(this._hex.substring(1)):this}add(t){return $(J(this).add(J(t)))}sub(t){return $(J(this).sub(J(t)))}div(t){return W.from(t).isZero()&&Q("division-by-zero","div"),$(J(this).div(J(t)))}mul(t){return $(J(this).mul(J(t)))}mod(t){const e=J(t);return e.isNeg()&&Q("division-by-zero","mod"),$(J(this).umod(e))}pow(t){const e=J(t);return e.isNeg()&&Q("negative-power","pow"),$(J(this).pow(e))}and(t){const e=J(t);return(this.isNegative()||e.isNeg())&&Q("unbound-bitwise-result","and"),$(J(this).and(e))}or(t){const e=J(t);return(this.isNegative()||e.isNeg())&&Q("unbound-bitwise-result","or"),$(J(this).or(e))}xor(t){const e=J(t);return(this.isNegative()||e.isNeg())&&Q("unbound-bitwise-result","xor"),$(J(this).xor(e))}mask(t){return(this.isNegative()||t<0)&&Q("negative-width","mask"),$(J(this).maskn(t))}shl(t){return(this.isNegative()||t<0)&&Q("negative-width","shl"),$(J(this).shln(t))}shr(t){return(this.isNegative()||t<0)&&Q("negative-width","shr"),$(J(this).shrn(t))}eq(t){return J(this).eq(J(t))}lt(t){return J(this).lt(J(t))}lte(t){return J(this).lte(J(t))}gt(t){return J(this).gt(J(t))}gte(t){return J(this).gte(J(t))}isNegative(){return"-"===this._hex[0]}isZero(){return J(this).isZero()}toNumber(){try{return J(this).toNumber()}catch(t){Q("overflow","toNumber",this.toString())}return null}toBigInt(){try{return BigInt(this.toString())}catch(t){}return G.throwError("this platform does not support BigInt",w.errors.UNSUPPORTED_OPERATION,{value:this.toString()})}toString(){return arguments.length>0&&(10===arguments[0]?K||(K=!0,G.warn("BigNumber.toString does not accept any parameters; base-10 is assumed")):16===arguments[0]?G.throwError("BigNumber.toString does not accept any parameters; use bigNumber.toHexString()",w.errors.UNEXPECTED_ARGUMENT,{}):G.throwError("BigNumber.toString does not accept parameters",w.errors.UNEXPECTED_ARGUMENT,{})),J(this).toString(10)}toHexString(){return this._hex}toJSON(t){return{type:"BigNumber",hex:this.toHexString()}}static from(t){if(t instanceof W)return t;if("string"==typeof t)return t.match(/^-?0x[0-9a-f]+$/i)?new W(H,V(t)):t.match(/^-?[0-9]+$/)?new W(H,V(new z(t))):G.throwArgumentError("invalid BigNumber string","value",t);if("number"==typeof t)return t%1&&Q("underflow","BigNumber.from",t),(t>=j||t<=-j)&&Q("overflow","BigNumber.from",t),W.from(String(t));const e=t;if("bigint"==typeof e)return W.from(e.toString());if(S(e))return W.from(N(e));if(e)if(e.toHexString){const t=e.toHexString();if("string"==typeof t)return W.from(t)}else{let t=e._hex;if(null==t&&"BigNumber"===e.type&&(t=e.hex),"string"==typeof t&&(P(t)||"-"===t[0]&&P(t.substring(1))))return W.from(t)}return G.throwArgumentError("invalid BigNumber value","value",t)}static isBigNumber(t){return!(!t||!t._isBigNumber)}}function V(t){if("string"!=typeof t)return V(t.toString(16));if("-"===t[0])return"-"===(t=t.substring(1))[0]&&G.throwArgumentError("invalid hex","value",t),"0x00"===(t=V(t))?t:"-"+t;if("0x"!==t.substring(0,2)&&(t="0x"+t),"0x"===t)return"0x00";for(t.length%2&&(t="0x0"+t.substring(2));t.length>4&&"0x00"===t.substring(0,4);)t="0x"+t.substring(4);return t}function $(t){return W.from(V(t))}function J(t){const e=W.from(t).toHexString();return"-"===e[0]?new z("-"+e.substring(3),16):new z(e.substring(2),16)}function Q(t,e,r){const n={fault:t,operation:e};return null!=r&&(n.value=r),G.throwError(t,w.errors.NUMERIC_FAULT,n)}const Y=new w(q),X={},Z=W.from(0),tt=W.from(-1);function et(t,e,r,n){const i={fault:e,operation:r};return void 0!==n&&(i.value=n),Y.throwError(t,w.errors.NUMERIC_FAULT,i)}let rt="0";for(;rt.length<256;)rt+=rt;function nt(t){if("number"!=typeof t)try{t=W.from(t).toNumber()}catch(t){}return"number"==typeof t&&t>=0&&t<=256&&!(t%1)?"1"+rt.substring(0,t):Y.throwArgumentError("invalid decimal size","decimals",t)}function it(t,e){null==e&&(e=0);const r=nt(e),n=(t=W.from(t)).lt(Z);n&&(t=t.mul(tt));let i=t.mod(r).toString();for(;i.length<r.length-1;)i="0"+i;i=i.match(/^([0-9]*[1-9]|0)(0*)/)[1];const o=t.div(r).toString();return t=1===r.length?o:o+"."+i,n&&(t="-"+t),t}function ot(t,e){null==e&&(e=0);const r=nt(e);"string"==typeof t&&t.match(/^-?[0-9.]+$/)||Y.throwArgumentError("invalid decimal value","value",t);const n="-"===t.substring(0,1);n&&(t=t.substring(1)),"."===t&&Y.throwArgumentError("missing value","value",t);const i=t.split(".");i.length>2&&Y.throwArgumentError("too many decimal points","value",t);let o=i[0],s=i[1];for(o||(o="0"),s||(s="0");"0"===s[s.length-1];)s=s.substring(0,s.length-1);for(s.length>r.length-1&&et("fractional component exceeds decimals","underflow","parseFixed"),""===s&&(s="0");s.length<r.length-1;)s+="0";const a=W.from(o),l=W.from(s);let c=a.mul(r).add(l);return n&&(c=c.mul(tt)),c}class st{constructor(t,e,r,n){t!==X&&Y.throwError("cannot use FixedFormat constructor; use FixedFormat.from",w.errors.UNSUPPORTED_OPERATION,{operation:"new FixedFormat"}),this.signed=e,this.width=r,this.decimals=n,this.name=(e?"":"u")+"fixed"+String(r)+"x"+String(n),this._multiplier=nt(n),Object.freeze(this)}static from(t){if(t instanceof st)return t;"number"==typeof t&&(t=`fixed128x${t}`);let e=!0,r=128,n=18;if("string"==typeof t)if("fixed"===t);else if("ufixed"===t)e=!1;else{const i=t.match(/^(u?)fixed([0-9]+)x([0-9]+)$/);i||Y.throwArgumentError("invalid fixed format","format",t),e="u"!==i[1],r=parseInt(i[2]),n=parseInt(i[3])}else if(t){const i=(e,r,n)=>null==t[e]?n:(typeof t[e]!==r&&Y.throwArgumentError("invalid fixed format ("+e+" not "+r+")","format."+e,t[e]),t[e]);e=i("signed","boolean",e),r=i("width","number",r),n=i("decimals","number",n)}return r%8&&Y.throwArgumentError("invalid fixed format width (not byte aligned)","format.width",r),n>80&&Y.throwArgumentError("invalid fixed format (decimals too large)","format.decimals",n),new st(X,e,r,n)}}class at{constructor(t,e,r,n){t!==X&&Y.throwError("cannot use FixedNumber constructor; use FixedNumber.from",w.errors.UNSUPPORTED_OPERATION,{operation:"new FixedFormat"}),this.format=n,this._hex=e,this._value=r,this._isFixedNumber=!0,Object.freeze(this)}_checkFormat(t){this.format.name!==t.format.name&&Y.throwArgumentError("incompatible format; use fixedNumber.toFormat","other",t)}addUnsafe(t){this._checkFormat(t);const e=ot(this._value,this.format.decimals),r=ot(t._value,t.format.decimals);return at.fromValue(e.add(r),this.format.decimals,this.format)}subUnsafe(t){this._checkFormat(t);const e=ot(this._value,this.format.decimals),r=ot(t._value,t.format.decimals);return at.fromValue(e.sub(r),this.format.decimals,this.format)}mulUnsafe(t){this._checkFormat(t);const e=ot(this._value,this.format.decimals),r=ot(t._value,t.format.decimals);return at.fromValue(e.mul(r).div(this.format._multiplier),this.format.decimals,this.format)}divUnsafe(t){this._checkFormat(t);const e=ot(this._value,this.format.decimals),r=ot(t._value,t.format.decimals);return at.fromValue(e.mul(this.format._multiplier).div(r),this.format.decimals,this.format)}floor(){const t=this.toString().split(".");1===t.length&&t.push("0");let e=at.from(t[0],this.format);const r=!t[1].match(/^(0*)$/);return this.isNegative()&&r&&(e=e.subUnsafe(lt.toFormat(e.format))),e}ceiling(){const t=this.toString().split(".");1===t.length&&t.push("0");let e=at.from(t[0],this.format);const r=!t[1].match(/^(0*)$/);return!this.isNegative()&&r&&(e=e.addUnsafe(lt.toFormat(e.format))),e}round(t){null==t&&(t=0);const e=this.toString().split(".");if(1===e.length&&e.push("0"),(t<0||t>80||t%1)&&Y.throwArgumentError("invalid decimal count","decimals",t),e[1].length<=t)return this;const r=at.from("1"+rt.substring(0,t),this.format),n=ct.toFormat(this.format);return this.mulUnsafe(r).addUnsafe(n).floor().divUnsafe(r)}isZero(){return"0.0"===this._value||"0"===this._value}isNegative(){return"-"===this._value[0]}toString(){return this._value}toHexString(t){if(null==t)return this._hex;t%8&&Y.throwArgumentError("invalid byte width","width",t);return D(W.from(this._hex).fromTwos(this.format.width).toTwos(t).toHexString(),t/8)}toUnsafeFloat(){return parseFloat(this.toString())}toFormat(t){return at.fromString(this._value,t)}static fromValue(t,e,r){return null!=r||null==e||function(t){return null!=t&&(W.isBigNumber(t)||"number"==typeof t&&t%1==0||"string"==typeof t&&!!t.match(/^-?[0-9]+$/)||P(t)||"bigint"==typeof t||S(t))}(e)||(r=e,e=null),null==e&&(e=0),null==r&&(r="fixed"),at.fromString(it(t,e),st.from(r))}static fromString(t,e){null==e&&(e="fixed");const r=st.from(e),n=ot(t,r.decimals);!r.signed&&n.lt(Z)&&et("unsigned value cannot be negative","overflow","value",t);let i=null;r.signed?i=n.toTwos(r.width).toHexString():(i=n.toHexString(),i=D(i,r.width/8));const o=it(n,r.decimals);return new at(X,i,o,r)}static fromBytes(t,e){null==e&&(e="fixed");const r=st.from(e);if(C(t).length>r.width/8)throw new Error("overflow");let n=W.from(t);r.signed&&(n=n.fromTwos(r.width));const i=n.toTwos((r.signed?0:1)+r.width).toHexString(),o=it(n,r.decimals);return new at(X,i,o,r)}static from(t,e){if("string"==typeof t)return at.fromString(t,e);if(S(t))return at.fromBytes(t,e);try{return at.fromValue(t,0,e)}catch(t){if(t.code!==w.errors.INVALID_ARGUMENT)throw t}return Y.throwArgumentError("invalid FixedNumber value","value",t)}static isFixedNumber(t){return!(!t||!t._isFixedNumber)}}const lt=at.from(1),ct=at.from("0.5");var ut=function(t,e,r,n){return new(r||(r=Promise))(function(i,o){function s(t){try{l(n.next(t))}catch(t){o(t)}}function a(t){try{l(n.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}l((n=n.apply(t,e||[])).next())})};const ht=new w("properties/5.8.0");function dt(t,e,r){Object.defineProperty(t,e,{enumerable:!0,value:r,writable:!1})}function ft(t,e){for(let r=0;r<32;r++){if(t[e])return t[e];if(!t.prototype||"object"!=typeof t.prototype)break;t=Object.getPrototypeOf(t.prototype).constructor}return null}function pt(t){return ut(this,void 0,void 0,function*(){const e=Object.keys(t).map(e=>{const r=t[e];return Promise.resolve(r).then(t=>({key:e,value:t}))});return(yield Promise.all(e)).reduce((t,e)=>(t[e.key]=e.value,t),{})})}function mt(t,e){t&&"object"==typeof t||ht.throwArgumentError("invalid object","object",t),Object.keys(t).forEach(r=>{e[r]||ht.throwArgumentError("invalid object key - "+r,"transaction:"+r,t)})}function gt(t){const e={};for(const r in t)e[r]=t[r];return e}const vt={bigint:!0,boolean:!0,function:!0,number:!0,string:!0};function wt(t){if(null==t||vt[typeof t])return!0;if(Array.isArray(t)||"object"==typeof t){if(!Object.isFrozen(t))return!1;const e=Object.keys(t);for(let r=0;r<e.length;r++){let n=null;try{n=t[e[r]]}catch(t){continue}if(!wt(n))return!1}return!0}return ht.throwArgumentError("Cannot deepCopy "+typeof t,"object",t)}function yt(t){if(wt(t))return t;if(Array.isArray(t))return Object.freeze(t.map(t=>bt(t)));if("object"==typeof t){const e={};for(const r in t){const n=t[r];void 0!==n&&dt(e,r,bt(n))}return e}return ht.throwArgumentError("Cannot deepCopy "+typeof t,"object",t)}function bt(t){return yt(t)}class Et{constructor(t){for(const e in t)this[e]=bt(t[e])}}const At="abi/5.8.0",kt=new w(At),St={};let Ct={calldata:!0,memory:!0,storage:!0},xt={calldata:!0,memory:!0};function _t(t,e){if("bytes"===t||"string"===t){if(Ct[e])return!0}else if("address"===t){if("payable"===e)return!0}else if((t.indexOf("[")>=0||"tuple"===t)&&xt[e])return!0;return(Ct[e]||"payable"===e)&&kt.throwArgumentError("invalid modifier","name",e),!1}function Tt(t,e){for(let r in e)dt(t,r,e[r])}const Pt=Object.freeze({sighash:"sighash",minimal:"minimal",full:"full",json:"json"}),It=new RegExp(/^(.*)\[([0-9]*)\]$/);class Nt{constructor(t,e){t!==St&&kt.throwError("use fromString",w.errors.UNSUPPORTED_OPERATION,{operation:"new ParamType()"}),Tt(this,e);let r=this.type.match(It);Tt(this,r?{arrayLength:parseInt(r[2]||"-1"),arrayChildren:Nt.fromObject({type:r[1],components:this.components}),baseType:"array"}:{arrayLength:null,arrayChildren:null,baseType:null!=this.components?"tuple":this.type}),this._isParamType=!0,Object.freeze(this)}format(t){if(t||(t=Pt.sighash),Pt[t]||kt.throwArgumentError("invalid format type","format",t),t===Pt.json){let e={type:"tuple"===this.baseType?"tuple":this.type,name:this.name||void 0};return"boolean"==typeof this.indexed&&(e.indexed=this.indexed),this.components&&(e.components=this.components.map(e=>JSON.parse(e.format(t)))),JSON.stringify(e)}let e="";return"array"===this.baseType?(e+=this.arrayChildren.format(t),e+="["+(this.arrayLength<0?"":String(this.arrayLength))+"]"):"tuple"===this.baseType?(t!==Pt.sighash&&(e+=this.type),e+="("+this.components.map(e=>e.format(t)).join(t===Pt.full?", ":",")+")"):e+=this.type,t!==Pt.sighash&&(!0===this.indexed&&(e+=" indexed"),t===Pt.full&&this.name&&(e+=" "+this.name)),e}static from(t,e){return"string"==typeof t?Nt.fromString(t,e):Nt.fromObject(t)}static fromObject(t){return Nt.isParamType(t)?t:new Nt(St,{name:t.name||null,type:Gt(t.type),indexed:null==t.indexed?null:!!t.indexed,components:t.components?t.components.map(Nt.fromObject):null})}static fromString(t,e){return r=function(t,e){let r=t;function n(e){kt.throwArgumentError(`unexpected character at position ${e}`,"param",t)}function i(t){let r={type:"",name:"",parent:t,state:{allowType:!0}};return e&&(r.indexed=!1),r}t=t.replace(/\s/g," ");let o={type:"",name:"",state:{allowType:!0}},s=o;for(let r=0;r<t.length;r++){let o=t[r];switch(o){case"(":s.state.allowType&&""===s.type?s.type="tuple":s.state.allowParams||n(r),s.state.allowType=!1,s.type=Gt(s.type),s.components=[i(s)],s=s.components[0];break;case")":delete s.state,"indexed"===s.name&&(e||n(r),s.indexed=!0,s.name=""),_t(s.type,s.name)&&(s.name=""),s.type=Gt(s.type);let t=s;s=s.parent,s||n(r),delete t.parent,s.state.allowParams=!1,s.state.allowName=!0,s.state.allowArray=!0;break;case",":delete s.state,"indexed"===s.name&&(e||n(r),s.indexed=!0,s.name=""),_t(s.type,s.name)&&(s.name=""),s.type=Gt(s.type);let a=i(s.parent);s.parent.components.push(a),delete s.parent,s=a;break;case" ":s.state.allowType&&""!==s.type&&(s.type=Gt(s.type),delete s.state.allowType,s.state.allowName=!0,s.state.allowParams=!0),s.state.allowName&&""!==s.name&&("indexed"===s.name?(e||n(r),s.indexed&&n(r),s.indexed=!0,s.name=""):_t(s.type,s.name)?s.name="":s.state.allowName=!1);break;case"[":s.state.allowArray||n(r),s.type+=o,s.state.allowArray=!1,s.state.allowName=!1,s.state.readArray=!0;break;case"]":s.state.readArray||n(r),s.type+=o,s.state.readArray=!1,s.state.allowArray=!0,s.state.allowName=!0;break;default:s.state.allowType?(s.type+=o,s.state.allowParams=!0,s.state.allowArray=!0):s.state.allowName?(s.name+=o,delete s.state.allowArray):s.state.readArray?s.type+=o:n(r)}}return s.parent&&kt.throwArgumentError("unexpected eof","param",t),delete o.state,"indexed"===s.name?(e||n(r.length-7),s.indexed&&n(r.length-7),s.indexed=!0,s.name=""):_t(s.type,s.name)&&(s.name=""),o.type=Gt(o.type),o}(t,!!e),Nt.fromObject({name:r.name,type:r.type,indexed:r.indexed,components:r.components});var r}static isParamType(t){return!(null==t||!t._isParamType)}}function Mt(t,e){return function(t){t=t.trim();let e=[],r="",n=0;for(let i=0;i<t.length;i++){let o=t[i];","===o&&0===n?(e.push(r),r=""):(r+=o,"("===o?n++:")"===o&&(n--,-1===n&&kt.throwArgumentError("unbalanced parenthesis","value",t)))}r&&e.push(r);return e}(t).map(t=>Nt.fromString(t,e))}class Bt{constructor(t,e){t!==St&&kt.throwError("use a static from method",w.errors.UNSUPPORTED_OPERATION,{operation:"new Fragment()"}),Tt(this,e),this._isFragment=!0,Object.freeze(this)}static from(t){return Bt.isFragment(t)?t:"string"==typeof t?Bt.fromString(t):Bt.fromObject(t)}static fromObject(t){if(Bt.isFragment(t))return t;switch(t.type){case"function":return Lt.fromObject(t);case"event":return Rt.fromObject(t);case"constructor":return Ut.fromObject(t);case"error":return zt.fromObject(t);case"fallback":case"receive":return null}return kt.throwArgumentError("invalid fragment object","value",t)}static fromString(t){return"event"===(t=(t=(t=t.replace(/\s/g," ")).replace(/\(/g," (").replace(/\)/g,") ").replace(/\s+/g," ")).trim()).split(" ")[0]?Rt.fromString(t.substring(5).trim()):"function"===t.split(" ")[0]?Lt.fromString(t.substring(8).trim()):"constructor"===t.split("(")[0].trim()?Ut.fromString(t.trim()):"error"===t.split(" ")[0]?zt.fromString(t.substring(5).trim()):kt.throwArgumentError("unsupported fragment","value",t)}static isFragment(t){return!(!t||!t._isFragment)}}class Rt extends Bt{format(t){if(t||(t=Pt.sighash),Pt[t]||kt.throwArgumentError("invalid format type","format",t),t===Pt.json)return JSON.stringify({type:"event",anonymous:this.anonymous,name:this.name,inputs:this.inputs.map(e=>JSON.parse(e.format(t)))});let e="";return t!==Pt.sighash&&(e+="event "),e+=this.name+"("+this.inputs.map(e=>e.format(t)).join(t===Pt.full?", ":",")+") ",t!==Pt.sighash&&this.anonymous&&(e+="anonymous "),e.trim()}static from(t){return"string"==typeof t?Rt.fromString(t):Rt.fromObject(t)}static fromObject(t){if(Rt.isEventFragment(t))return t;"event"!==t.type&&kt.throwArgumentError("invalid event object","value",t);const e={name:jt(t.name),anonymous:t.anonymous,inputs:t.inputs?t.inputs.map(Nt.fromObject):[],type:"event"};return new Rt(St,e)}static fromString(t){let e=t.match(Kt);e||kt.throwArgumentError("invalid event string","value",t);let r=!1;return e[3].split(" ").forEach(t=>{switch(t.trim()){case"anonymous":r=!0;break;case"":break;default:kt.warn("unknown modifier: "+t)}}),Rt.fromObject({name:e[1].trim(),anonymous:r,inputs:Mt(e[2],!0),type:"event"})}static isEventFragment(t){return t&&t._isFragment&&"event"===t.type}}function Ft(t,e){e.gas=null;let r=t.split("@");return 1!==r.length?(r.length>2&&kt.throwArgumentError("invalid human-readable ABI signature","value",t),r[1].match(/^[0-9]+$/)||kt.throwArgumentError("invalid human-readable ABI signature gas","value",t),e.gas=W.from(r[1]),r[0]):t}function Ot(t,e){e.constant=!1,e.payable=!1,e.stateMutability="nonpayable",t.split(" ").forEach(t=>{switch(t.trim()){case"constant":e.constant=!0;break;case"payable":e.payable=!0,e.stateMutability="payable";break;case"nonpayable":e.payable=!1,e.stateMutability="nonpayable";break;case"pure":e.constant=!0,e.stateMutability="pure";break;case"view":e.constant=!0,e.stateMutability="view";break;case"external":case"public":case"":break;default:console.log("unknown modifier: "+t)}})}function Dt(t){let e={constant:!1,payable:!0,stateMutability:"payable"};return null!=t.stateMutability?(e.stateMutability=t.stateMutability,e.constant="view"===e.stateMutability||"pure"===e.stateMutability,null!=t.constant&&!!t.constant!==e.constant&&kt.throwArgumentError("cannot have constant function with mutability "+e.stateMutability,"value",t),e.payable="payable"===e.stateMutability,null!=t.payable&&!!t.payable!==e.payable&&kt.throwArgumentError("cannot have payable function with mutability "+e.stateMutability,"value",t)):null!=t.payable?(e.payable=!!t.payable,null!=t.constant||e.payable||"constructor"===t.type||kt.throwArgumentError("unable to determine stateMutability","value",t),e.constant=!!t.constant,e.constant?e.stateMutability="view":e.stateMutability=e.payable?"payable":"nonpayable",e.payable&&e.constant&&kt.throwArgumentError("cannot have constant payable function","value",t)):null!=t.constant?(e.constant=!!t.constant,e.payable=!e.constant,e.stateMutability=e.constant?"view":"payable"):"constructor"!==t.type&&kt.throwArgumentError("unable to determine stateMutability","value",t),e}class Ut extends Bt{format(t){if(t||(t=Pt.sighash),Pt[t]||kt.throwArgumentError("invalid format type","format",t),t===Pt.json)return JSON.stringify({type:"constructor",stateMutability:"nonpayable"!==this.stateMutability?this.stateMutability:void 0,payable:this.payable,gas:this.gas?this.gas.toNumber():void 0,inputs:this.inputs.map(e=>JSON.parse(e.format(t)))});t===Pt.sighash&&kt.throwError("cannot format a constructor for sighash",w.errors.UNSUPPORTED_OPERATION,{operation:"format(sighash)"});let e="constructor("+this.inputs.map(e=>e.format(t)).join(t===Pt.full?", ":",")+") ";return this.stateMutability&&"nonpayable"!==this.stateMutability&&(e+=this.stateMutability+" "),e.trim()}static from(t){return"string"==typeof t?Ut.fromString(t):Ut.fromObject(t)}static fromObject(t){if(Ut.isConstructorFragment(t))return t;"constructor"!==t.type&&kt.throwArgumentError("invalid constructor object","value",t);let e=Dt(t);e.constant&&kt.throwArgumentError("constructor cannot be constant","value",t);const r={name:null,type:t.type,inputs:t.inputs?t.inputs.map(Nt.fromObject):[],payable:e.payable,stateMutability:e.stateMutability,gas:t.gas?W.from(t.gas):null};return new Ut(St,r)}static fromString(t){let e={type:"constructor"},r=(t=Ft(t,e)).match(Kt);return r&&"constructor"===r[1].trim()||kt.throwArgumentError("invalid constructor string","value",t),e.inputs=Mt(r[2].trim(),!1),Ot(r[3].trim(),e),Ut.fromObject(e)}static isConstructorFragment(t){return t&&t._isFragment&&"constructor"===t.type}}class Lt extends Ut{format(t){if(t||(t=Pt.sighash),Pt[t]||kt.throwArgumentError("invalid format type","format",t),t===Pt.json)return JSON.stringify({type:"function",name:this.name,constant:this.constant,stateMutability:"nonpayable"!==this.stateMutability?this.stateMutability:void 0,payable:this.payable,gas:this.gas?this.gas.toNumber():void 0,inputs:this.inputs.map(e=>JSON.parse(e.format(t))),outputs:this.outputs.map(e=>JSON.parse(e.format(t)))});let e="";return t!==Pt.sighash&&(e+="function "),e+=this.name+"("+this.inputs.map(e=>e.format(t)).join(t===Pt.full?", ":",")+") ",t!==Pt.sighash&&(this.stateMutability?"nonpayable"!==this.stateMutability&&(e+=this.stateMutability+" "):this.constant&&(e+="view "),this.outputs&&this.outputs.length&&(e+="returns ("+this.outputs.map(e=>e.format(t)).join(", ")+") "),null!=this.gas&&(e+="@"+this.gas.toString()+" ")),e.trim()}static from(t){return"string"==typeof t?Lt.fromString(t):Lt.fromObject(t)}static fromObject(t){if(Lt.isFunctionFragment(t))return t;"function"!==t.type&&kt.throwArgumentError("invalid function object","value",t);let e=Dt(t);const r={type:t.type,name:jt(t.name),constant:e.constant,inputs:t.inputs?t.inputs.map(Nt.fromObject):[],outputs:t.outputs?t.outputs.map(Nt.fromObject):[],payable:e.payable,stateMutability:e.stateMutability,gas:t.gas?W.from(t.gas):null};return new Lt(St,r)}static fromString(t){let e={type:"function"},r=(t=Ft(t,e)).split(" returns ");r.length>2&&kt.throwArgumentError("invalid function string","value",t);let n=r[0].match(Kt);if(n||kt.throwArgumentError("invalid function signature","value",t),e.name=n[1].trim(),e.name&&jt(e.name),e.inputs=Mt(n[2],!1),Ot(n[3].trim(),e),r.length>1){let n=r[1].match(Kt);""==n[1].trim()&&""==n[3].trim()||kt.throwArgumentError("unexpected tokens","value",t),e.outputs=Mt(n[2],!1)}else e.outputs=[];return Lt.fromObject(e)}static isFunctionFragment(t){return t&&t._isFragment&&"function"===t.type}}function qt(t){const e=t.format();return"Error(string)"!==e&&"Panic(uint256)"!==e||kt.throwArgumentError(`cannot specify user defined ${e} error`,"fragment",t),t}class zt extends Bt{format(t){if(t||(t=Pt.sighash),Pt[t]||kt.throwArgumentError("invalid format type","format",t),t===Pt.json)return JSON.stringify({type:"error",name:this.name,inputs:this.inputs.map(e=>JSON.parse(e.format(t)))});let e="";return t!==Pt.sighash&&(e+="error "),e+=this.name+"("+this.inputs.map(e=>e.format(t)).join(t===Pt.full?", ":",")+") ",e.trim()}static from(t){return"string"==typeof t?zt.fromString(t):zt.fromObject(t)}static fromObject(t){if(zt.isErrorFragment(t))return t;"error"!==t.type&&kt.throwArgumentError("invalid error object","value",t);const e={type:t.type,name:jt(t.name),inputs:t.inputs?t.inputs.map(Nt.fromObject):[]};return qt(new zt(St,e))}static fromString(t){let e={type:"error"},r=t.match(Kt);return r||kt.throwArgumentError("invalid error signature","value",t),e.name=r[1].trim(),e.name&&jt(e.name),e.inputs=Mt(r[2],!1),qt(zt.fromObject(e))}static isErrorFragment(t){return t&&t._isFragment&&"error"===t.type}}function Gt(t){return t.match(/^uint($|[^1-9])/)?t="uint256"+t.substring(4):t.match(/^int($|[^1-9])/)&&(t="int256"+t.substring(3)),t}const Ht=new RegExp("^[a-zA-Z$_][a-zA-Z0-9$_]*$");function jt(t){return t&&t.match(Ht)||kt.throwArgumentError(`invalid identifier "${t}"`,"value",t),t}const Kt=new RegExp("^([^)(]*)\\((.*)\\)([^)(]*)$");const Wt=new w(At);function Vt(t){const e=[],r=function(t,n){if(Array.isArray(n))for(let i in n){const o=t.slice();o.push(i);try{r(o,n[i])}catch(t){e.push({path:o,error:t})}}};return r([],t),e}class $t{constructor(t,e,r,n){this.name=t,this.type=e,this.localName=r,this.dynamic=n}_throwError(t,e){Wt.throwArgumentError(t,this.localName,e)}}class Jt{constructor(t){dt(this,"wordSize",t||32),this._data=[],this._dataLength=0,this._padding=new Uint8Array(t)}get data(){return R(this._data)}get length(){return this._dataLength}_writeData(t){return this._data.push(t),this._dataLength+=t.length,t.length}appendWriter(t){return this._writeData(x(t._data))}writeBytes(t){let e=C(t);const r=e.length%this.wordSize;return r&&(e=x([e,this._padding.slice(r)])),this._writeData(e)}_getValue(t){let e=C(W.from(t));return e.length>this.wordSize&&Wt.throwError("value out-of-bounds",w.errors.BUFFER_OVERRUN,{length:this.wordSize,offset:e.length}),e.length%this.wordSize&&(e=x([this._padding.slice(e.length%this.wordSize),e])),e}writeValue(t){return this._writeData(this._getValue(t))}writeUpdatableValue(){const t=this._data.length;return this._data.push(this._padding),this._dataLength+=this.wordSize,e=>{this._data[t]=this._getValue(e)}}}class Qt{constructor(t,e,r,n){dt(this,"_data",C(t)),dt(this,"wordSize",e||32),dt(this,"_coerceFunc",r),dt(this,"allowLoose",n),this._offset=0}get data(){return N(this._data)}get consumed(){return this._offset}static coerce(t,e){let r=t.match("^u?int([0-9]+)$");return r&&parseInt(r[1])<=48&&(e=e.toNumber()),e}coerce(t,e){return this._coerceFunc?this._coerceFunc(t,e):Qt.coerce(t,e)}_peekBytes(t,e,r){let n=Math.ceil(e/this.wordSize)*this.wordSize;return this._offset+n>this._data.length&&(this.allowLoose&&r&&this._offset+e<=this._data.length?n=e:Wt.throwError("data out-of-bounds",w.errors.BUFFER_OVERRUN,{length:this._data.length,offset:this._offset+n})),this._data.slice(this._offset,this._offset+n)}subReader(t){return new Qt(this._data.slice(this._offset+t),this.wordSize,this._coerceFunc,this.allowLoose)}readBytes(t,e){let r=this._peekBytes(0,t,!!e);return this._offset+=r.length,r.slice(0,t)}readValue(){return W.from(this.readBytes(this.wordSize))}}var Yt,Xt={exports:{}};
1
+ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@monygroupcorp/microact")):"function"==typeof define&&define.amd?define(["exports","@monygroupcorp/microact"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).microWeb3={},t.microact)}(this,function(t,e){"use strict";var r="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function n(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var i,s={exports:{}},o=s.exports;var a=(i||(i=1,function(t){!function(t,e){function r(t,e){if(!t)throw new Error(e||"Assertion failed")}function n(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}function i(t,e,r){if(i.isBN(t))return t;this.negative=0,this.words=null,this.length=0,this.red=null,null!==t&&("le"!==e&&"be"!==e||(r=e,e=10),this._init(t||0,e||10,r||"be"))}var s;"object"==typeof t?t.exports=i:e.BN=i,i.BN=i,i.wordSize=26;try{s="undefined"!=typeof window&&void 0!==window.Buffer?window.Buffer:require("buffer").Buffer}catch(t){}function o(t,e){var n=t.charCodeAt(e);return n>=48&&n<=57?n-48:n>=65&&n<=70?n-55:n>=97&&n<=102?n-87:void r(!1,"Invalid character in "+t)}function a(t,e,r){var n=o(t,r);return r-1>=e&&(n|=o(t,r-1)<<4),n}function l(t,e,n,i){for(var s=0,o=0,a=Math.min(t.length,n),l=e;l<a;l++){var c=t.charCodeAt(l)-48;s*=i,o=c>=49?c-49+10:c>=17?c-17+10:c,r(c>=0&&o<i,"Invalid character"),s+=o}return s}function c(t,e){t.words=e.words,t.length=e.length,t.negative=e.negative,t.red=e.red}if(i.isBN=function(t){return t instanceof i||null!==t&&"object"==typeof t&&t.constructor.wordSize===i.wordSize&&Array.isArray(t.words)},i.max=function(t,e){return t.cmp(e)>0?t:e},i.min=function(t,e){return t.cmp(e)<0?t:e},i.prototype._init=function(t,e,n){if("number"==typeof t)return this._initNumber(t,e,n);if("object"==typeof t)return this._initArray(t,e,n);"hex"===e&&(e=16),r(e===(0|e)&&e>=2&&e<=36);var i=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&(i++,this.negative=1),i<t.length&&(16===e?this._parseHex(t,i,n):(this._parseBase(t,e,i),"le"===n&&this._initArray(this.toArray(),e,n)))},i.prototype._initNumber=function(t,e,n){t<0&&(this.negative=1,t=-t),t<67108864?(this.words=[67108863&t],this.length=1):t<4503599627370496?(this.words=[67108863&t,t/67108864&67108863],this.length=2):(r(t<9007199254740992),this.words=[67108863&t,t/67108864&67108863,1],this.length=3),"le"===n&&this._initArray(this.toArray(),e,n)},i.prototype._initArray=function(t,e,n){if(r("number"==typeof t.length),t.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(t.length/3),this.words=new Array(this.length);for(var i=0;i<this.length;i++)this.words[i]=0;var s,o,a=0;if("be"===n)for(i=t.length-1,s=0;i>=0;i-=3)o=t[i]|t[i-1]<<8|t[i-2]<<16,this.words[s]|=o<<a&67108863,this.words[s+1]=o>>>26-a&67108863,(a+=24)>=26&&(a-=26,s++);else if("le"===n)for(i=0,s=0;i<t.length;i+=3)o=t[i]|t[i+1]<<8|t[i+2]<<16,this.words[s]|=o<<a&67108863,this.words[s+1]=o>>>26-a&67108863,(a+=24)>=26&&(a-=26,s++);return this._strip()},i.prototype._parseHex=function(t,e,r){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var n=0;n<this.length;n++)this.words[n]=0;var i,s=0,o=0;if("be"===r)for(n=t.length-1;n>=e;n-=2)i=a(t,e,n)<<s,this.words[o]|=67108863&i,s>=18?(s-=18,o+=1,this.words[o]|=i>>>26):s+=8;else for(n=(t.length-e)%2==0?e+1:e;n<t.length;n+=2)i=a(t,e,n)<<s,this.words[o]|=67108863&i,s>=18?(s-=18,o+=1,this.words[o]|=i>>>26):s+=8;this._strip()},i.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var n=0,i=1;i<=67108863;i*=e)n++;n--,i=i/e|0;for(var s=t.length-r,o=s%n,a=Math.min(s,s-o)+r,c=0,h=r;h<a;h+=n)c=l(t,h,h+n,e),this.imuln(i),this.words[0]+c<67108864?this.words[0]+=c:this._iaddn(c);if(0!==o){var u=1;for(c=l(t,h,t.length,e),h=0;h<o;h++)u*=e;this.imuln(u),this.words[0]+c<67108864?this.words[0]+=c:this._iaddn(c)}this._strip()},i.prototype.copy=function(t){t.words=new Array(this.length);for(var e=0;e<this.length;e++)t.words[e]=this.words[e];t.length=this.length,t.negative=this.negative,t.red=this.red},i.prototype._move=function(t){c(t,this)},i.prototype.clone=function(){var t=new i(null);return this.copy(t),t},i.prototype._expand=function(t){for(;this.length<t;)this.words[this.length++]=0;return this},i.prototype._strip=function(){for(;this.length>1&&0===this.words[this.length-1];)this.length--;return this._normSign()},i.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},"undefined"!=typeof Symbol&&"function"==typeof Symbol.for)try{i.prototype[Symbol.for("nodejs.util.inspect.custom")]=h}catch(t){i.prototype.inspect=h}else i.prototype.inspect=h;function h(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"}var u=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],d=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],f=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function p(t,e,r){r.negative=e.negative^t.negative;var n=t.length+e.length|0;r.length=n,n=n-1|0;var i=0|t.words[0],s=0|e.words[0],o=i*s,a=67108863&o,l=o/67108864|0;r.words[0]=a;for(var c=1;c<n;c++){for(var h=l>>>26,u=67108863&l,d=Math.min(c,e.length-1),f=Math.max(0,c-t.length+1);f<=d;f++){var p=c-f|0;h+=(o=(i=0|t.words[p])*(s=0|e.words[f])+u)/67108864|0,u=67108863&o}r.words[c]=0|u,l=0|h}return 0!==l?r.words[c]=0|l:r.length--,r._strip()}i.prototype.toString=function(t,e){var n;if(e=0|e||1,16===(t=t||10)||"hex"===t){n="";for(var i=0,s=0,o=0;o<this.length;o++){var a=this.words[o],l=(16777215&(a<<i|s)).toString(16);s=a>>>24-i&16777215,(i+=2)>=26&&(i-=26,o--),n=0!==s||o!==this.length-1?u[6-l.length]+l+n:l+n}for(0!==s&&(n=s.toString(16)+n);n.length%e!==0;)n="0"+n;return 0!==this.negative&&(n="-"+n),n}if(t===(0|t)&&t>=2&&t<=36){var c=d[t],h=f[t];n="";var p=this.clone();for(p.negative=0;!p.isZero();){var m=p.modrn(h).toString(t);n=(p=p.idivn(h)).isZero()?m+n:u[c-m.length]+m+n}for(this.isZero()&&(n="0"+n);n.length%e!==0;)n="0"+n;return 0!==this.negative&&(n="-"+n),n}r(!1,"Base should be between 2 and 36")},i.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},i.prototype.toJSON=function(){return this.toString(16,2)},s&&(i.prototype.toBuffer=function(t,e){return this.toArrayLike(s,t,e)}),i.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},i.prototype.toArrayLike=function(t,e,n){this._strip();var i=this.byteLength(),s=n||Math.max(1,i);r(i<=s,"byte array longer than desired length"),r(s>0,"Requested array length <= 0");var o=function(t,e){return t.allocUnsafe?t.allocUnsafe(e):new t(e)}(t,s);return this["_toArrayLike"+("le"===e?"LE":"BE")](o,i),o},i.prototype._toArrayLikeLE=function(t,e){for(var r=0,n=0,i=0,s=0;i<this.length;i++){var o=this.words[i]<<s|n;t[r++]=255&o,r<t.length&&(t[r++]=o>>8&255),r<t.length&&(t[r++]=o>>16&255),6===s?(r<t.length&&(t[r++]=o>>24&255),n=0,s=0):(n=o>>>24,s+=2)}if(r<t.length)for(t[r++]=n;r<t.length;)t[r++]=0},i.prototype._toArrayLikeBE=function(t,e){for(var r=t.length-1,n=0,i=0,s=0;i<this.length;i++){var o=this.words[i]<<s|n;t[r--]=255&o,r>=0&&(t[r--]=o>>8&255),r>=0&&(t[r--]=o>>16&255),6===s?(r>=0&&(t[r--]=o>>24&255),n=0,s=0):(n=o>>>24,s+=2)}if(r>=0)for(t[r--]=n;r>=0;)t[r--]=0},Math.clz32?i.prototype._countBits=function(t){return 32-Math.clz32(t)}:i.prototype._countBits=function(t){var e=t,r=0;return e>=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},i.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 8191&e||(r+=13,e>>>=13),127&e||(r+=7,e>>>=7),15&e||(r+=4,e>>>=4),3&e||(r+=2,e>>>=2),1&e||r++,r},i.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},i.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;e<this.length;e++){var r=this._zeroBits(this.words[e]);if(t+=r,26!==r)break}return t},i.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},i.prototype.toTwos=function(t){return 0!==this.negative?this.abs().inotn(t).iaddn(1):this.clone()},i.prototype.fromTwos=function(t){return this.testn(t-1)?this.notn(t).iaddn(1).ineg():this.clone()},i.prototype.isNeg=function(){return 0!==this.negative},i.prototype.neg=function(){return this.clone().ineg()},i.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},i.prototype.iuor=function(t){for(;this.length<t.length;)this.words[this.length++]=0;for(var e=0;e<t.length;e++)this.words[e]=this.words[e]|t.words[e];return this._strip()},i.prototype.ior=function(t){return r(0===(this.negative|t.negative)),this.iuor(t)},i.prototype.or=function(t){return this.length>t.length?this.clone().ior(t):t.clone().ior(this)},i.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},i.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;r<e.length;r++)this.words[r]=this.words[r]&t.words[r];return this.length=e.length,this._strip()},i.prototype.iand=function(t){return r(0===(this.negative|t.negative)),this.iuand(t)},i.prototype.and=function(t){return this.length>t.length?this.clone().iand(t):t.clone().iand(this)},i.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},i.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var n=0;n<r.length;n++)this.words[n]=e.words[n]^r.words[n];if(this!==e)for(;n<e.length;n++)this.words[n]=e.words[n];return this.length=e.length,this._strip()},i.prototype.ixor=function(t){return r(0===(this.negative|t.negative)),this.iuxor(t)},i.prototype.xor=function(t){return this.length>t.length?this.clone().ixor(t):t.clone().ixor(this)},i.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},i.prototype.inotn=function(t){r("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),n=t%26;this._expand(e),n>0&&e--;for(var i=0;i<e;i++)this.words[i]=67108863&~this.words[i];return n>0&&(this.words[i]=~this.words[i]&67108863>>26-n),this._strip()},i.prototype.notn=function(t){return this.clone().inotn(t)},i.prototype.setn=function(t,e){r("number"==typeof t&&t>=0);var n=t/26|0,i=t%26;return this._expand(n+1),this.words[n]=e?this.words[n]|1<<i:this.words[n]&~(1<<i),this._strip()},i.prototype.iadd=function(t){var e,r,n;if(0!==this.negative&&0===t.negative)return this.negative=0,e=this.isub(t),this.negative^=1,this._normSign();if(0===this.negative&&0!==t.negative)return t.negative=0,e=this.isub(t),t.negative=1,e._normSign();this.length>t.length?(r=this,n=t):(r=t,n=this);for(var i=0,s=0;s<n.length;s++)e=(0|r.words[s])+(0|n.words[s])+i,this.words[s]=67108863&e,i=e>>>26;for(;0!==i&&s<r.length;s++)e=(0|r.words[s])+i,this.words[s]=67108863&e,i=e>>>26;if(this.length=r.length,0!==i)this.words[this.length]=i,this.length++;else if(r!==this)for(;s<r.length;s++)this.words[s]=r.words[s];return this},i.prototype.add=function(t){var e;return 0!==t.negative&&0===this.negative?(t.negative=0,e=this.sub(t),t.negative^=1,e):0===t.negative&&0!==this.negative?(this.negative=0,e=t.sub(this),this.negative=1,e):this.length>t.length?this.clone().iadd(t):t.clone().iadd(this)},i.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r,n,i=this.cmp(t);if(0===i)return this.negative=0,this.length=1,this.words[0]=0,this;i>0?(r=this,n=t):(r=t,n=this);for(var s=0,o=0;o<n.length;o++)s=(e=(0|r.words[o])-(0|n.words[o])+s)>>26,this.words[o]=67108863&e;for(;0!==s&&o<r.length;o++)s=(e=(0|r.words[o])+s)>>26,this.words[o]=67108863&e;if(0===s&&o<r.length&&r!==this)for(;o<r.length;o++)this.words[o]=r.words[o];return this.length=Math.max(this.length,o),r!==this&&(this.negative=1),this._strip()},i.prototype.sub=function(t){return this.clone().isub(t)};var m=function(t,e,r){var n,i,s,o=t.words,a=e.words,l=r.words,c=0,h=0|o[0],u=8191&h,d=h>>>13,f=0|o[1],p=8191&f,m=f>>>13,g=0|o[2],y=8191&g,v=g>>>13,w=0|o[3],b=8191&w,E=w>>>13,A=0|o[4],k=8191&A,S=A>>>13,C=0|o[5],x=8191&C,_=C>>>13,I=0|o[6],T=8191&I,P=I>>>13,N=0|o[7],B=8191&N,M=N>>>13,R=0|o[8],F=8191&R,O=R>>>13,D=0|o[9],L=8191&D,U=D>>>13,q=0|a[0],z=8191&q,j=q>>>13,G=0|a[1],H=8191&G,W=G>>>13,K=0|a[2],$=8191&K,V=K>>>13,J=0|a[3],Q=8191&J,Y=J>>>13,X=0|a[4],Z=8191&X,tt=X>>>13,et=0|a[5],rt=8191&et,nt=et>>>13,it=0|a[6],st=8191&it,ot=it>>>13,at=0|a[7],lt=8191&at,ct=at>>>13,ht=0|a[8],ut=8191&ht,dt=ht>>>13,ft=0|a[9],pt=8191&ft,mt=ft>>>13;r.negative=t.negative^e.negative,r.length=19;var gt=(c+(n=Math.imul(u,z))|0)+((8191&(i=(i=Math.imul(u,j))+Math.imul(d,z)|0))<<13)|0;c=((s=Math.imul(d,j))+(i>>>13)|0)+(gt>>>26)|0,gt&=67108863,n=Math.imul(p,z),i=(i=Math.imul(p,j))+Math.imul(m,z)|0,s=Math.imul(m,j);var yt=(c+(n=n+Math.imul(u,H)|0)|0)+((8191&(i=(i=i+Math.imul(u,W)|0)+Math.imul(d,H)|0))<<13)|0;c=((s=s+Math.imul(d,W)|0)+(i>>>13)|0)+(yt>>>26)|0,yt&=67108863,n=Math.imul(y,z),i=(i=Math.imul(y,j))+Math.imul(v,z)|0,s=Math.imul(v,j),n=n+Math.imul(p,H)|0,i=(i=i+Math.imul(p,W)|0)+Math.imul(m,H)|0,s=s+Math.imul(m,W)|0;var vt=(c+(n=n+Math.imul(u,$)|0)|0)+((8191&(i=(i=i+Math.imul(u,V)|0)+Math.imul(d,$)|0))<<13)|0;c=((s=s+Math.imul(d,V)|0)+(i>>>13)|0)+(vt>>>26)|0,vt&=67108863,n=Math.imul(b,z),i=(i=Math.imul(b,j))+Math.imul(E,z)|0,s=Math.imul(E,j),n=n+Math.imul(y,H)|0,i=(i=i+Math.imul(y,W)|0)+Math.imul(v,H)|0,s=s+Math.imul(v,W)|0,n=n+Math.imul(p,$)|0,i=(i=i+Math.imul(p,V)|0)+Math.imul(m,$)|0,s=s+Math.imul(m,V)|0;var wt=(c+(n=n+Math.imul(u,Q)|0)|0)+((8191&(i=(i=i+Math.imul(u,Y)|0)+Math.imul(d,Q)|0))<<13)|0;c=((s=s+Math.imul(d,Y)|0)+(i>>>13)|0)+(wt>>>26)|0,wt&=67108863,n=Math.imul(k,z),i=(i=Math.imul(k,j))+Math.imul(S,z)|0,s=Math.imul(S,j),n=n+Math.imul(b,H)|0,i=(i=i+Math.imul(b,W)|0)+Math.imul(E,H)|0,s=s+Math.imul(E,W)|0,n=n+Math.imul(y,$)|0,i=(i=i+Math.imul(y,V)|0)+Math.imul(v,$)|0,s=s+Math.imul(v,V)|0,n=n+Math.imul(p,Q)|0,i=(i=i+Math.imul(p,Y)|0)+Math.imul(m,Q)|0,s=s+Math.imul(m,Y)|0;var bt=(c+(n=n+Math.imul(u,Z)|0)|0)+((8191&(i=(i=i+Math.imul(u,tt)|0)+Math.imul(d,Z)|0))<<13)|0;c=((s=s+Math.imul(d,tt)|0)+(i>>>13)|0)+(bt>>>26)|0,bt&=67108863,n=Math.imul(x,z),i=(i=Math.imul(x,j))+Math.imul(_,z)|0,s=Math.imul(_,j),n=n+Math.imul(k,H)|0,i=(i=i+Math.imul(k,W)|0)+Math.imul(S,H)|0,s=s+Math.imul(S,W)|0,n=n+Math.imul(b,$)|0,i=(i=i+Math.imul(b,V)|0)+Math.imul(E,$)|0,s=s+Math.imul(E,V)|0,n=n+Math.imul(y,Q)|0,i=(i=i+Math.imul(y,Y)|0)+Math.imul(v,Q)|0,s=s+Math.imul(v,Y)|0,n=n+Math.imul(p,Z)|0,i=(i=i+Math.imul(p,tt)|0)+Math.imul(m,Z)|0,s=s+Math.imul(m,tt)|0;var Et=(c+(n=n+Math.imul(u,rt)|0)|0)+((8191&(i=(i=i+Math.imul(u,nt)|0)+Math.imul(d,rt)|0))<<13)|0;c=((s=s+Math.imul(d,nt)|0)+(i>>>13)|0)+(Et>>>26)|0,Et&=67108863,n=Math.imul(T,z),i=(i=Math.imul(T,j))+Math.imul(P,z)|0,s=Math.imul(P,j),n=n+Math.imul(x,H)|0,i=(i=i+Math.imul(x,W)|0)+Math.imul(_,H)|0,s=s+Math.imul(_,W)|0,n=n+Math.imul(k,$)|0,i=(i=i+Math.imul(k,V)|0)+Math.imul(S,$)|0,s=s+Math.imul(S,V)|0,n=n+Math.imul(b,Q)|0,i=(i=i+Math.imul(b,Y)|0)+Math.imul(E,Q)|0,s=s+Math.imul(E,Y)|0,n=n+Math.imul(y,Z)|0,i=(i=i+Math.imul(y,tt)|0)+Math.imul(v,Z)|0,s=s+Math.imul(v,tt)|0,n=n+Math.imul(p,rt)|0,i=(i=i+Math.imul(p,nt)|0)+Math.imul(m,rt)|0,s=s+Math.imul(m,nt)|0;var At=(c+(n=n+Math.imul(u,st)|0)|0)+((8191&(i=(i=i+Math.imul(u,ot)|0)+Math.imul(d,st)|0))<<13)|0;c=((s=s+Math.imul(d,ot)|0)+(i>>>13)|0)+(At>>>26)|0,At&=67108863,n=Math.imul(B,z),i=(i=Math.imul(B,j))+Math.imul(M,z)|0,s=Math.imul(M,j),n=n+Math.imul(T,H)|0,i=(i=i+Math.imul(T,W)|0)+Math.imul(P,H)|0,s=s+Math.imul(P,W)|0,n=n+Math.imul(x,$)|0,i=(i=i+Math.imul(x,V)|0)+Math.imul(_,$)|0,s=s+Math.imul(_,V)|0,n=n+Math.imul(k,Q)|0,i=(i=i+Math.imul(k,Y)|0)+Math.imul(S,Q)|0,s=s+Math.imul(S,Y)|0,n=n+Math.imul(b,Z)|0,i=(i=i+Math.imul(b,tt)|0)+Math.imul(E,Z)|0,s=s+Math.imul(E,tt)|0,n=n+Math.imul(y,rt)|0,i=(i=i+Math.imul(y,nt)|0)+Math.imul(v,rt)|0,s=s+Math.imul(v,nt)|0,n=n+Math.imul(p,st)|0,i=(i=i+Math.imul(p,ot)|0)+Math.imul(m,st)|0,s=s+Math.imul(m,ot)|0;var kt=(c+(n=n+Math.imul(u,lt)|0)|0)+((8191&(i=(i=i+Math.imul(u,ct)|0)+Math.imul(d,lt)|0))<<13)|0;c=((s=s+Math.imul(d,ct)|0)+(i>>>13)|0)+(kt>>>26)|0,kt&=67108863,n=Math.imul(F,z),i=(i=Math.imul(F,j))+Math.imul(O,z)|0,s=Math.imul(O,j),n=n+Math.imul(B,H)|0,i=(i=i+Math.imul(B,W)|0)+Math.imul(M,H)|0,s=s+Math.imul(M,W)|0,n=n+Math.imul(T,$)|0,i=(i=i+Math.imul(T,V)|0)+Math.imul(P,$)|0,s=s+Math.imul(P,V)|0,n=n+Math.imul(x,Q)|0,i=(i=i+Math.imul(x,Y)|0)+Math.imul(_,Q)|0,s=s+Math.imul(_,Y)|0,n=n+Math.imul(k,Z)|0,i=(i=i+Math.imul(k,tt)|0)+Math.imul(S,Z)|0,s=s+Math.imul(S,tt)|0,n=n+Math.imul(b,rt)|0,i=(i=i+Math.imul(b,nt)|0)+Math.imul(E,rt)|0,s=s+Math.imul(E,nt)|0,n=n+Math.imul(y,st)|0,i=(i=i+Math.imul(y,ot)|0)+Math.imul(v,st)|0,s=s+Math.imul(v,ot)|0,n=n+Math.imul(p,lt)|0,i=(i=i+Math.imul(p,ct)|0)+Math.imul(m,lt)|0,s=s+Math.imul(m,ct)|0;var St=(c+(n=n+Math.imul(u,ut)|0)|0)+((8191&(i=(i=i+Math.imul(u,dt)|0)+Math.imul(d,ut)|0))<<13)|0;c=((s=s+Math.imul(d,dt)|0)+(i>>>13)|0)+(St>>>26)|0,St&=67108863,n=Math.imul(L,z),i=(i=Math.imul(L,j))+Math.imul(U,z)|0,s=Math.imul(U,j),n=n+Math.imul(F,H)|0,i=(i=i+Math.imul(F,W)|0)+Math.imul(O,H)|0,s=s+Math.imul(O,W)|0,n=n+Math.imul(B,$)|0,i=(i=i+Math.imul(B,V)|0)+Math.imul(M,$)|0,s=s+Math.imul(M,V)|0,n=n+Math.imul(T,Q)|0,i=(i=i+Math.imul(T,Y)|0)+Math.imul(P,Q)|0,s=s+Math.imul(P,Y)|0,n=n+Math.imul(x,Z)|0,i=(i=i+Math.imul(x,tt)|0)+Math.imul(_,Z)|0,s=s+Math.imul(_,tt)|0,n=n+Math.imul(k,rt)|0,i=(i=i+Math.imul(k,nt)|0)+Math.imul(S,rt)|0,s=s+Math.imul(S,nt)|0,n=n+Math.imul(b,st)|0,i=(i=i+Math.imul(b,ot)|0)+Math.imul(E,st)|0,s=s+Math.imul(E,ot)|0,n=n+Math.imul(y,lt)|0,i=(i=i+Math.imul(y,ct)|0)+Math.imul(v,lt)|0,s=s+Math.imul(v,ct)|0,n=n+Math.imul(p,ut)|0,i=(i=i+Math.imul(p,dt)|0)+Math.imul(m,ut)|0,s=s+Math.imul(m,dt)|0;var Ct=(c+(n=n+Math.imul(u,pt)|0)|0)+((8191&(i=(i=i+Math.imul(u,mt)|0)+Math.imul(d,pt)|0))<<13)|0;c=((s=s+Math.imul(d,mt)|0)+(i>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,n=Math.imul(L,H),i=(i=Math.imul(L,W))+Math.imul(U,H)|0,s=Math.imul(U,W),n=n+Math.imul(F,$)|0,i=(i=i+Math.imul(F,V)|0)+Math.imul(O,$)|0,s=s+Math.imul(O,V)|0,n=n+Math.imul(B,Q)|0,i=(i=i+Math.imul(B,Y)|0)+Math.imul(M,Q)|0,s=s+Math.imul(M,Y)|0,n=n+Math.imul(T,Z)|0,i=(i=i+Math.imul(T,tt)|0)+Math.imul(P,Z)|0,s=s+Math.imul(P,tt)|0,n=n+Math.imul(x,rt)|0,i=(i=i+Math.imul(x,nt)|0)+Math.imul(_,rt)|0,s=s+Math.imul(_,nt)|0,n=n+Math.imul(k,st)|0,i=(i=i+Math.imul(k,ot)|0)+Math.imul(S,st)|0,s=s+Math.imul(S,ot)|0,n=n+Math.imul(b,lt)|0,i=(i=i+Math.imul(b,ct)|0)+Math.imul(E,lt)|0,s=s+Math.imul(E,ct)|0,n=n+Math.imul(y,ut)|0,i=(i=i+Math.imul(y,dt)|0)+Math.imul(v,ut)|0,s=s+Math.imul(v,dt)|0;var xt=(c+(n=n+Math.imul(p,pt)|0)|0)+((8191&(i=(i=i+Math.imul(p,mt)|0)+Math.imul(m,pt)|0))<<13)|0;c=((s=s+Math.imul(m,mt)|0)+(i>>>13)|0)+(xt>>>26)|0,xt&=67108863,n=Math.imul(L,$),i=(i=Math.imul(L,V))+Math.imul(U,$)|0,s=Math.imul(U,V),n=n+Math.imul(F,Q)|0,i=(i=i+Math.imul(F,Y)|0)+Math.imul(O,Q)|0,s=s+Math.imul(O,Y)|0,n=n+Math.imul(B,Z)|0,i=(i=i+Math.imul(B,tt)|0)+Math.imul(M,Z)|0,s=s+Math.imul(M,tt)|0,n=n+Math.imul(T,rt)|0,i=(i=i+Math.imul(T,nt)|0)+Math.imul(P,rt)|0,s=s+Math.imul(P,nt)|0,n=n+Math.imul(x,st)|0,i=(i=i+Math.imul(x,ot)|0)+Math.imul(_,st)|0,s=s+Math.imul(_,ot)|0,n=n+Math.imul(k,lt)|0,i=(i=i+Math.imul(k,ct)|0)+Math.imul(S,lt)|0,s=s+Math.imul(S,ct)|0,n=n+Math.imul(b,ut)|0,i=(i=i+Math.imul(b,dt)|0)+Math.imul(E,ut)|0,s=s+Math.imul(E,dt)|0;var _t=(c+(n=n+Math.imul(y,pt)|0)|0)+((8191&(i=(i=i+Math.imul(y,mt)|0)+Math.imul(v,pt)|0))<<13)|0;c=((s=s+Math.imul(v,mt)|0)+(i>>>13)|0)+(_t>>>26)|0,_t&=67108863,n=Math.imul(L,Q),i=(i=Math.imul(L,Y))+Math.imul(U,Q)|0,s=Math.imul(U,Y),n=n+Math.imul(F,Z)|0,i=(i=i+Math.imul(F,tt)|0)+Math.imul(O,Z)|0,s=s+Math.imul(O,tt)|0,n=n+Math.imul(B,rt)|0,i=(i=i+Math.imul(B,nt)|0)+Math.imul(M,rt)|0,s=s+Math.imul(M,nt)|0,n=n+Math.imul(T,st)|0,i=(i=i+Math.imul(T,ot)|0)+Math.imul(P,st)|0,s=s+Math.imul(P,ot)|0,n=n+Math.imul(x,lt)|0,i=(i=i+Math.imul(x,ct)|0)+Math.imul(_,lt)|0,s=s+Math.imul(_,ct)|0,n=n+Math.imul(k,ut)|0,i=(i=i+Math.imul(k,dt)|0)+Math.imul(S,ut)|0,s=s+Math.imul(S,dt)|0;var It=(c+(n=n+Math.imul(b,pt)|0)|0)+((8191&(i=(i=i+Math.imul(b,mt)|0)+Math.imul(E,pt)|0))<<13)|0;c=((s=s+Math.imul(E,mt)|0)+(i>>>13)|0)+(It>>>26)|0,It&=67108863,n=Math.imul(L,Z),i=(i=Math.imul(L,tt))+Math.imul(U,Z)|0,s=Math.imul(U,tt),n=n+Math.imul(F,rt)|0,i=(i=i+Math.imul(F,nt)|0)+Math.imul(O,rt)|0,s=s+Math.imul(O,nt)|0,n=n+Math.imul(B,st)|0,i=(i=i+Math.imul(B,ot)|0)+Math.imul(M,st)|0,s=s+Math.imul(M,ot)|0,n=n+Math.imul(T,lt)|0,i=(i=i+Math.imul(T,ct)|0)+Math.imul(P,lt)|0,s=s+Math.imul(P,ct)|0,n=n+Math.imul(x,ut)|0,i=(i=i+Math.imul(x,dt)|0)+Math.imul(_,ut)|0,s=s+Math.imul(_,dt)|0;var Tt=(c+(n=n+Math.imul(k,pt)|0)|0)+((8191&(i=(i=i+Math.imul(k,mt)|0)+Math.imul(S,pt)|0))<<13)|0;c=((s=s+Math.imul(S,mt)|0)+(i>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,n=Math.imul(L,rt),i=(i=Math.imul(L,nt))+Math.imul(U,rt)|0,s=Math.imul(U,nt),n=n+Math.imul(F,st)|0,i=(i=i+Math.imul(F,ot)|0)+Math.imul(O,st)|0,s=s+Math.imul(O,ot)|0,n=n+Math.imul(B,lt)|0,i=(i=i+Math.imul(B,ct)|0)+Math.imul(M,lt)|0,s=s+Math.imul(M,ct)|0,n=n+Math.imul(T,ut)|0,i=(i=i+Math.imul(T,dt)|0)+Math.imul(P,ut)|0,s=s+Math.imul(P,dt)|0;var Pt=(c+(n=n+Math.imul(x,pt)|0)|0)+((8191&(i=(i=i+Math.imul(x,mt)|0)+Math.imul(_,pt)|0))<<13)|0;c=((s=s+Math.imul(_,mt)|0)+(i>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,n=Math.imul(L,st),i=(i=Math.imul(L,ot))+Math.imul(U,st)|0,s=Math.imul(U,ot),n=n+Math.imul(F,lt)|0,i=(i=i+Math.imul(F,ct)|0)+Math.imul(O,lt)|0,s=s+Math.imul(O,ct)|0,n=n+Math.imul(B,ut)|0,i=(i=i+Math.imul(B,dt)|0)+Math.imul(M,ut)|0,s=s+Math.imul(M,dt)|0;var Nt=(c+(n=n+Math.imul(T,pt)|0)|0)+((8191&(i=(i=i+Math.imul(T,mt)|0)+Math.imul(P,pt)|0))<<13)|0;c=((s=s+Math.imul(P,mt)|0)+(i>>>13)|0)+(Nt>>>26)|0,Nt&=67108863,n=Math.imul(L,lt),i=(i=Math.imul(L,ct))+Math.imul(U,lt)|0,s=Math.imul(U,ct),n=n+Math.imul(F,ut)|0,i=(i=i+Math.imul(F,dt)|0)+Math.imul(O,ut)|0,s=s+Math.imul(O,dt)|0;var Bt=(c+(n=n+Math.imul(B,pt)|0)|0)+((8191&(i=(i=i+Math.imul(B,mt)|0)+Math.imul(M,pt)|0))<<13)|0;c=((s=s+Math.imul(M,mt)|0)+(i>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,n=Math.imul(L,ut),i=(i=Math.imul(L,dt))+Math.imul(U,ut)|0,s=Math.imul(U,dt);var Mt=(c+(n=n+Math.imul(F,pt)|0)|0)+((8191&(i=(i=i+Math.imul(F,mt)|0)+Math.imul(O,pt)|0))<<13)|0;c=((s=s+Math.imul(O,mt)|0)+(i>>>13)|0)+(Mt>>>26)|0,Mt&=67108863;var Rt=(c+(n=Math.imul(L,pt))|0)+((8191&(i=(i=Math.imul(L,mt))+Math.imul(U,pt)|0))<<13)|0;return c=((s=Math.imul(U,mt))+(i>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,l[0]=gt,l[1]=yt,l[2]=vt,l[3]=wt,l[4]=bt,l[5]=Et,l[6]=At,l[7]=kt,l[8]=St,l[9]=Ct,l[10]=xt,l[11]=_t,l[12]=It,l[13]=Tt,l[14]=Pt,l[15]=Nt,l[16]=Bt,l[17]=Mt,l[18]=Rt,0!==c&&(l[19]=c,r.length++),r};function g(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var n=0,i=0,s=0;s<r.length-1;s++){var o=i;i=0;for(var a=67108863&n,l=Math.min(s,e.length-1),c=Math.max(0,s-t.length+1);c<=l;c++){var h=s-c,u=(0|t.words[h])*(0|e.words[c]),d=67108863&u;a=67108863&(d=d+a|0),i+=(o=(o=o+(u/67108864|0)|0)+(d>>>26)|0)>>>26,o&=67108863}r.words[s]=a,n=o,o=i}return 0!==n?r.words[s]=n:r.length--,r._strip()}function y(t,e,r){return g(t,e,r)}Math.imul||(m=p),i.prototype.mulTo=function(t,e){var r=this.length+t.length;return 10===this.length&&10===t.length?m(this,t,e):r<63?p(this,t,e):r<1024?g(this,t,e):y(this,t,e)},i.prototype.mul=function(t){var e=new i(null);return e.words=new Array(this.length+t.length),this.mulTo(t,e)},i.prototype.mulf=function(t){var e=new i(null);return e.words=new Array(this.length+t.length),y(this,t,e)},i.prototype.imul=function(t){return this.clone().mulTo(t,this)},i.prototype.imuln=function(t){var e=t<0;e&&(t=-t),r("number"==typeof t),r(t<67108864);for(var n=0,i=0;i<this.length;i++){var s=(0|this.words[i])*t,o=(67108863&s)+(67108863&n);n>>=26,n+=s/67108864|0,n+=o>>>26,this.words[i]=67108863&o}return 0!==n&&(this.words[i]=n,this.length++),this.length=0===t?1:this.length,e?this.ineg():this},i.prototype.muln=function(t){return this.clone().imuln(t)},i.prototype.sqr=function(){return this.mul(this)},i.prototype.isqr=function(){return this.imul(this.clone())},i.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),r=0;r<e.length;r++){var n=r/26|0,i=r%26;e[r]=t.words[n]>>>i&1}return e}(t);if(0===e.length)return new i(1);for(var r=this,n=0;n<e.length&&0===e[n];n++,r=r.sqr());if(++n<e.length)for(var s=r.sqr();n<e.length;n++,s=s.sqr())0!==e[n]&&(r=r.mul(s));return r},i.prototype.iushln=function(t){r("number"==typeof t&&t>=0);var e,n=t%26,i=(t-n)/26,s=67108863>>>26-n<<26-n;if(0!==n){var o=0;for(e=0;e<this.length;e++){var a=this.words[e]&s,l=(0|this.words[e])-a<<n;this.words[e]=l|o,o=a>>>26-n}o&&(this.words[e]=o,this.length++)}if(0!==i){for(e=this.length-1;e>=0;e--)this.words[e+i]=this.words[e];for(e=0;e<i;e++)this.words[e]=0;this.length+=i}return this._strip()},i.prototype.ishln=function(t){return r(0===this.negative),this.iushln(t)},i.prototype.iushrn=function(t,e,n){var i;r("number"==typeof t&&t>=0),i=e?(e-e%26)/26:0;var s=t%26,o=Math.min((t-s)/26,this.length),a=67108863^67108863>>>s<<s,l=n;if(i-=o,i=Math.max(0,i),l){for(var c=0;c<o;c++)l.words[c]=this.words[c];l.length=o}if(0===o);else if(this.length>o)for(this.length-=o,c=0;c<this.length;c++)this.words[c]=this.words[c+o];else this.words[0]=0,this.length=1;var h=0;for(c=this.length-1;c>=0&&(0!==h||c>=i);c--){var u=0|this.words[c];this.words[c]=h<<26-s|u>>>s,h=u&a}return l&&0!==h&&(l.words[l.length++]=h),0===this.length&&(this.words[0]=0,this.length=1),this._strip()},i.prototype.ishrn=function(t,e,n){return r(0===this.negative),this.iushrn(t,e,n)},i.prototype.shln=function(t){return this.clone().ishln(t)},i.prototype.ushln=function(t){return this.clone().iushln(t)},i.prototype.shrn=function(t){return this.clone().ishrn(t)},i.prototype.ushrn=function(t){return this.clone().iushrn(t)},i.prototype.testn=function(t){r("number"==typeof t&&t>=0);var e=t%26,n=(t-e)/26,i=1<<e;return!(this.length<=n||!(this.words[n]&i))},i.prototype.imaskn=function(t){r("number"==typeof t&&t>=0);var e=t%26,n=(t-e)/26;if(r(0===this.negative,"imaskn works only with positive numbers"),this.length<=n)return this;if(0!==e&&n++,this.length=Math.min(n,this.length),0!==e){var i=67108863^67108863>>>e<<e;this.words[this.length-1]&=i}return this._strip()},i.prototype.maskn=function(t){return this.clone().imaskn(t)},i.prototype.iaddn=function(t){return r("number"==typeof t),r(t<67108864),t<0?this.isubn(-t):0!==this.negative?1===this.length&&(0|this.words[0])<=t?(this.words[0]=t-(0|this.words[0]),this.negative=0,this):(this.negative=0,this.isubn(t),this.negative=1,this):this._iaddn(t)},i.prototype._iaddn=function(t){this.words[0]+=t;for(var e=0;e<this.length&&this.words[e]>=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},i.prototype.isubn=function(t){if(r("number"==typeof t),r(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e<this.length&&this.words[e]<0;e++)this.words[e]+=67108864,this.words[e+1]-=1;return this._strip()},i.prototype.addn=function(t){return this.clone().iaddn(t)},i.prototype.subn=function(t){return this.clone().isubn(t)},i.prototype.iabs=function(){return this.negative=0,this},i.prototype.abs=function(){return this.clone().iabs()},i.prototype._ishlnsubmul=function(t,e,n){var i,s,o=t.length+n;this._expand(o);var a=0;for(i=0;i<t.length;i++){s=(0|this.words[i+n])+a;var l=(0|t.words[i])*e;a=((s-=67108863&l)>>26)-(l/67108864|0),this.words[i+n]=67108863&s}for(;i<this.length-n;i++)a=(s=(0|this.words[i+n])+a)>>26,this.words[i+n]=67108863&s;if(0===a)return this._strip();for(r(-1===a),a=0,i=0;i<this.length;i++)a=(s=-(0|this.words[i])+a)>>26,this.words[i]=67108863&s;return this.negative=1,this._strip()},i.prototype._wordDiv=function(t,e){var r=(this.length,t.length),n=this.clone(),s=t,o=0|s.words[s.length-1];0!=(r=26-this._countBits(o))&&(s=s.ushln(r),n.iushln(r),o=0|s.words[s.length-1]);var a,l=n.length-s.length;if("mod"!==e){(a=new i(null)).length=l+1,a.words=new Array(a.length);for(var c=0;c<a.length;c++)a.words[c]=0}var h=n.clone()._ishlnsubmul(s,1,l);0===h.negative&&(n=h,a&&(a.words[l]=1));for(var u=l-1;u>=0;u--){var d=67108864*(0|n.words[s.length+u])+(0|n.words[s.length+u-1]);for(d=Math.min(d/o|0,67108863),n._ishlnsubmul(s,d,u);0!==n.negative;)d--,n.negative=0,n._ishlnsubmul(s,1,u),n.isZero()||(n.negative^=1);a&&(a.words[u]=d)}return a&&a._strip(),n._strip(),"div"!==e&&0!==r&&n.iushrn(r),{div:a||null,mod:n}},i.prototype.divmod=function(t,e,n){return r(!t.isZero()),this.isZero()?{div:new i(0),mod:new i(0)}:0!==this.negative&&0===t.negative?(a=this.neg().divmod(t,e),"mod"!==e&&(s=a.div.neg()),"div"!==e&&(o=a.mod.neg(),n&&0!==o.negative&&o.iadd(t)),{div:s,mod:o}):0===this.negative&&0!==t.negative?(a=this.divmod(t.neg(),e),"mod"!==e&&(s=a.div.neg()),{div:s,mod:a.mod}):0!==(this.negative&t.negative)?(a=this.neg().divmod(t.neg(),e),"div"!==e&&(o=a.mod.neg(),n&&0!==o.negative&&o.isub(t)),{div:a.div,mod:o}):t.length>this.length||this.cmp(t)<0?{div:new i(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new i(this.modrn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new i(this.modrn(t.words[0]))}:this._wordDiv(t,e);var s,o,a},i.prototype.div=function(t){return this.divmod(t,"div",!1).div},i.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},i.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},i.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,n=t.ushrn(1),i=t.andln(1),s=r.cmp(n);return s<0||1===i&&0===s?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},i.prototype.modrn=function(t){var e=t<0;e&&(t=-t),r(t<=67108863);for(var n=(1<<26)%t,i=0,s=this.length-1;s>=0;s--)i=(n*i+(0|this.words[s]))%t;return e?-i:i},i.prototype.modn=function(t){return this.modrn(t)},i.prototype.idivn=function(t){var e=t<0;e&&(t=-t),r(t<=67108863);for(var n=0,i=this.length-1;i>=0;i--){var s=(0|this.words[i])+67108864*n;this.words[i]=s/t|0,n=s%t}return this._strip(),e?this.ineg():this},i.prototype.divn=function(t){return this.clone().idivn(t)},i.prototype.egcd=function(t){r(0===t.negative),r(!t.isZero());var e=this,n=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var s=new i(1),o=new i(0),a=new i(0),l=new i(1),c=0;e.isEven()&&n.isEven();)e.iushrn(1),n.iushrn(1),++c;for(var h=n.clone(),u=e.clone();!e.isZero();){for(var d=0,f=1;0===(e.words[0]&f)&&d<26;++d,f<<=1);if(d>0)for(e.iushrn(d);d-- >0;)(s.isOdd()||o.isOdd())&&(s.iadd(h),o.isub(u)),s.iushrn(1),o.iushrn(1);for(var p=0,m=1;0===(n.words[0]&m)&&p<26;++p,m<<=1);if(p>0)for(n.iushrn(p);p-- >0;)(a.isOdd()||l.isOdd())&&(a.iadd(h),l.isub(u)),a.iushrn(1),l.iushrn(1);e.cmp(n)>=0?(e.isub(n),s.isub(a),o.isub(l)):(n.isub(e),a.isub(s),l.isub(o))}return{a:a,b:l,gcd:n.iushln(c)}},i.prototype._invmp=function(t){r(0===t.negative),r(!t.isZero());var e=this,n=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var s,o=new i(1),a=new i(0),l=n.clone();e.cmpn(1)>0&&n.cmpn(1)>0;){for(var c=0,h=1;0===(e.words[0]&h)&&c<26;++c,h<<=1);if(c>0)for(e.iushrn(c);c-- >0;)o.isOdd()&&o.iadd(l),o.iushrn(1);for(var u=0,d=1;0===(n.words[0]&d)&&u<26;++u,d<<=1);if(u>0)for(n.iushrn(u);u-- >0;)a.isOdd()&&a.iadd(l),a.iushrn(1);e.cmp(n)>=0?(e.isub(n),o.isub(a)):(n.isub(e),a.isub(o))}return(s=0===e.cmpn(1)?o:a).cmpn(0)<0&&s.iadd(t),s},i.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var n=0;e.isEven()&&r.isEven();n++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var i=e.cmp(r);if(i<0){var s=e;e=r,r=s}else if(0===i||0===r.cmpn(1))break;e.isub(r)}return r.iushln(n)},i.prototype.invm=function(t){return this.egcd(t).a.umod(t)},i.prototype.isEven=function(){return!(1&this.words[0])},i.prototype.isOdd=function(){return!(1&~this.words[0])},i.prototype.andln=function(t){return this.words[0]&t},i.prototype.bincn=function(t){r("number"==typeof t);var e=t%26,n=(t-e)/26,i=1<<e;if(this.length<=n)return this._expand(n+1),this.words[n]|=i,this;for(var s=i,o=n;0!==s&&o<this.length;o++){var a=0|this.words[o];s=(a+=s)>>>26,a&=67108863,this.words[o]=a}return 0!==s&&(this.words[o]=s,this.length++),this},i.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},i.prototype.cmpn=function(t){var e,n=t<0;if(0!==this.negative&&!n)return-1;if(0===this.negative&&n)return 1;if(this._strip(),this.length>1)e=1;else{n&&(t=-t),r(t<=67108863,"Number is too big");var i=0|this.words[0];e=i===t?0:i<t?-1:1}return 0!==this.negative?0|-e:e},i.prototype.cmp=function(t){if(0!==this.negative&&0===t.negative)return-1;if(0===this.negative&&0!==t.negative)return 1;var e=this.ucmp(t);return 0!==this.negative?0|-e:e},i.prototype.ucmp=function(t){if(this.length>t.length)return 1;if(this.length<t.length)return-1;for(var e=0,r=this.length-1;r>=0;r--){var n=0|this.words[r],i=0|t.words[r];if(n!==i){n<i?e=-1:n>i&&(e=1);break}}return e},i.prototype.gtn=function(t){return 1===this.cmpn(t)},i.prototype.gt=function(t){return 1===this.cmp(t)},i.prototype.gten=function(t){return this.cmpn(t)>=0},i.prototype.gte=function(t){return this.cmp(t)>=0},i.prototype.ltn=function(t){return-1===this.cmpn(t)},i.prototype.lt=function(t){return-1===this.cmp(t)},i.prototype.lten=function(t){return this.cmpn(t)<=0},i.prototype.lte=function(t){return this.cmp(t)<=0},i.prototype.eqn=function(t){return 0===this.cmpn(t)},i.prototype.eq=function(t){return 0===this.cmp(t)},i.red=function(t){return new S(t)},i.prototype.toRed=function(t){return r(!this.red,"Already a number in reduction context"),r(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},i.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},i.prototype._forceRed=function(t){return this.red=t,this},i.prototype.forceRed=function(t){return r(!this.red,"Already a number in reduction context"),this._forceRed(t)},i.prototype.redAdd=function(t){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},i.prototype.redIAdd=function(t){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},i.prototype.redSub=function(t){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},i.prototype.redISub=function(t){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},i.prototype.redShl=function(t){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},i.prototype.redMul=function(t){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},i.prototype.redIMul=function(t){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},i.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},i.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},i.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},i.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},i.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},i.prototype.redPow=function(t){return r(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var v={k256:null,p224:null,p192:null,p25519:null};function w(t,e){this.name=t,this.p=new i(e,16),this.n=this.p.bitLength(),this.k=new i(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function b(){w.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function E(){w.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function A(){w.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function k(){w.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function S(t){if("string"==typeof t){var e=i._prime(t);this.m=e.p,this.prime=e}else r(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function C(t){S.call(this,t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new i(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}w.prototype._tmp=function(){var t=new i(null);return t.words=new Array(Math.ceil(this.n/13)),t},w.prototype.ireduce=function(t){var e,r=t;do{this.split(r,this.tmp),e=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(e>this.n);var n=e<this.n?-1:r.ucmp(this.p);return 0===n?(r.words[0]=0,r.length=1):n>0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},w.prototype.split=function(t,e){t.iushrn(this.n,0,e)},w.prototype.imulK=function(t){return t.imul(this.k)},n(b,w),b.prototype.split=function(t,e){for(var r=4194303,n=Math.min(t.length,9),i=0;i<n;i++)e.words[i]=t.words[i];if(e.length=n,t.length<=9)return t.words[0]=0,void(t.length=1);var s=t.words[9];for(e.words[e.length++]=s&r,i=10;i<t.length;i++){var o=0|t.words[i];t.words[i-10]=(o&r)<<4|s>>>22,s=o}s>>>=22,t.words[i-10]=s,0===s&&t.length>10?t.length-=10:t.length-=9},b.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r<t.length;r++){var n=0|t.words[r];e+=977*n,t.words[r]=67108863&e,e=64*n+(e/67108864|0)}return 0===t.words[t.length-1]&&(t.length--,0===t.words[t.length-1]&&t.length--),t},n(E,w),n(A,w),n(k,w),k.prototype.imulK=function(t){for(var e=0,r=0;r<t.length;r++){var n=19*(0|t.words[r])+e,i=67108863&n;n>>>=26,t.words[r]=i,e=n}return 0!==e&&(t.words[t.length++]=e),t},i._prime=function(t){if(v[t])return v[t];var e;if("k256"===t)e=new b;else if("p224"===t)e=new E;else if("p192"===t)e=new A;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new k}return v[t]=e,e},S.prototype._verify1=function(t){r(0===t.negative,"red works only with positives"),r(t.red,"red works only with red numbers")},S.prototype._verify2=function(t,e){r(0===(t.negative|e.negative),"red works only with positives"),r(t.red&&t.red===e.red,"red works only with red numbers")},S.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):(c(t,t.umod(this.m)._forceRed(this)),t)},S.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},S.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},S.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},S.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},S.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},S.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},S.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},S.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},S.prototype.isqr=function(t){return this.imul(t,t.clone())},S.prototype.sqr=function(t){return this.mul(t,t)},S.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(r(e%2==1),3===e){var n=this.m.add(new i(1)).iushrn(2);return this.pow(t,n)}for(var s=this.m.subn(1),o=0;!s.isZero()&&0===s.andln(1);)o++,s.iushrn(1);r(!s.isZero());var a=new i(1).toRed(this),l=a.redNeg(),c=this.m.subn(1).iushrn(1),h=this.m.bitLength();for(h=new i(2*h*h).toRed(this);0!==this.pow(h,c).cmp(l);)h.redIAdd(l);for(var u=this.pow(h,s),d=this.pow(t,s.addn(1).iushrn(1)),f=this.pow(t,s),p=o;0!==f.cmp(a);){for(var m=f,g=0;0!==m.cmp(a);g++)m=m.redSqr();r(g<p);var y=this.pow(u,new i(1).iushln(p-g-1));d=d.redMul(y),u=y.redSqr(),f=f.redMul(u),p=g}return d},S.prototype.invm=function(t){var e=t._invmp(this.m);return 0!==e.negative?(e.negative=0,this.imod(e).redNeg()):this.imod(e)},S.prototype.pow=function(t,e){if(e.isZero())return new i(1).toRed(this);if(0===e.cmpn(1))return t.clone();var r=new Array(16);r[0]=new i(1).toRed(this),r[1]=t;for(var n=2;n<r.length;n++)r[n]=this.mul(r[n-1],t);var s=r[0],o=0,a=0,l=e.bitLength()%26;for(0===l&&(l=26),n=e.length-1;n>=0;n--){for(var c=e.words[n],h=l-1;h>=0;h--){var u=c>>h&1;s!==r[0]&&(s=this.sqr(s)),0!==u||0!==o?(o<<=1,o|=u,(4===++a||0===n&&0===h)&&(s=this.mul(s,r[o]),a=0,o=0)):a=0}l=26}return s},S.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},S.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},i.mont=function(t){return new C(t)},n(C,S),C.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},C.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},C.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),s=i;return i.cmp(this.m)>=0?s=i.isub(this.m):i.cmpn(0)<0&&(s=i.iadd(this.m)),s._forceRed(this)},C.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new i(0)._forceRed(this);var r=t.mul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),s=r.isub(n).iushrn(this.shift),o=s;return s.cmp(this.m)>=0?o=s.isub(this.m):s.cmpn(0)<0&&(o=s.iadd(this.m)),o._forceRed(this)},C.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(t,o)}(s)),s.exports),l=n(a);let c=!1,h=!1;const u={debug:1,default:2,info:2,warning:3,error:4,off:5};let d=u.default,f=null;const p=function(){try{const t=[];if(["NFD","NFC","NFKD","NFKC"].forEach(e=>{try{if("test"!=="test".normalize(e))throw new Error("bad normalize")}catch(r){t.push(e)}}),t.length)throw new Error("missing "+t.join(", "));if(String.fromCharCode(233).normalize("NFD")!==String.fromCharCode(101,769))throw new Error("broken implementation")}catch(t){return t.message}return null}();var m,g;!function(t){t.DEBUG="DEBUG",t.INFO="INFO",t.WARNING="WARNING",t.ERROR="ERROR",t.OFF="OFF"}(m||(m={})),function(t){t.UNKNOWN_ERROR="UNKNOWN_ERROR",t.NOT_IMPLEMENTED="NOT_IMPLEMENTED",t.UNSUPPORTED_OPERATION="UNSUPPORTED_OPERATION",t.NETWORK_ERROR="NETWORK_ERROR",t.SERVER_ERROR="SERVER_ERROR",t.TIMEOUT="TIMEOUT",t.BUFFER_OVERRUN="BUFFER_OVERRUN",t.NUMERIC_FAULT="NUMERIC_FAULT",t.MISSING_NEW="MISSING_NEW",t.INVALID_ARGUMENT="INVALID_ARGUMENT",t.MISSING_ARGUMENT="MISSING_ARGUMENT",t.UNEXPECTED_ARGUMENT="UNEXPECTED_ARGUMENT",t.CALL_EXCEPTION="CALL_EXCEPTION",t.INSUFFICIENT_FUNDS="INSUFFICIENT_FUNDS",t.NONCE_EXPIRED="NONCE_EXPIRED",t.REPLACEMENT_UNDERPRICED="REPLACEMENT_UNDERPRICED",t.UNPREDICTABLE_GAS_LIMIT="UNPREDICTABLE_GAS_LIMIT",t.TRANSACTION_REPLACED="TRANSACTION_REPLACED",t.ACTION_REJECTED="ACTION_REJECTED"}(g||(g={}));const y="0123456789abcdef";class v{constructor(t){Object.defineProperty(this,"version",{enumerable:!0,value:t,writable:!1})}_log(t,e){const r=t.toLowerCase();null==u[r]&&this.throwArgumentError("invalid log level name","logLevel",t),d>u[r]||console.log.apply(console,e)}debug(...t){this._log(v.levels.DEBUG,t)}info(...t){this._log(v.levels.INFO,t)}warn(...t){this._log(v.levels.WARNING,t)}makeError(t,e,r){if(h)return this.makeError("censored error",e,{});e||(e=v.errors.UNKNOWN_ERROR),r||(r={});const n=[];Object.keys(r).forEach(t=>{const e=r[t];try{if(e instanceof Uint8Array){let r="";for(let t=0;t<e.length;t++)r+=y[e[t]>>4],r+=y[15&e[t]];n.push(t+"=Uint8Array(0x"+r+")")}else n.push(t+"="+JSON.stringify(e))}catch(e){n.push(t+"="+JSON.stringify(r[t].toString()))}}),n.push(`code=${e}`),n.push(`version=${this.version}`);const i=t;let s="";switch(e){case g.NUMERIC_FAULT:{s="NUMERIC_FAULT";const e=t;switch(e){case"overflow":case"underflow":case"division-by-zero":s+="-"+e;break;case"negative-power":case"negative-width":s+="-unsupported";break;case"unbound-bitwise-result":s+="-unbound-result"}break}case g.CALL_EXCEPTION:case g.INSUFFICIENT_FUNDS:case g.MISSING_NEW:case g.NONCE_EXPIRED:case g.REPLACEMENT_UNDERPRICED:case g.TRANSACTION_REPLACED:case g.UNPREDICTABLE_GAS_LIMIT:s=e}s&&(t+=" [ See: https://links.ethers.org/v5-errors-"+s+" ]"),n.length&&(t+=" ("+n.join(", ")+")");const o=new Error(t);return o.reason=i,o.code=e,Object.keys(r).forEach(function(t){o[t]=r[t]}),o}throwError(t,e,r){throw this.makeError(t,e,r)}throwArgumentError(t,e,r){return this.throwError(t,v.errors.INVALID_ARGUMENT,{argument:e,value:r})}assert(t,e,r,n){t||this.throwError(e,r,n)}assertArgument(t,e,r,n){t||this.throwArgumentError(e,r,n)}checkNormalize(t){p&&this.throwError("platform missing String.prototype.normalize",v.errors.UNSUPPORTED_OPERATION,{operation:"String.prototype.normalize",form:p})}checkSafeUint53(t,e){"number"==typeof t&&(null==e&&(e="value not safe"),(t<0||t>=9007199254740991)&&this.throwError(e,v.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"out-of-safe-range",value:t}),t%1&&this.throwError(e,v.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"non-integer",value:t}))}checkArgumentCount(t,e,r){r=r?": "+r:"",t<e&&this.throwError("missing argument"+r,v.errors.MISSING_ARGUMENT,{count:t,expectedCount:e}),t>e&&this.throwError("too many arguments"+r,v.errors.UNEXPECTED_ARGUMENT,{count:t,expectedCount:e})}checkNew(t,e){t!==Object&&null!=t||this.throwError("missing new",v.errors.MISSING_NEW,{name:e.name})}checkAbstract(t,e){t===e?this.throwError("cannot instantiate abstract class "+JSON.stringify(e.name)+" directly; use a sub-class",v.errors.UNSUPPORTED_OPERATION,{name:t.name,operation:"new"}):t!==Object&&null!=t||this.throwError("missing new",v.errors.MISSING_NEW,{name:e.name})}static globalLogger(){return f||(f=new v("logger/5.8.0")),f}static setCensorship(t,e){if(!t&&e&&this.globalLogger().throwError("cannot permanently disable censorship",v.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"}),c){if(!t)return;this.globalLogger().throwError("error censorship permanent",v.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"})}h=!!t,c=!!e}static setLogLevel(t){const e=u[t.toLowerCase()];null!=e?d=e:v.globalLogger().warn("invalid log level - "+t)}static from(t){return new v(t)}}v.errors=g,v.levels=m;const w=new v("bytes/5.8.0");function b(t){return!!t.toHexString}function E(t){return t.slice||(t.slice=function(){const e=Array.prototype.slice.call(arguments);return E(new Uint8Array(Array.prototype.slice.apply(t,e)))}),t}function A(t){return T(t)&&!(t.length%2)||S(t)}function k(t){return"number"==typeof t&&t==t&&t%1==0}function S(t){if(null==t)return!1;if(t.constructor===Uint8Array)return!0;if("string"==typeof t)return!1;if(!k(t.length)||t.length<0)return!1;for(let e=0;e<t.length;e++){const r=t[e];if(!k(r)||r<0||r>=256)return!1}return!0}function C(t,e){if(e||(e={}),"number"==typeof t){w.checkSafeUint53(t,"invalid arrayify value");const e=[];for(;t;)e.unshift(255&t),t=parseInt(String(t/256));return 0===e.length&&e.push(0),E(new Uint8Array(e))}if(e.allowMissingPrefix&&"string"==typeof t&&"0x"!==t.substring(0,2)&&(t="0x"+t),b(t)&&(t=t.toHexString()),T(t)){let r=t.substring(2);r.length%2&&("left"===e.hexPad?r="0"+r:"right"===e.hexPad?r+="0":w.throwArgumentError("hex data is odd-length","value",t));const n=[];for(let t=0;t<r.length;t+=2)n.push(parseInt(r.substring(t,t+2),16));return E(new Uint8Array(n))}return S(t)?E(new Uint8Array(t)):w.throwArgumentError("invalid arrayify value","value",t)}function x(t){const e=t.map(t=>C(t)),r=e.reduce((t,e)=>t+e.length,0),n=new Uint8Array(r);return e.reduce((t,e)=>(n.set(e,t),t+e.length),0),E(n)}function _(t){let e=C(t);if(0===e.length)return e;let r=0;for(;r<e.length&&0===e[r];)r++;return r&&(e=e.slice(r)),e}function I(t,e){(t=C(t)).length>e&&w.throwArgumentError("value out of range","value",arguments[0]);const r=new Uint8Array(e);return r.set(t,e-t.length),E(r)}function T(t,e){return!("string"!=typeof t||!t.match(/^0x[0-9A-Fa-f]*$/))&&(!e||t.length===2+2*e)}const P="0123456789abcdef";function N(t,e){if(e||(e={}),"number"==typeof t){w.checkSafeUint53(t,"invalid hexlify value");let e="";for(;t;)e=P[15&t]+e,t=Math.floor(t/16);return e.length?(e.length%2&&(e="0"+e),"0x"+e):"0x00"}if("bigint"==typeof t)return(t=t.toString(16)).length%2?"0x0"+t:"0x"+t;if(e.allowMissingPrefix&&"string"==typeof t&&"0x"!==t.substring(0,2)&&(t="0x"+t),b(t))return t.toHexString();if(T(t))return t.length%2&&("left"===e.hexPad?t="0x0"+t.substring(2):"right"===e.hexPad?t+="0":w.throwArgumentError("hex data is odd-length","value",t)),t.toLowerCase();if(S(t)){let e="0x";for(let r=0;r<t.length;r++){let n=t[r];e+=P[(240&n)>>4]+P[15&n]}return e}return w.throwArgumentError("invalid hexlify value","value",t)}function B(t){if("string"!=typeof t)t=N(t);else if(!T(t)||t.length%2)return null;return(t.length-2)/2}function M(t,e,r){return"string"!=typeof t?t=N(t):(!T(t)||t.length%2)&&w.throwArgumentError("invalid hexData","value",t),e=2+2*e,null!=r?"0x"+t.substring(e,2+2*r):"0x"+t.substring(e)}function R(t){let e="0x";return t.forEach(t=>{e+=N(t).substring(2)}),e}function F(t){const e=O(N(t,{hexPad:"left"}));return"0x"===e?"0x0":e}function O(t){"string"!=typeof t&&(t=N(t)),T(t)||w.throwArgumentError("invalid hex string","value",t),t=t.substring(2);let e=0;for(;e<t.length&&"0"===t[e];)e++;return"0x"+t.substring(e)}function D(t,e){for("string"!=typeof t?t=N(t):T(t)||w.throwArgumentError("invalid hex string","value",t),t.length>2*e+2&&w.throwArgumentError("value out of range","value",arguments[1]);t.length<2*e+2;)t="0x0"+t.substring(2);return t}function L(t){const e={r:"0x",s:"0x",_vs:"0x",recoveryParam:0,v:0,yParityAndS:"0x",compact:"0x"};if(A(t)){let r=C(t);64===r.length?(e.v=27+(r[32]>>7),r[32]&=127,e.r=N(r.slice(0,32)),e.s=N(r.slice(32,64))):65===r.length?(e.r=N(r.slice(0,32)),e.s=N(r.slice(32,64)),e.v=r[64]):w.throwArgumentError("invalid signature string","signature",t),e.v<27&&(0===e.v||1===e.v?e.v+=27:w.throwArgumentError("signature invalid v byte","signature",t)),e.recoveryParam=1-e.v%2,e.recoveryParam&&(r[32]|=128),e._vs=N(r.slice(32,64))}else{if(e.r=t.r,e.s=t.s,e.v=t.v,e.recoveryParam=t.recoveryParam,e._vs=t._vs,null!=e._vs){const r=I(C(e._vs),32);e._vs=N(r);const n=r[0]>=128?1:0;null==e.recoveryParam?e.recoveryParam=n:e.recoveryParam!==n&&w.throwArgumentError("signature recoveryParam mismatch _vs","signature",t),r[0]&=127;const i=N(r);null==e.s?e.s=i:e.s!==i&&w.throwArgumentError("signature v mismatch _vs","signature",t)}if(null==e.recoveryParam)null==e.v?w.throwArgumentError("signature missing v and recoveryParam","signature",t):0===e.v||1===e.v?e.recoveryParam=e.v:e.recoveryParam=1-e.v%2;else if(null==e.v)e.v=27+e.recoveryParam;else{const r=0===e.v||1===e.v?e.v:1-e.v%2;e.recoveryParam!==r&&w.throwArgumentError("signature recoveryParam mismatch v","signature",t)}null!=e.r&&T(e.r)?e.r=D(e.r,32):w.throwArgumentError("signature missing or invalid r","signature",t),null!=e.s&&T(e.s)?e.s=D(e.s,32):w.throwArgumentError("signature missing or invalid s","signature",t);const r=C(e.s);r[0]>=128&&w.throwArgumentError("signature s out of range","signature",t),e.recoveryParam&&(r[0]|=128);const n=N(r);e._vs&&(T(e._vs)||w.throwArgumentError("signature invalid _vs","signature",t),e._vs=D(e._vs,32)),null==e._vs?e._vs=n:e._vs!==n&&w.throwArgumentError("signature _vs mismatch v and s","signature",t)}return e.yParityAndS=e._vs,e.compact=e.r+e.yParityAndS.substring(2),e}function U(t){return N(x([(t=L(t)).r,t.s,t.recoveryParam?"0x1c":"0x1b"]))}const q="bignumber/5.8.0";var z=l.BN;const j=new v(q),G={},H=9007199254740991;let W=!1;class K{constructor(t,e){t!==G&&j.throwError("cannot call constructor directly; use BigNumber.from",v.errors.UNSUPPORTED_OPERATION,{operation:"new (BigNumber)"}),this._hex=e,this._isBigNumber=!0,Object.freeze(this)}fromTwos(t){return V(J(this).fromTwos(t))}toTwos(t){return V(J(this).toTwos(t))}abs(){return"-"===this._hex[0]?K.from(this._hex.substring(1)):this}add(t){return V(J(this).add(J(t)))}sub(t){return V(J(this).sub(J(t)))}div(t){return K.from(t).isZero()&&Q("division-by-zero","div"),V(J(this).div(J(t)))}mul(t){return V(J(this).mul(J(t)))}mod(t){const e=J(t);return e.isNeg()&&Q("division-by-zero","mod"),V(J(this).umod(e))}pow(t){const e=J(t);return e.isNeg()&&Q("negative-power","pow"),V(J(this).pow(e))}and(t){const e=J(t);return(this.isNegative()||e.isNeg())&&Q("unbound-bitwise-result","and"),V(J(this).and(e))}or(t){const e=J(t);return(this.isNegative()||e.isNeg())&&Q("unbound-bitwise-result","or"),V(J(this).or(e))}xor(t){const e=J(t);return(this.isNegative()||e.isNeg())&&Q("unbound-bitwise-result","xor"),V(J(this).xor(e))}mask(t){return(this.isNegative()||t<0)&&Q("negative-width","mask"),V(J(this).maskn(t))}shl(t){return(this.isNegative()||t<0)&&Q("negative-width","shl"),V(J(this).shln(t))}shr(t){return(this.isNegative()||t<0)&&Q("negative-width","shr"),V(J(this).shrn(t))}eq(t){return J(this).eq(J(t))}lt(t){return J(this).lt(J(t))}lte(t){return J(this).lte(J(t))}gt(t){return J(this).gt(J(t))}gte(t){return J(this).gte(J(t))}isNegative(){return"-"===this._hex[0]}isZero(){return J(this).isZero()}toNumber(){try{return J(this).toNumber()}catch(t){Q("overflow","toNumber",this.toString())}return null}toBigInt(){try{return BigInt(this.toString())}catch(t){}return j.throwError("this platform does not support BigInt",v.errors.UNSUPPORTED_OPERATION,{value:this.toString()})}toString(){return arguments.length>0&&(10===arguments[0]?W||(W=!0,j.warn("BigNumber.toString does not accept any parameters; base-10 is assumed")):16===arguments[0]?j.throwError("BigNumber.toString does not accept any parameters; use bigNumber.toHexString()",v.errors.UNEXPECTED_ARGUMENT,{}):j.throwError("BigNumber.toString does not accept parameters",v.errors.UNEXPECTED_ARGUMENT,{})),J(this).toString(10)}toHexString(){return this._hex}toJSON(t){return{type:"BigNumber",hex:this.toHexString()}}static from(t){if(t instanceof K)return t;if("string"==typeof t)return t.match(/^-?0x[0-9a-f]+$/i)?new K(G,$(t)):t.match(/^-?[0-9]+$/)?new K(G,$(new z(t))):j.throwArgumentError("invalid BigNumber string","value",t);if("number"==typeof t)return t%1&&Q("underflow","BigNumber.from",t),(t>=H||t<=-H)&&Q("overflow","BigNumber.from",t),K.from(String(t));const e=t;if("bigint"==typeof e)return K.from(e.toString());if(S(e))return K.from(N(e));if(e)if(e.toHexString){const t=e.toHexString();if("string"==typeof t)return K.from(t)}else{let t=e._hex;if(null==t&&"BigNumber"===e.type&&(t=e.hex),"string"==typeof t&&(T(t)||"-"===t[0]&&T(t.substring(1))))return K.from(t)}return j.throwArgumentError("invalid BigNumber value","value",t)}static isBigNumber(t){return!(!t||!t._isBigNumber)}}function $(t){if("string"!=typeof t)return $(t.toString(16));if("-"===t[0])return"-"===(t=t.substring(1))[0]&&j.throwArgumentError("invalid hex","value",t),"0x00"===(t=$(t))?t:"-"+t;if("0x"!==t.substring(0,2)&&(t="0x"+t),"0x"===t)return"0x00";for(t.length%2&&(t="0x0"+t.substring(2));t.length>4&&"0x00"===t.substring(0,4);)t="0x"+t.substring(4);return t}function V(t){return K.from($(t))}function J(t){const e=K.from(t).toHexString();return"-"===e[0]?new z("-"+e.substring(3),16):new z(e.substring(2),16)}function Q(t,e,r){const n={fault:t,operation:e};return null!=r&&(n.value=r),j.throwError(t,v.errors.NUMERIC_FAULT,n)}const Y=new v(q),X={},Z=K.from(0),tt=K.from(-1);function et(t,e,r,n){const i={fault:e,operation:r};return void 0!==n&&(i.value=n),Y.throwError(t,v.errors.NUMERIC_FAULT,i)}let rt="0";for(;rt.length<256;)rt+=rt;function nt(t){if("number"!=typeof t)try{t=K.from(t).toNumber()}catch(t){}return"number"==typeof t&&t>=0&&t<=256&&!(t%1)?"1"+rt.substring(0,t):Y.throwArgumentError("invalid decimal size","decimals",t)}function it(t,e){null==e&&(e=0);const r=nt(e),n=(t=K.from(t)).lt(Z);n&&(t=t.mul(tt));let i=t.mod(r).toString();for(;i.length<r.length-1;)i="0"+i;i=i.match(/^([0-9]*[1-9]|0)(0*)/)[1];const s=t.div(r).toString();return t=1===r.length?s:s+"."+i,n&&(t="-"+t),t}function st(t,e){null==e&&(e=0);const r=nt(e);"string"==typeof t&&t.match(/^-?[0-9.]+$/)||Y.throwArgumentError("invalid decimal value","value",t);const n="-"===t.substring(0,1);n&&(t=t.substring(1)),"."===t&&Y.throwArgumentError("missing value","value",t);const i=t.split(".");i.length>2&&Y.throwArgumentError("too many decimal points","value",t);let s=i[0],o=i[1];for(s||(s="0"),o||(o="0");"0"===o[o.length-1];)o=o.substring(0,o.length-1);for(o.length>r.length-1&&et("fractional component exceeds decimals","underflow","parseFixed"),""===o&&(o="0");o.length<r.length-1;)o+="0";const a=K.from(s),l=K.from(o);let c=a.mul(r).add(l);return n&&(c=c.mul(tt)),c}class ot{constructor(t,e,r,n){t!==X&&Y.throwError("cannot use FixedFormat constructor; use FixedFormat.from",v.errors.UNSUPPORTED_OPERATION,{operation:"new FixedFormat"}),this.signed=e,this.width=r,this.decimals=n,this.name=(e?"":"u")+"fixed"+String(r)+"x"+String(n),this._multiplier=nt(n),Object.freeze(this)}static from(t){if(t instanceof ot)return t;"number"==typeof t&&(t=`fixed128x${t}`);let e=!0,r=128,n=18;if("string"==typeof t)if("fixed"===t);else if("ufixed"===t)e=!1;else{const i=t.match(/^(u?)fixed([0-9]+)x([0-9]+)$/);i||Y.throwArgumentError("invalid fixed format","format",t),e="u"!==i[1],r=parseInt(i[2]),n=parseInt(i[3])}else if(t){const i=(e,r,n)=>null==t[e]?n:(typeof t[e]!==r&&Y.throwArgumentError("invalid fixed format ("+e+" not "+r+")","format."+e,t[e]),t[e]);e=i("signed","boolean",e),r=i("width","number",r),n=i("decimals","number",n)}return r%8&&Y.throwArgumentError("invalid fixed format width (not byte aligned)","format.width",r),n>80&&Y.throwArgumentError("invalid fixed format (decimals too large)","format.decimals",n),new ot(X,e,r,n)}}class at{constructor(t,e,r,n){t!==X&&Y.throwError("cannot use FixedNumber constructor; use FixedNumber.from",v.errors.UNSUPPORTED_OPERATION,{operation:"new FixedFormat"}),this.format=n,this._hex=e,this._value=r,this._isFixedNumber=!0,Object.freeze(this)}_checkFormat(t){this.format.name!==t.format.name&&Y.throwArgumentError("incompatible format; use fixedNumber.toFormat","other",t)}addUnsafe(t){this._checkFormat(t);const e=st(this._value,this.format.decimals),r=st(t._value,t.format.decimals);return at.fromValue(e.add(r),this.format.decimals,this.format)}subUnsafe(t){this._checkFormat(t);const e=st(this._value,this.format.decimals),r=st(t._value,t.format.decimals);return at.fromValue(e.sub(r),this.format.decimals,this.format)}mulUnsafe(t){this._checkFormat(t);const e=st(this._value,this.format.decimals),r=st(t._value,t.format.decimals);return at.fromValue(e.mul(r).div(this.format._multiplier),this.format.decimals,this.format)}divUnsafe(t){this._checkFormat(t);const e=st(this._value,this.format.decimals),r=st(t._value,t.format.decimals);return at.fromValue(e.mul(this.format._multiplier).div(r),this.format.decimals,this.format)}floor(){const t=this.toString().split(".");1===t.length&&t.push("0");let e=at.from(t[0],this.format);const r=!t[1].match(/^(0*)$/);return this.isNegative()&&r&&(e=e.subUnsafe(lt.toFormat(e.format))),e}ceiling(){const t=this.toString().split(".");1===t.length&&t.push("0");let e=at.from(t[0],this.format);const r=!t[1].match(/^(0*)$/);return!this.isNegative()&&r&&(e=e.addUnsafe(lt.toFormat(e.format))),e}round(t){null==t&&(t=0);const e=this.toString().split(".");if(1===e.length&&e.push("0"),(t<0||t>80||t%1)&&Y.throwArgumentError("invalid decimal count","decimals",t),e[1].length<=t)return this;const r=at.from("1"+rt.substring(0,t),this.format),n=ct.toFormat(this.format);return this.mulUnsafe(r).addUnsafe(n).floor().divUnsafe(r)}isZero(){return"0.0"===this._value||"0"===this._value}isNegative(){return"-"===this._value[0]}toString(){return this._value}toHexString(t){if(null==t)return this._hex;t%8&&Y.throwArgumentError("invalid byte width","width",t);return D(K.from(this._hex).fromTwos(this.format.width).toTwos(t).toHexString(),t/8)}toUnsafeFloat(){return parseFloat(this.toString())}toFormat(t){return at.fromString(this._value,t)}static fromValue(t,e,r){return null!=r||null==e||function(t){return null!=t&&(K.isBigNumber(t)||"number"==typeof t&&t%1==0||"string"==typeof t&&!!t.match(/^-?[0-9]+$/)||T(t)||"bigint"==typeof t||S(t))}(e)||(r=e,e=null),null==e&&(e=0),null==r&&(r="fixed"),at.fromString(it(t,e),ot.from(r))}static fromString(t,e){null==e&&(e="fixed");const r=ot.from(e),n=st(t,r.decimals);!r.signed&&n.lt(Z)&&et("unsigned value cannot be negative","overflow","value",t);let i=null;r.signed?i=n.toTwos(r.width).toHexString():(i=n.toHexString(),i=D(i,r.width/8));const s=it(n,r.decimals);return new at(X,i,s,r)}static fromBytes(t,e){null==e&&(e="fixed");const r=ot.from(e);if(C(t).length>r.width/8)throw new Error("overflow");let n=K.from(t);r.signed&&(n=n.fromTwos(r.width));const i=n.toTwos((r.signed?0:1)+r.width).toHexString(),s=it(n,r.decimals);return new at(X,i,s,r)}static from(t,e){if("string"==typeof t)return at.fromString(t,e);if(S(t))return at.fromBytes(t,e);try{return at.fromValue(t,0,e)}catch(t){if(t.code!==v.errors.INVALID_ARGUMENT)throw t}return Y.throwArgumentError("invalid FixedNumber value","value",t)}static isFixedNumber(t){return!(!t||!t._isFixedNumber)}}const lt=at.from(1),ct=at.from("0.5");var ht=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const ut=new v("properties/5.8.0");function dt(t,e,r){Object.defineProperty(t,e,{enumerable:!0,value:r,writable:!1})}function ft(t,e){for(let r=0;r<32;r++){if(t[e])return t[e];if(!t.prototype||"object"!=typeof t.prototype)break;t=Object.getPrototypeOf(t.prototype).constructor}return null}function pt(t){return ht(this,void 0,void 0,function*(){const e=Object.keys(t).map(e=>{const r=t[e];return Promise.resolve(r).then(t=>({key:e,value:t}))});return(yield Promise.all(e)).reduce((t,e)=>(t[e.key]=e.value,t),{})})}function mt(t,e){t&&"object"==typeof t||ut.throwArgumentError("invalid object","object",t),Object.keys(t).forEach(r=>{e[r]||ut.throwArgumentError("invalid object key - "+r,"transaction:"+r,t)})}function gt(t){const e={};for(const r in t)e[r]=t[r];return e}const yt={bigint:!0,boolean:!0,function:!0,number:!0,string:!0};function vt(t){if(null==t||yt[typeof t])return!0;if(Array.isArray(t)||"object"==typeof t){if(!Object.isFrozen(t))return!1;const e=Object.keys(t);for(let r=0;r<e.length;r++){let n=null;try{n=t[e[r]]}catch(t){continue}if(!vt(n))return!1}return!0}return ut.throwArgumentError("Cannot deepCopy "+typeof t,"object",t)}function wt(t){if(vt(t))return t;if(Array.isArray(t))return Object.freeze(t.map(t=>bt(t)));if("object"==typeof t){const e={};for(const r in t){const n=t[r];void 0!==n&&dt(e,r,bt(n))}return e}return ut.throwArgumentError("Cannot deepCopy "+typeof t,"object",t)}function bt(t){return wt(t)}class Et{constructor(t){for(const e in t)this[e]=bt(t[e])}}const At="abi/5.8.0",kt=new v(At),St={};let Ct={calldata:!0,memory:!0,storage:!0},xt={calldata:!0,memory:!0};function _t(t,e){if("bytes"===t||"string"===t){if(Ct[e])return!0}else if("address"===t){if("payable"===e)return!0}else if((t.indexOf("[")>=0||"tuple"===t)&&xt[e])return!0;return(Ct[e]||"payable"===e)&&kt.throwArgumentError("invalid modifier","name",e),!1}function It(t,e){for(let r in e)dt(t,r,e[r])}const Tt=Object.freeze({sighash:"sighash",minimal:"minimal",full:"full",json:"json"}),Pt=new RegExp(/^(.*)\[([0-9]*)\]$/);class Nt{constructor(t,e){t!==St&&kt.throwError("use fromString",v.errors.UNSUPPORTED_OPERATION,{operation:"new ParamType()"}),It(this,e);let r=this.type.match(Pt);It(this,r?{arrayLength:parseInt(r[2]||"-1"),arrayChildren:Nt.fromObject({type:r[1],components:this.components}),baseType:"array"}:{arrayLength:null,arrayChildren:null,baseType:null!=this.components?"tuple":this.type}),this._isParamType=!0,Object.freeze(this)}format(t){if(t||(t=Tt.sighash),Tt[t]||kt.throwArgumentError("invalid format type","format",t),t===Tt.json){let e={type:"tuple"===this.baseType?"tuple":this.type,name:this.name||void 0};return"boolean"==typeof this.indexed&&(e.indexed=this.indexed),this.components&&(e.components=this.components.map(e=>JSON.parse(e.format(t)))),JSON.stringify(e)}let e="";return"array"===this.baseType?(e+=this.arrayChildren.format(t),e+="["+(this.arrayLength<0?"":String(this.arrayLength))+"]"):"tuple"===this.baseType?(t!==Tt.sighash&&(e+=this.type),e+="("+this.components.map(e=>e.format(t)).join(t===Tt.full?", ":",")+")"):e+=this.type,t!==Tt.sighash&&(!0===this.indexed&&(e+=" indexed"),t===Tt.full&&this.name&&(e+=" "+this.name)),e}static from(t,e){return"string"==typeof t?Nt.fromString(t,e):Nt.fromObject(t)}static fromObject(t){return Nt.isParamType(t)?t:new Nt(St,{name:t.name||null,type:jt(t.type),indexed:null==t.indexed?null:!!t.indexed,components:t.components?t.components.map(Nt.fromObject):null})}static fromString(t,e){return r=function(t,e){let r=t;function n(e){kt.throwArgumentError(`unexpected character at position ${e}`,"param",t)}function i(t){let r={type:"",name:"",parent:t,state:{allowType:!0}};return e&&(r.indexed=!1),r}t=t.replace(/\s/g," ");let s={type:"",name:"",state:{allowType:!0}},o=s;for(let r=0;r<t.length;r++){let s=t[r];switch(s){case"(":o.state.allowType&&""===o.type?o.type="tuple":o.state.allowParams||n(r),o.state.allowType=!1,o.type=jt(o.type),o.components=[i(o)],o=o.components[0];break;case")":delete o.state,"indexed"===o.name&&(e||n(r),o.indexed=!0,o.name=""),_t(o.type,o.name)&&(o.name=""),o.type=jt(o.type);let t=o;o=o.parent,o||n(r),delete t.parent,o.state.allowParams=!1,o.state.allowName=!0,o.state.allowArray=!0;break;case",":delete o.state,"indexed"===o.name&&(e||n(r),o.indexed=!0,o.name=""),_t(o.type,o.name)&&(o.name=""),o.type=jt(o.type);let a=i(o.parent);o.parent.components.push(a),delete o.parent,o=a;break;case" ":o.state.allowType&&""!==o.type&&(o.type=jt(o.type),delete o.state.allowType,o.state.allowName=!0,o.state.allowParams=!0),o.state.allowName&&""!==o.name&&("indexed"===o.name?(e||n(r),o.indexed&&n(r),o.indexed=!0,o.name=""):_t(o.type,o.name)?o.name="":o.state.allowName=!1);break;case"[":o.state.allowArray||n(r),o.type+=s,o.state.allowArray=!1,o.state.allowName=!1,o.state.readArray=!0;break;case"]":o.state.readArray||n(r),o.type+=s,o.state.readArray=!1,o.state.allowArray=!0,o.state.allowName=!0;break;default:o.state.allowType?(o.type+=s,o.state.allowParams=!0,o.state.allowArray=!0):o.state.allowName?(o.name+=s,delete o.state.allowArray):o.state.readArray?o.type+=s:n(r)}}return o.parent&&kt.throwArgumentError("unexpected eof","param",t),delete s.state,"indexed"===o.name?(e||n(r.length-7),o.indexed&&n(r.length-7),o.indexed=!0,o.name=""):_t(o.type,o.name)&&(o.name=""),s.type=jt(s.type),s}(t,!!e),Nt.fromObject({name:r.name,type:r.type,indexed:r.indexed,components:r.components});var r}static isParamType(t){return!(null==t||!t._isParamType)}}function Bt(t,e){return function(t){t=t.trim();let e=[],r="",n=0;for(let i=0;i<t.length;i++){let s=t[i];","===s&&0===n?(e.push(r),r=""):(r+=s,"("===s?n++:")"===s&&(n--,-1===n&&kt.throwArgumentError("unbalanced parenthesis","value",t)))}r&&e.push(r);return e}(t).map(t=>Nt.fromString(t,e))}class Mt{constructor(t,e){t!==St&&kt.throwError("use a static from method",v.errors.UNSUPPORTED_OPERATION,{operation:"new Fragment()"}),It(this,e),this._isFragment=!0,Object.freeze(this)}static from(t){return Mt.isFragment(t)?t:"string"==typeof t?Mt.fromString(t):Mt.fromObject(t)}static fromObject(t){if(Mt.isFragment(t))return t;switch(t.type){case"function":return Ut.fromObject(t);case"event":return Rt.fromObject(t);case"constructor":return Lt.fromObject(t);case"error":return zt.fromObject(t);case"fallback":case"receive":return null}return kt.throwArgumentError("invalid fragment object","value",t)}static fromString(t){return"event"===(t=(t=(t=t.replace(/\s/g," ")).replace(/\(/g," (").replace(/\)/g,") ").replace(/\s+/g," ")).trim()).split(" ")[0]?Rt.fromString(t.substring(5).trim()):"function"===t.split(" ")[0]?Ut.fromString(t.substring(8).trim()):"constructor"===t.split("(")[0].trim()?Lt.fromString(t.trim()):"error"===t.split(" ")[0]?zt.fromString(t.substring(5).trim()):kt.throwArgumentError("unsupported fragment","value",t)}static isFragment(t){return!(!t||!t._isFragment)}}class Rt extends Mt{format(t){if(t||(t=Tt.sighash),Tt[t]||kt.throwArgumentError("invalid format type","format",t),t===Tt.json)return JSON.stringify({type:"event",anonymous:this.anonymous,name:this.name,inputs:this.inputs.map(e=>JSON.parse(e.format(t)))});let e="";return t!==Tt.sighash&&(e+="event "),e+=this.name+"("+this.inputs.map(e=>e.format(t)).join(t===Tt.full?", ":",")+") ",t!==Tt.sighash&&this.anonymous&&(e+="anonymous "),e.trim()}static from(t){return"string"==typeof t?Rt.fromString(t):Rt.fromObject(t)}static fromObject(t){if(Rt.isEventFragment(t))return t;"event"!==t.type&&kt.throwArgumentError("invalid event object","value",t);const e={name:Ht(t.name),anonymous:t.anonymous,inputs:t.inputs?t.inputs.map(Nt.fromObject):[],type:"event"};return new Rt(St,e)}static fromString(t){let e=t.match(Wt);e||kt.throwArgumentError("invalid event string","value",t);let r=!1;return e[3].split(" ").forEach(t=>{switch(t.trim()){case"anonymous":r=!0;break;case"":break;default:kt.warn("unknown modifier: "+t)}}),Rt.fromObject({name:e[1].trim(),anonymous:r,inputs:Bt(e[2],!0),type:"event"})}static isEventFragment(t){return t&&t._isFragment&&"event"===t.type}}function Ft(t,e){e.gas=null;let r=t.split("@");return 1!==r.length?(r.length>2&&kt.throwArgumentError("invalid human-readable ABI signature","value",t),r[1].match(/^[0-9]+$/)||kt.throwArgumentError("invalid human-readable ABI signature gas","value",t),e.gas=K.from(r[1]),r[0]):t}function Ot(t,e){e.constant=!1,e.payable=!1,e.stateMutability="nonpayable",t.split(" ").forEach(t=>{switch(t.trim()){case"constant":e.constant=!0;break;case"payable":e.payable=!0,e.stateMutability="payable";break;case"nonpayable":e.payable=!1,e.stateMutability="nonpayable";break;case"pure":e.constant=!0,e.stateMutability="pure";break;case"view":e.constant=!0,e.stateMutability="view";break;case"external":case"public":case"":break;default:console.log("unknown modifier: "+t)}})}function Dt(t){let e={constant:!1,payable:!0,stateMutability:"payable"};return null!=t.stateMutability?(e.stateMutability=t.stateMutability,e.constant="view"===e.stateMutability||"pure"===e.stateMutability,null!=t.constant&&!!t.constant!==e.constant&&kt.throwArgumentError("cannot have constant function with mutability "+e.stateMutability,"value",t),e.payable="payable"===e.stateMutability,null!=t.payable&&!!t.payable!==e.payable&&kt.throwArgumentError("cannot have payable function with mutability "+e.stateMutability,"value",t)):null!=t.payable?(e.payable=!!t.payable,null!=t.constant||e.payable||"constructor"===t.type||kt.throwArgumentError("unable to determine stateMutability","value",t),e.constant=!!t.constant,e.constant?e.stateMutability="view":e.stateMutability=e.payable?"payable":"nonpayable",e.payable&&e.constant&&kt.throwArgumentError("cannot have constant payable function","value",t)):null!=t.constant?(e.constant=!!t.constant,e.payable=!e.constant,e.stateMutability=e.constant?"view":"payable"):"constructor"!==t.type&&kt.throwArgumentError("unable to determine stateMutability","value",t),e}class Lt extends Mt{format(t){if(t||(t=Tt.sighash),Tt[t]||kt.throwArgumentError("invalid format type","format",t),t===Tt.json)return JSON.stringify({type:"constructor",stateMutability:"nonpayable"!==this.stateMutability?this.stateMutability:void 0,payable:this.payable,gas:this.gas?this.gas.toNumber():void 0,inputs:this.inputs.map(e=>JSON.parse(e.format(t)))});t===Tt.sighash&&kt.throwError("cannot format a constructor for sighash",v.errors.UNSUPPORTED_OPERATION,{operation:"format(sighash)"});let e="constructor("+this.inputs.map(e=>e.format(t)).join(t===Tt.full?", ":",")+") ";return this.stateMutability&&"nonpayable"!==this.stateMutability&&(e+=this.stateMutability+" "),e.trim()}static from(t){return"string"==typeof t?Lt.fromString(t):Lt.fromObject(t)}static fromObject(t){if(Lt.isConstructorFragment(t))return t;"constructor"!==t.type&&kt.throwArgumentError("invalid constructor object","value",t);let e=Dt(t);e.constant&&kt.throwArgumentError("constructor cannot be constant","value",t);const r={name:null,type:t.type,inputs:t.inputs?t.inputs.map(Nt.fromObject):[],payable:e.payable,stateMutability:e.stateMutability,gas:t.gas?K.from(t.gas):null};return new Lt(St,r)}static fromString(t){let e={type:"constructor"},r=(t=Ft(t,e)).match(Wt);return r&&"constructor"===r[1].trim()||kt.throwArgumentError("invalid constructor string","value",t),e.inputs=Bt(r[2].trim(),!1),Ot(r[3].trim(),e),Lt.fromObject(e)}static isConstructorFragment(t){return t&&t._isFragment&&"constructor"===t.type}}class Ut extends Lt{format(t){if(t||(t=Tt.sighash),Tt[t]||kt.throwArgumentError("invalid format type","format",t),t===Tt.json)return JSON.stringify({type:"function",name:this.name,constant:this.constant,stateMutability:"nonpayable"!==this.stateMutability?this.stateMutability:void 0,payable:this.payable,gas:this.gas?this.gas.toNumber():void 0,inputs:this.inputs.map(e=>JSON.parse(e.format(t))),outputs:this.outputs.map(e=>JSON.parse(e.format(t)))});let e="";return t!==Tt.sighash&&(e+="function "),e+=this.name+"("+this.inputs.map(e=>e.format(t)).join(t===Tt.full?", ":",")+") ",t!==Tt.sighash&&(this.stateMutability?"nonpayable"!==this.stateMutability&&(e+=this.stateMutability+" "):this.constant&&(e+="view "),this.outputs&&this.outputs.length&&(e+="returns ("+this.outputs.map(e=>e.format(t)).join(", ")+") "),null!=this.gas&&(e+="@"+this.gas.toString()+" ")),e.trim()}static from(t){return"string"==typeof t?Ut.fromString(t):Ut.fromObject(t)}static fromObject(t){if(Ut.isFunctionFragment(t))return t;"function"!==t.type&&kt.throwArgumentError("invalid function object","value",t);let e=Dt(t);const r={type:t.type,name:Ht(t.name),constant:e.constant,inputs:t.inputs?t.inputs.map(Nt.fromObject):[],outputs:t.outputs?t.outputs.map(Nt.fromObject):[],payable:e.payable,stateMutability:e.stateMutability,gas:t.gas?K.from(t.gas):null};return new Ut(St,r)}static fromString(t){let e={type:"function"},r=(t=Ft(t,e)).split(" returns ");r.length>2&&kt.throwArgumentError("invalid function string","value",t);let n=r[0].match(Wt);if(n||kt.throwArgumentError("invalid function signature","value",t),e.name=n[1].trim(),e.name&&Ht(e.name),e.inputs=Bt(n[2],!1),Ot(n[3].trim(),e),r.length>1){let n=r[1].match(Wt);""==n[1].trim()&&""==n[3].trim()||kt.throwArgumentError("unexpected tokens","value",t),e.outputs=Bt(n[2],!1)}else e.outputs=[];return Ut.fromObject(e)}static isFunctionFragment(t){return t&&t._isFragment&&"function"===t.type}}function qt(t){const e=t.format();return"Error(string)"!==e&&"Panic(uint256)"!==e||kt.throwArgumentError(`cannot specify user defined ${e} error`,"fragment",t),t}class zt extends Mt{format(t){if(t||(t=Tt.sighash),Tt[t]||kt.throwArgumentError("invalid format type","format",t),t===Tt.json)return JSON.stringify({type:"error",name:this.name,inputs:this.inputs.map(e=>JSON.parse(e.format(t)))});let e="";return t!==Tt.sighash&&(e+="error "),e+=this.name+"("+this.inputs.map(e=>e.format(t)).join(t===Tt.full?", ":",")+") ",e.trim()}static from(t){return"string"==typeof t?zt.fromString(t):zt.fromObject(t)}static fromObject(t){if(zt.isErrorFragment(t))return t;"error"!==t.type&&kt.throwArgumentError("invalid error object","value",t);const e={type:t.type,name:Ht(t.name),inputs:t.inputs?t.inputs.map(Nt.fromObject):[]};return qt(new zt(St,e))}static fromString(t){let e={type:"error"},r=t.match(Wt);return r||kt.throwArgumentError("invalid error signature","value",t),e.name=r[1].trim(),e.name&&Ht(e.name),e.inputs=Bt(r[2],!1),qt(zt.fromObject(e))}static isErrorFragment(t){return t&&t._isFragment&&"error"===t.type}}function jt(t){return t.match(/^uint($|[^1-9])/)?t="uint256"+t.substring(4):t.match(/^int($|[^1-9])/)&&(t="int256"+t.substring(3)),t}const Gt=new RegExp("^[a-zA-Z$_][a-zA-Z0-9$_]*$");function Ht(t){return t&&t.match(Gt)||kt.throwArgumentError(`invalid identifier "${t}"`,"value",t),t}const Wt=new RegExp("^([^)(]*)\\((.*)\\)([^)(]*)$");const Kt=new v(At);function $t(t){const e=[],r=function(t,n){if(Array.isArray(n))for(let i in n){const s=t.slice();s.push(i);try{r(s,n[i])}catch(t){e.push({path:s,error:t})}}};return r([],t),e}class Vt{constructor(t,e,r,n){this.name=t,this.type=e,this.localName=r,this.dynamic=n}_throwError(t,e){Kt.throwArgumentError(t,this.localName,e)}}class Jt{constructor(t){dt(this,"wordSize",t||32),this._data=[],this._dataLength=0,this._padding=new Uint8Array(t)}get data(){return R(this._data)}get length(){return this._dataLength}_writeData(t){return this._data.push(t),this._dataLength+=t.length,t.length}appendWriter(t){return this._writeData(x(t._data))}writeBytes(t){let e=C(t);const r=e.length%this.wordSize;return r&&(e=x([e,this._padding.slice(r)])),this._writeData(e)}_getValue(t){let e=C(K.from(t));return e.length>this.wordSize&&Kt.throwError("value out-of-bounds",v.errors.BUFFER_OVERRUN,{length:this.wordSize,offset:e.length}),e.length%this.wordSize&&(e=x([this._padding.slice(e.length%this.wordSize),e])),e}writeValue(t){return this._writeData(this._getValue(t))}writeUpdatableValue(){const t=this._data.length;return this._data.push(this._padding),this._dataLength+=this.wordSize,e=>{this._data[t]=this._getValue(e)}}}class Qt{constructor(t,e,r,n){dt(this,"_data",C(t)),dt(this,"wordSize",e||32),dt(this,"_coerceFunc",r),dt(this,"allowLoose",n),this._offset=0}get data(){return N(this._data)}get consumed(){return this._offset}static coerce(t,e){let r=t.match("^u?int([0-9]+)$");return r&&parseInt(r[1])<=48&&(e=e.toNumber()),e}coerce(t,e){return this._coerceFunc?this._coerceFunc(t,e):Qt.coerce(t,e)}_peekBytes(t,e,r){let n=Math.ceil(e/this.wordSize)*this.wordSize;return this._offset+n>this._data.length&&(this.allowLoose&&r&&this._offset+e<=this._data.length?n=e:Kt.throwError("data out-of-bounds",v.errors.BUFFER_OVERRUN,{length:this._data.length,offset:this._offset+n})),this._data.slice(this._offset,this._offset+n)}subReader(t){return new Qt(this._data.slice(this._offset+t),this.wordSize,this._coerceFunc,this.allowLoose)}readBytes(t,e){let r=this._peekBytes(0,t,!!e);return this._offset+=r.length,r.slice(0,t)}readValue(){return K.from(this.readBytes(this.wordSize))}}var Yt,Xt={exports:{}};
2
2
  /**
3
3
  * [js-sha3]{@link https://github.com/emn178/js-sha3}
4
4
  *
@@ -6,5 +6,5 @@
6
6
  * @author Chen, Yi-Cyuan [emn178@gmail.com]
7
7
  * @copyright Chen, Yi-Cyuan 2015-2018
8
8
  * @license MIT
9
- */var Zt=(Yt||(Yt=1,function(t){!function(){var e="input is invalid type",n="object"==typeof window,i=n?window:{};i.JS_SHA3_NO_WINDOW&&(n=!1);var o=!n&&"object"==typeof self;!i.JS_SHA3_NO_NODE_JS&&"object"==typeof process&&process.versions&&process.versions.node?i=r:o&&(i=self);var s=!i.JS_SHA3_NO_COMMON_JS&&t.exports,a=!i.JS_SHA3_NO_ARRAY_BUFFER&&"undefined"!=typeof ArrayBuffer,l="0123456789abcdef".split(""),c=[4,1024,262144,67108864],u=[0,8,16,24],h=[1,0,32898,0,32906,2147483648,2147516416,2147483648,32907,0,2147483649,0,2147516545,2147483648,32777,2147483648,138,0,136,0,2147516425,0,2147483658,0,2147516555,0,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,2147483648,32778,0,2147483658,2147483648,2147516545,2147483648,32896,2147483648,2147483649,0,2147516424,2147483648],d=[224,256,384,512],f=[128,256],p=["hex","buffer","arrayBuffer","array","digest"],m={128:168,256:136};!i.JS_SHA3_NO_NODE_JS&&Array.isArray||(Array.isArray=function(t){return"[object Array]"===Object.prototype.toString.call(t)}),!a||!i.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW&&ArrayBuffer.isView||(ArrayBuffer.isView=function(t){return"object"==typeof t&&t.buffer&&t.buffer.constructor===ArrayBuffer});for(var g=function(t,e,r){return function(n){return new N(t,e,t).update(n)[r]()}},v=function(t,e,r){return function(n,i){return new N(t,e,i).update(n)[r]()}},w=function(t,e,r){return function(e,n,i,o){return k["cshake"+t].update(e,n,i,o)[r]()}},y=function(t,e,r){return function(e,n,i,o){return k["kmac"+t].update(e,n,i,o)[r]()}},b=function(t,e,r,n){for(var i=0;i<p.length;++i){var o=p[i];t[o]=e(r,n,o)}return t},E=function(t,e){var r=g(t,e,"hex");return r.create=function(){return new N(t,e,t)},r.update=function(t){return r.create().update(t)},b(r,g,t,e)},A=[{name:"keccak",padding:[1,256,65536,16777216],bits:d,createMethod:E},{name:"sha3",padding:[6,1536,393216,100663296],bits:d,createMethod:E},{name:"shake",padding:[31,7936,2031616,520093696],bits:f,createMethod:function(t,e){var r=v(t,e,"hex");return r.create=function(r){return new N(t,e,r)},r.update=function(t,e){return r.create(e).update(t)},b(r,v,t,e)}},{name:"cshake",padding:c,bits:f,createMethod:function(t,e){var r=m[t],n=w(t,0,"hex");return n.create=function(n,i,o){return i||o?new N(t,e,n).bytepad([i,o],r):k["shake"+t].create(n)},n.update=function(t,e,r,i){return n.create(e,r,i).update(t)},b(n,w,t,e)}},{name:"kmac",padding:c,bits:f,createMethod:function(t,e){var r=m[t],n=y(t,0,"hex");return n.create=function(n,i,o){return new M(t,e,i).bytepad(["KMAC",o],r).bytepad([n],r)},n.update=function(t,e,r,i){return n.create(t,r,i).update(e)},b(n,y,t,e)}}],k={},S=[],C=0;C<A.length;++C)for(var x=A[C],_=x.bits,T=0;T<_.length;++T){var P=x.name+"_"+_[T];if(S.push(P),k[P]=x.createMethod(_[T],x.padding),"sha3"!==x.name){var I=x.name+_[T];S.push(I),k[I]=k[P]}}function N(t,e,r){this.blocks=[],this.s=[],this.padding=e,this.outputBits=r,this.reset=!0,this.finalized=!1,this.block=0,this.start=0,this.blockCount=1600-(t<<1)>>5,this.byteCount=this.blockCount<<2,this.outputBlocks=r>>5,this.extraBytes=(31&r)>>3;for(var n=0;n<50;++n)this.s[n]=0}function M(t,e,r){N.call(this,t,e,r)}N.prototype.update=function(t){if(this.finalized)throw new Error("finalize already called");var r,n=typeof t;if("string"!==n){if("object"!==n)throw new Error(e);if(null===t)throw new Error(e);if(a&&t.constructor===ArrayBuffer)t=new Uint8Array(t);else if(!(Array.isArray(t)||a&&ArrayBuffer.isView(t)))throw new Error(e);r=!0}for(var i,o,s=this.blocks,l=this.byteCount,c=t.length,h=this.blockCount,d=0,f=this.s;d<c;){if(this.reset)for(this.reset=!1,s[0]=this.block,i=1;i<h+1;++i)s[i]=0;if(r)for(i=this.start;d<c&&i<l;++d)s[i>>2]|=t[d]<<u[3&i++];else for(i=this.start;d<c&&i<l;++d)(o=t.charCodeAt(d))<128?s[i>>2]|=o<<u[3&i++]:o<2048?(s[i>>2]|=(192|o>>6)<<u[3&i++],s[i>>2]|=(128|63&o)<<u[3&i++]):o<55296||o>=57344?(s[i>>2]|=(224|o>>12)<<u[3&i++],s[i>>2]|=(128|o>>6&63)<<u[3&i++],s[i>>2]|=(128|63&o)<<u[3&i++]):(o=65536+((1023&o)<<10|1023&t.charCodeAt(++d)),s[i>>2]|=(240|o>>18)<<u[3&i++],s[i>>2]|=(128|o>>12&63)<<u[3&i++],s[i>>2]|=(128|o>>6&63)<<u[3&i++],s[i>>2]|=(128|63&o)<<u[3&i++]);if(this.lastByteIndex=i,i>=l){for(this.start=i-l,this.block=s[h],i=0;i<h;++i)f[i]^=s[i];B(f),this.reset=!0}else this.start=i}return this},N.prototype.encode=function(t,e){var r=255&t,n=1,i=[r];for(r=255&(t>>=8);r>0;)i.unshift(r),r=255&(t>>=8),++n;return e?i.push(n):i.unshift(n),this.update(i),i.length},N.prototype.encodeString=function(t){var r,n=typeof t;if("string"!==n){if("object"!==n)throw new Error(e);if(null===t)throw new Error(e);if(a&&t.constructor===ArrayBuffer)t=new Uint8Array(t);else if(!(Array.isArray(t)||a&&ArrayBuffer.isView(t)))throw new Error(e);r=!0}var i=0,o=t.length;if(r)i=o;else for(var s=0;s<t.length;++s){var l=t.charCodeAt(s);l<128?i+=1:l<2048?i+=2:l<55296||l>=57344?i+=3:(l=65536+((1023&l)<<10|1023&t.charCodeAt(++s)),i+=4)}return i+=this.encode(8*i),this.update(t),i},N.prototype.bytepad=function(t,e){for(var r=this.encode(e),n=0;n<t.length;++n)r+=this.encodeString(t[n]);var i=e-r%e,o=[];return o.length=i,this.update(o),this},N.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var t=this.blocks,e=this.lastByteIndex,r=this.blockCount,n=this.s;if(t[e>>2]|=this.padding[3&e],this.lastByteIndex===this.byteCount)for(t[0]=t[r],e=1;e<r+1;++e)t[e]=0;for(t[r-1]|=2147483648,e=0;e<r;++e)n[e]^=t[e];B(n)}},N.prototype.toString=N.prototype.hex=function(){this.finalize();for(var t,e=this.blockCount,r=this.s,n=this.outputBlocks,i=this.extraBytes,o=0,s=0,a="";s<n;){for(o=0;o<e&&s<n;++o,++s)t=r[o],a+=l[t>>4&15]+l[15&t]+l[t>>12&15]+l[t>>8&15]+l[t>>20&15]+l[t>>16&15]+l[t>>28&15]+l[t>>24&15];s%e===0&&(B(r),o=0)}return i&&(t=r[o],a+=l[t>>4&15]+l[15&t],i>1&&(a+=l[t>>12&15]+l[t>>8&15]),i>2&&(a+=l[t>>20&15]+l[t>>16&15])),a},N.prototype.arrayBuffer=function(){this.finalize();var t,e=this.blockCount,r=this.s,n=this.outputBlocks,i=this.extraBytes,o=0,s=0,a=this.outputBits>>3;t=i?new ArrayBuffer(n+1<<2):new ArrayBuffer(a);for(var l=new Uint32Array(t);s<n;){for(o=0;o<e&&s<n;++o,++s)l[s]=r[o];s%e===0&&B(r)}return i&&(l[o]=r[o],t=t.slice(0,a)),t},N.prototype.buffer=N.prototype.arrayBuffer,N.prototype.digest=N.prototype.array=function(){this.finalize();for(var t,e,r=this.blockCount,n=this.s,i=this.outputBlocks,o=this.extraBytes,s=0,a=0,l=[];a<i;){for(s=0;s<r&&a<i;++s,++a)t=a<<2,e=n[s],l[t]=255&e,l[t+1]=e>>8&255,l[t+2]=e>>16&255,l[t+3]=e>>24&255;a%r===0&&B(n)}return o&&(t=a<<2,e=n[s],l[t]=255&e,o>1&&(l[t+1]=e>>8&255),o>2&&(l[t+2]=e>>16&255)),l},M.prototype=new N,M.prototype.finalize=function(){return this.encode(this.outputBits,!0),N.prototype.finalize.call(this)};var B=function(t){var e,r,n,i,o,s,a,l,c,u,d,f,p,m,g,v,w,y,b,E,A,k,S,C,x,_,T,P,I,N,M,B,R,F,O,D,U,L,q,z,G,H,j,K,W,V,$,J,Q,Y,X,Z,tt,et,rt,nt,it,ot,st,at,lt,ct,ut;for(n=0;n<48;n+=2)i=t[0]^t[10]^t[20]^t[30]^t[40],o=t[1]^t[11]^t[21]^t[31]^t[41],s=t[2]^t[12]^t[22]^t[32]^t[42],a=t[3]^t[13]^t[23]^t[33]^t[43],l=t[4]^t[14]^t[24]^t[34]^t[44],c=t[5]^t[15]^t[25]^t[35]^t[45],u=t[6]^t[16]^t[26]^t[36]^t[46],d=t[7]^t[17]^t[27]^t[37]^t[47],e=(f=t[8]^t[18]^t[28]^t[38]^t[48])^(s<<1|a>>>31),r=(p=t[9]^t[19]^t[29]^t[39]^t[49])^(a<<1|s>>>31),t[0]^=e,t[1]^=r,t[10]^=e,t[11]^=r,t[20]^=e,t[21]^=r,t[30]^=e,t[31]^=r,t[40]^=e,t[41]^=r,e=i^(l<<1|c>>>31),r=o^(c<<1|l>>>31),t[2]^=e,t[3]^=r,t[12]^=e,t[13]^=r,t[22]^=e,t[23]^=r,t[32]^=e,t[33]^=r,t[42]^=e,t[43]^=r,e=s^(u<<1|d>>>31),r=a^(d<<1|u>>>31),t[4]^=e,t[5]^=r,t[14]^=e,t[15]^=r,t[24]^=e,t[25]^=r,t[34]^=e,t[35]^=r,t[44]^=e,t[45]^=r,e=l^(f<<1|p>>>31),r=c^(p<<1|f>>>31),t[6]^=e,t[7]^=r,t[16]^=e,t[17]^=r,t[26]^=e,t[27]^=r,t[36]^=e,t[37]^=r,t[46]^=e,t[47]^=r,e=u^(i<<1|o>>>31),r=d^(o<<1|i>>>31),t[8]^=e,t[9]^=r,t[18]^=e,t[19]^=r,t[28]^=e,t[29]^=r,t[38]^=e,t[39]^=r,t[48]^=e,t[49]^=r,m=t[0],g=t[1],V=t[11]<<4|t[10]>>>28,$=t[10]<<4|t[11]>>>28,P=t[20]<<3|t[21]>>>29,I=t[21]<<3|t[20]>>>29,at=t[31]<<9|t[30]>>>23,lt=t[30]<<9|t[31]>>>23,H=t[40]<<18|t[41]>>>14,j=t[41]<<18|t[40]>>>14,F=t[2]<<1|t[3]>>>31,O=t[3]<<1|t[2]>>>31,v=t[13]<<12|t[12]>>>20,w=t[12]<<12|t[13]>>>20,J=t[22]<<10|t[23]>>>22,Q=t[23]<<10|t[22]>>>22,N=t[33]<<13|t[32]>>>19,M=t[32]<<13|t[33]>>>19,ct=t[42]<<2|t[43]>>>30,ut=t[43]<<2|t[42]>>>30,et=t[5]<<30|t[4]>>>2,rt=t[4]<<30|t[5]>>>2,D=t[14]<<6|t[15]>>>26,U=t[15]<<6|t[14]>>>26,y=t[25]<<11|t[24]>>>21,b=t[24]<<11|t[25]>>>21,Y=t[34]<<15|t[35]>>>17,X=t[35]<<15|t[34]>>>17,B=t[45]<<29|t[44]>>>3,R=t[44]<<29|t[45]>>>3,C=t[6]<<28|t[7]>>>4,x=t[7]<<28|t[6]>>>4,nt=t[17]<<23|t[16]>>>9,it=t[16]<<23|t[17]>>>9,L=t[26]<<25|t[27]>>>7,q=t[27]<<25|t[26]>>>7,E=t[36]<<21|t[37]>>>11,A=t[37]<<21|t[36]>>>11,Z=t[47]<<24|t[46]>>>8,tt=t[46]<<24|t[47]>>>8,K=t[8]<<27|t[9]>>>5,W=t[9]<<27|t[8]>>>5,_=t[18]<<20|t[19]>>>12,T=t[19]<<20|t[18]>>>12,ot=t[29]<<7|t[28]>>>25,st=t[28]<<7|t[29]>>>25,z=t[38]<<8|t[39]>>>24,G=t[39]<<8|t[38]>>>24,k=t[48]<<14|t[49]>>>18,S=t[49]<<14|t[48]>>>18,t[0]=m^~v&y,t[1]=g^~w&b,t[10]=C^~_&P,t[11]=x^~T&I,t[20]=F^~D&L,t[21]=O^~U&q,t[30]=K^~V&J,t[31]=W^~$&Q,t[40]=et^~nt&ot,t[41]=rt^~it&st,t[2]=v^~y&E,t[3]=w^~b&A,t[12]=_^~P&N,t[13]=T^~I&M,t[22]=D^~L&z,t[23]=U^~q&G,t[32]=V^~J&Y,t[33]=$^~Q&X,t[42]=nt^~ot&at,t[43]=it^~st&lt,t[4]=y^~E&k,t[5]=b^~A&S,t[14]=P^~N&B,t[15]=I^~M&R,t[24]=L^~z&H,t[25]=q^~G&j,t[34]=J^~Y&Z,t[35]=Q^~X&tt,t[44]=ot^~at&ct,t[45]=st^~lt&ut,t[6]=E^~k&m,t[7]=A^~S&g,t[16]=N^~B&C,t[17]=M^~R&x,t[26]=z^~H&F,t[27]=G^~j&O,t[36]=Y^~Z&K,t[37]=X^~tt&W,t[46]=at^~ct&et,t[47]=lt^~ut&rt,t[8]=k^~m&v,t[9]=S^~g&w,t[18]=B^~C&_,t[19]=R^~x&T,t[28]=H^~F&D,t[29]=j^~O&U,t[38]=Z^~K&V,t[39]=tt^~W&$,t[48]=ct^~et&nt,t[49]=ut^~rt&it,t[0]^=h[n],t[1]^=h[n+1]};if(s)t.exports=k;else for(C=0;C<S.length;++C)i[S[C]]=k[S[C]]}()}(Xt)),Xt.exports),te=n(Zt);function ee(t){return"0x"+te.keccak_256(C(t))}const re=new w("rlp/5.8.0");function ne(t){const e=[];for(;t;)e.unshift(255&t),t>>=8;return e}function ie(t,e,r){let n=0;for(let i=0;i<r;i++)n=256*n+t[e+i];return n}function oe(t){if(Array.isArray(t)){let e=[];if(t.forEach(function(t){e=e.concat(oe(t))}),e.length<=55)return e.unshift(192+e.length),e;const r=ne(e.length);return r.unshift(247+r.length),r.concat(e)}A(t)||re.throwArgumentError("RLP object must be BytesLike","object",t);const e=Array.prototype.slice.call(C(t));if(1===e.length&&e[0]<=127)return e;if(e.length<=55)return e.unshift(128+e.length),e;const r=ne(e.length);return r.unshift(183+r.length),r.concat(e)}function se(t){return N(oe(t))}function ae(t,e,r,n){const i=[];for(;r<e+1+n;){const o=le(t,r);i.push(o.result),(r+=o.consumed)>e+1+n&&re.throwError("child data too short",w.errors.BUFFER_OVERRUN,{})}return{consumed:1+n,result:i}}function le(t,e){if(0===t.length&&re.throwError("data too short",w.errors.BUFFER_OVERRUN,{}),t[e]>=248){const r=t[e]-247;e+1+r>t.length&&re.throwError("data short segment too short",w.errors.BUFFER_OVERRUN,{});const n=ie(t,e+1,r);return e+1+r+n>t.length&&re.throwError("data long segment too short",w.errors.BUFFER_OVERRUN,{}),ae(t,e,e+1+r,r+n)}if(t[e]>=192){const r=t[e]-192;return e+1+r>t.length&&re.throwError("data array too short",w.errors.BUFFER_OVERRUN,{}),ae(t,e,e+1,r)}if(t[e]>=184){const r=t[e]-183;e+1+r>t.length&&re.throwError("data array too short",w.errors.BUFFER_OVERRUN,{});const n=ie(t,e+1,r);e+1+r+n>t.length&&re.throwError("data array too short",w.errors.BUFFER_OVERRUN,{});return{consumed:1+r+n,result:N(t.slice(e+1+r,e+1+r+n))}}if(t[e]>=128){const r=t[e]-128;e+1+r>t.length&&re.throwError("data too short",w.errors.BUFFER_OVERRUN,{});return{consumed:1+r,result:N(t.slice(e+1,e+1+r))}}return{consumed:1,result:N(t[e])}}function ce(t){const e=C(t),r=le(e,0);return r.consumed!==e.length&&re.throwArgumentError("invalid rlp data","data",t),r.result}var ue=Object.freeze({__proto__:null,decode:ce,encode:se});const he=new w("address/5.8.0");function de(t){P(t,20)||he.throwArgumentError("invalid address","address",t);const e=(t=t.toLowerCase()).substring(2).split(""),r=new Uint8Array(40);for(let t=0;t<40;t++)r[t]=e[t].charCodeAt(0);const n=C(ee(r));for(let t=0;t<40;t+=2)n[t>>1]>>4>=8&&(e[t]=e[t].toUpperCase()),(15&n[t>>1])>=8&&(e[t+1]=e[t+1].toUpperCase());return"0x"+e.join("")}const fe={};for(let t=0;t<10;t++)fe[String(t)]=String(t);for(let t=0;t<26;t++)fe[String.fromCharCode(65+t)]=String(10+t);const pe=Math.floor((me=9007199254740991,Math.log10?Math.log10(me):Math.log(me)/Math.LN10));var me;function ge(t){let e=(t=(t=t.toUpperCase()).substring(4)+t.substring(0,2)+"00").split("").map(t=>fe[t]).join("");for(;e.length>=pe;){let t=e.substring(0,pe);e=parseInt(t,10)%97+e.substring(t.length)}let r=String(98-parseInt(e,10)%97);for(;r.length<2;)r="0"+r;return r}function ve(t){let e=null;if("string"!=typeof t&&he.throwArgumentError("invalid address","address",t),t.match(/^(0x)?[0-9a-fA-F]{40}$/))"0x"!==t.substring(0,2)&&(t="0x"+t),e=de(t),t.match(/([A-F].*[a-f])|([a-f].*[A-F])/)&&e!==t&&he.throwArgumentError("bad address checksum","address",t);else if(t.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)){for(t.substring(2,4)!==ge(t)&&he.throwArgumentError("bad icap checksum","address",t),r=t.substring(4),e=new z(r,36).toString(16);e.length<40;)e="0"+e;e=de("0x"+e)}else he.throwArgumentError("invalid address","address",t);var r;return e}function we(t){let e=null;try{e=ve(t.from)}catch(e){he.throwArgumentError("missing from address","transaction",t)}return ve(B(ee(se([e,_(C(W.from(t.nonce).toHexString()))])),12))}class ye extends $t{constructor(t){super("address","address",t,!1)}defaultValue(){return"0x0000000000000000000000000000000000000000"}encode(t,e){try{e=ve(e)}catch(t){this._throwError(t.message,e)}return t.writeValue(e)}decode(t){return ve(D(t.readValue().toHexString(),20))}}class be extends $t{constructor(t){super(t.name,t.type,void 0,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)}}const Ee=new w(At);function Ae(t,e,r){let n=null;if(Array.isArray(r))n=r;else if(r&&"object"==typeof r){let t={};n=e.map(e=>{const n=e.localName;return n||Ee.throwError("cannot encode object for signature with missing names",w.errors.INVALID_ARGUMENT,{argument:"values",coder:e,value:r}),t[n]&&Ee.throwError("cannot encode object for signature with duplicate names",w.errors.INVALID_ARGUMENT,{argument:"values",coder:e,value:r}),t[n]=!0,r[n]})}else Ee.throwArgumentError("invalid tuple value","tuple",r);e.length!==n.length&&Ee.throwArgumentError("types/value length mismatch","tuple",r);let i=new Jt(t.wordSize),o=new Jt(t.wordSize),s=[];e.forEach((t,e)=>{let r=n[e];if(t.dynamic){let e=o.length;t.encode(o,r);let n=i.writeUpdatableValue();s.push(t=>{n(t+e)})}else t.encode(i,r)}),s.forEach(t=>{t(i.length)});let a=t.appendWriter(i);return a+=t.appendWriter(o),a}function ke(t,e){let r=[],n=t.subReader(0);e.forEach(e=>{let i=null;if(e.dynamic){let r=t.readValue(),o=n.subReader(r.toNumber());try{i=e.decode(o)}catch(t){if(t.code===w.errors.BUFFER_OVERRUN)throw t;i=t,i.baseType=e.name,i.name=e.localName,i.type=e.type}}else try{i=e.decode(t)}catch(t){if(t.code===w.errors.BUFFER_OVERRUN)throw t;i=t,i.baseType=e.name,i.name=e.localName,i.type=e.type}null!=i&&r.push(i)});const i=e.reduce((t,e)=>{const r=e.localName;return r&&(t[r]||(t[r]=0),t[r]++),t},{});e.forEach((t,e)=>{let n=t.localName;if(!n||1!==i[n])return;if("length"===n&&(n="_length"),null!=r[n])return;const o=r[e];o instanceof Error?Object.defineProperty(r,n,{enumerable:!0,get:()=>{throw o}}):r[n]=o});for(let t=0;t<r.length;t++){const e=r[t];e instanceof Error&&Object.defineProperty(r,t,{enumerable:!0,get:()=>{throw e}})}return Object.freeze(r)}class Se extends $t{constructor(t,e,r){super("array",t.type+"["+(e>=0?e:"")+"]",r,-1===e||t.dynamic),this.coder=t,this.length=e}defaultValue(){const t=this.coder.defaultValue(),e=[];for(let r=0;r<this.length;r++)e.push(t);return e}encode(t,e){Array.isArray(e)||this._throwError("expected array value",e);let r=this.length;-1===r&&(r=e.length,t.writeValue(e.length)),Ee.checkArgumentCount(e.length,r,"coder array"+(this.localName?" "+this.localName:""));let n=[];for(let t=0;t<e.length;t++)n.push(this.coder);return Ae(t,n,e)}decode(t){let e=this.length;-1===e&&(e=t.readValue().toNumber(),32*e>t._data.length&&Ee.throwError("insufficient data length",w.errors.BUFFER_OVERRUN,{length:t._data.length,count:e}));let r=[];for(let t=0;t<e;t++)r.push(new be(this.coder));return t.coerce(this.name,ke(t,r))}}class Ce extends $t{constructor(t){super("bool","bool",t,!1)}defaultValue(){return!1}encode(t,e){return t.writeValue(e?1:0)}decode(t){return t.coerce(this.type,!t.readValue().isZero())}}class xe extends $t{constructor(t,e){super(t,t,e,!0)}defaultValue(){return"0x"}encode(t,e){e=C(e);let r=t.writeValue(e.length);return r+=t.writeBytes(e),r}decode(t){return t.readBytes(t.readValue().toNumber(),!0)}}class _e extends xe{constructor(t){super("bytes",t)}decode(t){return t.coerce(this.name,N(super.decode(t)))}}class Te extends $t{constructor(t,e){let r="bytes"+String(t);super(r,r,e,!1),this.size=t}defaultValue(){return"0x0000000000000000000000000000000000000000000000000000000000000000".substring(0,2+2*this.size)}encode(t,e){let r=C(e);return r.length!==this.size&&this._throwError("incorrect data length",e),t.writeBytes(r)}decode(t){return t.coerce(this.name,N(t.readBytes(this.size)))}}class Pe extends $t{constructor(t){super("null","",t,!1)}defaultValue(){return null}encode(t,e){return null!=e&&this._throwError("not null",e),t.writeBytes([])}decode(t){return t.readBytes(0),t.coerce(this.name,null)}}const Ie="0x0000000000000000000000000000000000000000",Ne=W.from(-1),Me=W.from(0),Be=W.from(1),Re=W.from(2),Fe=W.from("1000000000000000000"),Oe=W.from("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),De=W.from("-0x8000000000000000000000000000000000000000000000000000000000000000"),Ue=W.from("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),Le="0x0000000000000000000000000000000000000000000000000000000000000000";var qe=Object.freeze({__proto__:null,AddressZero:Ie,EtherSymbol:"Ξ",HashZero:Le,MaxInt256:Ue,MaxUint256:Oe,MinInt256:De,NegativeOne:Ne,One:Be,Two:Re,WeiPerEther:Fe,Zero:Me});class ze extends $t{constructor(t,e,r){const n=(e?"int":"uint")+8*t;super(n,n,r,!1),this.size=t,this.signed=e}defaultValue(){return 0}encode(t,e){let r=W.from(e),n=Oe.mask(8*t.wordSize);if(this.signed){let t=n.mask(8*this.size-1);(r.gt(t)||r.lt(t.add(Be).mul(Ne)))&&this._throwError("value out-of-bounds",e)}else(r.lt(Me)||r.gt(n.mask(8*this.size)))&&this._throwError("value out-of-bounds",e);return r=r.toTwos(8*this.size).mask(8*this.size),this.signed&&(r=r.fromTwos(8*this.size).toTwos(8*t.wordSize)),t.writeValue(r)}decode(t){let e=t.readValue().mask(8*this.size);return this.signed&&(e=e.fromTwos(8*this.size)),t.coerce(this.name,e)}}const Ge=new w("strings/5.8.0");var He,je;function Ke(t,e,r,n,i){if(t===je.BAD_PREFIX||t===je.UNEXPECTED_CONTINUE){let t=0;for(let n=e+1;n<r.length&&r[n]>>6==2;n++)t++;return t}return t===je.OVERRUN?r.length-e-1:0}!function(t){t.current="",t.NFC="NFC",t.NFD="NFD",t.NFKC="NFKC",t.NFKD="NFKD"}(He||(He={})),function(t){t.UNEXPECTED_CONTINUE="unexpected continuation byte",t.BAD_PREFIX="bad codepoint prefix",t.OVERRUN="string overrun",t.MISSING_CONTINUE="missing continuation byte",t.OUT_OF_RANGE="out of UTF-8 range",t.UTF16_SURROGATE="UTF-16 surrogate",t.OVERLONG="overlong representation"}(je||(je={}));const We=Object.freeze({error:function(t,e,r,n,i){return Ge.throwArgumentError(`invalid codepoint at offset ${e}; ${t}`,"bytes",r)},ignore:Ke,replace:function(t,e,r,n,i){return t===je.OVERLONG?(n.push(i),0):(n.push(65533),Ke(t,e,r))}});function Ve(t,e){null==e&&(e=We.error),t=C(t);const r=[];let n=0;for(;n<t.length;){const i=t[n++];if(!(i>>7)){r.push(i);continue}let o=null,s=null;if(192==(224&i))o=1,s=127;else if(224==(240&i))o=2,s=2047;else{if(240!=(248&i)){n+=e(128==(192&i)?je.UNEXPECTED_CONTINUE:je.BAD_PREFIX,n-1,t,r);continue}o=3,s=65535}if(n-1+o>=t.length){n+=e(je.OVERRUN,n-1,t,r);continue}let a=i&(1<<8-o-1)-1;for(let i=0;i<o;i++){let i=t[n];if(128!=(192&i)){n+=e(je.MISSING_CONTINUE,n,t,r),a=null;break}a=a<<6|63&i,n++}null!==a&&(a>1114111?n+=e(je.OUT_OF_RANGE,n-1-o,t,r,a):a>=55296&&a<=57343?n+=e(je.UTF16_SURROGATE,n-1-o,t,r,a):a<=s?n+=e(je.OVERLONG,n-1-o,t,r,a):r.push(a))}return r}function $e(t,e=He.current){e!=He.current&&(Ge.checkNormalize(),t=t.normalize(e));let r=[];for(let e=0;e<t.length;e++){const n=t.charCodeAt(e);if(n<128)r.push(n);else if(n<2048)r.push(n>>6|192),r.push(63&n|128);else if(55296==(64512&n)){e++;const i=t.charCodeAt(e);if(e>=t.length||56320!=(64512&i))throw new Error("invalid utf-8 string");const o=65536+((1023&n)<<10)+(1023&i);r.push(o>>18|240),r.push(o>>12&63|128),r.push(o>>6&63|128),r.push(63&o|128)}else r.push(n>>12|224),r.push(n>>6&63|128),r.push(63&n|128)}return C(r)}function Je(t){const e="0000"+t.toString(16);return"\\u"+e.substring(e.length-4)}function Qe(t){return t.map(t=>t<=65535?String.fromCharCode(t):(t-=65536,String.fromCharCode(55296+(t>>10&1023),56320+(1023&t)))).join("")}function Ye(t,e){return Qe(Ve(t,e))}function Xe(t,e=He.current){return Ve($e(t,e))}function Ze(t,e){e||(e=function(t){return[parseInt(t,16)]});let r=0,n={};return t.split(",").forEach(t=>{let i=t.split(":");r+=parseInt(i[0],16),n[r]=e(i[1])}),n}function tr(t){let e=0;return t.split(",").map(t=>{let r=t.split("-");1===r.length?r[1]="0":""===r[1]&&(r[1]="1");let n=e+parseInt(r[0],16);return e=parseInt(r[1],16),{l:n,h:e}})}function er(t,e){let r=0;for(let n=0;n<e.length;n++){let i=e[n];if(r+=i.l,t>=r&&t<=r+i.h&&(t-r)%(i.d||1)===0){if(i.e&&-1!==i.e.indexOf(t-r))continue;return i}}return null}const rr=tr("221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d"),nr="ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff".split(",").map(t=>parseInt(t,16)),ir=[{h:25,s:32,l:65},{h:30,s:32,e:[23],l:127},{h:54,s:1,e:[48],l:64,d:2},{h:14,s:1,l:57,d:2},{h:44,s:1,l:17,d:2},{h:10,s:1,e:[2,6,8],l:61,d:2},{h:16,s:1,l:68,d:2},{h:84,s:1,e:[18,24,66],l:19,d:2},{h:26,s:32,e:[17],l:435},{h:22,s:1,l:71,d:2},{h:15,s:80,l:40},{h:31,s:32,l:16},{h:32,s:1,l:80,d:2},{h:52,s:1,l:42,d:2},{h:12,s:1,l:55,d:2},{h:40,s:1,e:[38],l:15,d:2},{h:14,s:1,l:48,d:2},{h:37,s:48,l:49},{h:148,s:1,l:6351,d:2},{h:88,s:1,l:160,d:2},{h:15,s:16,l:704},{h:25,s:26,l:854},{h:25,s:32,l:55915},{h:37,s:40,l:1247},{h:25,s:-119711,l:53248},{h:25,s:-119763,l:52},{h:25,s:-119815,l:52},{h:25,s:-119867,e:[1,4,5,7,8,11,12,17],l:52},{h:25,s:-119919,l:52},{h:24,s:-119971,e:[2,7,8,17],l:52},{h:24,s:-120023,e:[2,7,13,15,16,17],l:52},{h:25,s:-120075,l:52},{h:25,s:-120127,l:52},{h:25,s:-120179,l:52},{h:25,s:-120231,l:52},{h:25,s:-120283,l:52},{h:25,s:-120335,l:52},{h:24,s:-119543,e:[17],l:56},{h:24,s:-119601,e:[17],l:58},{h:24,s:-119659,e:[17],l:58},{h:24,s:-119717,e:[17],l:58},{h:24,s:-119775,e:[17],l:58}],or=Ze("b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3"),sr=Ze("179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7"),ar=Ze("df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D",function(t){if(t.length%4!=0)throw new Error("bad data");let e=[];for(let r=0;r<t.length;r+=4)e.push(parseInt(t.substring(r,r+4),16));return e}),lr=tr("80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001");class cr extends xe{constructor(t){super("string",t)}defaultValue(){return""}encode(t,e){return super.encode(t,$e(e))}decode(t){return Ye(super.decode(t))}}class ur extends $t{constructor(t,e){let r=!1;const n=[];t.forEach(t=>{t.dynamic&&(r=!0),n.push(t.type)});super("tuple","tuple("+n.join(",")+")",e,r),this.coders=t}defaultValue(){const t=[];this.coders.forEach(e=>{t.push(e.defaultValue())});const e=this.coders.reduce((t,e)=>{const r=e.localName;return r&&(t[r]||(t[r]=0),t[r]++),t},{});return this.coders.forEach((r,n)=>{let i=r.localName;i&&1===e[i]&&("length"===i&&(i="_length"),null==t[i]&&(t[i]=t[n]))}),Object.freeze(t)}encode(t,e){return Ae(t,this.coders,e)}decode(t){return t.coerce(this.name,ke(t,this.coders))}}const hr=new w(At),dr=new RegExp(/^bytes([0-9]*)$/),fr=new RegExp(/^(u?int)([0-9]*)$/);class pr{constructor(t){dt(this,"coerceFunc",t||null)}_getCoder(t){switch(t.baseType){case"address":return new ye(t.name);case"bool":return new Ce(t.name);case"string":return new cr(t.name);case"bytes":return new _e(t.name);case"array":return new Se(this._getCoder(t.arrayChildren),t.arrayLength,t.name);case"tuple":return new ur((t.components||[]).map(t=>this._getCoder(t)),t.name);case"":return new Pe(t.name)}let e=t.type.match(fr);if(e){let r=parseInt(e[2]||"256");return(0===r||r>256||r%8!=0)&&hr.throwArgumentError("invalid "+e[1]+" bit length","param",t),new ze(r/8,"int"===e[1],t.name)}if(e=t.type.match(dr),e){let r=parseInt(e[1]);return(0===r||r>32)&&hr.throwArgumentError("invalid bytes length","param",t),new Te(r,t.name)}return hr.throwArgumentError("invalid type","type",t.type)}_getWordSize(){return 32}_getReader(t,e){return new Qt(t,this._getWordSize(),this.coerceFunc,e)}_getWriter(){return new Jt(this._getWordSize())}getDefaultValue(t){const e=t.map(t=>this._getCoder(Nt.from(t)));return new ur(e,"_").defaultValue()}encode(t,e){t.length!==e.length&&hr.throwError("types/values length mismatch",w.errors.INVALID_ARGUMENT,{count:{types:t.length,values:e.length},value:{types:t,values:e}});const r=t.map(t=>this._getCoder(Nt.from(t))),n=new ur(r,"_"),i=this._getWriter();return n.encode(i,e),i.data}decode(t,e,r){const n=t.map(t=>this._getCoder(Nt.from(t)));return new ur(n,"_").decode(this._getReader(C(e),r))}}const mr=new pr;function gr(t){return ee($e(t))}const vr="hash/5.8.0";function wr(t){t=atob(t);const e=[];for(let r=0;r<t.length;r++)e.push(t.charCodeAt(r));return C(e)}function yr(t){t=C(t);let e="";for(let r=0;r<t.length;r++)e+=String.fromCharCode(t[r]);return btoa(e)}var br=Object.freeze({__proto__:null,decode:wr,encode:yr});function Er(t,e){null==e&&(e=1);const r=[],n=r.forEach,i=function(t,e){n.call(t,function(t){e>0&&Array.isArray(t)?i(t,e-1):r.push(t)})};return i(t,e),r}function Ar(t){return function(t){let e=0;return()=>t[e++]}(function(t){let e=0;function r(){return t[e++]<<8|t[e++]}let n=r(),i=1,o=[0,1];for(let t=1;t<n;t++)o.push(i+=r());let s=r(),a=e;e+=s;let l=0,c=0;function u(){return 0==l&&(c=c<<8|t[e++],l=8),c>>--l&1}const h=Math.pow(2,31),d=h>>>1,f=d>>1,p=h-1;let m=0;for(let t=0;t<31;t++)m=m<<1|u();let g=[],v=0,w=h;for(;;){let t=Math.floor(((m-v+1)*i-1)/w),e=0,r=n;for(;r-e>1;){let n=e+r>>>1;t<o[n]?r=n:e=n}if(0==e)break;g.push(e);let s=v+Math.floor(w*o[e]/i),a=v+Math.floor(w*o[e+1]/i)-1;for(;0==((s^a)&d);)m=m<<1&p|u(),s=s<<1&p,a=a<<1&p|1;for(;s&~a&f;)m=m&d|m<<1&p>>>1|u(),s=s<<1^d,a=(a^d)<<1|d|1;v=s,w=1+a-s}let y=n-4;return g.map(e=>{switch(e-y){case 3:return y+65792+(t[a++]<<16|t[a++]<<8|t[a++]);case 2:return y+256+(t[a++]<<8|t[a++]);case 1:return y+t[a++];default:return e-1}})}(t))}function kr(t){return 1&t?~t>>1:t>>1}function Sr(t,e){let r=Array(t);for(let n=0,i=-1;n<t;n++)r[n]=i+=1+e();return r}function Cr(t,e){let r=Array(t);for(let n=0,i=0;n<t;n++)r[n]=i+=kr(e());return r}function xr(t,e){let r=Sr(t(),t),n=t(),i=Sr(n,t),o=function(t,e){let r=Array(t);for(let n=0;n<t;n++)r[n]=1+e();return r}(n,t);for(let t=0;t<n;t++)for(let e=0;e<o[t];e++)r.push(i[t]+e);return e?r.map(t=>e[t]):r}function _r(t,e,r){let n=Array(t).fill(void 0).map(()=>[]);for(let i=0;i<e;i++)Cr(t,r).forEach((t,e)=>n[e].push(t));return n}function Tr(t,e){let r=1+e(),n=e(),i=function(t){let e=[];for(;;){let r=t();if(0==r)break;e.push(r)}return e}(e);return Er(_r(i.length,1+t,e).map((t,e)=>{const o=t[0],s=t.slice(1);return Array(i[e]).fill(void 0).map((t,e)=>{let i=e*n;return[o+e*r,s.map(t=>t+i)]})}))}function Pr(t,e){return _r(1+e(),1+t,e).map(t=>[t[0],t.slice(1)])}const Ir=Ar(wr("AEQF2AO2DEsA2wIrAGsBRABxAN8AZwCcAEwAqgA0AGwAUgByADcATAAVAFYAIQAyACEAKAAYAFgAGwAjABQAMAAmADIAFAAfABQAKwATACoADgAbAA8AHQAYABoAGQAxADgALAAoADwAEwA9ABMAGgARAA4ADwAWABMAFgAIAA8AHgQXBYMA5BHJAS8JtAYoAe4AExozi0UAH21tAaMnBT8CrnIyhrMDhRgDygIBUAEHcoFHUPe8AXBjAewCjgDQR8IICIcEcQLwATXCDgzvHwBmBoHNAqsBdBcUAykgDhAMShskMgo8AY8jqAQfAUAfHw8BDw87MioGlCIPBwZCa4ELatMAAMspJVgsDl8AIhckSg8XAHdvTwBcIQEiDT4OPhUqbyECAEoAS34Aej8Ybx83JgT/Xw8gHxZ/7w8RICxPHA9vBw+Pfw8PHwAPFv+fAsAvCc8vEr8ivwD/EQ8Bol8OEBa/A78hrwAPCU8vESNvvwWfHwNfAVoDHr+ZAAED34YaAdJPAK7PLwSEgDLHAGo1Pz8Pvx9fUwMrpb8O/58VTzAPIBoXIyQJNF8hpwIVAT8YGAUADDNBaX3RAMomJCg9EhUeA29MABsZBTMNJipjOhc19gcIDR8bBwQHEggCWi6DIgLuAQYA+BAFCha3A5XiAEsqM7UFFgFLhAMjFTMYE1Klnw74nRVBG/ASCm0BYRN/BrsU3VoWy+S0vV8LQx+vN8gF2AC2AK5EAWwApgYDKmAAroQ0NDQ0AT+OCg7wAAIHRAbpNgVcBV0APTA5BfbPFgMLzcYL/QqqA82eBALKCjQCjqYCht0/k2+OAsXQAoP3ASTKDgDw6ACKAUYCMpIKJpRaAE4A5womABzZvs0REEKiACIQAd5QdAECAj4Ywg/wGqY2AVgAYADYvAoCGAEubA0gvAY2ALAAbpbvqpyEAGAEpgQAJgAG7gAgAEACmghUFwCqAMpAINQIwC4DthRAAPcycKgApoIdABwBfCisABoATwBqASIAvhnSBP8aH/ECeAKXAq40NjgDBTwFYQU6AXs3oABgAD4XNgmcCY1eCl5tIFZeUqGgyoNHABgAEQAaABNwWQAmABMATPMa3T34ADldyprmM1M2XociUQgLzvwAXT3xABgAEQAaABNwIGFAnADD8AAgAD4BBJWzaCcIAIEBFMAWwKoAAdq9BWAF5wLQpALEtQAKUSGkahR4GnJM+gsAwCgeFAiUAECQ0BQuL8AAIAAAADKeIheclvFqQAAETr4iAMxIARMgAMIoHhQIAn0E0pDQFC4HhznoAAAAIAI2C0/4lvFqQAAETgBJJwYCAy4ABgYAFAA8MBKYEH4eRhTkAjYeFcgACAYAeABsOqyQ5gRwDayqugEgaIIAtgoACgDmEABmBAWGme5OBJJA2m4cDeoAmITWAXwrMgOgAGwBCh6CBXYF1Tzg1wKAAFdiuABRAFwAXQBsAG8AdgBrAHYAbwCEAHEwfxQBVE5TEQADVFhTBwBDANILAqcCzgLTApQCrQL6vAAMAL8APLhNBKkE6glGKTAU4Dr4N2EYEwBCkABKk8rHAbYBmwIoAiU4Ajf/Aq4CowCAANIChzgaNBsCsTgeODcFXrgClQKdAqQBiQGYAqsCsjTsNHsfNPA0ixsAWTWiOAMFPDQSNCk2BDZHNow2TTZUNhk28Jk9VzI3QkEoAoICoQKwAqcAQAAxBV4FXbS9BW47YkIXP1ciUqs05DS/FwABUwJW11e6nHuYZmSh/RAYA8oMKvZ8KASoUAJYWAJ6ILAsAZSoqjpgA0ocBIhmDgDWAAawRDQoAAcuAj5iAHABZiR2AIgiHgCaAU68ACxuHAG0ygM8MiZIAlgBdF4GagJqAPZOHAMuBgoATkYAsABiAHgAMLoGDPj0HpKEBAAOJgAuALggTAHWAeAMEDbd20Uege0ADwAWADkAQgA9OHd+2MUQZBBhBgNNDkxxPxUQArEPqwvqERoM1irQ090ANK4H8ANYB/ADWANYB/AH8ANYB/ADWANYA1gDWBwP8B/YxRBkD00EcgWTBZAE2wiIJk4RhgctCNdUEnQjHEwDSgEBIypJITuYMxAlR0wRTQgIATZHbKx9PQNMMbBU+pCnA9AyVDlxBgMedhKlAC8PeCE1uk6DekxxpQpQT7NX9wBFBgASqwAS5gBJDSgAUCwGPQBI4zTYABNGAE2bAE3KAExdGABKaAbgAFBXAFCOAFBJABI2SWdObALDOq0//QomCZhvwHdTBkIQHCemEPgMNAG2ATwN7kvZBPIGPATKH34ZGg/OlZ0Ipi3eDO4m5C6igFsj9iqEBe5L9TzeC05RaQ9aC2YJ5DpkgU8DIgEOIowK3g06CG4Q9ArKbA3mEUYHOgPWSZsApgcCCxIdNhW2JhFirQsKOXgG/Br3C5AmsBMqev0F1BoiBk4BKhsAANAu6IWxWjJcHU9gBgQLJiPIFKlQIQ0mQLh4SRocBxYlqgKSQ3FKiFE3HpQh9zw+DWcuFFF9B/Y8BhlQC4I8n0asRQ8R0z6OPUkiSkwtBDaALDAnjAnQD4YMunxzAVoJIgmyDHITMhEYN8YIOgcaLpclJxYIIkaWYJsE+KAD9BPSAwwFQAlCBxQDthwuEy8VKgUOgSXYAvQ21i60ApBWgQEYBcwPJh/gEFFH4Q7qCJwCZgOEJewALhUiABginAhEZABgj9lTBi7MCMhqbSN1A2gU6GIRdAeSDlgHqBw0FcAc4nDJXgyGCSiksAlcAXYJmgFgBOQICjVcjKEgQmdUi1kYnCBiQUBd/QIyDGYVoES+h3kCjA9sEhwBNgF0BzoNAgJ4Ee4RbBCWCOyGBTW2M/k6JgRQIYQgEgooA1BszwsoJvoM+WoBpBJjAw00PnfvZ6xgtyUX/gcaMsZBYSHyC5NPzgydGsIYQ1QvGeUHwAP0GvQn60FYBgADpAQUOk4z7wS+C2oIjAlAAEoOpBgH2BhrCnKM0QEyjAG4mgNYkoQCcJAGOAcMAGgMiAV65gAeAqgIpAAGANADWAA6Aq4HngAaAIZCAT4DKDABIuYCkAOUCDLMAZYwAfQqBBzEDBYA+DhuSwLDsgKAa2ajBd5ZAo8CSjYBTiYEBk9IUgOwcuIA3ABMBhTgSAEWrEvMG+REAeBwLADIAPwABjYHBkIBzgH0bgC4AWALMgmjtLYBTuoqAIQAFmwB2AKKAN4ANgCA8gFUAE4FWvoF1AJQSgESMhksWGIBvAMgATQBDgB6BsyOpsoIIARuB9QCEBwV4gLvLwe2AgMi4BPOQsYCvd9WADIXUu5eZwqoCqdeaAC0YTQHMnM9UQAPH6k+yAdy/BZIiQImSwBQ5gBQQzSaNTFWSTYBpwGqKQK38AFtqwBI/wK37gK3rQK3sAK6280C0gK33AK3zxAAUEIAUD9SklKDArekArw5AEQAzAHCO147WTteO1k7XjtZO147WTteO1kDmChYI03AVU0oJqkKbV9GYewMpw3VRMk6ShPcYFJgMxPJLbgUwhXPJVcZPhq9JwYl5VUKDwUt1GYxCC00dhe9AEApaYNCY4ceMQpMHOhTklT5LRwAskujM7ANrRsWREEFSHXuYisWDwojAmSCAmJDXE6wXDchAqH4AmiZAmYKAp+FOBwMAmY8AmYnBG8EgAN/FAN+kzkHOXgYOYM6JCQCbB4CMjc4CwJtyAJtr/CLADRoRiwBaADfAOIASwYHmQyOAP8MwwAOtgJ3MAJ2o0ACeUxEAni7Hl3cRa9G9AJ8QAJ6yQJ9CgJ88UgBSH5kJQAsFklZSlwWGErNAtECAtDNSygDiFADh+dExpEzAvKiXQQDA69Lz0wuJgTQTU1NsAKLQAKK2cIcCB5EaAa4Ao44Ao5dQZiCAo7aAo5deVG1UzYLUtVUhgKT/AKTDQDqAB1VH1WwVdEHLBwplocy4nhnRTw6ApegAu+zWCKpAFomApaQApZ9nQCqWa1aCoJOADwClrYClk9cRVzSApnMApllXMtdCBoCnJw5wzqeApwXAp+cAp65iwAeEDIrEAKd8gKekwC2PmE1YfACntQCoG8BqgKeoCACnk+mY8lkKCYsAiewAiZ/AqD8AqBN2AKmMAKlzwKoAAB+AqfzaH1osgAESmodatICrOQCrK8CrWgCrQMCVx4CVd0CseLYAx9PbJgCsr4OArLpGGzhbWRtSWADJc4Ctl08QG6RAylGArhfArlIFgK5K3hwN3DiAr0aAy2zAzISAr6JcgMDM3ICvhtzI3NQAsPMAsMFc4N0TDZGdOEDPKgDPJsDPcACxX0CxkgCxhGKAshqUgLIRQLJUALJLwJkngLd03h6YniveSZL0QMYpGcDAmH1GfSVJXsMXpNevBICz2wCz20wTFTT9BSgAMeuAs90ASrrA04TfkwGAtwoAtuLAtJQA1JdA1NgAQIDVY2AikABzBfuYUZ2AILPg44C2sgC2d+EEYRKpz0DhqYAMANkD4ZyWvoAVgLfZgLeuXR4AuIw7RUB8zEoAfScAfLTiALr9ALpcXoAAur6AurlAPpIAboC7ooC652Wq5cEAu5AA4XhmHpw4XGiAvMEAGoDjheZlAL3FAORbwOSiAL3mQL52gL4Z5odmqy8OJsfA52EAv77ARwAOp8dn7QDBY4DpmsDptoA0sYDBmuhiaIGCgMMSgFgASACtgNGAJwEgLpoBgC8BGzAEowcggCEDC6kdjoAJAM0C5IKRoABZCgiAIzw3AYBLACkfng9ogigkgNmWAN6AEQCvrkEVqTGAwCsBRbAA+4iQkMCHR072jI2PTbUNsk2RjY5NvA23TZKNiU3EDcZN5I+RTxDRTBCJkK5VBYKFhZfwQCWygU3AJBRHpu+OytgNxa61A40GMsYjsn7BVwFXQVcBV0FaAVdBVwFXQVcBV0FXAVdBVwFXUsaCNyKAK4AAQUHBwKU7oICoW1e7jAEzgPxA+YDwgCkBFDAwADABKzAAOxFLhitA1UFTDeyPkM+bj51QkRCuwTQWWQ8X+0AWBYzsACNA8xwzAGm7EZ/QisoCTAbLDs6fnLfb8H2GccsbgFw13M1HAVkBW/Jxsm9CNRO8E8FDD0FBQw9FkcClOYCoMFegpDfADgcMiA2AJQACB8AsigKAIzIEAJKeBIApY5yPZQIAKQiHb4fvj5BKSRPQrZCOz0oXyxgOywfKAnGbgMClQaCAkILXgdeCD9IIGUgQj5fPoY+dT52Ao5CM0dAX9BTVG9SDzFwWTQAbxBzJF/lOEIQQglCCkKJIAls5AcClQICoKPMODEFxhi6KSAbiyfIRrMjtCgdWCAkPlFBIitCsEJRzAbMAV/OEyQzDg0OAQQEJ36i328/Mk9AybDJsQlq3tDRApUKAkFzXf1d/j9uALYP6hCoFgCTGD8kPsFKQiobrm0+zj0KSD8kPnVCRBwMDyJRTHFgMTJa5rwXQiQ2YfI/JD7BMEJEHGINTw4TOFlIRzwJO0icMQpyPyQ+wzJCRBv6DVgnKB01NgUKj2bwYzMqCoBkznBgEF+zYDIocwRIX+NgHj4HICNfh2C4CwdwFWpTG/lgUhYGAwRfv2Ts8mAaXzVgml/XYIJfuWC4HI1gUF9pYJZgMR6ilQHMAOwLAlDRefC0in4AXAEJA6PjCwc0IamOANMMCAECRQDFNRTZBgd+CwQlRA+r6+gLBDEFBnwUBXgKATIArwAGRAAHA3cDdAN2A3kDdwN9A3oDdQN7A30DfAN4A3oDfQAYEAAlAtYASwMAUAFsAHcKAHcAmgB3AHUAdQB2AHVu8UgAygDAAHcAdQB1AHYAdQALCgB3AAsAmgB3AAsCOwB3AAtu8UgAygDAAHgKAJoAdwB3AHUAdQB2AHUAeAB1AHUAdgB1bvFIAMoAwAALCgCaAHcACwB3AAsCOwB3AAtu8UgAygDAAH4ACwGgALcBpwC6AahdAu0COwLtbvFIAMoAwAALCgCaAu0ACwLtAAsCOwLtAAtu8UgAygDAA24ACwNvAAu0VsQAAzsAABCkjUIpAAsAUIusOggWcgMeBxVsGwL67U/2HlzmWOEeOgALASvuAAseAfpKUpnpGgYJDCIZM6YyARUE9ThqAD5iXQgnAJYJPnOzw0ZAEZxEKsIAkA4DhAHnTAIDxxUDK0lxCQlPYgIvIQVYJQBVqE1GakUAKGYiDToSBA1EtAYAXQJYAIF8GgMHRyAAIAjOe9YncekRAA0KACUrjwE7Ayc6AAYWAqaiKG4McEcqANoN3+Mg9TwCBhIkuCny+JwUQ29L008JluRxu3K+oAdqiHOqFH0AG5SUIfUJ5SxCGfxdipRzqTmT4V5Zb+r1Uo4Vm+NqSSEl2mNvR2JhIa8SpYO6ntdwFXHCWTCK8f2+Hxo7uiG3drDycAuKIMP5bhi06ACnqArH1rz4Rqg//lm6SgJGEVbF9xJHISaR6HxqxSnkw6shDnelHKNEfGUXSJRJ1GcsmtJw25xrZMDK9gXSm1/YMkdX4/6NKYOdtk/NQ3/NnDASjTc3fPjIjW/5sVfVObX2oTDWkr1dF9f3kxBsD3/3aQO8hPfRz+e0uEiJqt1161griu7gz8hDDwtpy+F+BWtefnKHZPAxcZoWbnznhJpy0e842j36bcNzGnIEusgGX0a8ZxsnjcSsPDZ09yZ36fCQbriHeQ72JRMILNl6ePPf2HWoVwgWAm1fb3V2sAY0+B6rAXqSwPBgseVmoqsBTSrm91+XasMYYySI8eeRxH3ZvHkMz3BQ5aJ3iUVbYPNM3/7emRtjlsMgv/9VyTsyt/mK+8fgWeT6SoFaclXqn42dAIsvAarF5vNNWHzKSkKQ/8Hfk5ZWK7r9yliOsooyBjRhfkHP4Q2DkWXQi6FG/9r/IwbmkV5T7JSopHKn1pJwm9tb5Ot0oyN1Z2mPpKXHTxx2nlK08fKk1hEYA8WgVVWL5lgx0iTv+KdojJeU23ZDjmiubXOxVXJKKi2Wjuh2HLZOFLiSC7Tls5SMh4f+Pj6xUSrNjFqLGehRNB8lC0QSLNmkJJx/wSG3MnjE9T1CkPwJI0wH2lfzwETIiVqUxg0dfu5q39Gt+hwdcxkhhNvQ4TyrBceof3Mhs/IxFci1HmHr4FMZgXEEczPiGCx0HRwzAqDq2j9AVm1kwN0mRVLWLylgtoPNapF5cY4Y1wJh/e0BBwZj44YgZrDNqvD/9Hv7GFYdUQeDJuQ3EWI4HaKqavU1XjC/n41kT4L79kqGq0kLhdTZvgP3TA3fS0ozVz+5piZsoOtIvBUFoMKbNcmBL6YxxaUAusHB38XrS8dQMnQwJfUUkpRoGr5AUeWicvBTzyK9g77+yCkf5PAysL7r/JjcZgrbvRpMW9iyaxZvKO6ceZN2EwIxKwVFPuvFuiEPGCoagbMo+SpydLrXqBzNCDGFCrO/rkcwa2xhokQZ5CdZ0AsU3JfSqJ6n5I14YA+P/uAgfhPU84Tlw7cEFfp7AEE8ey4sP12PTt4Cods1GRgDOB5xvyiR5m+Bx8O5nBCNctU8BevfV5A08x6RHd5jcwPTMDSZJOedIZ1cGQ704lxbAzqZOP05ZxaOghzSdvFBHYqomATARyAADK4elP8Ly3IrUZKfWh23Xy20uBUmLS4Pfagu9+oyVa2iPgqRP3F2CTUsvJ7+RYnN8fFZbU/HVvxvcFFDKkiTqV5UBZ3Gz54JAKByi9hkKMZJvuGgcSYXFmw08UyoQyVdfTD1/dMkCHXcTGAKeROgArsvmRrQTLUOXioOHGK2QkjHuoYFgXciZoTJd6Fs5q1QX1G+p/e26hYsEf7QZD1nnIyl/SFkNtYYmmBhpBrxl9WbY0YpHWRuw2Ll/tj9mD8P4snVzJl4F9J+1arVeTb9E5r2ILH04qStjxQNwn3m4YNqxmaNbLAqW2TN6LidwuJRqS+NXbtqxoeDXpxeGWmxzSkWxjkyCkX4NQRme6q5SAcC+M7+9ETfA/EwrzQajKakCwYyeunP6ZFlxU2oMEn1Pz31zeStW74G406ZJFCl1wAXIoUKkWotYEpOuXB1uVNxJ63dpJEqfxBeptwIHNrPz8BllZoIcBoXwgfJ+8VAUnVPvRvexnw0Ma/WiGYuJO5y8QTvEYBigFmhUxY5RqzE8OcywN/8m4UYrlaniJO75XQ6KSo9+tWHlu+hMi0UVdiKQp7NelnoZUzNaIyBPVeOwK6GNp+FfHuPOoyhaWuNvTYFkvxscMQWDh+zeFCFkgwbXftiV23ywJ4+uwRqmg9k3KzwIQpzppt8DBBOMbrqwQM5Gb05sEwdKzMiAqOloaA/lr0KA+1pr0/+HiWoiIjHA/wir2nIuS3PeU/ji3O6ZwoxcR1SZ9FhtLC5S0FIzFhbBWcGVP/KpxOPSiUoAdWUpqKH++6Scz507iCcxYI6rdMBICPJZea7OcmeFw5mObJSiqpjg2UoWNIs+cFhyDSt6geV5qgi3FunmwwDoGSMgerFOZGX1m0dMCYo5XOruxO063dwENK9DbnVM9wYFREzh4vyU1WYYJ/LRRp6oxgjqP/X5a8/4Af6p6NWkQferzBmXme0zY/4nwMJm/wd1tIqSwGz+E3xPEAOoZlJit3XddD7/BT1pllzOx+8bmQtANQ/S6fZexc6qi3W+Q2xcmXTUhuS5mpHQRvcxZUN0S5+PL9lXWUAaRZhEH8hTdAcuNMMCuVNKTEGtSUKNi3O6KhSaTzck8csZ2vWRZ+d7mW8c4IKwXIYd25S/zIftPkwPzufjEvOHWVD1m+FjpDVUTV0DGDuHj6QnaEwLu/dEgdLQOg9E1Sro9XHJ8ykLAwtPu+pxqKDuFexqON1sKQm7rwbE1E68UCfA/erovrTCG+DBSNg0l4goDQvZN6uNlbyLpcZAwj2UclycvLpIZMgv4yRlpb3YuMftozorbcGVHt/VeDV3+Fdf1TP0iuaCsPi2G4XeGhsyF1ubVDxkoJhmniQ0/jSg/eYML9KLfnCFgISWkp91eauR3IQvED0nAPXK+6hPCYs+n3+hCZbiskmVMG2da+0EsZPonUeIY8EbfusQXjsK/eFDaosbPjEfQS0RKG7yj5GG69M7MeO1HmiUYocgygJHL6M1qzUDDwUSmr99V7Sdr2F3JjQAJY+F0yH33Iv3+C9M38eML7gTgmNu/r2bUMiPvpYbZ6v1/IaESirBHNa7mPKn4dEmYg7v/+HQgPN1G79jBQ1+soydfDC2r+h2Bl/KIc5KjMK7OH6nb1jLsNf0EHVe2KBiE51ox636uyG6Lho0t3J34L5QY/ilE3mikaF4HKXG1mG1rCevT1Vv6GavltxoQe/bMrpZvRggnBxSEPEeEzkEdOxTnPXHVjUYdw8JYvjB/o7Eegc3Ma+NUxLLnsK0kJlinPmUHzHGtrk5+CAbVzFOBqpyy3QVUnzTDfC/0XD94/okH+OB+i7g9lolhWIjSnfIb+Eq43ZXOWmwvjyV/qqD+t0e+7mTEM74qP/Ozt8nmC7mRpyu63OB4KnUzFc074SqoyPUAgM+/TJGFo6T44EHnQU4X4z6qannVqgw/U7zCpwcmXV1AubIrvOmkKHazJAR55ePjp5tLBsN8vAqs3NAHdcEHOR2xQ0lsNAFzSUuxFQCFYvXLZJdOj9p4fNq6p0HBGUik2YzaI4xySy91KzhQ0+q1hjxvImRwPRf76tChlRkhRCi74NXZ9qUNeIwP+s5p+3m5nwPdNOHgSLD79n7O9m1n1uDHiMntq4nkYwV5OZ1ENbXxFd4PgrlvavZsyUO4MqYlqqn1O8W/I1dEZq5dXhrbETLaZIbC2Kj/Aa/QM+fqUOHdf0tXAQ1huZ3cmWECWSXy/43j35+Mvq9xws7JKseriZ1pEWKc8qlzNrGPUGcVgOa9cPJYIJsGnJTAUsEcDOEVULO5x0rXBijc1lgXEzQQKhROf8zIV82w8eswc78YX11KYLWQRcgHNJElBxfXr72lS2RBSl07qTKorO2uUDZr3sFhYsvnhLZn0A94KRzJ/7DEGIAhW5ZWFpL8gEwu1aLA9MuWZzNwl8Oze9Y+bX+v9gywRVnoB5I/8kXTXU3141yRLYrIOOz6SOnyHNy4SieqzkBXharjfjqq1q6tklaEbA8Qfm2DaIPs7OTq/nvJBjKfO2H9bH2cCMh1+5gspfycu8f/cuuRmtDjyqZ7uCIMyjdV3a+p3fqmXsRx4C8lujezIFHnQiVTXLXuI1XrwN3+siYYj2HHTvESUx8DlOTXpak9qFRK+L3mgJ1WsD7F4cu1aJoFoYQnu+wGDMOjJM3kiBQWHCcvhJ/HRdxodOQp45YZaOTA22Nb4XKCVxqkbwMYFhzYQYIAnCW8FW14uf98jhUG2zrKhQQ0q0CEq0t5nXyvUyvR8DvD69LU+g3i+HFWQMQ8PqZuHD+sNKAV0+M6EJC0szq7rEr7B5bQ8BcNHzvDMc9eqB5ZCQdTf80Obn4uzjwpYU7SISdtV0QGa9D3Wrh2BDQtpBKxaNFV+/Cy2P/Sv+8s7Ud0Fd74X4+o/TNztWgETUapy+majNQ68Lq3ee0ZO48VEbTZYiH1Co4OlfWef82RWeyUXo7woM03PyapGfikTnQinoNq5z5veLpeMV3HCAMTaZmA1oGLAn7XS3XYsz+XK7VMQsc4XKrmDXOLU/pSXVNUq8dIqTba///3x6LiLS6xs1xuCAYSfcQ3+rQgmu7uvf3THKt5Ooo97TqcbRqxx7EASizaQCBQllG/rYxVapMLgtLbZS64w1MDBMXX+PQpBKNwqUKOf2DDRDUXQf9EhOS0Qj4nTmlA8dzSLz/G1d+Ud8MTy/6ghhdiLpeerGY/UlDOfiuqFsMUU5/UYlP+BAmgRLuNpvrUaLlVkrqDievNVEAwF+4CoM1MZTmjxjJMsKJq+u8Zd7tNCUFy6LiyYXRJQ4VyvEQFFaCGKsxIwQkk7EzZ6LTJq2hUuPhvAW+gQnSG6J+MszC+7QCRHcnqDdyNRJ6T9xyS87A6MDutbzKGvGktpbXqtzWtXb9HsfK2cBMomjN9a4y+TaJLnXxAeX/HWzmf4cR4vALt/P4w4qgKY04ml4ZdLOinFYS6cup3G/1ie4+t1eOnpBNlqGqs75ilzkT4+DsZQxNvaSKJ//6zIbbk/M7LOhFmRc/1R+kBtz7JFGdZm/COotIdvQoXpTqP/1uqEUmCb/QWoGLMwO5ANcHzxdY48IGP5+J+zKOTBFZ4Pid+GTM+Wq12MV/H86xEJptBa6T+p3kgpwLedManBHC2GgNrFpoN2xnrMz9WFWX/8/ygSBkavq2Uv7FdCsLEYLu9LLIvAU0bNRDtzYl+/vXmjpIvuJFYjmI0im6QEYqnIeMsNjXG4vIutIGHijeAG/9EDBozKV5cldkHbLxHh25vT+ZEzbhXlqvpzKJwcEgfNwLAKFeo0/pvEE10XDB+EXRTXtSzJozQKFFAJhMxYkVaCW+E9AL7tMeU8acxidHqzb6lX4691UsDpy/LLRmT+epgW56+5Cw8tB4kMUv6s9lh3eRKbyGs+H/4mQMaYzPTf2OOdokEn+zzgvoD3FqNKk8QqGAXVsqcGdXrT62fSPkR2vROFi68A6se86UxRUk4cajfPyCC4G5wDhD+zNq4jodQ4u4n/m37Lr36n4LIAAsVr02dFi9AiwA81MYs2rm4eDlDNmdMRvEKRHfBwW5DdMNp0jPFZMeARqF/wL4XBfd+EMLBfMzpH5GH6NaW+1vrvMdg+VxDzatk3MXgO3ro3P/DpcC6+Mo4MySJhKJhSR01SGGGp5hPWmrrUgrv3lDnP+HhcI3nt3YqBoVAVTBAQT5iuhTg8nvPtd8ZeYj6w1x6RqGUBrSku7+N1+BaasZvjTk64RoIDlL8brpEcJx3OmY7jLoZsswdtmhfC/G21llXhITOwmvRDDeTTPbyASOa16cF5/A1fZAidJpqju3wYAy9avPR1ya6eNp9K8XYrrtuxlqi+bDKwlfrYdR0RRiKRVTLOH85+ZY7XSmzRpfZBJjaTa81VDcJHpZnZnSQLASGYW9l51ZV/h7eVzTi3Hv6hUsgc/51AqJRTkpbFVLXXszoBL8nBX0u/0jBLT8nH+fJePbrwURT58OY+UieRjd1vs04w0VG5VN2U6MoGZkQzKN/ptz0Q366dxoTGmj7i1NQGHi9GgnquXFYdrCfZBmeb7s0T6yrdlZH5cZuwHFyIJ/kAtGsTg0xH5taAAq44BAk1CPk9KVVbqQzrCUiFdF/6gtlPQ8bHHc1G1W92MXGZ5HEHftyLYs8mbD/9xYRUWkHmlM0zC2ilJlnNgV4bfALpQghxOUoZL7VTqtCHIaQSXm+YUMnpkXybnV+A6xlm2CVy8fn0Xlm2XRa0+zzOa21JWWmixfiPMSCZ7qA4rS93VN3pkpF1s5TonQjisHf7iU9ZGvUPOAKZcR1pbeVf/Ul7OhepGCaId9wOtqo7pJ7yLcBZ0pFkOF28y4zEI/kcUNmutBHaQpBdNM8vjCS6HZRokkeo88TBAjGyG7SR+6vUgTcyK9Imalj0kuxz0wmK+byQU11AiJFk/ya5dNduRClcnU64yGu/ieWSeOos1t3ep+RPIWQ2pyTYVbZltTbsb7NiwSi3AV+8KLWk7LxCnfZUetEM8ThnsSoGH38/nyAwFguJp8FjvlHtcWZuU4hPva0rHfr0UhOOJ/F6vS62FW7KzkmRll2HEc7oUq4fyi5T70Vl7YVIfsPHUCdHesf9Lk7WNVWO75JDkYbMI8TOW8JKVtLY9d6UJRITO8oKo0xS+o99Yy04iniGHAaGj88kEWgwv0OrHdY/nr76DOGNS59hXCGXzTKUvDl9iKpLSWYN1lxIeyywdNpTkhay74w2jFT6NS8qkjo5CxA1yfSYwp6AJIZNKIeEK5PJAW7ORgWgwp0VgzYpqovMrWxbu+DGZ6Lhie1RAqpzm8VUzKJOH3mCzWuTOLsN3VT/dv2eeYe9UjbR8YTBsLz7q60VN1sU51k+um1f8JxD5pPhbhSC8rRaB454tmh6YUWrJI3+GWY0qeWioj/tbkYITOkJaeuGt4JrJvHA+l0Gu7kY7XOaa05alMnRWVCXqFgLIwSY4uF59Ue5SU4QKuc/HamDxbr0x6csCetXGoP7Qn1Bk/J9DsynO/UD6iZ1Hyrz+jit0hDCwi/E9OjgKTbB3ZQKQ/0ZOvevfNHG0NK4Aj3Cp7NpRk07RT1i/S0EL93Ag8GRgKI9CfpajKyK6+Jj/PI1KO5/85VAwz2AwzP8FTBb075IxCXv6T9RVvWT2tUaqxDS92zrGUbWzUYk9mSs82pECH+fkqsDt93VW++4YsR/dHCYcQSYTO/KaBMDj9LSD/J/+z20Kq8XvZUAIHtm9hRPP3ItbuAu2Hm5lkPs92pd7kCxgRs0xOVBnZ13ccdA0aunrwv9SdqElJRC3g+oCu+nXyCgmXUs9yMjTMAIHfxZV+aPKcZeUBWt057Xo85Ks1Ir5gzEHCWqZEhrLZMuF11ziGtFQUds/EESajhagzcKsxamcSZxGth4UII+adPhQkUnx2WyN+4YWR+r3f8MnkyGFuR4zjzxJS8WsQYR5PTyRaD9ixa6Mh741nBHbzfjXHskGDq179xaRNrCIB1z1xRfWfjqw2pHc1zk9xlPpL8sQWAIuETZZhbnmL54rceXVNRvUiKrrqIkeogsl0XXb17ylNb0f4GA9Wd44vffEG8FSZGHEL2fbaTGRcSiCeA8PmA/f6Hz8HCS76fXUHwgwkzSwlI71ekZ7Fapmlk/KC+Hs8hUcw3N2LN5LhkVYyizYFl/uPeVP5lsoJHhhfWvvSWruCUW1ZcJOeuTbrDgywJ/qG07gZJplnTvLcYdNaH0KMYOYMGX+rB4NGPFmQsNaIwlWrfCezxre8zXBrsMT+edVLbLqN1BqB76JH4BvZTqUIMfGwPGEn+EnmTV86fPBaYbFL3DFEhjB45CewkXEAtJxk4/Ms2pPXnaRqdky0HOYdcUcE2zcXq4vaIvW2/v0nHFJH2XXe22ueDmq/18XGtELSq85j9X8q0tcNSSKJIX8FTuJF/Pf8j5PhqG2u+osvsLxYrvvfeVJL+4tkcXcr9JV7v0ERmj/X6fM3NC4j6dS1+9Umr2oPavqiAydTZPLMNRGY23LO9zAVDly7jD+70G5TPPLdhRIl4WxcYjLnM+SNcJ26FOrkrISUtPObIz5Zb3AG612krnpy15RMW+1cQjlnWFI6538qky9axd2oJmHIHP08KyP0ubGO+TQNOYuv2uh17yCIvR8VcStw7o1g0NM60sk+8Tq7YfIBJrtp53GkvzXH7OA0p8/n/u1satf/VJhtR1l8Wa6Gmaug7haSpaCaYQax6ta0mkutlb+eAOSG1aobM81D9A4iS1RRlzBBoVX6tU1S6WE2N9ORY6DfeLRC4l9Rvr5h95XDWB2mR1d4WFudpsgVYwiTwT31ljskD8ZyDOlm5DkGh9N/UB/0AI5Xvb8ZBmai2hQ4BWMqFwYnzxwB26YHSOv9WgY3JXnvoN+2R4rqGVh/LLDMtpFP+SpMGJNWvbIl5SOodbCczW2RKleksPoUeGEzrjtKHVdtZA+kfqO+rVx/iclCqwoopepvJpSTDjT+b9GWylGRF8EDbGlw6eUzmJM95Ovoz+kwLX3c2fTjFeYEsE7vUZm3mqdGJuKh2w9/QGSaqRHs99aScGOdDqkFcACoqdbBoQqqjamhH6Q9ng39JCg3lrGJwd50Qk9ovnqBTr8MME7Ps2wiVfygUmPoUBJJfJWX5Nda0nuncbFkA==")),Nr=new Set(xr(Ir)),Mr=new Set(xr(Ir)),Br=function(t){let e=[];for(;;){let r=t();if(0==r)break;e.push(Tr(r,t))}for(;;){let r=t()-1;if(r<0)break;e.push(Pr(r,t))}return function(t){const e={};for(let r=0;r<t.length;r++){const n=t[r];e[n[0]]=n[1]}return e}(Er(e))}(Ir),Rr=function(t){let e=xr(t).sort((t,e)=>t-e);return function r(){let n=[];for(;;){let i=xr(t,e);if(0==i.length)break;n.push({set:new Set(i),node:r()})}n.sort((t,e)=>e.set.size-t.set.size);let i=t(),o=i%3;i=i/3|0;let s=!!(1&i);return i>>=1,{branches:n,valid:o,fe0f:s,save:1==i,check:2==i}}()}(Ir);function Fr(t){return Xe(t)}function Or(t){return t.filter(t=>65039!=t)}function Dr(t){for(let e of t.split(".")){let t=Fr(e);try{for(let e=t.lastIndexOf(95)-1;e>=0;e--)if(95!==t[e])throw new Error("underscore only allowed at start");if(t.length>=4&&t.every(t=>t<128)&&45===t[2]&&45===t[3])throw new Error("invalid label extension")}catch(t){throw new Error(`Invalid label "${e}": ${t.message}`)}}return t}function Ur(t){return Dr(function(t,e){let r=Fr(t).reverse(),n=[];for(;r.length;){let t=Lr(r);if(t){n.push(...e(t));continue}let i=r.pop();if(Nr.has(i)){n.push(i);continue}if(Mr.has(i))continue;let o=Br[i];if(!o)throw new Error(`Disallowed codepoint: 0x${i.toString(16).toUpperCase()}`);n.push(...o)}return Dr((i=String.fromCodePoint(...n),i.normalize("NFC")));var i}(t,Or))}function Lr(t,e){var r;let n,i,o=Rr,s=[],a=t.length;for(;a;){let e=t[--a];if(o=null===(r=o.branches.find(t=>t.set.has(e)))||void 0===r?void 0:r.node,!o)break;if(o.save)i=e;else if(o.check&&e===i)break;s.push(e),o.fe0f&&(s.push(65039),a>0&&65039==t[a-1]&&a--),o.valid&&(n=s.slice(),2==o.valid&&n.splice(1,1),t.length=a)}return n}const qr=new w(vr),zr=new Uint8Array(32);function Gr(t){if(0===t.length)throw new Error("invalid ENS name; empty component");return t}function Hr(t){const e=$e(Ur(t)),r=[];if(0===t.length)return r;let n=0;for(let t=0;t<e.length;t++){46===e[t]&&(r.push(Gr(e.slice(n,t))),n=t+1)}if(n>=e.length)throw new Error("invalid ENS name; empty component");return r.push(Gr(e.slice(n))),r}function jr(t){"string"!=typeof t&&qr.throwArgumentError("invalid ENS name; not a string","name",t);let e=zr;const r=Hr(t);for(;r.length;)e=ee(x([e,ee(r.pop())]));return N(e)}function Kr(t){return N(x(Hr(t).map(t=>{if(t.length>63)throw new Error("invalid DNS encoded entry; length exceeds 63 bytes");const e=new Uint8Array(t.length+1);return e.set(t,1),e[0]=e.length-1,e})))+"00"}zr.fill(0);function Wr(t){return"string"==typeof t&&(t=$e(t)),ee(x([$e("Ethereum Signed Message:\n"),$e(String(t.length)),t]))}var Vr=function(t,e,r,n){return new(r||(r=Promise))(function(i,o){function s(t){try{l(n.next(t))}catch(t){o(t)}}function a(t){try{l(n.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}l((n=n.apply(t,e||[])).next())})};const $r=new w(vr),Jr=new Uint8Array(32);Jr.fill(0);const Qr=W.from(-1),Yr=W.from(0),Xr=W.from(1),Zr=W.from("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");const tn=D(Xr.toHexString(),32),en=D(Yr.toHexString(),32),rn={name:"string",version:"string",chainId:"uint256",verifyingContract:"address",salt:"bytes32"},nn=["name","version","chainId","verifyingContract","salt"];function on(t){return function(e){return"string"!=typeof e&&$r.throwArgumentError(`invalid domain value for ${JSON.stringify(t)}`,`domain.${t}`,e),e}}const sn={name:on("name"),version:on("version"),chainId:function(t){try{return W.from(t).toString()}catch(t){}return $r.throwArgumentError('invalid domain value for "chainId"',"domain.chainId",t)},verifyingContract:function(t){try{return ve(t).toLowerCase()}catch(t){}return $r.throwArgumentError('invalid domain value "verifyingContract"',"domain.verifyingContract",t)},salt:function(t){try{const e=C(t);if(32!==e.length)throw new Error("bad length");return N(e)}catch(t){}return $r.throwArgumentError('invalid domain value "salt"',"domain.salt",t)}};function an(t){{const e=t.match(/^(u?)int(\d*)$/);if(e){const r=""===e[1],n=parseInt(e[2]||"256");(n%8!=0||n>256||e[2]&&e[2]!==String(n))&&$r.throwArgumentError("invalid numeric width","type",t);const i=Zr.mask(r?n-1:n),o=r?i.add(Xr).mul(Qr):Yr;return function(e){const r=W.from(e);return(r.lt(o)||r.gt(i))&&$r.throwArgumentError(`value out-of-bounds for ${t}`,"value",e),D(r.toTwos(256).toHexString(),32)}}}{const e=t.match(/^bytes(\d+)$/);if(e){const r=parseInt(e[1]);return(0===r||r>32||e[1]!==String(r))&&$r.throwArgumentError("invalid bytes width","type",t),function(e){return C(e).length!==r&&$r.throwArgumentError(`invalid length for ${t}`,"value",e),function(t){const e=C(t),r=e.length%32;return r?R([e,Jr.slice(r)]):N(e)}(e)}}}switch(t){case"address":return function(t){return D(ve(t),32)};case"bool":return function(t){return t?tn:en};case"bytes":return function(t){return ee(t)};case"string":return function(t){return gr(t)}}return null}function ln(t,e){return`${t}(${e.map(({name:t,type:e})=>e+" "+t).join(",")})`}class cn{constructor(t){dt(this,"types",Object.freeze(bt(t))),dt(this,"_encoderCache",{}),dt(this,"_types",{});const e={},r={},n={};Object.keys(t).forEach(t=>{e[t]={},r[t]=[],n[t]={}});for(const n in t){const i={};t[n].forEach(o=>{i[o.name]&&$r.throwArgumentError(`duplicate variable name ${JSON.stringify(o.name)} in ${JSON.stringify(n)}`,"types",t),i[o.name]=!0;const s=o.type.match(/^([^\x5b]*)(\x5b|$)/)[1];s===n&&$r.throwArgumentError(`circular type reference to ${JSON.stringify(s)}`,"types",t);an(s)||(r[s]||$r.throwArgumentError(`unknown type ${JSON.stringify(s)}`,"types",t),r[s].push(n),e[n][s]=!0)})}const i=Object.keys(r).filter(t=>0===r[t].length);0===i.length?$r.throwArgumentError("missing primary type","types",t):i.length>1&&$r.throwArgumentError(`ambiguous primary types or unused types: ${i.map(t=>JSON.stringify(t)).join(", ")}`,"types",t),dt(this,"primaryType",i[0]),function i(o,s){s[o]&&$r.throwArgumentError(`circular type reference to ${JSON.stringify(o)}`,"types",t),s[o]=!0,Object.keys(e[o]).forEach(t=>{r[t]&&(i(t,s),Object.keys(s).forEach(e=>{n[e][t]=!0}))}),delete s[o]}(this.primaryType,{});for(const e in n){const r=Object.keys(n[e]);r.sort(),this._types[e]=ln(e,t[e])+r.map(e=>ln(e,t[e])).join("")}}getEncoder(t){let e=this._encoderCache[t];return e||(e=this._encoderCache[t]=this._getEncoder(t)),e}_getEncoder(t){{const e=an(t);if(e)return e}const e=t.match(/^(.*)(\x5b(\d*)\x5d)$/);if(e){const t=e[1],r=this.getEncoder(t),n=parseInt(e[3]);return e=>{n>=0&&e.length!==n&&$r.throwArgumentError("array length mismatch; expected length ${ arrayLength }","value",e);let i=e.map(r);return this._types[t]&&(i=i.map(ee)),ee(R(i))}}const r=this.types[t];if(r){const e=gr(this._types[t]);return t=>{const n=r.map(({name:e,type:r})=>{const n=this.getEncoder(r)(t[e]);return this._types[r]?ee(n):n});return n.unshift(e),R(n)}}return $r.throwArgumentError(`unknown type: ${t}`,"type",t)}encodeType(t){const e=this._types[t];return e||$r.throwArgumentError(`unknown type: ${JSON.stringify(t)}`,"name",t),e}encodeData(t,e){return this.getEncoder(t)(e)}hashStruct(t,e){return ee(this.encodeData(t,e))}encode(t){return this.encodeData(this.primaryType,t)}hash(t){return this.hashStruct(this.primaryType,t)}_visit(t,e,r){if(an(t))return r(t,e);const n=t.match(/^(.*)(\x5b(\d*)\x5d)$/);if(n){const t=n[1],i=parseInt(n[3]);return i>=0&&e.length!==i&&$r.throwArgumentError("array length mismatch; expected length ${ arrayLength }","value",e),e.map(e=>this._visit(t,e,r))}const i=this.types[t];return i?i.reduce((t,{name:n,type:i})=>(t[n]=this._visit(i,e[n],r),t),{}):$r.throwArgumentError(`unknown type: ${t}`,"type",t)}visit(t,e){return this._visit(this.primaryType,t,e)}static from(t){return new cn(t)}static getPrimaryType(t){return cn.from(t).primaryType}static hashStruct(t,e,r){return cn.from(e).hashStruct(t,r)}static hashDomain(t){const e=[];for(const r in t){const n=rn[r];n||$r.throwArgumentError(`invalid typed-data domain key: ${JSON.stringify(r)}`,"domain",t),e.push({name:r,type:n})}return e.sort((t,e)=>nn.indexOf(t.name)-nn.indexOf(e.name)),cn.hashStruct("EIP712Domain",{EIP712Domain:e},t)}static encode(t,e,r){return R(["0x1901",cn.hashDomain(t),cn.from(e).hash(r)])}static hash(t,e,r){return ee(cn.encode(t,e,r))}static resolveNames(t,e,r,n){return Vr(this,void 0,void 0,function*(){t=gt(t);const i={};t.verifyingContract&&!P(t.verifyingContract,20)&&(i[t.verifyingContract]="0x");const o=cn.from(e);o.visit(r,(t,e)=>("address"!==t||P(e,20)||(i[e]="0x"),e));for(const t in i)i[t]=yield n(t);return t.verifyingContract&&i[t.verifyingContract]&&(t.verifyingContract=i[t.verifyingContract]),r=o.visit(r,(t,e)=>"address"===t&&i[e]?i[e]:e),{domain:t,value:r}})}static getPayload(t,e,r){cn.hashDomain(t);const n={},i=[];nn.forEach(e=>{const r=t[e];null!=r&&(n[e]=sn[e](r),i.push({name:e,type:rn[e]}))});const o=cn.from(e),s=gt(e);return s.EIP712Domain?$r.throwArgumentError("types must not contain EIP712Domain type","types.EIP712Domain",e):s.EIP712Domain=i,o.encode(r),{types:s,domain:n,primaryType:o.primaryType,message:o.visit(r,(t,e)=>{if(t.match(/^bytes(\d*)/))return N(C(e));if(t.match(/^u?int/))return W.from(e).toString();switch(t){case"address":return e.toLowerCase();case"bool":return!!e;case"string":return"string"!=typeof e&&$r.throwArgumentError("invalid string","value",e),e}return $r.throwArgumentError("unsupported type","type",t)})}}}const un=new w(At);class hn extends Et{}class dn extends Et{}class fn extends Et{}class pn extends Et{static isIndexed(t){return!(!t||!t._isIndexed)}}const mn={"0x08c379a0":{signature:"Error(string)",name:"Error",inputs:["string"],reason:!0},"0x4e487b71":{signature:"Panic(uint256)",name:"Panic",inputs:["uint256"]}};function gn(t,e){const r=new Error(`deferred error during ABI decoding triggered accessing ${t}`);return r.error=e,r}class vn{constructor(t){let e=[];e="string"==typeof t?JSON.parse(t):t,dt(this,"fragments",e.map(t=>Bt.from(t)).filter(t=>null!=t)),dt(this,"_abiCoder",ft(new.target,"getAbiCoder")()),dt(this,"functions",{}),dt(this,"errors",{}),dt(this,"events",{}),dt(this,"structs",{}),this.fragments.forEach(t=>{let e=null;switch(t.type){case"constructor":return this.deploy?void un.warn("duplicate definition - constructor"):void dt(this,"deploy",t);case"function":e=this.functions;break;case"event":e=this.events;break;case"error":e=this.errors;break;default:return}let r=t.format();e[r]?un.warn("duplicate definition - "+r):e[r]=t}),this.deploy||dt(this,"deploy",Ut.from({payable:!1,type:"constructor"})),dt(this,"_isInterface",!0)}format(t){t||(t=Pt.full),t===Pt.sighash&&un.throwArgumentError("interface does not support formatting sighash","format",t);const e=this.fragments.map(e=>e.format(t));return t===Pt.json?JSON.stringify(e.map(t=>JSON.parse(t))):e}static getAbiCoder(){return mr}static getAddress(t){return ve(t)}static getSighash(t){return B(gr(t.format()),0,4)}static getEventTopic(t){return gr(t.format())}getFunction(t){if(P(t)){for(const e in this.functions)if(t===this.getSighash(e))return this.functions[e];un.throwArgumentError("no matching function","sighash",t)}if(-1===t.indexOf("(")){const e=t.trim(),r=Object.keys(this.functions).filter(t=>t.split("(")[0]===e);return 0===r.length?un.throwArgumentError("no matching function","name",e):r.length>1&&un.throwArgumentError("multiple matching functions","name",e),this.functions[r[0]]}const e=this.functions[Lt.fromString(t).format()];return e||un.throwArgumentError("no matching function","signature",t),e}getEvent(t){if(P(t)){const e=t.toLowerCase();for(const t in this.events)if(e===this.getEventTopic(t))return this.events[t];un.throwArgumentError("no matching event","topichash",e)}if(-1===t.indexOf("(")){const e=t.trim(),r=Object.keys(this.events).filter(t=>t.split("(")[0]===e);return 0===r.length?un.throwArgumentError("no matching event","name",e):r.length>1&&un.throwArgumentError("multiple matching events","name",e),this.events[r[0]]}const e=this.events[Rt.fromString(t).format()];return e||un.throwArgumentError("no matching event","signature",t),e}getError(t){if(P(t)){const e=ft(this.constructor,"getSighash");for(const r in this.errors){if(t===e(this.errors[r]))return this.errors[r]}un.throwArgumentError("no matching error","sighash",t)}if(-1===t.indexOf("(")){const e=t.trim(),r=Object.keys(this.errors).filter(t=>t.split("(")[0]===e);return 0===r.length?un.throwArgumentError("no matching error","name",e):r.length>1&&un.throwArgumentError("multiple matching errors","name",e),this.errors[r[0]]}const e=this.errors[Lt.fromString(t).format()];return e||un.throwArgumentError("no matching error","signature",t),e}getSighash(t){if("string"==typeof t)try{t=this.getFunction(t)}catch(e){try{t=this.getError(t)}catch(t){throw e}}return ft(this.constructor,"getSighash")(t)}getEventTopic(t){return"string"==typeof t&&(t=this.getEvent(t)),ft(this.constructor,"getEventTopic")(t)}_decodeParams(t,e){return this._abiCoder.decode(t,e)}_encodeParams(t,e){return this._abiCoder.encode(t,e)}encodeDeploy(t){return this._encodeParams(this.deploy.inputs,t||[])}decodeErrorResult(t,e){"string"==typeof t&&(t=this.getError(t));const r=C(e);return N(r.slice(0,4))!==this.getSighash(t)&&un.throwArgumentError(`data signature does not match error ${t.name}.`,"data",N(r)),this._decodeParams(t.inputs,r.slice(4))}encodeErrorResult(t,e){return"string"==typeof t&&(t=this.getError(t)),N(x([this.getSighash(t),this._encodeParams(t.inputs,e||[])]))}decodeFunctionData(t,e){"string"==typeof t&&(t=this.getFunction(t));const r=C(e);return N(r.slice(0,4))!==this.getSighash(t)&&un.throwArgumentError(`data signature does not match function ${t.name}.`,"data",N(r)),this._decodeParams(t.inputs,r.slice(4))}encodeFunctionData(t,e){return"string"==typeof t&&(t=this.getFunction(t)),N(x([this.getSighash(t),this._encodeParams(t.inputs,e||[])]))}decodeFunctionResult(t,e){"string"==typeof t&&(t=this.getFunction(t));let r=C(e),n=null,i="",o=null,s=null,a=null;switch(r.length%this._abiCoder._getWordSize()){case 0:try{return this._abiCoder.decode(t.outputs,r)}catch(t){}break;case 4:{const t=N(r.slice(0,4)),e=mn[t];if(e)o=this._abiCoder.decode(e.inputs,r.slice(4)),s=e.name,a=e.signature,e.reason&&(n=o[0]),"Error"===s?i=`; VM Exception while processing transaction: reverted with reason string ${JSON.stringify(o[0])}`:"Panic"===s&&(i=`; VM Exception while processing transaction: reverted with panic code ${o[0]}`);else try{const e=this.getError(t);o=this._abiCoder.decode(e.inputs,r.slice(4)),s=e.name,a=e.format()}catch(t){}break}}return un.throwError("call revert exception"+i,w.errors.CALL_EXCEPTION,{method:t.format(),data:N(e),errorArgs:o,errorName:s,errorSignature:a,reason:n})}encodeFunctionResult(t,e){return"string"==typeof t&&(t=this.getFunction(t)),N(this._abiCoder.encode(t.outputs,e||[]))}encodeFilterTopics(t,e){"string"==typeof t&&(t=this.getEvent(t)),e.length>t.inputs.length&&un.throwError("too many arguments for "+t.format(),w.errors.UNEXPECTED_ARGUMENT,{argument:"values",value:e});let r=[];t.anonymous||r.push(this.getEventTopic(t));const n=(t,e)=>"string"===t.type?gr(e):"bytes"===t.type?ee(N(e)):("bool"===t.type&&"boolean"==typeof e&&(e=e?"0x01":"0x00"),t.type.match(/^u?int/)&&(e=W.from(e).toHexString()),"address"===t.type&&this._abiCoder.encode(["address"],[e]),D(N(e),32));for(e.forEach((e,i)=>{let o=t.inputs[i];o.indexed?null==e?r.push(null):"array"===o.baseType||"tuple"===o.baseType?un.throwArgumentError("filtering with tuples or arrays not supported","contract."+o.name,e):Array.isArray(e)?r.push(e.map(t=>n(o,t))):r.push(n(o,e)):null!=e&&un.throwArgumentError("cannot filter non-indexed parameters; must be null","contract."+o.name,e)});r.length&&null===r[r.length-1];)r.pop();return r}encodeEventLog(t,e){"string"==typeof t&&(t=this.getEvent(t));const r=[],n=[],i=[];return t.anonymous||r.push(this.getEventTopic(t)),e.length!==t.inputs.length&&un.throwArgumentError("event arguments/values mismatch","values",e),t.inputs.forEach((t,o)=>{const s=e[o];if(t.indexed)if("string"===t.type)r.push(gr(s));else if("bytes"===t.type)r.push(ee(s));else{if("tuple"===t.baseType||"array"===t.baseType)throw new Error("not implemented");r.push(this._abiCoder.encode([t.type],[s]))}else n.push(t),i.push(s)}),{data:this._abiCoder.encode(n,i),topics:r}}decodeEventLog(t,e,r){if("string"==typeof t&&(t=this.getEvent(t)),null!=r&&!t.anonymous){let e=this.getEventTopic(t);P(r[0],32)&&r[0].toLowerCase()===e||un.throwError("fragment/topic mismatch",w.errors.INVALID_ARGUMENT,{argument:"topics[0]",expected:e,value:r[0]}),r=r.slice(1)}let n=[],i=[],o=[];t.inputs.forEach((t,e)=>{t.indexed?"string"===t.type||"bytes"===t.type||"tuple"===t.baseType||"array"===t.baseType?(n.push(Nt.fromObject({type:"bytes32",name:t.name})),o.push(!0)):(n.push(t),o.push(!1)):(i.push(t),o.push(!1))});let s=null!=r?this._abiCoder.decode(n,x(r)):null,a=this._abiCoder.decode(i,e,!0),l=[],c=0,u=0;t.inputs.forEach((t,e)=>{if(t.indexed)if(null==s)l[e]=new pn({_isIndexed:!0,hash:null});else if(o[e])l[e]=new pn({_isIndexed:!0,hash:s[u++]});else try{l[e]=s[u++]}catch(t){l[e]=t}else try{l[e]=a[c++]}catch(t){l[e]=t}if(t.name&&null==l[t.name]){const r=l[e];r instanceof Error?Object.defineProperty(l,t.name,{enumerable:!0,get:()=>{throw gn(`property ${JSON.stringify(t.name)}`,r)}}):l[t.name]=r}});for(let t=0;t<l.length;t++){const e=l[t];e instanceof Error&&Object.defineProperty(l,t,{enumerable:!0,get:()=>{throw gn(`index ${t}`,e)}})}return Object.freeze(l)}parseTransaction(t){let e=this.getFunction(t.data.substring(0,10).toLowerCase());return e?new dn({args:this._abiCoder.decode(e.inputs,"0x"+t.data.substring(10)),functionFragment:e,name:e.name,signature:e.format(),sighash:this.getSighash(e),value:W.from(t.value||"0")}):null}parseLog(t){let e=this.getEvent(t.topics[0]);return!e||e.anonymous?null:new hn({eventFragment:e,name:e.name,signature:e.format(),topic:this.getEventTopic(e),args:this.decodeEventLog(e,t.data,t.topics)})}parseError(t){const e=N(t);let r=this.getError(e.substring(0,10).toLowerCase());return r?new fn({args:this._abiCoder.decode(r.inputs,"0x"+e.substring(10)),errorFragment:r,name:r.name,signature:r.format(),sighash:this.getSighash(r)}):null}static isInterface(t){return!(!t||!t._isInterface)}}var wn=function(t,e,r,n){return new(r||(r=Promise))(function(i,o){function s(t){try{l(n.next(t))}catch(t){o(t)}}function a(t){try{l(n.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}l((n=n.apply(t,e||[])).next())})};const yn=new w("abstract-provider/5.8.0");class bn extends Et{static isForkEvent(t){return!(!t||!t._isForkEvent)}}class En{constructor(){yn.checkAbstract(new.target,En),dt(this,"_isProvider",!0)}getFeeData(){return wn(this,void 0,void 0,function*(){const{block:t,gasPrice:e}=yield pt({block:this.getBlock("latest"),gasPrice:this.getGasPrice().catch(t=>null)});let r=null,n=null,i=null;return t&&t.baseFeePerGas&&(r=t.baseFeePerGas,i=W.from("1500000000"),n=t.baseFeePerGas.mul(2).add(i)),{lastBaseFeePerGas:r,maxFeePerGas:n,maxPriorityFeePerGas:i,gasPrice:e}})}addListener(t,e){return this.on(t,e)}removeListener(t,e){return this.off(t,e)}static isProvider(t){return!(!t||!t._isProvider)}}var An=function(t,e,r,n){return new(r||(r=Promise))(function(i,o){function s(t){try{l(n.next(t))}catch(t){o(t)}}function a(t){try{l(n.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}l((n=n.apply(t,e||[])).next())})};const kn=new w("abstract-signer/5.8.0"),Sn=["accessList","ccipReadEnabled","chainId","customData","data","from","gasLimit","gasPrice","maxFeePerGas","maxPriorityFeePerGas","nonce","to","type","value"],Cn=[w.errors.INSUFFICIENT_FUNDS,w.errors.NONCE_EXPIRED,w.errors.REPLACEMENT_UNDERPRICED];class xn{constructor(){kn.checkAbstract(new.target,xn),dt(this,"_isSigner",!0)}getBalance(t){return An(this,void 0,void 0,function*(){return this._checkProvider("getBalance"),yield this.provider.getBalance(this.getAddress(),t)})}getTransactionCount(t){return An(this,void 0,void 0,function*(){return this._checkProvider("getTransactionCount"),yield this.provider.getTransactionCount(this.getAddress(),t)})}estimateGas(t){return An(this,void 0,void 0,function*(){this._checkProvider("estimateGas");const e=yield pt(this.checkTransaction(t));return yield this.provider.estimateGas(e)})}call(t,e){return An(this,void 0,void 0,function*(){this._checkProvider("call");const r=yield pt(this.checkTransaction(t));return yield this.provider.call(r,e)})}sendTransaction(t){return An(this,void 0,void 0,function*(){this._checkProvider("sendTransaction");const e=yield this.populateTransaction(t),r=yield this.signTransaction(e);return yield this.provider.sendTransaction(r)})}getChainId(){return An(this,void 0,void 0,function*(){this._checkProvider("getChainId");return(yield this.provider.getNetwork()).chainId})}getGasPrice(){return An(this,void 0,void 0,function*(){return this._checkProvider("getGasPrice"),yield this.provider.getGasPrice()})}getFeeData(){return An(this,void 0,void 0,function*(){return this._checkProvider("getFeeData"),yield this.provider.getFeeData()})}resolveName(t){return An(this,void 0,void 0,function*(){return this._checkProvider("resolveName"),yield this.provider.resolveName(t)})}checkTransaction(t){for(const e in t)-1===Sn.indexOf(e)&&kn.throwArgumentError("invalid transaction key: "+e,"transaction",t);const e=gt(t);return null==e.from?e.from=this.getAddress():e.from=Promise.all([Promise.resolve(e.from),this.getAddress()]).then(e=>(e[0].toLowerCase()!==e[1].toLowerCase()&&kn.throwArgumentError("from address mismatch","transaction",t),e[0])),e}populateTransaction(t){return An(this,void 0,void 0,function*(){const e=yield pt(this.checkTransaction(t));null!=e.to&&(e.to=Promise.resolve(e.to).then(t=>An(this,void 0,void 0,function*(){if(null==t)return null;const e=yield this.resolveName(t);return null==e&&kn.throwArgumentError("provided ENS name resolves to null","tx.to",t),e})),e.to.catch(t=>{}));const r=null!=e.maxFeePerGas||null!=e.maxPriorityFeePerGas;if(null==e.gasPrice||2!==e.type&&!r?0!==e.type&&1!==e.type||!r||kn.throwArgumentError("pre-eip-1559 transaction do not support maxFeePerGas/maxPriorityFeePerGas","transaction",t):kn.throwArgumentError("eip-1559 transaction do not support gasPrice","transaction",t),2!==e.type&&null!=e.type||null==e.maxFeePerGas||null==e.maxPriorityFeePerGas)if(0===e.type||1===e.type)null==e.gasPrice&&(e.gasPrice=this.getGasPrice());else{const t=yield this.getFeeData();if(null==e.type)if(null!=t.maxFeePerGas&&null!=t.maxPriorityFeePerGas)if(e.type=2,null!=e.gasPrice){const t=e.gasPrice;delete e.gasPrice,e.maxFeePerGas=t,e.maxPriorityFeePerGas=t}else null==e.maxFeePerGas&&(e.maxFeePerGas=t.maxFeePerGas),null==e.maxPriorityFeePerGas&&(e.maxPriorityFeePerGas=t.maxPriorityFeePerGas);else null!=t.gasPrice?(r&&kn.throwError("network does not support EIP-1559",w.errors.UNSUPPORTED_OPERATION,{operation:"populateTransaction"}),null==e.gasPrice&&(e.gasPrice=t.gasPrice),e.type=0):kn.throwError("failed to get consistent fee data",w.errors.UNSUPPORTED_OPERATION,{operation:"signer.getFeeData"});else 2===e.type&&(null==e.maxFeePerGas&&(e.maxFeePerGas=t.maxFeePerGas),null==e.maxPriorityFeePerGas&&(e.maxPriorityFeePerGas=t.maxPriorityFeePerGas))}else e.type=2;return null==e.nonce&&(e.nonce=this.getTransactionCount("pending")),null==e.gasLimit&&(e.gasLimit=this.estimateGas(e).catch(t=>{if(Cn.indexOf(t.code)>=0)throw t;return kn.throwError("cannot estimate gas; transaction may fail or may require manual gas limit",w.errors.UNPREDICTABLE_GAS_LIMIT,{error:t,tx:e})})),null==e.chainId?e.chainId=this.getChainId():e.chainId=Promise.all([Promise.resolve(e.chainId),this.getChainId()]).then(e=>(0!==e[1]&&e[0]!==e[1]&&kn.throwArgumentError("chainId address mismatch","transaction",t),e[0])),yield pt(e)})}_checkProvider(t){this.provider||kn.throwError("missing provider",w.errors.UNSUPPORTED_OPERATION,{operation:t||"_checkProvider"})}static isSigner(t){return!(!t||!t._isSigner)}}class _n extends xn{constructor(t,e){super(),dt(this,"address",t),dt(this,"provider",e||null)}getAddress(){return Promise.resolve(this.address)}_fail(t,e){return Promise.resolve().then(()=>{kn.throwError(t,w.errors.UNSUPPORTED_OPERATION,{operation:e})})}signMessage(t){return this._fail("VoidSigner cannot sign messages","signMessage")}signTransaction(t){return this._fail("VoidSigner cannot sign transactions","signTransaction")}_signTypedData(t,e,r){return this._fail("VoidSigner cannot sign typed data","signTypedData")}connect(t){return new _n(this.address,t)}}var Tn,Pn,In={},Nn={};function Mn(){if(Pn)return Tn;function t(t,e){if(!t)throw new Error(e||"Assertion failed")}return Pn=1,Tn=t,t.equal=function(t,e,r){if(t!=e)throw new Error(r||"Assertion failed: "+t+" != "+e)},Tn}var Bn,Rn,Fn,On={exports:{}},Dn={exports:{}};function Un(){if(Rn)return On.exports;Rn=1;try{var t=require("util");if("function"!=typeof t.inherits)throw"";On.exports=t.inherits}catch(t){On.exports=(Bn||(Bn=1,"function"==typeof Object.create?Dn.exports=function(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:Dn.exports=function(t,e){if(e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}}),Dn.exports)}return On.exports}function Ln(){if(Fn)return Nn;Fn=1;var t=Mn(),e=Un();function r(t,e){return 55296==(64512&t.charCodeAt(e))&&(!(e<0||e+1>=t.length)&&56320==(64512&t.charCodeAt(e+1)))}function n(t){return(t>>>24|t>>>8&65280|t<<8&16711680|(255&t)<<24)>>>0}function i(t){return 1===t.length?"0"+t:t}function o(t){return 7===t.length?"0"+t:6===t.length?"00"+t:5===t.length?"000"+t:4===t.length?"0000"+t:3===t.length?"00000"+t:2===t.length?"000000"+t:1===t.length?"0000000"+t:t}return Nn.inherits=e,Nn.toArray=function(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var n=[];if("string"==typeof t)if(e){if("hex"===e)for((t=t.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(t="0"+t),o=0;o<t.length;o+=2)n.push(parseInt(t[o]+t[o+1],16))}else for(var i=0,o=0;o<t.length;o++){var s=t.charCodeAt(o);s<128?n[i++]=s:s<2048?(n[i++]=s>>6|192,n[i++]=63&s|128):r(t,o)?(s=65536+((1023&s)<<10)+(1023&t.charCodeAt(++o)),n[i++]=s>>18|240,n[i++]=s>>12&63|128,n[i++]=s>>6&63|128,n[i++]=63&s|128):(n[i++]=s>>12|224,n[i++]=s>>6&63|128,n[i++]=63&s|128)}else for(o=0;o<t.length;o++)n[o]=0|t[o];return n},Nn.toHex=function(t){for(var e="",r=0;r<t.length;r++)e+=i(t[r].toString(16));return e},Nn.htonl=n,Nn.toHex32=function(t,e){for(var r="",i=0;i<t.length;i++){var s=t[i];"little"===e&&(s=n(s)),r+=o(s.toString(16))}return r},Nn.zero2=i,Nn.zero8=o,Nn.join32=function(e,r,n,i){var o=n-r;t(o%4==0);for(var s=new Array(o/4),a=0,l=r;a<s.length;a++,l+=4){var c;c="big"===i?e[l]<<24|e[l+1]<<16|e[l+2]<<8|e[l+3]:e[l+3]<<24|e[l+2]<<16|e[l+1]<<8|e[l],s[a]=c>>>0}return s},Nn.split32=function(t,e){for(var r=new Array(4*t.length),n=0,i=0;n<t.length;n++,i+=4){var o=t[n];"big"===e?(r[i]=o>>>24,r[i+1]=o>>>16&255,r[i+2]=o>>>8&255,r[i+3]=255&o):(r[i+3]=o>>>24,r[i+2]=o>>>16&255,r[i+1]=o>>>8&255,r[i]=255&o)}return r},Nn.rotr32=function(t,e){return t>>>e|t<<32-e},Nn.rotl32=function(t,e){return t<<e|t>>>32-e},Nn.sum32=function(t,e){return t+e>>>0},Nn.sum32_3=function(t,e,r){return t+e+r>>>0},Nn.sum32_4=function(t,e,r,n){return t+e+r+n>>>0},Nn.sum32_5=function(t,e,r,n,i){return t+e+r+n+i>>>0},Nn.sum64=function(t,e,r,n){var i=t[e],o=n+t[e+1]>>>0,s=(o<n?1:0)+r+i;t[e]=s>>>0,t[e+1]=o},Nn.sum64_hi=function(t,e,r,n){return(e+n>>>0<e?1:0)+t+r>>>0},Nn.sum64_lo=function(t,e,r,n){return e+n>>>0},Nn.sum64_4_hi=function(t,e,r,n,i,o,s,a){var l=0,c=e;return l+=(c=c+n>>>0)<e?1:0,l+=(c=c+o>>>0)<o?1:0,t+r+i+s+(l+=(c=c+a>>>0)<a?1:0)>>>0},Nn.sum64_4_lo=function(t,e,r,n,i,o,s,a){return e+n+o+a>>>0},Nn.sum64_5_hi=function(t,e,r,n,i,o,s,a,l,c){var u=0,h=e;return u+=(h=h+n>>>0)<e?1:0,u+=(h=h+o>>>0)<o?1:0,u+=(h=h+a>>>0)<a?1:0,t+r+i+s+l+(u+=(h=h+c>>>0)<c?1:0)>>>0},Nn.sum64_5_lo=function(t,e,r,n,i,o,s,a,l,c){return e+n+o+a+c>>>0},Nn.rotr64_hi=function(t,e,r){return(e<<32-r|t>>>r)>>>0},Nn.rotr64_lo=function(t,e,r){return(t<<32-r|e>>>r)>>>0},Nn.shr64_hi=function(t,e,r){return t>>>r},Nn.shr64_lo=function(t,e,r){return(t<<32-r|e>>>r)>>>0},Nn}var qn,zn={};function Gn(){if(qn)return zn;qn=1;var t=Ln(),e=Mn();function r(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}return zn.BlockHash=r,r.prototype.update=function(e,r){if(e=t.toArray(e,r),this.pending?this.pending=this.pending.concat(e):this.pending=e,this.pendingTotal+=e.length,this.pending.length>=this._delta8){var n=(e=this.pending).length%this._delta8;this.pending=e.slice(e.length-n,e.length),0===this.pending.length&&(this.pending=null),e=t.join32(e,0,e.length-n,this.endian);for(var i=0;i<e.length;i+=this._delta32)this._update(e,i,i+this._delta32)}return this},r.prototype.digest=function(t){return this.update(this._pad()),e(null===this.pending),this._digest(t)},r.prototype._pad=function(){var t=this.pendingTotal,e=this._delta8,r=e-(t+this.padLength)%e,n=new Array(r+this.padLength);n[0]=128;for(var i=1;i<r;i++)n[i]=0;if(t<<=3,"big"===this.endian){for(var o=8;o<this.padLength;o++)n[i++]=0;n[i++]=0,n[i++]=0,n[i++]=0,n[i++]=0,n[i++]=t>>>24&255,n[i++]=t>>>16&255,n[i++]=t>>>8&255,n[i++]=255&t}else for(n[i++]=255&t,n[i++]=t>>>8&255,n[i++]=t>>>16&255,n[i++]=t>>>24&255,n[i++]=0,n[i++]=0,n[i++]=0,n[i++]=0,o=8;o<this.padLength;o++)n[i++]=0;return n},zn}var Hn,jn,Kn,Wn,Vn,$n,Jn,Qn,Yn,Xn,Zn,ti,ei={},ri={};function ni(){if(Hn)return ri;Hn=1;var t=Ln().rotr32;function e(t,e,r){return t&e^~t&r}function r(t,e,r){return t&e^t&r^e&r}function n(t,e,r){return t^e^r}return ri.ft_1=function(t,i,o,s){return 0===t?e(i,o,s):1===t||3===t?n(i,o,s):2===t?r(i,o,s):void 0},ri.ch32=e,ri.maj32=r,ri.p32=n,ri.s0_256=function(e){return t(e,2)^t(e,13)^t(e,22)},ri.s1_256=function(e){return t(e,6)^t(e,11)^t(e,25)},ri.g0_256=function(e){return t(e,7)^t(e,18)^e>>>3},ri.g1_256=function(e){return t(e,17)^t(e,19)^e>>>10},ri}function ii(){if(Vn)return Wn;Vn=1;var t=Ln(),e=Gn(),r=ni(),n=Mn(),i=t.sum32,o=t.sum32_4,s=t.sum32_5,a=r.ch32,l=r.maj32,c=r.s0_256,u=r.s1_256,h=r.g0_256,d=r.g1_256,f=e.BlockHash,p=[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];function m(){if(!(this instanceof m))return new m;f.call(this),this.h=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],this.k=p,this.W=new Array(64)}return t.inherits(m,f),Wn=m,m.blockSize=512,m.outSize=256,m.hmacStrength=192,m.padLength=64,m.prototype._update=function(t,e){for(var r=this.W,f=0;f<16;f++)r[f]=t[e+f];for(;f<r.length;f++)r[f]=o(d(r[f-2]),r[f-7],h(r[f-15]),r[f-16]);var p=this.h[0],m=this.h[1],g=this.h[2],v=this.h[3],w=this.h[4],y=this.h[5],b=this.h[6],E=this.h[7];for(n(this.k.length===r.length),f=0;f<r.length;f++){var A=s(E,u(w),a(w,y,b),this.k[f],r[f]),k=i(c(p),l(p,m,g));E=b,b=y,y=w,w=i(v,A),v=g,g=m,m=p,p=i(A,k)}this.h[0]=i(this.h[0],p),this.h[1]=i(this.h[1],m),this.h[2]=i(this.h[2],g),this.h[3]=i(this.h[3],v),this.h[4]=i(this.h[4],w),this.h[5]=i(this.h[5],y),this.h[6]=i(this.h[6],b),this.h[7]=i(this.h[7],E)},m.prototype._digest=function(e){return"hex"===e?t.toHex32(this.h,"big"):t.split32(this.h,"big")},Wn}function oi(){if(Yn)return Qn;Yn=1;var t=Ln(),e=Gn(),r=Mn(),n=t.rotr64_hi,i=t.rotr64_lo,o=t.shr64_hi,s=t.shr64_lo,a=t.sum64,l=t.sum64_hi,c=t.sum64_lo,u=t.sum64_4_hi,h=t.sum64_4_lo,d=t.sum64_5_hi,f=t.sum64_5_lo,p=e.BlockHash,m=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function g(){if(!(this instanceof g))return new g;p.call(this),this.h=[1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209],this.k=m,this.W=new Array(160)}function v(t,e,r,n,i){var o=t&r^~t&i;return o<0&&(o+=4294967296),o}function w(t,e,r,n,i,o){var s=e&n^~e&o;return s<0&&(s+=4294967296),s}function y(t,e,r,n,i){var o=t&r^t&i^r&i;return o<0&&(o+=4294967296),o}function b(t,e,r,n,i,o){var s=e&n^e&o^n&o;return s<0&&(s+=4294967296),s}function E(t,e){var r=n(t,e,28)^n(e,t,2)^n(e,t,7);return r<0&&(r+=4294967296),r}function A(t,e){var r=i(t,e,28)^i(e,t,2)^i(e,t,7);return r<0&&(r+=4294967296),r}function k(t,e){var r=n(t,e,14)^n(t,e,18)^n(e,t,9);return r<0&&(r+=4294967296),r}function S(t,e){var r=i(t,e,14)^i(t,e,18)^i(e,t,9);return r<0&&(r+=4294967296),r}function C(t,e){var r=n(t,e,1)^n(t,e,8)^o(t,e,7);return r<0&&(r+=4294967296),r}function x(t,e){var r=i(t,e,1)^i(t,e,8)^s(t,e,7);return r<0&&(r+=4294967296),r}function _(t,e){var r=n(t,e,19)^n(e,t,29)^o(t,e,6);return r<0&&(r+=4294967296),r}function T(t,e){var r=i(t,e,19)^i(e,t,29)^s(t,e,6);return r<0&&(r+=4294967296),r}return t.inherits(g,p),Qn=g,g.blockSize=1024,g.outSize=512,g.hmacStrength=192,g.padLength=128,g.prototype._prepareBlock=function(t,e){for(var r=this.W,n=0;n<32;n++)r[n]=t[e+n];for(;n<r.length;n+=2){var i=_(r[n-4],r[n-3]),o=T(r[n-4],r[n-3]),s=r[n-14],a=r[n-13],l=C(r[n-30],r[n-29]),c=x(r[n-30],r[n-29]),d=r[n-32],f=r[n-31];r[n]=u(i,o,s,a,l,c,d,f),r[n+1]=h(i,o,s,a,l,c,d,f)}},g.prototype._update=function(t,e){this._prepareBlock(t,e);var n=this.W,i=this.h[0],o=this.h[1],s=this.h[2],u=this.h[3],h=this.h[4],p=this.h[5],m=this.h[6],g=this.h[7],C=this.h[8],x=this.h[9],_=this.h[10],T=this.h[11],P=this.h[12],I=this.h[13],N=this.h[14],M=this.h[15];r(this.k.length===n.length);for(var B=0;B<n.length;B+=2){var R=N,F=M,O=k(C,x),D=S(C,x),U=v(C,x,_,T,P),L=w(C,x,_,T,P,I),q=this.k[B],z=this.k[B+1],G=n[B],H=n[B+1],j=d(R,F,O,D,U,L,q,z,G,H),K=f(R,F,O,D,U,L,q,z,G,H);R=E(i,o),F=A(i,o),O=y(i,o,s,u,h),D=b(i,o,s,u,h,p);var W=l(R,F,O,D),V=c(R,F,O,D);N=P,M=I,P=_,I=T,_=C,T=x,C=l(m,g,j,K),x=c(g,g,j,K),m=h,g=p,h=s,p=u,s=i,u=o,i=l(j,K,W,V),o=c(j,K,W,V)}a(this.h,0,i,o),a(this.h,2,s,u),a(this.h,4,h,p),a(this.h,6,m,g),a(this.h,8,C,x),a(this.h,10,_,T),a(this.h,12,P,I),a(this.h,14,N,M)},g.prototype._digest=function(e){return"hex"===e?t.toHex32(this.h,"big"):t.split32(this.h,"big")},Qn}function si(){return ti||(ti=1,ei.sha1=function(){if(Kn)return jn;Kn=1;var t=Ln(),e=Gn(),r=ni(),n=t.rotl32,i=t.sum32,o=t.sum32_5,s=r.ft_1,a=e.BlockHash,l=[1518500249,1859775393,2400959708,3395469782];function c(){if(!(this instanceof c))return new c;a.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}return t.inherits(c,a),jn=c,c.blockSize=512,c.outSize=160,c.hmacStrength=80,c.padLength=64,c.prototype._update=function(t,e){for(var r=this.W,a=0;a<16;a++)r[a]=t[e+a];for(;a<r.length;a++)r[a]=n(r[a-3]^r[a-8]^r[a-14]^r[a-16],1);var c=this.h[0],u=this.h[1],h=this.h[2],d=this.h[3],f=this.h[4];for(a=0;a<r.length;a++){var p=~~(a/20),m=o(n(c,5),s(p,u,h,d),f,r[a],l[p]);f=d,d=h,h=n(u,30),u=c,c=m}this.h[0]=i(this.h[0],c),this.h[1]=i(this.h[1],u),this.h[2]=i(this.h[2],h),this.h[3]=i(this.h[3],d),this.h[4]=i(this.h[4],f)},c.prototype._digest=function(e){return"hex"===e?t.toHex32(this.h,"big"):t.split32(this.h,"big")},jn}(),ei.sha224=function(){if(Jn)return $n;Jn=1;var t=Ln(),e=ii();function r(){if(!(this instanceof r))return new r;e.call(this),this.h=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]}return t.inherits(r,e),$n=r,r.blockSize=512,r.outSize=224,r.hmacStrength=192,r.padLength=64,r.prototype._digest=function(e){return"hex"===e?t.toHex32(this.h.slice(0,7),"big"):t.split32(this.h.slice(0,7),"big")},$n}(),ei.sha256=ii(),ei.sha384=function(){if(Zn)return Xn;Zn=1;var t=Ln(),e=oi();function r(){if(!(this instanceof r))return new r;e.call(this),this.h=[3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]}return t.inherits(r,e),Xn=r,r.blockSize=1024,r.outSize=384,r.hmacStrength=192,r.padLength=128,r.prototype._digest=function(e){return"hex"===e?t.toHex32(this.h.slice(0,12),"big"):t.split32(this.h.slice(0,12),"big")},Xn}(),ei.sha512=oi()),ei}var ai,li,ci,ui,hi={};var di=(ui||(ui=1,function(t){var e=t;e.utils=Ln(),e.common=Gn(),e.sha=si(),e.ripemd=function(){if(ai)return hi;ai=1;var t=Ln(),e=Gn(),r=t.rotl32,n=t.sum32,i=t.sum32_3,o=t.sum32_4,s=e.BlockHash;function a(){if(!(this instanceof a))return new a;s.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.endian="little"}function l(t,e,r,n){return t<=15?e^r^n:t<=31?e&r|~e&n:t<=47?(e|~r)^n:t<=63?e&n|r&~n:e^(r|~n)}function c(t){return t<=15?0:t<=31?1518500249:t<=47?1859775393:t<=63?2400959708:2840853838}function u(t){return t<=15?1352829926:t<=31?1548603684:t<=47?1836072691:t<=63?2053994217:0}t.inherits(a,s),hi.ripemd160=a,a.blockSize=512,a.outSize=160,a.hmacStrength=192,a.padLength=64,a.prototype._update=function(t,e){for(var s=this.h[0],a=this.h[1],m=this.h[2],g=this.h[3],v=this.h[4],w=s,y=a,b=m,E=g,A=v,k=0;k<80;k++){var S=n(r(o(s,l(k,a,m,g),t[h[k]+e],c(k)),f[k]),v);s=v,v=g,g=r(m,10),m=a,a=S,S=n(r(o(w,l(79-k,y,b,E),t[d[k]+e],u(k)),p[k]),A),w=A,A=E,E=r(b,10),b=y,y=S}S=i(this.h[1],m,E),this.h[1]=i(this.h[2],g,A),this.h[2]=i(this.h[3],v,w),this.h[3]=i(this.h[4],s,y),this.h[4]=i(this.h[0],a,b),this.h[0]=S},a.prototype._digest=function(e){return"hex"===e?t.toHex32(this.h,"little"):t.split32(this.h,"little")};var h=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],d=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],f=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],p=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11];return hi}(),e.hmac=function(){if(ci)return li;ci=1;var t=Ln(),e=Mn();function r(e,n,i){if(!(this instanceof r))return new r(e,n,i);this.Hash=e,this.blockSize=e.blockSize/8,this.outSize=e.outSize/8,this.inner=null,this.outer=null,this._init(t.toArray(n,i))}return li=r,r.prototype._init=function(t){t.length>this.blockSize&&(t=(new this.Hash).update(t).digest()),e(t.length<=this.blockSize);for(var r=t.length;r<this.blockSize;r++)t.push(0);for(r=0;r<t.length;r++)t[r]^=54;for(this.inner=(new this.Hash).update(t),r=0;r<t.length;r++)t[r]^=106;this.outer=(new this.Hash).update(t)},r.prototype.update=function(t,e){return this.inner.update(t,e),this},r.prototype.digest=function(t){return this.outer.update(this.inner.digest()),this.outer.digest(t)},li}(),e.sha1=e.sha.sha1,e.sha256=e.sha.sha256,e.sha224=e.sha.sha224,e.sha384=e.sha.sha384,e.sha512=e.sha.sha512,e.ripemd160=e.ripemd.ripemd160}(In)),In),fi=n(di);function pi(t,e,r){return r={path:e,exports:{},require:function(t,e){return function(){throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}(null==e&&r.path)}},t(r,r.exports),r.exports}var mi=gi;function gi(t,e){if(!t)throw new Error(e||"Assertion failed")}gi.equal=function(t,e,r){if(t!=e)throw new Error(r||"Assertion failed: "+t+" != "+e)};var vi=pi(function(t,e){var r=e;function n(t){return 1===t.length?"0"+t:t}function i(t){for(var e="",r=0;r<t.length;r++)e+=n(t[r].toString(16));return e}r.toArray=function(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var r=[];if("string"!=typeof t){for(var n=0;n<t.length;n++)r[n]=0|t[n];return r}if("hex"===e){(t=t.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(t="0"+t);for(n=0;n<t.length;n+=2)r.push(parseInt(t[n]+t[n+1],16))}else for(n=0;n<t.length;n++){var i=t.charCodeAt(n),o=i>>8,s=255&i;o?r.push(o,s):r.push(s)}return r},r.zero2=n,r.toHex=i,r.encode=function(t,e){return"hex"===e?i(t):t}}),wi=pi(function(t,e){var r=e;r.assert=mi,r.toArray=vi.toArray,r.zero2=vi.zero2,r.toHex=vi.toHex,r.encode=vi.encode,r.getNAF=function(t,e,r){var n,i=new Array(Math.max(t.bitLength(),r)+1);for(n=0;n<i.length;n+=1)i[n]=0;var o=1<<e+1,s=t.clone();for(n=0;n<i.length;n++){var a,l=s.andln(o-1);s.isOdd()?(a=l>(o>>1)-1?(o>>1)-l:l,s.isubn(a)):a=0,i[n]=a,s.iushrn(1)}return i},r.getJSF=function(t,e){var r=[[],[]];t=t.clone(),e=e.clone();for(var n,i=0,o=0;t.cmpn(-i)>0||e.cmpn(-o)>0;){var s,a,l=t.andln(3)+i&3,c=e.andln(3)+o&3;3===l&&(l=-1),3===c&&(c=-1),s=1&l?3!==(n=t.andln(7)+i&7)&&5!==n||2!==c?l:-l:0,r[0].push(s),a=1&c?3!==(n=e.andln(7)+o&7)&&5!==n||2!==l?c:-c:0,r[1].push(a),2*i===s+1&&(i=1-i),2*o===a+1&&(o=1-o),t.iushrn(1),e.iushrn(1)}return r},r.cachedProperty=function(t,e,r){var n="_"+e;t.prototype[e]=function(){return void 0!==this[n]?this[n]:this[n]=r.call(this)}},r.parseBytes=function(t){return"string"==typeof t?r.toArray(t,"hex"):t},r.intFromLE=function(t){return new l(t,"hex","le")}}),yi=wi.getNAF,bi=wi.getJSF,Ei=wi.assert;function Ai(t,e){this.type=t,this.p=new l(e.p,16),this.red=e.prime?l.red(e.prime):l.mont(this.p),this.zero=new l(0).toRed(this.red),this.one=new l(1).toRed(this.red),this.two=new l(2).toRed(this.red),this.n=e.n&&new l(e.n,16),this.g=e.g&&this.pointFromJSON(e.g,e.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var r=this.n&&this.p.div(this.n);!r||r.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}var ki=Ai;function Si(t,e){this.curve=t,this.type=e,this.precomputed=null}Ai.prototype.point=function(){throw new Error("Not implemented")},Ai.prototype.validate=function(){throw new Error("Not implemented")},Ai.prototype._fixedNafMul=function(t,e){Ei(t.precomputed);var r=t._getDoubles(),n=yi(e,1,this._bitLength),i=(1<<r.step+1)-(r.step%2==0?2:1);i/=3;var o,s,a=[];for(o=0;o<n.length;o+=r.step){s=0;for(var l=o+r.step-1;l>=o;l--)s=(s<<1)+n[l];a.push(s)}for(var c=this.jpoint(null,null,null),u=this.jpoint(null,null,null),h=i;h>0;h--){for(o=0;o<a.length;o++)(s=a[o])===h?u=u.mixedAdd(r.points[o]):s===-h&&(u=u.mixedAdd(r.points[o].neg()));c=c.add(u)}return c.toP()},Ai.prototype._wnafMul=function(t,e){var r=4,n=t._getNAFPoints(r);r=n.wnd;for(var i=n.points,o=yi(e,r,this._bitLength),s=this.jpoint(null,null,null),a=o.length-1;a>=0;a--){for(var l=0;a>=0&&0===o[a];a--)l++;if(a>=0&&l++,s=s.dblp(l),a<0)break;var c=o[a];Ei(0!==c),s="affine"===t.type?c>0?s.mixedAdd(i[c-1>>1]):s.mixedAdd(i[-c-1>>1].neg()):c>0?s.add(i[c-1>>1]):s.add(i[-c-1>>1].neg())}return"affine"===t.type?s.toP():s},Ai.prototype._wnafMulAdd=function(t,e,r,n,i){var o,s,a,l=this._wnafT1,c=this._wnafT2,u=this._wnafT3,h=0;for(o=0;o<n;o++){var d=(a=e[o])._getNAFPoints(t);l[o]=d.wnd,c[o]=d.points}for(o=n-1;o>=1;o-=2){var f=o-1,p=o;if(1===l[f]&&1===l[p]){var m=[e[f],null,null,e[p]];0===e[f].y.cmp(e[p].y)?(m[1]=e[f].add(e[p]),m[2]=e[f].toJ().mixedAdd(e[p].neg())):0===e[f].y.cmp(e[p].y.redNeg())?(m[1]=e[f].toJ().mixedAdd(e[p]),m[2]=e[f].add(e[p].neg())):(m[1]=e[f].toJ().mixedAdd(e[p]),m[2]=e[f].toJ().mixedAdd(e[p].neg()));var g=[-3,-1,-5,-7,0,7,5,1,3],v=bi(r[f],r[p]);for(h=Math.max(v[0].length,h),u[f]=new Array(h),u[p]=new Array(h),s=0;s<h;s++){var w=0|v[0][s],y=0|v[1][s];u[f][s]=g[3*(w+1)+(y+1)],u[p][s]=0,c[f]=m}}else u[f]=yi(r[f],l[f],this._bitLength),u[p]=yi(r[p],l[p],this._bitLength),h=Math.max(u[f].length,h),h=Math.max(u[p].length,h)}var b=this.jpoint(null,null,null),E=this._wnafT4;for(o=h;o>=0;o--){for(var A=0;o>=0;){var k=!0;for(s=0;s<n;s++)E[s]=0|u[s][o],0!==E[s]&&(k=!1);if(!k)break;A++,o--}if(o>=0&&A++,b=b.dblp(A),o<0)break;for(s=0;s<n;s++){var S=E[s];0!==S&&(S>0?a=c[s][S-1>>1]:S<0&&(a=c[s][-S-1>>1].neg()),b="affine"===a.type?b.mixedAdd(a):b.add(a))}}for(o=0;o<n;o++)c[o]=null;return i?b:b.toP()},Ai.BasePoint=Si,Si.prototype.eq=function(){throw new Error("Not implemented")},Si.prototype.validate=function(){return this.curve.validate(this)},Ai.prototype.decodePoint=function(t,e){t=wi.toArray(t,e);var r=this.p.byteLength();if((4===t[0]||6===t[0]||7===t[0])&&t.length-1==2*r)return 6===t[0]?Ei(t[t.length-1]%2==0):7===t[0]&&Ei(t[t.length-1]%2==1),this.point(t.slice(1,1+r),t.slice(1+r,1+2*r));if((2===t[0]||3===t[0])&&t.length-1===r)return this.pointFromX(t.slice(1,1+r),3===t[0]);throw new Error("Unknown point format")},Si.prototype.encodeCompressed=function(t){return this.encode(t,!0)},Si.prototype._encode=function(t){var e=this.curve.p.byteLength(),r=this.getX().toArray("be",e);return t?[this.getY().isEven()?2:3].concat(r):[4].concat(r,this.getY().toArray("be",e))},Si.prototype.encode=function(t,e){return wi.encode(this._encode(e),t)},Si.prototype.precompute=function(t){if(this.precomputed)return this;var e={doubles:null,naf:null,beta:null};return e.naf=this._getNAFPoints(8),e.doubles=this._getDoubles(4,t),e.beta=this._getBeta(),this.precomputed=e,this},Si.prototype._hasDoubles=function(t){if(!this.precomputed)return!1;var e=this.precomputed.doubles;return!!e&&e.points.length>=Math.ceil((t.bitLength()+1)/e.step)},Si.prototype._getDoubles=function(t,e){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var r=[this],n=this,i=0;i<e;i+=t){for(var o=0;o<t;o++)n=n.dbl();r.push(n)}return{step:t,points:r}},Si.prototype._getNAFPoints=function(t){if(this.precomputed&&this.precomputed.naf)return this.precomputed.naf;for(var e=[this],r=(1<<t)-1,n=1===r?null:this.dbl(),i=1;i<r;i++)e[i]=e[i-1].add(n);return{wnd:t,points:e}},Si.prototype._getBeta=function(){return null},Si.prototype.dblp=function(t){for(var e=this,r=0;r<t;r++)e=e.dbl();return e};var Ci=pi(function(t){"function"==typeof Object.create?t.exports=function(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:t.exports=function(t,e){if(e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}}}),xi=wi.assert;function _i(t){ki.call(this,"short",t),this.a=new l(t.a,16).toRed(this.red),this.b=new l(t.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=0===this.a.fromRed().cmpn(0),this.threeA=0===this.a.fromRed().sub(this.p).cmpn(-3),this.endo=this._getEndomorphism(t),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}Ci(_i,ki);var Ti=_i;function Pi(t,e,r,n){ki.BasePoint.call(this,t,"affine"),null===e&&null===r?(this.x=null,this.y=null,this.inf=!0):(this.x=new l(e,16),this.y=new l(r,16),n&&(this.x.forceRed(this.curve.red),this.y.forceRed(this.curve.red)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.inf=!1)}function Ii(t,e,r,n){ki.BasePoint.call(this,t,"jacobian"),null===e&&null===r&&null===n?(this.x=this.curve.one,this.y=this.curve.one,this.z=new l(0)):(this.x=new l(e,16),this.y=new l(r,16),this.z=new l(n,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}_i.prototype._getEndomorphism=function(t){if(this.zeroA&&this.g&&this.n&&1===this.p.modn(3)){var e,r;if(t.beta)e=new l(t.beta,16).toRed(this.red);else{var n=this._getEndoRoots(this.p);e=(e=n[0].cmp(n[1])<0?n[0]:n[1]).toRed(this.red)}if(t.lambda)r=new l(t.lambda,16);else{var i=this._getEndoRoots(this.n);0===this.g.mul(i[0]).x.cmp(this.g.x.redMul(e))?r=i[0]:(r=i[1],xi(0===this.g.mul(r).x.cmp(this.g.x.redMul(e))))}return{beta:e,lambda:r,basis:t.basis?t.basis.map(function(t){return{a:new l(t.a,16),b:new l(t.b,16)}}):this._getEndoBasis(r)}}},_i.prototype._getEndoRoots=function(t){var e=t===this.p?this.red:l.mont(t),r=new l(2).toRed(e).redInvm(),n=r.redNeg(),i=new l(3).toRed(e).redNeg().redSqrt().redMul(r);return[n.redAdd(i).fromRed(),n.redSub(i).fromRed()]},_i.prototype._getEndoBasis=function(t){for(var e,r,n,i,o,s,a,c,u,h=this.n.ushrn(Math.floor(this.n.bitLength()/2)),d=t,f=this.n.clone(),p=new l(1),m=new l(0),g=new l(0),v=new l(1),w=0;0!==d.cmpn(0);){var y=f.div(d);c=f.sub(y.mul(d)),u=g.sub(y.mul(p));var b=v.sub(y.mul(m));if(!n&&c.cmp(h)<0)e=a.neg(),r=p,n=c.neg(),i=u;else if(n&&2===++w)break;a=c,f=d,d=c,g=p,p=u,v=m,m=b}o=c.neg(),s=u;var E=n.sqr().add(i.sqr());return o.sqr().add(s.sqr()).cmp(E)>=0&&(o=e,s=r),n.negative&&(n=n.neg(),i=i.neg()),o.negative&&(o=o.neg(),s=s.neg()),[{a:n,b:i},{a:o,b:s}]},_i.prototype._endoSplit=function(t){var e=this.endo.basis,r=e[0],n=e[1],i=n.b.mul(t).divRound(this.n),o=r.b.neg().mul(t).divRound(this.n),s=i.mul(r.a),a=o.mul(n.a),l=i.mul(r.b),c=o.mul(n.b);return{k1:t.sub(s).sub(a),k2:l.add(c).neg()}},_i.prototype.pointFromX=function(t,e){(t=new l(t,16)).red||(t=t.toRed(this.red));var r=t.redSqr().redMul(t).redIAdd(t.redMul(this.a)).redIAdd(this.b),n=r.redSqrt();if(0!==n.redSqr().redSub(r).cmp(this.zero))throw new Error("invalid point");var i=n.fromRed().isOdd();return(e&&!i||!e&&i)&&(n=n.redNeg()),this.point(t,n)},_i.prototype.validate=function(t){if(t.inf)return!0;var e=t.x,r=t.y,n=this.a.redMul(e),i=e.redSqr().redMul(e).redIAdd(n).redIAdd(this.b);return 0===r.redSqr().redISub(i).cmpn(0)},_i.prototype._endoWnafMulAdd=function(t,e,r){for(var n=this._endoWnafT1,i=this._endoWnafT2,o=0;o<t.length;o++){var s=this._endoSplit(e[o]),a=t[o],l=a._getBeta();s.k1.negative&&(s.k1.ineg(),a=a.neg(!0)),s.k2.negative&&(s.k2.ineg(),l=l.neg(!0)),n[2*o]=a,n[2*o+1]=l,i[2*o]=s.k1,i[2*o+1]=s.k2}for(var c=this._wnafMulAdd(1,n,i,2*o,r),u=0;u<2*o;u++)n[u]=null,i[u]=null;return c},Ci(Pi,ki.BasePoint),_i.prototype.point=function(t,e,r){return new Pi(this,t,e,r)},_i.prototype.pointFromJSON=function(t,e){return Pi.fromJSON(this,t,e)},Pi.prototype._getBeta=function(){if(this.curve.endo){var t=this.precomputed;if(t&&t.beta)return t.beta;var e=this.curve.point(this.x.redMul(this.curve.endo.beta),this.y);if(t){var r=this.curve,n=function(t){return r.point(t.x.redMul(r.endo.beta),t.y)};t.beta=e,e.precomputed={beta:null,naf:t.naf&&{wnd:t.naf.wnd,points:t.naf.points.map(n)},doubles:t.doubles&&{step:t.doubles.step,points:t.doubles.points.map(n)}}}return e}},Pi.prototype.toJSON=function(){return this.precomputed?[this.x,this.y,this.precomputed&&{doubles:this.precomputed.doubles&&{step:this.precomputed.doubles.step,points:this.precomputed.doubles.points.slice(1)},naf:this.precomputed.naf&&{wnd:this.precomputed.naf.wnd,points:this.precomputed.naf.points.slice(1)}}]:[this.x,this.y]},Pi.fromJSON=function(t,e,r){"string"==typeof e&&(e=JSON.parse(e));var n=t.point(e[0],e[1],r);if(!e[2])return n;function i(e){return t.point(e[0],e[1],r)}var o=e[2];return n.precomputed={beta:null,doubles:o.doubles&&{step:o.doubles.step,points:[n].concat(o.doubles.points.map(i))},naf:o.naf&&{wnd:o.naf.wnd,points:[n].concat(o.naf.points.map(i))}},n},Pi.prototype.inspect=function(){return this.isInfinity()?"<EC Point Infinity>":"<EC Point x: "+this.x.fromRed().toString(16,2)+" y: "+this.y.fromRed().toString(16,2)+">"},Pi.prototype.isInfinity=function(){return this.inf},Pi.prototype.add=function(t){if(this.inf)return t;if(t.inf)return this;if(this.eq(t))return this.dbl();if(this.neg().eq(t))return this.curve.point(null,null);if(0===this.x.cmp(t.x))return this.curve.point(null,null);var e=this.y.redSub(t.y);0!==e.cmpn(0)&&(e=e.redMul(this.x.redSub(t.x).redInvm()));var r=e.redSqr().redISub(this.x).redISub(t.x),n=e.redMul(this.x.redSub(r)).redISub(this.y);return this.curve.point(r,n)},Pi.prototype.dbl=function(){if(this.inf)return this;var t=this.y.redAdd(this.y);if(0===t.cmpn(0))return this.curve.point(null,null);var e=this.curve.a,r=this.x.redSqr(),n=t.redInvm(),i=r.redAdd(r).redIAdd(r).redIAdd(e).redMul(n),o=i.redSqr().redISub(this.x.redAdd(this.x)),s=i.redMul(this.x.redSub(o)).redISub(this.y);return this.curve.point(o,s)},Pi.prototype.getX=function(){return this.x.fromRed()},Pi.prototype.getY=function(){return this.y.fromRed()},Pi.prototype.mul=function(t){return t=new l(t,16),this.isInfinity()?this:this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve.endo?this.curve._endoWnafMulAdd([this],[t]):this.curve._wnafMul(this,t)},Pi.prototype.mulAdd=function(t,e,r){var n=[this,e],i=[t,r];return this.curve.endo?this.curve._endoWnafMulAdd(n,i):this.curve._wnafMulAdd(1,n,i,2)},Pi.prototype.jmulAdd=function(t,e,r){var n=[this,e],i=[t,r];return this.curve.endo?this.curve._endoWnafMulAdd(n,i,!0):this.curve._wnafMulAdd(1,n,i,2,!0)},Pi.prototype.eq=function(t){return this===t||this.inf===t.inf&&(this.inf||0===this.x.cmp(t.x)&&0===this.y.cmp(t.y))},Pi.prototype.neg=function(t){if(this.inf)return this;var e=this.curve.point(this.x,this.y.redNeg());if(t&&this.precomputed){var r=this.precomputed,n=function(t){return t.neg()};e.precomputed={naf:r.naf&&{wnd:r.naf.wnd,points:r.naf.points.map(n)},doubles:r.doubles&&{step:r.doubles.step,points:r.doubles.points.map(n)}}}return e},Pi.prototype.toJ=function(){return this.inf?this.curve.jpoint(null,null,null):this.curve.jpoint(this.x,this.y,this.curve.one)},Ci(Ii,ki.BasePoint),_i.prototype.jpoint=function(t,e,r){return new Ii(this,t,e,r)},Ii.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var t=this.z.redInvm(),e=t.redSqr(),r=this.x.redMul(e),n=this.y.redMul(e).redMul(t);return this.curve.point(r,n)},Ii.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},Ii.prototype.add=function(t){if(this.isInfinity())return t;if(t.isInfinity())return this;var e=t.z.redSqr(),r=this.z.redSqr(),n=this.x.redMul(e),i=t.x.redMul(r),o=this.y.redMul(e.redMul(t.z)),s=t.y.redMul(r.redMul(this.z)),a=n.redSub(i),l=o.redSub(s);if(0===a.cmpn(0))return 0!==l.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var c=a.redSqr(),u=c.redMul(a),h=n.redMul(c),d=l.redSqr().redIAdd(u).redISub(h).redISub(h),f=l.redMul(h.redISub(d)).redISub(o.redMul(u)),p=this.z.redMul(t.z).redMul(a);return this.curve.jpoint(d,f,p)},Ii.prototype.mixedAdd=function(t){if(this.isInfinity())return t.toJ();if(t.isInfinity())return this;var e=this.z.redSqr(),r=this.x,n=t.x.redMul(e),i=this.y,o=t.y.redMul(e).redMul(this.z),s=r.redSub(n),a=i.redSub(o);if(0===s.cmpn(0))return 0!==a.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var l=s.redSqr(),c=l.redMul(s),u=r.redMul(l),h=a.redSqr().redIAdd(c).redISub(u).redISub(u),d=a.redMul(u.redISub(h)).redISub(i.redMul(c)),f=this.z.redMul(s);return this.curve.jpoint(h,d,f)},Ii.prototype.dblp=function(t){if(0===t)return this;if(this.isInfinity())return this;if(!t)return this.dbl();var e;if(this.curve.zeroA||this.curve.threeA){var r=this;for(e=0;e<t;e++)r=r.dbl();return r}var n=this.curve.a,i=this.curve.tinv,o=this.x,s=this.y,a=this.z,l=a.redSqr().redSqr(),c=s.redAdd(s);for(e=0;e<t;e++){var u=o.redSqr(),h=c.redSqr(),d=h.redSqr(),f=u.redAdd(u).redIAdd(u).redIAdd(n.redMul(l)),p=o.redMul(h),m=f.redSqr().redISub(p.redAdd(p)),g=p.redISub(m),v=f.redMul(g);v=v.redIAdd(v).redISub(d);var w=c.redMul(a);e+1<t&&(l=l.redMul(d)),o=m,a=w,c=v}return this.curve.jpoint(o,c.redMul(i),a)},Ii.prototype.dbl=function(){return this.isInfinity()?this:this.curve.zeroA?this._zeroDbl():this.curve.threeA?this._threeDbl():this._dbl()},Ii.prototype._zeroDbl=function(){var t,e,r;if(this.zOne){var n=this.x.redSqr(),i=this.y.redSqr(),o=i.redSqr(),s=this.x.redAdd(i).redSqr().redISub(n).redISub(o);s=s.redIAdd(s);var a=n.redAdd(n).redIAdd(n),l=a.redSqr().redISub(s).redISub(s),c=o.redIAdd(o);c=(c=c.redIAdd(c)).redIAdd(c),t=l,e=a.redMul(s.redISub(l)).redISub(c),r=this.y.redAdd(this.y)}else{var u=this.x.redSqr(),h=this.y.redSqr(),d=h.redSqr(),f=this.x.redAdd(h).redSqr().redISub(u).redISub(d);f=f.redIAdd(f);var p=u.redAdd(u).redIAdd(u),m=p.redSqr(),g=d.redIAdd(d);g=(g=g.redIAdd(g)).redIAdd(g),t=m.redISub(f).redISub(f),e=p.redMul(f.redISub(t)).redISub(g),r=(r=this.y.redMul(this.z)).redIAdd(r)}return this.curve.jpoint(t,e,r)},Ii.prototype._threeDbl=function(){var t,e,r;if(this.zOne){var n=this.x.redSqr(),i=this.y.redSqr(),o=i.redSqr(),s=this.x.redAdd(i).redSqr().redISub(n).redISub(o);s=s.redIAdd(s);var a=n.redAdd(n).redIAdd(n).redIAdd(this.curve.a),l=a.redSqr().redISub(s).redISub(s);t=l;var c=o.redIAdd(o);c=(c=c.redIAdd(c)).redIAdd(c),e=a.redMul(s.redISub(l)).redISub(c),r=this.y.redAdd(this.y)}else{var u=this.z.redSqr(),h=this.y.redSqr(),d=this.x.redMul(h),f=this.x.redSub(u).redMul(this.x.redAdd(u));f=f.redAdd(f).redIAdd(f);var p=d.redIAdd(d),m=(p=p.redIAdd(p)).redAdd(p);t=f.redSqr().redISub(m),r=this.y.redAdd(this.z).redSqr().redISub(h).redISub(u);var g=h.redSqr();g=(g=(g=g.redIAdd(g)).redIAdd(g)).redIAdd(g),e=f.redMul(p.redISub(t)).redISub(g)}return this.curve.jpoint(t,e,r)},Ii.prototype._dbl=function(){var t=this.curve.a,e=this.x,r=this.y,n=this.z,i=n.redSqr().redSqr(),o=e.redSqr(),s=r.redSqr(),a=o.redAdd(o).redIAdd(o).redIAdd(t.redMul(i)),l=e.redAdd(e),c=(l=l.redIAdd(l)).redMul(s),u=a.redSqr().redISub(c.redAdd(c)),h=c.redISub(u),d=s.redSqr();d=(d=(d=d.redIAdd(d)).redIAdd(d)).redIAdd(d);var f=a.redMul(h).redISub(d),p=r.redAdd(r).redMul(n);return this.curve.jpoint(u,f,p)},Ii.prototype.trpl=function(){if(!this.curve.zeroA)return this.dbl().add(this);var t=this.x.redSqr(),e=this.y.redSqr(),r=this.z.redSqr(),n=e.redSqr(),i=t.redAdd(t).redIAdd(t),o=i.redSqr(),s=this.x.redAdd(e).redSqr().redISub(t).redISub(n),a=(s=(s=(s=s.redIAdd(s)).redAdd(s).redIAdd(s)).redISub(o)).redSqr(),l=n.redIAdd(n);l=(l=(l=l.redIAdd(l)).redIAdd(l)).redIAdd(l);var c=i.redIAdd(s).redSqr().redISub(o).redISub(a).redISub(l),u=e.redMul(c);u=(u=u.redIAdd(u)).redIAdd(u);var h=this.x.redMul(a).redISub(u);h=(h=h.redIAdd(h)).redIAdd(h);var d=this.y.redMul(c.redMul(l.redISub(c)).redISub(s.redMul(a)));d=(d=(d=d.redIAdd(d)).redIAdd(d)).redIAdd(d);var f=this.z.redAdd(s).redSqr().redISub(r).redISub(a);return this.curve.jpoint(h,d,f)},Ii.prototype.mul=function(t,e){return t=new l(t,e),this.curve._wnafMul(this,t)},Ii.prototype.eq=function(t){if("affine"===t.type)return this.eq(t.toJ());if(this===t)return!0;var e=this.z.redSqr(),r=t.z.redSqr();if(0!==this.x.redMul(r).redISub(t.x.redMul(e)).cmpn(0))return!1;var n=e.redMul(this.z),i=r.redMul(t.z);return 0===this.y.redMul(i).redISub(t.y.redMul(n)).cmpn(0)},Ii.prototype.eqXToP=function(t){var e=this.z.redSqr(),r=t.toRed(this.curve.red).redMul(e);if(0===this.x.cmp(r))return!0;for(var n=t.clone(),i=this.curve.redN.redMul(e);;){if(n.iadd(this.curve.n),n.cmp(this.curve.p)>=0)return!1;if(r.redIAdd(i),0===this.x.cmp(r))return!0}},Ii.prototype.inspect=function(){return this.isInfinity()?"<EC JPoint Infinity>":"<EC JPoint x: "+this.x.toString(16,2)+" y: "+this.y.toString(16,2)+" z: "+this.z.toString(16,2)+">"},Ii.prototype.isInfinity=function(){return 0===this.z.cmpn(0)};var Ni=pi(function(t,e){var r=e;r.base=ki,r.short=Ti,r.mont=null,r.edwards=null}),Mi=pi(function(t,e){var r,n=e,i=wi.assert;function o(t){"short"===t.type?this.curve=new Ni.short(t):"edwards"===t.type?this.curve=new Ni.edwards(t):this.curve=new Ni.mont(t),this.g=this.curve.g,this.n=this.curve.n,this.hash=t.hash,i(this.g.validate(),"Invalid curve"),i(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}function s(t,e){Object.defineProperty(n,t,{configurable:!0,enumerable:!0,get:function(){var r=new o(e);return Object.defineProperty(n,t,{configurable:!0,enumerable:!0,value:r}),r}})}n.PresetCurve=o,s("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:fi.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),s("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:fi.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),s("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:fi.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),s("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:fi.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),s("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:fi.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),s("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:fi.sha256,gRed:!1,g:["9"]}),s("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:fi.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});try{r=null.crash()}catch(t){r=void 0}s("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:fi.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",r]})});function Bi(t){if(!(this instanceof Bi))return new Bi(t);this.hash=t.hash,this.predResist=!!t.predResist,this.outLen=this.hash.outSize,this.minEntropy=t.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var e=vi.toArray(t.entropy,t.entropyEnc||"hex"),r=vi.toArray(t.nonce,t.nonceEnc||"hex"),n=vi.toArray(t.pers,t.persEnc||"hex");mi(e.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(e,r,n)}var Ri=Bi;Bi.prototype._init=function(t,e,r){var n=t.concat(e).concat(r);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var i=0;i<this.V.length;i++)this.K[i]=0,this.V[i]=1;this._update(n),this._reseed=1,this.reseedInterval=281474976710656},Bi.prototype._hmac=function(){return new fi.hmac(this.hash,this.K)},Bi.prototype._update=function(t){var e=this._hmac().update(this.V).update([0]);t&&(e=e.update(t)),this.K=e.digest(),this.V=this._hmac().update(this.V).digest(),t&&(this.K=this._hmac().update(this.V).update([1]).update(t).digest(),this.V=this._hmac().update(this.V).digest())},Bi.prototype.reseed=function(t,e,r,n){"string"!=typeof e&&(n=r,r=e,e=null),t=vi.toArray(t,e),r=vi.toArray(r,n),mi(t.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(t.concat(r||[])),this._reseed=1},Bi.prototype.generate=function(t,e,r,n){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");"string"!=typeof e&&(n=r,r=e,e=null),r&&(r=vi.toArray(r,n||"hex"),this._update(r));for(var i=[];i.length<t;)this.V=this._hmac().update(this.V).digest(),i=i.concat(this.V);var o=i.slice(0,t);return this._update(r),this._reseed++,vi.encode(o,e)};var Fi=wi.assert;function Oi(t,e){this.ec=t,this.priv=null,this.pub=null,e.priv&&this._importPrivate(e.priv,e.privEnc),e.pub&&this._importPublic(e.pub,e.pubEnc)}var Di=Oi;Oi.fromPublic=function(t,e,r){return e instanceof Oi?e:new Oi(t,{pub:e,pubEnc:r})},Oi.fromPrivate=function(t,e,r){return e instanceof Oi?e:new Oi(t,{priv:e,privEnc:r})},Oi.prototype.validate=function(){var t=this.getPublic();return t.isInfinity()?{result:!1,reason:"Invalid public key"}:t.validate()?t.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}},Oi.prototype.getPublic=function(t,e){return"string"==typeof t&&(e=t,t=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),e?this.pub.encode(e,t):this.pub},Oi.prototype.getPrivate=function(t){return"hex"===t?this.priv.toString(16,2):this.priv},Oi.prototype._importPrivate=function(t,e){this.priv=new l(t,e||16),this.priv=this.priv.umod(this.ec.curve.n)},Oi.prototype._importPublic=function(t,e){if(t.x||t.y)return"mont"===this.ec.curve.type?Fi(t.x,"Need x coordinate"):"short"!==this.ec.curve.type&&"edwards"!==this.ec.curve.type||Fi(t.x&&t.y,"Need both x and y coordinate"),void(this.pub=this.ec.curve.point(t.x,t.y));this.pub=this.ec.curve.decodePoint(t,e)},Oi.prototype.derive=function(t){return t.validate()||Fi(t.validate(),"public point not validated"),t.mul(this.priv).getX()},Oi.prototype.sign=function(t,e,r){return this.ec.sign(t,this,e,r)},Oi.prototype.verify=function(t,e,r){return this.ec.verify(t,e,this,void 0,r)},Oi.prototype.inspect=function(){return"<Key priv: "+(this.priv&&this.priv.toString(16,2))+" pub: "+(this.pub&&this.pub.inspect())+" >"};var Ui=wi.assert;function Li(t,e){if(t instanceof Li)return t;this._importDER(t,e)||(Ui(t.r&&t.s,"Signature without r or s"),this.r=new l(t.r,16),this.s=new l(t.s,16),void 0===t.recoveryParam?this.recoveryParam=null:this.recoveryParam=t.recoveryParam)}var qi=Li;function zi(){this.place=0}function Gi(t,e){var r=t[e.place++];if(!(128&r))return r;var n=15&r;if(0===n||n>4)return!1;if(0===t[e.place])return!1;for(var i=0,o=0,s=e.place;o<n;o++,s++)i<<=8,i|=t[s],i>>>=0;return!(i<=127)&&(e.place=s,i)}function Hi(t){for(var e=0,r=t.length-1;!t[e]&&!(128&t[e+1])&&e<r;)e++;return 0===e?t:t.slice(e)}function ji(t,e){if(e<128)t.push(e);else{var r=1+(Math.log(e)/Math.LN2>>>3);for(t.push(128|r);--r;)t.push(e>>>(r<<3)&255);t.push(e)}}Li.prototype._importDER=function(t,e){t=wi.toArray(t,e);var r=new zi;if(48!==t[r.place++])return!1;var n=Gi(t,r);if(!1===n)return!1;if(n+r.place!==t.length)return!1;if(2!==t[r.place++])return!1;var i=Gi(t,r);if(!1===i)return!1;if(128&t[r.place])return!1;var o=t.slice(r.place,i+r.place);if(r.place+=i,2!==t[r.place++])return!1;var s=Gi(t,r);if(!1===s)return!1;if(t.length!==s+r.place)return!1;if(128&t[r.place])return!1;var a=t.slice(r.place,s+r.place);if(0===o[0]){if(!(128&o[1]))return!1;o=o.slice(1)}if(0===a[0]){if(!(128&a[1]))return!1;a=a.slice(1)}return this.r=new l(o),this.s=new l(a),this.recoveryParam=null,!0},Li.prototype.toDER=function(t){var e=this.r.toArray(),r=this.s.toArray();for(128&e[0]&&(e=[0].concat(e)),128&r[0]&&(r=[0].concat(r)),e=Hi(e),r=Hi(r);!(r[0]||128&r[1]);)r=r.slice(1);var n=[2];ji(n,e.length),(n=n.concat(e)).push(2),ji(n,r.length);var i=n.concat(r),o=[48];return ji(o,i.length),o=o.concat(i),wi.encode(o,t)};var Ki=function(){throw new Error("unsupported")},Wi=wi.assert;function Vi(t){if(!(this instanceof Vi))return new Vi(t);"string"==typeof t&&(Wi(Object.prototype.hasOwnProperty.call(Mi,t),"Unknown curve "+t),t=Mi[t]),t instanceof Mi.PresetCurve&&(t={curve:t}),this.curve=t.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=t.curve.g,this.g.precompute(t.curve.n.bitLength()+1),this.hash=t.hash||t.curve.hash}var $i=Vi;Vi.prototype.keyPair=function(t){return new Di(this,t)},Vi.prototype.keyFromPrivate=function(t,e){return Di.fromPrivate(this,t,e)},Vi.prototype.keyFromPublic=function(t,e){return Di.fromPublic(this,t,e)},Vi.prototype.genKeyPair=function(t){t||(t={});for(var e=new Ri({hash:this.hash,pers:t.pers,persEnc:t.persEnc||"utf8",entropy:t.entropy||Ki(this.hash.hmacStrength),entropyEnc:t.entropy&&t.entropyEnc||"utf8",nonce:this.n.toArray()}),r=this.n.byteLength(),n=this.n.sub(new l(2));;){var i=new l(e.generate(r));if(!(i.cmp(n)>0))return i.iaddn(1),this.keyFromPrivate(i)}},Vi.prototype._truncateToN=function(t,e,r){var n;if(l.isBN(t)||"number"==typeof t)n=(t=new l(t,16)).byteLength();else if("object"==typeof t)n=t.length,t=new l(t,16);else{var i=t.toString();n=i.length+1>>>1,t=new l(i,16)}"number"!=typeof r&&(r=8*n);var o=r-this.n.bitLength();return o>0&&(t=t.ushrn(o)),!e&&t.cmp(this.n)>=0?t.sub(this.n):t},Vi.prototype.sign=function(t,e,r,n){if("object"==typeof r&&(n=r,r=null),n||(n={}),"string"!=typeof t&&"number"!=typeof t&&!l.isBN(t)){Wi("object"==typeof t&&t&&"number"==typeof t.length,"Expected message to be an array-like, a hex string, or a BN instance"),Wi(t.length>>>0===t.length);for(var i=0;i<t.length;i++)Wi((255&t[i])===t[i])}e=this.keyFromPrivate(e,r),t=this._truncateToN(t,!1,n.msgBitLength),Wi(!t.isNeg(),"Can not sign a negative message");var o=this.n.byteLength(),s=e.getPrivate().toArray("be",o),a=t.toArray("be",o);Wi(new l(a).eq(t),"Can not sign message");for(var c=new Ri({hash:this.hash,entropy:s,nonce:a,pers:n.pers,persEnc:n.persEnc||"utf8"}),u=this.n.sub(new l(1)),h=0;;h++){var d=n.k?n.k(h):new l(c.generate(this.n.byteLength()));if(!((d=this._truncateToN(d,!0)).cmpn(1)<=0||d.cmp(u)>=0)){var f=this.g.mul(d);if(!f.isInfinity()){var p=f.getX(),m=p.umod(this.n);if(0!==m.cmpn(0)){var g=d.invm(this.n).mul(m.mul(e.getPrivate()).iadd(t));if(0!==(g=g.umod(this.n)).cmpn(0)){var v=(f.getY().isOdd()?1:0)|(0!==p.cmp(m)?2:0);return n.canonical&&g.cmp(this.nh)>0&&(g=this.n.sub(g),v^=1),new qi({r:m,s:g,recoveryParam:v})}}}}}},Vi.prototype.verify=function(t,e,r,n,i){i||(i={}),t=this._truncateToN(t,!1,i.msgBitLength),r=this.keyFromPublic(r,n);var o=(e=new qi(e,"hex")).r,s=e.s;if(o.cmpn(1)<0||o.cmp(this.n)>=0)return!1;if(s.cmpn(1)<0||s.cmp(this.n)>=0)return!1;var a,l=s.invm(this.n),c=l.mul(t).umod(this.n),u=l.mul(o).umod(this.n);return this.curve._maxwellTrick?!(a=this.g.jmulAdd(c,r.getPublic(),u)).isInfinity()&&a.eqXToP(o):!(a=this.g.mulAdd(c,r.getPublic(),u)).isInfinity()&&0===a.getX().umod(this.n).cmp(o)},Vi.prototype.recoverPubKey=function(t,e,r,n){Wi((3&r)===r,"The recovery param is more than two bits"),e=new qi(e,n);var i=this.n,o=new l(t),s=e.r,a=e.s,c=1&r,u=r>>1;if(s.cmp(this.curve.p.umod(this.curve.n))>=0&&u)throw new Error("Unable to find sencond key candinate");s=u?this.curve.pointFromX(s.add(this.curve.n),c):this.curve.pointFromX(s,c);var h=e.r.invm(i),d=i.sub(o).mul(h).umod(i),f=a.mul(h).umod(i);return this.g.mulAdd(d,s,f)},Vi.prototype.getKeyRecoveryParam=function(t,e,r,n){if(null!==(e=new qi(e,n)).recoveryParam)return e.recoveryParam;for(var i=0;i<4;i++){var o;try{o=this.recoverPubKey(t,e,i)}catch(t){continue}if(o.eq(r))return i}throw new Error("Unable to find valid recovery factor")};var Ji=pi(function(t,e){var r=e;r.version="6.6.1",r.utils=wi,r.rand=function(){throw new Error("unsupported")},r.curve=Ni,r.curves=Mi,r.ec=$i,r.eddsa=null}).ec;const Qi=new w("signing-key/5.8.0");let Yi=null;function Xi(){return Yi||(Yi=new Ji("secp256k1")),Yi}class Zi{constructor(t){dt(this,"curve","secp256k1"),dt(this,"privateKey",N(t)),32!==M(this.privateKey)&&Qi.throwArgumentError("invalid private key","privateKey","[[ REDACTED ]]");const e=Xi().keyFromPrivate(C(this.privateKey));dt(this,"publicKey","0x"+e.getPublic(!1,"hex")),dt(this,"compressedPublicKey","0x"+e.getPublic(!0,"hex")),dt(this,"_isSigningKey",!0)}_addPoint(t){const e=Xi().keyFromPublic(C(this.publicKey)),r=Xi().keyFromPublic(C(t));return"0x"+e.pub.add(r.pub).encodeCompressed("hex")}signDigest(t){const e=Xi().keyFromPrivate(C(this.privateKey)),r=C(t);32!==r.length&&Qi.throwArgumentError("bad digest length","digest",t);const n=e.sign(r,{canonical:!0});return U({recoveryParam:n.recoveryParam,r:D("0x"+n.r.toString(16),32),s:D("0x"+n.s.toString(16),32)})}computeSharedSecret(t){const e=Xi().keyFromPrivate(C(this.privateKey)),r=Xi().keyFromPublic(C(eo(t)));return D("0x"+e.derive(r.getPublic()).toString(16),32)}static isSigningKey(t){return!(!t||!t._isSigningKey)}}function to(t,e){const r=U(e),n={r:C(r.r),s:C(r.s)};return"0x"+Xi().recoverPubKey(C(t),n,r.recoveryParam).encode("hex",!1)}function eo(t,e){const r=C(t);if(32===r.length){const t=new Zi(r);return e?"0x"+Xi().keyFromPrivate(r).getPublic(!0,"hex"):t.publicKey}return 33===r.length?e?N(r):"0x"+Xi().keyFromPublic(r).getPublic(!1,"hex"):65===r.length?e?"0x"+Xi().keyFromPublic(r).getPublic(!0,"hex"):N(r):Qi.throwArgumentError("invalid public or private key","key","[REDACTED]")}const ro=new w("transactions/5.8.0");var no;function io(t){return"0x"===t?null:ve(t)}function oo(t){return"0x"===t?Me:W.from(t)}!function(t){t[t.legacy=0]="legacy",t[t.eip2930=1]="eip2930",t[t.eip1559=2]="eip1559"}(no||(no={}));const so=[{name:"nonce",maxLength:32,numeric:!0},{name:"gasPrice",maxLength:32,numeric:!0},{name:"gasLimit",maxLength:32,numeric:!0},{name:"to",length:20},{name:"value",maxLength:32,numeric:!0},{name:"data"}],ao={chainId:!0,data:!0,gasLimit:!0,gasPrice:!0,nonce:!0,to:!0,type:!0,value:!0};function lo(t){return ve(B(ee(B(eo(t),1)),12))}function co(t,e){return lo(to(C(t),e))}function uo(t,e){const r=_(W.from(t).toHexString());return r.length>32&&ro.throwArgumentError("invalid length for "+e,"transaction:"+e,t),r}function ho(t,e){return{address:ve(t),storageKeys:(e||[]).map((e,r)=>(32!==M(e)&&ro.throwArgumentError("invalid access list storageKey",`accessList[${t}:${r}]`,e),e.toLowerCase()))}}function fo(t){if(Array.isArray(t))return t.map((t,e)=>Array.isArray(t)?(t.length>2&&ro.throwArgumentError("access list expected to be [ address, storageKeys[] ]",`value[${e}]`,t),ho(t[0],t[1])):ho(t.address,t.storageKeys));const e=Object.keys(t).map(e=>{const r=t[e].reduce((t,e)=>(t[e]=!0,t),{});return ho(e,Object.keys(r).sort())});return e.sort((t,e)=>t.address.localeCompare(e.address)),e}function po(t){return fo(t).map(t=>[t.address,t.storageKeys])}function mo(t,e){if(null!=t.gasPrice){const e=W.from(t.gasPrice),r=W.from(t.maxFeePerGas||0);e.eq(r)||ro.throwArgumentError("mismatch EIP-1559 gasPrice != maxFeePerGas","tx",{gasPrice:e,maxFeePerGas:r})}const r=[uo(t.chainId||0,"chainId"),uo(t.nonce||0,"nonce"),uo(t.maxPriorityFeePerGas||0,"maxPriorityFeePerGas"),uo(t.maxFeePerGas||0,"maxFeePerGas"),uo(t.gasLimit||0,"gasLimit"),null!=t.to?ve(t.to):"0x",uo(t.value||0,"value"),t.data||"0x",po(t.accessList||[])];if(e){const t=U(e);r.push(uo(t.recoveryParam,"recoveryParam")),r.push(_(t.r)),r.push(_(t.s))}return R(["0x02",se(r)])}function go(t,e){const r=[uo(t.chainId||0,"chainId"),uo(t.nonce||0,"nonce"),uo(t.gasPrice||0,"gasPrice"),uo(t.gasLimit||0,"gasLimit"),null!=t.to?ve(t.to):"0x",uo(t.value||0,"value"),t.data||"0x",po(t.accessList||[])];if(e){const t=U(e);r.push(uo(t.recoveryParam,"recoveryParam")),r.push(_(t.r)),r.push(_(t.s))}return R(["0x01",se(r)])}function vo(t,e){if(null==t.type||0===t.type)return null!=t.accessList&&ro.throwArgumentError("untyped transactions do not support accessList; include type: 1","transaction",t),function(t,e){mt(t,ao);const r=[];so.forEach(function(e){let n=t[e.name]||[];const i={};e.numeric&&(i.hexPad="left"),n=C(N(n,i)),e.length&&n.length!==e.length&&n.length>0&&ro.throwArgumentError("invalid length for "+e.name,"transaction:"+e.name,n),e.maxLength&&(n=_(n),n.length>e.maxLength&&ro.throwArgumentError("invalid length for "+e.name,"transaction:"+e.name,n)),r.push(N(n))});let n=0;if(null!=t.chainId?(n=t.chainId,"number"!=typeof n&&ro.throwArgumentError("invalid transaction.chainId","transaction",t)):e&&!A(e)&&e.v>28&&(n=Math.floor((e.v-35)/2)),0!==n&&(r.push(N(n)),r.push("0x"),r.push("0x")),!e)return se(r);const i=U(e);let o=27+i.recoveryParam;return 0!==n?(r.pop(),r.pop(),r.pop(),o+=2*n+8,i.v>28&&i.v!==o&&ro.throwArgumentError("transaction.chainId/signature.v mismatch","signature",e)):i.v!==o&&ro.throwArgumentError("transaction.chainId/signature.v mismatch","signature",e),r.push(N(o)),r.push(_(C(i.r))),r.push(_(C(i.s))),se(r)}(t,e);switch(t.type){case 1:return go(t,e);case 2:return mo(t,e)}return ro.throwError(`unsupported transaction type: ${t.type}`,w.errors.UNSUPPORTED_OPERATION,{operation:"serializeTransaction",transactionType:t.type})}function wo(t,e,r){try{const r=oo(e[0]).toNumber();if(0!==r&&1!==r)throw new Error("bad recid");t.v=r}catch(t){ro.throwArgumentError("invalid v for transaction type: 1","v",e[0])}t.r=D(e[1],32),t.s=D(e[2],32);try{const e=ee(r(t));t.from=co(e,{r:t.r,s:t.s,recoveryParam:t.v})}catch(t){}}function yo(t){const e=C(t);if(e[0]>127)return function(t){const e=ce(t);9!==e.length&&6!==e.length&&ro.throwArgumentError("invalid raw transaction","rawTransaction",t);const r={nonce:oo(e[0]).toNumber(),gasPrice:oo(e[1]),gasLimit:oo(e[2]),to:io(e[3]),value:oo(e[4]),data:e[5],chainId:0};if(6===e.length)return r;try{r.v=W.from(e[6]).toNumber()}catch(t){return r}if(r.r=D(e[7],32),r.s=D(e[8],32),W.from(r.r).isZero()&&W.from(r.s).isZero())r.chainId=r.v,r.v=0;else{r.chainId=Math.floor((r.v-35)/2),r.chainId<0&&(r.chainId=0);let n=r.v-27;const i=e.slice(0,6);0!==r.chainId&&(i.push(N(r.chainId)),i.push("0x"),i.push("0x"),n-=2*r.chainId+8);const o=ee(se(i));try{r.from=co(o,{r:N(r.r),s:N(r.s),recoveryParam:n})}catch(t){}r.hash=ee(t)}return r.type=null,r}(e);switch(e[0]){case 1:return function(t){const e=ce(t.slice(1));8!==e.length&&11!==e.length&&ro.throwArgumentError("invalid component count for transaction type: 1","payload",N(t));const r={type:1,chainId:oo(e[0]).toNumber(),nonce:oo(e[1]).toNumber(),gasPrice:oo(e[2]),gasLimit:oo(e[3]),to:io(e[4]),value:oo(e[5]),data:e[6],accessList:fo(e[7])};return 8===e.length||(r.hash=ee(t),wo(r,e.slice(8),go)),r}(e);case 2:return function(t){const e=ce(t.slice(1));9!==e.length&&12!==e.length&&ro.throwArgumentError("invalid component count for transaction type: 2","payload",N(t));const r=oo(e[2]),n=oo(e[3]),i={type:2,chainId:oo(e[0]).toNumber(),nonce:oo(e[1]).toNumber(),maxPriorityFeePerGas:r,maxFeePerGas:n,gasPrice:null,gasLimit:oo(e[4]),to:io(e[5]),value:oo(e[6]),data:e[7],accessList:fo(e[8])};return 9===e.length||(i.hash=ee(t),wo(i,e.slice(9),mo)),i}(e)}return ro.throwError(`unsupported transaction type: ${e[0]}`,w.errors.UNSUPPORTED_OPERATION,{operation:"parseTransaction",transactionType:e[0]})}var bo=function(t,e,r,n){return new(r||(r=Promise))(function(i,o){function s(t){try{l(n.next(t))}catch(t){o(t)}}function a(t){try{l(n.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}l((n=n.apply(t,e||[])).next())})};const Eo=new w("contracts/5.8.0"),Ao={chainId:!0,data:!0,from:!0,gasLimit:!0,gasPrice:!0,nonce:!0,to:!0,value:!0,type:!0,accessList:!0,maxFeePerGas:!0,maxPriorityFeePerGas:!0,customData:!0,ccipReadEnabled:!0};function ko(t,e){return bo(this,void 0,void 0,function*(){const r=yield e;"string"!=typeof r&&Eo.throwArgumentError("invalid address or ENS name","name",r);try{return ve(r)}catch(t){}t||Eo.throwError("a provider or signer is needed to resolve ENS names",w.errors.UNSUPPORTED_OPERATION,{operation:"resolveName"});const n=yield t.resolveName(r);return null==n&&Eo.throwArgumentError("resolver or addr is not configured for ENS name","name",r),n})}function So(t,e,r){return bo(this,void 0,void 0,function*(){return Array.isArray(r)?yield Promise.all(r.map((r,n)=>So(t,Array.isArray(e)?e[n]:e[r.name],r))):"address"===r.type?yield ko(t,e):"tuple"===r.type?yield So(t,e,r.components):"array"===r.baseType?Array.isArray(e)?yield Promise.all(e.map(e=>So(t,e,r.arrayChildren))):Promise.reject(Eo.makeError("invalid value for array",w.errors.INVALID_ARGUMENT,{argument:"value",value:e})):e})}function Co(t,e,r){return bo(this,void 0,void 0,function*(){let n={};r.length===e.inputs.length+1&&"object"==typeof r[r.length-1]&&(n=gt(r.pop())),Eo.checkArgumentCount(r.length,e.inputs.length,"passed to contract"),t.signer?n.from?n.from=pt({override:ko(t.signer,n.from),signer:t.signer.getAddress()}).then(t=>bo(this,void 0,void 0,function*(){return ve(t.signer)!==t.override&&Eo.throwError("Contract with a Signer cannot override from",w.errors.UNSUPPORTED_OPERATION,{operation:"overrides.from"}),t.override})):n.from=t.signer.getAddress():n.from&&(n.from=ko(t.provider,n.from));const i=yield pt({args:So(t.signer||t.provider,r,e.inputs),address:t.resolvedAddress,overrides:pt(n)||{}}),o=t.interface.encodeFunctionData(e,i.args),s={data:o,to:i.address},a=i.overrides;if(null!=a.nonce&&(s.nonce=W.from(a.nonce).toNumber()),null!=a.gasLimit&&(s.gasLimit=W.from(a.gasLimit)),null!=a.gasPrice&&(s.gasPrice=W.from(a.gasPrice)),null!=a.maxFeePerGas&&(s.maxFeePerGas=W.from(a.maxFeePerGas)),null!=a.maxPriorityFeePerGas&&(s.maxPriorityFeePerGas=W.from(a.maxPriorityFeePerGas)),null!=a.from&&(s.from=a.from),null!=a.type&&(s.type=a.type),null!=a.accessList&&(s.accessList=fo(a.accessList)),null==s.gasLimit&&null!=e.gas){let t=21e3;const r=C(o);for(let e=0;e<r.length;e++)t+=4,r[e]&&(t+=64);s.gasLimit=W.from(e.gas).add(t)}if(a.value){const t=W.from(a.value);t.isZero()||e.payable||Eo.throwError("non-payable method cannot override value",w.errors.UNSUPPORTED_OPERATION,{operation:"overrides.value",value:n.value}),s.value=t}a.customData&&(s.customData=gt(a.customData)),a.ccipReadEnabled&&(s.ccipReadEnabled=!!a.ccipReadEnabled),delete n.nonce,delete n.gasLimit,delete n.gasPrice,delete n.from,delete n.value,delete n.type,delete n.accessList,delete n.maxFeePerGas,delete n.maxPriorityFeePerGas,delete n.customData,delete n.ccipReadEnabled;const l=Object.keys(n).filter(t=>null!=n[t]);return l.length&&Eo.throwError(`cannot override ${l.map(t=>JSON.stringify(t)).join(",")}`,w.errors.UNSUPPORTED_OPERATION,{operation:"overrides",overrides:l}),s})}function xo(t,e){const r=e.wait.bind(e);e.wait=e=>r(e).then(e=>(e.events=e.logs.map(r=>{let n=bt(r),i=null;try{i=t.interface.parseLog(r)}catch(t){}return i&&(n.args=i.args,n.decode=(e,r)=>t.interface.decodeEventLog(i.eventFragment,e,r),n.event=i.name,n.eventSignature=i.signature),n.removeListener=()=>t.provider,n.getBlock=()=>t.provider.getBlock(e.blockHash),n.getTransaction=()=>t.provider.getTransaction(e.transactionHash),n.getTransactionReceipt=()=>Promise.resolve(e),n}),e))}function _o(t,e,r){const n=t.signer||t.provider;return function(...i){return bo(this,void 0,void 0,function*(){let o;if(i.length===e.inputs.length+1&&"object"==typeof i[i.length-1]){const t=gt(i.pop());null!=t.blockTag&&(o=yield t.blockTag),delete t.blockTag,i.push(t)}null!=t.deployTransaction&&(yield t._deployed(o));const s=yield Co(t,e,i),a=yield n.call(s,o);try{let n=t.interface.decodeFunctionResult(e,a);return r&&1===e.outputs.length&&(n=n[0]),n}catch(e){throw e.code===w.errors.CALL_EXCEPTION&&(e.address=t.address,e.args=i,e.transaction=s),e}})}}function To(t,e,r){return e.constant?_o(t,e,r):function(t,e){return function(...r){return bo(this,void 0,void 0,function*(){t.signer||Eo.throwError("sending a transaction requires a signer",w.errors.UNSUPPORTED_OPERATION,{operation:"sendTransaction"}),null!=t.deployTransaction&&(yield t._deployed());const n=yield Co(t,e,r),i=yield t.signer.sendTransaction(n);return xo(t,i),i})}}(t,e)}function Po(t){return!t.address||null!=t.topics&&0!==t.topics.length?(t.address||"*")+"@"+(t.topics?t.topics.map(t=>Array.isArray(t)?t.join("|"):t).join(":"):""):"*"}class Io{constructor(t,e){dt(this,"tag",t),dt(this,"filter",e),this._listeners=[]}addListener(t,e){this._listeners.push({listener:t,once:e})}removeListener(t){let e=!1;this._listeners=this._listeners.filter(r=>!(!e&&r.listener===t)||(e=!0,!1))}removeAllListeners(){this._listeners=[]}listeners(){return this._listeners.map(t=>t.listener)}listenerCount(){return this._listeners.length}run(t){const e=this.listenerCount();return this._listeners=this._listeners.filter(e=>{const r=t.slice();return setTimeout(()=>{e.listener.apply(this,r)},0),!e.once}),e}prepareEvent(t){}getEmit(t){return[t]}}class No extends Io{constructor(){super("error",null)}}class Mo extends Io{constructor(t,e,r,n){const i={address:t};let o=e.getEventTopic(r);n?(o!==n[0]&&Eo.throwArgumentError("topic mismatch","topics",n),i.topics=n.slice()):i.topics=[o],super(Po(i),i),dt(this,"address",t),dt(this,"interface",e),dt(this,"fragment",r)}prepareEvent(t){super.prepareEvent(t),t.event=this.fragment.name,t.eventSignature=this.fragment.format(),t.decode=(t,e)=>this.interface.decodeEventLog(this.fragment,t,e);try{t.args=this.interface.decodeEventLog(this.fragment,t.data,t.topics)}catch(e){t.args=null,t.decodeError=e}}getEmit(t){const e=Vt(t.args);if(e.length)throw e[0].error;const r=(t.args||[]).slice();return r.push(t),r}}class Bo extends Io{constructor(t,e){super("*",{address:t}),dt(this,"address",t),dt(this,"interface",e)}prepareEvent(t){super.prepareEvent(t);try{const e=this.interface.parseLog(t);t.event=e.name,t.eventSignature=e.signature,t.decode=(t,r)=>this.interface.decodeEventLog(e.eventFragment,t,r),t.args=e.args}catch(t){}}}class Ro{constructor(t,e,r){dt(this,"interface",ft(new.target,"getInterface")(e)),null==r?(dt(this,"provider",null),dt(this,"signer",null)):xn.isSigner(r)?(dt(this,"provider",r.provider||null),dt(this,"signer",r)):En.isProvider(r)?(dt(this,"provider",r),dt(this,"signer",null)):Eo.throwArgumentError("invalid signer or provider","signerOrProvider",r),dt(this,"callStatic",{}),dt(this,"estimateGas",{}),dt(this,"functions",{}),dt(this,"populateTransaction",{}),dt(this,"filters",{});{const t={};Object.keys(this.interface.events).forEach(e=>{const r=this.interface.events[e];dt(this.filters,e,(...t)=>({address:this.address,topics:this.interface.encodeFilterTopics(r,t)})),t[r.name]||(t[r.name]=[]),t[r.name].push(e)}),Object.keys(t).forEach(e=>{const r=t[e];1===r.length?dt(this.filters,e,this.filters[r[0]]):Eo.warn(`Duplicate definition of ${e} (${r.join(", ")})`)})}if(dt(this,"_runningEvents",{}),dt(this,"_wrappedEmits",{}),null==t&&Eo.throwArgumentError("invalid contract address or ENS name","addressOrName",t),dt(this,"address",t),this.provider)dt(this,"resolvedAddress",ko(this.provider,t));else try{dt(this,"resolvedAddress",Promise.resolve(ve(t)))}catch(t){Eo.throwError("provider is required to use ENS name as contract address",w.errors.UNSUPPORTED_OPERATION,{operation:"new Contract"})}this.resolvedAddress.catch(t=>{});const n={},i={};Object.keys(this.interface.functions).forEach(t=>{const e=this.interface.functions[t];if(i[t])Eo.warn(`Duplicate ABI entry for ${JSON.stringify(t)}`);else{i[t]=!0;{const r=e.name;n[`%${r}`]||(n[`%${r}`]=[]),n[`%${r}`].push(t)}null==this[t]&&dt(this,t,To(this,e,!0)),null==this.functions[t]&&dt(this.functions,t,To(this,e,!1)),null==this.callStatic[t]&&dt(this.callStatic,t,_o(this,e,!0)),null==this.populateTransaction[t]&&dt(this.populateTransaction,t,function(t,e){return function(...r){return Co(t,e,r)}}(this,e)),null==this.estimateGas[t]&&dt(this.estimateGas,t,function(t,e){const r=t.signer||t.provider;return function(...n){return bo(this,void 0,void 0,function*(){r||Eo.throwError("estimate require a provider or signer",w.errors.UNSUPPORTED_OPERATION,{operation:"estimateGas"});const i=yield Co(t,e,n);return yield r.estimateGas(i)})}}(this,e))}}),Object.keys(n).forEach(t=>{const e=n[t];if(e.length>1)return;t=t.substring(1);const r=e[0];try{null==this[t]&&dt(this,t,this[r])}catch(t){}null==this.functions[t]&&dt(this.functions,t,this.functions[r]),null==this.callStatic[t]&&dt(this.callStatic,t,this.callStatic[r]),null==this.populateTransaction[t]&&dt(this.populateTransaction,t,this.populateTransaction[r]),null==this.estimateGas[t]&&dt(this.estimateGas,t,this.estimateGas[r])})}static getContractAddress(t){return we(t)}static getInterface(t){return vn.isInterface(t)?t:new vn(t)}deployed(){return this._deployed()}_deployed(t){return this._deployedPromise||(this.deployTransaction?this._deployedPromise=this.deployTransaction.wait().then(()=>this):this._deployedPromise=this.provider.getCode(this.address,t).then(t=>("0x"===t&&Eo.throwError("contract not deployed",w.errors.UNSUPPORTED_OPERATION,{contractAddress:this.address,operation:"getDeployed"}),this))),this._deployedPromise}fallback(t){this.signer||Eo.throwError("sending a transactions require a signer",w.errors.UNSUPPORTED_OPERATION,{operation:"sendTransaction(fallback)"});const e=gt(t||{});return["from","to"].forEach(function(t){null!=e[t]&&Eo.throwError("cannot override "+t,w.errors.UNSUPPORTED_OPERATION,{operation:t})}),e.to=this.resolvedAddress,this.deployed().then(()=>this.signer.sendTransaction(e))}connect(t){"string"==typeof t&&(t=new _n(t,this.provider));const e=new this.constructor(this.address,this.interface,t);return this.deployTransaction&&dt(e,"deployTransaction",this.deployTransaction),e}attach(t){return new this.constructor(t,this.interface,this.signer||this.provider)}static isIndexed(t){return pn.isIndexed(t)}_normalizeRunningEvent(t){return this._runningEvents[t.tag]?this._runningEvents[t.tag]:t}_getRunningEvent(t){if("string"==typeof t){if("error"===t)return this._normalizeRunningEvent(new No);if("event"===t)return this._normalizeRunningEvent(new Io("event",null));if("*"===t)return this._normalizeRunningEvent(new Bo(this.address,this.interface));const e=this.interface.getEvent(t);return this._normalizeRunningEvent(new Mo(this.address,this.interface,e))}if(t.topics&&t.topics.length>0){try{const e=t.topics[0];if("string"!=typeof e)throw new Error("invalid topic");const r=this.interface.getEvent(e);return this._normalizeRunningEvent(new Mo(this.address,this.interface,r,t.topics))}catch(t){}const e={address:this.address,topics:t.topics};return this._normalizeRunningEvent(new Io(Po(e),e))}return this._normalizeRunningEvent(new Bo(this.address,this.interface))}_checkRunningEvents(t){if(0===t.listenerCount()){delete this._runningEvents[t.tag];const e=this._wrappedEmits[t.tag];e&&t.filter&&(this.provider.off(t.filter,e),delete this._wrappedEmits[t.tag])}}_wrapEvent(t,e,r){const n=bt(e);return n.removeListener=()=>{r&&(t.removeListener(r),this._checkRunningEvents(t))},n.getBlock=()=>this.provider.getBlock(e.blockHash),n.getTransaction=()=>this.provider.getTransaction(e.transactionHash),n.getTransactionReceipt=()=>this.provider.getTransactionReceipt(e.transactionHash),t.prepareEvent(n),n}_addEventListener(t,e,r){if(this.provider||Eo.throwError("events require a provider or a signer with a provider",w.errors.UNSUPPORTED_OPERATION,{operation:"once"}),t.addListener(e,r),this._runningEvents[t.tag]=t,!this._wrappedEmits[t.tag]){const r=r=>{let n=this._wrapEvent(t,r,e);if(null==n.decodeError)try{const e=t.getEmit(n);this.emit(t.filter,...e)}catch(t){n.decodeError=t.error}null!=t.filter&&this.emit("event",n),null!=n.decodeError&&this.emit("error",n.decodeError,n)};this._wrappedEmits[t.tag]=r,null!=t.filter&&this.provider.on(t.filter,r)}}queryFilter(t,e,r){const n=this._getRunningEvent(t),i=gt(n.filter);return"string"==typeof e&&P(e,32)?(null!=r&&Eo.throwArgumentError("cannot specify toBlock with blockhash","toBlock",r),i.blockHash=e):(i.fromBlock=null!=e?e:0,i.toBlock=null!=r?r:"latest"),this.provider.getLogs(i).then(t=>t.map(t=>this._wrapEvent(n,t,null)))}on(t,e){return this._addEventListener(this._getRunningEvent(t),e,!1),this}once(t,e){return this._addEventListener(this._getRunningEvent(t),e,!0),this}emit(t,...e){if(!this.provider)return!1;const r=this._getRunningEvent(t),n=r.run(e)>0;return this._checkRunningEvents(r),n}listenerCount(t){return this.provider?null==t?Object.keys(this._runningEvents).reduce((t,e)=>t+this._runningEvents[e].listenerCount(),0):this._getRunningEvent(t).listenerCount():0}listeners(t){if(!this.provider)return[];if(null==t){const t=[];for(let e in this._runningEvents)this._runningEvents[e].listeners().forEach(e=>{t.push(e)});return t}return this._getRunningEvent(t).listeners()}removeAllListeners(t){if(!this.provider)return this;if(null==t){for(const t in this._runningEvents){const e=this._runningEvents[t];e.removeAllListeners(),this._checkRunningEvents(e)}return this}const e=this._getRunningEvent(t);return e.removeAllListeners(),this._checkRunningEvents(e),this}off(t,e){if(!this.provider)return this;const r=this._getRunningEvent(t);return r.removeListener(e),this._checkRunningEvents(r),this}removeListener(t,e){return this.off(t,e)}}class Fo extends Ro{}class Oo{constructor(t){dt(this,"alphabet",t),dt(this,"base",t.length),dt(this,"_alphabetMap",{}),dt(this,"_leader",t.charAt(0));for(let e=0;e<t.length;e++)this._alphabetMap[t.charAt(e)]=e}encode(t){let e=C(t);if(0===e.length)return"";let r=[0];for(let t=0;t<e.length;++t){let n=e[t];for(let t=0;t<r.length;++t)n+=r[t]<<8,r[t]=n%this.base,n=n/this.base|0;for(;n>0;)r.push(n%this.base),n=n/this.base|0}let n="";for(let t=0;0===e[t]&&t<e.length-1;++t)n+=this._leader;for(let t=r.length-1;t>=0;--t)n+=this.alphabet[r[t]];return n}decode(t){if("string"!=typeof t)throw new TypeError("Expected String");let e=[];if(0===t.length)return new Uint8Array(e);e.push(0);for(let r=0;r<t.length;r++){let n=this._alphabetMap[t[r]];if(void 0===n)throw new Error("Non-base"+this.base+" character");let i=n;for(let t=0;t<e.length;++t)i+=e[t]*this.base,e[t]=255&i,i>>=8;for(;i>0;)e.push(255&i),i>>=8}for(let r=0;t[r]===this._leader&&r<t.length-1;++r)e.push(0);return C(new Uint8Array(e.reverse()))}}new Oo("abcdefghijklmnopqrstuvwxyz234567");const Do=new Oo("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz");var Uo;!function(t){t.sha256="sha256",t.sha512="sha512"}(Uo||(Uo={}));const Lo=new w("sha2/5.8.0");function qo(t){return"0x"+fi.ripemd160().update(C(t)).digest("hex")}function zo(t){return"0x"+fi.sha256().update(C(t)).digest("hex")}function Go(t,e,r){return Uo[t]||Lo.throwError("unsupported algorithm "+t,w.errors.UNSUPPORTED_OPERATION,{operation:"hmac",algorithm:t}),"0x"+fi.hmac(fi[t],C(e)).update(C(r)).digest("hex")}function Ho(t,e,r,n,i){let o;t=C(t),e=C(e);let s=1;const a=new Uint8Array(n),l=new Uint8Array(e.length+4);let c,u;l.set(e);for(let h=1;h<=s;h++){l[e.length]=h>>24&255,l[e.length+1]=h>>16&255,l[e.length+2]=h>>8&255,l[e.length+3]=255&h;let d=C(Go(i,t,l));o||(o=d.length,u=new Uint8Array(o),s=Math.ceil(n/o),c=n-(s-1)*o),u.set(d);for(let e=1;e<r;e++){d=C(Go(i,t,d));for(let t=0;t<o;t++)u[t]^=d[t]}const f=(h-1)*o,p=h===s?c:o;a.set(C(u).slice(0,p),f)}return N(a)}const jo=new w("wordlists/5.8.0");class Ko{constructor(t){jo.checkAbstract(new.target,Ko),dt(this,"locale",t)}split(t){return t.toLowerCase().split(/ +/g)}join(t){return t.join(" ")}static check(t){const e=[];for(let r=0;r<2048;r++){const n=t.getWord(r);if(r!==t.getWordIndex(n))return"0x";e.push(n)}return gr(e.join("\n")+"\n")}static register(t,e){e||(e=t.locale)}}let Wo=null;function Vo(t){if(null==Wo&&(Wo="AbandonAbilityAbleAboutAboveAbsentAbsorbAbstractAbsurdAbuseAccessAccidentAccountAccuseAchieveAcidAcousticAcquireAcrossActActionActorActressActualAdaptAddAddictAddressAdjustAdmitAdultAdvanceAdviceAerobicAffairAffordAfraidAgainAgeAgentAgreeAheadAimAirAirportAisleAlarmAlbumAlcoholAlertAlienAllAlleyAllowAlmostAloneAlphaAlreadyAlsoAlterAlwaysAmateurAmazingAmongAmountAmusedAnalystAnchorAncientAngerAngleAngryAnimalAnkleAnnounceAnnualAnotherAnswerAntennaAntiqueAnxietyAnyApartApologyAppearAppleApproveAprilArchArcticAreaArenaArgueArmArmedArmorArmyAroundArrangeArrestArriveArrowArtArtefactArtistArtworkAskAspectAssaultAssetAssistAssumeAsthmaAthleteAtomAttackAttendAttitudeAttractAuctionAuditAugustAuntAuthorAutoAutumnAverageAvocadoAvoidAwakeAwareAwayAwesomeAwfulAwkwardAxisBabyBachelorBaconBadgeBagBalanceBalconyBallBambooBananaBannerBarBarelyBargainBarrelBaseBasicBasketBattleBeachBeanBeautyBecauseBecomeBeefBeforeBeginBehaveBehindBelieveBelowBeltBenchBenefitBestBetrayBetterBetweenBeyondBicycleBidBikeBindBiologyBirdBirthBitterBlackBladeBlameBlanketBlastBleakBlessBlindBloodBlossomBlouseBlueBlurBlushBoardBoatBodyBoilBombBoneBonusBookBoostBorderBoringBorrowBossBottomBounceBoxBoyBracketBrainBrandBrassBraveBreadBreezeBrickBridgeBriefBrightBringBriskBroccoliBrokenBronzeBroomBrotherBrownBrushBubbleBuddyBudgetBuffaloBuildBulbBulkBulletBundleBunkerBurdenBurgerBurstBusBusinessBusyButterBuyerBuzzCabbageCabinCableCactusCageCakeCallCalmCameraCampCanCanalCancelCandyCannonCanoeCanvasCanyonCapableCapitalCaptainCarCarbonCardCargoCarpetCarryCartCaseCashCasinoCastleCasualCatCatalogCatchCategoryCattleCaughtCauseCautionCaveCeilingCeleryCementCensusCenturyCerealCertainChairChalkChampionChangeChaosChapterChargeChaseChatCheapCheckCheeseChefCherryChestChickenChiefChildChimneyChoiceChooseChronicChuckleChunkChurnCigarCinnamonCircleCitizenCityCivilClaimClapClarifyClawClayCleanClerkCleverClickClientCliffClimbClinicClipClockClogCloseClothCloudClownClubClumpClusterClutchCoachCoastCoconutCodeCoffeeCoilCoinCollectColorColumnCombineComeComfortComicCommonCompanyConcertConductConfirmCongressConnectConsiderControlConvinceCookCoolCopperCopyCoralCoreCornCorrectCostCottonCouchCountryCoupleCourseCousinCoverCoyoteCrackCradleCraftCramCraneCrashCraterCrawlCrazyCreamCreditCreekCrewCricketCrimeCrispCriticCropCrossCrouchCrowdCrucialCruelCruiseCrumbleCrunchCrushCryCrystalCubeCultureCupCupboardCuriousCurrentCurtainCurveCushionCustomCuteCycleDadDamageDampDanceDangerDaringDashDaughterDawnDayDealDebateDebrisDecadeDecemberDecideDeclineDecorateDecreaseDeerDefenseDefineDefyDegreeDelayDeliverDemandDemiseDenialDentistDenyDepartDependDepositDepthDeputyDeriveDescribeDesertDesignDeskDespairDestroyDetailDetectDevelopDeviceDevoteDiagramDialDiamondDiaryDiceDieselDietDifferDigitalDignityDilemmaDinnerDinosaurDirectDirtDisagreeDiscoverDiseaseDishDismissDisorderDisplayDistanceDivertDivideDivorceDizzyDoctorDocumentDogDollDolphinDomainDonateDonkeyDonorDoorDoseDoubleDoveDraftDragonDramaDrasticDrawDreamDressDriftDrillDrinkDripDriveDropDrumDryDuckDumbDuneDuringDustDutchDutyDwarfDynamicEagerEagleEarlyEarnEarthEasilyEastEasyEchoEcologyEconomyEdgeEditEducateEffortEggEightEitherElbowElderElectricElegantElementElephantElevatorEliteElseEmbarkEmbodyEmbraceEmergeEmotionEmployEmpowerEmptyEnableEnactEndEndlessEndorseEnemyEnergyEnforceEngageEngineEnhanceEnjoyEnlistEnoughEnrichEnrollEnsureEnterEntireEntryEnvelopeEpisodeEqualEquipEraEraseErodeErosionErrorEruptEscapeEssayEssenceEstateEternalEthicsEvidenceEvilEvokeEvolveExactExampleExcessExchangeExciteExcludeExcuseExecuteExerciseExhaustExhibitExileExistExitExoticExpandExpectExpireExplainExposeExpressExtendExtraEyeEyebrowFabricFaceFacultyFadeFaintFaithFallFalseFameFamilyFamousFanFancyFantasyFarmFashionFatFatalFatherFatigueFaultFavoriteFeatureFebruaryFederalFeeFeedFeelFemaleFenceFestivalFetchFeverFewFiberFictionFieldFigureFileFilmFilterFinalFindFineFingerFinishFireFirmFirstFiscalFishFitFitnessFixFlagFlameFlashFlatFlavorFleeFlightFlipFloatFlockFloorFlowerFluidFlushFlyFoamFocusFogFoilFoldFollowFoodFootForceForestForgetForkFortuneForumForwardFossilFosterFoundFoxFragileFrameFrequentFreshFriendFringeFrogFrontFrostFrownFrozenFruitFuelFunFunnyFurnaceFuryFutureGadgetGainGalaxyGalleryGameGapGarageGarbageGardenGarlicGarmentGasGaspGateGatherGaugeGazeGeneralGeniusGenreGentleGenuineGestureGhostGiantGiftGiggleGingerGiraffeGirlGiveGladGlanceGlareGlassGlideGlimpseGlobeGloomGloryGloveGlowGlueGoatGoddessGoldGoodGooseGorillaGospelGossipGovernGownGrabGraceGrainGrantGrapeGrassGravityGreatGreenGridGriefGritGroceryGroupGrowGruntGuardGuessGuideGuiltGuitarGunGymHabitHairHalfHammerHamsterHandHappyHarborHardHarshHarvestHatHaveHawkHazardHeadHealthHeartHeavyHedgehogHeightHelloHelmetHelpHenHeroHiddenHighHillHintHipHireHistoryHobbyHockeyHoldHoleHolidayHollowHomeHoneyHoodHopeHornHorrorHorseHospitalHostHotelHourHoverHubHugeHumanHumbleHumorHundredHungryHuntHurdleHurryHurtHusbandHybridIceIconIdeaIdentifyIdleIgnoreIllIllegalIllnessImageImitateImmenseImmuneImpactImposeImproveImpulseInchIncludeIncomeIncreaseIndexIndicateIndoorIndustryInfantInflictInformInhaleInheritInitialInjectInjuryInmateInnerInnocentInputInquiryInsaneInsectInsideInspireInstallIntactInterestIntoInvestInviteInvolveIronIslandIsolateIssueItemIvoryJacketJaguarJarJazzJealousJeansJellyJewelJobJoinJokeJourneyJoyJudgeJuiceJumpJungleJuniorJunkJustKangarooKeenKeepKetchupKeyKickKidKidneyKindKingdomKissKitKitchenKiteKittenKiwiKneeKnifeKnockKnowLabLabelLaborLadderLadyLakeLampLanguageLaptopLargeLaterLatinLaughLaundryLavaLawLawnLawsuitLayerLazyLeaderLeafLearnLeaveLectureLeftLegLegalLegendLeisureLemonLendLengthLensLeopardLessonLetterLevelLiarLibertyLibraryLicenseLifeLiftLightLikeLimbLimitLinkLionLiquidListLittleLiveLizardLoadLoanLobsterLocalLockLogicLonelyLongLoopLotteryLoudLoungeLoveLoyalLuckyLuggageLumberLunarLunchLuxuryLyricsMachineMadMagicMagnetMaidMailMainMajorMakeMammalManManageMandateMangoMansionManualMapleMarbleMarchMarginMarineMarketMarriageMaskMassMasterMatchMaterialMathMatrixMatterMaximumMazeMeadowMeanMeasureMeatMechanicMedalMediaMelodyMeltMemberMemoryMentionMenuMercyMergeMeritMerryMeshMessageMetalMethodMiddleMidnightMilkMillionMimicMindMinimumMinorMinuteMiracleMirrorMiseryMissMistakeMixMixedMixtureMobileModelModifyMomMomentMonitorMonkeyMonsterMonthMoonMoralMoreMorningMosquitoMotherMotionMotorMountainMouseMoveMovieMuchMuffinMuleMultiplyMuscleMuseumMushroomMusicMustMutualMyselfMysteryMythNaiveNameNapkinNarrowNastyNationNatureNearNeckNeedNegativeNeglectNeitherNephewNerveNestNetNetworkNeutralNeverNewsNextNiceNightNobleNoiseNomineeNoodleNormalNorthNoseNotableNoteNothingNoticeNovelNowNuclearNumberNurseNutOakObeyObjectObligeObscureObserveObtainObviousOccurOceanOctoberOdorOffOfferOfficeOftenOilOkayOldOliveOlympicOmitOnceOneOnionOnlineOnlyOpenOperaOpinionOpposeOptionOrangeOrbitOrchardOrderOrdinaryOrganOrientOriginalOrphanOstrichOtherOutdoorOuterOutputOutsideOvalOvenOverOwnOwnerOxygenOysterOzonePactPaddlePagePairPalacePalmPandaPanelPanicPantherPaperParadeParentParkParrotPartyPassPatchPathPatientPatrolPatternPausePavePaymentPeacePeanutPearPeasantPelicanPenPenaltyPencilPeoplePepperPerfectPermitPersonPetPhonePhotoPhrasePhysicalPianoPicnicPicturePiecePigPigeonPillPilotPinkPioneerPipePistolPitchPizzaPlacePlanetPlasticPlatePlayPleasePledgePluckPlugPlungePoemPoetPointPolarPolePolicePondPonyPoolPopularPortionPositionPossiblePostPotatoPotteryPovertyPowderPowerPracticePraisePredictPreferPreparePresentPrettyPreventPricePridePrimaryPrintPriorityPrisonPrivatePrizeProblemProcessProduceProfitProgramProjectPromoteProofPropertyProsperProtectProudProvidePublicPuddingPullPulpPulsePumpkinPunchPupilPuppyPurchasePurityPurposePursePushPutPuzzlePyramidQualityQuantumQuarterQuestionQuickQuitQuizQuoteRabbitRaccoonRaceRackRadarRadioRailRainRaiseRallyRampRanchRandomRangeRapidRareRateRatherRavenRawRazorReadyRealReasonRebelRebuildRecallReceiveRecipeRecordRecycleReduceReflectReformRefuseRegionRegretRegularRejectRelaxReleaseReliefRelyRemainRememberRemindRemoveRenderRenewRentReopenRepairRepeatReplaceReportRequireRescueResembleResistResourceResponseResultRetireRetreatReturnReunionRevealReviewRewardRhythmRibRibbonRiceRichRideRidgeRifleRightRigidRingRiotRippleRiskRitualRivalRiverRoadRoastRobotRobustRocketRomanceRoofRookieRoomRoseRotateRoughRoundRouteRoyalRubberRudeRugRuleRunRunwayRuralSadSaddleSadnessSafeSailSaladSalmonSalonSaltSaluteSameSampleSandSatisfySatoshiSauceSausageSaveSayScaleScanScareScatterSceneSchemeSchoolScienceScissorsScorpionScoutScrapScreenScriptScrubSeaSearchSeasonSeatSecondSecretSectionSecuritySeedSeekSegmentSelectSellSeminarSeniorSenseSentenceSeriesServiceSessionSettleSetupSevenShadowShaftShallowShareShedShellSheriffShieldShiftShineShipShiverShockShoeShootShopShortShoulderShoveShrimpShrugShuffleShySiblingSickSideSiegeSightSignSilentSilkSillySilverSimilarSimpleSinceSingSirenSisterSituateSixSizeSkateSketchSkiSkillSkinSkirtSkullSlabSlamSleepSlenderSliceSlideSlightSlimSloganSlotSlowSlushSmallSmartSmileSmokeSmoothSnackSnakeSnapSniffSnowSoapSoccerSocialSockSodaSoftSolarSoldierSolidSolutionSolveSomeoneSongSoonSorrySortSoulSoundSoupSourceSouthSpaceSpareSpatialSpawnSpeakSpecialSpeedSpellSpendSphereSpiceSpiderSpikeSpinSpiritSplitSpoilSponsorSpoonSportSpotSpraySpreadSpringSpySquareSqueezeSquirrelStableStadiumStaffStageStairsStampStandStartStateStaySteakSteelStemStepStereoStickStillStingStockStomachStoneStoolStoryStoveStrategyStreetStrikeStrongStruggleStudentStuffStumbleStyleSubjectSubmitSubwaySuccessSuchSuddenSufferSugarSuggestSuitSummerSunSunnySunsetSuperSupplySupremeSureSurfaceSurgeSurpriseSurroundSurveySuspectSustainSwallowSwampSwapSwarmSwearSweetSwiftSwimSwingSwitchSwordSymbolSymptomSyrupSystemTableTackleTagTailTalentTalkTankTapeTargetTaskTasteTattooTaxiTeachTeamTellTenTenantTennisTentTermTestTextThankThatThemeThenTheoryThereTheyThingThisThoughtThreeThriveThrowThumbThunderTicketTideTigerTiltTimberTimeTinyTipTiredTissueTitleToastTobaccoTodayToddlerToeTogetherToiletTokenTomatoTomorrowToneTongueTonightToolToothTopTopicToppleTorchTornadoTortoiseTossTotalTouristTowardTowerTownToyTrackTradeTrafficTragicTrainTransferTrapTrashTravelTrayTreatTreeTrendTrialTribeTrickTriggerTrimTripTrophyTroubleTruckTrueTrulyTrumpetTrustTruthTryTubeTuitionTumbleTunaTunnelTurkeyTurnTurtleTwelveTwentyTwiceTwinTwistTwoTypeTypicalUglyUmbrellaUnableUnawareUncleUncoverUnderUndoUnfairUnfoldUnhappyUniformUniqueUnitUniverseUnknownUnlockUntilUnusualUnveilUpdateUpgradeUpholdUponUpperUpsetUrbanUrgeUsageUseUsedUsefulUselessUsualUtilityVacantVacuumVagueValidValleyValveVanVanishVaporVariousVastVaultVehicleVelvetVendorVentureVenueVerbVerifyVersionVeryVesselVeteranViableVibrantViciousVictoryVideoViewVillageVintageViolinVirtualVirusVisaVisitVisualVitalVividVocalVoiceVoidVolcanoVolumeVoteVoyageWageWagonWaitWalkWallWalnutWantWarfareWarmWarriorWashWaspWasteWaterWaveWayWealthWeaponWearWeaselWeatherWebWeddingWeekendWeirdWelcomeWestWetWhaleWhatWheatWheelWhenWhereWhipWhisperWideWidthWifeWildWillWinWindowWineWingWinkWinnerWinterWireWisdomWiseWishWitnessWolfWomanWonderWoodWoolWordWorkWorldWorryWorthWrapWreckWrestleWristWriteWrongYardYearYellowYouYoungYouthZebraZeroZoneZoo".replace(/([A-Z])/g," $1").toLowerCase().substring(1).split(" "),"0x3c8acc1e7b08d8e76f9fda015ef48dc8c710a73cb7e0f77b2c18a9b5a7adde60"!==Ko.check(t)))throw Wo=null,new Error("BIP39 Wordlist for en (English) FAILED")}const $o=new class extends Ko{constructor(){super("en")}getWord(t){return Vo(this),Wo[t]}getWordIndex(t){return Vo(this),Wo.indexOf(t)}};Ko.register($o);const Jo={en:$o},Qo=new w("hdnode/5.8.0"),Yo=W.from("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),Xo=$e("Bitcoin seed"),Zo=2147483648;function ts(t){return(1<<t)-1<<8-t}function es(t){return(1<<t)-1}function rs(t){return D(N(t),32)}function ns(t){return Do.encode(x([t,B(zo(zo(t)),0,4)]))}function is(t){if(null==t)return Jo.en;if("string"==typeof t){const e=Jo[t];return null==e&&Qo.throwArgumentError("unknown locale","wordlist",t),e}return t}const os={},ss="m/44'/60'/0'/0/0";class as{constructor(t,e,r,n,i,o,s,a){if(t!==os)throw new Error("HDNode constructor cannot be called directly");if(e){const t=new Zi(e);dt(this,"privateKey",t.privateKey),dt(this,"publicKey",t.compressedPublicKey)}else dt(this,"privateKey",null),dt(this,"publicKey",N(r));dt(this,"parentFingerprint",n),dt(this,"fingerprint",B(qo(zo(this.publicKey)),0,4)),dt(this,"address",lo(this.publicKey)),dt(this,"chainCode",i),dt(this,"index",o),dt(this,"depth",s),null==a?(dt(this,"mnemonic",null),dt(this,"path",null)):"string"==typeof a?(dt(this,"mnemonic",null),dt(this,"path",a)):(dt(this,"mnemonic",a),dt(this,"path",a.path))}get extendedKey(){if(this.depth>=256)throw new Error("Depth too large!");return ns(x([null!=this.privateKey?"0x0488ADE4":"0x0488B21E",N(this.depth),this.parentFingerprint,D(N(this.index),4),this.chainCode,null!=this.privateKey?x(["0x00",this.privateKey]):this.publicKey]))}neuter(){return new as(os,null,this.publicKey,this.parentFingerprint,this.chainCode,this.index,this.depth,this.path)}_derive(t){if(t>4294967295)throw new Error("invalid index - "+String(t));let e=this.path;e&&(e+="/"+(2147483647&t));const r=new Uint8Array(37);if(t&Zo){if(!this.privateKey)throw new Error("cannot derive child of neutered node");r.set(C(this.privateKey),1),e&&(e+="'")}else r.set(C(this.publicKey));for(let e=24;e>=0;e-=8)r[33+(e>>3)]=t>>24-e&255;const n=C(Go(Uo.sha512,this.chainCode,r)),i=n.slice(0,32),o=n.slice(32);let s=null,a=null;if(this.privateKey)s=rs(W.from(i).add(this.privateKey).mod(Yo));else{a=new Zi(N(i))._addPoint(this.publicKey)}let l=e;const c=this.mnemonic;return c&&(l=Object.freeze({phrase:c.phrase,path:e,locale:c.locale||"en"})),new as(os,s,a,this.fingerprint,rs(o),t,this.depth+1,l)}derivePath(t){const e=t.split("/");if(0===e.length||"m"===e[0]&&0!==this.depth)throw new Error("invalid path - "+t);"m"===e[0]&&e.shift();let r=this;for(let t=0;t<e.length;t++){const n=e[t];if(n.match(/^[0-9]+'$/)){const t=parseInt(n.substring(0,n.length-1));if(t>=Zo)throw new Error("invalid path index - "+n);r=r._derive(Zo+t)}else{if(!n.match(/^[0-9]+$/))throw new Error("invalid path component - "+n);{const t=parseInt(n);if(t>=Zo)throw new Error("invalid path index - "+n);r=r._derive(t)}}}return r}static _fromSeed(t,e){const r=C(t);if(r.length<16||r.length>64)throw new Error("invalid seed");const n=C(Go(Uo.sha512,Xo,r));return new as(os,rs(n.slice(0,32)),null,"0x00000000",rs(n.slice(32)),0,0,e)}static fromMnemonic(t,e,r){return t=us(cs(t,r=is(r)),r),as._fromSeed(ls(t,e),{phrase:t,path:"m",locale:r.locale})}static fromSeed(t){return as._fromSeed(t,null)}static fromExtendedKey(t){const e=Do.decode(t);82===e.length&&ns(e.slice(0,78))===t||Qo.throwArgumentError("invalid extended key","extendedKey","[REDACTED]");const r=e[4],n=N(e.slice(5,9)),i=parseInt(N(e.slice(9,13)).substring(2),16),o=N(e.slice(13,45)),s=e.slice(45,78);switch(N(e.slice(0,4))){case"0x0488b21e":case"0x043587cf":return new as(os,null,N(s),n,o,i,r,null);case"0x0488ade4":case"0x04358394 ":if(0!==s[0])break;return new as(os,N(s.slice(1)),null,n,o,i,r,null)}return Qo.throwArgumentError("invalid extended key","extendedKey","[REDACTED]")}}function ls(t,e){e||(e="");const r=$e("mnemonic"+e,He.NFKD);return Ho($e(t,He.NFKD),r,2048,64,"sha512")}function cs(t,e){e=is(e),Qo.checkNormalize();const r=e.split(t);if(r.length%3!=0)throw new Error("invalid mnemonic");const n=C(new Uint8Array(Math.ceil(11*r.length/8)));let i=0;for(let t=0;t<r.length;t++){let o=e.getWordIndex(r[t].normalize("NFKD"));if(-1===o)throw new Error("invalid mnemonic");for(let t=0;t<11;t++)o&1<<10-t&&(n[i>>3]|=1<<7-i%8),i++}const o=32*r.length/3,s=ts(r.length/3);if((C(zo(n.slice(0,o/8)))[0]&s)!==(n[n.length-1]&s))throw new Error("invalid checksum");return N(n.slice(0,o/8))}function us(t,e){if(e=is(e),(t=C(t)).length%4!=0||t.length<16||t.length>32)throw new Error("invalid entropy");const r=[0];let n=11;for(let e=0;e<t.length;e++)n>8?(r[r.length-1]<<=8,r[r.length-1]|=t[e],n-=8):(r[r.length-1]<<=n,r[r.length-1]|=t[e]>>8-n,r.push(t[e]&es(8-n)),n+=3);const i=t.length/4,o=C(zo(t))[0]&ts(i);return r[r.length-1]<<=i,r[r.length-1]|=o>>8-i,e.join(r.map(t=>e.getWord(t)))}const hs=new w("random/5.8.0");const ds=function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if("undefined"!=typeof global)return global;throw new Error("unable to locate global object")}();let fs=ds.crypto||ds.msCrypto;function ps(t){(t<=0||t>1024||t%1||t!=t)&&hs.throwArgumentError("invalid length","length",t);const e=new Uint8Array(t);return fs.getRandomValues(e),C(e)}function ms(t){for(let e=(t=t.slice()).length-1;e>0;e--){const r=Math.floor(Math.random()*(e+1)),n=t[e];t[e]=t[r],t[r]=n}return t}fs&&fs.getRandomValues||(hs.warn("WARNING: Missing strong random number source"),fs={getRandomValues:function(t){return hs.throwError("no secure random source avaialble",w.errors.UNSUPPORTED_OPERATION,{operation:"crypto.getRandomValues"})}});var gs,vs={exports:{}};var ws=(gs||(gs=1,function(t){!function(){function e(t){return parseInt(t)===t}function r(t){if(!e(t.length))return!1;for(var r=0;r<t.length;r++)if(!e(t[r])||t[r]<0||t[r]>255)return!1;return!0}function n(t,n){if(t.buffer&&ArrayBuffer.isView(t)&&"Uint8Array"===t.name)return n&&(t=t.slice?t.slice():Array.prototype.slice.call(t)),t;if(Array.isArray(t)){if(!r(t))throw new Error("Array contains invalid value: "+t);return new Uint8Array(t)}if(e(t.length)&&r(t))return new Uint8Array(t);throw new Error("unsupported array-like object")}function i(t){return new Uint8Array(t)}function o(t,e,r,n,i){null==n&&null==i||(t=t.slice?t.slice(n,i):Array.prototype.slice.call(t,n,i)),e.set(t,r)}var s,a={toBytes:function(t){var e=[],r=0;for(t=encodeURI(t);r<t.length;){var i=t.charCodeAt(r++);37===i?(e.push(parseInt(t.substr(r,2),16)),r+=2):e.push(i)}return n(e)},fromBytes:function(t){for(var e=[],r=0;r<t.length;){var n=t[r];n<128?(e.push(String.fromCharCode(n)),r++):n>191&&n<224?(e.push(String.fromCharCode((31&n)<<6|63&t[r+1])),r+=2):(e.push(String.fromCharCode((15&n)<<12|(63&t[r+1])<<6|63&t[r+2])),r+=3)}return e.join("")}},l=(s="0123456789abcdef",{toBytes:function(t){for(var e=[],r=0;r<t.length;r+=2)e.push(parseInt(t.substr(r,2),16));return e},fromBytes:function(t){for(var e=[],r=0;r<t.length;r++){var n=t[r];e.push(s[(240&n)>>4]+s[15&n])}return e.join("")}}),c={16:10,24:12,32:14},u=[1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145],h=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],d=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],f=[3328402341,4168907908,4000806809,4135287693,4294111757,3597364157,3731845041,2445657428,1613770832,33620227,3462883241,1445669757,3892248089,3050821474,1303096294,3967186586,2412431941,528646813,2311702848,4202528135,4026202645,2992200171,2387036105,4226871307,1101901292,3017069671,1604494077,1169141738,597466303,1403299063,3832705686,2613100635,1974974402,3791519004,1033081774,1277568618,1815492186,2118074177,4126668546,2211236943,1748251740,1369810420,3521504564,4193382664,3799085459,2883115123,1647391059,706024767,134480908,2512897874,1176707941,2646852446,806885416,932615841,168101135,798661301,235341577,605164086,461406363,3756188221,3454790438,1311188841,2142417613,3933566367,302582043,495158174,1479289972,874125870,907746093,3698224818,3025820398,1537253627,2756858614,1983593293,3084310113,2108928974,1378429307,3722699582,1580150641,327451799,2790478837,3117535592,0,3253595436,1075847264,3825007647,2041688520,3059440621,3563743934,2378943302,1740553945,1916352843,2487896798,2555137236,2958579944,2244988746,3151024235,3320835882,1336584933,3992714006,2252555205,2588757463,1714631509,293963156,2319795663,3925473552,67240454,4269768577,2689618160,2017213508,631218106,1269344483,2723238387,1571005438,2151694528,93294474,1066570413,563977660,1882732616,4059428100,1673313503,2008463041,2950355573,1109467491,537923632,3858759450,4260623118,3218264685,2177748300,403442708,638784309,3287084079,3193921505,899127202,2286175436,773265209,2479146071,1437050866,4236148354,2050833735,3362022572,3126681063,840505643,3866325909,3227541664,427917720,2655997905,2749160575,1143087718,1412049534,999329963,193497219,2353415882,3354324521,1807268051,672404540,2816401017,3160301282,369822493,2916866934,3688947771,1681011286,1949973070,336202270,2454276571,201721354,1210328172,3093060836,2680341085,3184776046,1135389935,3294782118,965841320,831886756,3554993207,4068047243,3588745010,2345191491,1849112409,3664604599,26054028,2983581028,2622377682,1235855840,3630984372,2891339514,4092916743,3488279077,3395642799,4101667470,1202630377,268961816,1874508501,4034427016,1243948399,1546530418,941366308,1470539505,1941222599,2546386513,3421038627,2715671932,3899946140,1042226977,2521517021,1639824860,227249030,260737669,3765465232,2084453954,1907733956,3429263018,2420656344,100860677,4160157185,470683154,3261161891,1781871967,2924959737,1773779408,394692241,2579611992,974986535,664706745,3655459128,3958962195,731420851,571543859,3530123707,2849626480,126783113,865375399,765172662,1008606754,361203602,3387549984,2278477385,2857719295,1344809080,2782912378,59542671,1503764984,160008576,437062935,1707065306,3622233649,2218934982,3496503480,2185314755,697932208,1512910199,504303377,2075177163,2824099068,1841019862,739644986],p=[2781242211,2230877308,2582542199,2381740923,234877682,3184946027,2984144751,1418839493,1348481072,50462977,2848876391,2102799147,434634494,1656084439,3863849899,2599188086,1167051466,2636087938,1082771913,2281340285,368048890,3954334041,3381544775,201060592,3963727277,1739838676,4250903202,3930435503,3206782108,4149453988,2531553906,1536934080,3262494647,484572669,2923271059,1783375398,1517041206,1098792767,49674231,1334037708,1550332980,4098991525,886171109,150598129,2481090929,1940642008,1398944049,1059722517,201851908,1385547719,1699095331,1587397571,674240536,2704774806,252314885,3039795866,151914247,908333586,2602270848,1038082786,651029483,1766729511,3447698098,2682942837,454166793,2652734339,1951935532,775166490,758520603,3000790638,4004797018,4217086112,4137964114,1299594043,1639438038,3464344499,2068982057,1054729187,1901997871,2534638724,4121318227,1757008337,0,750906861,1614815264,535035132,3363418545,3988151131,3201591914,1183697867,3647454910,1265776953,3734260298,3566750796,3903871064,1250283471,1807470800,717615087,3847203498,384695291,3313910595,3617213773,1432761139,2484176261,3481945413,283769337,100925954,2180939647,4037038160,1148730428,3123027871,3813386408,4087501137,4267549603,3229630528,2315620239,2906624658,3156319645,1215313976,82966005,3747855548,3245848246,1974459098,1665278241,807407632,451280895,251524083,1841287890,1283575245,337120268,891687699,801369324,3787349855,2721421207,3431482436,959321879,1469301956,4065699751,2197585534,1199193405,2898814052,3887750493,724703513,2514908019,2696962144,2551808385,3516813135,2141445340,1715741218,2119445034,2872807568,2198571144,3398190662,700968686,3547052216,1009259540,2041044702,3803995742,487983883,1991105499,1004265696,1449407026,1316239930,504629770,3683797321,168560134,1816667172,3837287516,1570751170,1857934291,4014189740,2797888098,2822345105,2754712981,936633572,2347923833,852879335,1133234376,1500395319,3084545389,2348912013,1689376213,3533459022,3762923945,3034082412,4205598294,133428468,634383082,2949277029,2398386810,3913789102,403703816,3580869306,2297460856,1867130149,1918643758,607656988,4049053350,3346248884,1368901318,600565992,2090982877,2632479860,557719327,3717614411,3697393085,2249034635,2232388234,2430627952,1115438654,3295786421,2865522278,3633334344,84280067,33027830,303828494,2747425121,1600795957,4188952407,3496589753,2434238086,1486471617,658119965,3106381470,953803233,334231800,3005978776,857870609,3151128937,1890179545,2298973838,2805175444,3056442267,574365214,2450884487,550103529,1233637070,4289353045,2018519080,2057691103,2399374476,4166623649,2148108681,387583245,3664101311,836232934,3330556482,3100665960,3280093505,2955516313,2002398509,287182607,3413881008,4238890068,3597515707,975967766],m=[1671808611,2089089148,2006576759,2072901243,4061003762,1807603307,1873927791,3310653893,810573872,16974337,1739181671,729634347,4263110654,3613570519,2883997099,1989864566,3393556426,2191335298,3376449993,2106063485,4195741690,1508618841,1204391495,4027317232,2917941677,3563566036,2734514082,2951366063,2629772188,2767672228,1922491506,3227229120,3082974647,4246528509,2477669779,644500518,911895606,1061256767,4144166391,3427763148,878471220,2784252325,3845444069,4043897329,1905517169,3631459288,827548209,356461077,67897348,3344078279,593839651,3277757891,405286936,2527147926,84871685,2595565466,118033927,305538066,2157648768,3795705826,3945188843,661212711,2999812018,1973414517,152769033,2208177539,745822252,439235610,455947803,1857215598,1525593178,2700827552,1391895634,994932283,3596728278,3016654259,695947817,3812548067,795958831,2224493444,1408607827,3513301457,0,3979133421,543178784,4229948412,2982705585,1542305371,1790891114,3410398667,3201918910,961245753,1256100938,1289001036,1491644504,3477767631,3496721360,4012557807,2867154858,4212583931,1137018435,1305975373,861234739,2241073541,1171229253,4178635257,33948674,2139225727,1357946960,1011120188,2679776671,2833468328,1374921297,2751356323,1086357568,2408187279,2460827538,2646352285,944271416,4110742005,3168756668,3066132406,3665145818,560153121,271589392,4279952895,4077846003,3530407890,3444343245,202643468,322250259,3962553324,1608629855,2543990167,1154254916,389623319,3294073796,2817676711,2122513534,1028094525,1689045092,1575467613,422261273,1939203699,1621147744,2174228865,1339137615,3699352540,577127458,712922154,2427141008,2290289544,1187679302,3995715566,3100863416,339486740,3732514782,1591917662,186455563,3681988059,3762019296,844522546,978220090,169743370,1239126601,101321734,611076132,1558493276,3260915650,3547250131,2901361580,1655096418,2443721105,2510565781,3828863972,2039214713,3878868455,3359869896,928607799,1840765549,2374762893,3580146133,1322425422,2850048425,1823791212,1459268694,4094161908,3928346602,1706019429,2056189050,2934523822,135794696,3134549946,2022240376,628050469,779246638,472135708,2800834470,3032970164,3327236038,3894660072,3715932637,1956440180,522272287,1272813131,3185336765,2340818315,2323976074,1888542832,1044544574,3049550261,1722469478,1222152264,50660867,4127324150,236067854,1638122081,895445557,1475980887,3117443513,2257655686,3243809217,489110045,2662934430,3778599393,4162055160,2561878936,288563729,1773916777,3648039385,2391345038,2493985684,2612407707,505560094,2274497927,3911240169,3460925390,1442818645,678973480,3749357023,2358182796,2717407649,2306869641,219617805,3218761151,3862026214,1120306242,1756942440,1103331905,2578459033,762796589,252780047,2966125488,1425844308,3151392187,372911126],g=[1667474886,2088535288,2004326894,2071694838,4075949567,1802223062,1869591006,3318043793,808472672,16843522,1734846926,724270422,4278065639,3621216949,2880169549,1987484396,3402253711,2189597983,3385409673,2105378810,4210693615,1499065266,1195886990,4042263547,2913856577,3570689971,2728590687,2947541573,2627518243,2762274643,1920112356,3233831835,3082273397,4261223649,2475929149,640051788,909531756,1061110142,4160160501,3435941763,875846760,2779116625,3857003729,4059105529,1903268834,3638064043,825316194,353713962,67374088,3351728789,589522246,3284360861,404236336,2526454071,84217610,2593830191,117901582,303183396,2155911963,3806477791,3958056653,656894286,2998062463,1970642922,151591698,2206440989,741110872,437923380,454765878,1852748508,1515908788,2694904667,1381168804,993742198,3604373943,3014905469,690584402,3823320797,791638366,2223281939,1398011302,3520161977,0,3991743681,538992704,4244381667,2981218425,1532751286,1785380564,3419096717,3200178535,960056178,1246420628,1280103576,1482221744,3486468741,3503319995,4025428677,2863326543,4227536621,1128514950,1296947098,859002214,2240123921,1162203018,4193849577,33687044,2139062782,1347481760,1010582648,2678045221,2829640523,1364325282,2745433693,1077985408,2408548869,2459086143,2644360225,943212656,4126475505,3166494563,3065430391,3671750063,555836226,269496352,4294908645,4092792573,3537006015,3452783745,202118168,320025894,3974901699,1600119230,2543297077,1145359496,387397934,3301201811,2812801621,2122220284,1027426170,1684319432,1566435258,421079858,1936954854,1616945344,2172753945,1330631070,3705438115,572679748,707427924,2425400123,2290647819,1179044492,4008585671,3099120491,336870440,3739122087,1583276732,185277718,3688593069,3772791771,842159716,976899700,168435220,1229577106,101059084,606366792,1549591736,3267517855,3553849021,2897014595,1650632388,2442242105,2509612081,3840161747,2038008818,3890688725,3368567691,926374254,1835907034,2374863873,3587531953,1313788572,2846482505,1819063512,1448540844,4109633523,3941213647,1701162954,2054852340,2930698567,134748176,3132806511,2021165296,623210314,774795868,471606328,2795958615,3031746419,3334885783,3907527627,3722280097,1953799400,522133822,1263263126,3183336545,2341176845,2324333839,1886425312,1044267644,3048588401,1718004428,1212733584,50529542,4143317495,235803164,1633788866,892690282,1465383342,3115962473,2256965911,3250673817,488449850,2661202215,3789633753,4177007595,2560144171,286339874,1768537042,3654906025,2391705863,2492770099,2610673197,505291324,2273808917,3924369609,3469625735,1431699370,673740880,3755965093,2358021891,2711746649,2307489801,218961690,3217021541,3873845719,1111672452,1751693520,1094828930,2576986153,757954394,252645662,2964376443,1414855848,3149649517,370555436],v=[1374988112,2118214995,437757123,975658646,1001089995,530400753,2902087851,1273168787,540080725,2910219766,2295101073,4110568485,1340463100,3307916247,641025152,3043140495,3736164937,632953703,1172967064,1576976609,3274667266,2169303058,2370213795,1809054150,59727847,361929877,3211623147,2505202138,3569255213,1484005843,1239443753,2395588676,1975683434,4102977912,2572697195,666464733,3202437046,4035489047,3374361702,2110667444,1675577880,3843699074,2538681184,1649639237,2976151520,3144396420,4269907996,4178062228,1883793496,2403728665,2497604743,1383856311,2876494627,1917518562,3810496343,1716890410,3001755655,800440835,2261089178,3543599269,807962610,599762354,33778362,3977675356,2328828971,2809771154,4077384432,1315562145,1708848333,101039829,3509871135,3299278474,875451293,2733856160,92987698,2767645557,193195065,1080094634,1584504582,3178106961,1042385657,2531067453,3711829422,1306967366,2438237621,1908694277,67556463,1615861247,429456164,3602770327,2302690252,1742315127,2968011453,126454664,3877198648,2043211483,2709260871,2084704233,4169408201,0,159417987,841739592,504459436,1817866830,4245618683,260388950,1034867998,908933415,168810852,1750902305,2606453969,607530554,202008497,2472011535,3035535058,463180190,2160117071,1641816226,1517767529,470948374,3801332234,3231722213,1008918595,303765277,235474187,4069246893,766945465,337553864,1475418501,2943682380,4003061179,2743034109,4144047775,1551037884,1147550661,1543208500,2336434550,3408119516,3069049960,3102011747,3610369226,1113818384,328671808,2227573024,2236228733,3535486456,2935566865,3341394285,496906059,3702665459,226906860,2009195472,733156972,2842737049,294930682,1206477858,2835123396,2700099354,1451044056,573804783,2269728455,3644379585,2362090238,2564033334,2801107407,2776292904,3669462566,1068351396,742039012,1350078989,1784663195,1417561698,4136440770,2430122216,775550814,2193862645,2673705150,1775276924,1876241833,3475313331,3366754619,270040487,3902563182,3678124923,3441850377,1851332852,3969562369,2203032232,3868552805,2868897406,566021896,4011190502,3135740889,1248802510,3936291284,699432150,832877231,708780849,3332740144,899835584,1951317047,4236429990,3767586992,866637845,4043610186,1106041591,2144161806,395441711,1984812685,1139781709,3433712980,3835036895,2664543715,1282050075,3240894392,1181045119,2640243204,25965917,4203181171,4211818798,3009879386,2463879762,3910161971,1842759443,2597806476,933301370,1509430414,3943906441,3467192302,3076639029,3776767469,2051518780,2631065433,1441952575,404016761,1942435775,1408749034,1610459739,3745345300,2017778566,3400528769,3110650942,941896748,3265478751,371049330,3168937228,675039627,4279080257,967311729,135050206,3635733660,1683407248,2076935265,3576870512,1215061108,3501741890],w=[1347548327,1400783205,3273267108,2520393566,3409685355,4045380933,2880240216,2471224067,1428173050,4138563181,2441661558,636813900,4233094615,3620022987,2149987652,2411029155,1239331162,1730525723,2554718734,3781033664,46346101,310463728,2743944855,3328955385,3875770207,2501218972,3955191162,3667219033,768917123,3545789473,692707433,1150208456,1786102409,2029293177,1805211710,3710368113,3065962831,401639597,1724457132,3028143674,409198410,2196052529,1620529459,1164071807,3769721975,2226875310,486441376,2499348523,1483753576,428819965,2274680428,3075636216,598438867,3799141122,1474502543,711349675,129166120,53458370,2592523643,2782082824,4063242375,2988687269,3120694122,1559041666,730517276,2460449204,4042459122,2706270690,3446004468,3573941694,533804130,2328143614,2637442643,2695033685,839224033,1973745387,957055980,2856345839,106852767,1371368976,4181598602,1033297158,2933734917,1179510461,3046200461,91341917,1862534868,4284502037,605657339,2547432937,3431546947,2003294622,3182487618,2282195339,954669403,3682191598,1201765386,3917234703,3388507166,0,2198438022,1211247597,2887651696,1315723890,4227665663,1443857720,507358933,657861945,1678381017,560487590,3516619604,975451694,2970356327,261314535,3535072918,2652609425,1333838021,2724322336,1767536459,370938394,182621114,3854606378,1128014560,487725847,185469197,2918353863,3106780840,3356761769,2237133081,1286567175,3152976349,4255350624,2683765030,3160175349,3309594171,878443390,1988838185,3704300486,1756818940,1673061617,3403100636,272786309,1075025698,545572369,2105887268,4174560061,296679730,1841768865,1260232239,4091327024,3960309330,3497509347,1814803222,2578018489,4195456072,575138148,3299409036,446754879,3629546796,4011996048,3347532110,3252238545,4270639778,915985419,3483825537,681933534,651868046,2755636671,3828103837,223377554,2607439820,1649704518,3270937875,3901806776,1580087799,4118987695,3198115200,2087309459,2842678573,3016697106,1003007129,2802849917,1860738147,2077965243,164439672,4100872472,32283319,2827177882,1709610350,2125135846,136428751,3874428392,3652904859,3460984630,3572145929,3593056380,2939266226,824852259,818324884,3224740454,930369212,2801566410,2967507152,355706840,1257309336,4148292826,243256656,790073846,2373340630,1296297904,1422699085,3756299780,3818836405,457992840,3099667487,2135319889,77422314,1560382517,1945798516,788204353,1521706781,1385356242,870912086,325965383,2358957921,2050466060,2388260884,2313884476,4006521127,901210569,3990953189,1014646705,1503449823,1062597235,2031621326,3212035895,3931371469,1533017514,350174575,2256028891,2177544179,1052338372,741876788,1606591296,1914052035,213705253,2334669897,1107234197,1899603969,3725069491,2631447780,2422494913,1635502980,1893020342,1950903388,1120974935],y=[2807058932,1699970625,2764249623,1586903591,1808481195,1173430173,1487645946,59984867,4199882800,1844882806,1989249228,1277555970,3623636965,3419915562,1149249077,2744104290,1514790577,459744698,244860394,3235995134,1963115311,4027744588,2544078150,4190530515,1608975247,2627016082,2062270317,1507497298,2200818878,567498868,1764313568,3359936201,2305455554,2037970062,1047239e3,1910319033,1337376481,2904027272,2892417312,984907214,1243112415,830661914,861968209,2135253587,2011214180,2927934315,2686254721,731183368,1750626376,4246310725,1820824798,4172763771,3542330227,48394827,2404901663,2871682645,671593195,3254988725,2073724613,145085239,2280796200,2779915199,1790575107,2187128086,472615631,3029510009,4075877127,3802222185,4107101658,3201631749,1646252340,4270507174,1402811438,1436590835,3778151818,3950355702,3963161475,4020912224,2667994737,273792366,2331590177,104699613,95345982,3175501286,2377486676,1560637892,3564045318,369057872,4213447064,3919042237,1137477952,2658625497,1119727848,2340947849,1530455833,4007360968,172466556,266959938,516552836,0,2256734592,3980931627,1890328081,1917742170,4294704398,945164165,3575528878,958871085,3647212047,2787207260,1423022939,775562294,1739656202,3876557655,2530391278,2443058075,3310321856,547512796,1265195639,437656594,3121275539,719700128,3762502690,387781147,218828297,3350065803,2830708150,2848461854,428169201,122466165,3720081049,1627235199,648017665,4122762354,1002783846,2117360635,695634755,3336358691,4234721005,4049844452,3704280881,2232435299,574624663,287343814,612205898,1039717051,840019705,2708326185,793451934,821288114,1391201670,3822090177,376187827,3113855344,1224348052,1679968233,2361698556,1058709744,752375421,2431590963,1321699145,3519142200,2734591178,188127444,2177869557,3727205754,2384911031,3215212461,2648976442,2450346104,3432737375,1180849278,331544205,3102249176,4150144569,2952102595,2159976285,2474404304,766078933,313773861,2570832044,2108100632,1668212892,3145456443,2013908262,418672217,3070356634,2594734927,1852171925,3867060991,3473416636,3907448597,2614737639,919489135,164948639,2094410160,2997825956,590424639,2486224549,1723872674,3157750862,3399941250,3501252752,3625268135,2555048196,3673637356,1343127501,4130281361,3599595085,2957853679,1297403050,81781910,3051593425,2283490410,532201772,1367295589,3926170974,895287692,1953757831,1093597963,492483431,3528626907,1446242576,1192455638,1636604631,209336225,344873464,1015671571,669961897,3375740769,3857572124,2973530695,3747192018,1933530610,3464042516,935293895,3454686199,2858115069,1863638845,3683022916,4085369519,3292445032,875313188,1080017571,3279033885,621591778,1233856572,2504130317,24197544,3017672716,3835484340,3247465558,2220981195,3060847922,1551124588,1463996600],b=[4104605777,1097159550,396673818,660510266,2875968315,2638606623,4200115116,3808662347,821712160,1986918061,3430322568,38544885,3856137295,718002117,893681702,1654886325,2975484382,3122358053,3926825029,4274053469,796197571,1290801793,1184342925,3556361835,2405426947,2459735317,1836772287,1381620373,3196267988,1948373848,3764988233,3385345166,3263785589,2390325492,1480485785,3111247143,3780097726,2293045232,548169417,3459953789,3746175075,439452389,1362321559,1400849762,1685577905,1806599355,2174754046,137073913,1214797936,1174215055,3731654548,2079897426,1943217067,1258480242,529487843,1437280870,3945269170,3049390895,3313212038,923313619,679998e3,3215307299,57326082,377642221,3474729866,2041877159,133361907,1776460110,3673476453,96392454,878845905,2801699524,777231668,4082475170,2330014213,4142626212,2213296395,1626319424,1906247262,1846563261,562755902,3708173718,1040559837,3871163981,1418573201,3294430577,114585348,1343618912,2566595609,3186202582,1078185097,3651041127,3896688048,2307622919,425408743,3371096953,2081048481,1108339068,2216610296,0,2156299017,736970802,292596766,1517440620,251657213,2235061775,2933202493,758720310,265905162,1554391400,1532285339,908999204,174567692,1474760595,4002861748,2610011675,3234156416,3693126241,2001430874,303699484,2478443234,2687165888,585122620,454499602,151849742,2345119218,3064510765,514443284,4044981591,1963412655,2581445614,2137062819,19308535,1928707164,1715193156,4219352155,1126790795,600235211,3992742070,3841024952,836553431,1669664834,2535604243,3323011204,1243905413,3141400786,4180808110,698445255,2653899549,2989552604,2253581325,3252932727,3004591147,1891211689,2487810577,3915653703,4237083816,4030667424,2100090966,865136418,1229899655,953270745,3399679628,3557504664,4118925222,2061379749,3079546586,2915017791,983426092,2022837584,1607244650,2118541908,2366882550,3635996816,972512814,3283088770,1568718495,3499326569,3576539503,621982671,2895723464,410887952,2623762152,1002142683,645401037,1494807662,2595684844,1335535747,2507040230,4293295786,3167684641,367585007,3885750714,1865862730,2668221674,2960971305,2763173681,1059270954,2777952454,2724642869,1320957812,2194319100,2429595872,2815956275,77089521,3973773121,3444575871,2448830231,1305906550,4021308739,2857194700,2516901860,3518358430,1787304780,740276417,1699839814,1592394909,2352307457,2272556026,188821243,1729977011,3687994002,274084841,3594982253,3613494426,2701949495,4162096729,322734571,2837966542,1640576439,484830689,1202797690,3537852828,4067639125,349075736,3342319475,4157467219,4255800159,1030690015,1155237496,2951971274,1757691577,607398968,2738905026,499347990,3794078908,1011452712,227885567,2818666809,213114376,3034881240,1455525988,3414450555,850817237,1817998408,3092726480],E=[0,235474187,470948374,303765277,941896748,908933415,607530554,708780849,1883793496,2118214995,1817866830,1649639237,1215061108,1181045119,1417561698,1517767529,3767586992,4003061179,4236429990,4069246893,3635733660,3602770327,3299278474,3400528769,2430122216,2664543715,2362090238,2193862645,2835123396,2801107407,3035535058,3135740889,3678124923,3576870512,3341394285,3374361702,3810496343,3977675356,4279080257,4043610186,2876494627,2776292904,3076639029,3110650942,2472011535,2640243204,2403728665,2169303058,1001089995,899835584,666464733,699432150,59727847,226906860,530400753,294930682,1273168787,1172967064,1475418501,1509430414,1942435775,2110667444,1876241833,1641816226,2910219766,2743034109,2976151520,3211623147,2505202138,2606453969,2302690252,2269728455,3711829422,3543599269,3240894392,3475313331,3843699074,3943906441,4178062228,4144047775,1306967366,1139781709,1374988112,1610459739,1975683434,2076935265,1775276924,1742315127,1034867998,866637845,566021896,800440835,92987698,193195065,429456164,395441711,1984812685,2017778566,1784663195,1683407248,1315562145,1080094634,1383856311,1551037884,101039829,135050206,437757123,337553864,1042385657,807962610,573804783,742039012,2531067453,2564033334,2328828971,2227573024,2935566865,2700099354,3001755655,3168937228,3868552805,3902563182,4203181171,4102977912,3736164937,3501741890,3265478751,3433712980,1106041591,1340463100,1576976609,1408749034,2043211483,2009195472,1708848333,1809054150,832877231,1068351396,766945465,599762354,159417987,126454664,361929877,463180190,2709260871,2943682380,3178106961,3009879386,2572697195,2538681184,2236228733,2336434550,3509871135,3745345300,3441850377,3274667266,3910161971,3877198648,4110568485,4211818798,2597806476,2497604743,2261089178,2295101073,2733856160,2902087851,3202437046,2968011453,3936291284,3835036895,4136440770,4169408201,3535486456,3702665459,3467192302,3231722213,2051518780,1951317047,1716890410,1750902305,1113818384,1282050075,1584504582,1350078989,168810852,67556463,371049330,404016761,841739592,1008918595,775550814,540080725,3969562369,3801332234,4035489047,4269907996,3569255213,3669462566,3366754619,3332740144,2631065433,2463879762,2160117071,2395588676,2767645557,2868897406,3102011747,3069049960,202008497,33778362,270040487,504459436,875451293,975658646,675039627,641025152,2084704233,1917518562,1615861247,1851332852,1147550661,1248802510,1484005843,1451044056,933301370,967311729,733156972,632953703,260388950,25965917,328671808,496906059,1206477858,1239443753,1543208500,1441952575,2144161806,1908694277,1675577880,1842759443,3610369226,3644379585,3408119516,3307916247,4011190502,3776767469,4077384432,4245618683,2809771154,2842737049,3144396420,3043140495,2673705150,2438237621,2203032232,2370213795],A=[0,185469197,370938394,487725847,741876788,657861945,975451694,824852259,1483753576,1400783205,1315723890,1164071807,1950903388,2135319889,1649704518,1767536459,2967507152,3152976349,2801566410,2918353863,2631447780,2547432937,2328143614,2177544179,3901806776,3818836405,4270639778,4118987695,3299409036,3483825537,3535072918,3652904859,2077965243,1893020342,1841768865,1724457132,1474502543,1559041666,1107234197,1257309336,598438867,681933534,901210569,1052338372,261314535,77422314,428819965,310463728,3409685355,3224740454,3710368113,3593056380,3875770207,3960309330,4045380933,4195456072,2471224067,2554718734,2237133081,2388260884,3212035895,3028143674,2842678573,2724322336,4138563181,4255350624,3769721975,3955191162,3667219033,3516619604,3431546947,3347532110,2933734917,2782082824,3099667487,3016697106,2196052529,2313884476,2499348523,2683765030,1179510461,1296297904,1347548327,1533017514,1786102409,1635502980,2087309459,2003294622,507358933,355706840,136428751,53458370,839224033,957055980,605657339,790073846,2373340630,2256028891,2607439820,2422494913,2706270690,2856345839,3075636216,3160175349,3573941694,3725069491,3273267108,3356761769,4181598602,4063242375,4011996048,3828103837,1033297158,915985419,730517276,545572369,296679730,446754879,129166120,213705253,1709610350,1860738147,1945798516,2029293177,1239331162,1120974935,1606591296,1422699085,4148292826,4233094615,3781033664,3931371469,3682191598,3497509347,3446004468,3328955385,2939266226,2755636671,3106780840,2988687269,2198438022,2282195339,2501218972,2652609425,1201765386,1286567175,1371368976,1521706781,1805211710,1620529459,2105887268,1988838185,533804130,350174575,164439672,46346101,870912086,954669403,636813900,788204353,2358957921,2274680428,2592523643,2441661558,2695033685,2880240216,3065962831,3182487618,3572145929,3756299780,3270937875,3388507166,4174560061,4091327024,4006521127,3854606378,1014646705,930369212,711349675,560487590,272786309,457992840,106852767,223377554,1678381017,1862534868,1914052035,2031621326,1211247597,1128014560,1580087799,1428173050,32283319,182621114,401639597,486441376,768917123,651868046,1003007129,818324884,1503449823,1385356242,1333838021,1150208456,1973745387,2125135846,1673061617,1756818940,2970356327,3120694122,2802849917,2887651696,2637442643,2520393566,2334669897,2149987652,3917234703,3799141122,4284502037,4100872472,3309594171,3460984630,3545789473,3629546796,2050466060,1899603969,1814803222,1730525723,1443857720,1560382517,1075025698,1260232239,575138148,692707433,878443390,1062597235,243256656,91341917,409198410,325965383,3403100636,3252238545,3704300486,3620022987,3874428392,3990953189,4042459122,4227665663,2460449204,2578018489,2226875310,2411029155,3198115200,3046200461,2827177882,2743944855],k=[0,218828297,437656594,387781147,875313188,958871085,775562294,590424639,1750626376,1699970625,1917742170,2135253587,1551124588,1367295589,1180849278,1265195639,3501252752,3720081049,3399941250,3350065803,3835484340,3919042237,4270507174,4085369519,3102249176,3051593425,2734591178,2952102595,2361698556,2177869557,2530391278,2614737639,3145456443,3060847922,2708326185,2892417312,2404901663,2187128086,2504130317,2555048196,3542330227,3727205754,3375740769,3292445032,3876557655,3926170974,4246310725,4027744588,1808481195,1723872674,1910319033,2094410160,1608975247,1391201670,1173430173,1224348052,59984867,244860394,428169201,344873464,935293895,984907214,766078933,547512796,1844882806,1627235199,2011214180,2062270317,1507497298,1423022939,1137477952,1321699145,95345982,145085239,532201772,313773861,830661914,1015671571,731183368,648017665,3175501286,2957853679,2807058932,2858115069,2305455554,2220981195,2474404304,2658625497,3575528878,3625268135,3473416636,3254988725,3778151818,3963161475,4213447064,4130281361,3599595085,3683022916,3432737375,3247465558,3802222185,4020912224,4172763771,4122762354,3201631749,3017672716,2764249623,2848461854,2331590177,2280796200,2431590963,2648976442,104699613,188127444,472615631,287343814,840019705,1058709744,671593195,621591778,1852171925,1668212892,1953757831,2037970062,1514790577,1463996600,1080017571,1297403050,3673637356,3623636965,3235995134,3454686199,4007360968,3822090177,4107101658,4190530515,2997825956,3215212461,2830708150,2779915199,2256734592,2340947849,2627016082,2443058075,172466556,122466165,273792366,492483431,1047239e3,861968209,612205898,695634755,1646252340,1863638845,2013908262,1963115311,1446242576,1530455833,1277555970,1093597963,1636604631,1820824798,2073724613,1989249228,1436590835,1487645946,1337376481,1119727848,164948639,81781910,331544205,516552836,1039717051,821288114,669961897,719700128,2973530695,3157750862,2871682645,2787207260,2232435299,2283490410,2667994737,2450346104,3647212047,3564045318,3279033885,3464042516,3980931627,3762502690,4150144569,4199882800,3070356634,3121275539,2904027272,2686254721,2200818878,2384911031,2570832044,2486224549,3747192018,3528626907,3310321856,3359936201,3950355702,3867060991,4049844452,4234721005,1739656202,1790575107,2108100632,1890328081,1402811438,1586903591,1233856572,1149249077,266959938,48394827,369057872,418672217,1002783846,919489135,567498868,752375421,209336225,24197544,376187827,459744698,945164165,895287692,574624663,793451934,1679968233,1764313568,2117360635,1933530610,1343127501,1560637892,1243112415,1192455638,3704280881,3519142200,3336358691,3419915562,3907448597,3857572124,4075877127,4294704398,3029510009,3113855344,2927934315,2744104290,2159976285,2377486676,2594734927,2544078150],S=[0,151849742,303699484,454499602,607398968,758720310,908999204,1059270954,1214797936,1097159550,1517440620,1400849762,1817998408,1699839814,2118541908,2001430874,2429595872,2581445614,2194319100,2345119218,3034881240,3186202582,2801699524,2951971274,3635996816,3518358430,3399679628,3283088770,4237083816,4118925222,4002861748,3885750714,1002142683,850817237,698445255,548169417,529487843,377642221,227885567,77089521,1943217067,2061379749,1640576439,1757691577,1474760595,1592394909,1174215055,1290801793,2875968315,2724642869,3111247143,2960971305,2405426947,2253581325,2638606623,2487810577,3808662347,3926825029,4044981591,4162096729,3342319475,3459953789,3576539503,3693126241,1986918061,2137062819,1685577905,1836772287,1381620373,1532285339,1078185097,1229899655,1040559837,923313619,740276417,621982671,439452389,322734571,137073913,19308535,3871163981,4021308739,4104605777,4255800159,3263785589,3414450555,3499326569,3651041127,2933202493,2815956275,3167684641,3049390895,2330014213,2213296395,2566595609,2448830231,1305906550,1155237496,1607244650,1455525988,1776460110,1626319424,2079897426,1928707164,96392454,213114376,396673818,514443284,562755902,679998e3,865136418,983426092,3708173718,3557504664,3474729866,3323011204,4180808110,4030667424,3945269170,3794078908,2507040230,2623762152,2272556026,2390325492,2975484382,3092726480,2738905026,2857194700,3973773121,3856137295,4274053469,4157467219,3371096953,3252932727,3673476453,3556361835,2763173681,2915017791,3064510765,3215307299,2156299017,2307622919,2459735317,2610011675,2081048481,1963412655,1846563261,1729977011,1480485785,1362321559,1243905413,1126790795,878845905,1030690015,645401037,796197571,274084841,425408743,38544885,188821243,3613494426,3731654548,3313212038,3430322568,4082475170,4200115116,3780097726,3896688048,2668221674,2516901860,2366882550,2216610296,3141400786,2989552604,2837966542,2687165888,1202797690,1320957812,1437280870,1554391400,1669664834,1787304780,1906247262,2022837584,265905162,114585348,499347990,349075736,736970802,585122620,972512814,821712160,2595684844,2478443234,2293045232,2174754046,3196267988,3079546586,2895723464,2777952454,3537852828,3687994002,3234156416,3385345166,4142626212,4293295786,3841024952,3992742070,174567692,57326082,410887952,292596766,777231668,660510266,1011452712,893681702,1108339068,1258480242,1343618912,1494807662,1715193156,1865862730,1948373848,2100090966,2701949495,2818666809,3004591147,3122358053,2235061775,2352307457,2535604243,2653899549,3915653703,3764988233,4219352155,4067639125,3444575871,3294430577,3746175075,3594982253,836553431,953270745,600235211,718002117,367585007,484830689,133361907,251657213,2041877159,1891211689,1806599355,1654886325,1568718495,1418573201,1335535747,1184342925];function C(t){for(var e=[],r=0;r<t.length;r+=4)e.push(t[r]<<24|t[r+1]<<16|t[r+2]<<8|t[r+3]);return e}var x=function(t){if(!(this instanceof x))throw Error("AES must be instanitated with `new`");Object.defineProperty(this,"key",{value:n(t,!0)}),this._prepare()};x.prototype._prepare=function(){var t=c[this.key.length];if(null==t)throw new Error("invalid key size (must be 16, 24 or 32 bytes)");this._Ke=[],this._Kd=[];for(var e=0;e<=t;e++)this._Ke.push([0,0,0,0]),this._Kd.push([0,0,0,0]);var r,n=4*(t+1),i=this.key.length/4,o=C(this.key);for(e=0;e<i;e++)r=e>>2,this._Ke[r][e%4]=o[e],this._Kd[t-r][e%4]=o[e];for(var s,a=0,l=i;l<n;){if(s=o[i-1],o[0]^=h[s>>16&255]<<24^h[s>>8&255]<<16^h[255&s]<<8^h[s>>24&255]^u[a]<<24,a+=1,8!=i)for(e=1;e<i;e++)o[e]^=o[e-1];else{for(e=1;e<i/2;e++)o[e]^=o[e-1];for(s=o[i/2-1],o[i/2]^=h[255&s]^h[s>>8&255]<<8^h[s>>16&255]<<16^h[s>>24&255]<<24,e=i/2+1;e<i;e++)o[e]^=o[e-1]}for(e=0;e<i&&l<n;)d=l>>2,f=l%4,this._Ke[d][f]=o[e],this._Kd[t-d][f]=o[e++],l++}for(var d=1;d<t;d++)for(var f=0;f<4;f++)s=this._Kd[d][f],this._Kd[d][f]=E[s>>24&255]^A[s>>16&255]^k[s>>8&255]^S[255&s]},x.prototype.encrypt=function(t){if(16!=t.length)throw new Error("invalid plaintext size (must be 16 bytes)");for(var e=this._Ke.length-1,r=[0,0,0,0],n=C(t),o=0;o<4;o++)n[o]^=this._Ke[0][o];for(var s=1;s<e;s++){for(o=0;o<4;o++)r[o]=f[n[o]>>24&255]^p[n[(o+1)%4]>>16&255]^m[n[(o+2)%4]>>8&255]^g[255&n[(o+3)%4]]^this._Ke[s][o];n=r.slice()}var a,l=i(16);for(o=0;o<4;o++)a=this._Ke[e][o],l[4*o]=255&(h[n[o]>>24&255]^a>>24),l[4*o+1]=255&(h[n[(o+1)%4]>>16&255]^a>>16),l[4*o+2]=255&(h[n[(o+2)%4]>>8&255]^a>>8),l[4*o+3]=255&(h[255&n[(o+3)%4]]^a);return l},x.prototype.decrypt=function(t){if(16!=t.length)throw new Error("invalid ciphertext size (must be 16 bytes)");for(var e=this._Kd.length-1,r=[0,0,0,0],n=C(t),o=0;o<4;o++)n[o]^=this._Kd[0][o];for(var s=1;s<e;s++){for(o=0;o<4;o++)r[o]=v[n[o]>>24&255]^w[n[(o+3)%4]>>16&255]^y[n[(o+2)%4]>>8&255]^b[255&n[(o+1)%4]]^this._Kd[s][o];n=r.slice()}var a,l=i(16);for(o=0;o<4;o++)a=this._Kd[e][o],l[4*o]=255&(d[n[o]>>24&255]^a>>24),l[4*o+1]=255&(d[n[(o+3)%4]>>16&255]^a>>16),l[4*o+2]=255&(d[n[(o+2)%4]>>8&255]^a>>8),l[4*o+3]=255&(d[255&n[(o+1)%4]]^a);return l};var _=function(t){if(!(this instanceof _))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new x(t)};_.prototype.encrypt=function(t){if((t=n(t)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var e=i(t.length),r=i(16),s=0;s<t.length;s+=16)o(t,r,0,s,s+16),o(r=this._aes.encrypt(r),e,s);return e},_.prototype.decrypt=function(t){if((t=n(t)).length%16!=0)throw new Error("invalid ciphertext size (must be multiple of 16 bytes)");for(var e=i(t.length),r=i(16),s=0;s<t.length;s+=16)o(t,r,0,s,s+16),o(r=this._aes.decrypt(r),e,s);return e};var T=function(t,e){if(!(this instanceof T))throw Error("AES must be instanitated with `new`");if(this.description="Cipher Block Chaining",this.name="cbc",e){if(16!=e.length)throw new Error("invalid initialation vector size (must be 16 bytes)")}else e=i(16);this._lastCipherblock=n(e,!0),this._aes=new x(t)};T.prototype.encrypt=function(t){if((t=n(t)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var e=i(t.length),r=i(16),s=0;s<t.length;s+=16){o(t,r,0,s,s+16);for(var a=0;a<16;a++)r[a]^=this._lastCipherblock[a];this._lastCipherblock=this._aes.encrypt(r),o(this._lastCipherblock,e,s)}return e},T.prototype.decrypt=function(t){if((t=n(t)).length%16!=0)throw new Error("invalid ciphertext size (must be multiple of 16 bytes)");for(var e=i(t.length),r=i(16),s=0;s<t.length;s+=16){o(t,r,0,s,s+16),r=this._aes.decrypt(r);for(var a=0;a<16;a++)e[s+a]=r[a]^this._lastCipherblock[a];o(t,this._lastCipherblock,0,s,s+16)}return e};var P=function(t,e,r){if(!(this instanceof P))throw Error("AES must be instanitated with `new`");if(this.description="Cipher Feedback",this.name="cfb",e){if(16!=e.length)throw new Error("invalid initialation vector size (must be 16 size)")}else e=i(16);r||(r=1),this.segmentSize=r,this._shiftRegister=n(e,!0),this._aes=new x(t)};P.prototype.encrypt=function(t){if(t.length%this.segmentSize!=0)throw new Error("invalid plaintext size (must be segmentSize bytes)");for(var e,r=n(t,!0),i=0;i<r.length;i+=this.segmentSize){e=this._aes.encrypt(this._shiftRegister);for(var s=0;s<this.segmentSize;s++)r[i+s]^=e[s];o(this._shiftRegister,this._shiftRegister,0,this.segmentSize),o(r,this._shiftRegister,16-this.segmentSize,i,i+this.segmentSize)}return r},P.prototype.decrypt=function(t){if(t.length%this.segmentSize!=0)throw new Error("invalid ciphertext size (must be segmentSize bytes)");for(var e,r=n(t,!0),i=0;i<r.length;i+=this.segmentSize){e=this._aes.encrypt(this._shiftRegister);for(var s=0;s<this.segmentSize;s++)r[i+s]^=e[s];o(this._shiftRegister,this._shiftRegister,0,this.segmentSize),o(t,this._shiftRegister,16-this.segmentSize,i,i+this.segmentSize)}return r};var I=function(t,e){if(!(this instanceof I))throw Error("AES must be instanitated with `new`");if(this.description="Output Feedback",this.name="ofb",e){if(16!=e.length)throw new Error("invalid initialation vector size (must be 16 bytes)")}else e=i(16);this._lastPrecipher=n(e,!0),this._lastPrecipherIndex=16,this._aes=new x(t)};I.prototype.encrypt=function(t){for(var e=n(t,!0),r=0;r<e.length;r++)16===this._lastPrecipherIndex&&(this._lastPrecipher=this._aes.encrypt(this._lastPrecipher),this._lastPrecipherIndex=0),e[r]^=this._lastPrecipher[this._lastPrecipherIndex++];return e},I.prototype.decrypt=I.prototype.encrypt;var N=function(t){if(!(this instanceof N))throw Error("Counter must be instanitated with `new`");0===t||t||(t=1),"number"==typeof t?(this._counter=i(16),this.setValue(t)):this.setBytes(t)};N.prototype.setValue=function(t){if("number"!=typeof t||parseInt(t)!=t)throw new Error("invalid counter value (must be an integer)");for(var e=15;e>=0;--e)this._counter[e]=t%256,t>>=8},N.prototype.setBytes=function(t){if(16!=(t=n(t,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=t},N.prototype.increment=function(){for(var t=15;t>=0;t--){if(255!==this._counter[t]){this._counter[t]++;break}this._counter[t]=0}};var M=function(t,e){if(!(this instanceof M))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",e instanceof N||(e=new N(e)),this._counter=e,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new x(t)};M.prototype.encrypt=function(t){for(var e=n(t,!0),r=0;r<e.length;r++)16===this._remainingCounterIndex&&(this._remainingCounter=this._aes.encrypt(this._counter._counter),this._remainingCounterIndex=0,this._counter.increment()),e[r]^=this._remainingCounter[this._remainingCounterIndex++];return e},M.prototype.decrypt=M.prototype.encrypt;var B={AES:x,Counter:N,ModeOfOperation:{ecb:_,cbc:T,cfb:P,ofb:I,ctr:M},utils:{hex:l,utf8:a},padding:{pkcs7:{pad:function(t){var e=16-(t=n(t,!0)).length%16,r=i(t.length+e);o(t,r);for(var s=t.length;s<r.length;s++)r[s]=e;return r},strip:function(t){if((t=n(t,!0)).length<16)throw new Error("PKCS#7 invalid length");var e=t[t.length-1];if(e>16)throw new Error("PKCS#7 padding byte out of range");for(var r=t.length-e,s=0;s<e;s++)if(t[r+s]!==e)throw new Error("PKCS#7 invalid padding byte");var a=i(r);return o(t,a,0,0,r),a}}},_arrayTest:{coerceArray:n,createArray:i,copyArray:o}};t.exports=B}()}(vs)),vs.exports),ys=n(ws);const bs="json-wallets/5.8.0";function Es(t){return"string"==typeof t&&"0x"!==t.substring(0,2)&&(t="0x"+t),C(t)}function As(t,e){for(t=String(t);t.length<e;)t="0"+t;return t}function ks(t){return"string"==typeof t?$e(t,He.NFKC):C(t)}function Ss(t,e){let r=t;const n=e.toLowerCase().split("/");for(let t=0;t<n.length;t++){let e=null;for(const i in r)if(i.toLowerCase()===n[t]){e=r[i];break}if(null===e)return null;r=e}return r}function Cs(t){const e=C(t);e[6]=15&e[6]|64,e[8]=63&e[8]|128;const r=N(e);return[r.substring(2,10),r.substring(10,14),r.substring(14,18),r.substring(18,22),r.substring(22,34)].join("-")}const xs=new w(bs);class _s extends Et{isCrowdsaleAccount(t){return!(!t||!t._isCrowdsaleAccount)}}function Ts(t,e){const r=JSON.parse(t);e=ks(e);const n=ve(Ss(r,"ethaddr")),i=Es(Ss(r,"encseed"));i&&i.length%16==0||xs.throwArgumentError("invalid encseed","json",t);const o=C(Ho(e,e,2e3,32,"sha256")).slice(0,16),s=i.slice(0,16),a=i.slice(16),l=new ys.ModeOfOperation.cbc(o,s),c=ys.padding.pkcs7.strip(C(l.decrypt(a)));let u="";for(let t=0;t<c.length;t++)u+=String.fromCharCode(c[t]);const h=ee($e(u));return new _s({_isCrowdsaleAccount:!0,address:n,privateKey:h})}function Ps(t){let e=null;try{e=JSON.parse(t)}catch(t){return!1}return e.encseed&&e.ethaddr}function Is(t){let e=null;try{e=JSON.parse(t)}catch(t){return!1}return!(!e.version||parseInt(e.version)!==e.version||3!==parseInt(e.version))}var Ns,Ms={exports:{}};var Bs=(Ns||(Ns=1,function(t){!function(){const e=2147483647;function r(t){const e=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]);let r=1779033703,n=3144134277,i=1013904242,o=2773480762,s=1359893119,a=2600822924,l=528734635,c=1541459225;const u=new Uint32Array(64);function h(t){let h=0,d=t.length;for(;d>=64;){let f,p,m,g,v,w=r,y=n,b=i,E=o,A=s,k=a,S=l,C=c;for(p=0;p<16;p++)m=h+4*p,u[p]=(255&t[m])<<24|(255&t[m+1])<<16|(255&t[m+2])<<8|255&t[m+3];for(p=16;p<64;p++)f=u[p-2],g=(f>>>17|f<<15)^(f>>>19|f<<13)^f>>>10,f=u[p-15],v=(f>>>7|f<<25)^(f>>>18|f<<14)^f>>>3,u[p]=(g+u[p-7]|0)+(v+u[p-16]|0)|0;for(p=0;p<64;p++)g=(((A>>>6|A<<26)^(A>>>11|A<<21)^(A>>>25|A<<7))+(A&k^~A&S)|0)+(C+(e[p]+u[p]|0)|0)|0,v=((w>>>2|w<<30)^(w>>>13|w<<19)^(w>>>22|w<<10))+(w&y^w&b^y&b)|0,C=S,S=k,k=A,A=E+g|0,E=b,b=y,y=w,w=g+v|0;r=r+w|0,n=n+y|0,i=i+b|0,o=o+E|0,s=s+A|0,a=a+k|0,l=l+S|0,c=c+C|0,h+=64,d-=64}}h(t);let d,f=t.length%64,p=t.length/536870912|0,m=t.length<<3,g=f<56?56:120,v=t.slice(t.length-f,t.length);for(v.push(128),d=f+1;d<g;d++)v.push(0);return v.push(p>>>24&255),v.push(p>>>16&255),v.push(p>>>8&255),v.push(p>>>0&255),v.push(m>>>24&255),v.push(m>>>16&255),v.push(m>>>8&255),v.push(m>>>0&255),h(v),[r>>>24&255,r>>>16&255,r>>>8&255,r>>>0&255,n>>>24&255,n>>>16&255,n>>>8&255,n>>>0&255,i>>>24&255,i>>>16&255,i>>>8&255,i>>>0&255,o>>>24&255,o>>>16&255,o>>>8&255,o>>>0&255,s>>>24&255,s>>>16&255,s>>>8&255,s>>>0&255,a>>>24&255,a>>>16&255,a>>>8&255,a>>>0&255,l>>>24&255,l>>>16&255,l>>>8&255,l>>>0&255,c>>>24&255,c>>>16&255,c>>>8&255,c>>>0&255]}function n(t,e,n){t=t.length<=64?t:r(t);const i=64+e.length+4,o=new Array(i),s=new Array(64);let a,l=[];for(a=0;a<64;a++)o[a]=54;for(a=0;a<t.length;a++)o[a]^=t[a];for(a=0;a<e.length;a++)o[64+a]=e[a];for(a=i-4;a<i;a++)o[a]=0;for(a=0;a<64;a++)s[a]=92;for(a=0;a<t.length;a++)s[a]^=t[a];function c(){for(let t=i-1;t>=i-4;t--){if(o[t]++,o[t]<=255)return;o[t]=0}}for(;n>=32;)c(),l=l.concat(r(s.concat(r(o)))),n-=32;return n>0&&(c(),l=l.concat(r(s.concat(r(o))).slice(0,n))),l}function i(t,e,r,n,i){let o;for(l(t,16*(2*r-1),i,0,16),o=0;o<2*r;o++)a(t,16*o,i,16),s(i,n),l(i,0,t,e+16*o,16);for(o=0;o<r;o++)l(t,e+2*o*16,t,16*o,16);for(o=0;o<r;o++)l(t,e+16*(2*o+1),t,16*(o+r),16)}function o(t,e){return t<<e|t>>>32-e}function s(t,e){l(t,0,e,0,16);for(let t=8;t>0;t-=2)e[4]^=o(e[0]+e[12],7),e[8]^=o(e[4]+e[0],9),e[12]^=o(e[8]+e[4],13),e[0]^=o(e[12]+e[8],18),e[9]^=o(e[5]+e[1],7),e[13]^=o(e[9]+e[5],9),e[1]^=o(e[13]+e[9],13),e[5]^=o(e[1]+e[13],18),e[14]^=o(e[10]+e[6],7),e[2]^=o(e[14]+e[10],9),e[6]^=o(e[2]+e[14],13),e[10]^=o(e[6]+e[2],18),e[3]^=o(e[15]+e[11],7),e[7]^=o(e[3]+e[15],9),e[11]^=o(e[7]+e[3],13),e[15]^=o(e[11]+e[7],18),e[1]^=o(e[0]+e[3],7),e[2]^=o(e[1]+e[0],9),e[3]^=o(e[2]+e[1],13),e[0]^=o(e[3]+e[2],18),e[6]^=o(e[5]+e[4],7),e[7]^=o(e[6]+e[5],9),e[4]^=o(e[7]+e[6],13),e[5]^=o(e[4]+e[7],18),e[11]^=o(e[10]+e[9],7),e[8]^=o(e[11]+e[10],9),e[9]^=o(e[8]+e[11],13),e[10]^=o(e[9]+e[8],18),e[12]^=o(e[15]+e[14],7),e[13]^=o(e[12]+e[15],9),e[14]^=o(e[13]+e[12],13),e[15]^=o(e[14]+e[13],18);for(let r=0;r<16;++r)t[r]+=e[r]}function a(t,e,r,n){for(let i=0;i<n;i++)r[i]^=t[e+i]}function l(t,e,r,n,i){for(;i--;)r[n++]=t[e++]}function c(t){if(!t||"number"!=typeof t.length)return!1;for(let e=0;e<t.length;e++){const r=t[e];if("number"!=typeof r||r%1||r<0||r>=256)return!1}return!0}function u(t,e){if("number"!=typeof t||t%1)throw new Error("invalid "+e);return t}function h(t,r,o,s,h,d,f){if(o=u(o,"N"),s=u(s,"r"),h=u(h,"p"),d=u(d,"dkLen"),0===o||o&o-1)throw new Error("N must be power of 2");if(o>e/128/s)throw new Error("N too large");if(s>e/128/h)throw new Error("r too large");if(!c(t))throw new Error("password must be an array or buffer");if(t=Array.prototype.slice.call(t),!c(r))throw new Error("salt must be an array or buffer");r=Array.prototype.slice.call(r);let p=n(t,r,128*h*s);const m=new Uint32Array(32*h*s);for(let t=0;t<m.length;t++){const e=4*t;m[t]=(255&p[e+3])<<24|(255&p[e+2])<<16|(255&p[e+1])<<8|255&p[e+0]}const g=new Uint32Array(64*s),v=new Uint32Array(32*s*o),w=32*s,y=new Uint32Array(16),b=new Uint32Array(16),E=h*o*2;let A,k,S=0,C=null,x=!1,_=0,T=0;const P=f?parseInt(1e3/s):4294967295,I="undefined"!=typeof setImmediate?setImmediate:setTimeout,N=function(){if(x)return f(new Error("cancelled"),S/E);let e;switch(_){case 0:k=32*T*s,l(m,k,g,0,w),_=1,A=0;case 1:e=o-A,e>P&&(e=P);for(let t=0;t<e;t++)l(g,0,v,(A+t)*w,w),i(g,w,s,y,b);if(A+=e,S+=e,f){const t=parseInt(1e3*S/E);if(t!==C){if(x=f(null,S/E),x)break;C=t}}if(A<o)break;A=0,_=2;case 2:e=o-A,e>P&&(e=P);for(let t=0;t<e;t++){const t=g[16*(2*s-1)]&o-1;a(v,t*w,g,w),i(g,w,s,y,b)}if(A+=e,S+=e,f){const t=parseInt(1e3*S/E);if(t!==C){if(x=f(null,S/E),x)break;C=t}}if(A<o)break;if(l(g,0,m,k,w),T++,T<h){_=0;break}p=[];for(let t=0;t<m.length;t++)p.push(255&m[t]),p.push(m[t]>>8&255),p.push(m[t]>>16&255),p.push(m[t]>>24&255);const r=n(t,p,d);return f&&f(null,1,r),r}f&&I(N)};if(!f)for(;;){const t=N();if(null!=t)return t}N()}const d={scrypt:function(t,e,r,n,i,o,s){return new Promise(function(a,l){let c=0;s&&s(0),h(t,e,r,n,i,o,function(t,e,r){if(t)l(t);else if(r)s&&1!==c&&s(1),a(new Uint8Array(r));else if(s&&e!==c)return c=e,s(e)})})},syncScrypt:function(t,e,r,n,i,o){return new Uint8Array(h(t,e,r,n,i,o))}};t.exports=d}()}(Ms)),Ms.exports),Rs=n(Bs),Fs=function(t,e,r,n){return new(r||(r=Promise))(function(i,o){function s(t){try{l(n.next(t))}catch(t){o(t)}}function a(t){try{l(n.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}l((n=n.apply(t,e||[])).next())})};const Os=new w(bs);function Ds(t){return null!=t&&t.mnemonic&&t.mnemonic.phrase}class Us extends Et{isKeystoreAccount(t){return!(!t||!t._isKeystoreAccount)}}function Ls(t,e){const r=Es(Ss(t,"crypto/ciphertext"));if(N(ee(x([e.slice(16,32),r]))).substring(2)!==Ss(t,"crypto/mac").toLowerCase())throw new Error("invalid password");const n=function(t,e,r){if("aes-128-ctr"===Ss(t,"crypto/cipher")){const n=Es(Ss(t,"crypto/cipherparams/iv")),i=new ys.Counter(n);return C(new ys.ModeOfOperation.ctr(e,i).decrypt(r))}return null}(t,e.slice(0,16),r);n||Os.throwError("unsupported cipher",w.errors.UNSUPPORTED_OPERATION,{operation:"decrypt"});const i=e.slice(32,64),o=lo(n);if(t.address){let e=t.address.toLowerCase();if("0x"!==e.substring(0,2)&&(e="0x"+e),ve(e)!==o)throw new Error("address mismatch")}const s={_isKeystoreAccount:!0,address:o,privateKey:N(n)};if("0.1"===Ss(t,"x-ethers/version")){const e=Es(Ss(t,"x-ethers/mnemonicCiphertext")),r=Es(Ss(t,"x-ethers/mnemonicCounter")),n=new ys.Counter(r),o=new ys.ModeOfOperation.ctr(i,n),a=Ss(t,"x-ethers/path")||ss,l=Ss(t,"x-ethers/locale")||"en",c=C(o.decrypt(e));try{const t=us(c,l),e=as.fromMnemonic(t,null,l).derivePath(a);if(e.privateKey!=s.privateKey)throw new Error("mnemonic mismatch");s.mnemonic=e.mnemonic}catch(t){if(t.code!==w.errors.INVALID_ARGUMENT||"wordlist"!==t.argument)throw t}}return new Us(s)}function qs(t,e,r,n,i){return C(Ho(t,e,r,n,i))}function zs(t,e,r,n,i){return Promise.resolve(qs(t,e,r,n,i))}function Gs(t,e,r,n,i){const o=ks(e),s=Ss(t,"crypto/kdf");if(s&&"string"==typeof s){const e=function(t,e){return Os.throwArgumentError("invalid key-derivation function parameters",t,e)};if("scrypt"===s.toLowerCase()){const r=Es(Ss(t,"crypto/kdfparams/salt")),a=parseInt(Ss(t,"crypto/kdfparams/n")),l=parseInt(Ss(t,"crypto/kdfparams/r")),c=parseInt(Ss(t,"crypto/kdfparams/p"));a&&l&&c||e("kdf",s),a&a-1&&e("N",a);const u=parseInt(Ss(t,"crypto/kdfparams/dklen"));return 32!==u&&e("dklen",u),n(o,r,a,l,c,64,i)}if("pbkdf2"===s.toLowerCase()){const n=Es(Ss(t,"crypto/kdfparams/salt"));let i=null;const s=Ss(t,"crypto/kdfparams/prf");"hmac-sha256"===s?i="sha256":"hmac-sha512"===s?i="sha512":e("prf",s);const a=parseInt(Ss(t,"crypto/kdfparams/c")),l=parseInt(Ss(t,"crypto/kdfparams/dklen"));return 32!==l&&e("dklen",l),r(o,n,a,l,i)}}return Os.throwArgumentError("unsupported key-derivation function","kdf",s)}function Hs(t,e,r){if(Ps(t)){r&&r(0);const n=Ts(t,e);return r&&r(1),Promise.resolve(n)}return Is(t)?function(t,e,r){return Fs(this,void 0,void 0,function*(){const n=JSON.parse(t);return Ls(n,yield Gs(n,e,zs,Rs.scrypt,r))})}(t,e,r):Promise.reject(new Error("invalid JSON wallet"))}function js(t,e){if(Ps(t))return Ts(t,e);if(Is(t))return function(t,e){const r=JSON.parse(t);return Ls(r,Gs(r,e,qs,Rs.syncScrypt))}(t,e);throw new Error("invalid JSON wallet")}var Ks=function(t,e,r,n){return new(r||(r=Promise))(function(i,o){function s(t){try{l(n.next(t))}catch(t){o(t)}}function a(t){try{l(n.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}l((n=n.apply(t,e||[])).next())})};const Ws=new w("wallet/5.8.0");class Vs extends xn{constructor(t,e){if(super(),null!=(r=t)&&P(r.privateKey,32)&&null!=r.address){const e=new Zi(t.privateKey);if(dt(this,"_signingKey",()=>e),dt(this,"address",lo(this.publicKey)),this.address!==ve(t.address)&&Ws.throwArgumentError("privateKey/address mismatch","privateKey","[REDACTED]"),function(t){const e=t.mnemonic;return e&&e.phrase}(t)){const e=t.mnemonic;dt(this,"_mnemonic",()=>({phrase:e.phrase,path:e.path||ss,locale:e.locale||"en"}));const r=this.mnemonic;lo(as.fromMnemonic(r.phrase,null,r.locale).derivePath(r.path).privateKey)!==this.address&&Ws.throwArgumentError("mnemonic/address mismatch","privateKey","[REDACTED]")}else dt(this,"_mnemonic",()=>null)}else{if(Zi.isSigningKey(t))"secp256k1"!==t.curve&&Ws.throwArgumentError("unsupported curve; must be secp256k1","privateKey","[REDACTED]"),dt(this,"_signingKey",()=>t);else{"string"==typeof t&&t.match(/^[0-9a-f]*$/i)&&64===t.length&&(t="0x"+t);const e=new Zi(t);dt(this,"_signingKey",()=>e)}dt(this,"_mnemonic",()=>null),dt(this,"address",lo(this.publicKey))}var r;e&&!En.isProvider(e)&&Ws.throwArgumentError("invalid provider","provider",e),dt(this,"provider",e||null)}get mnemonic(){return this._mnemonic()}get privateKey(){return this._signingKey().privateKey}get publicKey(){return this._signingKey().publicKey}getAddress(){return Promise.resolve(this.address)}connect(t){return new Vs(this,t)}signTransaction(t){return pt(t).then(e=>{null!=e.from&&(ve(e.from)!==this.address&&Ws.throwArgumentError("transaction from address mismatch","transaction.from",t.from),delete e.from);const r=this._signingKey().signDigest(ee(vo(e)));return vo(e,r)})}signMessage(t){return Ks(this,void 0,void 0,function*(){return L(this._signingKey().signDigest(Wr(t)))})}_signTypedData(t,e,r){return Ks(this,void 0,void 0,function*(){const n=yield cn.resolveNames(t,e,r,t=>(null==this.provider&&Ws.throwError("cannot resolve ENS names without a provider",w.errors.UNSUPPORTED_OPERATION,{operation:"resolveName",value:t}),this.provider.resolveName(t)));return L(this._signingKey().signDigest(cn.hash(n.domain,e,n.value)))})}encrypt(t,e,r){if("function"!=typeof e||r||(r=e,e={}),r&&"function"!=typeof r)throw new Error("invalid callback");return e||(e={}),function(t,e,r,n){try{if(ve(t.address)!==lo(t.privateKey))throw new Error("address/privateKey mismatch");if(Ds(t)){const e=t.mnemonic;if(as.fromMnemonic(e.phrase,null,e.locale).derivePath(e.path||ss).privateKey!=t.privateKey)throw new Error("mnemonic mismatch")}}catch(t){return Promise.reject(t)}"function"!=typeof r||n||(n=r,r={}),r||(r={});const i=C(t.privateKey),o=ks(e);let s=null,a=null,l=null;if(Ds(t)){const e=t.mnemonic;s=C(cs(e.phrase,e.locale||"en")),a=e.path||ss,l=e.locale||"en"}let c=r.client;c||(c="ethers.js");let u=null;u=r.salt?C(r.salt):ps(32);let h=null;if(r.iv){if(h=C(r.iv),16!==h.length)throw new Error("invalid iv")}else h=ps(16);let d=null;if(r.uuid){if(d=C(r.uuid),16!==d.length)throw new Error("invalid uuid")}else d=ps(16);let f=1<<17,p=8,m=1;return r.scrypt&&(r.scrypt.N&&(f=r.scrypt.N),r.scrypt.r&&(p=r.scrypt.r),r.scrypt.p&&(m=r.scrypt.p)),Rs.scrypt(o,u,f,p,m,64,n).then(e=>{const r=(e=C(e)).slice(0,16),n=e.slice(16,32),o=e.slice(32,64),g=new ys.Counter(h),v=C(new ys.ModeOfOperation.ctr(r,g).encrypt(i)),w=ee(x([n,v])),y={address:t.address.substring(2).toLowerCase(),id:Cs(d),version:3,crypto:{cipher:"aes-128-ctr",cipherparams:{iv:N(h).substring(2)},ciphertext:N(v).substring(2),kdf:"scrypt",kdfparams:{salt:N(u).substring(2),n:f,dklen:32,p:m,r:p},mac:w.substring(2)}};if(s){const t=ps(16),e=new ys.Counter(t),r=C(new ys.ModeOfOperation.ctr(o,e).encrypt(s)),n=new Date,i=n.getUTCFullYear()+"-"+As(n.getUTCMonth()+1,2)+"-"+As(n.getUTCDate(),2)+"T"+As(n.getUTCHours(),2)+"-"+As(n.getUTCMinutes(),2)+"-"+As(n.getUTCSeconds(),2)+".0Z";y["x-ethers"]={client:c,gethFilename:"UTC--"+i+"--"+y.address,mnemonicCounter:N(t).substring(2),mnemonicCiphertext:N(r).substring(2),path:a,locale:l,version:"0.1"}}return JSON.stringify(y)})}(this,t,e,r)}static createRandom(t){let e=ps(16);t||(t={}),t.extraEntropy&&(e=C(B(ee(x([e,t.extraEntropy])),0,16)));const r=us(e,t.locale);return Vs.fromMnemonic(r,t.path,t.locale)}static fromEncryptedJson(t,e,r){return Hs(t,e,r).then(t=>new Vs(t))}static fromEncryptedJsonSync(t,e){return new Vs(js(t,e))}static fromMnemonic(t,e,r){return e||(e=ss),new Vs(as.fromMnemonic(t,null,r).derivePath(e))}}const $s=new w("networks/5.8.0");function Js(t){const e=function(e,r){null==r&&(r={});const n=[];if(e.InfuraProvider&&"-"!==r.infura)try{n.push(new e.InfuraProvider(t,r.infura))}catch(t){}if(e.EtherscanProvider&&"-"!==r.etherscan)try{n.push(new e.EtherscanProvider(t,r.etherscan))}catch(t){}if(e.AlchemyProvider&&"-"!==r.alchemy)try{n.push(new e.AlchemyProvider(t,r.alchemy))}catch(t){}if(e.PocketProvider&&"-"!==r.pocket){const i=["goerli","ropsten","rinkeby","sepolia"];try{const o=new e.PocketProvider(t,r.pocket);o.network&&-1===i.indexOf(o.network.name)&&n.push(o)}catch(t){}}if(e.CloudflareProvider&&"-"!==r.cloudflare)try{n.push(new e.CloudflareProvider(t))}catch(t){}if(e.AnkrProvider&&"-"!==r.ankr)try{const i=["ropsten"],o=new e.AnkrProvider(t,r.ankr);o.network&&-1===i.indexOf(o.network.name)&&n.push(o)}catch(t){}if(e.QuickNodeProvider&&"-"!==r.quicknode)try{n.push(new e.QuickNodeProvider(t,r.quicknode))}catch(t){}if(0===n.length)return null;if(e.FallbackProvider){let i=1;return null!=r.quorum?i=r.quorum:"homestead"===t&&(i=2),new e.FallbackProvider(n,i)}return n[0]};return e.renetwork=function(t){return Js(t)},e}function Qs(t,e){const r=function(r,n){return r.JsonRpcProvider?new r.JsonRpcProvider(t,e):null};return r.renetwork=function(e){return Qs(t,e)},r}const Ys={chainId:1,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"homestead",_defaultProvider:Js("homestead")},Xs={chainId:3,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"ropsten",_defaultProvider:Js("ropsten")},Zs={chainId:63,name:"classicMordor",_defaultProvider:Qs("https://www.ethercluster.com/mordor","classicMordor")},ta={unspecified:{chainId:0,name:"unspecified"},homestead:Ys,mainnet:Ys,morden:{chainId:2,name:"morden"},ropsten:Xs,testnet:Xs,rinkeby:{chainId:4,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"rinkeby",_defaultProvider:Js("rinkeby")},kovan:{chainId:42,name:"kovan",_defaultProvider:Js("kovan")},goerli:{chainId:5,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"goerli",_defaultProvider:Js("goerli")},kintsugi:{chainId:1337702,name:"kintsugi"},sepolia:{chainId:11155111,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"sepolia",_defaultProvider:Js("sepolia")},holesky:{chainId:17e3,name:"holesky",_defaultProvider:Js("holesky")},classic:{chainId:61,name:"classic",_defaultProvider:Qs("https://www.ethercluster.com/etc","classic")},classicMorden:{chainId:62,name:"classicMorden"},classicMordor:Zs,classicTestnet:Zs,classicKotti:{chainId:6,name:"classicKotti",_defaultProvider:Qs("https://www.ethercluster.com/kotti","classicKotti")},xdai:{chainId:100,name:"xdai"},matic:{chainId:137,name:"matic",_defaultProvider:Js("matic")},maticmum:{chainId:80001,name:"maticmum",_defaultProvider:Js("maticmum")},optimism:{chainId:10,name:"optimism",_defaultProvider:Js("optimism")},"optimism-kovan":{chainId:69,name:"optimism-kovan"},"optimism-goerli":{chainId:420,name:"optimism-goerli"},"optimism-sepolia":{chainId:11155420,name:"optimism-sepolia"},arbitrum:{chainId:42161,name:"arbitrum"},"arbitrum-rinkeby":{chainId:421611,name:"arbitrum-rinkeby"},"arbitrum-goerli":{chainId:421613,name:"arbitrum-goerli"},"arbitrum-sepolia":{chainId:421614,name:"arbitrum-sepolia"},bnb:{chainId:56,name:"bnb"},bnbt:{chainId:97,name:"bnbt"}};function ea(t){if(null==t)return null;if("number"==typeof t){for(const e in ta){const r=ta[e];if(r.chainId===t)return{name:r.name,chainId:r.chainId,ensAddress:r.ensAddress||null,_defaultProvider:r._defaultProvider||null}}return{chainId:t,name:"unknown"}}if("string"==typeof t){const e=ta[t];return null==e?null:{name:e.name,chainId:e.chainId,ensAddress:e.ensAddress,_defaultProvider:e._defaultProvider||null}}const e=ta[t.name];if(!e)return"number"!=typeof t.chainId&&$s.throwArgumentError("invalid network chainId","network",t),t;0!==t.chainId&&t.chainId!==e.chainId&&$s.throwArgumentError("network chainId mismatch","network",t);let r=t._defaultProvider||null;var n;return null==r&&e._defaultProvider&&(r=(n=e._defaultProvider)&&"function"==typeof n.renetwork?e._defaultProvider.renetwork(t):e._defaultProvider),{name:t.name,chainId:e.chainId,ensAddress:t.ensAddress||e.ensAddress||null,_defaultProvider:r}}var ra=function(t,e,r,n){return new(r||(r=Promise))(function(i,o){function s(t){try{l(n.next(t))}catch(t){o(t)}}function a(t){try{l(n.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}l((n=n.apply(t,e||[])).next())})};function na(t,e){return ra(this,void 0,void 0,function*(){null==e&&(e={});const r={method:e.method||"GET",headers:e.headers||{},body:e.body||void 0};if(!0!==e.skipFetchSetup&&(r.mode="cors",r.cache="no-cache",r.credentials="same-origin",r.redirect="follow",r.referrer="client"),null!=e.fetchOptions){const t=e.fetchOptions;t.mode&&(r.mode=t.mode),t.cache&&(r.cache=t.cache),t.credentials&&(r.credentials=t.credentials),t.redirect&&(r.redirect=t.redirect),t.referrer&&(r.referrer=t.referrer)}const n=yield fetch(t,r),i=yield n.arrayBuffer(),o={};return n.headers.forEach?n.headers.forEach((t,e)=>{o[e.toLowerCase()]=t}):n.headers.keys().forEach(t=>{o[t.toLowerCase()]=n.headers.get(t)}),{headers:o,statusCode:n.status,statusMessage:n.statusText,body:C(new Uint8Array(i))}})}var ia=function(t,e,r,n){return new(r||(r=Promise))(function(i,o){function s(t){try{l(n.next(t))}catch(t){o(t)}}function a(t){try{l(n.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}l((n=n.apply(t,e||[])).next())})};const oa=new w("web/5.8.0");function sa(t){return new Promise(e=>{setTimeout(e,t)})}function aa(t,e){if(null==t)return null;if("string"==typeof t)return t;if(A(t)){if(e&&("text"===e.split("/")[0]||"application/json"===e.split(";")[0].trim()))try{return Ye(t)}catch(t){}return N(t)}return t}function la(t,e,r){const n="object"==typeof t&&null!=t.throttleLimit?t.throttleLimit:12;oa.assertArgument(n>0&&n%1==0,"invalid connection throttle limit","connection.throttleLimit",n);const i="object"==typeof t?t.throttleCallback:null,o="object"==typeof t&&"number"==typeof t.throttleSlotInterval?t.throttleSlotInterval:100;oa.assertArgument(o>0&&o%1==0,"invalid connection throttle slot interval","connection.throttleSlotInterval",o);const s="object"==typeof t&&!!t.errorPassThrough,a={};let l=null;const c={method:"GET"};let u=!1,h=12e4;if("string"==typeof t)l=t;else if("object"==typeof t){if(null!=t&&null!=t.url||oa.throwArgumentError("missing URL","connection.url",t),l=t.url,"number"==typeof t.timeout&&t.timeout>0&&(h=t.timeout),t.headers)for(const e in t.headers)a[e.toLowerCase()]={key:e,value:String(t.headers[e])},["if-none-match","if-modified-since"].indexOf(e.toLowerCase())>=0&&(u=!0);if(c.allowGzip=!!t.allowGzip,null!=t.user&&null!=t.password){"https:"!==l.substring(0,6)&&!0!==t.allowInsecureAuthentication&&oa.throwError("basic authentication requires a secure https url",w.errors.INVALID_ARGUMENT,{argument:"url",url:l,user:t.user,password:"[REDACTED]"});const e=t.user+":"+t.password;a.authorization={key:"Authorization",value:"Basic "+yr($e(e))}}null!=t.skipFetchSetup&&(c.skipFetchSetup=!!t.skipFetchSetup),null!=t.fetchOptions&&(c.fetchOptions=gt(t.fetchOptions))}const d=new RegExp("^data:([^;:]*)?(;base64)?,(.*)$","i"),f=l?l.match(d):null;if(f)try{const t={statusCode:200,statusMessage:"OK",headers:{"content-type":f[1]||"text/plain"},body:f[2]?wr(f[3]):(p=f[3],$e(p.replace(/%([0-9a-f][0-9a-f])/gi,(t,e)=>String.fromCharCode(parseInt(e,16)))))};let e=t.body;return r&&(e=r(t.body,t)),Promise.resolve(e)}catch(t){oa.throwError("processing response error",w.errors.SERVER_ERROR,{body:aa(f[1],f[2]),error:t,requestBody:null,requestMethod:"GET",url:l})}var p;e&&(c.method="POST",c.body=e,null==a["content-type"]&&(a["content-type"]={key:"Content-Type",value:"application/octet-stream"}),null==a["content-length"]&&(a["content-length"]={key:"Content-Length",value:String(e.length)}));const m={};Object.keys(a).forEach(t=>{const e=a[t];m[e.key]=e.value}),c.headers=m;const g=function(){let t=null;return{promise:new Promise(function(e,r){h&&(t=setTimeout(()=>{null!=t&&(t=null,r(oa.makeError("timeout",w.errors.TIMEOUT,{requestBody:aa(c.body,m["content-type"]),requestMethod:c.method,timeout:h,url:l})))},h))}),cancel:function(){null!=t&&(clearTimeout(t),t=null)}}}(),v=function(){return ia(this,void 0,void 0,function*(){for(let t=0;t<n;t++){let e=null;try{if(e=yield na(l,c),t<n)if(301===e.statusCode||302===e.statusCode){const t=e.headers.location||"";if("GET"===c.method&&t.match(/^https:/)){l=e.headers.location;continue}}else if(429===e.statusCode){let r=!0;if(i&&(r=yield i(t,l)),r){let r=0;const n=e.headers["retry-after"];r="string"==typeof n&&n.match(/^[1-9][0-9]*$/)?1e3*parseInt(n):o*parseInt(String(Math.random()*Math.pow(2,t))),yield sa(r);continue}}}catch(t){e=t.response,null==e&&(g.cancel(),oa.throwError("missing response",w.errors.SERVER_ERROR,{requestBody:aa(c.body,m["content-type"]),requestMethod:c.method,serverError:t,url:l}))}let a=e.body;if(u&&304===e.statusCode?a=null:!s&&(e.statusCode<200||e.statusCode>=300)&&(g.cancel(),oa.throwError("bad response",w.errors.SERVER_ERROR,{status:e.statusCode,headers:e.headers,body:aa(a,e.headers?e.headers["content-type"]:null),requestBody:aa(c.body,m["content-type"]),requestMethod:c.method,url:l})),r)try{const t=yield r(a,e);return g.cancel(),t}catch(r){if(r.throttleRetry&&t<n){let e=!0;if(i&&(e=yield i(t,l)),e){const e=o*parseInt(String(Math.random()*Math.pow(2,t)));yield sa(e);continue}}g.cancel(),oa.throwError("processing response error",w.errors.SERVER_ERROR,{body:aa(a,e.headers?e.headers["content-type"]:null),error:r,requestBody:aa(c.body,m["content-type"]),requestMethod:c.method,url:l})}return g.cancel(),a}return oa.throwError("failed response",w.errors.SERVER_ERROR,{requestBody:aa(c.body,m["content-type"]),requestMethod:c.method,url:l})})}();return Promise.race([g.promise,v])}function ca(t,e,r){let n=null;if(null!=e){n=$e(e);const r="string"==typeof t?{url:t}:gt(t);if(r.headers){0!==Object.keys(r.headers).filter(t=>"content-type"===t.toLowerCase()).length||(r.headers=gt(r.headers),r.headers["content-type"]="application/json")}else r.headers={"content-type":"application/json"};t=r}return la(t,n,(t,e)=>{let n=null;if(null!=t)try{n=JSON.parse(Ye(t))}catch(e){oa.throwError("invalid JSON",w.errors.SERVER_ERROR,{body:t,error:e})}return r&&(n=r(n,e)),n})}function ua(t,e){return e||(e={}),null==(e=gt(e)).floor&&(e.floor=0),null==e.ceiling&&(e.ceiling=1e4),null==e.interval&&(e.interval=250),new Promise(function(r,n){let i=null,o=!1;const s=()=>!o&&(o=!0,i&&clearTimeout(i),!0);e.timeout&&(i=setTimeout(()=>{s()&&n(new Error("timeout"))},e.timeout));const a=e.retryLimit;let l=0;!function i(){return t().then(function(t){if(void 0!==t)s()&&r(t);else if(e.oncePoll)e.oncePoll.once("poll",i);else if(e.onceBlock)e.onceBlock.once("block",i);else if(!o){if(l++,l>a)return void(s()&&n(new Error("retry limit reached")));let t=e.interval*parseInt(String(Math.random()*Math.pow(2,l)));t<e.floor&&(t=e.floor),t>e.ceiling&&(t=e.ceiling),setTimeout(i,t)}return null},function(t){s()&&n(t)})}()})}var ha,da;var fa=function(){if(da)return ha;da=1;for(var t="qpzry9x8gf2tvdw0s3jn54khce6mua7l",e={},r=0;r<32;r++){var n=t.charAt(r);if(void 0!==e[n])throw new TypeError(n+" is ambiguous");e[n]=r}function i(t){var e=t>>25;return(33554431&t)<<5^996825010&-(1&e)^642813549&-(e>>1&1)^513874426&-(e>>2&1)^1027748829&-(e>>3&1)^705979059&-(e>>4&1)}function o(t){for(var e=1,r=0;r<t.length;++r){var n=t.charCodeAt(r);if(n<33||n>126)return"Invalid prefix ("+t+")";e=i(e)^n>>5}for(e=i(e),r=0;r<t.length;++r){var o=t.charCodeAt(r);e=i(e)^31&o}return e}function s(t,r){if(r=r||90,t.length<8)return t+" too short";if(t.length>r)return"Exceeds length limit";var n=t.toLowerCase(),s=t.toUpperCase();if(t!==n&&t!==s)return"Mixed-case string "+t;var a=(t=n).lastIndexOf("1");if(-1===a)return"No separator character for "+t;if(0===a)return"Missing prefix for "+t;var l=t.slice(0,a),c=t.slice(a+1);if(c.length<6)return"Data too short";var u=o(l);if("string"==typeof u)return u;for(var h=[],d=0;d<c.length;++d){var f=c.charAt(d),p=e[f];if(void 0===p)return"Unknown character "+f;u=i(u)^p,d+6>=c.length||h.push(p)}return 1!==u?"Invalid checksum for "+t:{prefix:l,words:h}}function a(t,e,r,n){for(var i=0,o=0,s=(1<<r)-1,a=[],l=0;l<t.length;++l)for(i=i<<e|t[l],o+=e;o>=r;)o-=r,a.push(i>>o&s);if(n)o>0&&a.push(i<<r-o&s);else{if(o>=e)return"Excess padding";if(i<<r-o&s)return"Non-zero padding"}return a}return ha={decodeUnsafe:function(){var t=s.apply(null,arguments);if("object"==typeof t)return t},decode:function(t){var e=s.apply(null,arguments);if("object"==typeof e)return e;throw new Error(e)},encode:function(e,r,n){if(n=n||90,e.length+7+r.length>n)throw new TypeError("Exceeds length limit");var s=o(e=e.toLowerCase());if("string"==typeof s)throw new Error(s);for(var a=e+"1",l=0;l<r.length;++l){var c=r[l];if(c>>5)throw new Error("Non 5-bit word");s=i(s)^c,a+=t.charAt(c)}for(l=0;l<6;++l)s=i(s);for(s^=1,l=0;l<6;++l){a+=t.charAt(s>>5*(5-l)&31)}return a},toWordsUnsafe:function(t){var e=a(t,8,5,!0);if(Array.isArray(e))return e},toWords:function(t){var e=a(t,8,5,!0);if(Array.isArray(e))return e;throw new Error(e)},fromWordsUnsafe:function(t){var e=a(t,5,8,!1);if(Array.isArray(e))return e},fromWords:function(t){var e=a(t,5,8,!1);if(Array.isArray(e))return e;throw new Error(e)}},ha}(),pa=n(fa);const ma="providers/5.8.0",ga=new w(ma);class va{constructor(){this.formats=this.getDefaultFormats()}getDefaultFormats(){const t={},e=this.address.bind(this),r=this.bigNumber.bind(this),n=this.blockTag.bind(this),i=this.data.bind(this),o=this.hash.bind(this),s=this.hex.bind(this),a=this.number.bind(this),l=this.type.bind(this);return t.transaction={hash:o,type:l,accessList:va.allowNull(this.accessList.bind(this),null),blockHash:va.allowNull(o,null),blockNumber:va.allowNull(a,null),transactionIndex:va.allowNull(a,null),confirmations:va.allowNull(a,null),from:e,gasPrice:va.allowNull(r),maxPriorityFeePerGas:va.allowNull(r),maxFeePerGas:va.allowNull(r),gasLimit:r,to:va.allowNull(e,null),value:r,nonce:a,data:i,r:va.allowNull(this.uint256),s:va.allowNull(this.uint256),v:va.allowNull(a),creates:va.allowNull(e,null),raw:va.allowNull(i)},t.transactionRequest={from:va.allowNull(e),nonce:va.allowNull(a),gasLimit:va.allowNull(r),gasPrice:va.allowNull(r),maxPriorityFeePerGas:va.allowNull(r),maxFeePerGas:va.allowNull(r),to:va.allowNull(e),value:va.allowNull(r),data:va.allowNull(t=>this.data(t,!0)),type:va.allowNull(a),accessList:va.allowNull(this.accessList.bind(this),null)},t.receiptLog={transactionIndex:a,blockNumber:a,transactionHash:o,address:e,topics:va.arrayOf(o),data:i,logIndex:a,blockHash:o},t.receipt={to:va.allowNull(this.address,null),from:va.allowNull(this.address,null),contractAddress:va.allowNull(e,null),transactionIndex:a,root:va.allowNull(s),gasUsed:r,logsBloom:va.allowNull(i),blockHash:o,transactionHash:o,logs:va.arrayOf(this.receiptLog.bind(this)),blockNumber:a,confirmations:va.allowNull(a,null),cumulativeGasUsed:r,effectiveGasPrice:va.allowNull(r),status:va.allowNull(a),type:l},t.block={hash:va.allowNull(o),parentHash:o,number:a,timestamp:a,nonce:va.allowNull(s),difficulty:this.difficulty.bind(this),gasLimit:r,gasUsed:r,miner:va.allowNull(e),extraData:i,transactions:va.allowNull(va.arrayOf(o)),baseFeePerGas:va.allowNull(r)},t.blockWithTransactions=gt(t.block),t.blockWithTransactions.transactions=va.allowNull(va.arrayOf(this.transactionResponse.bind(this))),t.filter={fromBlock:va.allowNull(n,void 0),toBlock:va.allowNull(n,void 0),blockHash:va.allowNull(o,void 0),address:va.allowNull(e,void 0),topics:va.allowNull(this.topics.bind(this),void 0)},t.filterLog={blockNumber:va.allowNull(a),blockHash:va.allowNull(o),transactionIndex:a,removed:va.allowNull(this.boolean.bind(this)),address:e,data:va.allowFalsish(i,"0x"),topics:va.arrayOf(o),transactionHash:o,logIndex:a},t}accessList(t){return fo(t||[])}number(t){return"0x"===t?0:W.from(t).toNumber()}type(t){return"0x"===t||null==t?0:W.from(t).toNumber()}bigNumber(t){return W.from(t)}boolean(t){if("boolean"==typeof t)return t;if("string"==typeof t){if("true"===(t=t.toLowerCase()))return!0;if("false"===t)return!1}throw new Error("invalid boolean - "+t)}hex(t,e){return"string"==typeof t&&(e||"0x"===t.substring(0,2)||(t="0x"+t),P(t))?t.toLowerCase():ga.throwArgumentError("invalid hash","value",t)}data(t,e){const r=this.hex(t,e);if(r.length%2!=0)throw new Error("invalid data; odd-length - "+t);return r}address(t){return ve(t)}callAddress(t){if(!P(t,32))return null;const e=ve(B(t,12));return e===Ie?null:e}contractAddress(t){return we(t)}blockTag(t){if(null==t)return"latest";if("earliest"===t)return"0x0";switch(t){case"earliest":return"0x0";case"latest":case"pending":case"safe":case"finalized":return t}if("number"==typeof t||P(t))return F(t);throw new Error("invalid blockTag")}hash(t,e){const r=this.hex(t,e);return 32!==M(r)?ga.throwArgumentError("invalid hash","value",t):r}difficulty(t){if(null==t)return null;const e=W.from(t);try{return e.toNumber()}catch(t){}return null}uint256(t){if(!P(t))throw new Error("invalid uint256");return D(t,32)}_block(t,e){null!=t.author&&null==t.miner&&(t.miner=t.author);const r=null!=t._difficulty?t._difficulty:t.difficulty,n=va.check(e,t);return n._difficulty=null==r?null:W.from(r),n}block(t){return this._block(t,this.formats.block)}blockWithTransactions(t){return this._block(t,this.formats.blockWithTransactions)}transactionRequest(t){return va.check(this.formats.transactionRequest,t)}transactionResponse(t){null!=t.gas&&null==t.gasLimit&&(t.gasLimit=t.gas),t.to&&W.from(t.to).isZero()&&(t.to="0x0000000000000000000000000000000000000000"),null!=t.input&&null==t.data&&(t.data=t.input),null==t.to&&null==t.creates&&(t.creates=this.contractAddress(t)),1!==t.type&&2!==t.type||null!=t.accessList||(t.accessList=[]);const e=va.check(this.formats.transaction,t);if(null!=t.chainId){let r=t.chainId;P(r)&&(r=W.from(r).toNumber()),e.chainId=r}else{let r=t.networkId;null==r&&null==e.v&&(r=t.chainId),P(r)&&(r=W.from(r).toNumber()),"number"!=typeof r&&null!=e.v&&(r=(e.v-35)/2,r<0&&(r=0),r=parseInt(r)),"number"!=typeof r&&(r=0),e.chainId=r}return e.blockHash&&"x"===e.blockHash.replace(/0/g,"")&&(e.blockHash=null),e}transaction(t){return yo(t)}receiptLog(t){return va.check(this.formats.receiptLog,t)}receipt(t){const e=va.check(this.formats.receipt,t);if(null!=e.root)if(e.root.length<=4){const t=W.from(e.root).toNumber();0===t||1===t?(null!=e.status&&e.status!==t&&ga.throwArgumentError("alt-root-status/status mismatch","value",{root:e.root,status:e.status}),e.status=t,delete e.root):ga.throwArgumentError("invalid alt-root-status","value.root",e.root)}else 66!==e.root.length&&ga.throwArgumentError("invalid root hash","value.root",e.root);return null!=e.status&&(e.byzantium=!0),e}topics(t){return Array.isArray(t)?t.map(t=>this.topics(t)):null!=t?this.hash(t,!0):null}filter(t){return va.check(this.formats.filter,t)}filterLog(t){return va.check(this.formats.filterLog,t)}static check(t,e){const r={};for(const n in t)try{const i=t[n](e[n]);void 0!==i&&(r[n]=i)}catch(t){throw t.checkKey=n,t.checkValue=e[n],t}return r}static allowNull(t,e){return function(r){return null==r?e:t(r)}}static allowFalsish(t,e){return function(r){return r?t(r):e}}static arrayOf(t){return function(e){if(!Array.isArray(e))throw new Error("not an array");const r=[];return e.forEach(function(e){r.push(t(e))}),r}}}function wa(t){return t&&"function"==typeof t.isCommunityResource}function ya(t){return wa(t)&&t.isCommunityResource()}let ba=!1;function Ea(){ba||(ba=!0,console.log("========= NOTICE ========="),console.log("Request-Rate Exceeded (this message will not be repeated)"),console.log(""),console.log("The default API keys for each service are provided as a highly-throttled,"),console.log("community resource for low-traffic projects and early prototyping."),console.log(""),console.log("While your application will continue to function, we highly recommended"),console.log("signing up for your own API keys to improve performance, increase your"),console.log("request rate/limit and enable other perks, such as metrics and advanced APIs."),console.log(""),console.log("For more details: https://docs.ethers.io/api-keys/"),console.log("=========================="))}var Aa=function(t,e,r,n){return new(r||(r=Promise))(function(i,o){function s(t){try{l(n.next(t))}catch(t){o(t)}}function a(t){try{l(n.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}l((n=n.apply(t,e||[])).next())})};const ka=new w(ma);function Sa(t){return null==t?"null":(32!==M(t)&&ka.throwArgumentError("invalid topic","topic",t),t.toLowerCase())}function Ca(t){for(t=t.slice();t.length>0&&null==t[t.length-1];)t.pop();return t.map(t=>{if(Array.isArray(t)){const e={};t.forEach(t=>{e[Sa(t)]=!0});const r=Object.keys(e);return r.sort(),r.join("|")}return Sa(t)}).join("&")}function xa(t){if("string"==typeof t){if(32===M(t=t.toLowerCase()))return"tx:"+t;if(-1===t.indexOf(":"))return t}else{if(Array.isArray(t))return"filter:*:"+Ca(t);if(bn.isForkEvent(t))throw ka.warn("not implemented"),new Error("not implemented");if(t&&"object"==typeof t)return"filter:"+(t.address||"*")+":"+Ca(t.topics||[])}throw new Error("invalid event - "+t)}function _a(){return(new Date).getTime()}function Ta(t){return new Promise(e=>{setTimeout(e,t)})}const Pa=["block","network","pending","poll"];class Ia{constructor(t,e,r){dt(this,"tag",t),dt(this,"listener",e),dt(this,"once",r),this._lastBlockNumber=-2,this._inflight=!1}get event(){switch(this.type){case"tx":return this.hash;case"filter":return this.filter}return this.tag}get type(){return this.tag.split(":")[0]}get hash(){const t=this.tag.split(":");return"tx"!==t[0]?null:t[1]}get filter(){const t=this.tag.split(":");if("filter"!==t[0])return null;const e=t[1],r=""===(n=t[2])?[]:n.split(/&/g).map(t=>{if(""===t)return[];const e=t.split("|").map(t=>"null"===t?null:t);return 1===e.length?e[0]:e});var n;const i={};return r.length>0&&(i.topics=r),e&&"*"!==e&&(i.address=e),i}pollable(){return this.tag.indexOf(":")>=0||Pa.indexOf(this.tag)>=0}}const Na={0:{symbol:"btc",p2pkh:0,p2sh:5,prefix:"bc"},2:{symbol:"ltc",p2pkh:48,p2sh:50,prefix:"ltc"},3:{symbol:"doge",p2pkh:30,p2sh:22},60:{symbol:"eth",ilk:"eth"},61:{symbol:"etc",ilk:"eth"},700:{symbol:"xdai",ilk:"eth"}};function Ma(t){return D(W.from(t).toHexString(),32)}function Ba(t){return Do.encode(x([t,B(zo(zo(t)),0,4)]))}const Ra=new RegExp("^(ipfs)://(.*)$","i"),Fa=[new RegExp("^(https)://(.*)$","i"),new RegExp("^(data):(.*)$","i"),Ra,new RegExp("^eip155:[0-9]+/(erc[0-9]+):(.*)$","i")];function Oa(t,e){try{return Ye(Da(t,e))}catch(t){}return null}function Da(t,e){if("0x"===t)return null;const r=W.from(B(t,e,e+32)).toNumber(),n=W.from(B(t,r,r+32)).toNumber();return B(t,r+32,r+32+n)}function Ua(t){return t.match(/^ipfs:\/\/ipfs\//i)?t=t.substring(12):t.match(/^ipfs:\/\//i)?t=t.substring(7):ka.throwArgumentError("unsupported IPFS format","link",t),`https://gateway.ipfs.io/ipfs/${t}`}function La(t){const e=C(t);if(e.length>32)throw new Error("internal; should not happen");const r=new Uint8Array(32);return r.set(e,32-e.length),r}function qa(t){if(t.length%32==0)return t;const e=new Uint8Array(32*Math.ceil(t.length/32));return e.set(t),e}function za(t){const e=[];let r=0;for(let n=0;n<t.length;n++)e.push(null),r+=32;for(let n=0;n<t.length;n++){const i=C(t[n]);e[n]=La(r),e.push(La(i.length)),e.push(qa(i)),r+=32+32*Math.ceil(i.length/32)}return R(e)}class Ga{constructor(t,e,r,n){dt(this,"provider",t),dt(this,"name",r),dt(this,"address",t.formatter.address(e)),dt(this,"_resolvedAddress",n)}supportsWildcard(){return this._supportsEip2544||(this._supportsEip2544=this.provider.call({to:this.address,data:"0x01ffc9a79061b92300000000000000000000000000000000000000000000000000000000"}).then(t=>W.from(t).eq(1)).catch(t=>{if(t.code===w.errors.CALL_EXCEPTION)return!1;throw this._supportsEip2544=null,t})),this._supportsEip2544}_fetch(t,e){return Aa(this,void 0,void 0,function*(){const r={to:this.address,ccipReadEnabled:!0,data:R([t,jr(this.name),e||"0x"])};let n=!1;(yield this.supportsWildcard())&&(n=!0,r.data=R(["0x9061b923",za([Kr(this.name),r.data])]));try{let t=yield this.provider.call(r);return C(t).length%32==4&&ka.throwError("resolver threw error",w.errors.CALL_EXCEPTION,{transaction:r,data:t}),n&&(t=Da(t,0)),t}catch(t){if(t.code===w.errors.CALL_EXCEPTION)return null;throw t}})}_fetchBytes(t,e){return Aa(this,void 0,void 0,function*(){const r=yield this._fetch(t,e);return null!=r?Da(r,0):null})}_getAddress(t,e){const r=Na[String(t)];if(null==r&&ka.throwError(`unsupported coin type: ${t}`,w.errors.UNSUPPORTED_OPERATION,{operation:`getAddress(${t})`}),"eth"===r.ilk)return this.provider.formatter.address(e);const n=C(e);if(null!=r.p2pkh){const t=e.match(/^0x76a9([0-9a-f][0-9a-f])([0-9a-f]*)88ac$/);if(t){const e=parseInt(t[1],16);if(t[2].length===2*e&&e>=1&&e<=75)return Ba(x([[r.p2pkh],"0x"+t[2]]))}}if(null!=r.p2sh){const t=e.match(/^0xa9([0-9a-f][0-9a-f])([0-9a-f]*)87$/);if(t){const e=parseInt(t[1],16);if(t[2].length===2*e&&e>=1&&e<=75)return Ba(x([[r.p2sh],"0x"+t[2]]))}}if(null!=r.prefix){const t=n[1];let e=n[0];if(0===e?20!==t&&32!==t&&(e=-1):e=-1,e>=0&&n.length===2+t&&t>=1&&t<=75){const t=pa.toWords(n.slice(2));return t.unshift(e),pa.encode(r.prefix,t)}}return null}getAddress(t){return Aa(this,void 0,void 0,function*(){if(null==t&&(t=60),60===t)try{const t=yield this._fetch("0x3b3b57de");return"0x"===t||t===Le?null:this.provider.formatter.callAddress(t)}catch(t){if(t.code===w.errors.CALL_EXCEPTION)return null;throw t}const e=yield this._fetchBytes("0xf1cb7e06",Ma(t));if(null==e||"0x"===e)return null;const r=this._getAddress(t,e);return null==r&&ka.throwError("invalid or unsupported coin data",w.errors.UNSUPPORTED_OPERATION,{operation:`getAddress(${t})`,coinType:t,data:e}),r})}getAvatar(){return Aa(this,void 0,void 0,function*(){const t=[{type:"name",content:this.name}];try{const e=yield this.getText("avatar");if(null==e)return null;for(let r=0;r<Fa.length;r++){const n=e.match(Fa[r]);if(null==n)continue;const i=n[1].toLowerCase();switch(i){case"https":return t.push({type:"url",content:e}),{linkage:t,url:e};case"data":return t.push({type:"data",content:e}),{linkage:t,url:e};case"ipfs":return t.push({type:"ipfs",content:e}),{linkage:t,url:Ua(e)};case"erc721":case"erc1155":{const r="erc721"===i?"0xc87b56dd":"0x0e89341c";t.push({type:i,content:e});const o=this._resolvedAddress||(yield this.getAddress()),s=(n[2]||"").split("/");if(2!==s.length)return null;const a=yield this.provider.formatter.address(s[0]),l=D(W.from(s[1]).toHexString(),32);if("erc721"===i){const e=this.provider.formatter.callAddress(yield this.provider.call({to:a,data:R(["0x6352211e",l])}));if(o!==e)return null;t.push({type:"owner",content:e})}else if("erc1155"===i){const e=W.from(yield this.provider.call({to:a,data:R(["0x00fdd58e",D(o,32),l])}));if(e.isZero())return null;t.push({type:"balance",content:e.toString()})}const c={to:this.provider.formatter.address(s[0]),data:R([r,l])};let u=Oa(yield this.provider.call(c),0);if(null==u)return null;t.push({type:"metadata-url-base",content:u}),"erc1155"===i&&(u=u.replace("{id}",l.substring(2)),t.push({type:"metadata-url-expanded",content:u})),u.match(/^ipfs:/i)&&(u=Ua(u)),t.push({type:"metadata-url",content:u});const h=yield ca(u);if(!h)return null;t.push({type:"metadata",content:JSON.stringify(h)});let d=h.image;if("string"!=typeof d)return null;if(d.match(/^(https:\/\/|data:)/i));else{if(null==d.match(Ra))return null;t.push({type:"url-ipfs",content:d}),d=Ua(d)}return t.push({type:"url",content:d}),{linkage:t,url:d}}}}}catch(t){}return null})}getContentHash(){return Aa(this,void 0,void 0,function*(){const t=yield this._fetchBytes("0xbc1c58d1");if(null==t||"0x"===t)return null;const e=t.match(/^0xe3010170(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);if(e){const t=parseInt(e[3],16);if(e[4].length===2*t)return"ipfs://"+Do.encode("0x"+e[1])}const r=t.match(/^0xe5010172(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);if(r){const t=parseInt(r[3],16);if(r[4].length===2*t)return"ipns://"+Do.encode("0x"+r[1])}const n=t.match(/^0xe40101fa011b20([0-9a-f]*)$/);if(n&&64===n[1].length)return"bzz://"+n[1];const i=t.match(/^0x90b2c605([0-9a-f]*)$/);if(i&&68===i[1].length){const t={"=":"","+":"-","/":"_"};return"sia://"+yr("0x"+i[1]).replace(/[=+\/]/g,e=>t[e])}return ka.throwError("invalid or unsupported content hash data",w.errors.UNSUPPORTED_OPERATION,{operation:"getContentHash()",data:t})})}getText(t){return Aa(this,void 0,void 0,function*(){let e=$e(t);e=x([Ma(64),Ma(e.length),e]),e.length%32!=0&&(e=x([e,D("0x",32-t.length%32)]));const r=yield this._fetchBytes("0x59d1d43c",N(e));return null==r||"0x"===r?null:Ye(r)})}}let Ha=null,ja=1;class Ka extends En{constructor(t){if(super(),this._events=[],this._emitted={block:-2},this.disableCcipRead=!1,this.formatter=new.target.getFormatter(),dt(this,"anyNetwork","any"===t),this.anyNetwork&&(t=this.detectNetwork()),t instanceof Promise)this._networkPromise=t,t.catch(t=>{}),this._ready().catch(t=>{});else{const e=ft(new.target,"getNetwork")(t);e?(dt(this,"_network",e),this.emit("network",e,null)):ka.throwArgumentError("invalid network","network",t)}this._maxInternalBlockNumber=-1024,this._lastBlockNumber=-2,this._maxFilterBlockRange=10,this._pollingInterval=4e3,this._fastQueryDate=0}_ready(){return Aa(this,void 0,void 0,function*(){if(null==this._network){let t=null;if(this._networkPromise)try{t=yield this._networkPromise}catch(t){}null==t&&(t=yield this.detectNetwork()),t||ka.throwError("no network detected",w.errors.UNKNOWN_ERROR,{}),null==this._network&&(this.anyNetwork?this._network=t:dt(this,"_network",t),this.emit("network",t,null))}return this._network})}get ready(){return ua(()=>this._ready().then(t=>t,t=>{if(t.code!==w.errors.NETWORK_ERROR||"noNetwork"!==t.event)throw t}))}static getFormatter(){return null==Ha&&(Ha=new va),Ha}static getNetwork(t){return ea(null==t?"homestead":t)}ccipReadFetch(t,e,r){return Aa(this,void 0,void 0,function*(){if(this.disableCcipRead||0===r.length)return null;const n=t.to.toLowerCase(),i=e.toLowerCase(),o=[];for(let t=0;t<r.length;t++){const e=r[t],s=e.replace("{sender}",n).replace("{data}",i),a=e.indexOf("{data}")>=0?null:JSON.stringify({data:i,sender:n}),l=yield ca({url:s,errorPassThrough:!0},a,(t,e)=>(t.status=e.statusCode,t));if(l.data)return l.data;const c=l.message||"unknown error";if(l.status>=400&&l.status<500)return ka.throwError(`response not found during CCIP fetch: ${c}`,w.errors.SERVER_ERROR,{url:e,errorMessage:c});o.push(c)}return ka.throwError(`error encountered during CCIP fetch: ${o.map(t=>JSON.stringify(t)).join(", ")}`,w.errors.SERVER_ERROR,{urls:r,errorMessages:o})})}_getInternalBlockNumber(t){return Aa(this,void 0,void 0,function*(){if(yield this._ready(),t>0)for(;this._internalBlockNumber;){const e=this._internalBlockNumber;try{const r=yield e;if(_a()-r.respTime<=t)return r.blockNumber;break}catch(t){if(this._internalBlockNumber===e)break}}const e=_a(),r=pt({blockNumber:this.perform("getBlockNumber",{}),networkError:this.getNetwork().then(t=>null,t=>t)}).then(({blockNumber:t,networkError:n})=>{if(n)throw this._internalBlockNumber===r&&(this._internalBlockNumber=null),n;const i=_a();return(t=W.from(t).toNumber())<this._maxInternalBlockNumber&&(t=this._maxInternalBlockNumber),this._maxInternalBlockNumber=t,this._setFastBlockNumber(t),{blockNumber:t,reqTime:e,respTime:i}});return this._internalBlockNumber=r,r.catch(t=>{this._internalBlockNumber===r&&(this._internalBlockNumber=null)}),(yield r).blockNumber})}poll(){return Aa(this,void 0,void 0,function*(){const t=ja++,e=[];let r=null;try{r=yield this._getInternalBlockNumber(100+this.pollingInterval/2)}catch(t){return void this.emit("error",t)}if(this._setFastBlockNumber(r),this.emit("poll",t,r),r!==this._lastBlockNumber){if(-2===this._emitted.block&&(this._emitted.block=r-1),Math.abs(this._emitted.block-r)>1e3)ka.warn(`network block skew detected; skipping block events (emitted=${this._emitted.block} blockNumber${r})`),this.emit("error",ka.makeError("network block skew detected",w.errors.NETWORK_ERROR,{blockNumber:r,event:"blockSkew",previousBlockNumber:this._emitted.block})),this.emit("block",r);else for(let t=this._emitted.block+1;t<=r;t++)this.emit("block",t);this._emitted.block!==r&&(this._emitted.block=r,Object.keys(this._emitted).forEach(t=>{if("block"===t)return;const e=this._emitted[t];"pending"!==e&&r-e>12&&delete this._emitted[t]})),-2===this._lastBlockNumber&&(this._lastBlockNumber=r-1),this._events.forEach(t=>{switch(t.type){case"tx":{const r=t.hash;let n=this.getTransactionReceipt(r).then(t=>t&&null!=t.blockNumber?(this._emitted["t:"+r]=t.blockNumber,this.emit(r,t),null):null).catch(t=>{this.emit("error",t)});e.push(n);break}case"filter":if(!t._inflight){t._inflight=!0,-2===t._lastBlockNumber&&(t._lastBlockNumber=r-1);const n=t.filter;n.fromBlock=t._lastBlockNumber+1,n.toBlock=r;const i=n.toBlock-this._maxFilterBlockRange;i>n.fromBlock&&(n.fromBlock=i),n.fromBlock<0&&(n.fromBlock=0);const o=this.getLogs(n).then(e=>{t._inflight=!1,0!==e.length&&e.forEach(e=>{e.blockNumber>t._lastBlockNumber&&(t._lastBlockNumber=e.blockNumber),this._emitted["b:"+e.blockHash]=e.blockNumber,this._emitted["t:"+e.transactionHash]=e.blockNumber,this.emit(n,e)})}).catch(e=>{this.emit("error",e),t._inflight=!1});e.push(o)}}}),this._lastBlockNumber=r,Promise.all(e).then(()=>{this.emit("didPoll",t)}).catch(t=>{this.emit("error",t)})}else this.emit("didPoll",t)})}resetEventsBlock(t){this._lastBlockNumber=t-1,this.polling&&this.poll()}get network(){return this._network}detectNetwork(){return Aa(this,void 0,void 0,function*(){return ka.throwError("provider does not support network detection",w.errors.UNSUPPORTED_OPERATION,{operation:"provider.detectNetwork"})})}getNetwork(){return Aa(this,void 0,void 0,function*(){const t=yield this._ready(),e=yield this.detectNetwork();if(t.chainId!==e.chainId){if(this.anyNetwork)return this._network=e,this._lastBlockNumber=-2,this._fastBlockNumber=null,this._fastBlockNumberPromise=null,this._fastQueryDate=0,this._emitted.block=-2,this._maxInternalBlockNumber=-1024,this._internalBlockNumber=null,this.emit("network",e,t),yield Ta(0),this._network;const r=ka.makeError("underlying network changed",w.errors.NETWORK_ERROR,{event:"changed",network:t,detectedNetwork:e});throw this.emit("error",r),r}return t})}get blockNumber(){return this._getInternalBlockNumber(100+this.pollingInterval/2).then(t=>{this._setFastBlockNumber(t)},t=>{}),null!=this._fastBlockNumber?this._fastBlockNumber:-1}get polling(){return null!=this._poller}set polling(t){t&&!this._poller?(this._poller=setInterval(()=>{this.poll()},this.pollingInterval),this._bootstrapPoll||(this._bootstrapPoll=setTimeout(()=>{this.poll(),this._bootstrapPoll=setTimeout(()=>{this._poller||this.poll(),this._bootstrapPoll=null},this.pollingInterval)},0))):!t&&this._poller&&(clearInterval(this._poller),this._poller=null)}get pollingInterval(){return this._pollingInterval}set pollingInterval(t){if("number"!=typeof t||t<=0||parseInt(String(t))!=t)throw new Error("invalid polling interval");this._pollingInterval=t,this._poller&&(clearInterval(this._poller),this._poller=setInterval(()=>{this.poll()},this._pollingInterval))}_getFastBlockNumber(){const t=_a();return t-this._fastQueryDate>2*this._pollingInterval&&(this._fastQueryDate=t,this._fastBlockNumberPromise=this.getBlockNumber().then(t=>((null==this._fastBlockNumber||t>this._fastBlockNumber)&&(this._fastBlockNumber=t),this._fastBlockNumber))),this._fastBlockNumberPromise}_setFastBlockNumber(t){null!=this._fastBlockNumber&&t<this._fastBlockNumber||(this._fastQueryDate=_a(),(null==this._fastBlockNumber||t>this._fastBlockNumber)&&(this._fastBlockNumber=t,this._fastBlockNumberPromise=Promise.resolve(t)))}waitForTransaction(t,e,r){return Aa(this,void 0,void 0,function*(){return this._waitForTransaction(t,null==e?1:e,r||0,null)})}_waitForTransaction(t,e,r,n){return Aa(this,void 0,void 0,function*(){const i=yield this.getTransactionReceipt(t);return(i?i.confirmations:0)>=e?i:new Promise((i,o)=>{const s=[];let a=!1;const l=function(){return!!a||(a=!0,s.forEach(t=>{t()}),!1)},c=t=>{t.confirmations<e||l()||i(t)};if(this.on(t,c),s.push(()=>{this.removeListener(t,c)}),n){let r=n.startBlock,i=null;const c=s=>Aa(this,void 0,void 0,function*(){a||(yield Ta(1e3),this.getTransactionCount(n.from).then(u=>Aa(this,void 0,void 0,function*(){if(!a){if(u<=n.nonce)r=s;else{{const e=yield this.getTransaction(t);if(e&&null!=e.blockNumber)return}for(null==i&&(i=r-3,i<n.startBlock&&(i=n.startBlock));i<=s;){if(a)return;const r=yield this.getBlockWithTransactions(i);for(let i=0;i<r.transactions.length;i++){const s=r.transactions[i];if(s.hash===t)return;if(s.from===n.from&&s.nonce===n.nonce){if(a)return;const r=yield this.waitForTransaction(s.hash,e);if(l())return;let i="replaced";return s.data===n.data&&s.to===n.to&&s.value.eq(n.value)?i="repriced":"0x"===s.data&&s.from===s.to&&s.value.isZero()&&(i="cancelled"),void o(ka.makeError("transaction was replaced",w.errors.TRANSACTION_REPLACED,{cancelled:"replaced"===i||"cancelled"===i,reason:i,replacement:this._wrapTransaction(s),hash:t,receipt:r}))}}i++}}a||this.once("block",c)}}),t=>{a||this.once("block",c)}))});if(a)return;this.once("block",c),s.push(()=>{this.removeListener("block",c)})}if("number"==typeof r&&r>0){const t=setTimeout(()=>{l()||o(ka.makeError("timeout exceeded",w.errors.TIMEOUT,{timeout:r}))},r);t.unref&&t.unref(),s.push(()=>{clearTimeout(t)})}})})}getBlockNumber(){return Aa(this,void 0,void 0,function*(){return this._getInternalBlockNumber(0)})}getGasPrice(){return Aa(this,void 0,void 0,function*(){yield this.getNetwork();const t=yield this.perform("getGasPrice",{});try{return W.from(t)}catch(e){return ka.throwError("bad result from backend",w.errors.SERVER_ERROR,{method:"getGasPrice",result:t,error:e})}})}getBalance(t,e){return Aa(this,void 0,void 0,function*(){yield this.getNetwork();const r=yield pt({address:this._getAddress(t),blockTag:this._getBlockTag(e)}),n=yield this.perform("getBalance",r);try{return W.from(n)}catch(t){return ka.throwError("bad result from backend",w.errors.SERVER_ERROR,{method:"getBalance",params:r,result:n,error:t})}})}getTransactionCount(t,e){return Aa(this,void 0,void 0,function*(){yield this.getNetwork();const r=yield pt({address:this._getAddress(t),blockTag:this._getBlockTag(e)}),n=yield this.perform("getTransactionCount",r);try{return W.from(n).toNumber()}catch(t){return ka.throwError("bad result from backend",w.errors.SERVER_ERROR,{method:"getTransactionCount",params:r,result:n,error:t})}})}getCode(t,e){return Aa(this,void 0,void 0,function*(){yield this.getNetwork();const r=yield pt({address:this._getAddress(t),blockTag:this._getBlockTag(e)}),n=yield this.perform("getCode",r);try{return N(n)}catch(t){return ka.throwError("bad result from backend",w.errors.SERVER_ERROR,{method:"getCode",params:r,result:n,error:t})}})}getStorageAt(t,e,r){return Aa(this,void 0,void 0,function*(){yield this.getNetwork();const n=yield pt({address:this._getAddress(t),blockTag:this._getBlockTag(r),position:Promise.resolve(e).then(t=>F(t))}),i=yield this.perform("getStorageAt",n);try{return N(i)}catch(t){return ka.throwError("bad result from backend",w.errors.SERVER_ERROR,{method:"getStorageAt",params:n,result:i,error:t})}})}_wrapTransaction(t,e,r){if(null!=e&&32!==M(e))throw new Error("invalid response - sendTransaction");const n=t;return null!=e&&t.hash!==e&&ka.throwError("Transaction hash mismatch from Provider.sendTransaction.",w.errors.UNKNOWN_ERROR,{expectedHash:t.hash,returnedHash:e}),n.wait=(e,n)=>Aa(this,void 0,void 0,function*(){let i;null==e&&(e=1),null==n&&(n=0),0!==e&&null!=r&&(i={data:t.data,from:t.from,nonce:t.nonce,to:t.to,value:t.value,startBlock:r});const o=yield this._waitForTransaction(t.hash,e,n,i);return null==o&&0===e?null:(this._emitted["t:"+t.hash]=o.blockNumber,0===o.status&&ka.throwError("transaction failed",w.errors.CALL_EXCEPTION,{transactionHash:t.hash,transaction:t,receipt:o}),o)}),n}sendTransaction(t){return Aa(this,void 0,void 0,function*(){yield this.getNetwork();const e=yield Promise.resolve(t).then(t=>N(t)),r=this.formatter.transaction(t);null==r.confirmations&&(r.confirmations=0);const n=yield this._getInternalBlockNumber(100+2*this.pollingInterval);try{const t=yield this.perform("sendTransaction",{signedTransaction:e});return this._wrapTransaction(r,t,n)}catch(t){throw t.transaction=r,t.transactionHash=r.hash,t}})}_getTransactionRequest(t){return Aa(this,void 0,void 0,function*(){const e=yield t,r={};return["from","to"].forEach(t=>{null!=e[t]&&(r[t]=Promise.resolve(e[t]).then(t=>t?this._getAddress(t):null))}),["gasLimit","gasPrice","maxFeePerGas","maxPriorityFeePerGas","value"].forEach(t=>{null!=e[t]&&(r[t]=Promise.resolve(e[t]).then(t=>t?W.from(t):null))}),["type"].forEach(t=>{null!=e[t]&&(r[t]=Promise.resolve(e[t]).then(t=>null!=t?t:null))}),e.accessList&&(r.accessList=this.formatter.accessList(e.accessList)),["data"].forEach(t=>{null!=e[t]&&(r[t]=Promise.resolve(e[t]).then(t=>t?N(t):null))}),this.formatter.transactionRequest(yield pt(r))})}_getFilter(t){return Aa(this,void 0,void 0,function*(){t=yield t;const e={};return null!=t.address&&(e.address=this._getAddress(t.address)),["blockHash","topics"].forEach(r=>{null!=t[r]&&(e[r]=t[r])}),["fromBlock","toBlock"].forEach(r=>{null!=t[r]&&(e[r]=this._getBlockTag(t[r]))}),this.formatter.filter(yield pt(e))})}_call(t,e,r){return Aa(this,void 0,void 0,function*(){r>=10&&ka.throwError("CCIP read exceeded maximum redirections",w.errors.SERVER_ERROR,{redirects:r,transaction:t});const n=t.to,i=yield this.perform("call",{transaction:t,blockTag:e});if(r>=0&&"latest"===e&&null!=n&&"0x556f1830"===i.substring(0,10)&&M(i)%32==4)try{const o=B(i,4),s=B(o,0,32);W.from(s).eq(n)||ka.throwError("CCIP Read sender did not match",w.errors.CALL_EXCEPTION,{name:"OffchainLookup",signature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",transaction:t,data:i});const a=[],l=W.from(B(o,32,64)).toNumber(),c=W.from(B(o,l,l+32)).toNumber(),u=B(o,l+32);for(let e=0;e<c;e++){const r=Oa(u,32*e);null==r&&ka.throwError("CCIP Read contained corrupt URL string",w.errors.CALL_EXCEPTION,{name:"OffchainLookup",signature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",transaction:t,data:i}),a.push(r)}const h=Da(o,64);W.from(B(o,100,128)).isZero()||ka.throwError("CCIP Read callback selector included junk",w.errors.CALL_EXCEPTION,{name:"OffchainLookup",signature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",transaction:t,data:i});const d=B(o,96,100),f=Da(o,128),p=yield this.ccipReadFetch(t,h,a);null==p&&ka.throwError("CCIP Read disabled or provided no URLs",w.errors.CALL_EXCEPTION,{name:"OffchainLookup",signature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",transaction:t,data:i});const m={to:n,data:R([d,za([p,f])])};return this._call(m,e,r+1)}catch(t){if(t.code===w.errors.SERVER_ERROR)throw t}try{return N(i)}catch(r){return ka.throwError("bad result from backend",w.errors.SERVER_ERROR,{method:"call",params:{transaction:t,blockTag:e},result:i,error:r})}})}call(t,e){return Aa(this,void 0,void 0,function*(){yield this.getNetwork();const r=yield pt({transaction:this._getTransactionRequest(t),blockTag:this._getBlockTag(e),ccipReadEnabled:Promise.resolve(t.ccipReadEnabled)});return this._call(r.transaction,r.blockTag,r.ccipReadEnabled?0:-1)})}estimateGas(t){return Aa(this,void 0,void 0,function*(){yield this.getNetwork();const e=yield pt({transaction:this._getTransactionRequest(t)}),r=yield this.perform("estimateGas",e);try{return W.from(r)}catch(t){return ka.throwError("bad result from backend",w.errors.SERVER_ERROR,{method:"estimateGas",params:e,result:r,error:t})}})}_getAddress(t){return Aa(this,void 0,void 0,function*(){"string"!=typeof(t=yield t)&&ka.throwArgumentError("invalid address or ENS name","name",t);const e=yield this.resolveName(t);return null==e&&ka.throwError("ENS name not configured",w.errors.UNSUPPORTED_OPERATION,{operation:`resolveName(${JSON.stringify(t)})`}),e})}_getBlock(t,e){return Aa(this,void 0,void 0,function*(){yield this.getNetwork(),t=yield t;let r=-128;const n={includeTransactions:!!e};if(P(t,32))n.blockHash=t;else try{n.blockTag=yield this._getBlockTag(t),P(n.blockTag)&&(r=parseInt(n.blockTag.substring(2),16))}catch(e){ka.throwArgumentError("invalid block hash or block tag","blockHashOrBlockTag",t)}return ua(()=>Aa(this,void 0,void 0,function*(){const t=yield this.perform("getBlock",n);if(null==t)return null!=n.blockHash&&null==this._emitted["b:"+n.blockHash]||null!=n.blockTag&&r>this._emitted.block?null:void 0;if(e){let e=null;for(let r=0;r<t.transactions.length;r++){const n=t.transactions[r];if(null==n.blockNumber)n.confirmations=0;else if(null==n.confirmations){null==e&&(e=yield this._getInternalBlockNumber(100+2*this.pollingInterval));let t=e-n.blockNumber+1;t<=0&&(t=1),n.confirmations=t}}const r=this.formatter.blockWithTransactions(t);return r.transactions=r.transactions.map(t=>this._wrapTransaction(t)),r}return this.formatter.block(t)}),{oncePoll:this})})}getBlock(t){return this._getBlock(t,!1)}getBlockWithTransactions(t){return this._getBlock(t,!0)}getTransaction(t){return Aa(this,void 0,void 0,function*(){yield this.getNetwork(),t=yield t;const e={transactionHash:this.formatter.hash(t,!0)};return ua(()=>Aa(this,void 0,void 0,function*(){const r=yield this.perform("getTransaction",e);if(null==r)return null==this._emitted["t:"+t]?null:void 0;const n=this.formatter.transactionResponse(r);if(null==n.blockNumber)n.confirmations=0;else if(null==n.confirmations){let t=(yield this._getInternalBlockNumber(100+2*this.pollingInterval))-n.blockNumber+1;t<=0&&(t=1),n.confirmations=t}return this._wrapTransaction(n)}),{oncePoll:this})})}getTransactionReceipt(t){return Aa(this,void 0,void 0,function*(){yield this.getNetwork(),t=yield t;const e={transactionHash:this.formatter.hash(t,!0)};return ua(()=>Aa(this,void 0,void 0,function*(){const r=yield this.perform("getTransactionReceipt",e);if(null==r)return null==this._emitted["t:"+t]?null:void 0;if(null==r.blockHash)return;const n=this.formatter.receipt(r);if(null==n.blockNumber)n.confirmations=0;else if(null==n.confirmations){let t=(yield this._getInternalBlockNumber(100+2*this.pollingInterval))-n.blockNumber+1;t<=0&&(t=1),n.confirmations=t}return n}),{oncePoll:this})})}getLogs(t){return Aa(this,void 0,void 0,function*(){yield this.getNetwork();const e=yield pt({filter:this._getFilter(t)}),r=yield this.perform("getLogs",e);return r.forEach(t=>{null==t.removed&&(t.removed=!1)}),va.arrayOf(this.formatter.filterLog.bind(this.formatter))(r)})}getEtherPrice(){return Aa(this,void 0,void 0,function*(){return yield this.getNetwork(),this.perform("getEtherPrice",{})})}_getBlockTag(t){return Aa(this,void 0,void 0,function*(){if("number"==typeof(t=yield t)&&t<0){t%1&&ka.throwArgumentError("invalid BlockTag","blockTag",t);let e=yield this._getInternalBlockNumber(100+2*this.pollingInterval);return e+=t,e<0&&(e=0),this.formatter.blockTag(e)}return this.formatter.blockTag(t)})}getResolver(t){return Aa(this,void 0,void 0,function*(){let e=t;for(;;){if(""===e||"."===e)return null;if("eth"!==t&&"eth"===e)return null;const r=yield this._getResolver(e,"getResolver");if(null!=r){const n=new Ga(this,r,t);return e===t||(yield n.supportsWildcard())?n:null}e=e.split(".").slice(1).join(".")}})}_getResolver(t,e){return Aa(this,void 0,void 0,function*(){null==e&&(e="ENS");const r=yield this.getNetwork();r.ensAddress||ka.throwError("network does not support ENS",w.errors.UNSUPPORTED_OPERATION,{operation:e,network:r.name});try{const e=yield this.call({to:r.ensAddress,data:"0x0178b8bf"+jr(t).substring(2)});return this.formatter.callAddress(e)}catch(t){}return null})}resolveName(t){return Aa(this,void 0,void 0,function*(){t=yield t;try{return Promise.resolve(this.formatter.address(t))}catch(e){if(P(t))throw e}"string"!=typeof t&&ka.throwArgumentError("invalid ENS name","name",t);const e=yield this.getResolver(t);return e?yield e.getAddress():null})}lookupAddress(t){return Aa(this,void 0,void 0,function*(){t=yield t;const e=(t=this.formatter.address(t)).substring(2).toLowerCase()+".addr.reverse",r=yield this._getResolver(e,"lookupAddress");if(null==r)return null;const n=Oa(yield this.call({to:r,data:"0x691f3431"+jr(e).substring(2)}),0);return(yield this.resolveName(n))!=t?null:n})}getAvatar(t){return Aa(this,void 0,void 0,function*(){let e=null;if(P(t)){const r=this.formatter.address(t).substring(2).toLowerCase()+".addr.reverse",n=yield this._getResolver(r,"getAvatar");if(!n)return null;e=new Ga(this,n,r);try{const t=yield e.getAvatar();if(t)return t.url}catch(t){if(t.code!==w.errors.CALL_EXCEPTION)throw t}try{const t=Oa(yield this.call({to:n,data:"0x691f3431"+jr(r).substring(2)}),0);e=yield this.getResolver(t)}catch(t){if(t.code!==w.errors.CALL_EXCEPTION)throw t;return null}}else if(e=yield this.getResolver(t),!e)return null;const r=yield e.getAvatar();return null==r?null:r.url})}perform(t,e){return ka.throwError(t+" not implemented",w.errors.NOT_IMPLEMENTED,{operation:t})}_startEvent(t){this.polling=this._events.filter(t=>t.pollable()).length>0}_stopEvent(t){this.polling=this._events.filter(t=>t.pollable()).length>0}_addEventListener(t,e,r){const n=new Ia(xa(t),e,r);return this._events.push(n),this._startEvent(n),this}on(t,e){return this._addEventListener(t,e,!1)}once(t,e){return this._addEventListener(t,e,!0)}emit(t,...e){let r=!1,n=[],i=xa(t);return this._events=this._events.filter(t=>t.tag!==i||(setTimeout(()=>{t.listener.apply(this,e)},0),r=!0,!t.once||(n.push(t),!1))),n.forEach(t=>{this._stopEvent(t)}),r}listenerCount(t){if(!t)return this._events.length;let e=xa(t);return this._events.filter(t=>t.tag===e).length}listeners(t){if(null==t)return this._events.map(t=>t.listener);let e=xa(t);return this._events.filter(t=>t.tag===e).map(t=>t.listener)}off(t,e){if(null==e)return this.removeAllListeners(t);const r=[];let n=!1,i=xa(t);return this._events=this._events.filter(t=>t.tag!==i||t.listener!=e||(!!n||(n=!0,r.push(t),!1))),r.forEach(t=>{this._stopEvent(t)}),this}removeAllListeners(t){let e=[];if(null==t)e=this._events,this._events=[];else{const r=xa(t);this._events=this._events.filter(t=>t.tag!==r||(e.push(t),!1))}return e.forEach(t=>{this._stopEvent(t)}),this}}var Wa=function(t,e,r,n){return new(r||(r=Promise))(function(i,o){function s(t){try{l(n.next(t))}catch(t){o(t)}}function a(t){try{l(n.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}l((n=n.apply(t,e||[])).next())})};const Va=new w(ma),$a=["call","estimateGas"];function Ja(t,e){if(null==t)return null;if("string"==typeof t.message&&t.message.match("reverted")){const r=P(t.data)?t.data:null;if(!e||r)return{message:t.message,data:r}}if("object"==typeof t){for(const r in t){const n=Ja(t[r],e);if(n)return n}return null}if("string"==typeof t)try{return Ja(JSON.parse(t),e)}catch(t){}return null}function Qa(t,e,r){const n=r.transaction||r.signedTransaction;if("call"===t){const t=Ja(e,!0);if(t)return t.data;Va.throwError("missing revert data in call exception; Transaction reverted without a reason string",w.errors.CALL_EXCEPTION,{data:"0x",transaction:n,error:e})}if("estimateGas"===t){let r=Ja(e.body,!1);null==r&&(r=Ja(e,!1)),r&&Va.throwError("cannot estimate gas; transaction may fail or may require manual gas limit",w.errors.UNPREDICTABLE_GAS_LIMIT,{reason:r.message,method:t,transaction:n,error:e})}let i=e.message;throw e.code===w.errors.SERVER_ERROR&&e.error&&"string"==typeof e.error.message?i=e.error.message:"string"==typeof e.body?i=e.body:"string"==typeof e.responseText&&(i=e.responseText),i=(i||"").toLowerCase(),i.match(/insufficient funds|base fee exceeds gas limit|InsufficientFunds/i)&&Va.throwError("insufficient funds for intrinsic transaction cost",w.errors.INSUFFICIENT_FUNDS,{error:e,method:t,transaction:n}),i.match(/nonce (is )?too low/i)&&Va.throwError("nonce has already been used",w.errors.NONCE_EXPIRED,{error:e,method:t,transaction:n}),i.match(/replacement transaction underpriced|transaction gas price.*too low/i)&&Va.throwError("replacement fee too low",w.errors.REPLACEMENT_UNDERPRICED,{error:e,method:t,transaction:n}),i.match(/only replay-protected/i)&&Va.throwError("legacy pre-eip-155 transactions not supported",w.errors.UNSUPPORTED_OPERATION,{error:e,method:t,transaction:n}),$a.indexOf(t)>=0&&i.match(/gas required exceeds allowance|always failing transaction|execution reverted|revert/)&&Va.throwError("cannot estimate gas; transaction may fail or may require manual gas limit",w.errors.UNPREDICTABLE_GAS_LIMIT,{error:e,method:t,transaction:n}),e}function Ya(t){return new Promise(function(e){setTimeout(e,t)})}function Xa(t){if(t.error){const e=new Error(t.error.message);throw e.code=t.error.code,e.data=t.error.data,e}return t.result}function Za(t){return t?t.toLowerCase():t}const tl={};class el extends xn{constructor(t,e,r){if(super(),t!==tl)throw new Error("do not call the JsonRpcSigner constructor directly; use provider.getSigner");dt(this,"provider",e),null==r&&(r=0),"string"==typeof r?(dt(this,"_address",this.provider.formatter.address(r)),dt(this,"_index",null)):"number"==typeof r?(dt(this,"_index",r),dt(this,"_address",null)):Va.throwArgumentError("invalid address or index","addressOrIndex",r)}connect(t){return Va.throwError("cannot alter JSON-RPC Signer connection",w.errors.UNSUPPORTED_OPERATION,{operation:"connect"})}connectUnchecked(){return new rl(tl,this.provider,this._address||this._index)}getAddress(){return this._address?Promise.resolve(this._address):this.provider.send("eth_accounts",[]).then(t=>(t.length<=this._index&&Va.throwError("unknown account #"+this._index,w.errors.UNSUPPORTED_OPERATION,{operation:"getAddress"}),this.provider.formatter.address(t[this._index])))}sendUncheckedTransaction(t){t=gt(t);const e=this.getAddress().then(t=>(t&&(t=t.toLowerCase()),t));if(null==t.gasLimit){const r=gt(t);r.from=e,t.gasLimit=this.provider.estimateGas(r)}return null!=t.to&&(t.to=Promise.resolve(t.to).then(t=>Wa(this,void 0,void 0,function*(){if(null==t)return null;const e=yield this.provider.resolveName(t);return null==e&&Va.throwArgumentError("provided ENS name resolves to null","tx.to",t),e}))),pt({tx:pt(t),sender:e}).then(({tx:e,sender:r})=>{null!=e.from?e.from.toLowerCase()!==r&&Va.throwArgumentError("from address mismatch","transaction",t):e.from=r;const n=this.provider.constructor.hexlifyTransaction(e,{from:!0});return this.provider.send("eth_sendTransaction",[n]).then(t=>t,t=>("string"==typeof t.message&&t.message.match(/user denied/i)&&Va.throwError("user rejected transaction",w.errors.ACTION_REJECTED,{action:"sendTransaction",transaction:e}),Qa("sendTransaction",t,n)))})}signTransaction(t){return Va.throwError("signing transactions is unsupported",w.errors.UNSUPPORTED_OPERATION,{operation:"signTransaction"})}sendTransaction(t){return Wa(this,void 0,void 0,function*(){const e=yield this.provider._getInternalBlockNumber(100+2*this.provider.pollingInterval),r=yield this.sendUncheckedTransaction(t);try{return yield ua(()=>Wa(this,void 0,void 0,function*(){const t=yield this.provider.getTransaction(r);if(null!==t)return this.provider._wrapTransaction(t,r,e)}),{oncePoll:this.provider})}catch(t){throw t.transactionHash=r,t}})}signMessage(t){return Wa(this,void 0,void 0,function*(){const e="string"==typeof t?$e(t):t,r=yield this.getAddress();try{return yield this.provider.send("personal_sign",[N(e),r.toLowerCase()])}catch(e){throw"string"==typeof e.message&&e.message.match(/user denied/i)&&Va.throwError("user rejected signing",w.errors.ACTION_REJECTED,{action:"signMessage",from:r,messageData:t}),e}})}_legacySignMessage(t){return Wa(this,void 0,void 0,function*(){const e="string"==typeof t?$e(t):t,r=yield this.getAddress();try{return yield this.provider.send("eth_sign",[r.toLowerCase(),N(e)])}catch(e){throw"string"==typeof e.message&&e.message.match(/user denied/i)&&Va.throwError("user rejected signing",w.errors.ACTION_REJECTED,{action:"_legacySignMessage",from:r,messageData:t}),e}})}_signTypedData(t,e,r){return Wa(this,void 0,void 0,function*(){const n=yield cn.resolveNames(t,e,r,t=>this.provider.resolveName(t)),i=yield this.getAddress();try{return yield this.provider.send("eth_signTypedData_v4",[i.toLowerCase(),JSON.stringify(cn.getPayload(n.domain,e,n.value))])}catch(t){throw"string"==typeof t.message&&t.message.match(/user denied/i)&&Va.throwError("user rejected signing",w.errors.ACTION_REJECTED,{action:"_signTypedData",from:i,messageData:{domain:n.domain,types:e,value:n.value}}),t}})}unlock(t){return Wa(this,void 0,void 0,function*(){const e=this.provider,r=yield this.getAddress();return e.send("personal_unlockAccount",[r.toLowerCase(),t,null])})}}class rl extends el{sendTransaction(t){return this.sendUncheckedTransaction(t).then(t=>({hash:t,nonce:null,gasLimit:null,gasPrice:null,data:null,value:null,chainId:null,confirmations:0,from:null,wait:e=>this.provider.waitForTransaction(t,e)}))}}const nl={chainId:!0,data:!0,gasLimit:!0,gasPrice:!0,nonce:!0,to:!0,value:!0,type:!0,accessList:!0,maxFeePerGas:!0,maxPriorityFeePerGas:!0};class il extends Ka{constructor(t,e){let r=e;null==r&&(r=new Promise((t,e)=>{setTimeout(()=>{this.detectNetwork().then(e=>{t(e)},t=>{e(t)})},0)})),super(r),t||(t=ft(this.constructor,"defaultUrl")()),dt(this,"connection","string"==typeof t?Object.freeze({url:t}):Object.freeze(gt(t))),this._nextId=42}get _cache(){return null==this._eventLoopCache&&(this._eventLoopCache={}),this._eventLoopCache}static defaultUrl(){return"http://localhost:8545"}detectNetwork(){return this._cache.detectNetwork||(this._cache.detectNetwork=this._uncachedDetectNetwork(),setTimeout(()=>{this._cache.detectNetwork=null},0)),this._cache.detectNetwork}_uncachedDetectNetwork(){return Wa(this,void 0,void 0,function*(){yield Ya(0);let t=null;try{t=yield this.send("eth_chainId",[])}catch(e){try{t=yield this.send("net_version",[])}catch(t){}}if(null!=t){const e=ft(this.constructor,"getNetwork");try{return e(W.from(t).toNumber())}catch(e){return Va.throwError("could not detect network",w.errors.NETWORK_ERROR,{chainId:t,event:"invalidNetwork",serverError:e})}}return Va.throwError("could not detect network",w.errors.NETWORK_ERROR,{event:"noNetwork"})})}getSigner(t){return new el(tl,this,t)}getUncheckedSigner(t){return this.getSigner(t).connectUnchecked()}listAccounts(){return this.send("eth_accounts",[]).then(t=>t.map(t=>this.formatter.address(t)))}send(t,e){const r={method:t,params:e,id:this._nextId++,jsonrpc:"2.0"};this.emit("debug",{action:"request",request:bt(r),provider:this});const n=["eth_chainId","eth_blockNumber"].indexOf(t)>=0;if(n&&this._cache[t])return this._cache[t];const i=ca(this.connection,JSON.stringify(r),Xa).then(t=>(this.emit("debug",{action:"response",request:r,response:t,provider:this}),t),t=>{throw this.emit("debug",{action:"response",error:t,request:r,provider:this}),t});return n&&(this._cache[t]=i,setTimeout(()=>{this._cache[t]=null},0)),i}prepareRequest(t,e){switch(t){case"getBlockNumber":return["eth_blockNumber",[]];case"getGasPrice":return["eth_gasPrice",[]];case"getBalance":return["eth_getBalance",[Za(e.address),e.blockTag]];case"getTransactionCount":return["eth_getTransactionCount",[Za(e.address),e.blockTag]];case"getCode":return["eth_getCode",[Za(e.address),e.blockTag]];case"getStorageAt":return["eth_getStorageAt",[Za(e.address),D(e.position,32),e.blockTag]];case"sendTransaction":return["eth_sendRawTransaction",[e.signedTransaction]];case"getBlock":return e.blockTag?["eth_getBlockByNumber",[e.blockTag,!!e.includeTransactions]]:e.blockHash?["eth_getBlockByHash",[e.blockHash,!!e.includeTransactions]]:null;case"getTransaction":return["eth_getTransactionByHash",[e.transactionHash]];case"getTransactionReceipt":return["eth_getTransactionReceipt",[e.transactionHash]];case"call":return["eth_call",[ft(this.constructor,"hexlifyTransaction")(e.transaction,{from:!0}),e.blockTag]];case"estimateGas":return["eth_estimateGas",[ft(this.constructor,"hexlifyTransaction")(e.transaction,{from:!0})]];case"getLogs":return e.filter&&null!=e.filter.address&&(e.filter.address=Za(e.filter.address)),["eth_getLogs",[e.filter]]}return null}perform(t,e){return Wa(this,void 0,void 0,function*(){if("call"===t||"estimateGas"===t){const t=e.transaction;if(t&&null!=t.type&&W.from(t.type).isZero()&&null==t.maxFeePerGas&&null==t.maxPriorityFeePerGas){const r=yield this.getFeeData();null==r.maxFeePerGas&&null==r.maxPriorityFeePerGas&&((e=gt(e)).transaction=gt(t),delete e.transaction.type)}}const r=this.prepareRequest(t,e);null==r&&Va.throwError(t+" not implemented",w.errors.NOT_IMPLEMENTED,{operation:t});try{return yield this.send(r[0],r[1])}catch(r){return Qa(t,r,e)}})}_startEvent(t){"pending"===t.tag&&this._startPending(),super._startEvent(t)}_startPending(){if(null!=this._pendingFilter)return;const t=this,e=this.send("eth_newPendingTransactionFilter",[]);this._pendingFilter=e,e.then(function(r){return function n(){t.send("eth_getFilterChanges",[r]).then(function(r){if(t._pendingFilter!=e)return null;let n=Promise.resolve();return r.forEach(function(e){t._emitted["t:"+e.toLowerCase()]="pending",n=n.then(function(){return t.getTransaction(e).then(function(e){return t.emit("pending",e),null})})}),n.then(function(){return Ya(1e3)})}).then(function(){if(t._pendingFilter==e)return setTimeout(function(){n()},0),null;t.send("eth_uninstallFilter",[r])}).catch(t=>{})}(),r}).catch(t=>{})}_stopEvent(t){"pending"===t.tag&&0===this.listenerCount("pending")&&(this._pendingFilter=null),super._stopEvent(t)}static hexlifyTransaction(t,e){const r=gt(nl);if(e)for(const t in e)e[t]&&(r[t]=!0);mt(t,r);const n={};return["chainId","gasLimit","gasPrice","type","maxFeePerGas","maxPriorityFeePerGas","nonce","value"].forEach(function(e){if(null==t[e])return;const r=F(W.from(t[e]));"gasLimit"===e&&(e="gas"),n[e]=r}),["from","to","data"].forEach(function(e){null!=t[e]&&(n[e]=N(t[e]))}),t.accessList&&(n.accessList=fo(t.accessList)),n}}let ol=null;try{if(ol=WebSocket,null==ol)throw new Error("inject please")}catch(t){const e=new w(ma);ol=function(){e.throwError("WebSockets not supported in this environment",w.errors.UNSUPPORTED_OPERATION,{operation:"new WebSocket()"})}}var sl=function(t,e,r,n){return new(r||(r=Promise))(function(i,o){function s(t){try{l(n.next(t))}catch(t){o(t)}}function a(t){try{l(n.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}l((n=n.apply(t,e||[])).next())})};const al=new w(ma);let ll=1;class cl extends il{constructor(t,e){"any"===e&&al.throwError("WebSocketProvider does not support 'any' network yet",w.errors.UNSUPPORTED_OPERATION,{operation:"network:any"}),super("string"==typeof t?t:"_websocket",e),this._pollingInterval=-1,this._wsReady=!1,dt(this,"_websocket","string"==typeof t?new ol(this.connection.url):t),dt(this,"_requests",{}),dt(this,"_subs",{}),dt(this,"_subIds",{}),dt(this,"_detectNetwork",super.detectNetwork()),this.websocket.onopen=()=>{this._wsReady=!0,Object.keys(this._requests).forEach(t=>{this.websocket.send(this._requests[t].payload)})},this.websocket.onmessage=t=>{const e=t.data,r=JSON.parse(e);if(null!=r.id){const t=String(r.id),n=this._requests[t];if(delete this._requests[t],void 0!==r.result)n.callback(null,r.result),this.emit("debug",{action:"response",request:JSON.parse(n.payload),response:r.result,provider:this});else{let t=null;r.error?(t=new Error(r.error.message||"unknown error"),dt(t,"code",r.error.code||null),dt(t,"response",e)):t=new Error("unknown error"),n.callback(t,void 0),this.emit("debug",{action:"response",error:t,request:JSON.parse(n.payload),provider:this})}}else if("eth_subscription"===r.method){const t=this._subs[r.params.subscription];t&&t.processFunc(r.params.result)}else console.warn("this should not happen")};const r=setInterval(()=>{this.emit("poll")},1e3);r.unref&&r.unref()}get websocket(){return this._websocket}detectNetwork(){return this._detectNetwork}get pollingInterval(){return 0}resetEventsBlock(t){al.throwError("cannot reset events block on WebSocketProvider",w.errors.UNSUPPORTED_OPERATION,{operation:"resetEventBlock"})}set pollingInterval(t){al.throwError("cannot set polling interval on WebSocketProvider",w.errors.UNSUPPORTED_OPERATION,{operation:"setPollingInterval"})}poll(){return sl(this,void 0,void 0,function*(){return null})}set polling(t){t&&al.throwError("cannot set polling on WebSocketProvider",w.errors.UNSUPPORTED_OPERATION,{operation:"setPolling"})}send(t,e){const r=ll++;return new Promise((n,i)=>{const o=JSON.stringify({method:t,params:e,id:r,jsonrpc:"2.0"});this.emit("debug",{action:"request",request:JSON.parse(o),provider:this}),this._requests[String(r)]={callback:function(t,e){return t?i(t):n(e)},payload:o},this._wsReady&&this.websocket.send(o)})}static defaultUrl(){return"ws://localhost:8546"}_subscribe(t,e,r){return sl(this,void 0,void 0,function*(){let n=this._subIds[t];null==n&&(n=Promise.all(e).then(t=>this.send("eth_subscribe",t)),this._subIds[t]=n);const i=yield n;this._subs[i]={tag:t,processFunc:r}})}_startEvent(t){switch(t.type){case"block":this._subscribe("block",["newHeads"],t=>{const e=W.from(t.number).toNumber();this._emitted.block=e,this.emit("block",e)});break;case"pending":this._subscribe("pending",["newPendingTransactions"],t=>{this.emit("pending",t)});break;case"filter":this._subscribe(t.tag,["logs",this._getFilter(t.filter)],e=>{null==e.removed&&(e.removed=!1),this.emit(t.filter,this.formatter.filterLog(e))});break;case"tx":{const e=t=>{const e=t.hash;this.getTransactionReceipt(e).then(t=>{t&&this.emit(e,t)})};e(t),this._subscribe("tx",["newHeads"],t=>{this._events.filter(t=>"tx"===t.type).forEach(e)});break}case"debug":case"poll":case"willPoll":case"didPoll":case"error":break;default:console.log("unhandled:",t)}}_stopEvent(t){let e=t.tag;if("tx"===t.type){if(this._events.filter(t=>"tx"===t.type).length)return;e="tx"}else if(this.listenerCount(t.event))return;const r=this._subIds[e];r&&(delete this._subIds[e],r.then(t=>{this._subs[t]&&(delete this._subs[t],this.send("eth_unsubscribe",[t]))}))}destroy(){return sl(this,void 0,void 0,function*(){this.websocket.readyState===ol.CONNECTING&&(yield new Promise(t=>{this.websocket.onopen=function(){t(!0)},this.websocket.onerror=function(){t(!1)}})),this.websocket.close(1e3)})}}var ul=function(t,e,r,n){return new(r||(r=Promise))(function(i,o){function s(t){try{l(n.next(t))}catch(t){o(t)}}function a(t){try{l(n.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}l((n=n.apply(t,e||[])).next())})};const hl=new w(ma);class dl extends il{detectNetwork(){const t=Object.create(null,{detectNetwork:{get:()=>super.detectNetwork}});return ul(this,void 0,void 0,function*(){let e=this.network;return null==e&&(e=yield t.detectNetwork.call(this),e||hl.throwError("no network detected",w.errors.UNKNOWN_ERROR,{}),null==this._network&&(dt(this,"_network",e),this.emit("network",e,null))),e})}}class fl extends dl{constructor(t,e){hl.checkAbstract(new.target,fl),t=ft(new.target,"getNetwork")(t),e=ft(new.target,"getApiKey")(e);super(ft(new.target,"getUrl")(t,e),t),"string"==typeof e?dt(this,"apiKey",e):null!=e&&Object.keys(e).forEach(t=>{dt(this,t,e[t])})}_startPending(){hl.warn("WARNING: API provider does not support pending filters")}isCommunityResource(){return!1}getSigner(t){return hl.throwError("API provider does not support signing",w.errors.UNSUPPORTED_OPERATION,{operation:"getSigner"})}listAccounts(){return Promise.resolve([])}static getApiKey(t){return t}static getUrl(t,e){return hl.throwError("not implemented; sub-classes must override getUrl",w.errors.NOT_IMPLEMENTED,{operation:"getUrl"})}}const pl=new w(ma),ml="_gg7wSSi0KMBsdKnGVfHDueq6xMB9EkC";class gl extends cl{constructor(t,e){const r=new vl(t,e);super(r.connection.url.replace(/^http/i,"ws").replace(".alchemyapi.",".ws.alchemyapi."),r.network),dt(this,"apiKey",r.apiKey)}isCommunityResource(){return this.apiKey===ml}}class vl extends fl{static getWebSocketProvider(t,e){return new gl(t,e)}static getApiKey(t){return null==t?ml:(t&&"string"!=typeof t&&pl.throwArgumentError("invalid apiKey","apiKey",t),t)}static getUrl(t,e){let r=null;switch(t.name){case"homestead":r="eth-mainnet.alchemyapi.io/v2/";break;case"goerli":r="eth-goerli.g.alchemy.com/v2/";break;case"sepolia":r="eth-sepolia.g.alchemy.com/v2/";break;case"matic":r="polygon-mainnet.g.alchemy.com/v2/";break;case"maticmum":r="polygon-mumbai.g.alchemy.com/v2/";break;case"arbitrum":r="arb-mainnet.g.alchemy.com/v2/";break;case"arbitrum-goerli":r="arb-goerli.g.alchemy.com/v2/";break;case"arbitrum-sepolia":r="arb-sepolia.g.alchemy.com/v2/";break;case"optimism":r="opt-mainnet.g.alchemy.com/v2/";break;case"optimism-goerli":r="opt-goerli.g.alchemy.com/v2/";break;case"optimism-sepolia":r="opt-sepolia.g.alchemy.com/v2/";break;default:pl.throwArgumentError("unsupported network","network",arguments[0])}return{allowGzip:!0,url:"https://"+r+e,throttleCallback:(t,r)=>(e===ml&&Ea(),Promise.resolve(!0))}}isCommunityResource(){return this.apiKey===ml}}const wl=new w(ma),yl="9f7d929b018cdffb338517efa06f58359e86ff1ffd350bc889738523659e7972";function bl(t){switch(t){case"homestead":return"rpc.ankr.com/eth/";case"ropsten":return"rpc.ankr.com/eth_ropsten/";case"rinkeby":return"rpc.ankr.com/eth_rinkeby/";case"goerli":return"rpc.ankr.com/eth_goerli/";case"sepolia":return"rpc.ankr.com/eth_sepolia/";case"matic":return"rpc.ankr.com/polygon/";case"maticmum":return"rpc.ankr.com/polygon_mumbai/";case"optimism":return"rpc.ankr.com/optimism/";case"optimism-goerli":return"rpc.ankr.com/optimism_testnet/";case"optimism-sepolia":return"rpc.ankr.com/optimism_sepolia/";case"arbitrum":return"rpc.ankr.com/arbitrum/"}return wl.throwArgumentError("unsupported network","name",t)}class El extends fl{isCommunityResource(){return this.apiKey===yl}static getApiKey(t){return null==t?yl:t}static getUrl(t,e){null==e&&(e=yl);const r={allowGzip:!0,url:"https://"+bl(t.name)+e,throttleCallback:(t,r)=>(e.apiKey===yl&&Ea(),Promise.resolve(!0))};return null!=e.projectSecret&&(r.user="",r.password=e.projectSecret),r}}var Al=function(t,e,r,n){return new(r||(r=Promise))(function(i,o){function s(t){try{l(n.next(t))}catch(t){o(t)}}function a(t){try{l(n.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}l((n=n.apply(t,e||[])).next())})};const kl=new w(ma);class Sl extends fl{static getApiKey(t){return null!=t&&kl.throwArgumentError("apiKey not supported for cloudflare","apiKey",t),null}static getUrl(t,e){let r=null;if("homestead"===t.name)r="https://cloudflare-eth.com/";else kl.throwArgumentError("unsupported network","network",arguments[0]);return r}perform(t,e){const r=Object.create(null,{perform:{get:()=>super.perform}});return Al(this,void 0,void 0,function*(){if("getBlockNumber"===t){return(yield r.perform.call(this,"getBlock",{blockTag:"latest"})).number}return r.perform.call(this,t,e)})}}var Cl=function(t,e,r,n){return new(r||(r=Promise))(function(i,o){function s(t){try{l(n.next(t))}catch(t){o(t)}}function a(t){try{l(n.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}l((n=n.apply(t,e||[])).next())})};const xl=new w(ma);function _l(t){const e={};for(let r in t){if(null==t[r])continue;let n=t[r];"type"===r&&0===n||(n={type:!0,gasLimit:!0,gasPrice:!0,maxFeePerGs:!0,maxPriorityFeePerGas:!0,nonce:!0,value:!0}[r]?F(N(n)):"accessList"===r?"["+fo(n).map(t=>`{address:"${t.address}",storageKeys:["${t.storageKeys.join('","')}"]}`).join(",")+"]":N(n),e[r]=n)}return e}function Tl(t){if(0==t.status&&("No records found"===t.message||"No transactions found"===t.message))return t.result;if(1!=t.status||"string"!=typeof t.message||!t.message.match(/^OK/)){const e=new Error("invalid response");throw e.result=JSON.stringify(t),(t.result||"").toLowerCase().indexOf("rate limit")>=0&&(e.throttleRetry=!0),e}return t.result}function Pl(t){if(t&&0==t.status&&"NOTOK"==t.message&&(t.result||"").toLowerCase().indexOf("rate limit")>=0){const e=new Error("throttled response");throw e.result=JSON.stringify(t),e.throttleRetry=!0,e}if("2.0"!=t.jsonrpc){const e=new Error("invalid response");throw e.result=JSON.stringify(t),e}if(t.error){const e=new Error(t.error.message||"unknown error");throw t.error.code&&(e.code=t.error.code),t.error.data&&(e.data=t.error.data),e}return t.result}function Il(t){if("pending"===t)throw new Error("pending not supported");return"latest"===t?t:parseInt(t.substring(2),16)}function Nl(t,e,r){if("call"===t&&e.code===w.errors.SERVER_ERROR){const t=e.error;if(t&&(t.message.match(/reverted/i)||t.message.match(/VM execution error/i))){let r=t.data;if(r&&(r="0x"+r.replace(/^.*0x/i,"")),P(r))return r;xl.throwError("missing revert data in call exception",w.errors.CALL_EXCEPTION,{error:e,data:"0x"})}}let n=e.message;throw e.code===w.errors.SERVER_ERROR&&(e.error&&"string"==typeof e.error.message?n=e.error.message:"string"==typeof e.body?n=e.body:"string"==typeof e.responseText&&(n=e.responseText)),n=(n||"").toLowerCase(),n.match(/insufficient funds/)&&xl.throwError("insufficient funds for intrinsic transaction cost",w.errors.INSUFFICIENT_FUNDS,{error:e,method:t,transaction:r}),n.match(/same hash was already imported|transaction nonce is too low|nonce too low/)&&xl.throwError("nonce has already been used",w.errors.NONCE_EXPIRED,{error:e,method:t,transaction:r}),n.match(/another transaction with same nonce/)&&xl.throwError("replacement fee too low",w.errors.REPLACEMENT_UNDERPRICED,{error:e,method:t,transaction:r}),n.match(/execution failed due to an exception|execution reverted/)&&xl.throwError("cannot estimate gas; transaction may fail or may require manual gas limit",w.errors.UNPREDICTABLE_GAS_LIMIT,{error:e,method:t,transaction:r}),e}class Ml extends Ka{constructor(t,e){super(t),dt(this,"baseUrl",this.getBaseUrl()),dt(this,"apiKey",e||null)}getBaseUrl(){switch(this.network?this.network.name:"invalid"){case"homestead":return"https://api.etherscan.io";case"goerli":return"https://api-goerli.etherscan.io";case"sepolia":return"https://api-sepolia.etherscan.io";case"matic":return"https://api.polygonscan.com";case"maticmum":return"https://api-testnet.polygonscan.com";case"arbitrum":return"https://api.arbiscan.io";case"arbitrum-goerli":return"https://api-goerli.arbiscan.io";case"optimism":return"https://api-optimistic.etherscan.io";case"optimism-goerli":return"https://api-goerli-optimistic.etherscan.io"}return xl.throwArgumentError("unsupported network","network",this.network.name)}getUrl(t,e){const r=Object.keys(e).reduce((t,r)=>{const n=e[r];return null!=n&&(t+=`&${r}=${n}`),t},""),n=this.apiKey?`&apikey=${this.apiKey}`:"";return`${this.baseUrl}/api?module=${t}${r}${n}`}getPostUrl(){return`${this.baseUrl}/api`}getPostData(t,e){return e.module=t,e.apikey=this.apiKey,e}fetch(t,e,r){return Cl(this,void 0,void 0,function*(){const n=r?this.getPostUrl():this.getUrl(t,e),i=r?this.getPostData(t,e):null,o="proxy"===t?Pl:Tl;this.emit("debug",{action:"request",request:n,provider:this});const s={url:n,throttleSlotInterval:1e3,throttleCallback:(t,e)=>(this.isCommunityResource()&&Ea(),Promise.resolve(!0))};let a=null;i&&(s.headers={"content-type":"application/x-www-form-urlencoded; charset=UTF-8"},a=Object.keys(i).map(t=>`${t}=${i[t]}`).join("&"));const l=yield ca(s,a,o||Pl);return this.emit("debug",{action:"response",request:n,response:bt(l),provider:this}),l})}detectNetwork(){return Cl(this,void 0,void 0,function*(){return this.network})}perform(t,e){const r=Object.create(null,{perform:{get:()=>super.perform}});return Cl(this,void 0,void 0,function*(){switch(t){case"getBlockNumber":return this.fetch("proxy",{action:"eth_blockNumber"});case"getGasPrice":return this.fetch("proxy",{action:"eth_gasPrice"});case"getBalance":return this.fetch("account",{action:"balance",address:e.address,tag:e.blockTag});case"getTransactionCount":return this.fetch("proxy",{action:"eth_getTransactionCount",address:e.address,tag:e.blockTag});case"getCode":return this.fetch("proxy",{action:"eth_getCode",address:e.address,tag:e.blockTag});case"getStorageAt":return this.fetch("proxy",{action:"eth_getStorageAt",address:e.address,position:e.position,tag:e.blockTag});case"sendTransaction":return this.fetch("proxy",{action:"eth_sendRawTransaction",hex:e.signedTransaction},!0).catch(t=>Nl("sendTransaction",t,e.signedTransaction));case"getBlock":if(e.blockTag)return this.fetch("proxy",{action:"eth_getBlockByNumber",tag:e.blockTag,boolean:e.includeTransactions?"true":"false"});throw new Error("getBlock by blockHash not implemented");case"getTransaction":return this.fetch("proxy",{action:"eth_getTransactionByHash",txhash:e.transactionHash});case"getTransactionReceipt":return this.fetch("proxy",{action:"eth_getTransactionReceipt",txhash:e.transactionHash});case"call":{if("latest"!==e.blockTag)throw new Error("EtherscanProvider does not support blockTag for call");const t=_l(e.transaction);t.module="proxy",t.action="eth_call";try{return yield this.fetch("proxy",t,!0)}catch(t){return Nl("call",t,e.transaction)}}case"estimateGas":{const t=_l(e.transaction);t.module="proxy",t.action="eth_estimateGas";try{return yield this.fetch("proxy",t,!0)}catch(t){return Nl("estimateGas",t,e.transaction)}}case"getLogs":{const t={action:"getLogs"};if(e.filter.fromBlock&&(t.fromBlock=Il(e.filter.fromBlock)),e.filter.toBlock&&(t.toBlock=Il(e.filter.toBlock)),e.filter.address&&(t.address=e.filter.address),e.filter.topics&&e.filter.topics.length>0&&(e.filter.topics.length>1&&xl.throwError("unsupported topic count",w.errors.UNSUPPORTED_OPERATION,{topics:e.filter.topics}),1===e.filter.topics.length)){const r=e.filter.topics[0];"string"==typeof r&&66===r.length||xl.throwError("unsupported topic format",w.errors.UNSUPPORTED_OPERATION,{topic0:r}),t.topic0=r}const r=yield this.fetch("logs",t);let n={};for(let t=0;t<r.length;t++){const e=r[t];if(null==e.blockHash){if(null==n[e.blockNumber]){const t=yield this.getBlock(e.blockNumber);t&&(n[e.blockNumber]=t.hash)}e.blockHash=n[e.blockNumber]}}return r}case"getEtherPrice":return"homestead"!==this.network.name?0:parseFloat((yield this.fetch("stats",{action:"ethprice"})).ethusd)}return r.perform.call(this,t,e)})}getHistory(t,e,r){return Cl(this,void 0,void 0,function*(){const n={action:"txlist",address:yield this.resolveName(t),startblock:null==e?0:e,endblock:null==r?99999999:r,sort:"asc"};return(yield this.fetch("account",n)).map(t=>{["contractAddress","to"].forEach(function(e){""==t[e]&&delete t[e]}),null==t.creates&&null!=t.contractAddress&&(t.creates=t.contractAddress);const e=this.formatter.transactionResponse(t);return t.timeStamp&&(e.timestamp=parseInt(t.timeStamp)),e})})}isCommunityResource(){return null==this.apiKey}}var Bl=function(t,e,r,n){return new(r||(r=Promise))(function(i,o){function s(t){try{l(n.next(t))}catch(t){o(t)}}function a(t){try{l(n.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}l((n=n.apply(t,e||[])).next())})};const Rl=new w(ma);function Fl(){return(new Date).getTime()}function Ol(t){let e=null;for(let r=0;r<t.length;r++){const n=t[r];if(null==n)return null;e?e.name===n.name&&e.chainId===n.chainId&&(e.ensAddress===n.ensAddress||null==e.ensAddress&&null==n.ensAddress)||Rl.throwArgumentError("provider mismatch","networks",t):e=n}return e}function Dl(t,e){t=t.slice().sort();const r=Math.floor(t.length/2);if(t.length%2)return t[r];const n=t[r-1],i=t[r];return null!=e&&Math.abs(n-i)>e?null:(n+i)/2}function Ul(t){if(null===t)return"null";if("number"==typeof t||"boolean"==typeof t)return JSON.stringify(t);if("string"==typeof t)return t;if(W.isBigNumber(t))return t.toString();if(Array.isArray(t))return JSON.stringify(t.map(t=>Ul(t)));if("object"==typeof t){const e=Object.keys(t);return e.sort(),"{"+e.map(e=>{let r=t[e];return r="function"==typeof r?"[function]":Ul(r),JSON.stringify(e)+":"+r}).join(",")+"}"}throw new Error("unknown value type: "+typeof t)}let Ll=1;function ql(t){let e=null,r=null,n=new Promise(n=>{e=function(){r&&(clearTimeout(r),r=null),n()},r=setTimeout(e,t)});return{cancel:e,getPromise:function(){return n},wait:t=>(n=n.then(t),n)}}const zl=[w.errors.CALL_EXCEPTION,w.errors.INSUFFICIENT_FUNDS,w.errors.NONCE_EXPIRED,w.errors.REPLACEMENT_UNDERPRICED,w.errors.UNPREDICTABLE_GAS_LIMIT],Gl=["address","args","errorArgs","errorSignature","method","transaction"];function Hl(t,e){const r={weight:t.weight};return Object.defineProperty(r,"provider",{get:()=>t.provider}),t.start&&(r.start=t.start),e&&(r.duration=e-t.start),t.done&&(t.error?r.error=t.error:r.result=t.result||null),r}function jl(t,e,r){let n=Ul;switch(e){case"getBlockNumber":return function(e){const r=e.map(t=>t.result);let n=Dl(e.map(t=>t.result),2);if(null!=n)return n=Math.ceil(n),r.indexOf(n+1)>=0&&n++,n>=t._highestBlockNumber&&(t._highestBlockNumber=n),t._highestBlockNumber};case"getGasPrice":return function(t){const e=t.map(t=>t.result);return e.sort(),e[Math.floor(e.length/2)]};case"getEtherPrice":return function(t){return Dl(t.map(t=>t.result))};case"getBalance":case"getTransactionCount":case"getCode":case"getStorageAt":case"call":case"estimateGas":case"getLogs":break;case"getTransaction":case"getTransactionReceipt":n=function(t){return null==t?null:((t=gt(t)).confirmations=-1,Ul(t))};break;case"getBlock":n=r.includeTransactions?function(t){return null==t?null:((t=gt(t)).transactions=t.transactions.map(t=>((t=gt(t)).confirmations=-1,t)),Ul(t))}:function(t){return null==t?null:Ul(t)};break;default:throw new Error("unknown method: "+e)}return function(t,e){return function(r){const n={};r.forEach(e=>{const r=t(e.result);n[r]||(n[r]={count:0,result:e.result}),n[r].count++});const i=Object.keys(n);for(let t=0;t<i.length;t++){const r=n[i[t]];if(r.count>=e)return r.result}}}(n,t.quorum)}function Kl(t,e){return Bl(this,void 0,void 0,function*(){const r=t.provider;return null!=r.blockNumber&&r.blockNumber>=e||-1===e?r:ua(()=>new Promise((n,i)=>{setTimeout(function(){return r.blockNumber>=e?n(r):t.cancelled?n(null):n(void 0)},0)}),{oncePoll:r})})}function Wl(t,e,r,n){return Bl(this,void 0,void 0,function*(){let i=t.provider;switch(r){case"getBlockNumber":case"getGasPrice":return i[r]();case"getEtherPrice":if(i.getEtherPrice)return i.getEtherPrice();break;case"getBalance":case"getTransactionCount":case"getCode":return n.blockTag&&P(n.blockTag)&&(i=yield Kl(t,e)),i[r](n.address,n.blockTag||"latest");case"getStorageAt":return n.blockTag&&P(n.blockTag)&&(i=yield Kl(t,e)),i.getStorageAt(n.address,n.position,n.blockTag||"latest");case"getBlock":return n.blockTag&&P(n.blockTag)&&(i=yield Kl(t,e)),i[n.includeTransactions?"getBlockWithTransactions":"getBlock"](n.blockTag||n.blockHash);case"call":case"estimateGas":return n.blockTag&&P(n.blockTag)&&(i=yield Kl(t,e)),"call"===r&&n.blockTag?i[r](n.transaction,n.blockTag):i[r](n.transaction);case"getTransaction":case"getTransactionReceipt":return i[r](n.transactionHash);case"getLogs":{let r=n.filter;return(r.fromBlock&&P(r.fromBlock)||r.toBlock&&P(r.toBlock))&&(i=yield Kl(t,e)),i.getLogs(r)}}return Rl.throwError("unknown method error",w.errors.UNKNOWN_ERROR,{method:r,params:n})})}class Vl extends Ka{constructor(t,e){0===t.length&&Rl.throwArgumentError("missing providers","providers",t);const r=t.map((t,e)=>{if(En.isProvider(t)){const e=ya(t)?2e3:750,r=1;return Object.freeze({provider:t,weight:1,stallTimeout:e,priority:r})}const r=gt(t);null==r.priority&&(r.priority=1),null==r.stallTimeout&&(r.stallTimeout=ya(t)?2e3:750),null==r.weight&&(r.weight=1);const n=r.weight;return(n%1||n>512||n<1)&&Rl.throwArgumentError("invalid weight; must be integer in [1, 512]",`providers[${e}].weight`,n),Object.freeze(r)}),n=r.reduce((t,e)=>t+e.weight,0);null==e?e=n/2:e>n&&Rl.throwArgumentError("quorum will always fail; larger than total weight","quorum",e);let i=Ol(r.map(t=>t.provider.network));null==i&&(i=new Promise((t,e)=>{setTimeout(()=>{this.detectNetwork().then(t,e)},0)})),super(i),dt(this,"providerConfigs",Object.freeze(r)),dt(this,"quorum",e),this._highestBlockNumber=-1}detectNetwork(){return Bl(this,void 0,void 0,function*(){return Ol(yield Promise.all(this.providerConfigs.map(t=>t.provider.getNetwork())))})}perform(t,e){return Bl(this,void 0,void 0,function*(){if("sendTransaction"===t){const t=yield Promise.all(this.providerConfigs.map(t=>t.provider.sendTransaction(e.signedTransaction).then(t=>t.hash,t=>t)));for(let e=0;e<t.length;e++){const r=t[e];if("string"==typeof r)return r}throw t[0]}-1===this._highestBlockNumber&&"getBlockNumber"!==t&&(yield this.getBlockNumber());const r=jl(this,t,e),n=ms(this.providerConfigs.map(gt));n.sort((t,e)=>t.priority-e.priority);const i=this._highestBlockNumber;let o=0,s=!0;for(;;){const a=Fl();let l=n.filter(t=>t.runner&&a-t.start<t.stallTimeout).reduce((t,e)=>t+e.weight,0);for(;l<this.quorum&&o<n.length;){const r=n[o++],s=Ll++;r.start=Fl(),r.staller=ql(r.stallTimeout),r.staller.wait(()=>{r.staller=null}),r.runner=Wl(r,i,t,e).then(n=>{r.done=!0,r.result=n,this.listenerCount("debug")&&this.emit("debug",{action:"request",rid:s,backend:Hl(r,Fl()),request:{method:t,params:bt(e)},provider:this})},n=>{r.done=!0,r.error=n,this.listenerCount("debug")&&this.emit("debug",{action:"request",rid:s,backend:Hl(r,Fl()),request:{method:t,params:bt(e)},provider:this})}),this.listenerCount("debug")&&this.emit("debug",{action:"request",rid:s,backend:Hl(r,null),request:{method:t,params:bt(e)},provider:this}),l+=r.weight}const c=[];n.forEach(t=>{!t.done&&t.runner&&(c.push(t.runner),t.staller&&c.push(t.staller.getPromise()))}),c.length&&(yield Promise.race(c));const u=n.filter(t=>t.done&&null==t.error);if(u.length>=this.quorum){const t=r(u);if(void 0!==t)return n.forEach(t=>{t.staller&&t.staller.cancel(),t.cancelled=!0}),t;s||(yield ql(100).getPromise()),s=!1}const h=n.reduce((t,e)=>{if(!e.done||null==e.error)return t;const r=e.error.code;return zl.indexOf(r)>=0&&(t[r]||(t[r]={error:e.error,weight:0}),t[r].weight+=e.weight),t},{});if(Object.keys(h).forEach(t=>{const e=h[t];if(e.weight<this.quorum)return;n.forEach(t=>{t.staller&&t.staller.cancel(),t.cancelled=!0});const r=e.error,i={};Gl.forEach(t=>{null!=r[t]&&(i[t]=r[t])}),Rl.throwError(r.reason||r.message,t,i)}),0===n.filter(t=>!t.done).length)break}return n.forEach(t=>{t.staller&&t.staller.cancel(),t.cancelled=!0}),Rl.throwError("failed to meet quorum",w.errors.SERVER_ERROR,{method:t,params:e,results:n.map(t=>Hl(t)),provider:this})})}}const $l=new w(ma),Jl="84842078b09946638c03157f83405213";class Ql extends cl{constructor(t,e){const r=new Yl(t,e),n=r.connection;n.password&&$l.throwError("INFURA WebSocket project secrets unsupported",w.errors.UNSUPPORTED_OPERATION,{operation:"InfuraProvider.getWebSocketProvider()"});super(n.url.replace(/^http/i,"ws").replace("/v3/","/ws/v3/"),t),dt(this,"apiKey",r.projectId),dt(this,"projectId",r.projectId),dt(this,"projectSecret",r.projectSecret)}isCommunityResource(){return this.projectId===Jl}}class Yl extends fl{static getWebSocketProvider(t,e){return new Ql(t,e)}static getApiKey(t){const e={apiKey:Jl,projectId:Jl,projectSecret:null};return null==t||("string"==typeof t?e.projectId=t:null!=t.projectSecret?($l.assertArgument("string"==typeof t.projectId,"projectSecret requires a projectId","projectId",t.projectId),$l.assertArgument("string"==typeof t.projectSecret,"invalid projectSecret","projectSecret","[REDACTED]"),e.projectId=t.projectId,e.projectSecret=t.projectSecret):t.projectId&&(e.projectId=t.projectId),e.apiKey=e.projectId),e}static getUrl(t,e){let r=null;switch(t?t.name:"unknown"){case"homestead":r="mainnet.infura.io";break;case"goerli":r="goerli.infura.io";break;case"sepolia":r="sepolia.infura.io";break;case"matic":r="polygon-mainnet.infura.io";break;case"maticmum":r="polygon-mumbai.infura.io";break;case"optimism":r="optimism-mainnet.infura.io";break;case"optimism-goerli":r="optimism-goerli.infura.io";break;case"optimism-sepolia":r="optimism-sepolia.infura.io";break;case"arbitrum":r="arbitrum-mainnet.infura.io";break;case"arbitrum-goerli":r="arbitrum-goerli.infura.io";break;case"arbitrum-sepolia":r="arbitrum-sepolia.infura.io";break;default:$l.throwError("unsupported network",w.errors.INVALID_ARGUMENT,{argument:"network",value:t})}const n={allowGzip:!0,url:"https://"+r+"/v3/"+e.projectId,throttleCallback:(t,r)=>(e.projectId===Jl&&Ea(),Promise.resolve(!0))};return null!=e.projectSecret&&(n.user="",n.password=e.projectSecret),n}isCommunityResource(){return this.projectId===Jl}}const Xl=new w(ma);class Zl extends fl{static getApiKey(t){return t&&"string"!=typeof t&&Xl.throwArgumentError("invalid apiKey","apiKey",t),t||"ETHERS_JS_SHARED"}static getUrl(t,e){Xl.warn("NodeSmith will be discontinued on 2019-12-20; please migrate to another platform.");let r=null;switch(t.name){case"homestead":r="https://ethereum.api.nodesmith.io/v1/mainnet/jsonrpc";break;case"ropsten":r="https://ethereum.api.nodesmith.io/v1/ropsten/jsonrpc";break;case"rinkeby":r="https://ethereum.api.nodesmith.io/v1/rinkeby/jsonrpc";break;case"goerli":r="https://ethereum.api.nodesmith.io/v1/goerli/jsonrpc";break;case"kovan":r="https://ethereum.api.nodesmith.io/v1/kovan/jsonrpc";break;default:Xl.throwArgumentError("unsupported network","network",arguments[0])}return r+"?apiKey="+e}}const tc=new w(ma),ec="62e1ad51b37b8e00394bda3b";class rc extends fl{static getApiKey(t){const e={applicationId:null,loadBalancer:!0,applicationSecretKey:null};return null==t?e.applicationId=ec:"string"==typeof t?e.applicationId=t:null!=t.applicationSecretKey?(e.applicationId=t.applicationId,e.applicationSecretKey=t.applicationSecretKey):t.applicationId?e.applicationId=t.applicationId:tc.throwArgumentError("unsupported PocketProvider apiKey","apiKey",t),e}static getUrl(t,e){let r=null;switch(t?t.name:"unknown"){case"goerli":r="eth-goerli.gateway.pokt.network";break;case"homestead":r="eth-mainnet.gateway.pokt.network";break;case"kovan":r="poa-kovan.gateway.pokt.network";break;case"matic":r="poly-mainnet.gateway.pokt.network";break;case"maticmum":r="polygon-mumbai-rpc.gateway.pokt.network";break;case"rinkeby":r="eth-rinkeby.gateway.pokt.network";break;case"ropsten":r="eth-ropsten.gateway.pokt.network";break;default:tc.throwError("unsupported network",w.errors.INVALID_ARGUMENT,{argument:"network",value:t})}const n={headers:{},url:`https://${r}/v1/lb/${e.applicationId}`};return null!=e.applicationSecretKey&&(n.user="",n.password=e.applicationSecretKey),n}isCommunityResource(){return this.applicationId===ec}}const nc=new w(ma);class ic extends fl{static getApiKey(t){return t&&"string"!=typeof t&&nc.throwArgumentError("invalid apiKey","apiKey",t),t||"919b412a057b5e9c9b6dce193c5a60242d6efadb"}static getUrl(t,e){let r=null;switch(t.name){case"homestead":r="ethers.quiknode.pro";break;case"goerli":r="ethers.ethereum-goerli.quiknode.pro";break;case"sepolia":r="ethers.ethereum-sepolia.quiknode.pro";break;case"holesky":r="ethers.ethereum-holesky.quiknode.pro";break;case"arbitrum":r="ethers.arbitrum-mainnet.quiknode.pro";break;case"arbitrum-goerli":r="ethers.arbitrum-goerli.quiknode.pro";break;case"arbitrum-sepolia":r="ethers.arbitrum-sepolia.quiknode.pro";break;case"base":r="ethers.base-mainnet.quiknode.pro";break;case"base-goerli":r="ethers.base-goerli.quiknode.pro";break;case"base-spolia":r="ethers.base-sepolia.quiknode.pro";break;case"bnb":r="ethers.bsc.quiknode.pro";break;case"bnbt":r="ethers.bsc-testnet.quiknode.pro";break;case"matic":r="ethers.matic.quiknode.pro";break;case"maticmum":r="ethers.matic-testnet.quiknode.pro";break;case"optimism":r="ethers.optimism.quiknode.pro";break;case"optimism-goerli":r="ethers.optimism-goerli.quiknode.pro";break;case"optimism-sepolia":r="ethers.optimism-sepolia.quiknode.pro";break;case"xdai":r="ethers.xdai.quiknode.pro";break;default:nc.throwArgumentError("unsupported network","network",arguments[0])}return"https://"+r+"/"+e}}const oc=new w(ma);let sc=1;function ac(t,e){const r="Web3LegacyFetcher";return function(t,n){const i={method:t,params:n,id:sc++,jsonrpc:"2.0"};return new Promise((t,n)=>{this.emit("debug",{action:"request",fetcher:r,request:bt(i),provider:this}),e(i,(e,o)=>{if(e)return this.emit("debug",{action:"response",fetcher:r,error:e,request:i,provider:this}),n(e);if(this.emit("debug",{action:"response",fetcher:r,request:i,response:o,provider:this}),o.error){const t=new Error(o.error.message);return t.code=o.error.code,t.data=o.error.data,n(t)}t(o.result)})})}}class lc extends il{constructor(t,e){null==t&&oc.throwArgumentError("missing provider","provider",t);let r=null,n=null,i=null;"function"==typeof t?(r="unknown:",n=t):(r=t.host||t.path||"",!r&&t.isMetaMask&&(r="metamask"),i=t,t.request?(""===r&&(r="eip-1193:"),n=function(t){return function(e,r){null==r&&(r=[]);const n={method:e,params:r};return this.emit("debug",{action:"request",fetcher:"Eip1193Fetcher",request:bt(n),provider:this}),t.request(n).then(t=>(this.emit("debug",{action:"response",fetcher:"Eip1193Fetcher",request:n,response:t,provider:this}),t),t=>{throw this.emit("debug",{action:"response",fetcher:"Eip1193Fetcher",request:n,error:t,provider:this}),t})}}(t)):t.sendAsync?n=ac(0,t.sendAsync.bind(t)):t.send?n=ac(0,t.send.bind(t)):oc.throwArgumentError("unsupported provider","provider",t),r||(r="unknown:")),super(r,e),dt(this,"jsonRpcFetchFunc",n),dt(this,"provider",i)}send(t,e){return this.jsonRpcFetchFunc(t,e)}}const cc=new w(ma);function uc(t,e){if(null==t&&(t="homestead"),"string"==typeof t){const e=t.match(/^(ws|http)s?:/i);if(e)switch(e[1].toLowerCase()){case"http":case"https":return new il(t);case"ws":case"wss":return new cl(t);default:cc.throwArgumentError("unsupported URL scheme","network",t)}}const r=ea(t);return r&&r._defaultProvider||cc.throwError("unsupported getDefaultProvider network",w.errors.NETWORK_ERROR,{operation:"getDefaultProvider",network:t}),r._defaultProvider({FallbackProvider:Vl,AlchemyProvider:vl,AnkrProvider:El,CloudflareProvider:Sl,EtherscanProvider:Ml,InfuraProvider:Yl,JsonRpcProvider:il,NodesmithProvider:Zl,PocketProvider:rc,QuickNodeProvider:ic,Web3Provider:lc,IpcProvider:null},e)}var hc=Object.freeze({__proto__:null,AlchemyProvider:vl,AlchemyWebSocketProvider:gl,AnkrProvider:El,BaseProvider:Ka,CloudflareProvider:Sl,EtherscanProvider:Ml,FallbackProvider:Vl,Formatter:va,InfuraProvider:Yl,InfuraWebSocketProvider:Ql,IpcProvider:null,JsonRpcBatchProvider:class extends il{send(t,e){const r={method:t,params:e,id:this._nextId++,jsonrpc:"2.0"};null==this._pendingBatch&&(this._pendingBatch=[]);const n={request:r,resolve:null,reject:null},i=new Promise((t,e)=>{n.resolve=t,n.reject=e});return this._pendingBatch.push(n),this._pendingBatchAggregator||(this._pendingBatchAggregator=setTimeout(()=>{const t=this._pendingBatch;this._pendingBatch=null,this._pendingBatchAggregator=null;const e=t.map(t=>t.request);return this.emit("debug",{action:"requestBatch",request:bt(e),provider:this}),ca(this.connection,JSON.stringify(e)).then(r=>{this.emit("debug",{action:"response",request:e,response:r,provider:this}),t.forEach((t,e)=>{const n=r[e];if(n.error){const e=new Error(n.error.message);e.code=n.error.code,e.data=n.error.data,t.reject(e)}else t.resolve(n.result)})},r=>{this.emit("debug",{action:"response",error:r,request:e,provider:this}),t.forEach(t=>{t.reject(r)})})},10)),i}},JsonRpcProvider:il,JsonRpcSigner:el,NodesmithProvider:Zl,PocketProvider:rc,Provider:En,QuickNodeProvider:ic,Resolver:Ga,StaticJsonRpcProvider:dl,UrlJsonRpcProvider:fl,Web3Provider:lc,WebSocketProvider:cl,getDefaultProvider:uc,getNetwork:ea,isCommunityResourcable:wa,isCommunityResource:ya,showThrottleMessage:Ea});const dc=new RegExp("^bytes([0-9]+)$"),fc=new RegExp("^(u?int)([0-9]*)$"),pc=new RegExp("^(.*)\\[([0-9]*)\\]$"),mc=new w("solidity/5.8.0");function gc(t,e,r){switch(t){case"address":return r?T(e,32):C(e);case"string":return $e(e);case"bytes":return C(e);case"bool":return e=e?"0x01":"0x00",r?T(e,32):C(e)}let n=t.match(fc);if(n){let i=parseInt(n[2]||"256");return(n[2]&&String(i)!==n[2]||i%8!=0||0===i||i>256)&&mc.throwArgumentError("invalid number type","type",t),r&&(i=256),T(e=W.from(e).toTwos(i),i/8)}if(n=t.match(dc),n){const i=parseInt(n[1]);return(String(i)!==n[1]||0===i||i>32)&&mc.throwArgumentError("invalid bytes type","type",t),C(e).byteLength!==i&&mc.throwArgumentError(`invalid value for ${t}`,"value",e),r?C((e+"0000000000000000000000000000000000000000000000000000000000000000").substring(0,66)):e}if(n=t.match(pc),n&&Array.isArray(e)){const r=n[1];parseInt(n[2]||String(e.length))!=e.length&&mc.throwArgumentError(`invalid array length for ${t}`,"value",e);const i=[];return e.forEach(function(t){i.push(gc(r,t,!0))}),x(i)}return mc.throwArgumentError("invalid type","type",t)}function vc(t,e){t.length!=e.length&&mc.throwArgumentError("wrong number of values; expected ${ types.length }","values",e);const r=[];return t.forEach(function(t,n){r.push(gc(t,e[n]))}),N(x(r))}const wc=new w("units/5.8.0"),yc=["wei","kwei","mwei","gwei","szabo","finney","ether"];function bc(t,e){if("string"==typeof e){const t=yc.indexOf(e);-1!==t&&(e=3*t)}return it(t,null!=e?e:18)}function Ec(t,e){if("string"!=typeof t&&wc.throwArgumentError("value must be a string","value",t),"string"==typeof e){const t=yc.indexOf(e);-1!==t&&(e=3*t)}return ot(t,null!=e?e:18)}function Ac(t){return bc(t,18)}function kc(t){return Ec(t,18)}var Sc=Object.freeze({__proto__:null,AbiCoder:pr,ConstructorFragment:Ut,ErrorFragment:zt,EventFragment:Rt,FormatTypes:Pt,Fragment:Bt,FunctionFragment:Lt,HDNode:as,Indexed:pn,Interface:vn,LogDescription:hn,Logger:w,ParamType:Nt,RLP:ue,SigningKey:Zi,get SupportedAlgorithm(){return Uo},TransactionDescription:dn,get TransactionTypes(){return no},get UnicodeNormalizationForm(){return He},Utf8ErrorFuncs:We,get Utf8ErrorReason(){return je},_TypedDataEncoder:cn,_fetchData:la,_toEscapedUtf8String:function(t,e){return'"'+Ve(t,e).map(t=>{if(t<256){switch(t){case 8:return"\\b";case 9:return"\\t";case 10:return"\\n";case 13:return"\\r";case 34:return'\\"';case 92:return"\\\\"}if(t>=32&&t<127)return String.fromCharCode(t)}return t<=65535?Je(t):Je(55296+((t-=65536)>>10&1023))+Je(56320+(1023&t))}).join("")+'"'},accessListify:fo,arrayify:C,base58:Do,base64:br,checkProperties:mt,checkResultErrors:Vt,commify:function(t){const e=String(t).split(".");(e.length>2||!e[0].match(/^-?[0-9]*$/)||e[1]&&!e[1].match(/^[0-9]*$/)||"."===t||"-."===t)&&wc.throwArgumentError("invalid value","value",t);let r=e[0],n="";for("-"===r.substring(0,1)&&(n="-",r=r.substring(1));"0"===r.substring(0,1);)r=r.substring(1);""===r&&(r="0");let i="";for(2===e.length&&(i="."+(e[1]||"0"));i.length>2&&"0"===i[i.length-1];)i=i.substring(0,i.length-1);const o=[];for(;r.length;){if(r.length<=3){o.unshift(r);break}{const t=r.length-3;o.unshift(r.substring(t)),r=r.substring(0,t)}}return n+o.join(",")+i},computeAddress:lo,computeHmac:Go,computePublicKey:eo,concat:x,deepCopy:bt,defaultAbiCoder:mr,defaultPath:ss,defineReadOnly:dt,dnsEncode:Kr,entropyToMnemonic:us,fetchJson:ca,formatBytes32String:function(t){const e=$e(t);if(e.length>31)throw new Error("bytes32 string must be less than 32 bytes");return N(x([e,Le]).slice(0,32))},formatEther:Ac,formatUnits:bc,getAccountPath:function(t){return("number"!=typeof t||t<0||t>=Zo||t%1)&&Qo.throwArgumentError("invalid account index","index",t),`m/44'/60'/${t}'/0/0`},getAddress:ve,getContractAddress:we,getCreate2Address:function(t,e,r){return 32!==M(e)&&he.throwArgumentError("salt must be 32 bytes","salt",e),32!==M(r)&&he.throwArgumentError("initCodeHash must be 32 bytes","initCodeHash",r),ve(B(ee(x(["0xff",ve(t),e,r])),12))},getIcapAddress:function(t){let e=(r=ve(t).substring(2),new z(r,16).toString(36)).toUpperCase();for(var r;e.length<30;)e="0"+e;return"XE"+ge("XE00"+e)+e},getJsonWalletAddress:function(t){if(Ps(t))try{return ve(JSON.parse(t).ethaddr)}catch(t){return null}if(Is(t))try{return ve(JSON.parse(t).address)}catch(t){return null}return null},getStatic:ft,hashMessage:Wr,hexConcat:R,hexDataLength:M,hexDataSlice:B,hexStripZeros:O,hexValue:F,hexZeroPad:D,hexlify:N,id:gr,isAddress:function(t){try{return ve(t),!0}catch(t){}return!1},isBytes:S,isBytesLike:A,isHexString:P,isValidMnemonic:function(t,e){try{return cs(t,e),!0}catch(t){}return!1},isValidName:function(t){try{return 0!==Hr(t).length}catch(t){}return!1},joinSignature:L,keccak256:ee,mnemonicToEntropy:cs,mnemonicToSeed:ls,namehash:jr,nameprep:function(t){if(t.match(/^[a-z0-9-]*$/i)&&t.length<=59)return t.toLowerCase();let e=Xe(t);var r;r=e.map(t=>{if(nr.indexOf(t)>=0)return[];if(t>=65024&&t<=65039)return[];let e=function(t){let e=er(t,ir);if(e)return[t+e.s];let r=or[t];if(r)return r;let n=sr[t];return n?[t+n[0]]:ar[t]||null}(t);return e||[t]}),e=r.reduce((t,e)=>(e.forEach(e=>{t.push(e)}),t),[]),e=Xe(Qe(e),He.NFKC),e.forEach(t=>{if(er(t,lr))throw new Error("STRINGPREP_CONTAINS_PROHIBITED")}),e.forEach(t=>{if(er(t,rr))throw new Error("STRINGPREP_CONTAINS_UNASSIGNED")});let n=Qe(e);if("-"===n.substring(0,1)||"--"===n.substring(2,4)||"-"===n.substring(n.length-1))throw new Error("invalid hyphen");return n},parseBytes32String:function(t){const e=C(t);if(32!==e.length)throw new Error("invalid bytes32 - not 32 bytes long");if(0!==e[31])throw new Error("invalid bytes32 string - no null terminator");let r=31;for(;0===e[r-1];)r--;return Ye(e.slice(0,r))},parseEther:kc,parseTransaction:yo,parseUnits:Ec,poll:ua,randomBytes:ps,recoverAddress:co,recoverPublicKey:to,resolveProperties:pt,ripemd160:qo,serializeTransaction:vo,sha256:zo,sha512:function(t){return"0x"+fi.sha512().update(C(t)).digest("hex")},shallowCopy:gt,shuffled:ms,solidityKeccak256:function(t,e){return ee(vc(t,e))},solidityPack:vc,soliditySha256:function(t,e){return zo(vc(t,e))},splitSignature:U,stripZeros:_,toUtf8Bytes:$e,toUtf8CodePoints:Xe,toUtf8String:Ye,verifyMessage:function(t,e){return co(Wr(t),e)},verifyTypedData:function(t,e,r,n){return co(cn.hash(t,e,r),n)},zeroPad:T});const Cc="ethers/5.8.0",xc=new w(Cc);var _c=Object.freeze({__proto__:null,BaseContract:Ro,BigNumber:W,Contract:Fo,ContractFactory:class{constructor(t,e,r){let n=null;n="string"==typeof e?e:S(e)?N(e):e&&"string"==typeof e.object?e.object:"!","0x"!==n.substring(0,2)&&(n="0x"+n),(!P(n)||n.length%2)&&Eo.throwArgumentError("invalid bytecode","bytecode",e),r&&!xn.isSigner(r)&&Eo.throwArgumentError("invalid signer","signer",r),dt(this,"bytecode",n),dt(this,"interface",ft(new.target,"getInterface")(t)),dt(this,"signer",r||null)}getDeployTransaction(...t){let e={};if(t.length===this.interface.deploy.inputs.length+1&&"object"==typeof t[t.length-1]){e=gt(t.pop());for(const t in e)if(!Ao[t])throw new Error("unknown transaction override "+t)}if(["data","from","to"].forEach(t=>{null!=e[t]&&Eo.throwError("cannot override "+t,w.errors.UNSUPPORTED_OPERATION,{operation:t})}),e.value){W.from(e.value).isZero()||this.interface.deploy.payable||Eo.throwError("non-payable constructor cannot override value",w.errors.UNSUPPORTED_OPERATION,{operation:"overrides.value",value:e.value})}return Eo.checkArgumentCount(t.length,this.interface.deploy.inputs.length," in Contract constructor"),e.data=N(x([this.bytecode,this.interface.encodeDeploy(t)])),e}deploy(...t){return bo(this,void 0,void 0,function*(){let e={};t.length===this.interface.deploy.inputs.length+1&&(e=t.pop()),Eo.checkArgumentCount(t.length,this.interface.deploy.inputs.length," in Contract constructor");const r=yield So(this.signer,t,this.interface.deploy.inputs);r.push(e);const n=this.getDeployTransaction(...r),i=yield this.signer.sendTransaction(n),o=ft(this.constructor,"getContractAddress")(i),s=ft(this.constructor,"getContract")(o,this.interface,this.signer);return xo(s,i),dt(s,"deployTransaction",i),s})}attach(t){return this.constructor.getContract(t,this.interface,this.signer)}connect(t){return new this.constructor(this.interface,this.bytecode,t)}static fromSolidity(t,e){null==t&&Eo.throwError("missing compiler output",w.errors.MISSING_ARGUMENT,{argument:"compilerOutput"}),"string"==typeof t&&(t=JSON.parse(t));const r=t.abi;let n=null;return t.bytecode?n=t.bytecode:t.evm&&t.evm.bytecode&&(n=t.evm.bytecode),new this(r,n,e)}static getInterface(t){return Fo.getInterface(t)}static getContractAddress(t){return we(t)}static getContract(t,e,r){return new Fo(t,e,r)}},FixedNumber:at,Signer:xn,VoidSigner:_n,Wallet:Vs,Wordlist:Ko,constants:qe,get errors(){return g},getDefaultProvider:uc,logger:xc,providers:hc,utils:Sc,version:Cc,wordlists:Jo});try{const t=window;null==t._ethers&&(t._ethers=_c)}catch(t){}const Tc=["https://w3s.link/ipfs/","https://cloudflare-ipfs.com/ipfs/","https://ipfs.io/ipfs/","https://gateway.pinata.cloud/ipfs/","https://dweb.link/ipfs/"];function Pc(){const t=function(){try{const t=localStorage.getItem("customIpfsGatewayBaseUrl");if(t&&"string"==typeof t&&t.trim()){const e=t.trim();return e.endsWith("/ipfs/")?e:e.endsWith("/")?e+"ipfs/":e+"/ipfs/"}}catch(t){console.warn("[IpfsService] Failed to read custom gateway from localStorage:",t)}return null}();return t?[t,...Tc]:Tc}function Ic(t){return!(!t||"string"!=typeof t)&&t.toLowerCase().startsWith("ipfs://")}function Nc(t){if(!Ic(t))return t;const e=t.substring(7);return e.startsWith("/")?e.substring(1):e}function Mc(t,e=0){if(!Ic(t))return t;const r=Pc();if(e<0||e>=r.length)return null;const n=Nc(t);return r[e]+n}function Bc(){return Pc()}var Rc=Object.freeze({__proto__:null,fetchJsonWithIpfsSupport:async function(t,e={}){const{timeout:r=1e4,...n}=e;if(!Ic(t)){const e=new AbortController,i=setTimeout(()=>e.abort(),r);try{const r=await fetch(t,{...n,signal:e.signal});if(!r.ok)throw new Error(`HTTP ${r.status}: ${r.statusText}`);const o=await r.json();return clearTimeout(i),o}catch(t){if(clearTimeout(i),"AbortError"===t.name)throw new Error(`Request timeout after ${r}ms`);throw t}}const i=Pc(),o=Nc(t),s=[];for(let t=0;t<i.length;t++){const e=i[t],a=e+o,l=new AbortController,c=setTimeout(()=>l.abort(),r);try{const r=await fetch(a,{...n,signal:l.signal});if(clearTimeout(c),!r.ok)throw new Error(`HTTP ${r.status}: ${r.statusText}`);const o=await r.json();return t>0&&console.log(`[IpfsService] Resolved IPFS via gateway ${t+1}/${i.length}: ${e}`),o}catch(n){clearTimeout(c);const i="AbortError"===n.name?`Timeout after ${r}ms`:n.message||"Unknown error";s.push(`Gateway ${t+1} (${e}): ${i}`);continue}}throw new Error(`Failed to fetch IPFS content after trying ${i.length} gateways:\n`+s.join("\n"))},getAvailableGateways:Bc,isIpfsUri:Ic,normalizeIpfsPath:Nc,resolveIpfsToHttp:Mc,setCustomGateway:function(t){try{t?localStorage.setItem("customIpfsGatewayBaseUrl",t):localStorage.removeItem("customIpfsGatewayBaseUrl")}catch(t){console.warn("[IpfsService] Failed to save custom gateway to localStorage:",t)}},testImageLoad:function(t,e=5e3){return new Promise(r=>{const n=new Image,i=setTimeout(()=>{n.onload=null,n.onerror=null,r(!1)},e);n.onload=()=>{clearTimeout(i),r(!0)},n.onerror=()=>{clearTimeout(i),r(!1)},n.src=t})}});class Fc extends e.Component{constructor(t){super(t),this.providerMap=t.providerMap,this.walletIcons=t.walletIcons,this.onWalletSelected=t.onWalletSelected,this.state={isVisible:!1}}events(){return{"click .wallet-modal-close":this.hide,"click .wallet-modal-overlay":t=>{t.target===t.currentTarget&&this.hide()},"click .wallet-option":async t=>{const e=t.currentTarget.dataset.wallet;this.onWalletSelected&&await this.onWalletSelected(e),this.hide()}}}show(){this.setState({isVisible:!0})}hide(){this.setState({isVisible:!1})}render(){if(!this.state.isVisible)return'<div class="wallet-modal-container" style="display: none;"></div>';return`\n <div class="wallet-modal-container">\n <div class="wallet-modal-overlay">\n <div class="wallet-modal">\n <div class="wallet-modal-header">\n <h3>Select Your Wallet</h3>\n <button class="wallet-modal-close">&times;</button>\n </div>\n <div class="wallet-options">\n ${Object.keys(this.providerMap).map(t=>`\n <button class="wallet-option" data-wallet="${t}">\n <img src="${this.walletIcons[t]}" alt="${t}">\n <span>${t.charAt(0).toUpperCase()+t.slice(1)}</span>\n </button>\n `).join("")}\n </div>\n </div>\n </div>\n </div>\n `}}class Oc extends e.Component{constructor(t){super(),this.walletService=t.walletService,this.walletModal=null,this.state={walletConnected:!1,address:null,balance:"0.00",loading:!0,menuOpen:!1,hasExecTokens:!1,isVaultBenefactor:!1}}onMount(){console.log("[FloatingWalletButton] onMount called"),this.initialize(),this.setupDOMEventListeners()}async initialize(){await this.checkWalletConnection(),this.setupEventListeners()}async checkWalletConnection(){console.log("[FloatingWalletButton] checkWalletConnection called");try{this.walletService.isInitialized||await this.walletService.initialize();let t=this.walletService.isConnected(),e=this.walletService.getAddress();if(!t&&void 0!==window.ethereum)try{const r=localStorage.getItem("ms2fun_lastWallet");if(r){const n=await window.ethereum.request({method:"eth_accounts"});if(n&&n.length>0)try{await this.walletService.selectWallet(r),await this.walletService.connect(),t=this.walletService.isConnected(),e=this.walletService.getAddress(),t&&console.log("[FloatingWalletButton] Auto-reconnected to",r)}catch(t){console.log("[FloatingWalletButton] Auto-reconnect not possible")}}}catch(t){console.log("[FloatingWalletButton] Could not check existing accounts:",t)}t&&e?await this.loadWalletInfo(e):this.setState({loading:!1,walletConnected:!1})}catch(t){console.error("[FloatingWalletButton] Error checking wallet connection:",t),this.setState({loading:!1,walletConnected:!1})}}async loadWalletInfo(t){try{let e=this.walletService.ethersProvider;e||void 0===window.ethereum||(e=new lc(window.ethereum));let r="0.00";if(e&&t){const n=await e.getBalance(t);r=parseFloat(Ac(n)).toFixed(4)}const n=!1,i=!1;this.setState({walletConnected:!0,address:t,balance:r,loading:!1,hasExecTokens:n,isVaultBenefactor:i})}catch(e){console.error("[FloatingWalletButton] Failed to load wallet info:",e),this.setState({walletConnected:!0,address:t,loading:!1})}}async checkExecTokens(t){return!1}async checkVaultBenefactor(t){return!1}setupEventListeners(){const t=e.eventBus.on("wallet:connected",async t=>{await this.loadWalletInfo(t.address)}),r=e.eventBus.on("wallet:disconnected",()=>{this.setState({walletConnected:!1,address:null,balance:"0.00",menuOpen:!1,hasExecTokens:!1,isVaultBenefactor:!1})}),n=e.eventBus.on("wallet:changed",async t=>{await this.loadWalletInfo(t.address)});this.registerCleanup(()=>{t(),r(),n()})}setupClickOutsideHandler(){const t=t=>{this.element&&!this.element.contains(t.target)&&this.state.menuOpen&&this.setState({menuOpen:!1})};document.addEventListener("click",t),this.registerCleanup(()=>{document.removeEventListener("click",t)})}async handleButtonClick(t){t.preventDefault(),t.stopPropagation(),this.state.walletConnected?this.setState({menuOpen:!this.state.menuOpen}):await this.showWalletModal()}async showWalletModal(){const t={rabby:()=>window.ethereum?.isRabby?window.ethereum:null,rainbow:()=>window.ethereum?.isRainbow?window.ethereum:null,phantom:()=>window.phantom?.ethereum||null,metamask:()=>window.ethereum||null},e={rabby:"/public/wallets/rabby.webp",rainbow:"/public/wallets/rainbow.webp",phantom:"/public/wallets/phantom.webp",metamask:"/public/wallets/MetaMask.webp"};this.walletModal||(this.walletModal=new Fc({providerMap:t,walletIcons:e,onWalletSelected:async t=>{await this.handleWalletSelection(t)}}),this.modalRoot||(this.modalRoot=document.createElement("div"),document.body.appendChild(this.modalRoot)),this.walletModal.mount(this.modalRoot)),this.walletModal.show()}async handleWalletSelection(t){try{await this.walletService.selectWallet(t),localStorage.setItem("ms2fun_lastWallet",t),await this.walletService.connect()}catch(t){console.error("[FloatingWalletButton] Error connecting wallet:",t)}}handleMenuItemClick(t){this.setState({menuOpen:!1}),window.router?window.router.navigate(t):window.location.href=t}async handleDisconnect(t){t.preventDefault(),t.stopPropagation();try{await this.walletService.disconnect(),this.setState({menuOpen:!1})}catch(t){console.error("[FloatingWalletButton] Failed to disconnect:",t)}}static get styles(){return"\n /* FloatingWalletButton - Bottom-right floating wallet connection button with power user dropdown */\n\n .floating-wallet-button {\n position: fixed;\n bottom: 2rem;\n right: 2rem;\n z-index: 9999; /* Above all content */\n }\n\n .floating-wallet-button .wallet-btn {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.75rem 1.25rem;\n background: linear-gradient(135deg, rgba(139, 69, 19, 0.9), rgba(101, 67, 33, 0.9));\n border: 2px solid rgba(218, 165, 32, 0.6);\n border-radius: 50px;\n color: #fff;\n font-family: 'Cinzel', serif;\n font-size: 0.9rem;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.3s ease;\n box-shadow: 0 4px 15px rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(10px);\n }\n\n .floating-wallet-button .wallet-btn:hover {\n transform: translateY(-2px);\n box-shadow: 0 6px 20px rgba(218, 165, 32, 0.4);\n border-color: rgba(218, 165, 32, 0.8);\n background: linear-gradient(135deg, rgba(160, 82, 45, 0.95), rgba(120, 80, 50, 0.95));\n }\n\n .floating-wallet-button .wallet-btn:active {\n transform: translateY(0);\n }\n\n /* Wallet icon */\n .floating-wallet-button .wallet-icon {\n font-size: 1.2rem;\n line-height: 1;\n }\n\n /* Wallet text/address */\n .floating-wallet-button .wallet-text,\n .floating-wallet-button .wallet-address {\n font-size: 0.875rem;\n white-space: nowrap;\n }\n\n /* Loading state */\n .floating-wallet-button.loading {\n pointer-events: none;\n }\n\n .floating-wallet-button .wallet-spinner {\n width: 40px;\n height: 40px;\n border: 3px solid rgba(218, 165, 32, 0.3);\n border-top-color: rgba(218, 165, 32, 0.9);\n border-radius: 50%;\n animation: wallet-spin 0.8s linear infinite;\n }\n\n @keyframes wallet-spin {\n to { transform: rotate(360deg); }\n }\n\n /* Dropdown menu */\n .wallet-dropdown-menu {\n position: absolute;\n bottom: calc(100% + 0.5rem);\n right: 0;\n min-width: 240px;\n background: linear-gradient(135deg, rgba(139, 69, 19, 0.98), rgba(101, 67, 33, 0.98));\n border: 2px solid rgba(218, 165, 32, 0.6);\n border-radius: 12px;\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.6);\n backdrop-filter: blur(15px);\n overflow: hidden;\n animation: dropdown-slide-up 0.2s ease-out;\n }\n\n @keyframes dropdown-slide-up {\n from {\n opacity: 0;\n transform: translateY(10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n\n /* Dropdown header */\n .wallet-dropdown-menu .dropdown-header {\n padding: 1rem;\n background: rgba(0, 0, 0, 0.3);\n border-bottom: 1px solid rgba(218, 165, 32, 0.3);\n }\n\n .wallet-dropdown-menu .dropdown-address {\n font-family: 'Cinzel', serif;\n font-size: 0.875rem;\n font-weight: 600;\n color: rgba(218, 165, 32, 0.95);\n margin-bottom: 0.25rem;\n }\n\n .wallet-dropdown-menu .dropdown-balance {\n font-family: 'Lato', sans-serif;\n font-size: 0.75rem;\n color: rgba(255, 255, 255, 0.7);\n }\n\n /* Dropdown divider */\n .wallet-dropdown-menu .dropdown-divider {\n height: 1px;\n background: linear-gradient(90deg,\n transparent,\n rgba(218, 165, 32, 0.3) 50%,\n transparent\n );\n margin: 0;\n }\n\n /* Dropdown items */\n .wallet-dropdown-menu .dropdown-items {\n padding: 0.5rem;\n }\n\n .wallet-dropdown-menu .dropdown-item {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n width: 100%;\n padding: 0.75rem 1rem;\n background: transparent;\n border: none;\n border-radius: 8px;\n color: rgba(255, 255, 255, 0.9);\n font-family: 'Lato', sans-serif;\n font-size: 0.875rem;\n text-align: left;\n cursor: pointer;\n transition: all 0.2s ease;\n }\n\n .wallet-dropdown-menu .dropdown-item:hover {\n background: rgba(218, 165, 32, 0.15);\n color: #fff;\n }\n\n .wallet-dropdown-menu .dropdown-item:active {\n background: rgba(218, 165, 32, 0.25);\n }\n\n .wallet-dropdown-menu .dropdown-item .item-icon {\n font-size: 1.125rem;\n line-height: 1;\n opacity: 0.9;\n }\n\n .wallet-dropdown-menu .dropdown-item .item-label {\n flex: 1;\n }\n\n /* Disconnect button special styling */\n .wallet-dropdown-menu .dropdown-item.disconnect {\n color: rgba(255, 99, 71, 0.9);\n }\n\n .wallet-dropdown-menu .dropdown-item.disconnect:hover {\n background: rgba(255, 99, 71, 0.15);\n color: rgba(255, 99, 71, 1);\n }\n\n /* Responsive adjustments */\n @media (max-width: 768px) {\n .floating-wallet-button {\n bottom: 1rem;\n right: 1rem;\n }\n\n .floating-wallet-button .wallet-btn {\n padding: 0.625rem 1rem;\n font-size: 0.8rem;\n }\n\n .wallet-dropdown-menu {\n min-width: 200px;\n right: 0;\n }\n\n .wallet-dropdown-menu .dropdown-item {\n padding: 0.625rem 0.875rem;\n font-size: 0.8rem;\n }\n }\n\n /* Small screens - even more compact */\n @media (max-width: 480px) {\n .floating-wallet-button {\n bottom: 0.75rem;\n right: 0.75rem;\n }\n\n .floating-wallet-button .wallet-btn {\n padding: 0.5rem 0.875rem;\n font-size: 0.75rem;\n }\n\n .floating-wallet-button .wallet-icon {\n font-size: 1rem;\n }\n\n .wallet-dropdown-menu {\n min-width: 180px;\n }\n }\n\n /* Ensure menu appears above button when open */\n .floating-wallet-button.menu-open .wallet-btn {\n border-color: rgba(218, 165, 32, 0.9);\n background: linear-gradient(135deg, rgba(160, 82, 45, 0.95), rgba(120, 80, 50, 0.95));\n }\n "}render(){if(console.log("[FloatingWalletButton] render called, loading:",this.state.loading,"walletConnected:",this.state.walletConnected),this.state.loading)return'\n <div class="floating-wallet-button loading">\n <div class="wallet-spinner"></div>\n </div>\n ';const{walletConnected:t,address:e,balance:r,menuOpen:n,hasExecTokens:i,isVaultBenefactor:o}=this.state;if(!t)return'\n <div class="floating-wallet-button disconnected" data-ref="wallet-button">\n <button class="wallet-btn" data-ref="connect-btn">\n <span class="wallet-icon">🦊</span>\n <span class="wallet-text">Connect</span>\n </button>\n </div>\n ';const s=`${e.slice(0,6)}...${e.slice(-4)}`;return`\n <div class="floating-wallet-button connected ${n?"menu-open":""}" data-ref="wallet-button">\n <button class="wallet-btn" data-ref="wallet-btn" title="${this.escapeHtml(e)}\nBalance: ${r} ETH">\n <span class="wallet-icon">🦊</span>\n <span class="wallet-address">${this.escapeHtml(s)}</span>\n </button>\n\n ${n?this.renderDropdownMenu(e,r,i,o):""}\n </div>\n `}renderDropdownMenu(t,e,r,n){const i=`${t.slice(0,6)}...${t.slice(-4)}`;return`\n <div class="wallet-dropdown-menu" data-ref="dropdown-menu">\n <div class="dropdown-header">\n <div class="dropdown-address">${this.escapeHtml(i)}</div>\n <div class="dropdown-balance">${e} ETH</div>\n </div>\n\n <div class="dropdown-divider"></div>\n\n <div class="dropdown-items">\n <button class="dropdown-item" data-route="/portfolio" data-ref="menu-item">\n <span class="item-icon">📊</span>\n <span class="item-label">Portfolio</span>\n </button>\n\n ${r?'\n <button class="dropdown-item" data-route="/governance" data-ref="menu-item">\n <span class="item-icon">🗳️</span>\n <span class="item-label">Governance</span>\n </button>\n ':""}\n\n <button class="dropdown-item" data-route="/staking" data-ref="menu-item">\n <span class="item-icon">🎯</span>\n <span class="item-label">Staking</span>\n </button>\n\n ${n?'\n <button class="dropdown-item" data-route="/portfolio?filter=vaults" data-ref="menu-item">\n <span class="item-icon">💰</span>\n <span class="item-label">Vault Positions</span>\n </button>\n ':""}\n </div>\n\n <div class="dropdown-divider"></div>\n\n <div class="dropdown-items">\n <button class="dropdown-item" data-action="settings" data-ref="menu-item">\n <span class="item-icon">⚙️</span>\n <span class="item-label">Settings</span>\n </button>\n\n <button class="dropdown-item disconnect" data-ref="disconnect-btn">\n <span class="item-icon">🔌</span>\n <span class="item-label">Disconnect</span>\n </button>\n </div>\n </div>\n `}setupDOMEventListeners(){if(console.log("[FloatingWalletButton] setupDOMEventListeners called, element:",this.element),!this.element)return;const t=this.element.querySelector(".wallet-btn");console.log("[FloatingWalletButton] mainBtn found:",t),t&&t.addEventListener("click",t=>this.handleButtonClick(t));Array.from(this.element.querySelectorAll(".dropdown-item[data-route], .dropdown-item[data-action]")).forEach(t=>{t.addEventListener("click",e=>{e.preventDefault(),e.stopPropagation();const r=t.getAttribute("data-route"),n=t.getAttribute("data-action");r?this.handleMenuItemClick(r):"settings"===n&&this.setState({menuOpen:!1})})});const e=this.element.querySelector(".dropdown-item.disconnect");e&&e.addEventListener("click",t=>this.handleDisconnect(t))}onStateUpdate(t,e){t.menuOpen!==e.menuOpen&&this.setTimeout(()=>{this.setupDOMEventListeners()},0)}onUnmount(){this.walletModal&&(this.walletModal.hide(),this.walletModal=null)}escapeHtml(t){if(!t)return"";const e=document.createElement("div");return e.textContent=t,e.innerHTML}}class Dc extends Fc{events(){return{..."function"==typeof super.events?super.events():{},"click .wallet-option":async t=>{const e=t?.target?.closest?.(".wallet-option"),r=e?.dataset?.wallet;r&&(this.onWalletSelected&&await this.onWalletSelected(r),this.hide())}}}}class Uc extends e.Component{constructor(t={}){super(),this.props=t,this.setState({gatewayIndex:0,isLoading:!0,hasError:!1,currentSrc:null}),this.handleImageLoad=this.handleImageLoad.bind(this),this.handleImageError=this.handleImageError.bind(this)}getCurrentUrl(){const{src:t}=this.props;return t?Ic(t)?Mc(t,this.state.gatewayIndex):t:null}handleImageLoad(t){this.setState({isLoading:!1,hasError:!1}),this.props.onLoad&&this.props.onLoad(t)}handleImageError(t){const e=Bc(),{src:r}=this.props;if(!Ic(r)||this.state.gatewayIndex>=e.length-1)return this.setState({isLoading:!1,hasError:!0}),console.error("[IpfsImage] Failed to load image:",r,{triedGateways:this.state.gatewayIndex+1,totalGateways:e.length}),void(this.props.onError&&this.props.onError(t));const n=this.state.gatewayIndex+1;this.setState({gatewayIndex:n});const i=this.element?.querySelector("img");if(i){const t=Mc(r,n);t&&(i.src=t)}}render(){const{src:t,alt:e="",className:r="",style:n={},loading:i="lazy",placeholder:o,errorPlaceholder:s}=this.props,{isLoading:a,hasError:l}=this.state;if(!t)return'<div class="ipfs-image-empty"></div>';const c=this.getCurrentUrl();return l?s||`\n <div class="ipfs-image-error ${r}" style="${this.styleToString(n)}">\n <div class="ipfs-image-error-icon">⚠️</div>\n <div class="ipfs-image-error-text">IPFS image unavailable</div>\n </div>\n `:`\n <div class="ipfs-image-container ${r}" style="${this.styleToString(n)}">\n ${a&&o?o:""}\n <img \n src="${this.escapeHtml(c||"")}" \n alt="${this.escapeHtml(e)}" \n loading="${i}"\n class="ipfs-image ${a?"ipfs-image-loading":"ipfs-image-loaded"}"\n style="${a?"opacity: 0;":"opacity: 1; transition: opacity 0.3s;"}"\n />\n </div>\n `}mount(t){super.mount(t);const e=this.element?.querySelector("img");e&&(e.addEventListener("load",this.handleImageLoad),e.addEventListener("error",this.handleImageError),this.registerCleanup(()=>{e.removeEventListener("load",this.handleImageLoad),e.removeEventListener("error",this.handleImageError)}))}styleToString(t){return t&&"object"==typeof t?Object.entries(t).map(([t,e])=>`${t.replace(/([A-Z])/g,"-$1").toLowerCase()}: ${e};`).join(" "):""}}Uc.styles="\n .ipfs-image-container {\n position: relative;\n display: inline-block;\n width: 100%;\n height: 100%;\n }\n \n .ipfs-image {\n display: block;\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n \n .ipfs-image-loading {\n opacity: 0;\n }\n \n .ipfs-image-loaded {\n opacity: 1;\n transition: opacity 0.3s ease-in;\n }\n \n .ipfs-image-error {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n min-height: 100px;\n background-color: #f5f5f5;\n color: #666;\n padding: 1rem;\n text-align: center;\n }\n \n .ipfs-image-error-icon {\n font-size: 2rem;\n margin-bottom: 0.5rem;\n }\n \n .ipfs-image-error-text {\n font-size: 0.875rem;\n }\n \n .ipfs-image-empty {\n display: block;\n width: 100%;\n height: 100%;\n background-color: transparent;\n }\n \n /* Dark mode support */\n html[data-theme='dark'] .ipfs-image-error {\n background-color: #2a2a2a;\n color: #aaa;\n }\n";class Lc extends e.Component{constructor(t){super(t),this.eventBus=t.eventBus,this.state={nftMintingEnabled:t.nftMintingEnabled||!1,message:t.message||"",isValid:void 0===t.isValid||t.isValid,nftBalance:t.nftBalance||0,swapDirection:t.swapDirection||"buy",lastValidationState:!0,isPhase2:null===t.isPhase2?null:t.isPhase2},this.handleMessageInput=this.handleMessageInput.bind(this),this.handleNFTToggle=this.handleNFTToggle.bind(this),this.handleStoreUpdate=this.handleStoreUpdate.bind(this),this.updateTimer=null}onMount(){this.contractDataUnsubscribe=this.eventBus.on("contractData:updated",t=>{this.updateProps({isPhase2:t.liquidityPool&&"0x0000000000000000000000000000000000000000"!==t.liquidityPool})}),this.addEventListeners(),this.updateElements()}onUnmount(){this.contractDataUnsubscribe&&this.contractDataUnsubscribe(),this.removeEventListeners()}updateProps(t){const e={...this.state,...t},r=this.state.isPhase2!==e.isPhase2||this.state.swapDirection!==e.swapDirection||this.state.nftBalance!==e.nftBalance;this.setState(e),r?(this.validateTransaction(),this.update()):this.updateElements()}addEventListeners(){const t=this.element.querySelector("#messageInput"),e=this.element.querySelector("#nftToggle");t&&(this._messageInput=t,t.addEventListener("input",this.handleMessageInput)),e&&(this._nftToggle=e,e.addEventListener("change",this.handleNFTToggle))}removeEventListeners(){this._messageInput&&this._messageInput.removeEventListener("input",this.handleMessageInput),this._nftToggle&&this._nftToggle.removeEventListener("change",this.handleNFTToggle)}validateTransaction(){const t=this.state.message.length<=140,e=!this.state.nftMintingEnabled||this.state.nftBalance<10,r=t&&e;this.state.lastValidationState!==r&&(this.state.lastValidationState=r,this.state.isValid=r,this.eventBus.emit("transactionValidation",{isValid:r,errors:this.getValidationErrors()}))}getValidationErrors(){const t=[];return this.state.message.length>140&&t.push("Message must be 140 characters or less"),this.state.nftMintingEnabled&&this.state.nftBalance>=10&&t.push("Cannot mint more than 10 NFTs"),t}updateElements(){const t=this.element.querySelector("#messageInput"),e=this.element.querySelector("#nftToggle");t&&!t.matches(":focus")&&(t.value=this.state.message),e&&(e.checked=this.state.nftMintingEnabled),this.removeEventListeners(),this.addEventListeners();const r=this.element.querySelector(".character-count");r&&(r.textContent=`${this.state.message.length}/140`,r.className="character-count "+(this.state.message.length>140?"error":""));const n=this.element.querySelector(".validation-status");n&&(n.className="validation-status "+(this.state.isValid?"valid":"invalid"),n.innerHTML=this.getValidationErrors().map(t=>`<p class="error">${t}</p>`).join(""))}handleMessageInput(t){const e=t.target.value||"";this.state={...this.state,message:e},this.updateElements(),this.emitStateUpdate()}handleNFTToggle(t){const e=t.target.checked;this.state={...this.state,nftMintingEnabled:e},this.updateElements(),this.emitStateUpdate()}emitStateUpdate(){const t={message:this.state.message,nftMintingEnabled:this.state.nftMintingEnabled};this.eventBus.emit("transactionOptions:update",t)}checkPhase2Status(){const{isPhase2:t}=this.state;null!==t&&this.state.isPhase2!==t&&this.setState({isPhase2:t})}template(){const{nftMintingEnabled:t,message:e,isValid:r,isPhase2:n,swapDirection:i}=this.state;return null===n||n?"":`\n <div class="transaction-options">\n <div class="option-group ${"sell"===i?"hidden":""}">\n <label class="nft-toggle">\n <input type="checkbox" \n ${t?"checked":""} \n id="nftToggle">\n Mint NFT with transaction\n </label>\n </div>\n \n <div class="option-group">\n <label for="messageInput">Transaction Message</label>\n <textarea id="messageInput" \n maxlength="140" \n placeholder="Enter optional message..."\n >${e}</textarea>\n <span class="character-count ${e.length>140?"error":""}">\n ${e.length}/140\n </span>\n </div>\n\n <div class="validation-status ${r?"valid":"invalid"}">\n ${this.getValidationErrors().map(t=>`<p class="error">${t}</p>`).join("")}\n </div>\n </div>\n `}render(){return this.template()}}class qc extends e.Component{constructor(t){super(t),this.state={messages:[]}}show(t){const{title:e="",message:r="",type:n="info",duration:i=5e3}=t,o=Date.now()+Math.random(),s={id:o,title:e,message:r,type:n};this.setState({messages:[...this.state.messages,s]}),i>0&&setTimeout(()=>this.close(o),i)}close(t){const e=this.state.messages.filter(e=>e.id!==t);this.setState({messages:e})}error(t,e="Error"){this.show({title:e,message:t,type:"error"})}success(t,e="Success"){this.show({title:e,message:t,type:"success"})}warning(t,e="Warning"){this.show({title:e,message:t,type:"warning"})}info(t,e="Info"){this.show({title:e,message:t,type:"info"})}render(){return`\n <div id="message-popup-container">\n ${this.state.messages.map(t=>`\n <div class="message-popup ${t.type}" data-id="${t.id}">\n <div class="message-content">\n ${t.title?`<div class="message-title">${t.title}</div>`:""}\n <div class="message-text">${t.message}</div>\n </div>\n <button class="close-button" data-id="${t.id}">&times;</button>\n </div>\n `).join("")}\n </div>\n `}events(){return{"click .close-button":t=>{const e=parseFloat(t.target.dataset.id);this.close(e)}}}static get styles(){return"\n #message-popup-container {\n position: fixed;\n top: 20px;\n right: 20px;\n z-index: 10000;\n display: flex;\n flex-direction: column;\n gap: 10px;\n }\n\n .message-popup {\n background: #ffffff;\n border-radius: 8px;\n padding: 15px 20px;\n min-width: 300px;\n max-width: 400px;\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n animation: slideIn 0.3s ease;\n border-left: 4px solid #2196F3;\n }\n\n .message-popup.error {\n border-left-color: #f44336;\n }\n\n .message-popup.success {\n border-left-color: #4CAF50;\n }\n\n .message-popup.warning {\n border-left-color: #ff9800;\n }\n\n .message-content {\n flex-grow: 1;\n margin-right: 10px;\n }\n\n .message-title {\n font-weight: bold;\n margin-bottom: 5px;\n }\n\n .message-text {\n font-size: 14px;\n color: #666;\n }\n\n .close-button {\n background: none;\n border: none;\n color: #999;\n cursor: pointer;\n font-size: 20px;\n padding: 0;\n line-height: 1;\n }\n\n .close-button:hover {\n color: #666;\n }\n\n @keyframes slideIn {\n from {\n transform: translateX(100%);\n opacity: 0;\n }\n to {\n transform: translateX(0);\n opacity: 1;\n }\n }\n\n @keyframes fadeOut {\n from {\n transform: translateX(0);\n opacity: 1;\n }\n to {\n transform: translateX(100%);\n opacity: 0;\n }\n }\n "}}const zc={PRICE:"price:updated",STATUS:"price:status"};class Gc extends e.Component{constructor(t){super(t),this.eventBus=t.eventBus,this.state={price:t.price||0,lastUpdated:t.lastUpdated||null,loading:void 0===t.loading||t.loading,error:t.error||null},this.handlePriceUpdate=this.handlePriceUpdate.bind(this),this.handleStatusUpdate=this.handleStatusUpdate.bind(this)}onMount(){this.eventBus&&(this.eventBus.on(zc.PRICE,this.handlePriceUpdate),this.eventBus.on(zc.STATUS,this.handleStatusUpdate))}onUnmount(){this.eventBus&&(this.eventBus.off(zc.PRICE,this.handlePriceUpdate),this.eventBus.off(zc.STATUS,this.handleStatusUpdate))}updateProps(t){this.setState({price:void 0!==t.price?t.price:this.state.price,lastUpdated:void 0!==t.lastUpdated?t.lastUpdated:this.state.lastUpdated,loading:void 0!==t.loading?t.loading:this.state.loading,error:void 0!==t.error?t.error:this.state.error})}setState(t){super.setState(t)}handlePriceUpdate({price:t}){this.setState({price:t||0,loading:!1})}handleStatusUpdate({loading:t,error:e}){this.setState({loading:t,error:e})}template(){const{price:t,lastUpdated:e,loading:r,error:n}=this.state;return r?'\n <div class="price-display loading marble-bg">\n <div class="price-header">\n <h3>Cult Exec </h3>\n <h3>Bonding Curve Presale</h3>\n </div>\n <div class="price-content">\n <div class="loading-indicator">Loading...</div>\n </div>\n </div>':n?`\n <div class="price-display error marble-bg">\n <div class="price-header">\n <h3>Cult Exec </h3>\n <h3>Bonding Curve Presale</h3>\n </div>\n <div class="price-content">\n <div class="error-message">Error: ${n}</div>\n </div>\n </div>`:`\n <div class="price-display marble-bg">\n <div class="price-header">\n <h3>Cult Exec </h3>\n <h3>Bonding Curve Presale</h3>\n </div>\n \n <div class="price-content">\n <div class="price-value">\n <span class="amount">${Number(t).toFixed(8)}</span>\n <span class="currency">ETH / Cult Exec</span>\n </div>\n </div>\n </div>\n `}render(){return this.template()}static get styles(){return"\n .price-display {\n background: #1a1a1a;\n border-radius: 8px;\n padding: 16px;\n margin-bottom: 16px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\n }\n\n .price-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 12px;\n }\n\n .price-header h3 {\n margin: 0;\n color: var(--price-display-header-color, var(--color-text-primary, #333));\n font-size: 16px;\n }\n\n .last-updated {\n color: #666;\n font-size: 12px;\n }\n\n .price-content {\n display: flex;\n justify-content: center;\n align-items: center;\n min-height: 48px;\n }\n\n .price-value {\n font-size: 24px;\n font-weight: bold;\n color: #fff;\n }\n\n .amount {\n margin-right: 8px;\n }\n\n .currency {\n color: var(--price-display-currency-color, var(--color-accent, #764ba2));\n }\n\n .loading-indicator {\n color: #666;\n font-style: italic;\n }\n\n .error-message {\n color: #ff4444;\n font-size: 14px;\n }\n\n /* Loading state animation */\n .price-display.loading .price-content {\n opacity: 0.7;\n }\n\n .price-display.loading .loading-indicator:after {\n content: '';\n animation: loading-dots 1.5s infinite;\n }\n\n @keyframes loading-dots {\n 0% { content: '.'; }\n 33% { content: '..'; }\n 66% { content: '...'; }\n }\n\n /* Error state styles */\n .price-display.error {\n border: 1px solid #ff4444;\n }\n\n /* Mobile responsive styles */\n @media (max-width: 768px) {\n .price-display {\n margin: 8px;\n padding: 12px;\n }\n\n .price-header {\n flex-direction: column;\n align-items: flex-start;\n }\n\n .last-updated {\n margin-top: 4px;\n }\n\n .price-value {\n font-size: 20px;\n }\n }\n "}}class Hc extends e.Component{constructor(t){super(t),console.log("[DEBUG] ApproveModal constructor called with amount:",t.amount,"and address:",t.userAddress),this.blockchainService=t.blockchainService,this.eventBus=t.eventBus,this.amount=t.amount,this.userAddress=t.userAddress,this.messagePopup=new qc("approve-status"),this.handleApprove=this.handleApprove.bind(this),this.handleClose=this.handleClose.bind(this),this.isClosing=!1,this.modalId=Math.random().toString(36).substring(2,9),console.log(`[DEBUG] ApproveModal instance created with ID: ${this.modalId}`)}onMount(){console.log(`[DEBUG-${this.modalId}] ApproveModal mounted to DOM`),super.onMount(),this.setupEventListeners()}setupEventListeners(){const t=this.element.querySelector(".approve-button"),e=this.element.querySelector(".approve-modal-close"),r=this.element.querySelector(".approve-modal-overlay");t?.addEventListener("click",this.handleApprove),e?.addEventListener("click",this.handleClose),r?.addEventListener("click",t=>{t.target===r&&this.handleClose()})}async handleApprove(){console.log(`[DEBUG-${this.modalId}] Approve button clicked`);try{const t=this.element.querySelector(".approve-button");if(!t)return void console.error(`[DEBUG-${this.modalId}] Approve button not found in the modal`);console.log(`[DEBUG-${this.modalId}] Approve button found, disabling and updating text`);const e=this.element.querySelector(".status-message")||document.createElement("div");if(!e.classList.contains("status-message")){e.className="status-message";const t=this.element.querySelector(".approve-modal-content");t?(console.log(`[DEBUG-${this.modalId}] Adding status message to modal content`),t.appendChild(e)):console.error(`[DEBUG-${this.modalId}] Modal content not found`)}if(e.textContent="Waiting for wallet confirmation...",e.className="status-message pending",t.disabled=!0,t.textContent="Approving...",this.userAddress)console.log(`[DEBUG-${this.modalId}] Using provided user address: ${this.userAddress}`);else{if(console.log(`[DEBUG-${this.modalId}] No user address provided, attempting to get from signer`),!this.blockchainService||!this.blockchainService.signer)throw console.error(`[DEBUG-${this.modalId}] No blockchain service or signer available`),new Error("No wallet connected. Please connect your wallet first.");try{this.userAddress=await this.blockchainService.signer.getAddress(),console.log(`[DEBUG-${this.modalId}] Retrieved user address for approval: ${this.userAddress}`)}catch(t){throw console.error(`[DEBUG-${this.modalId}] Failed to get user address for approval:`,t),new Error("Could not get wallet address for approval. Please reconnect your wallet.")}}console.log(`[DEBUG-${this.modalId}] Parsing amount: ${this.amount}`);const r=this.blockchainService.parseExec(this.amount);console.log(`[DEBUG-${this.modalId}] Parsed amount: ${r}`);const n=this.blockchainService.swapRouter?.address||this.blockchainService.swapRouter;console.log(`[DEBUG-${this.modalId}] Router address for approval: ${n}`),console.log(`[DEBUG-${this.modalId}] Approving ${this.amount} EXEC tokens from ${this.userAddress} to ${n}`),e.textContent="Transaction submitted, waiting for confirmation...",console.log(`[DEBUG-${this.modalId}] Calling blockchainService.setApproval`);try{const t=await this.blockchainService.setApproval(n,r);console.log(`[DEBUG-${this.modalId}] Approval transaction result:`,t)}catch(t){throw console.error(`[DEBUG-${this.modalId}] Transaction error:`,t),t}e.textContent="Approval successful!",e.className="status-message success",console.log(`[DEBUG-${this.modalId}] Approval successful, waiting before emitting event`),await new Promise(t=>setTimeout(t,1500)),console.log(`[DEBUG-${this.modalId}] Emitting approve:complete event`),this.eventBus.emit("approve:complete"),console.log(`[DEBUG-${this.modalId}] Calling handleClose after successful approval`),this.handleClose()}catch(t){console.error(`[DEBUG-${this.modalId}] Approval failed:`,t);let e=t.message;if(e.includes("Contract call")){const t=e.split(": ");e=t[t.length-1]}const r=this.element.querySelector(".status-message")||document.createElement("div");if(!r.classList.contains("status-message")){r.className="status-message";const t=this.element.querySelector(".approve-modal-content");t&&t.appendChild(r)}r.textContent=`Error: ${e}`,r.className="status-message error",this.messagePopup.error(`Approval Failed: ${e}`,"Transaction Failed");const n=this.element.querySelector(".approve-button");n&&(n.disabled=!1,n.textContent="Approve")}}handleClose(){if(console.log(`[DEBUG-${this.modalId}] handleClose called`),this.isClosing)console.log(`[DEBUG-${this.modalId}] Already closing, skipping`);else{this.isClosing=!0,console.log(`[DEBUG-${this.modalId}] Closing approval modal`);try{this.element&&this.element.parentNode?(console.log(`[DEBUG-${this.modalId}] Removing modal from DOM`),this.element.parentNode.removeChild(this.element)):console.warn(`[DEBUG-${this.modalId}] Modal element or parent not found during close`),console.log(`[DEBUG-${this.modalId}] Emitting approveModal:closed event`),this.eventBus.emit("approveModal:closed"),console.log(`[DEBUG-${this.modalId}] Calling dispose method`),this.dispose()}catch(t){console.error(`[DEBUG-${this.modalId}] Error closing approval modal:`,t)}}}dispose(){console.log(`[DEBUG-${this.modalId}] Disposing component resources`);const t=this.element?.querySelector(".approve-button"),e=this.element?.querySelector(".approve-modal-close");this.element?.querySelector(".approve-modal-overlay"),t?.removeEventListener("click",this.handleApprove),e?.removeEventListener("click",this.handleClose),this.isClosing=!0,this.blockchainService=null,this.userAddress=null,console.log(`[DEBUG-${this.modalId}] Component disposed`)}show(){console.log(`[DEBUG-${this.modalId}] Show method called`),this.isClosing=!1,this.element.style.display="block",console.log(`[DEBUG-${this.modalId}] Modal set to display:block`)}hide(){console.log(`[DEBUG-${this.modalId}] Hide method called`),this.element.style.display="none"}events(){return console.log(`[DEBUG-${this.modalId}] Setting up event handlers`),{"click .approve-button":t=>{console.log(`[DEBUG-${this.modalId}] Approve button clicked, calling handleApprove`),this.handleApprove()},"click .approve-modal-close":t=>{console.log(`[DEBUG-${this.modalId}] Close button clicked, calling handleClose`),this.handleClose()},"click .approve-modal-overlay":t=>{console.log(`[DEBUG-${this.modalId}] Overlay clicked`,t.target,t.currentTarget),t.target===t.currentTarget&&(console.log(`[DEBUG-${this.modalId}] Overlay direct click detected, calling handleClose`),this.handleClose())}}}render(){const t=this.blockchainService.swapRouter?.address||this.blockchainService.swapRouter;return`\n <div class="approve-modal-overlay">\n <div class="approve-modal">\n <button class="approve-modal-close">&times;</button>\n <div class="approve-modal-content">\n <h2>Approve Router</h2>\n <p>Before selling your $EXEC tokens, you need to approve the router contract to spend them.</p>\n \n <div class="approve-details">\n <div class="approve-info">\n <span class="label">Amount to Approve:</span>\n <span class="value">${parseInt(this.amount).toLocaleString()} $EXEC</span>\n </div>\n <div class="approve-info">\n <span class="label">Router Address:</span>\n <span class="value">${t}</span>\n </div>\n </div>\n\n <button class="approve-button">\n Approve\n </button>\n </div>\n </div>\n </div>\n `}static get styles(){return"\n .approve-modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(0, 0, 0, 0.75);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 1000;\n }\n\n .approve-modal {\n background-color: #111;\n border-radius: 8px;\n padding: 24px;\n position: relative;\n width: 90%;\n max-width: 500px;\n }\n\n .approve-modal-close {\n position: absolute;\n top: 16px;\n right: 16px;\n background: none;\n border: none;\n font-size: 24px;\n cursor: pointer;\n color: #fff;\n }\n\n .approve-modal h2 {\n margin: 0 0 16px 0;\n color: #fff;\n }\n\n .approve-details {\n background-color: #1a1a1a;\n border-radius: 8px;\n padding: 16px;\n margin: 16px 0;\n }\n\n .approve-info {\n display: flex;\n justify-content: space-between;\n margin-bottom: 8px;\n word-break: break-all;\n }\n\n .approve-info:last-child {\n margin-bottom: 0;\n }\n\n .approve-info .label {\n color: #888;\n margin-right: 16px;\n }\n\n .approve-info .value {\n color: #fff;\n text-align: right;\n }\n\n .approve-button {\n width: 100%;\n padding: 12px;\n background-color: #007bff;\n color: white;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n font-size: 16px;\n margin-top: 16px;\n }\n\n .approve-button:disabled {\n background-color: #555;\n cursor: not-allowed;\n }\n\n .approve-button:hover:not(:disabled) {\n background-color: #0056b3;\n }\n \n .status-message {\n margin-top: 12px;\n padding: 10px;\n border-radius: 4px;\n text-align: center;\n font-size: 14px;\n }\n \n .status-message.pending {\n background-color: #2c3e50;\n color: #f1c40f;\n }\n \n .status-message.success {\n background-color: #27ae60;\n color: white;\n }\n \n .status-message.error {\n background-color: #c0392b;\n color: white;\n }\n "}}class jc extends e.Component{constructor(t={}){super(t),this.props={balances:{eth:"0",exec:"0"},...t}}updateProps(t){this.props={...this.props,...t},this.updateSelectively(t)}updateSelectively(t){if(!this.element)return;if(void 0!==t.direction||void 0!==t.freeMint||void 0!==t.balances){const{balances:t,direction:e,freeMint:r}=this.props,n=parseFloat(t.eth||0).toFixed(6),i=parseInt(t.exec||0).toLocaleString(),o="sell"===e&&r?`Available: ${(parseInt(t.exec||0)-1e6).toLocaleString()}`:`Balance: ${i}`;this.element.querySelectorAll(".token-balance").forEach((t,r)=>{const s=0===r;t.textContent="buy"===e?s?`Balance: ${n}`:`Balance: ${i}`:s?o:`Balance: ${n}`});this.element.querySelectorAll(".token-symbol").forEach((t,r)=>{const n=0===r;t.textContent="buy"===e?n?"ETH":"$EXEC":n?"$EXEC":"ETH"})}const e=this.element.querySelector(".top-input"),r=this.element.querySelector(".bottom-input");if(void 0!==t.calculatingAmount||void 0!==t.execAmount||void 0!==t.ethAmount){const{direction:t,ethAmount:n,execAmount:i,calculatingAmount:o}=this.props;e&&!e.matches(":focus")&&(e.value="buy"===t?n:i),r&&!r.matches(":focus")&&(r.value="buy"===t?o?"Loading...":i:o?"Loading...":n)}}handleInput(t,e){const r=t.target.value;this.props.onInput&&this.props.onInput(e,r)}events(){return{"input .top-input":t=>this.handleInput(t,"top"),"input .bottom-input":t=>this.handleInput(t,"bottom")}}render(){const{direction:t,ethAmount:e,execAmount:r,calculatingAmount:n,freeMint:i,balances:o}=this.props,s=parseFloat(o.eth||0).toFixed(6),a=parseInt(o.exec||0).toLocaleString(),l="sell"===t&&i?`Available: ${(parseInt(o.exec||0)-1e6).toLocaleString()}`:`Balance: ${a}`;return`\n <div class="swap-inputs">\n <div class="input-container">\n <input type="text" \n class="top-input" \n value="${"buy"===t?e:r}" \n placeholder="0.0"\n pattern="^[0-9]*[.]?[0-9]*$">\n <div class="token-info">\n <span class="token-symbol">${"buy"===t?"ETH":"$EXEC"}</span>\n <span class="token-balance">Balance: ${"buy"===t?s:l}</span>\n </div>\n </div>\n <div class="direction-switch-slot"></div>\n <div class="input-container">\n <input type="text" \n class="bottom-input" \n value="${"buy"===t?n?"Loading...":r:n?"Loading...":e}" \n placeholder="0.0"\n pattern="^[0-9]*[.]?[0-9]*$">\n <div class="token-info">\n <span class="token-symbol">${"buy"===t?"$EXEC":"ETH"}</span>\n <span class="token-balance">Balance: ${"buy"===t?a:s}</span>\n </div>\n </div>\n </div>\n `}}class Kc extends e.Component{constructor(t={}){super(),this.props=t}updateProps(t){const e={...this.props};this.props={...this.props,...t};const r="buy"===e.direction?"Buy $EXEC":"Sell $EXEC",n="buy"===this.props.direction?"Buy $EXEC":"Sell $EXEC";if((r!==n||e.disabled!==this.props.disabled)&&this.element){const t=this.element.querySelector(".swap-button");t&&(t.textContent=n,this.props.disabled?t.disabled=!0:t.disabled=!1)}}handleClick(t){t.preventDefault(),!this.props.disabled&&this.props.onClick&&this.props.onClick(t)}events(){return{"click .swap-button":t=>this.handleClick(t)}}render(){const{direction:t,disabled:e}=this.props;return`\n <button class="swap-button" ${e?"disabled":""}>\n ${"buy"===t?"Buy $EXEC":"Sell $EXEC"}\n </button>\n `}}class Wc extends e.Component{constructor(t){super(t),this.blockchainService=t.blockchainService,this.eventBus=t.eventBus,this.state={direction:t.direction||"buy",ethAmount:"",execAmount:"",activeInput:null,freeMint:t.freeMint||!1,freeSupply:t.freeSupply||0,calculatingAmount:!1,isPhase2:null===t.isPhase2?null:t.isPhase2,dataReady:t.dataReady||!1,balances:t.balances||{eth:"0",exec:"0"},price:t.price||{current:0},contractData:t.contractData||{}},this._address=t.address||null,this.transactionOptions=new Lc,this.messagePopup=new qc("status-message"),this.priceDisplay=new Gc({price:this.state.price,contractData:this.state.contractData}),this.messagePopup.initialize(),this.swapInputs=null,this.swapButton=new Kc({direction:this.state.direction,disabled:!1,onClick:this.handleSwap.bind(this)}),this.calculateTimer=null,this.onDirectionChange=t.onDirectionChange,this.handleTransactionEvents=this.handleTransactionEvents.bind(this),this.handleBalanceUpdate=this.handleBalanceUpdate.bind(this),this.handleTransactionOptionsUpdate=this.handleTransactionOptionsUpdate.bind(this),this.transactionOptionsState={message:"",nftMintingEnabled:!1},this.approveModal=null,this.eventListeners=[],this.instanceId=Math.random().toString(36).substring(2,9),console.log(`🔵 SwapInterface instance created: ${this.instanceId}`)}handleBalanceUpdate(t){const e=t.balances||this.props.balances,r=void 0!==t.freeMint?t.freeMint:this.props.freeMint,n=void 0!==t.freeSupply?t.freeSupply:this.props.freeSupply;this.setState({balances:e,freeMint:r,freeSupply:n}),this.swapInputs&&this.swapInputs.updateProps({freeMint:r})}updateElements(){requestAnimationFrame(()=>{this.swapInputs&&this.swapInputs.updateProps({direction:this.state.direction,ethAmount:this.state.ethAmount,execAmount:this.state.execAmount,calculatingAmount:this.state.calculatingAmount,freeMint:this.state.freeMint,isPhase2:this.state.isPhase2}),this.swapButton&&this.swapButton.updateProps({direction:this.state.direction})})}async calculateSwapAmount(t,e){if(!t||isNaN(parseFloat(t)))return"";try{if(this.isLiquidityDeployed()){const r=this.state.price.current;if(console.log("calculateSwapAmount price",r),"eth"===e){const e=parseFloat(t)/r*1e6*.95;return console.log("calculateSwapAmount execAmount",e),e.toFixed(0)}{const e=parseFloat(t)/1e6*r*1.055;return console.log("calculateSwapAmount ethAmount",e),e.toFixed(6)}}if("eth"===e){const e=await this.blockchainService.getExecForEth(t),{freeSupply:r,freeMint:n}=this.state;console.log("calculateSwapAmount freeMint",n);const i=r>0&&!n?1e6:0;return Math.floor(e+i).toString()}return(await this.blockchainService.getEthForExec(t)).toString()}catch(t){return console.error("Error calculating swap amount:",t),""}}onMount(){console.log(`[${this.instanceId}] SwapInterface onMount called`),this.bindEvents();const t=[["contractData:updated",this.handleContractDataUpdate.bind(this),"high"],["transaction:pending",this.handleTransactionEvents,"normal"],["transaction:confirmed",this.handleTransactionEvents,"normal"],["transaction:success",this.handleTransactionEvents,"normal"],["transaction:error",this.handleTransactionEvents,"normal"],["balances:updated",this.handleBalanceUpdate,"high"],["transactionOptions:update",this.handleTransactionOptionsUpdate,"low"]];this.eventListeners=t.map(([t,e,r])=>(console.log(`[${this.instanceId}] Subscribing to ${t} with priority ${r}`),this.eventBus.on(t,e)));const{contractData:e}=this.state;if(e&&void 0!==e.liquidityPool){const t=this.isLiquidityDeployed();this.setState({isPhase2:t,dataReady:!0}),this.initializeChildComponents()}this.update(),requestAnimationFrame(()=>{this.mountChildComponents()})}updateProps(t){const e={...this.state},r={...this.state,...t};this.shouldUpdate(e,r)&&this.setState(r)}initializeChildComponents(){null!==this.state.isPhase2?this.swapInputs||(console.log(`[${this.instanceId}] Initializing SwapInputs with phase ${this.state.isPhase2?"2":"1"}`),this.swapInputs=new jc({direction:this.state.direction,ethAmount:this.state.ethAmount,execAmount:this.state.execAmount,calculatingAmount:this.state.calculatingAmount,freeMint:this.state.freeMint,isPhase2:this.state.isPhase2,onInput:this.handleInput.bind(this)})):console.log(`[${this.instanceId}] Phase not yet determined, skipping SwapInputs initialization`)}mountChildComponents(){const t=this.element.querySelector(".price-display-container");!t||this.priceDisplay.element&&t.contains(this.priceDisplay.element)||(console.log(`[${this.instanceId}] Mounting PriceDisplay component`),this.priceDisplay.mount(t));const e=this.element.querySelector(".transaction-options-container");!e||!this.transactionOptions||this.transactionOptions.element&&e.contains(this.transactionOptions.element)||(console.log(`[${this.instanceId}] Mounting TransactionOptions component`),this.transactionOptions.mount(e));const r=this.element.querySelector(".swap-inputs-container");r&&this.swapInputs&&this.swapInputs.mount(r);const n=this.element.querySelector(".quick-fill-buttons-container");if(n){n.innerHTML='<div class="quick-fill-buttons"></div>';const t=n.querySelector(".quick-fill-buttons");if(t){const{direction:e}=this.state;t.innerHTML="buy"===e?'<button data-amount="0.0025">0.0025</button>\n <button data-amount="0.01">0.01</button>\n <button data-amount="0.05">0.05</button>\n <button data-amount="0.1">0.1</button>':'<button data-percentage="25">25%</button>\n <button data-percentage="50">50%</button>\n <button data-percentage="75">75%</button>\n <button data-percentage="100">100%</button>',t.addEventListener("click",t=>{(t.target.dataset.amount||t.target.dataset.percentage)&&this.handleQuickFill(t)})}}const i=this.element.querySelector(".direction-switch-slot");i&&(i.innerHTML='<button class="direction-switch">↑↓</button>',i.querySelector(".direction-switch").addEventListener("click",t=>{this.handleDirectionSwitch(t)}));const o=this.element.querySelector(".swap-button-container");o&&this.swapButton&&this.swapButton.mount(o)}onUnmount(){if(console.log(`[${this.instanceId}] SwapInterface onUnmount called`),this.eventListeners.forEach(t=>{"function"==typeof t&&t()}),this.eventListeners=[],this.transactionOptions&&this.transactionOptions.element&&this.transactionOptions.element.remove(),this.priceDisplay){try{this.priceDisplay.unmount()}catch(t){console.warn("Error unmounting price display:",t)}this.priceDisplay=null}if(this.swapInputs){try{this.swapInputs.unmount()}catch(t){console.warn("Error unmounting swap inputs:",t)}this.swapInputs=null}if(this.swapButton){try{this.swapButton.unmount()}catch(t){console.warn("Error unmounting swap button:",t)}this.swapButton=null}if(this.approveModal){try{this.approveModal.handleClose()}catch(t){console.warn("Error closing approval modal during unmount:",t)}this.approveModal=null}this.calculateTimer&&(clearTimeout(this.calculateTimer),this.calculateTimer=null)}handleTransactionEvents(t){if(console.log(`[${this.instanceId}] handleTransactionEvents called with:`,{type:t?.type,hasError:!!t?.error,hasHash:!!t?.hash,eventId:t?.id||"none",handled:t?.handled||!1}),t?.handledBy?.includes(this.instanceId))return void console.log(`[${this.instanceId}] Event already handled by this instance, skipping`);t.handledBy||(t.handledBy=[]),t.handledBy.push(this.instanceId);const e="buy"===this.state.direction?"Buy":"Sell";if(t&&t.type){if("buy"!==t.type&&"sell"!==t.type&&"swap"!==t.type||t.error||(console.log(`[${this.instanceId}] Showing transaction pending message for type:`,t.type),this.messagePopup.info(`${e} transaction. Simulating...`,"Transaction Pending")),t.hash&&this.messagePopup.info("Transaction confirmed, waiting for completion...","Transaction Confirmed"),t.receipt&&("buy"===t.type||"sell"===t.type||"swap"===t.type)){const t="buy"===this.state.direction?this.state.execAmount+" EXEC":this.state.ethAmount+" ETH";this.messagePopup.success(`Successfully ${"buy"===e.toLowerCase()?"bought":"sold"} ${t}`,"Transaction Complete"),this.state.ethAmount="",this.state.execAmount="",this.state.calculatingAmount=!1,this.swapInputs&&this.swapInputs.updateProps({ethAmount:"",execAmount:"",calculatingAmount:!1}),this.mountChildComponents()}if(t.error&&!t.handled){console.log(`[${this.instanceId}] Handling error in handleTransactionEvents:`,t.error);let e=t.error?.message||"Transaction failed";if(e.includes("Contract call")){const t=e.split(": ");e=t[t.length-1]}const r="buy"===this.state.direction?"Buy Failed":"Sell Failed";this.messagePopup.error(`${r}: ${e}`,"Transaction Failed"),t.handled=!0}}else console.warn("Invalid transaction event:",t)}handleTransactionOptionsUpdate(t){this.transactionOptionsState={message:t.message,nftMintingEnabled:t.nftMintingEnabled}}handleInput(t,e){this.calculateTimer&&clearTimeout(this.calculateTimer),this.state.activeInput=t,this.state.calculatingAmount=!0,"buy"===this.state.direction?"top"===t?this.state.ethAmount=e:this.state.execAmount=e:"top"===t?this.state.execAmount=e:this.state.ethAmount=e,this.swapInputs&&this.swapInputs.updateProps({direction:this.state.direction,ethAmount:this.state.ethAmount,execAmount:this.state.execAmount,calculatingAmount:this.state.calculatingAmount,freeMint:this.state.freeMint,isPhase2:this.state.isPhase2}),this.calculateTimer=setTimeout(async()=>{try{const r="buy"===this.state.direction==("top"===t),n=await this.calculateSwapAmount(e,r?"eth":"exec");r?(this.state.execAmount=n,this.state.calculatingAmount=!1,this.swapInputs&&this.swapInputs.updateProps({execAmount:n,calculatingAmount:!1})):(this.state.ethAmount=n,this.state.calculatingAmount=!1,this.swapInputs&&this.swapInputs.updateProps({ethAmount:n,calculatingAmount:!1}))}catch(t){console.error("Error calculating swap amount:",t),this.state.calculatingAmount=!1,this.swapInputs&&this.swapInputs.updateProps({calculatingAmount:!1})}},750)}events(){return{}}shouldUpdate(t,e){if(!t||!e)return!0;if(t===e)return!1;return!(t.ethAmount!==e.ethAmount||t.execAmount!==e.execAmount||t.activeInput!==e.activeInput||t.calculatingAmount!==e.calculatingAmount)||t.direction!==e.direction||t.freeMint!==e.freeMint||t.freeSupply!==e.freeSupply||t.isPhase2!==e.isPhase2||t.dataReady!==e.dataReady}handleDirectionSwitch(t){t&&(t.preventDefault(),t.stopPropagation()),this.calculateTimer&&clearTimeout(this.calculateTimer);const e="buy"===this.state.direction?"sell":"buy";console.log("Direction Switch - Current State:",{direction:this.state.direction,newDirection:e,freeMint:this.state.freeMint,freeSupply:this.state.freeSupply}),this.setState({direction:e,calculatingAmount:!1,activeInput:null}),this.onDirectionChange&&this.onDirectionChange(e),requestAnimationFrame(()=>{this.mountChildComponents()})}isLiquidityDeployed(){const{contractData:t}=this.state;if(!t||!t.liquidityPool)return!1;const e="0x0000000000000000000000000000000000000000"!==t.liquidityPool;return console.log("isLiquidityDeployed check:",{liquidityPool:t.liquidityPool,result:e}),e}async handleSwap(){try{if(this.state.calculatingAmount)return void this.messagePopup.info("Please wait for the calculation to complete","Loading");const{ethAmount:t,execAmount:e,direction:r,balances:n,freeMint:i}=this.state;if(!t||!e||parseFloat(t)<=0||parseFloat(e)<=0)return void this.messagePopup.info("Please enter valid amounts","Invalid Input");if("buy"===r){let e=parseFloat(this.blockchainService.formatEther(n.eth||"0"));const r=parseFloat(t);if(isNaN(r)||isNaN(e)||r>e)return void this.messagePopup.info(`Not enough ETH balance. You have ${e.toFixed(6)} ETH, need ${r} ETH`,"Insufficient Balance")}else{const t=e.replace(/,/g,""),r=BigInt(n.exec||0);if(BigInt(parseInt(t)||0)>r){const e=parseInt(n.exec||0).toLocaleString(),r=parseInt(t).toLocaleString();return void this.messagePopup.info(`Not enough EXEC balance. You have ${e} EXEC, need ${r} EXEC`,"Insufficient Balance")}}if("sell"===r&&parseInt(e.replace(/,/g,""))<=1e6&&i)return void this.messagePopup.info("Free minted tokens cannot be sold directly.","Free Mint Restriction");const o=this.isLiquidityDeployed(),s=this.state.execAmount.replace(/,/g,"");if(o){const t=this.blockchainService.parseEther(this.state.ethAmount),e=this.blockchainService.parseExec(s),r=await this.getAddress();if(!r)return void this.messagePopup.error("No wallet address available. Please reconnect your wallet.","Wallet Error");if("buy"===this.state.direction)await this.blockchainService.swapExactEthForTokenSupportingFeeOnTransfer(r,{amount:e},t);else{const t=this.blockchainService.swapRouter?.address||this.blockchainService.swapRouterAddress,n=await this.blockchainService.getApproval(r,t);if(BigInt(n)<BigInt(e)){if(this.approveModal){try{this.eventBus.off("approve:complete"),this.approveModal.handleClose()}catch(t){console.warn("Error closing existing approval modal:",t)}this.approveModal=null}return this.approveModal=new ApproveModal(s,this.blockchainService,r),this.approveModal.mount(document.body),this.eventBus.once("approve:complete",async()=>{try{await this.blockchainService.swapExactTokenForEthSupportingFeeOnTransferV2(r,{amount:e})}catch(t){this.messagePopup.error(`Swap Failed: ${t.message}`,"Transaction Failed")}}),this.eventBus.once("approveModal:closed",()=>{this.approveModal=null}),void this.approveModal.show()}await this.blockchainService.swapExactTokenForEthSupportingFeeOnTransferV2(r,{amount:e})}}else{let t;try{const e=await this.blockchainService.getCurrentTier();if(t=await this.blockchainService.getMerkleProof(this.address,e),!t)return void this.messagePopup.error(`You are not whitelisted for Tier ${e+1}.`,"Not Whitelisted")}catch(t){return void this.messagePopup.error("Failed to verify whitelist status.","Whitelist Check Failed")}let e=s;if("buy"===this.state.direction&&this.state.freeSupply>0&&!this.state.freeMint){const t=parseInt(s);e=Math.max(0,t-1e6).toString()}const r=this.blockchainService.parseEther(this.state.ethAmount),n=this.blockchainService.parseExec(e);if("buy"===this.state.direction)await this.blockchainService.buyBonding({amount:n,maxCost:r,mintNFT:this.transactionOptionsState.nftMintingEnabled,proof:t.proof,message:this.transactionOptionsState.message},r);else{const e=BigInt(r)*BigInt(999)/BigInt(1e3);await this.blockchainService.sellBonding({amount:n,minReturn:e,proof:t.proof,message:this.transactionOptionsState.message})}}}catch(t){console.error("Swap failed:",t);let e=t.message;if(e.includes("Contract call")){const t=e.split(": ");e=t[t.length-1]}const r="buy"===this.state.direction?"Buy Failed":"Sell Failed";this.messagePopup.error(`${r}: ${e}`,"Transaction Failed")}}handleQuickFill(t){t.preventDefault();const e=t.target.dataset.amount,r=t.target.dataset.percentage;let n;if(e)n=e;else if(r){const{balances:t}=this.state,e=t.exec;if(!e||"0"===e)return void console.warn("No EXEC balance available for quick fill");let i=BigInt(e)/BigInt(1e18);if(this.state.freeMint&&(i-=BigInt(1e6),i<=0))return void this.messagePopup.info("You only have free mint tokens which cannot be sold.","Cannot Quick Fill");n=(i*BigInt(r)/BigInt(100)).toString()}this.handleInput("top",n)}handleContractDataUpdate(){try{const t=this.state.isPhase2,e=this.state.dataReady,r=null===t,{contractData:n}=this.state,i=this.isLiquidityDeployed();if(this.state.isPhase2=i,this.state.dataReady=!0,r&&null!==this.state.isPhase2)return console.log(`[${this.instanceId}] Phase determined: ${i?"Phase 2":"Phase 1"}`),this.initializeChildComponents(),this.setState({dataReady:!0,isPhase2:i}),void requestAnimationFrame(()=>this.mountChildComponents());if(!e&&this.state.dataReady)return console.log(`[${this.instanceId}] Data ready, mounting child components`),this.setState({dataReady:!0,isPhase2:i}),void requestAnimationFrame(()=>this.mountChildComponents());if(t!==this.state.isPhase2){console.log("Phase changed"),this.swapInputs&&this.swapInputs.updateProps({isPhase2:this.state.isPhase2});const t=this.element.querySelector(".price-display-container");return void(t&&this.priceDisplay&&this.priceDisplay.mount(t))}const o=this.element.querySelector(".price-display-container");if(o&&this.priceDisplay){!this.priceDisplay.element||!o.contains(this.priceDisplay.element)?this.priceDisplay.mount(o):this.priceDisplay.update()}}catch(t){console.error("Error in handleContractDataUpdate:",t),this.state.dataReady||(this.state.dataReady=!0,this.state.isPhase2=this.isLiquidityDeployed(),this.element&&this.element.innerHTML||this.update())}}render(){console.log("🎨 SwapInterface.render - Starting render");const{direction:t,isPhase2:e,dataReady:r,balances:n,freeMint:i,freeSupply:o}=this.state;if(!r||null===e)return'\n <div class="price-display-container"></div>\n <div class="quick-fill-buttons-container"></div>\n <div class="swap-inputs-container">\n <div style="padding: 20px; text-align: center;">Loading swap interface...</div>\n </div>\n <div class="transaction-options-container"></div>\n <div class="swap-button-container"></div>\n ';console.log("Render - Current State:",{direction:t,freeMint:i,freeSupply:o,isPhase2:e}),parseFloat(n.eth).toFixed(6);parseInt(n.exec).toLocaleString();"sell"===t&&i&&(parseInt(n.exec)-1e6).toLocaleString();const s=`\n <div class="price-display-container"></div>\n ${"sell"===t&&i&&!e?'<div class="free-mint-notice">You have 1,000,000 $EXEC you received for free that cannot be sold here.</div>':"buy"===t&&o>0&&!i&&!e?'<div class="free-mint-notice free-mint-bonus">1,000,000 $EXEC will be added to your purchase. Thank you.</div>':""}\n <div class="quick-fill-buttons-container"></div>\n <div class="swap-inputs-container"></div>\n <div class="transaction-options-container"></div>\n <div class="swap-button-container"></div>\n `;return console.log("🎨 SwapInterface.render - Completed render"),s}async getAddress(){try{const t=await Promise.resolve(this._address);return console.log(`[${this.instanceId}] Resolved address: ${t}`),t}catch(t){return console.error(`[${this.instanceId}] Error resolving address:`,t),null}}setAddress(t){this._address=t}get address(){return this._address}set address(t){this._address=t}}class Vc extends e.Component{constructor(t){super(t),this.eventBus=t.eventBus,this.state={currentPrice:t.price||0,totalBondingSupply:t.contractData?.totalBondingSupply||0,totalMessages:t.contractData?.totalMessages||0,totalNFTs:t.contractData?.totalNFTs||0,dataReady:t.dataReady||!1,contractEthBalance:t.contractData?.contractEthBalance||0,liquidityPool:t.contractData?.liquidityPool||null,chainId:t.chainId||null}}onMount(){this.unsubscribeEvents=[this.eventBus.on("contractData:updated",t=>this.updateProps({contractData:t})),this.eventBus.on("price:updated",t=>this.updateProps({price:t.price}))],this.resizeHandler=()=>requestAnimationFrame(()=>this.drawCurve()),window.addEventListener("resize",this.resizeHandler),this.isLiquidityDeployed()?this.renderDexToolsChart():this.drawCurve()}updateProps(t){const e={...this.state};let r=!1;if(t.contractData){const{contractData:n}=t;e.totalBondingSupply=n.totalBondingSupply,e.totalMessages=n.totalMessages,e.totalNFTs=n.totalNFTs,e.contractEthBalance=n.contractEthBalance,e.liquidityPool!==n.liquidityPool&&(e.liquidityPool=n.liquidityPool,r=!0),e.dataReady=!0,r=!0}void 0!==t.price&&(e.currentPrice=t.price,r=!0),void 0!==t.chainId&&(e.chainId=t.chainId,r=!0),this.setState(e),r&&(this.isLiquidityDeployed()?this.renderDexToolsChart():this.drawCurve())}isLiquidityDeployed(){const{liquidityPool:t}=this.state;return t&&"0x0000000000000000000000000000000000000000"!==t}renderDexToolsChart(){try{const t=this.element.querySelector(".bonding-curve");if(!t)return;t.innerHTML="";const e=`https://www.dextools.io/widget-chart/en/${this.getNetworkName(this.state.chainId)}/pe-light/${this.state.liquidityPool}?theme=dark&chartType=2&chartResolution=30&drawingToolbars=false`;t.innerHTML=`\n <iframe \n id="dextools-widget"\n title="$EXEC DEXTools Trading Chart"\n width="100%"\n height="100%"\n src="${e}"\n style="border: none;"\n onerror="console.warn('DEXTools chart failed to load (expected on localhost)')"\n ></iframe>\n `;const r=t.querySelector("#dextools-widget");r&&(r.onerror=()=>{console.warn("DEXTools chart iframe failed to load (expected on localhost due to X-Frame-Options)"),t.innerHTML='\n <div style="display: flex; align-items: center; justify-content: center; height: 100%; color: #888;">\n <div>Chart will be available in production</div>\n </div>\n '})}catch(t){console.error("Error rendering DEXTools chart:",t);const e=this.element.querySelector(".bonding-curve");e&&(e.innerHTML='\n <div style="display: flex; align-items: center; justify-content: center; height: 100%; color: #888;">\n <div>Chart unavailable (expected on localhost)</div>\n </div>\n ')}}getNetworkName(t){return{1:"ether",5:"goerli"}[t]||"ether"}drawCurve(){const t=this.element.querySelector("#curveChart");if(!t)return;const e=t.getContext("2d");t.width=t.offsetWidth,t.height=t.offsetHeight,e.clearRect(0,0,t.width,t.height),this.drawBaseCurve(e,t),this.state.dataReady?this.drawDataElements(e):this.drawPlaceholderLabels(e)}drawBaseCurve(t,e){const r=getComputedStyle(document.documentElement).getPropertyValue("--bonding-curve-color").trim()||"#764ba2";t.strokeStyle=r,t.lineWidth=2;const n=this.calculateCurvePoints(e,t=>Math.pow(.1+.8*t,3.5));this.drawCurvePath(t,n)}drawDataElements(t){const e=Math.max(.1,Math.min(.9,Math.pow(this.state.currentPrice/.08,1/3.5))),r=this.calculateCurvePoints(this.element.querySelector("#curveChart"),t=>Math.pow(.1+.8*t,3.5));this.drawCurrentPosition(t,r,e),this.drawLabels(t)}drawPlaceholderLabels(t){t.fillStyle="#666666",t.font="12px Courier New",t.fillText("Loading price data...",10,20),t.fillText("Loading supply data...",10,40),t.fillText("Loading NFT data...",10,60)}calculateCurvePoints(t,e){const r=[];for(let n=0;n<=100;n++){const i=n/100,o=e(i),s=i*t.width*.8+.1*t.width,a=.9*t.height-o*t.height*.8;r.push({x:s,y:a})}return r}drawCurvePath(t,e){t.beginPath(),t.moveTo(e[0].x,e[0].y);for(let r=1;r<e.length;r++)t.lineTo(e[r].x,e[r].y);t.stroke()}drawCurrentPosition(t,e,r){const n=Math.floor((r-.025)*e.length),i=Math.floor((r+.025)*e.length);if(n>=0&&i<e.length){const r=getComputedStyle(document.documentElement).getPropertyValue("--bonding-curve-color").trim()||"#764ba2";t.beginPath(),t.strokeStyle=r,t.lineWidth=4,t.moveTo(e[n].x,e[n].y);for(let r=n;r<=i;r++)t.lineTo(e[r].x,e[r].y);t.stroke();const o=e[Math.floor((n+i)/2)];t.beginPath(),t.arc(o.x,o.y,4,0,2*Math.PI),t.fillStyle="#FF0000",t.fill()}}drawLabels(t){t.fillStyle="#666666",t.font="12px Courier New",t.fillText(`${this.state.currentPrice.toFixed(4)} ETH / EXEC`,10,20),t.fillText(`Total Supply: ${this.state.totalBondingSupply.toLocaleString()} EXEC`,10,40),t.fillText(`Total Messages: ${this.state.totalMessages.toLocaleString()}`,10,60),t.fillText(`Total NFTs: ${this.state.totalNFTs.toLocaleString()}`,10,80),t.fillText(`Contract ETH Balance: ${this.state.contractEthBalance}`,10,100)}unmount(){this.unsubscribeEvents&&this.unsubscribeEvents.forEach(t=>t()),this.resizeHandler&&window.removeEventListener("resize",this.resizeHandler),super.unmount()}render(){return`\n <div class="bonding-curve marble-bg">\n ${this.isLiquidityDeployed()?"":'<canvas id="curveChart"></canvas>'}\n </div>\n `}static get styles(){return"\n .bonding-curve {\n width: 100%;\n height: 90%;\n min-height: 400px;\n background: #1a1a1a;\n border-radius: 8px;\n padding: 0px;\n overflow: hidden;\n position: relative;\n }\n\n #curveChart {\n width: 100%;\n height: 100%;\n }\n\n #dextools-widget {\n width: 100%;\n height: 100%;\n position: absolute;\n top: 0;\n left: 0;\n border: none;\n }\n "}}class $c extends e.Component{constructor(t){super(t),this.eventBus=t.eventBus,this.state={balances:t.balances||{eth:"0",exec:"0",lastUpdated:null},loading:void 0===t.loading||t.loading,error:t.error||null},this.handleBalanceUpdate=this.handleBalanceUpdate.bind(this)}template(){const{balances:t,loading:e,error:r}=this.state;return`\n <div class="balance-display marble-bg ${e?"loading":""} ${r?"error":""}">\n <div class="balance-header">\n <h3>Your Balances</h3>\n ${t.lastUpdated?`\n <span class="last-updated">\n Last updated: ${new Date(t.lastUpdated).toLocaleTimeString()}\n </span>\n `:""}\n </div>\n \n <div class="balance-content">\n ${e?'\n <div class="loading-indicator">Loading balances...</div>\n ':r?`\n <div class="error-message">${r}</div>\n `:`\n <div class="balance-grid">\n <div class="balance-item eth">\n <span class="label">ETH Balance</span>\n <span class="amount">${t.eth}</span>\n </div>\n <div class="balance-item exec">\n <span class="label">EXEC Balance</span>\n <span class="amount">${t.exec}</span>\n </div>\n </div>\n `}\n </div>\n </div>\n `}render(){return this.template()}onMount(){this.eventBus&&(this.unsubscribeEvents=[this.eventBus.on("balances:updated",this.handleBalanceUpdate)])}onUnmount(){this.unsubscribeEvents&&this.unsubscribeEvents.forEach(t=>t())}updateProps(t){this.setState({balances:void 0!==t.balances?t.balances:this.state.balances,loading:void 0!==t.loading?t.loading:this.state.loading,error:void 0!==t.error?t.error:this.state.error})}handleBalanceUpdate(t){this.setState({balances:t,loading:!1,error:null})}}t.ApprovalModal=Hc,t.BalanceDisplay=$c,t.BlockchainService=class{constructor(t,e){if(!t||!e)throw new Error("BlockchainService requires eventBus and contractCache instances.");this.provider=null,this.signer=null,this.contract=null,this.mirrorContract=null,this.connectionState="disconnected",this.networkConfig=null,this.ethers=_c,this.eventBus=t,this.contractCache=e,this.swapRouterAddress="0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D",this.swapRouter=null,this.isInternalNetworkChange=!1,this.transactionCounter=0,this.activeTransactions=new Map,this.networkChangeState="idle",this.networkChangeTimeout=null,this.networkChangeTimeoutDuration=3e4,this.pendingNetworkChange=null,this.previousNetworkId=null,this.isInitializing=!1,this.chainChangedHandler=()=>this.handleNetworkChange(),this.accountsChangedHandler=()=>this.handleAccountChange()}async initialize(t){this.isInitializing=!0;try{if(!t)throw new Error("Network configuration is required for initialization.");return this.networkConfig=t,await this.initializeProvider(),this.connectionState="connected",this.setupNetworkListeners(),this.eventBus.emit("blockchain:initialized"),this.isInitializing=!1,!0}catch(t){throw this.connectionState="error",this.isInitializing=!1,this.eventBus.emit("blockchain:error",t),this.wrapError(t,"Blockchain initialization failed")}}setupNetworkListeners(){if(window.ethereum&&this.chainChangedHandler&&this.accountsChangedHandler){try{window.ethereum.removeListener("chainChanged",this.chainChangedHandler),window.ethereum.removeListener("accountsChanged",this.accountsChangedHandler)}catch(t){}window.ethereum.on("chainChanged",this.chainChangedHandler),window.ethereum.on("accountsChanged",this.accountsChangedHandler)}}async initializeProvider(){try{if(window.ethereum){const t=parseInt(this.networkConfig?.network||"1");await this.waitForCorrectNetwork(t);const e=new lc(window.ethereum,"any");this.provider=e,this.signer=e.getSigner();const r=await this.provider.getNetwork();if(r.chainId!==t){this.eventBus.emit("network:switching",{from:r.chainId,to:t,automatic:!0});try{this.isInternalNetworkChange=!0,await window.ethereum.request({method:"wallet_switchEthereumChain",params:[{chainId:`0x${t.toString(16)}`}]}),this.provider=new lc(window.ethereum),this.signer=this.provider.getSigner(),this.eventBus.emit("network:switched",{from:r.chainId,to:t,success:!0})}catch(e){if(this.isInternalNetworkChange=!1,this.eventBus.emit("network:switched",{from:r.chainId,to:t,success:!1,error:e.message}),4902!==e.code)throw e;await window.ethereum.request({method:"wallet_addEthereumChain",params:[{chainId:`0x${t.toString(16)}`,rpcUrls:[this.networkConfig.rpcUrl],chainName:this.networkConfig.chainName,nativeCurrency:this.networkConfig.nativeCurrency}]}),this.provider=new lc(window.ethereum),this.signer=this.provider.getSigner()}finally{this.isInternalNetworkChange=!1}}}else this.provider=new il(this.networkConfig.rpcUrl)}catch(t){throw this.isInternalNetworkChange=!1,this.wrapError(t,"Provider initialization failed")}}async initializeContract(t,e,r,n){try{if(!(t&&e&&r&&n))throw new Error("Contract address and all ABIs are required.");this.contract=new Fo(t,e,this.provider);const i=await this.contract.mirrorERC721();this.mirrorContract=new Fo(i,r,this.provider),this.swapRouter=new Fo(this.swapRouterAddress,n,this.provider);const o=await this.getLiquidityPool();if(o&&"0x0000000000000000000000000000000000000000"!==o){const t=["function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast)","function token0() external view returns (address)","function token1() external view returns (address)"];this.v2PoolContract=new Fo(o,t,this.provider)}else console.warn("Liquidity pool address is zero, skipping V2 pool contract initialization.");this.eventBus.emit("contract:updated")}catch(t){throw this.wrapError(t,"Contract initialization failed")}}async getMerkleProof(t,e=null){return null}async executeContractCall(t,e=[],r={}){try{if(!this.contract)throw new Error("Contract not initialized");let n="mirror"===r.useContract?this.mirrorContract:this.contract;if("router"===r.useContract&&(n=this.swapRouter),"v2pool"===r.useContract&&(n=this.v2PoolContract),r.requiresSigner){if(!this.signer)throw new Error("No wallet connected");n=n.connect(this.signer)}if("function"!=typeof n[t])throw new Error(`Method ${t} not found on contract`);const i=await n[t](...e||[],r.txOptions||{});if(i.wait){const r=await i.wait();return this.eventBus.emit("transaction:confirmed",{hash:r.transactionHash,method:t,args:e}),r}return i}catch(e){throw this.handleContractError(e,t)}}handleContractError(t,e){let r=t.message;if("INSUFFICIENT_FUNDS"===t.code)return new Error("Insufficient funds to complete transaction");if("UNPREDICTABLE_GAS_LIMIT"===t.code){const e=t.message.match(/execution reverted: (.*?)(?:\"|$)/);return r=e?`Tx Reverted: ${e[1]}`:"Transaction would fail - check your inputs",new Error(r)}if(4001===t.code||"ACTION_REJECTED"===t.code)return new Error("Transaction rejected by user");if(t.message.includes("execution reverted")){const e=t.message.match(/execution reverted: (.*?)(?:\"|$)/);r=e?`Tx Reverted: ${e[1]}`:t.message}return console.error(`Contract error in ${e}:`,t),new Error(r)}wrapError(t,e){const r=new Error(`${e}: ${t.message}`);return r.originalError=t,r.code=t.code,r}async handleNetworkChange(){try{if(this.isInitializing)return void console.log("BlockchainService: Ignoring network change during initialization");if(this.isInternalNetworkChange)return;let t=null;try{const e=await window.ethereum.request({method:"eth_chainId"});t=parseInt(e,16)}catch(e){console.warn("Could not get current network from window.ethereum:",e);try{if(this.provider){t=(await this.provider.getNetwork()).chainId}}catch(t){console.warn("Could not get current network from provider:",t)}}this.previousNetworkId=t;const e=parseInt(this.networkConfig?.network||"1");t&&t!==e&&console.log(`User switched to network ${t}, but we need ${e}. Switching back...`),this.networkChangeState="switching",this.pendingNetworkChange={from:t,to:null,startTime:Date.now()},this.eventBus.emit("network:switching",{from:t,to:null,automatic:!0}),this.networkChangeTimeout=setTimeout(()=>{"switching"===this.networkChangeState&&this.handleNetworkChangeTimeout()},this.networkChangeTimeoutDuration),await this.initializeProvider();let r=null;try{const t=await window.ethereum.request({method:"eth_chainId"});r=parseInt(t,16)}catch(t){console.warn("Could not get new network from window.ethereum:",t);try{if(this.provider){r=(await this.provider.getNetwork()).chainId}}catch(t){console.warn("Could not get new network from provider:",t)}}const n=this.pendingNetworkChange?Date.now()-this.pendingNetworkChange.startTime:0;this.networkChangeTimeout&&(clearTimeout(this.networkChangeTimeout),this.networkChangeTimeout=null),this.networkChangeState="switched";this.pendingNetworkChange;this.pendingNetworkChange=null,this.eventBus.emit("network:switched",{from:t,to:r,success:!0,duration:n}),this.eventBus.emit("network:changed",{automatic:!0}),this.eventBus.emit("contract:updated"),setTimeout(()=>{"switched"===this.networkChangeState&&(this.networkChangeState="idle")},1e3)}catch(t){this.networkChangeTimeout&&(clearTimeout(this.networkChangeTimeout),this.networkChangeTimeout=null),this.networkChangeState="error",this.eventBus.emit("network:switch:error",{from:this.previousNetworkId,to:null,error:t.message||"Network switch failed",originalError:t}),this.eventBus.emit("blockchain:error",t),setTimeout(()=>{"error"===this.networkChangeState&&(this.networkChangeState="idle",this.pendingNetworkChange=null)},2e3)}}handleNetworkChangeTimeout(){console.warn("Network change timed out after",this.networkChangeTimeoutDuration,"ms"),this.networkChangeState="error",this.eventBus.emit("network:switch:timeout",{from:this.previousNetworkId,to:null,timeout:this.networkChangeTimeoutDuration}),this.networkChangeTimeout&&(clearTimeout(this.networkChangeTimeout),this.networkChangeTimeout=null),setTimeout(()=>{"error"===this.networkChangeState&&(this.networkChangeState="idle",this.pendingNetworkChange=null)},2e3)}cancelNetworkChange(){return"switching"===this.networkChangeState&&(this.networkChangeTimeout&&(clearTimeout(this.networkChangeTimeout),this.networkChangeTimeout=null),this.networkChangeState="idle",this.pendingNetworkChange=null,this.eventBus.emit("network:switch:cancelled",{from:this.previousNetworkId}),!0)}getNetworkChangeState(){return this.networkChangeState}async waitForCorrectNetwork(t,e=5e3){const r=Date.now();for(;Date.now()-r<e;){try{const e=await window.ethereum.request({method:"eth_chainId"});if(parseInt(e,16)===t)return void await new Promise(t=>setTimeout(t,200))}catch(t){}await new Promise(t=>setTimeout(t,100))}console.warn(`Network check timeout: Expected ${t}, will verify in initializeProvider`)}async handleAccountChange(){try{if(window.ethereum){const t=new lc(window.ethereum);this.signer=t.getSigner(),this.eventBus.emit("account:changed"),this.eventBus.emit("contract:updated")}}catch(t){this.eventBus.emit("blockchain:error",t)}}getConnectionState(){return this.connectionState}isConnected(){return"connected"===this.connectionState}async getCurrentTier(){try{const t=this.contractCache.get("getCurrentTier",[]);if(null!==t)return t;const e=await this.executeContractCall("getCurrentTier"),r=parseInt(e.toString());return this.contractCache.set("getCurrentTier",[],r),r}catch(t){throw this.wrapError(t,"Failed to get current tier")}}async getCurrentRoot(){try{return(await this.executeContractCall("getCurrentRoot")).toString()}catch(t){throw this.wrapError(t,"Failed to get current root")}}async getLiquidityPool(){try{const t=this.contractCache.get("getLiquidityPool",[]);if(null!==t)return t;const e=(await this.executeContractCall("liquidityPair")).toString();return this.contractCache.set("getLiquidityPool",[],e),e}catch(t){throw this.wrapError(t,"Failed to get liquidity pool address")}}async getTotalBondingSupply(){try{const t=this.contractCache.get("getTotalBondingSupply",[]);if(null!==t)return t;const e=await this.executeContractCall("totalBondingSupply"),r=parseFloat(this.ethers.utils.formatUnits(e,0));return this.contractCache.set("getTotalBondingSupply",[],r),r}catch(t){throw this.wrapError(t,"Failed to get total bonding supply")}}async getTotalMessages(){try{const t=this.contractCache.get("getTotalMessages",[]);if(null!==t)return t;const e=await this.executeContractCall("totalMessages"),r=parseFloat(this.ethers.utils.formatUnits(e,0));return this.contractCache.set("getTotalMessages",[],r),r}catch(t){throw this.wrapError(t,"Failed to get total messages")}}async getMessagesBatch(t,e){return(await this.executeContractCall("getMessagesBatch",[t,e])).map(t=>t.toString())}async getTokenBalance(t){if(!t||"string"!=typeof t)throw new Error("Invalid address provided to getTokenBalance");const e=this.contractCache.get("getTokenBalance",[t]);if(null!==e)return e;const r=await this.executeContractCall("balanceOf",[t]);return this.contractCache.set("getTokenBalance",[t],r),r}async getNFTBalance(t){try{if(!t||"string"!=typeof t)throw new Error("Invalid address provided to getNFTBalance");const e=this.contractCache.get("getNFTBalance",[t]);if(null!==e)return e;const r=await this.executeContractCall("balanceOf",[t],{useContract:"mirror"}),n=parseInt(r.toString());return this.contractCache.set("getNFTBalance",[t],n),n}catch(t){throw this.wrapError(t,"Failed to get NFT balance")}}async getNFTSupply(){try{return this.executeContractCall("totalSupply",[],{useContract:"mirror"})}catch(t){throw this.wrapError(t,"Failed to get NFT supply")}}async getEthBalance(t){try{if(!t||"string"!=typeof t)throw new Error("Invalid address provided to getEthBalance");const e=this.contractCache.get("getEthBalance",[t]);if(null!==e)return e;const r=(await this.provider.getBalance(t)).toString();return this.contractCache.set("getEthBalance",[t],r),r}catch(t){throw this.wrapError(t,"Failed to get ETH balance")}}async buyBonding(t,e){try{this.eventBus.emit("transaction:pending",{type:"buy"}),console.log("Buy bonding called with params:",t);const r=await this.executeContractCall("buyBonding",[t.amount,t.maxCost,t.mintNFT,t.proof,t.message],{requiresSigner:!0,txOptions:{value:e}});return this.eventBus.emit("transaction:success",{type:"buy",receipt:r,amount:t.amount}),r}catch(t){throw this.eventBus.emit("transaction:error",{type:"buy",error:this.wrapError(t,"Buy bonding failed")}),t}}async sellBonding(t){try{this.eventBus.emit("transaction:pending",{type:"sell"});const e=await this.executeContractCall("sellBonding",[t.amount,t.minReturn,t.proof,t.message],{requiresSigner:!0});return this.eventBus.emit("transaction:success",{type:"sell",receipt:e,amount:t.amount}),e}catch(t){throw this.eventBus.emit("transaction:error",{type:"sell",error:this.wrapError(t,"Sell bonding failed")}),t}}async getTokenPrice(){try{if(!this.contract)throw new Error("Contract not initialized");const t=kc("1000000"),e=await this.executeContractCall("calculateCost",[t]);if(!e||!W.isBigNumber(e))throw new Error("Invalid price format from contract");return parseFloat(this.ethers.utils.formatEther(e))}catch(t){throw this.wrapError(t,"Failed to get token price")}}async getCurrentPrice(){try{const t=this.contractCache.get("getCurrentPrice",[]);if(null!==t)return t;const e=await this.getTokenPrice();return this.contractCache.set("getCurrentPrice",[],e),e}catch(t){throw this.wrapError(t,"Failed to get current price")}}async calculateCost(t){try{return await this.executeContractCall("calculateCost",[t])}catch(t){throw this.wrapError(t,"Failed to calculate cost")}}async getExecForEth(t){try{const e=kc(t.toString()),r=await this.executeContractCall("getExecForEth",[e]);return this.formatExec(r)}catch(t){throw this.wrapError(t,"Failed to calculate EXEC for ETH amount")}}async getEthForExec(t){try{const e=Ec(t.toString(),18),r=await this.executeContractCall("getEthForExec",[e]);return this.formatEther(r)}catch(t){throw this.wrapError(t,"Failed to calculate ETH for EXEC amount")}}async getFreeSupply(){try{const t=this.contractCache.get("getFreeSupply",[]);if(null!==t)return t;const e=await this.executeContractCall("freeSupply"),r=this.formatExec(e);return this.contractCache.set("getFreeSupply",[],r),r}catch(t){throw this.wrapError(t,"Failed to get free supply")}}async getFreeMint(t){try{if(!t||"string"!=typeof t)throw new Error("Invalid address provided to getFreeMint");const e=this.contractCache.get("getFreeMint",[t]);if(null!==e)return e;const r=await this.executeContractCall("freeMint",[t]);return console.log("FREE MINT",r),this.contractCache.set("getFreeMint",[t],r),r}catch(t){throw this.wrapError(t,"Failed to get free mint")}}async getFreeSituation(t){try{const e=await this.getFreeMint(t),r=await this.getFreeSupply();return{freeMint:e,freeSupply:r}}catch(t){throw this.wrapError(t,"Failed to get free situation")}}async getUserNFTIds(t){try{return await this.executeContractCall("getOwnerTokens",[t])}catch(t){throw this.wrapError(t,"Failed to get user NFT IDs")}}async getTokenUri(t){try{return await this.executeContractCall("tokenURI",[t])}catch(t){throw this.wrapError(t,"Failed to get token URI")}}async getContractEthBalance(){try{const t=this.contractCache.get("getContractEthBalance",[]);if(null!==t)return t;const e=await this.provider.getBalance(this.contract.address),r=this.formatEther(e);return console.log("CONTRACT ETH BALANCE",r),this.contractCache.set("getContractEthBalance",[],r),r}catch(t){throw this.wrapError(t,"Failed to get contract ETH balance")}}async getUserNFTs(t){try{if(!t||"string"!=typeof t)throw new Error("Invalid address provided to getUserNFTs");return await this.executeContractCall("getOwnerTokens",[t])}catch(t){throw this.wrapError(t,"Failed to get user NFT IDs")}}async getNFTMetadata(t){try{const e=await this.executeContractCall("tokenURI",[t]);return console.log("NFT METADATA",e),e}catch(t){throw this.wrapError(t,"Failed to get NFT metadata")}}async getNFTMetadataBatch(t){try{const e=t.map(t=>this.executeContractCall("tokenURI",[t])),r=await Promise.all(e);return console.log("Batch NFT Metadata:",r),r}catch(t){throw this.wrapError(t,"Failed to get NFT metadata batch")}}async getUserNFTsWithMetadata(t,e=5){try{if(!t||"string"!=typeof t)throw new Error("Invalid address provided to getUserNFTsWithMetadata");const r=await this.getUserNFTs(t);if(!r||0===r.length)return[];const n=r.slice(0,e),i=await this.getNFTMetadataBatch(n),o=n.map((t,e)=>({tokenId:t,metadata:i[e]}));return console.log("NFTs with metadata:",o),o}catch(t){throw this.wrapError(t,"Failed to get user NFTs with metadata")}}async balanceMint(t){try{this.eventBus.emit("transaction:pending",{type:"mint"});const e=await this.executeContractCall("balanceMint",[t],{requiresSigner:!0});return this.eventBus.emit("transaction:success",{type:"mint",receipt:e,amount:t}),e}catch(t){throw this.eventBus.emit("transaction:error",{type:"mint",error:this.wrapError(t,"Failed to mint NFTs")}),t}}async transferNFT(t,e,r){try{this.eventBus.emit("transaction:pending",{type:"send"});const n=await this.executeContractCall("transferFrom",[t,e,r],{requiresSigner:!0,useContract:"mirror"});return this.eventBus.emit("transaction:success",{type:"send",receipt:n,tokenId:r,recipient:e}),n}catch(t){throw this.eventBus.emit("transaction:error",{type:"send",error:this.wrapError(t,"Failed to send NFT")}),t}}async getSkipNFT(t){try{return await this.executeContractCall("getSkipNFT",[t])}catch(t){throw this.wrapError(t,"Failed to get skipNFT status")}}async setSkipNFT(t){try{if(!this.signer)throw new Error("No wallet connected");this.eventBus.emit("transaction:pending",{type:"setSkipNFT",skipNFT:t});const e=await this.executeContractCall("setSkipNFT",[t],{requiresSigner:!0});return this.eventBus.emit("transaction:success",{type:"setSkipNFT",receipt:e,skipNFT:t}),e}catch(t){throw this.eventBus.emit("transaction:error",{type:"setSkipNFT",error:this.wrapError(t,"Failed to set skipNFT")}),t}}async transferTokensToSelf(t){try{if(!this.signer)throw new Error("No wallet connected");const e=await this.signer.getAddress();this.eventBus.emit("transaction:pending",{type:"reroll"});const r=await this.executeContractCall("transfer",[e,t],{requiresSigner:!0});return this.eventBus.emit("transaction:success",{type:"reroll",receipt:r,amount:t}),r}catch(t){throw this.eventBus.emit("transaction:error",{type:"reroll",error:this.wrapError(t,"Failed to re-roll NFTs")}),t}}parseEther(t){return kc(t).toString()}formatEther(t){return parseFloat(Ac(t))}parseExec(t){return Ec(t,18).toString()}formatExec(t){return parseFloat(bc(t,18))}async getToken0PriceInToken1(t){try{const e=new this.ethers.Contract(t,["function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast)"],this.provider,{useContract:"v2pool"}),[r,n]=await e.getReserves();return n/r}catch(t){throw this.wrapError(t,"Failed to get token0 price in terms of token1")}}async isToken0(t,e){try{const r=new this.ethers.Contract(t,["function token0() external view returns (address)","function token1() external view returns (address)"],this.provider,{useContract:"v2pool"});return(await r.token0()).toLowerCase()===e.toLowerCase()}catch(t){throw this.wrapError(t,"Failed to check if token is token0")}}async getApproval(t,e=null){try{if(!t)throw new Error("User address is required for approval check");let r;if(null===e)r=this.swapRouter.address||this.swapRouter;else if("string"==typeof e)r=e;else{if(!e||"object"!=typeof e||!e.address)throw new Error("Invalid target for approval check");r=e.address}console.log(`Checking allowance for ${t} to spend tokens at ${r}`);return(await this.executeContractCall("allowance",[t,r])).toString()}catch(t){throw this.wrapError(t,"Failed to get approval")}}async setApproval(t=null,e){try{let r;if(null===t)r=this.swapRouter.address;else if("string"==typeof t)r=t;else{if(!t||"object"!=typeof t||!t.address)throw new Error("Invalid target for approval");r=t.address}console.log(`Setting approval for ${r} to spend ${e} tokens`);const n=`tx_approve_${++this.transactionCounter}_${Date.now()}`,i={type:"approve",id:n,pending:!0};this.activeTransactions.set(n,i),console.log(`[BlockchainService] Emitting transaction:pending for approve ${n}`),this.eventBus.emit("transaction:pending",i);const o=await this.executeContractCall("approve",[r,e],{requiresSigner:!0}),s={type:"approve",id:n,receipt:o,amount:e};return this.activeTransactions.set(n,s),console.log(`[BlockchainService] Emitting transaction:success for ${n}`),this.eventBus.emit("transaction:success",s),o}catch(t){const e={type:"approve",id:`error_approve_${++this.transactionCounter}_${Date.now()}`,error:this.wrapError(t,"Failed to set approval")};throw console.log("[BlockchainService] Emitting transaction:error for approval error"),this.eventBus.emit("transaction:error",e),t}}async swapExactTokenForEthSupportingFeeOnTransferV2(t,e){try{const r=`tx_${++this.transactionCounter}_${Date.now()}`,n={type:"swap",id:r,pending:!0};this.activeTransactions.set(r,n),console.log(`[BlockchainService] Emitting transaction:pending for ${r}`),this.eventBus.emit("transaction:pending",n);const i=["0x185485bF2e26e0Da48149aee0A8032c8c2060Db2","0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"],o=t,s=Math.floor(Date.now()/1e3)+1200,a=(await this.executeContractCall("getAmountsOut",[e.amount,i],{useContract:"router"}))[1],l=BigInt(a)*BigInt(940)/BigInt(1e3);console.log("Sell transaction parameters:",{amountIn:e.amount.toString(),amountOutMin:l.toString(),path:i,txId:r});const c=await this.executeContractCall("swapExactTokensForETHSupportingFeeOnTransferTokens",[e.amount,l,i,o,s],{useContract:"router",requiresSigner:!0}),u={type:"swap",id:r,receipt:c,amount:e.amount};return this.activeTransactions.set(r,u),console.log(`[BlockchainService] Emitting transaction:success for ${r}`),this.eventBus.emit("transaction:success",u),setTimeout(()=>{this.activeTransactions.delete(r)},1e3),c}catch(t){const e={type:"swap",id:`error_${++this.transactionCounter}_${Date.now()}`,error:this.wrapError(t,"Failed to swap tokens for ETH")};throw console.log("[BlockchainService] Emitting transaction:error for error transaction"),this.eventBus.emit("transaction:error",e),t}}async swapExactEthForTokenSupportingFeeOnTransfer(t,e,r){try{const n=`tx_${++this.transactionCounter}_${Date.now()}`,i={type:"swap",id:n,pending:!0};this.activeTransactions.set(n,i),console.log(`[BlockchainService] Emitting transaction:pending for ${n}`),this.eventBus.emit("transaction:pending",i);const o=["0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2","0x185485bF2e26e0Da48149aee0A8032c8c2060Db2"],s=t,a=Math.floor(Date.now()/1e3)+1200,l=BigInt(e.amount)*BigInt(940)/BigInt(1e3);console.log("Buy transaction parameters:",{amountOutMin:l.toString(),ethValue:r.toString(),path:o,txId:n});const c=await this.executeContractCall("swapExactETHForTokensSupportingFeeOnTransferTokens",[l,o,s,a],{useContract:"router",requiresSigner:!0,txOptions:{value:r}}),u={type:"swap",id:n,receipt:c,amount:e.amount};return this.activeTransactions.set(n,u),console.log(`[BlockchainService] Emitting transaction:success for ${n}`),this.eventBus.emit("transaction:success",u),setTimeout(()=>{this.activeTransactions.delete(n)},1e3),c}catch(t){const e={type:"swap",id:`error_${++this.transactionCounter}_${Date.now()}`,error:this.wrapError(t,"Failed to swap ETH for tokens")};throw console.log("[BlockchainService] Emitting transaction:error for error transaction"),this.eventBus.emit("transaction:error",e),t}}async getCurrentBlockInfo(){try{const t=await this.provider.getBlockNumber(),e=await this.provider.getBlock(t);return{number:t,timestamp:e.timestamp,hash:e.hash,date:new Date(1e3*e.timestamp)}}catch(t){throw this.wrapError(t,"Failed to get current block info")}}},t.BondingCurve=Vc,t.ContractCache=class{constructor(t){if(!t)throw new Error("ContractCache requires an eventBus instance.");this.eventBus=t,this.cache=new Map,this.stats={hits:0,misses:0,invalidations:0,sets:0},this.defaultTTLs={price:5e3,balance:3e3,contractData:1e4,supply:1e4,metadata:6e4,tier:3e4,default:5e3},this.noCacheMethods=new Set(["executeContractCall","swapExactETHForTokens","swapExactTokensForETH","buy","sell","mint"]),this.setupEventListeners(),this.debug=!1}setupEventListeners(){this.eventBus.on("transaction:confirmed",()=>{this.invalidateByPattern("balance","price","contractData"),this.debug&&console.log("[ContractCache] Invalidated cache due to transaction confirmation")}),this.eventBus.on("account:changed",()=>{this.invalidateByPattern("balance"),this.debug&&console.log("[ContractCache] Invalidated cache due to account change")}),this.eventBus.on("network:changed",()=>{this.clear(),this.debug&&console.log("[ContractCache] Cleared cache due to network change")}),this.eventBus.on("contractData:updated",()=>{this.invalidateByPattern("contractData","price","supply"),this.debug&&console.log("[ContractCache] Invalidated cache due to contract data update")})}generateKey(t,e=[]){return`${t}:${e.length>0?JSON.stringify(e.map(t=>t&&"object"==typeof t&&t.toString?t.toString():t)):""}`}get(t,e=[]){if(this.noCacheMethods.has(t))return null;const r=this.generateKey(t,e),n=this.cache.get(r);return n?Date.now()>n.expiresAt?(this.cache.delete(r),this.stats.misses++,null):(n.accessCount++,this.stats.hits++,this.debug&&console.log(`[ContractCache] Cache HIT for ${t}`,e),n.value):(this.stats.misses++,null)}set(t,e=[],r,n=null){if(this.noCacheMethods.has(t))return;null===n&&(n=this.getTTLForMethod(t));const i=this.generateKey(t,e),o=Date.now()+n;this.cache.set(i,{value:r,expiresAt:o,accessCount:0,method:t,args:e,cachedAt:Date.now()}),this.stats.sets++,this.debug&&console.log(`[ContractCache] Cached ${t}`,e,`TTL: ${n}ms`)}getTTLForMethod(t){const e=t.toLowerCase();return e.includes("price")||e.includes("cost")?this.defaultTTLs.price:e.includes("balance")?this.defaultTTLs.balance:e.includes("supply")||e.includes("total")?this.defaultTTLs.supply:e.includes("metadata")||e.includes("uri")?this.defaultTTLs.metadata:e.includes("tier")||e.includes("merkle")||e.includes("proof")?this.defaultTTLs.tier:e.includes("contract")||e.includes("pool")||e.includes("liquidity")?this.defaultTTLs.contractData:this.defaultTTLs.default}invalidateByPattern(...t){let e=0;for(const[r,n]of this.cache.entries()){const i=n.method.toLowerCase();t.some(t=>i.includes(t.toLowerCase()))&&(this.cache.delete(r),e++)}this.stats.invalidations+=e,this.debug&&e>0&&console.log(`[ContractCache] Invalidated ${e} entries matching patterns:`,t)}invalidate(t,e=[]){const r=this.generateKey(t,e);this.cache.delete(r)&&(this.stats.invalidations++,this.debug&&console.log(`[ContractCache] Invalidated ${t}`,e))}clear(){const t=this.cache.size;this.cache.clear(),this.stats.invalidations+=t,this.debug&&console.log("[ContractCache] Cleared all cache")}getStats(){const t=this.stats.hits+this.stats.misses,e=t>0?(this.stats.hits/t*100).toFixed(2):0;return{...this.stats,hitRate:`${e}%`,cacheSize:this.cache.size,totalRequests:t}}async warmCache(t,e=[]){this.debug&&console.log("[ContractCache] Warming cache for methods:",e);const r=e.map(async e=>{try{return await t(e)}catch(t){return console.warn(`[ContractCache] Failed to warm cache for ${e}:`,t),null}});await Promise.all(r)}setDebug(t){this.debug=t}cleanup(){const t=Date.now();let e=0;for(const[r,n]of this.cache.entries())t>n.expiresAt&&(this.cache.delete(r),e++);return this.debug&&e>0&&console.log(`[ContractCache] Cleaned up ${e} expired entries`),e}},t.FloatingWalletButton=Oc,t.IpfsImage=Uc,t.IpfsService=Rc,t.MessagePopup=qc,t.PriceDisplay=Gc,t.PriceService=class{constructor(t,e,r=6e4){if(!t||!e)throw new Error("PriceService requires blockchainService and eventBus instances.");this._blockchainService=t,this.eventBus=e,this._cache=new Map,this._contractUpdateInterval=null,this._updateIntervalTime=r,this._cacheExpirationTime=3e5,this._updateDebounceTimeout=null,this._updateDebounceDelay=2e3,this._lastEmittedData=null,this.getCurrentPrice=this.getCurrentPrice.bind(this),this.startContractUpdates=this.startContractUpdates.bind(this),this.stopContractUpdates=this.stopContractUpdates.bind(this),this.debouncedUpdateContractData=this.debouncedUpdateContractData.bind(this)}initialize(t=null){console.log("PriceService: Fetching initial data immediately",t?`for address: ${t}`:"(no address yet)"),this.updateContractData(t).catch(t=>{console.error("Failed to fetch initial contract data:",t)}),this.startContractUpdates(t)}async getCurrentPrice(){try{if(!this._blockchainService)throw new Error("PriceService not initialized");const t=this._getCacheValue("currentPrice");if(null!==t)return t;const e=await this._blockchainService.getTokenPrice();if("number"!=typeof e||isNaN(e)||e<=0)throw console.error("Invalid price value:",e),new Error("Invalid price value received");return this._setCacheValue("currentPrice",e),this.eventBus.emit("price:updated",{price:e}),e}catch(t){throw console.error("Error fetching price:",t),t}}async calculateCost(t){try{if(!this._blockchainService)throw new Error("PriceService not initialized");return await this._blockchainService.calculateCost(t)}catch(t){throw console.error("Error calculating cost:",t),t}}async updateContractData(t=null){try{const e=[this._blockchainService.getCurrentPrice(),this._blockchainService.getTotalBondingSupply(),this._blockchainService.getTotalMessages(),this._blockchainService.getNFTSupply(),this._blockchainService.getFreeSupply(),this._blockchainService.getContractEthBalance(),this._blockchainService.getCurrentTier(),this._blockchainService.getLiquidityPool()];t&&e.push(this._blockchainService.getEthBalance(t),this._blockchainService.getTokenBalance(t),this._blockchainService.getNFTBalance(t),this._blockchainService.getFreeMint(t));const[r,n,i,o,s,a,l,c,u,h,d,f]=await Promise.all(e),p={totalBondingSupply:n,currentPrice:r,totalMessages:i,totalNFTs:o,freeSupply:s,freeMint:void 0!==f&&f,contractEthBalance:a,currentTier:l,liquidityPool:c},m={eth:u||"0",exec:h||"0",nfts:d||0},g=!this._lastEmittedData||JSON.stringify(this._lastEmittedData.contractData)!==JSON.stringify(p),v=!this._lastEmittedData||JSON.stringify(this._lastEmittedData.balances)!==JSON.stringify(m);g&&this.eventBus.emit("contractData:updated",p),v&&this.eventBus.emit("balances:updated",m),this._lastEmittedData&&this._lastEmittedData.contractData.currentPrice===r||this.eventBus.emit("price:updated",{price:r}),this._lastEmittedData={contractData:p,balances:m}}catch(t){console.error("Error updating contract data:",t),this.eventBus.emit("price:error",{error:t.message})}}startContractUpdates(){this.stopContractUpdates(),this.debouncedUpdateContractData(),this._contractUpdateInterval=setInterval(()=>{this.debouncedUpdateContractData()},this._updateIntervalTime)}stopContractUpdates(){this._contractUpdateInterval&&(clearInterval(this._contractUpdateInterval),this._contractUpdateInterval=null)}_setCacheValue(t,e){this._cache.set(t,{value:e,timestamp:Date.now()})}debouncedUpdateContractData(t=null){this._updateDebounceTimeout&&clearTimeout(this._updateDebounceTimeout),this._updateDebounceTimeout=setTimeout(()=>{this.updateContractData(t).catch(t=>{console.error("Failed to update contract data:",t)})},this._updateDebounceDelay)}},t.SwapButton=Kc,t.SwapInputs=jc,t.SwapInterface=Wc,t.TransactionOptions=Lc,t.WalletButton=class extends Oc{constructor(t){super(t),this.modalRoot=null}async showWalletModal(){const t=this.walletService?.providerMap||{rabby:()=>window.ethereum?.isRabby?window.ethereum:null,rainbow:()=>window.ethereum?.isRainbow?window.ethereum:null,phantom:()=>window.phantom?.ethereum||null,metamask:()=>window.ethereum||null},e=this.walletService?.walletIcons||{rabby:"/public/wallets/rabby.webp",rainbow:"/public/wallets/rainbow.webp",phantom:"/public/wallets/phantom.webp",metamask:"/public/wallets/MetaMask.webp"};this.walletModal||(this.walletModal=new Dc({providerMap:t,walletIcons:e,onWalletSelected:async t=>{await this.handleWalletSelection(t)}}),this.modalRoot||(this.modalRoot=document.createElement("div"),document.body.appendChild(this.modalRoot)),this.walletModal.mount(this.modalRoot)),this.walletModal.show()}onUnmount(){this.modalRoot?.parentNode&&(this.modalRoot.parentNode.removeChild(this.modalRoot),this.modalRoot=null),super.onUnmount()}render(){if(this.state.loading)return'\n <div class="floating-wallet-button loading">\n <div class="wallet-spinner"></div>\n </div>\n ';const{walletConnected:t,address:e,balance:r,menuOpen:n}=this.state;if(!t)return'\n <div class="floating-wallet-button disconnected" data-ref="wallet-button">\n <button class="wallet-btn" data-ref="connect-btn">\n <span class="wallet-mark"></span>\n <span class="wallet-text">Connect Wallet</span>\n </button>\n </div>\n ';const i=`${e.slice(0,6)}...${e.slice(-4)}`,o=["floating-wallet-button","connected"];n&&o.push("menu-open");const s=`\n <div class="${o.join(" ")}" data-ref="wallet-button">\n <button class="wallet-btn" data-ref="wallet-btn" title="${this.escapeHtml(e)}\nBalance: ${r} ETH">\n <span class="wallet-mark wallet-mark--connected"></span>\n <span class="wallet-address">${this.escapeHtml(i)}</span>\n <span class="wallet-disconnect" data-ref="inline-disconnect" title="Disconnect">⏏︎</span>\n </button>\n ${this.renderWalletPanel(e,r,n)}\n </div>\n `;return this.minifyHtml(s)}events(){return{...super.events?.()||{},'click [data-ref="inline-disconnect"]':t=>this.handleInlineDisconnect(t),'click [data-ref="wallet-btn"]':t=>this.handleWalletToggle(t),'click [data-ref="connect-btn"]':t=>this.handleWalletToggle(t)}}renderWalletPanel(t,e,r){const n=`${t.slice(0,6)}...${t.slice(-4)}`,i=`\n <div class="wallet-info-panel" data-ref="wallet-panel" aria-hidden="${r?"false":"true"}">\n <div class="wallet-info-row">\n <span class="wallet-info-label">Address</span>\n <span class="wallet-info-value">${this.escapeHtml(n)}</span>\n </div>\n <div class="wallet-info-row">\n <span class="wallet-info-label">ETH Balance</span>\n <span class="wallet-info-value">${e} ETH</span>\n </div>\n </div>\n `;return this.minifyHtml(i)}onStateUpdate(t,e){"function"==typeof super.onStateUpdate&&super.onStateUpdate(t,e),t&&t.menuOpen===e.menuOpen||(e.menuOpen?this.attachOutsideClickListener():this.detachOutsideClickListener())}attachOutsideClickListener(){this.outsideClickHandler||this.outsideClickTimeout||(this.outsideClickHandler=t=>{if(!this.element)return;const e="function"==typeof t.composedPath?t.composedPath():[];e.length&&e.includes(this.element)||t.target&&this.element.contains(t.target)||this.setState({menuOpen:!1})},this.outsideClickTimeout=window.setTimeout(()=>{document.addEventListener("click",this.outsideClickHandler),this.outsideClickTimeout=null},0))}detachOutsideClickListener(){this.outsideClickTimeout&&(window.clearTimeout(this.outsideClickTimeout),this.outsideClickTimeout=null),this.outsideClickHandler&&(document.removeEventListener("click",this.outsideClickHandler),this.outsideClickHandler=null)}setupDOMEventListeners(){}handleWalletToggle(t){this.handleButtonClick(t)}handleInlineDisconnect(t){t&&(t.preventDefault(),t.stopPropagation()),super.handleDisconnect(t)}minifyHtml(t){return"string"==typeof t?t.replace(/>\s+</g,"><").trim():t}},t.WalletModal=Fc,t.WalletService=class{constructor(t){if(!t)throw new Error("WalletService requires an eventBus instance.");this.eventBus=t,this.provider=null,this.signer=null,this.connectedAddress=null,this.selectedWallet=null,this.connected=!1,this.ethers=_c,this.isInitialized=!1,this.providerMap={rabby:()=>window.ethereum&&window.ethereum.isRabby?window.ethereum:null,rainbow:()=>window.ethereum&&window.ethereum.isRainbow?window.ethereum:window.rainbow||null,phantom:()=>window.phantom&&window.phantom.ethereum?window.phantom.ethereum:null,metamask:()=>(console.log("Checking for MetaMask with direct window.ethereum access"),window.ethereum||null)},this.walletIcons={rabby:"/public/wallets/rabby.webp",rainbow:"/public/wallets/rainbow.webp",phantom:"/public/wallets/phantom.webp",metamask:"/public/wallets/MetaMask.webp"}}async initialize(){try{return console.log("Initializing WalletService..."),void 0!==window.ethereum?(console.log("Found Ethereum provider"),this.eventBus.emit("wallet:detected"),this.isMetaMask=window.ethereum.isMetaMask,this.setupEventListeners()):(console.log("No Ethereum provider found"),this.eventBus.emit("wallet:notdetected")),this.isInitialized=!0,!0}catch(t){throw console.error("Error initializing WalletService:",t),t}}formatError(t,e=""){if("string"==typeof t)return new Error(`${e}: ${t}`);if(t&&t.message){const r=this.getUserFriendlyErrorMessage(t,e),n=new Error(r);return n.code=t.code,n.originalError=t,n}return new Error(`${e}: Unknown error`)}getUserFriendlyErrorMessage(t,e){const r=t.message||"Unknown error";return 4001===t.code?"Connection request rejected by user":4902===t.code?"Network needs to be added to your wallet":r.includes("redefine property")||r.includes("which has only a getter")?"Wallet conflict detected. Please disable all wallet extensions except the one you want to use, then refresh.":r.includes("user rejected")?"Connection rejected by user":r.includes("already pending")?"A wallet request is already pending, please check your wallet":e?`${e}: ${r}`:r}getAvailableWallets(){const t={};console.log("Checking for available wallets..."),window.ethereum?console.log("window.ethereum is available"):console.log("window.ethereum is not available");for(const[e,r]of Object.entries(this.providerMap))try{console.log(`Checking for ${e} wallet...`);const n=r();n?(console.log(`Found ${e} wallet`),t[e]={name:e,icon:this.walletIcons[e],provider:n}):console.log(`${e} wallet not detected`)}catch(t){console.warn(`Error detecting ${e} wallet:`,t)}return 0===Object.keys(t).length&&window.ethereum?(console.log("No specific wallets detected, but window.ethereum exists. Adding MetaMask as fallback."),t.metamask={name:"metamask",icon:this.walletIcons.metamask,provider:window.ethereum}):!t.metamask&&window.ethereum&&(console.log("window.ethereum exists. Adding MetaMask option regardless of detection."),t.metamask={name:"metamask",icon:this.walletIcons.metamask,provider:window.ethereum}),console.log("Available wallets:",Object.keys(t)),t}async selectWallet(t){try{if(this.cleanup(),!this.providerMap[t])throw new Error(`Unsupported wallet: ${t}`);const e=this.providerMap[t]();if(!e)throw new Error(`${t} not detected. Please install it first.`);return this.selectedWallet=t,this.provider=e,this.setupEventListeners(),this.eventBus.emit("wallet:selected",{type:t,provider:e}),t}catch(t){const e=this.formatError(t,"Wallet selection failed");throw this.eventBus.emit("wallet:error",e),e}}setupEventListeners(){if(this.provider){try{this.provider.removeListener("chainChanged",this.handleNetworkChange),this.provider.removeListener("accountsChanged",this.handleAccountChange)}catch(t){}this.provider.on("chainChanged",()=>this.handleNetworkChange()),this.provider.on("accountsChanged",t=>this.handleAccountChange(t))}}cleanup(){if(this.provider)try{this.provider.removeListener("chainChanged",this.handleNetworkChange),this.provider.removeListener("accountsChanged",this.handleAccountChange)}catch(t){}this.provider=null,this.signer=null,this.connectedAddress=null,this.connected=!1,this.ethersProvider=null}async connect(){try{if(!this.selectedWallet||!this.provider)throw new Error("Please select a wallet first");let t;this.eventBus.emit("wallet:connecting"),console.log(`Attempting to connect to ${this.selectedWallet}...`);try{if(await new Promise(t=>setTimeout(t,500)),"phantom"===this.selectedWallet&&window.phantom&&window.phantom.ethereum)console.log("Using phantom-specific connection method"),t=await window.phantom.ethereum.request({method:"eth_requestAccounts"});else{console.log(`Using standard connection method for ${this.selectedWallet}`);try{const t=await this.provider.request({method:"eth_accounts"});console.log("Existing accounts:",t),t&&0!==t.length||console.log("No existing accounts found, requesting user approval...")}catch(t){console.warn("Error checking existing accounts:",t)}t=await this.provider.request({method:"eth_requestAccounts",params:[]})}}catch(t){throw console.error("Error requesting accounts:",t),t&&4001===t.code?this.formatError(t,"Wallet connection rejected"):t&&t.message&&t.message.includes("wallet must has at least one account")?new Error("Your wallet has no accounts. Please create at least one account in your wallet and try again."):t}if(console.log("Accounts received:",t),!t||!t[0])throw new Error("No accounts found. Please unlock your wallet and make sure you have at least one account set up.");return this.connectedAddress=t[0],this.connected=!0,console.log(`Successfully connected to account: ${this.connectedAddress}`),this.selectedWallet&&localStorage.setItem("ms2fun_lastWallet",this.selectedWallet),this.ethersProvider=new lc(this.provider,"any"),this.signer=this.ethersProvider.getSigner(),this.eventBus.emit("wallet:connected",{address:this.connectedAddress,walletType:this.selectedWallet,provider:this.provider,ethersProvider:this.ethersProvider,signer:this.signer}),this.connectedAddress}catch(t){if(console.error("Wallet connection error:",t),t.message&&(t.message.includes("at least one account")||t.message.includes("wallet must has")||t.message.includes("no accounts"))){const e=new Error("Your wallet has no accounts. Please create at least one account in your wallet and try again.");throw e.code=t.code,e.originalError=t,this.eventBus.emit("wallet:error",e),e}const e=this.formatError(t,"Wallet connection failed");throw this.eventBus.emit("wallet:error",e),e}}async switchNetwork(t){try{if(!this.provider)throw new Error("No wallet connected");const e=`0x${Number(t).toString(16)}`;this.eventBus.emit("network:switching",{to:t,automatic:!1});try{return await this.provider.request({method:"wallet_switchEthereumChain",params:[{chainId:e}]}),this.ethersProvider=new lc(this.provider,"any"),this.signer=this.ethersProvider.getSigner(),this.eventBus.emit("network:switched",{to:t,success:!0}),!0}catch(t){throw 4902===t.code?new Error("Network needs to be added first"):t}}catch(e){const r=this.formatError(e,"Network switch failed");throw this.eventBus.emit("network:switch:error",{from:null,to:t,error:r.message,originalError:e}),this.eventBus.emit("network:switched",{to:t,success:!1,error:r.message}),r}}getAddress(){return this.connectedAddress}isConnected(){return this.connected&&!!this.connectedAddress}getProviderAndSigner(){return{provider:this.ethersProvider,signer:this.signer}}handleNetworkChange(){this.provider&&(this.ethersProvider=new lc(this.provider,"any"),this.signer=this.ethersProvider.getSigner())}handleAccountChange(t){t&&Array.isArray(t)&&(0===t.length?(this.connected=!1,this.connectedAddress=null,this.eventBus.emit("wallet:disconnected")):t[0]!==this.connectedAddress&&(this.connectedAddress=t[0],this.eventBus.emit("wallet:changed",{address:t[0]})))}async disconnect(){this.cleanup(),this.eventBus.emit("wallet:disconnected")}}});
9
+ */var Zt=(Yt||(Yt=1,function(t){!function(){var e="input is invalid type",n="object"==typeof window,i=n?window:{};i.JS_SHA3_NO_WINDOW&&(n=!1);var s=!n&&"object"==typeof self;!i.JS_SHA3_NO_NODE_JS&&"object"==typeof process&&process.versions&&process.versions.node?i=r:s&&(i=self);var o=!i.JS_SHA3_NO_COMMON_JS&&t.exports,a=!i.JS_SHA3_NO_ARRAY_BUFFER&&"undefined"!=typeof ArrayBuffer,l="0123456789abcdef".split(""),c=[4,1024,262144,67108864],h=[0,8,16,24],u=[1,0,32898,0,32906,2147483648,2147516416,2147483648,32907,0,2147483649,0,2147516545,2147483648,32777,2147483648,138,0,136,0,2147516425,0,2147483658,0,2147516555,0,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,2147483648,32778,0,2147483658,2147483648,2147516545,2147483648,32896,2147483648,2147483649,0,2147516424,2147483648],d=[224,256,384,512],f=[128,256],p=["hex","buffer","arrayBuffer","array","digest"],m={128:168,256:136};!i.JS_SHA3_NO_NODE_JS&&Array.isArray||(Array.isArray=function(t){return"[object Array]"===Object.prototype.toString.call(t)}),!a||!i.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW&&ArrayBuffer.isView||(ArrayBuffer.isView=function(t){return"object"==typeof t&&t.buffer&&t.buffer.constructor===ArrayBuffer});for(var g=function(t,e,r){return function(n){return new N(t,e,t).update(n)[r]()}},y=function(t,e,r){return function(n,i){return new N(t,e,i).update(n)[r]()}},v=function(t,e,r){return function(e,n,i,s){return k["cshake"+t].update(e,n,i,s)[r]()}},w=function(t,e,r){return function(e,n,i,s){return k["kmac"+t].update(e,n,i,s)[r]()}},b=function(t,e,r,n){for(var i=0;i<p.length;++i){var s=p[i];t[s]=e(r,n,s)}return t},E=function(t,e){var r=g(t,e,"hex");return r.create=function(){return new N(t,e,t)},r.update=function(t){return r.create().update(t)},b(r,g,t,e)},A=[{name:"keccak",padding:[1,256,65536,16777216],bits:d,createMethod:E},{name:"sha3",padding:[6,1536,393216,100663296],bits:d,createMethod:E},{name:"shake",padding:[31,7936,2031616,520093696],bits:f,createMethod:function(t,e){var r=y(t,e,"hex");return r.create=function(r){return new N(t,e,r)},r.update=function(t,e){return r.create(e).update(t)},b(r,y,t,e)}},{name:"cshake",padding:c,bits:f,createMethod:function(t,e){var r=m[t],n=v(t,0,"hex");return n.create=function(n,i,s){return i||s?new N(t,e,n).bytepad([i,s],r):k["shake"+t].create(n)},n.update=function(t,e,r,i){return n.create(e,r,i).update(t)},b(n,v,t,e)}},{name:"kmac",padding:c,bits:f,createMethod:function(t,e){var r=m[t],n=w(t,0,"hex");return n.create=function(n,i,s){return new B(t,e,i).bytepad(["KMAC",s],r).bytepad([n],r)},n.update=function(t,e,r,i){return n.create(t,r,i).update(e)},b(n,w,t,e)}}],k={},S=[],C=0;C<A.length;++C)for(var x=A[C],_=x.bits,I=0;I<_.length;++I){var T=x.name+"_"+_[I];if(S.push(T),k[T]=x.createMethod(_[I],x.padding),"sha3"!==x.name){var P=x.name+_[I];S.push(P),k[P]=k[T]}}function N(t,e,r){this.blocks=[],this.s=[],this.padding=e,this.outputBits=r,this.reset=!0,this.finalized=!1,this.block=0,this.start=0,this.blockCount=1600-(t<<1)>>5,this.byteCount=this.blockCount<<2,this.outputBlocks=r>>5,this.extraBytes=(31&r)>>3;for(var n=0;n<50;++n)this.s[n]=0}function B(t,e,r){N.call(this,t,e,r)}N.prototype.update=function(t){if(this.finalized)throw new Error("finalize already called");var r,n=typeof t;if("string"!==n){if("object"!==n)throw new Error(e);if(null===t)throw new Error(e);if(a&&t.constructor===ArrayBuffer)t=new Uint8Array(t);else if(!(Array.isArray(t)||a&&ArrayBuffer.isView(t)))throw new Error(e);r=!0}for(var i,s,o=this.blocks,l=this.byteCount,c=t.length,u=this.blockCount,d=0,f=this.s;d<c;){if(this.reset)for(this.reset=!1,o[0]=this.block,i=1;i<u+1;++i)o[i]=0;if(r)for(i=this.start;d<c&&i<l;++d)o[i>>2]|=t[d]<<h[3&i++];else for(i=this.start;d<c&&i<l;++d)(s=t.charCodeAt(d))<128?o[i>>2]|=s<<h[3&i++]:s<2048?(o[i>>2]|=(192|s>>6)<<h[3&i++],o[i>>2]|=(128|63&s)<<h[3&i++]):s<55296||s>=57344?(o[i>>2]|=(224|s>>12)<<h[3&i++],o[i>>2]|=(128|s>>6&63)<<h[3&i++],o[i>>2]|=(128|63&s)<<h[3&i++]):(s=65536+((1023&s)<<10|1023&t.charCodeAt(++d)),o[i>>2]|=(240|s>>18)<<h[3&i++],o[i>>2]|=(128|s>>12&63)<<h[3&i++],o[i>>2]|=(128|s>>6&63)<<h[3&i++],o[i>>2]|=(128|63&s)<<h[3&i++]);if(this.lastByteIndex=i,i>=l){for(this.start=i-l,this.block=o[u],i=0;i<u;++i)f[i]^=o[i];M(f),this.reset=!0}else this.start=i}return this},N.prototype.encode=function(t,e){var r=255&t,n=1,i=[r];for(r=255&(t>>=8);r>0;)i.unshift(r),r=255&(t>>=8),++n;return e?i.push(n):i.unshift(n),this.update(i),i.length},N.prototype.encodeString=function(t){var r,n=typeof t;if("string"!==n){if("object"!==n)throw new Error(e);if(null===t)throw new Error(e);if(a&&t.constructor===ArrayBuffer)t=new Uint8Array(t);else if(!(Array.isArray(t)||a&&ArrayBuffer.isView(t)))throw new Error(e);r=!0}var i=0,s=t.length;if(r)i=s;else for(var o=0;o<t.length;++o){var l=t.charCodeAt(o);l<128?i+=1:l<2048?i+=2:l<55296||l>=57344?i+=3:(l=65536+((1023&l)<<10|1023&t.charCodeAt(++o)),i+=4)}return i+=this.encode(8*i),this.update(t),i},N.prototype.bytepad=function(t,e){for(var r=this.encode(e),n=0;n<t.length;++n)r+=this.encodeString(t[n]);var i=e-r%e,s=[];return s.length=i,this.update(s),this},N.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var t=this.blocks,e=this.lastByteIndex,r=this.blockCount,n=this.s;if(t[e>>2]|=this.padding[3&e],this.lastByteIndex===this.byteCount)for(t[0]=t[r],e=1;e<r+1;++e)t[e]=0;for(t[r-1]|=2147483648,e=0;e<r;++e)n[e]^=t[e];M(n)}},N.prototype.toString=N.prototype.hex=function(){this.finalize();for(var t,e=this.blockCount,r=this.s,n=this.outputBlocks,i=this.extraBytes,s=0,o=0,a="";o<n;){for(s=0;s<e&&o<n;++s,++o)t=r[s],a+=l[t>>4&15]+l[15&t]+l[t>>12&15]+l[t>>8&15]+l[t>>20&15]+l[t>>16&15]+l[t>>28&15]+l[t>>24&15];o%e===0&&(M(r),s=0)}return i&&(t=r[s],a+=l[t>>4&15]+l[15&t],i>1&&(a+=l[t>>12&15]+l[t>>8&15]),i>2&&(a+=l[t>>20&15]+l[t>>16&15])),a},N.prototype.arrayBuffer=function(){this.finalize();var t,e=this.blockCount,r=this.s,n=this.outputBlocks,i=this.extraBytes,s=0,o=0,a=this.outputBits>>3;t=i?new ArrayBuffer(n+1<<2):new ArrayBuffer(a);for(var l=new Uint32Array(t);o<n;){for(s=0;s<e&&o<n;++s,++o)l[o]=r[s];o%e===0&&M(r)}return i&&(l[s]=r[s],t=t.slice(0,a)),t},N.prototype.buffer=N.prototype.arrayBuffer,N.prototype.digest=N.prototype.array=function(){this.finalize();for(var t,e,r=this.blockCount,n=this.s,i=this.outputBlocks,s=this.extraBytes,o=0,a=0,l=[];a<i;){for(o=0;o<r&&a<i;++o,++a)t=a<<2,e=n[o],l[t]=255&e,l[t+1]=e>>8&255,l[t+2]=e>>16&255,l[t+3]=e>>24&255;a%r===0&&M(n)}return s&&(t=a<<2,e=n[o],l[t]=255&e,s>1&&(l[t+1]=e>>8&255),s>2&&(l[t+2]=e>>16&255)),l},B.prototype=new N,B.prototype.finalize=function(){return this.encode(this.outputBits,!0),N.prototype.finalize.call(this)};var M=function(t){var e,r,n,i,s,o,a,l,c,h,d,f,p,m,g,y,v,w,b,E,A,k,S,C,x,_,I,T,P,N,B,M,R,F,O,D,L,U,q,z,j,G,H,W,K,$,V,J,Q,Y,X,Z,tt,et,rt,nt,it,st,ot,at,lt,ct,ht;for(n=0;n<48;n+=2)i=t[0]^t[10]^t[20]^t[30]^t[40],s=t[1]^t[11]^t[21]^t[31]^t[41],o=t[2]^t[12]^t[22]^t[32]^t[42],a=t[3]^t[13]^t[23]^t[33]^t[43],l=t[4]^t[14]^t[24]^t[34]^t[44],c=t[5]^t[15]^t[25]^t[35]^t[45],h=t[6]^t[16]^t[26]^t[36]^t[46],d=t[7]^t[17]^t[27]^t[37]^t[47],e=(f=t[8]^t[18]^t[28]^t[38]^t[48])^(o<<1|a>>>31),r=(p=t[9]^t[19]^t[29]^t[39]^t[49])^(a<<1|o>>>31),t[0]^=e,t[1]^=r,t[10]^=e,t[11]^=r,t[20]^=e,t[21]^=r,t[30]^=e,t[31]^=r,t[40]^=e,t[41]^=r,e=i^(l<<1|c>>>31),r=s^(c<<1|l>>>31),t[2]^=e,t[3]^=r,t[12]^=e,t[13]^=r,t[22]^=e,t[23]^=r,t[32]^=e,t[33]^=r,t[42]^=e,t[43]^=r,e=o^(h<<1|d>>>31),r=a^(d<<1|h>>>31),t[4]^=e,t[5]^=r,t[14]^=e,t[15]^=r,t[24]^=e,t[25]^=r,t[34]^=e,t[35]^=r,t[44]^=e,t[45]^=r,e=l^(f<<1|p>>>31),r=c^(p<<1|f>>>31),t[6]^=e,t[7]^=r,t[16]^=e,t[17]^=r,t[26]^=e,t[27]^=r,t[36]^=e,t[37]^=r,t[46]^=e,t[47]^=r,e=h^(i<<1|s>>>31),r=d^(s<<1|i>>>31),t[8]^=e,t[9]^=r,t[18]^=e,t[19]^=r,t[28]^=e,t[29]^=r,t[38]^=e,t[39]^=r,t[48]^=e,t[49]^=r,m=t[0],g=t[1],$=t[11]<<4|t[10]>>>28,V=t[10]<<4|t[11]>>>28,T=t[20]<<3|t[21]>>>29,P=t[21]<<3|t[20]>>>29,at=t[31]<<9|t[30]>>>23,lt=t[30]<<9|t[31]>>>23,G=t[40]<<18|t[41]>>>14,H=t[41]<<18|t[40]>>>14,F=t[2]<<1|t[3]>>>31,O=t[3]<<1|t[2]>>>31,y=t[13]<<12|t[12]>>>20,v=t[12]<<12|t[13]>>>20,J=t[22]<<10|t[23]>>>22,Q=t[23]<<10|t[22]>>>22,N=t[33]<<13|t[32]>>>19,B=t[32]<<13|t[33]>>>19,ct=t[42]<<2|t[43]>>>30,ht=t[43]<<2|t[42]>>>30,et=t[5]<<30|t[4]>>>2,rt=t[4]<<30|t[5]>>>2,D=t[14]<<6|t[15]>>>26,L=t[15]<<6|t[14]>>>26,w=t[25]<<11|t[24]>>>21,b=t[24]<<11|t[25]>>>21,Y=t[34]<<15|t[35]>>>17,X=t[35]<<15|t[34]>>>17,M=t[45]<<29|t[44]>>>3,R=t[44]<<29|t[45]>>>3,C=t[6]<<28|t[7]>>>4,x=t[7]<<28|t[6]>>>4,nt=t[17]<<23|t[16]>>>9,it=t[16]<<23|t[17]>>>9,U=t[26]<<25|t[27]>>>7,q=t[27]<<25|t[26]>>>7,E=t[36]<<21|t[37]>>>11,A=t[37]<<21|t[36]>>>11,Z=t[47]<<24|t[46]>>>8,tt=t[46]<<24|t[47]>>>8,W=t[8]<<27|t[9]>>>5,K=t[9]<<27|t[8]>>>5,_=t[18]<<20|t[19]>>>12,I=t[19]<<20|t[18]>>>12,st=t[29]<<7|t[28]>>>25,ot=t[28]<<7|t[29]>>>25,z=t[38]<<8|t[39]>>>24,j=t[39]<<8|t[38]>>>24,k=t[48]<<14|t[49]>>>18,S=t[49]<<14|t[48]>>>18,t[0]=m^~y&w,t[1]=g^~v&b,t[10]=C^~_&T,t[11]=x^~I&P,t[20]=F^~D&U,t[21]=O^~L&q,t[30]=W^~$&J,t[31]=K^~V&Q,t[40]=et^~nt&st,t[41]=rt^~it&ot,t[2]=y^~w&E,t[3]=v^~b&A,t[12]=_^~T&N,t[13]=I^~P&B,t[22]=D^~U&z,t[23]=L^~q&j,t[32]=$^~J&Y,t[33]=V^~Q&X,t[42]=nt^~st&at,t[43]=it^~ot&lt,t[4]=w^~E&k,t[5]=b^~A&S,t[14]=T^~N&M,t[15]=P^~B&R,t[24]=U^~z&G,t[25]=q^~j&H,t[34]=J^~Y&Z,t[35]=Q^~X&tt,t[44]=st^~at&ct,t[45]=ot^~lt&ht,t[6]=E^~k&m,t[7]=A^~S&g,t[16]=N^~M&C,t[17]=B^~R&x,t[26]=z^~G&F,t[27]=j^~H&O,t[36]=Y^~Z&W,t[37]=X^~tt&K,t[46]=at^~ct&et,t[47]=lt^~ht&rt,t[8]=k^~m&y,t[9]=S^~g&v,t[18]=M^~C&_,t[19]=R^~x&I,t[28]=G^~F&D,t[29]=H^~O&L,t[38]=Z^~W&$,t[39]=tt^~K&V,t[48]=ct^~et&nt,t[49]=ht^~rt&it,t[0]^=u[n],t[1]^=u[n+1]};if(o)t.exports=k;else for(C=0;C<S.length;++C)i[S[C]]=k[S[C]]}()}(Xt)),Xt.exports),te=n(Zt);function ee(t){return"0x"+te.keccak_256(C(t))}const re=new v("rlp/5.8.0");function ne(t){const e=[];for(;t;)e.unshift(255&t),t>>=8;return e}function ie(t,e,r){let n=0;for(let i=0;i<r;i++)n=256*n+t[e+i];return n}function se(t){if(Array.isArray(t)){let e=[];if(t.forEach(function(t){e=e.concat(se(t))}),e.length<=55)return e.unshift(192+e.length),e;const r=ne(e.length);return r.unshift(247+r.length),r.concat(e)}A(t)||re.throwArgumentError("RLP object must be BytesLike","object",t);const e=Array.prototype.slice.call(C(t));if(1===e.length&&e[0]<=127)return e;if(e.length<=55)return e.unshift(128+e.length),e;const r=ne(e.length);return r.unshift(183+r.length),r.concat(e)}function oe(t){return N(se(t))}function ae(t,e,r,n){const i=[];for(;r<e+1+n;){const s=le(t,r);i.push(s.result),(r+=s.consumed)>e+1+n&&re.throwError("child data too short",v.errors.BUFFER_OVERRUN,{})}return{consumed:1+n,result:i}}function le(t,e){if(0===t.length&&re.throwError("data too short",v.errors.BUFFER_OVERRUN,{}),t[e]>=248){const r=t[e]-247;e+1+r>t.length&&re.throwError("data short segment too short",v.errors.BUFFER_OVERRUN,{});const n=ie(t,e+1,r);return e+1+r+n>t.length&&re.throwError("data long segment too short",v.errors.BUFFER_OVERRUN,{}),ae(t,e,e+1+r,r+n)}if(t[e]>=192){const r=t[e]-192;return e+1+r>t.length&&re.throwError("data array too short",v.errors.BUFFER_OVERRUN,{}),ae(t,e,e+1,r)}if(t[e]>=184){const r=t[e]-183;e+1+r>t.length&&re.throwError("data array too short",v.errors.BUFFER_OVERRUN,{});const n=ie(t,e+1,r);e+1+r+n>t.length&&re.throwError("data array too short",v.errors.BUFFER_OVERRUN,{});return{consumed:1+r+n,result:N(t.slice(e+1+r,e+1+r+n))}}if(t[e]>=128){const r=t[e]-128;e+1+r>t.length&&re.throwError("data too short",v.errors.BUFFER_OVERRUN,{});return{consumed:1+r,result:N(t.slice(e+1,e+1+r))}}return{consumed:1,result:N(t[e])}}function ce(t){const e=C(t),r=le(e,0);return r.consumed!==e.length&&re.throwArgumentError("invalid rlp data","data",t),r.result}var he=Object.freeze({__proto__:null,decode:ce,encode:oe});const ue=new v("address/5.8.0");function de(t){T(t,20)||ue.throwArgumentError("invalid address","address",t);const e=(t=t.toLowerCase()).substring(2).split(""),r=new Uint8Array(40);for(let t=0;t<40;t++)r[t]=e[t].charCodeAt(0);const n=C(ee(r));for(let t=0;t<40;t+=2)n[t>>1]>>4>=8&&(e[t]=e[t].toUpperCase()),(15&n[t>>1])>=8&&(e[t+1]=e[t+1].toUpperCase());return"0x"+e.join("")}const fe={};for(let t=0;t<10;t++)fe[String(t)]=String(t);for(let t=0;t<26;t++)fe[String.fromCharCode(65+t)]=String(10+t);const pe=Math.floor((me=9007199254740991,Math.log10?Math.log10(me):Math.log(me)/Math.LN10));var me;function ge(t){let e=(t=(t=t.toUpperCase()).substring(4)+t.substring(0,2)+"00").split("").map(t=>fe[t]).join("");for(;e.length>=pe;){let t=e.substring(0,pe);e=parseInt(t,10)%97+e.substring(t.length)}let r=String(98-parseInt(e,10)%97);for(;r.length<2;)r="0"+r;return r}function ye(t){let e=null;if("string"!=typeof t&&ue.throwArgumentError("invalid address","address",t),t.match(/^(0x)?[0-9a-fA-F]{40}$/))"0x"!==t.substring(0,2)&&(t="0x"+t),e=de(t),t.match(/([A-F].*[a-f])|([a-f].*[A-F])/)&&e!==t&&ue.throwArgumentError("bad address checksum","address",t);else if(t.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)){for(t.substring(2,4)!==ge(t)&&ue.throwArgumentError("bad icap checksum","address",t),r=t.substring(4),e=new z(r,36).toString(16);e.length<40;)e="0"+e;e=de("0x"+e)}else ue.throwArgumentError("invalid address","address",t);var r;return e}function ve(t){let e=null;try{e=ye(t.from)}catch(e){ue.throwArgumentError("missing from address","transaction",t)}return ye(M(ee(oe([e,_(C(K.from(t.nonce).toHexString()))])),12))}class we extends Vt{constructor(t){super("address","address",t,!1)}defaultValue(){return"0x0000000000000000000000000000000000000000"}encode(t,e){try{e=ye(e)}catch(t){this._throwError(t.message,e)}return t.writeValue(e)}decode(t){return ye(D(t.readValue().toHexString(),20))}}class be extends Vt{constructor(t){super(t.name,t.type,void 0,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)}}const Ee=new v(At);function Ae(t,e,r){let n=null;if(Array.isArray(r))n=r;else if(r&&"object"==typeof r){let t={};n=e.map(e=>{const n=e.localName;return n||Ee.throwError("cannot encode object for signature with missing names",v.errors.INVALID_ARGUMENT,{argument:"values",coder:e,value:r}),t[n]&&Ee.throwError("cannot encode object for signature with duplicate names",v.errors.INVALID_ARGUMENT,{argument:"values",coder:e,value:r}),t[n]=!0,r[n]})}else Ee.throwArgumentError("invalid tuple value","tuple",r);e.length!==n.length&&Ee.throwArgumentError("types/value length mismatch","tuple",r);let i=new Jt(t.wordSize),s=new Jt(t.wordSize),o=[];e.forEach((t,e)=>{let r=n[e];if(t.dynamic){let e=s.length;t.encode(s,r);let n=i.writeUpdatableValue();o.push(t=>{n(t+e)})}else t.encode(i,r)}),o.forEach(t=>{t(i.length)});let a=t.appendWriter(i);return a+=t.appendWriter(s),a}function ke(t,e){let r=[],n=t.subReader(0);e.forEach(e=>{let i=null;if(e.dynamic){let r=t.readValue(),s=n.subReader(r.toNumber());try{i=e.decode(s)}catch(t){if(t.code===v.errors.BUFFER_OVERRUN)throw t;i=t,i.baseType=e.name,i.name=e.localName,i.type=e.type}}else try{i=e.decode(t)}catch(t){if(t.code===v.errors.BUFFER_OVERRUN)throw t;i=t,i.baseType=e.name,i.name=e.localName,i.type=e.type}null!=i&&r.push(i)});const i=e.reduce((t,e)=>{const r=e.localName;return r&&(t[r]||(t[r]=0),t[r]++),t},{});e.forEach((t,e)=>{let n=t.localName;if(!n||1!==i[n])return;if("length"===n&&(n="_length"),null!=r[n])return;const s=r[e];s instanceof Error?Object.defineProperty(r,n,{enumerable:!0,get:()=>{throw s}}):r[n]=s});for(let t=0;t<r.length;t++){const e=r[t];e instanceof Error&&Object.defineProperty(r,t,{enumerable:!0,get:()=>{throw e}})}return Object.freeze(r)}class Se extends Vt{constructor(t,e,r){super("array",t.type+"["+(e>=0?e:"")+"]",r,-1===e||t.dynamic),this.coder=t,this.length=e}defaultValue(){const t=this.coder.defaultValue(),e=[];for(let r=0;r<this.length;r++)e.push(t);return e}encode(t,e){Array.isArray(e)||this._throwError("expected array value",e);let r=this.length;-1===r&&(r=e.length,t.writeValue(e.length)),Ee.checkArgumentCount(e.length,r,"coder array"+(this.localName?" "+this.localName:""));let n=[];for(let t=0;t<e.length;t++)n.push(this.coder);return Ae(t,n,e)}decode(t){let e=this.length;-1===e&&(e=t.readValue().toNumber(),32*e>t._data.length&&Ee.throwError("insufficient data length",v.errors.BUFFER_OVERRUN,{length:t._data.length,count:e}));let r=[];for(let t=0;t<e;t++)r.push(new be(this.coder));return t.coerce(this.name,ke(t,r))}}class Ce extends Vt{constructor(t){super("bool","bool",t,!1)}defaultValue(){return!1}encode(t,e){return t.writeValue(e?1:0)}decode(t){return t.coerce(this.type,!t.readValue().isZero())}}class xe extends Vt{constructor(t,e){super(t,t,e,!0)}defaultValue(){return"0x"}encode(t,e){e=C(e);let r=t.writeValue(e.length);return r+=t.writeBytes(e),r}decode(t){return t.readBytes(t.readValue().toNumber(),!0)}}class _e extends xe{constructor(t){super("bytes",t)}decode(t){return t.coerce(this.name,N(super.decode(t)))}}class Ie extends Vt{constructor(t,e){let r="bytes"+String(t);super(r,r,e,!1),this.size=t}defaultValue(){return"0x0000000000000000000000000000000000000000000000000000000000000000".substring(0,2+2*this.size)}encode(t,e){let r=C(e);return r.length!==this.size&&this._throwError("incorrect data length",e),t.writeBytes(r)}decode(t){return t.coerce(this.name,N(t.readBytes(this.size)))}}class Te extends Vt{constructor(t){super("null","",t,!1)}defaultValue(){return null}encode(t,e){return null!=e&&this._throwError("not null",e),t.writeBytes([])}decode(t){return t.readBytes(0),t.coerce(this.name,null)}}const Pe="0x0000000000000000000000000000000000000000",Ne=K.from(-1),Be=K.from(0),Me=K.from(1),Re=K.from(2),Fe=K.from("1000000000000000000"),Oe=K.from("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),De=K.from("-0x8000000000000000000000000000000000000000000000000000000000000000"),Le=K.from("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),Ue="0x0000000000000000000000000000000000000000000000000000000000000000";var qe=Object.freeze({__proto__:null,AddressZero:Pe,EtherSymbol:"Ξ",HashZero:Ue,MaxInt256:Le,MaxUint256:Oe,MinInt256:De,NegativeOne:Ne,One:Me,Two:Re,WeiPerEther:Fe,Zero:Be});class ze extends Vt{constructor(t,e,r){const n=(e?"int":"uint")+8*t;super(n,n,r,!1),this.size=t,this.signed=e}defaultValue(){return 0}encode(t,e){let r=K.from(e),n=Oe.mask(8*t.wordSize);if(this.signed){let t=n.mask(8*this.size-1);(r.gt(t)||r.lt(t.add(Me).mul(Ne)))&&this._throwError("value out-of-bounds",e)}else(r.lt(Be)||r.gt(n.mask(8*this.size)))&&this._throwError("value out-of-bounds",e);return r=r.toTwos(8*this.size).mask(8*this.size),this.signed&&(r=r.fromTwos(8*this.size).toTwos(8*t.wordSize)),t.writeValue(r)}decode(t){let e=t.readValue().mask(8*this.size);return this.signed&&(e=e.fromTwos(8*this.size)),t.coerce(this.name,e)}}const je=new v("strings/5.8.0");var Ge,He;function We(t,e,r,n,i){if(t===He.BAD_PREFIX||t===He.UNEXPECTED_CONTINUE){let t=0;for(let n=e+1;n<r.length&&r[n]>>6==2;n++)t++;return t}return t===He.OVERRUN?r.length-e-1:0}!function(t){t.current="",t.NFC="NFC",t.NFD="NFD",t.NFKC="NFKC",t.NFKD="NFKD"}(Ge||(Ge={})),function(t){t.UNEXPECTED_CONTINUE="unexpected continuation byte",t.BAD_PREFIX="bad codepoint prefix",t.OVERRUN="string overrun",t.MISSING_CONTINUE="missing continuation byte",t.OUT_OF_RANGE="out of UTF-8 range",t.UTF16_SURROGATE="UTF-16 surrogate",t.OVERLONG="overlong representation"}(He||(He={}));const Ke=Object.freeze({error:function(t,e,r,n,i){return je.throwArgumentError(`invalid codepoint at offset ${e}; ${t}`,"bytes",r)},ignore:We,replace:function(t,e,r,n,i){return t===He.OVERLONG?(n.push(i),0):(n.push(65533),We(t,e,r))}});function $e(t,e){null==e&&(e=Ke.error),t=C(t);const r=[];let n=0;for(;n<t.length;){const i=t[n++];if(!(i>>7)){r.push(i);continue}let s=null,o=null;if(192==(224&i))s=1,o=127;else if(224==(240&i))s=2,o=2047;else{if(240!=(248&i)){n+=e(128==(192&i)?He.UNEXPECTED_CONTINUE:He.BAD_PREFIX,n-1,t,r);continue}s=3,o=65535}if(n-1+s>=t.length){n+=e(He.OVERRUN,n-1,t,r);continue}let a=i&(1<<8-s-1)-1;for(let i=0;i<s;i++){let i=t[n];if(128!=(192&i)){n+=e(He.MISSING_CONTINUE,n,t,r),a=null;break}a=a<<6|63&i,n++}null!==a&&(a>1114111?n+=e(He.OUT_OF_RANGE,n-1-s,t,r,a):a>=55296&&a<=57343?n+=e(He.UTF16_SURROGATE,n-1-s,t,r,a):a<=o?n+=e(He.OVERLONG,n-1-s,t,r,a):r.push(a))}return r}function Ve(t,e=Ge.current){e!=Ge.current&&(je.checkNormalize(),t=t.normalize(e));let r=[];for(let e=0;e<t.length;e++){const n=t.charCodeAt(e);if(n<128)r.push(n);else if(n<2048)r.push(n>>6|192),r.push(63&n|128);else if(55296==(64512&n)){e++;const i=t.charCodeAt(e);if(e>=t.length||56320!=(64512&i))throw new Error("invalid utf-8 string");const s=65536+((1023&n)<<10)+(1023&i);r.push(s>>18|240),r.push(s>>12&63|128),r.push(s>>6&63|128),r.push(63&s|128)}else r.push(n>>12|224),r.push(n>>6&63|128),r.push(63&n|128)}return C(r)}function Je(t){const e="0000"+t.toString(16);return"\\u"+e.substring(e.length-4)}function Qe(t){return t.map(t=>t<=65535?String.fromCharCode(t):(t-=65536,String.fromCharCode(55296+(t>>10&1023),56320+(1023&t)))).join("")}function Ye(t,e){return Qe($e(t,e))}function Xe(t,e=Ge.current){return $e(Ve(t,e))}function Ze(t,e){e||(e=function(t){return[parseInt(t,16)]});let r=0,n={};return t.split(",").forEach(t=>{let i=t.split(":");r+=parseInt(i[0],16),n[r]=e(i[1])}),n}function tr(t){let e=0;return t.split(",").map(t=>{let r=t.split("-");1===r.length?r[1]="0":""===r[1]&&(r[1]="1");let n=e+parseInt(r[0],16);return e=parseInt(r[1],16),{l:n,h:e}})}function er(t,e){let r=0;for(let n=0;n<e.length;n++){let i=e[n];if(r+=i.l,t>=r&&t<=r+i.h&&(t-r)%(i.d||1)===0){if(i.e&&-1!==i.e.indexOf(t-r))continue;return i}}return null}const rr=tr("221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d"),nr="ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff".split(",").map(t=>parseInt(t,16)),ir=[{h:25,s:32,l:65},{h:30,s:32,e:[23],l:127},{h:54,s:1,e:[48],l:64,d:2},{h:14,s:1,l:57,d:2},{h:44,s:1,l:17,d:2},{h:10,s:1,e:[2,6,8],l:61,d:2},{h:16,s:1,l:68,d:2},{h:84,s:1,e:[18,24,66],l:19,d:2},{h:26,s:32,e:[17],l:435},{h:22,s:1,l:71,d:2},{h:15,s:80,l:40},{h:31,s:32,l:16},{h:32,s:1,l:80,d:2},{h:52,s:1,l:42,d:2},{h:12,s:1,l:55,d:2},{h:40,s:1,e:[38],l:15,d:2},{h:14,s:1,l:48,d:2},{h:37,s:48,l:49},{h:148,s:1,l:6351,d:2},{h:88,s:1,l:160,d:2},{h:15,s:16,l:704},{h:25,s:26,l:854},{h:25,s:32,l:55915},{h:37,s:40,l:1247},{h:25,s:-119711,l:53248},{h:25,s:-119763,l:52},{h:25,s:-119815,l:52},{h:25,s:-119867,e:[1,4,5,7,8,11,12,17],l:52},{h:25,s:-119919,l:52},{h:24,s:-119971,e:[2,7,8,17],l:52},{h:24,s:-120023,e:[2,7,13,15,16,17],l:52},{h:25,s:-120075,l:52},{h:25,s:-120127,l:52},{h:25,s:-120179,l:52},{h:25,s:-120231,l:52},{h:25,s:-120283,l:52},{h:25,s:-120335,l:52},{h:24,s:-119543,e:[17],l:56},{h:24,s:-119601,e:[17],l:58},{h:24,s:-119659,e:[17],l:58},{h:24,s:-119717,e:[17],l:58},{h:24,s:-119775,e:[17],l:58}],sr=Ze("b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3"),or=Ze("179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7"),ar=Ze("df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D",function(t){if(t.length%4!=0)throw new Error("bad data");let e=[];for(let r=0;r<t.length;r+=4)e.push(parseInt(t.substring(r,r+4),16));return e}),lr=tr("80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001");class cr extends xe{constructor(t){super("string",t)}defaultValue(){return""}encode(t,e){return super.encode(t,Ve(e))}decode(t){return Ye(super.decode(t))}}class hr extends Vt{constructor(t,e){let r=!1;const n=[];t.forEach(t=>{t.dynamic&&(r=!0),n.push(t.type)});super("tuple","tuple("+n.join(",")+")",e,r),this.coders=t}defaultValue(){const t=[];this.coders.forEach(e=>{t.push(e.defaultValue())});const e=this.coders.reduce((t,e)=>{const r=e.localName;return r&&(t[r]||(t[r]=0),t[r]++),t},{});return this.coders.forEach((r,n)=>{let i=r.localName;i&&1===e[i]&&("length"===i&&(i="_length"),null==t[i]&&(t[i]=t[n]))}),Object.freeze(t)}encode(t,e){return Ae(t,this.coders,e)}decode(t){return t.coerce(this.name,ke(t,this.coders))}}const ur=new v(At),dr=new RegExp(/^bytes([0-9]*)$/),fr=new RegExp(/^(u?int)([0-9]*)$/);class pr{constructor(t){dt(this,"coerceFunc",t||null)}_getCoder(t){switch(t.baseType){case"address":return new we(t.name);case"bool":return new Ce(t.name);case"string":return new cr(t.name);case"bytes":return new _e(t.name);case"array":return new Se(this._getCoder(t.arrayChildren),t.arrayLength,t.name);case"tuple":return new hr((t.components||[]).map(t=>this._getCoder(t)),t.name);case"":return new Te(t.name)}let e=t.type.match(fr);if(e){let r=parseInt(e[2]||"256");return(0===r||r>256||r%8!=0)&&ur.throwArgumentError("invalid "+e[1]+" bit length","param",t),new ze(r/8,"int"===e[1],t.name)}if(e=t.type.match(dr),e){let r=parseInt(e[1]);return(0===r||r>32)&&ur.throwArgumentError("invalid bytes length","param",t),new Ie(r,t.name)}return ur.throwArgumentError("invalid type","type",t.type)}_getWordSize(){return 32}_getReader(t,e){return new Qt(t,this._getWordSize(),this.coerceFunc,e)}_getWriter(){return new Jt(this._getWordSize())}getDefaultValue(t){const e=t.map(t=>this._getCoder(Nt.from(t)));return new hr(e,"_").defaultValue()}encode(t,e){t.length!==e.length&&ur.throwError("types/values length mismatch",v.errors.INVALID_ARGUMENT,{count:{types:t.length,values:e.length},value:{types:t,values:e}});const r=t.map(t=>this._getCoder(Nt.from(t))),n=new hr(r,"_"),i=this._getWriter();return n.encode(i,e),i.data}decode(t,e,r){const n=t.map(t=>this._getCoder(Nt.from(t)));return new hr(n,"_").decode(this._getReader(C(e),r))}}const mr=new pr;function gr(t){return ee(Ve(t))}const yr="hash/5.8.0";function vr(t){t=atob(t);const e=[];for(let r=0;r<t.length;r++)e.push(t.charCodeAt(r));return C(e)}function wr(t){t=C(t);let e="";for(let r=0;r<t.length;r++)e+=String.fromCharCode(t[r]);return btoa(e)}var br=Object.freeze({__proto__:null,decode:vr,encode:wr});function Er(t,e){null==e&&(e=1);const r=[],n=r.forEach,i=function(t,e){n.call(t,function(t){e>0&&Array.isArray(t)?i(t,e-1):r.push(t)})};return i(t,e),r}function Ar(t){return function(t){let e=0;return()=>t[e++]}(function(t){let e=0;function r(){return t[e++]<<8|t[e++]}let n=r(),i=1,s=[0,1];for(let t=1;t<n;t++)s.push(i+=r());let o=r(),a=e;e+=o;let l=0,c=0;function h(){return 0==l&&(c=c<<8|t[e++],l=8),c>>--l&1}const u=Math.pow(2,31),d=u>>>1,f=d>>1,p=u-1;let m=0;for(let t=0;t<31;t++)m=m<<1|h();let g=[],y=0,v=u;for(;;){let t=Math.floor(((m-y+1)*i-1)/v),e=0,r=n;for(;r-e>1;){let n=e+r>>>1;t<s[n]?r=n:e=n}if(0==e)break;g.push(e);let o=y+Math.floor(v*s[e]/i),a=y+Math.floor(v*s[e+1]/i)-1;for(;0==((o^a)&d);)m=m<<1&p|h(),o=o<<1&p,a=a<<1&p|1;for(;o&~a&f;)m=m&d|m<<1&p>>>1|h(),o=o<<1^d,a=(a^d)<<1|d|1;y=o,v=1+a-o}let w=n-4;return g.map(e=>{switch(e-w){case 3:return w+65792+(t[a++]<<16|t[a++]<<8|t[a++]);case 2:return w+256+(t[a++]<<8|t[a++]);case 1:return w+t[a++];default:return e-1}})}(t))}function kr(t){return 1&t?~t>>1:t>>1}function Sr(t,e){let r=Array(t);for(let n=0,i=-1;n<t;n++)r[n]=i+=1+e();return r}function Cr(t,e){let r=Array(t);for(let n=0,i=0;n<t;n++)r[n]=i+=kr(e());return r}function xr(t,e){let r=Sr(t(),t),n=t(),i=Sr(n,t),s=function(t,e){let r=Array(t);for(let n=0;n<t;n++)r[n]=1+e();return r}(n,t);for(let t=0;t<n;t++)for(let e=0;e<s[t];e++)r.push(i[t]+e);return e?r.map(t=>e[t]):r}function _r(t,e,r){let n=Array(t).fill(void 0).map(()=>[]);for(let i=0;i<e;i++)Cr(t,r).forEach((t,e)=>n[e].push(t));return n}function Ir(t,e){let r=1+e(),n=e(),i=function(t){let e=[];for(;;){let r=t();if(0==r)break;e.push(r)}return e}(e);return Er(_r(i.length,1+t,e).map((t,e)=>{const s=t[0],o=t.slice(1);return Array(i[e]).fill(void 0).map((t,e)=>{let i=e*n;return[s+e*r,o.map(t=>t+i)]})}))}function Tr(t,e){return _r(1+e(),1+t,e).map(t=>[t[0],t.slice(1)])}const Pr=Ar(vr("AEQF2AO2DEsA2wIrAGsBRABxAN8AZwCcAEwAqgA0AGwAUgByADcATAAVAFYAIQAyACEAKAAYAFgAGwAjABQAMAAmADIAFAAfABQAKwATACoADgAbAA8AHQAYABoAGQAxADgALAAoADwAEwA9ABMAGgARAA4ADwAWABMAFgAIAA8AHgQXBYMA5BHJAS8JtAYoAe4AExozi0UAH21tAaMnBT8CrnIyhrMDhRgDygIBUAEHcoFHUPe8AXBjAewCjgDQR8IICIcEcQLwATXCDgzvHwBmBoHNAqsBdBcUAykgDhAMShskMgo8AY8jqAQfAUAfHw8BDw87MioGlCIPBwZCa4ELatMAAMspJVgsDl8AIhckSg8XAHdvTwBcIQEiDT4OPhUqbyECAEoAS34Aej8Ybx83JgT/Xw8gHxZ/7w8RICxPHA9vBw+Pfw8PHwAPFv+fAsAvCc8vEr8ivwD/EQ8Bol8OEBa/A78hrwAPCU8vESNvvwWfHwNfAVoDHr+ZAAED34YaAdJPAK7PLwSEgDLHAGo1Pz8Pvx9fUwMrpb8O/58VTzAPIBoXIyQJNF8hpwIVAT8YGAUADDNBaX3RAMomJCg9EhUeA29MABsZBTMNJipjOhc19gcIDR8bBwQHEggCWi6DIgLuAQYA+BAFCha3A5XiAEsqM7UFFgFLhAMjFTMYE1Klnw74nRVBG/ASCm0BYRN/BrsU3VoWy+S0vV8LQx+vN8gF2AC2AK5EAWwApgYDKmAAroQ0NDQ0AT+OCg7wAAIHRAbpNgVcBV0APTA5BfbPFgMLzcYL/QqqA82eBALKCjQCjqYCht0/k2+OAsXQAoP3ASTKDgDw6ACKAUYCMpIKJpRaAE4A5womABzZvs0REEKiACIQAd5QdAECAj4Ywg/wGqY2AVgAYADYvAoCGAEubA0gvAY2ALAAbpbvqpyEAGAEpgQAJgAG7gAgAEACmghUFwCqAMpAINQIwC4DthRAAPcycKgApoIdABwBfCisABoATwBqASIAvhnSBP8aH/ECeAKXAq40NjgDBTwFYQU6AXs3oABgAD4XNgmcCY1eCl5tIFZeUqGgyoNHABgAEQAaABNwWQAmABMATPMa3T34ADldyprmM1M2XociUQgLzvwAXT3xABgAEQAaABNwIGFAnADD8AAgAD4BBJWzaCcIAIEBFMAWwKoAAdq9BWAF5wLQpALEtQAKUSGkahR4GnJM+gsAwCgeFAiUAECQ0BQuL8AAIAAAADKeIheclvFqQAAETr4iAMxIARMgAMIoHhQIAn0E0pDQFC4HhznoAAAAIAI2C0/4lvFqQAAETgBJJwYCAy4ABgYAFAA8MBKYEH4eRhTkAjYeFcgACAYAeABsOqyQ5gRwDayqugEgaIIAtgoACgDmEABmBAWGme5OBJJA2m4cDeoAmITWAXwrMgOgAGwBCh6CBXYF1Tzg1wKAAFdiuABRAFwAXQBsAG8AdgBrAHYAbwCEAHEwfxQBVE5TEQADVFhTBwBDANILAqcCzgLTApQCrQL6vAAMAL8APLhNBKkE6glGKTAU4Dr4N2EYEwBCkABKk8rHAbYBmwIoAiU4Ajf/Aq4CowCAANIChzgaNBsCsTgeODcFXrgClQKdAqQBiQGYAqsCsjTsNHsfNPA0ixsAWTWiOAMFPDQSNCk2BDZHNow2TTZUNhk28Jk9VzI3QkEoAoICoQKwAqcAQAAxBV4FXbS9BW47YkIXP1ciUqs05DS/FwABUwJW11e6nHuYZmSh/RAYA8oMKvZ8KASoUAJYWAJ6ILAsAZSoqjpgA0ocBIhmDgDWAAawRDQoAAcuAj5iAHABZiR2AIgiHgCaAU68ACxuHAG0ygM8MiZIAlgBdF4GagJqAPZOHAMuBgoATkYAsABiAHgAMLoGDPj0HpKEBAAOJgAuALggTAHWAeAMEDbd20Uege0ADwAWADkAQgA9OHd+2MUQZBBhBgNNDkxxPxUQArEPqwvqERoM1irQ090ANK4H8ANYB/ADWANYB/AH8ANYB/ADWANYA1gDWBwP8B/YxRBkD00EcgWTBZAE2wiIJk4RhgctCNdUEnQjHEwDSgEBIypJITuYMxAlR0wRTQgIATZHbKx9PQNMMbBU+pCnA9AyVDlxBgMedhKlAC8PeCE1uk6DekxxpQpQT7NX9wBFBgASqwAS5gBJDSgAUCwGPQBI4zTYABNGAE2bAE3KAExdGABKaAbgAFBXAFCOAFBJABI2SWdObALDOq0//QomCZhvwHdTBkIQHCemEPgMNAG2ATwN7kvZBPIGPATKH34ZGg/OlZ0Ipi3eDO4m5C6igFsj9iqEBe5L9TzeC05RaQ9aC2YJ5DpkgU8DIgEOIowK3g06CG4Q9ArKbA3mEUYHOgPWSZsApgcCCxIdNhW2JhFirQsKOXgG/Br3C5AmsBMqev0F1BoiBk4BKhsAANAu6IWxWjJcHU9gBgQLJiPIFKlQIQ0mQLh4SRocBxYlqgKSQ3FKiFE3HpQh9zw+DWcuFFF9B/Y8BhlQC4I8n0asRQ8R0z6OPUkiSkwtBDaALDAnjAnQD4YMunxzAVoJIgmyDHITMhEYN8YIOgcaLpclJxYIIkaWYJsE+KAD9BPSAwwFQAlCBxQDthwuEy8VKgUOgSXYAvQ21i60ApBWgQEYBcwPJh/gEFFH4Q7qCJwCZgOEJewALhUiABginAhEZABgj9lTBi7MCMhqbSN1A2gU6GIRdAeSDlgHqBw0FcAc4nDJXgyGCSiksAlcAXYJmgFgBOQICjVcjKEgQmdUi1kYnCBiQUBd/QIyDGYVoES+h3kCjA9sEhwBNgF0BzoNAgJ4Ee4RbBCWCOyGBTW2M/k6JgRQIYQgEgooA1BszwsoJvoM+WoBpBJjAw00PnfvZ6xgtyUX/gcaMsZBYSHyC5NPzgydGsIYQ1QvGeUHwAP0GvQn60FYBgADpAQUOk4z7wS+C2oIjAlAAEoOpBgH2BhrCnKM0QEyjAG4mgNYkoQCcJAGOAcMAGgMiAV65gAeAqgIpAAGANADWAA6Aq4HngAaAIZCAT4DKDABIuYCkAOUCDLMAZYwAfQqBBzEDBYA+DhuSwLDsgKAa2ajBd5ZAo8CSjYBTiYEBk9IUgOwcuIA3ABMBhTgSAEWrEvMG+REAeBwLADIAPwABjYHBkIBzgH0bgC4AWALMgmjtLYBTuoqAIQAFmwB2AKKAN4ANgCA8gFUAE4FWvoF1AJQSgESMhksWGIBvAMgATQBDgB6BsyOpsoIIARuB9QCEBwV4gLvLwe2AgMi4BPOQsYCvd9WADIXUu5eZwqoCqdeaAC0YTQHMnM9UQAPH6k+yAdy/BZIiQImSwBQ5gBQQzSaNTFWSTYBpwGqKQK38AFtqwBI/wK37gK3rQK3sAK6280C0gK33AK3zxAAUEIAUD9SklKDArekArw5AEQAzAHCO147WTteO1k7XjtZO147WTteO1kDmChYI03AVU0oJqkKbV9GYewMpw3VRMk6ShPcYFJgMxPJLbgUwhXPJVcZPhq9JwYl5VUKDwUt1GYxCC00dhe9AEApaYNCY4ceMQpMHOhTklT5LRwAskujM7ANrRsWREEFSHXuYisWDwojAmSCAmJDXE6wXDchAqH4AmiZAmYKAp+FOBwMAmY8AmYnBG8EgAN/FAN+kzkHOXgYOYM6JCQCbB4CMjc4CwJtyAJtr/CLADRoRiwBaADfAOIASwYHmQyOAP8MwwAOtgJ3MAJ2o0ACeUxEAni7Hl3cRa9G9AJ8QAJ6yQJ9CgJ88UgBSH5kJQAsFklZSlwWGErNAtECAtDNSygDiFADh+dExpEzAvKiXQQDA69Lz0wuJgTQTU1NsAKLQAKK2cIcCB5EaAa4Ao44Ao5dQZiCAo7aAo5deVG1UzYLUtVUhgKT/AKTDQDqAB1VH1WwVdEHLBwplocy4nhnRTw6ApegAu+zWCKpAFomApaQApZ9nQCqWa1aCoJOADwClrYClk9cRVzSApnMApllXMtdCBoCnJw5wzqeApwXAp+cAp65iwAeEDIrEAKd8gKekwC2PmE1YfACntQCoG8BqgKeoCACnk+mY8lkKCYsAiewAiZ/AqD8AqBN2AKmMAKlzwKoAAB+AqfzaH1osgAESmodatICrOQCrK8CrWgCrQMCVx4CVd0CseLYAx9PbJgCsr4OArLpGGzhbWRtSWADJc4Ctl08QG6RAylGArhfArlIFgK5K3hwN3DiAr0aAy2zAzISAr6JcgMDM3ICvhtzI3NQAsPMAsMFc4N0TDZGdOEDPKgDPJsDPcACxX0CxkgCxhGKAshqUgLIRQLJUALJLwJkngLd03h6YniveSZL0QMYpGcDAmH1GfSVJXsMXpNevBICz2wCz20wTFTT9BSgAMeuAs90ASrrA04TfkwGAtwoAtuLAtJQA1JdA1NgAQIDVY2AikABzBfuYUZ2AILPg44C2sgC2d+EEYRKpz0DhqYAMANkD4ZyWvoAVgLfZgLeuXR4AuIw7RUB8zEoAfScAfLTiALr9ALpcXoAAur6AurlAPpIAboC7ooC652Wq5cEAu5AA4XhmHpw4XGiAvMEAGoDjheZlAL3FAORbwOSiAL3mQL52gL4Z5odmqy8OJsfA52EAv77ARwAOp8dn7QDBY4DpmsDptoA0sYDBmuhiaIGCgMMSgFgASACtgNGAJwEgLpoBgC8BGzAEowcggCEDC6kdjoAJAM0C5IKRoABZCgiAIzw3AYBLACkfng9ogigkgNmWAN6AEQCvrkEVqTGAwCsBRbAA+4iQkMCHR072jI2PTbUNsk2RjY5NvA23TZKNiU3EDcZN5I+RTxDRTBCJkK5VBYKFhZfwQCWygU3AJBRHpu+OytgNxa61A40GMsYjsn7BVwFXQVcBV0FaAVdBVwFXQVcBV0FXAVdBVwFXUsaCNyKAK4AAQUHBwKU7oICoW1e7jAEzgPxA+YDwgCkBFDAwADABKzAAOxFLhitA1UFTDeyPkM+bj51QkRCuwTQWWQ8X+0AWBYzsACNA8xwzAGm7EZ/QisoCTAbLDs6fnLfb8H2GccsbgFw13M1HAVkBW/Jxsm9CNRO8E8FDD0FBQw9FkcClOYCoMFegpDfADgcMiA2AJQACB8AsigKAIzIEAJKeBIApY5yPZQIAKQiHb4fvj5BKSRPQrZCOz0oXyxgOywfKAnGbgMClQaCAkILXgdeCD9IIGUgQj5fPoY+dT52Ao5CM0dAX9BTVG9SDzFwWTQAbxBzJF/lOEIQQglCCkKJIAls5AcClQICoKPMODEFxhi6KSAbiyfIRrMjtCgdWCAkPlFBIitCsEJRzAbMAV/OEyQzDg0OAQQEJ36i328/Mk9AybDJsQlq3tDRApUKAkFzXf1d/j9uALYP6hCoFgCTGD8kPsFKQiobrm0+zj0KSD8kPnVCRBwMDyJRTHFgMTJa5rwXQiQ2YfI/JD7BMEJEHGINTw4TOFlIRzwJO0icMQpyPyQ+wzJCRBv6DVgnKB01NgUKj2bwYzMqCoBkznBgEF+zYDIocwRIX+NgHj4HICNfh2C4CwdwFWpTG/lgUhYGAwRfv2Ts8mAaXzVgml/XYIJfuWC4HI1gUF9pYJZgMR6ilQHMAOwLAlDRefC0in4AXAEJA6PjCwc0IamOANMMCAECRQDFNRTZBgd+CwQlRA+r6+gLBDEFBnwUBXgKATIArwAGRAAHA3cDdAN2A3kDdwN9A3oDdQN7A30DfAN4A3oDfQAYEAAlAtYASwMAUAFsAHcKAHcAmgB3AHUAdQB2AHVu8UgAygDAAHcAdQB1AHYAdQALCgB3AAsAmgB3AAsCOwB3AAtu8UgAygDAAHgKAJoAdwB3AHUAdQB2AHUAeAB1AHUAdgB1bvFIAMoAwAALCgCaAHcACwB3AAsCOwB3AAtu8UgAygDAAH4ACwGgALcBpwC6AahdAu0COwLtbvFIAMoAwAALCgCaAu0ACwLtAAsCOwLtAAtu8UgAygDAA24ACwNvAAu0VsQAAzsAABCkjUIpAAsAUIusOggWcgMeBxVsGwL67U/2HlzmWOEeOgALASvuAAseAfpKUpnpGgYJDCIZM6YyARUE9ThqAD5iXQgnAJYJPnOzw0ZAEZxEKsIAkA4DhAHnTAIDxxUDK0lxCQlPYgIvIQVYJQBVqE1GakUAKGYiDToSBA1EtAYAXQJYAIF8GgMHRyAAIAjOe9YncekRAA0KACUrjwE7Ayc6AAYWAqaiKG4McEcqANoN3+Mg9TwCBhIkuCny+JwUQ29L008JluRxu3K+oAdqiHOqFH0AG5SUIfUJ5SxCGfxdipRzqTmT4V5Zb+r1Uo4Vm+NqSSEl2mNvR2JhIa8SpYO6ntdwFXHCWTCK8f2+Hxo7uiG3drDycAuKIMP5bhi06ACnqArH1rz4Rqg//lm6SgJGEVbF9xJHISaR6HxqxSnkw6shDnelHKNEfGUXSJRJ1GcsmtJw25xrZMDK9gXSm1/YMkdX4/6NKYOdtk/NQ3/NnDASjTc3fPjIjW/5sVfVObX2oTDWkr1dF9f3kxBsD3/3aQO8hPfRz+e0uEiJqt1161griu7gz8hDDwtpy+F+BWtefnKHZPAxcZoWbnznhJpy0e842j36bcNzGnIEusgGX0a8ZxsnjcSsPDZ09yZ36fCQbriHeQ72JRMILNl6ePPf2HWoVwgWAm1fb3V2sAY0+B6rAXqSwPBgseVmoqsBTSrm91+XasMYYySI8eeRxH3ZvHkMz3BQ5aJ3iUVbYPNM3/7emRtjlsMgv/9VyTsyt/mK+8fgWeT6SoFaclXqn42dAIsvAarF5vNNWHzKSkKQ/8Hfk5ZWK7r9yliOsooyBjRhfkHP4Q2DkWXQi6FG/9r/IwbmkV5T7JSopHKn1pJwm9tb5Ot0oyN1Z2mPpKXHTxx2nlK08fKk1hEYA8WgVVWL5lgx0iTv+KdojJeU23ZDjmiubXOxVXJKKi2Wjuh2HLZOFLiSC7Tls5SMh4f+Pj6xUSrNjFqLGehRNB8lC0QSLNmkJJx/wSG3MnjE9T1CkPwJI0wH2lfzwETIiVqUxg0dfu5q39Gt+hwdcxkhhNvQ4TyrBceof3Mhs/IxFci1HmHr4FMZgXEEczPiGCx0HRwzAqDq2j9AVm1kwN0mRVLWLylgtoPNapF5cY4Y1wJh/e0BBwZj44YgZrDNqvD/9Hv7GFYdUQeDJuQ3EWI4HaKqavU1XjC/n41kT4L79kqGq0kLhdTZvgP3TA3fS0ozVz+5piZsoOtIvBUFoMKbNcmBL6YxxaUAusHB38XrS8dQMnQwJfUUkpRoGr5AUeWicvBTzyK9g77+yCkf5PAysL7r/JjcZgrbvRpMW9iyaxZvKO6ceZN2EwIxKwVFPuvFuiEPGCoagbMo+SpydLrXqBzNCDGFCrO/rkcwa2xhokQZ5CdZ0AsU3JfSqJ6n5I14YA+P/uAgfhPU84Tlw7cEFfp7AEE8ey4sP12PTt4Cods1GRgDOB5xvyiR5m+Bx8O5nBCNctU8BevfV5A08x6RHd5jcwPTMDSZJOedIZ1cGQ704lxbAzqZOP05ZxaOghzSdvFBHYqomATARyAADK4elP8Ly3IrUZKfWh23Xy20uBUmLS4Pfagu9+oyVa2iPgqRP3F2CTUsvJ7+RYnN8fFZbU/HVvxvcFFDKkiTqV5UBZ3Gz54JAKByi9hkKMZJvuGgcSYXFmw08UyoQyVdfTD1/dMkCHXcTGAKeROgArsvmRrQTLUOXioOHGK2QkjHuoYFgXciZoTJd6Fs5q1QX1G+p/e26hYsEf7QZD1nnIyl/SFkNtYYmmBhpBrxl9WbY0YpHWRuw2Ll/tj9mD8P4snVzJl4F9J+1arVeTb9E5r2ILH04qStjxQNwn3m4YNqxmaNbLAqW2TN6LidwuJRqS+NXbtqxoeDXpxeGWmxzSkWxjkyCkX4NQRme6q5SAcC+M7+9ETfA/EwrzQajKakCwYyeunP6ZFlxU2oMEn1Pz31zeStW74G406ZJFCl1wAXIoUKkWotYEpOuXB1uVNxJ63dpJEqfxBeptwIHNrPz8BllZoIcBoXwgfJ+8VAUnVPvRvexnw0Ma/WiGYuJO5y8QTvEYBigFmhUxY5RqzE8OcywN/8m4UYrlaniJO75XQ6KSo9+tWHlu+hMi0UVdiKQp7NelnoZUzNaIyBPVeOwK6GNp+FfHuPOoyhaWuNvTYFkvxscMQWDh+zeFCFkgwbXftiV23ywJ4+uwRqmg9k3KzwIQpzppt8DBBOMbrqwQM5Gb05sEwdKzMiAqOloaA/lr0KA+1pr0/+HiWoiIjHA/wir2nIuS3PeU/ji3O6ZwoxcR1SZ9FhtLC5S0FIzFhbBWcGVP/KpxOPSiUoAdWUpqKH++6Scz507iCcxYI6rdMBICPJZea7OcmeFw5mObJSiqpjg2UoWNIs+cFhyDSt6geV5qgi3FunmwwDoGSMgerFOZGX1m0dMCYo5XOruxO063dwENK9DbnVM9wYFREzh4vyU1WYYJ/LRRp6oxgjqP/X5a8/4Af6p6NWkQferzBmXme0zY/4nwMJm/wd1tIqSwGz+E3xPEAOoZlJit3XddD7/BT1pllzOx+8bmQtANQ/S6fZexc6qi3W+Q2xcmXTUhuS5mpHQRvcxZUN0S5+PL9lXWUAaRZhEH8hTdAcuNMMCuVNKTEGtSUKNi3O6KhSaTzck8csZ2vWRZ+d7mW8c4IKwXIYd25S/zIftPkwPzufjEvOHWVD1m+FjpDVUTV0DGDuHj6QnaEwLu/dEgdLQOg9E1Sro9XHJ8ykLAwtPu+pxqKDuFexqON1sKQm7rwbE1E68UCfA/erovrTCG+DBSNg0l4goDQvZN6uNlbyLpcZAwj2UclycvLpIZMgv4yRlpb3YuMftozorbcGVHt/VeDV3+Fdf1TP0iuaCsPi2G4XeGhsyF1ubVDxkoJhmniQ0/jSg/eYML9KLfnCFgISWkp91eauR3IQvED0nAPXK+6hPCYs+n3+hCZbiskmVMG2da+0EsZPonUeIY8EbfusQXjsK/eFDaosbPjEfQS0RKG7yj5GG69M7MeO1HmiUYocgygJHL6M1qzUDDwUSmr99V7Sdr2F3JjQAJY+F0yH33Iv3+C9M38eML7gTgmNu/r2bUMiPvpYbZ6v1/IaESirBHNa7mPKn4dEmYg7v/+HQgPN1G79jBQ1+soydfDC2r+h2Bl/KIc5KjMK7OH6nb1jLsNf0EHVe2KBiE51ox636uyG6Lho0t3J34L5QY/ilE3mikaF4HKXG1mG1rCevT1Vv6GavltxoQe/bMrpZvRggnBxSEPEeEzkEdOxTnPXHVjUYdw8JYvjB/o7Eegc3Ma+NUxLLnsK0kJlinPmUHzHGtrk5+CAbVzFOBqpyy3QVUnzTDfC/0XD94/okH+OB+i7g9lolhWIjSnfIb+Eq43ZXOWmwvjyV/qqD+t0e+7mTEM74qP/Ozt8nmC7mRpyu63OB4KnUzFc074SqoyPUAgM+/TJGFo6T44EHnQU4X4z6qannVqgw/U7zCpwcmXV1AubIrvOmkKHazJAR55ePjp5tLBsN8vAqs3NAHdcEHOR2xQ0lsNAFzSUuxFQCFYvXLZJdOj9p4fNq6p0HBGUik2YzaI4xySy91KzhQ0+q1hjxvImRwPRf76tChlRkhRCi74NXZ9qUNeIwP+s5p+3m5nwPdNOHgSLD79n7O9m1n1uDHiMntq4nkYwV5OZ1ENbXxFd4PgrlvavZsyUO4MqYlqqn1O8W/I1dEZq5dXhrbETLaZIbC2Kj/Aa/QM+fqUOHdf0tXAQ1huZ3cmWECWSXy/43j35+Mvq9xws7JKseriZ1pEWKc8qlzNrGPUGcVgOa9cPJYIJsGnJTAUsEcDOEVULO5x0rXBijc1lgXEzQQKhROf8zIV82w8eswc78YX11KYLWQRcgHNJElBxfXr72lS2RBSl07qTKorO2uUDZr3sFhYsvnhLZn0A94KRzJ/7DEGIAhW5ZWFpL8gEwu1aLA9MuWZzNwl8Oze9Y+bX+v9gywRVnoB5I/8kXTXU3141yRLYrIOOz6SOnyHNy4SieqzkBXharjfjqq1q6tklaEbA8Qfm2DaIPs7OTq/nvJBjKfO2H9bH2cCMh1+5gspfycu8f/cuuRmtDjyqZ7uCIMyjdV3a+p3fqmXsRx4C8lujezIFHnQiVTXLXuI1XrwN3+siYYj2HHTvESUx8DlOTXpak9qFRK+L3mgJ1WsD7F4cu1aJoFoYQnu+wGDMOjJM3kiBQWHCcvhJ/HRdxodOQp45YZaOTA22Nb4XKCVxqkbwMYFhzYQYIAnCW8FW14uf98jhUG2zrKhQQ0q0CEq0t5nXyvUyvR8DvD69LU+g3i+HFWQMQ8PqZuHD+sNKAV0+M6EJC0szq7rEr7B5bQ8BcNHzvDMc9eqB5ZCQdTf80Obn4uzjwpYU7SISdtV0QGa9D3Wrh2BDQtpBKxaNFV+/Cy2P/Sv+8s7Ud0Fd74X4+o/TNztWgETUapy+majNQ68Lq3ee0ZO48VEbTZYiH1Co4OlfWef82RWeyUXo7woM03PyapGfikTnQinoNq5z5veLpeMV3HCAMTaZmA1oGLAn7XS3XYsz+XK7VMQsc4XKrmDXOLU/pSXVNUq8dIqTba///3x6LiLS6xs1xuCAYSfcQ3+rQgmu7uvf3THKt5Ooo97TqcbRqxx7EASizaQCBQllG/rYxVapMLgtLbZS64w1MDBMXX+PQpBKNwqUKOf2DDRDUXQf9EhOS0Qj4nTmlA8dzSLz/G1d+Ud8MTy/6ghhdiLpeerGY/UlDOfiuqFsMUU5/UYlP+BAmgRLuNpvrUaLlVkrqDievNVEAwF+4CoM1MZTmjxjJMsKJq+u8Zd7tNCUFy6LiyYXRJQ4VyvEQFFaCGKsxIwQkk7EzZ6LTJq2hUuPhvAW+gQnSG6J+MszC+7QCRHcnqDdyNRJ6T9xyS87A6MDutbzKGvGktpbXqtzWtXb9HsfK2cBMomjN9a4y+TaJLnXxAeX/HWzmf4cR4vALt/P4w4qgKY04ml4ZdLOinFYS6cup3G/1ie4+t1eOnpBNlqGqs75ilzkT4+DsZQxNvaSKJ//6zIbbk/M7LOhFmRc/1R+kBtz7JFGdZm/COotIdvQoXpTqP/1uqEUmCb/QWoGLMwO5ANcHzxdY48IGP5+J+zKOTBFZ4Pid+GTM+Wq12MV/H86xEJptBa6T+p3kgpwLedManBHC2GgNrFpoN2xnrMz9WFWX/8/ygSBkavq2Uv7FdCsLEYLu9LLIvAU0bNRDtzYl+/vXmjpIvuJFYjmI0im6QEYqnIeMsNjXG4vIutIGHijeAG/9EDBozKV5cldkHbLxHh25vT+ZEzbhXlqvpzKJwcEgfNwLAKFeo0/pvEE10XDB+EXRTXtSzJozQKFFAJhMxYkVaCW+E9AL7tMeU8acxidHqzb6lX4691UsDpy/LLRmT+epgW56+5Cw8tB4kMUv6s9lh3eRKbyGs+H/4mQMaYzPTf2OOdokEn+zzgvoD3FqNKk8QqGAXVsqcGdXrT62fSPkR2vROFi68A6se86UxRUk4cajfPyCC4G5wDhD+zNq4jodQ4u4n/m37Lr36n4LIAAsVr02dFi9AiwA81MYs2rm4eDlDNmdMRvEKRHfBwW5DdMNp0jPFZMeARqF/wL4XBfd+EMLBfMzpH5GH6NaW+1vrvMdg+VxDzatk3MXgO3ro3P/DpcC6+Mo4MySJhKJhSR01SGGGp5hPWmrrUgrv3lDnP+HhcI3nt3YqBoVAVTBAQT5iuhTg8nvPtd8ZeYj6w1x6RqGUBrSku7+N1+BaasZvjTk64RoIDlL8brpEcJx3OmY7jLoZsswdtmhfC/G21llXhITOwmvRDDeTTPbyASOa16cF5/A1fZAidJpqju3wYAy9avPR1ya6eNp9K8XYrrtuxlqi+bDKwlfrYdR0RRiKRVTLOH85+ZY7XSmzRpfZBJjaTa81VDcJHpZnZnSQLASGYW9l51ZV/h7eVzTi3Hv6hUsgc/51AqJRTkpbFVLXXszoBL8nBX0u/0jBLT8nH+fJePbrwURT58OY+UieRjd1vs04w0VG5VN2U6MoGZkQzKN/ptz0Q366dxoTGmj7i1NQGHi9GgnquXFYdrCfZBmeb7s0T6yrdlZH5cZuwHFyIJ/kAtGsTg0xH5taAAq44BAk1CPk9KVVbqQzrCUiFdF/6gtlPQ8bHHc1G1W92MXGZ5HEHftyLYs8mbD/9xYRUWkHmlM0zC2ilJlnNgV4bfALpQghxOUoZL7VTqtCHIaQSXm+YUMnpkXybnV+A6xlm2CVy8fn0Xlm2XRa0+zzOa21JWWmixfiPMSCZ7qA4rS93VN3pkpF1s5TonQjisHf7iU9ZGvUPOAKZcR1pbeVf/Ul7OhepGCaId9wOtqo7pJ7yLcBZ0pFkOF28y4zEI/kcUNmutBHaQpBdNM8vjCS6HZRokkeo88TBAjGyG7SR+6vUgTcyK9Imalj0kuxz0wmK+byQU11AiJFk/ya5dNduRClcnU64yGu/ieWSeOos1t3ep+RPIWQ2pyTYVbZltTbsb7NiwSi3AV+8KLWk7LxCnfZUetEM8ThnsSoGH38/nyAwFguJp8FjvlHtcWZuU4hPva0rHfr0UhOOJ/F6vS62FW7KzkmRll2HEc7oUq4fyi5T70Vl7YVIfsPHUCdHesf9Lk7WNVWO75JDkYbMI8TOW8JKVtLY9d6UJRITO8oKo0xS+o99Yy04iniGHAaGj88kEWgwv0OrHdY/nr76DOGNS59hXCGXzTKUvDl9iKpLSWYN1lxIeyywdNpTkhay74w2jFT6NS8qkjo5CxA1yfSYwp6AJIZNKIeEK5PJAW7ORgWgwp0VgzYpqovMrWxbu+DGZ6Lhie1RAqpzm8VUzKJOH3mCzWuTOLsN3VT/dv2eeYe9UjbR8YTBsLz7q60VN1sU51k+um1f8JxD5pPhbhSC8rRaB454tmh6YUWrJI3+GWY0qeWioj/tbkYITOkJaeuGt4JrJvHA+l0Gu7kY7XOaa05alMnRWVCXqFgLIwSY4uF59Ue5SU4QKuc/HamDxbr0x6csCetXGoP7Qn1Bk/J9DsynO/UD6iZ1Hyrz+jit0hDCwi/E9OjgKTbB3ZQKQ/0ZOvevfNHG0NK4Aj3Cp7NpRk07RT1i/S0EL93Ag8GRgKI9CfpajKyK6+Jj/PI1KO5/85VAwz2AwzP8FTBb075IxCXv6T9RVvWT2tUaqxDS92zrGUbWzUYk9mSs82pECH+fkqsDt93VW++4YsR/dHCYcQSYTO/KaBMDj9LSD/J/+z20Kq8XvZUAIHtm9hRPP3ItbuAu2Hm5lkPs92pd7kCxgRs0xOVBnZ13ccdA0aunrwv9SdqElJRC3g+oCu+nXyCgmXUs9yMjTMAIHfxZV+aPKcZeUBWt057Xo85Ks1Ir5gzEHCWqZEhrLZMuF11ziGtFQUds/EESajhagzcKsxamcSZxGth4UII+adPhQkUnx2WyN+4YWR+r3f8MnkyGFuR4zjzxJS8WsQYR5PTyRaD9ixa6Mh741nBHbzfjXHskGDq179xaRNrCIB1z1xRfWfjqw2pHc1zk9xlPpL8sQWAIuETZZhbnmL54rceXVNRvUiKrrqIkeogsl0XXb17ylNb0f4GA9Wd44vffEG8FSZGHEL2fbaTGRcSiCeA8PmA/f6Hz8HCS76fXUHwgwkzSwlI71ekZ7Fapmlk/KC+Hs8hUcw3N2LN5LhkVYyizYFl/uPeVP5lsoJHhhfWvvSWruCUW1ZcJOeuTbrDgywJ/qG07gZJplnTvLcYdNaH0KMYOYMGX+rB4NGPFmQsNaIwlWrfCezxre8zXBrsMT+edVLbLqN1BqB76JH4BvZTqUIMfGwPGEn+EnmTV86fPBaYbFL3DFEhjB45CewkXEAtJxk4/Ms2pPXnaRqdky0HOYdcUcE2zcXq4vaIvW2/v0nHFJH2XXe22ueDmq/18XGtELSq85j9X8q0tcNSSKJIX8FTuJF/Pf8j5PhqG2u+osvsLxYrvvfeVJL+4tkcXcr9JV7v0ERmj/X6fM3NC4j6dS1+9Umr2oPavqiAydTZPLMNRGY23LO9zAVDly7jD+70G5TPPLdhRIl4WxcYjLnM+SNcJ26FOrkrISUtPObIz5Zb3AG612krnpy15RMW+1cQjlnWFI6538qky9axd2oJmHIHP08KyP0ubGO+TQNOYuv2uh17yCIvR8VcStw7o1g0NM60sk+8Tq7YfIBJrtp53GkvzXH7OA0p8/n/u1satf/VJhtR1l8Wa6Gmaug7haSpaCaYQax6ta0mkutlb+eAOSG1aobM81D9A4iS1RRlzBBoVX6tU1S6WE2N9ORY6DfeLRC4l9Rvr5h95XDWB2mR1d4WFudpsgVYwiTwT31ljskD8ZyDOlm5DkGh9N/UB/0AI5Xvb8ZBmai2hQ4BWMqFwYnzxwB26YHSOv9WgY3JXnvoN+2R4rqGVh/LLDMtpFP+SpMGJNWvbIl5SOodbCczW2RKleksPoUeGEzrjtKHVdtZA+kfqO+rVx/iclCqwoopepvJpSTDjT+b9GWylGRF8EDbGlw6eUzmJM95Ovoz+kwLX3c2fTjFeYEsE7vUZm3mqdGJuKh2w9/QGSaqRHs99aScGOdDqkFcACoqdbBoQqqjamhH6Q9ng39JCg3lrGJwd50Qk9ovnqBTr8MME7Ps2wiVfygUmPoUBJJfJWX5Nda0nuncbFkA==")),Nr=new Set(xr(Pr)),Br=new Set(xr(Pr)),Mr=function(t){let e=[];for(;;){let r=t();if(0==r)break;e.push(Ir(r,t))}for(;;){let r=t()-1;if(r<0)break;e.push(Tr(r,t))}return function(t){const e={};for(let r=0;r<t.length;r++){const n=t[r];e[n[0]]=n[1]}return e}(Er(e))}(Pr),Rr=function(t){let e=xr(t).sort((t,e)=>t-e);return function r(){let n=[];for(;;){let i=xr(t,e);if(0==i.length)break;n.push({set:new Set(i),node:r()})}n.sort((t,e)=>e.set.size-t.set.size);let i=t(),s=i%3;i=i/3|0;let o=!!(1&i);return i>>=1,{branches:n,valid:s,fe0f:o,save:1==i,check:2==i}}()}(Pr);function Fr(t){return Xe(t)}function Or(t){return t.filter(t=>65039!=t)}function Dr(t){for(let e of t.split(".")){let t=Fr(e);try{for(let e=t.lastIndexOf(95)-1;e>=0;e--)if(95!==t[e])throw new Error("underscore only allowed at start");if(t.length>=4&&t.every(t=>t<128)&&45===t[2]&&45===t[3])throw new Error("invalid label extension")}catch(t){throw new Error(`Invalid label "${e}": ${t.message}`)}}return t}function Lr(t){return Dr(function(t,e){let r=Fr(t).reverse(),n=[];for(;r.length;){let t=Ur(r);if(t){n.push(...e(t));continue}let i=r.pop();if(Nr.has(i)){n.push(i);continue}if(Br.has(i))continue;let s=Mr[i];if(!s)throw new Error(`Disallowed codepoint: 0x${i.toString(16).toUpperCase()}`);n.push(...s)}return Dr((i=String.fromCodePoint(...n),i.normalize("NFC")));var i}(t,Or))}function Ur(t,e){var r;let n,i,s=Rr,o=[],a=t.length;for(;a;){let e=t[--a];if(s=null===(r=s.branches.find(t=>t.set.has(e)))||void 0===r?void 0:r.node,!s)break;if(s.save)i=e;else if(s.check&&e===i)break;o.push(e),s.fe0f&&(o.push(65039),a>0&&65039==t[a-1]&&a--),s.valid&&(n=o.slice(),2==s.valid&&n.splice(1,1),t.length=a)}return n}const qr=new v(yr),zr=new Uint8Array(32);function jr(t){if(0===t.length)throw new Error("invalid ENS name; empty component");return t}function Gr(t){const e=Ve(Lr(t)),r=[];if(0===t.length)return r;let n=0;for(let t=0;t<e.length;t++){46===e[t]&&(r.push(jr(e.slice(n,t))),n=t+1)}if(n>=e.length)throw new Error("invalid ENS name; empty component");return r.push(jr(e.slice(n))),r}function Hr(t){"string"!=typeof t&&qr.throwArgumentError("invalid ENS name; not a string","name",t);let e=zr;const r=Gr(t);for(;r.length;)e=ee(x([e,ee(r.pop())]));return N(e)}function Wr(t){return N(x(Gr(t).map(t=>{if(t.length>63)throw new Error("invalid DNS encoded entry; length exceeds 63 bytes");const e=new Uint8Array(t.length+1);return e.set(t,1),e[0]=e.length-1,e})))+"00"}zr.fill(0);function Kr(t){return"string"==typeof t&&(t=Ve(t)),ee(x([Ve("Ethereum Signed Message:\n"),Ve(String(t.length)),t]))}var $r=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const Vr=new v(yr),Jr=new Uint8Array(32);Jr.fill(0);const Qr=K.from(-1),Yr=K.from(0),Xr=K.from(1),Zr=K.from("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");const tn=D(Xr.toHexString(),32),en=D(Yr.toHexString(),32),rn={name:"string",version:"string",chainId:"uint256",verifyingContract:"address",salt:"bytes32"},nn=["name","version","chainId","verifyingContract","salt"];function sn(t){return function(e){return"string"!=typeof e&&Vr.throwArgumentError(`invalid domain value for ${JSON.stringify(t)}`,`domain.${t}`,e),e}}const on={name:sn("name"),version:sn("version"),chainId:function(t){try{return K.from(t).toString()}catch(t){}return Vr.throwArgumentError('invalid domain value for "chainId"',"domain.chainId",t)},verifyingContract:function(t){try{return ye(t).toLowerCase()}catch(t){}return Vr.throwArgumentError('invalid domain value "verifyingContract"',"domain.verifyingContract",t)},salt:function(t){try{const e=C(t);if(32!==e.length)throw new Error("bad length");return N(e)}catch(t){}return Vr.throwArgumentError('invalid domain value "salt"',"domain.salt",t)}};function an(t){{const e=t.match(/^(u?)int(\d*)$/);if(e){const r=""===e[1],n=parseInt(e[2]||"256");(n%8!=0||n>256||e[2]&&e[2]!==String(n))&&Vr.throwArgumentError("invalid numeric width","type",t);const i=Zr.mask(r?n-1:n),s=r?i.add(Xr).mul(Qr):Yr;return function(e){const r=K.from(e);return(r.lt(s)||r.gt(i))&&Vr.throwArgumentError(`value out-of-bounds for ${t}`,"value",e),D(r.toTwos(256).toHexString(),32)}}}{const e=t.match(/^bytes(\d+)$/);if(e){const r=parseInt(e[1]);return(0===r||r>32||e[1]!==String(r))&&Vr.throwArgumentError("invalid bytes width","type",t),function(e){return C(e).length!==r&&Vr.throwArgumentError(`invalid length for ${t}`,"value",e),function(t){const e=C(t),r=e.length%32;return r?R([e,Jr.slice(r)]):N(e)}(e)}}}switch(t){case"address":return function(t){return D(ye(t),32)};case"bool":return function(t){return t?tn:en};case"bytes":return function(t){return ee(t)};case"string":return function(t){return gr(t)}}return null}function ln(t,e){return`${t}(${e.map(({name:t,type:e})=>e+" "+t).join(",")})`}class cn{constructor(t){dt(this,"types",Object.freeze(bt(t))),dt(this,"_encoderCache",{}),dt(this,"_types",{});const e={},r={},n={};Object.keys(t).forEach(t=>{e[t]={},r[t]=[],n[t]={}});for(const n in t){const i={};t[n].forEach(s=>{i[s.name]&&Vr.throwArgumentError(`duplicate variable name ${JSON.stringify(s.name)} in ${JSON.stringify(n)}`,"types",t),i[s.name]=!0;const o=s.type.match(/^([^\x5b]*)(\x5b|$)/)[1];o===n&&Vr.throwArgumentError(`circular type reference to ${JSON.stringify(o)}`,"types",t);an(o)||(r[o]||Vr.throwArgumentError(`unknown type ${JSON.stringify(o)}`,"types",t),r[o].push(n),e[n][o]=!0)})}const i=Object.keys(r).filter(t=>0===r[t].length);0===i.length?Vr.throwArgumentError("missing primary type","types",t):i.length>1&&Vr.throwArgumentError(`ambiguous primary types or unused types: ${i.map(t=>JSON.stringify(t)).join(", ")}`,"types",t),dt(this,"primaryType",i[0]),function i(s,o){o[s]&&Vr.throwArgumentError(`circular type reference to ${JSON.stringify(s)}`,"types",t),o[s]=!0,Object.keys(e[s]).forEach(t=>{r[t]&&(i(t,o),Object.keys(o).forEach(e=>{n[e][t]=!0}))}),delete o[s]}(this.primaryType,{});for(const e in n){const r=Object.keys(n[e]);r.sort(),this._types[e]=ln(e,t[e])+r.map(e=>ln(e,t[e])).join("")}}getEncoder(t){let e=this._encoderCache[t];return e||(e=this._encoderCache[t]=this._getEncoder(t)),e}_getEncoder(t){{const e=an(t);if(e)return e}const e=t.match(/^(.*)(\x5b(\d*)\x5d)$/);if(e){const t=e[1],r=this.getEncoder(t),n=parseInt(e[3]);return e=>{n>=0&&e.length!==n&&Vr.throwArgumentError("array length mismatch; expected length ${ arrayLength }","value",e);let i=e.map(r);return this._types[t]&&(i=i.map(ee)),ee(R(i))}}const r=this.types[t];if(r){const e=gr(this._types[t]);return t=>{const n=r.map(({name:e,type:r})=>{const n=this.getEncoder(r)(t[e]);return this._types[r]?ee(n):n});return n.unshift(e),R(n)}}return Vr.throwArgumentError(`unknown type: ${t}`,"type",t)}encodeType(t){const e=this._types[t];return e||Vr.throwArgumentError(`unknown type: ${JSON.stringify(t)}`,"name",t),e}encodeData(t,e){return this.getEncoder(t)(e)}hashStruct(t,e){return ee(this.encodeData(t,e))}encode(t){return this.encodeData(this.primaryType,t)}hash(t){return this.hashStruct(this.primaryType,t)}_visit(t,e,r){if(an(t))return r(t,e);const n=t.match(/^(.*)(\x5b(\d*)\x5d)$/);if(n){const t=n[1],i=parseInt(n[3]);return i>=0&&e.length!==i&&Vr.throwArgumentError("array length mismatch; expected length ${ arrayLength }","value",e),e.map(e=>this._visit(t,e,r))}const i=this.types[t];return i?i.reduce((t,{name:n,type:i})=>(t[n]=this._visit(i,e[n],r),t),{}):Vr.throwArgumentError(`unknown type: ${t}`,"type",t)}visit(t,e){return this._visit(this.primaryType,t,e)}static from(t){return new cn(t)}static getPrimaryType(t){return cn.from(t).primaryType}static hashStruct(t,e,r){return cn.from(e).hashStruct(t,r)}static hashDomain(t){const e=[];for(const r in t){const n=rn[r];n||Vr.throwArgumentError(`invalid typed-data domain key: ${JSON.stringify(r)}`,"domain",t),e.push({name:r,type:n})}return e.sort((t,e)=>nn.indexOf(t.name)-nn.indexOf(e.name)),cn.hashStruct("EIP712Domain",{EIP712Domain:e},t)}static encode(t,e,r){return R(["0x1901",cn.hashDomain(t),cn.from(e).hash(r)])}static hash(t,e,r){return ee(cn.encode(t,e,r))}static resolveNames(t,e,r,n){return $r(this,void 0,void 0,function*(){t=gt(t);const i={};t.verifyingContract&&!T(t.verifyingContract,20)&&(i[t.verifyingContract]="0x");const s=cn.from(e);s.visit(r,(t,e)=>("address"!==t||T(e,20)||(i[e]="0x"),e));for(const t in i)i[t]=yield n(t);return t.verifyingContract&&i[t.verifyingContract]&&(t.verifyingContract=i[t.verifyingContract]),r=s.visit(r,(t,e)=>"address"===t&&i[e]?i[e]:e),{domain:t,value:r}})}static getPayload(t,e,r){cn.hashDomain(t);const n={},i=[];nn.forEach(e=>{const r=t[e];null!=r&&(n[e]=on[e](r),i.push({name:e,type:rn[e]}))});const s=cn.from(e),o=gt(e);return o.EIP712Domain?Vr.throwArgumentError("types must not contain EIP712Domain type","types.EIP712Domain",e):o.EIP712Domain=i,s.encode(r),{types:o,domain:n,primaryType:s.primaryType,message:s.visit(r,(t,e)=>{if(t.match(/^bytes(\d*)/))return N(C(e));if(t.match(/^u?int/))return K.from(e).toString();switch(t){case"address":return e.toLowerCase();case"bool":return!!e;case"string":return"string"!=typeof e&&Vr.throwArgumentError("invalid string","value",e),e}return Vr.throwArgumentError("unsupported type","type",t)})}}}const hn=new v(At);class un extends Et{}class dn extends Et{}class fn extends Et{}class pn extends Et{static isIndexed(t){return!(!t||!t._isIndexed)}}const mn={"0x08c379a0":{signature:"Error(string)",name:"Error",inputs:["string"],reason:!0},"0x4e487b71":{signature:"Panic(uint256)",name:"Panic",inputs:["uint256"]}};function gn(t,e){const r=new Error(`deferred error during ABI decoding triggered accessing ${t}`);return r.error=e,r}class yn{constructor(t){let e=[];e="string"==typeof t?JSON.parse(t):t,dt(this,"fragments",e.map(t=>Mt.from(t)).filter(t=>null!=t)),dt(this,"_abiCoder",ft(new.target,"getAbiCoder")()),dt(this,"functions",{}),dt(this,"errors",{}),dt(this,"events",{}),dt(this,"structs",{}),this.fragments.forEach(t=>{let e=null;switch(t.type){case"constructor":return this.deploy?void hn.warn("duplicate definition - constructor"):void dt(this,"deploy",t);case"function":e=this.functions;break;case"event":e=this.events;break;case"error":e=this.errors;break;default:return}let r=t.format();e[r]?hn.warn("duplicate definition - "+r):e[r]=t}),this.deploy||dt(this,"deploy",Lt.from({payable:!1,type:"constructor"})),dt(this,"_isInterface",!0)}format(t){t||(t=Tt.full),t===Tt.sighash&&hn.throwArgumentError("interface does not support formatting sighash","format",t);const e=this.fragments.map(e=>e.format(t));return t===Tt.json?JSON.stringify(e.map(t=>JSON.parse(t))):e}static getAbiCoder(){return mr}static getAddress(t){return ye(t)}static getSighash(t){return M(gr(t.format()),0,4)}static getEventTopic(t){return gr(t.format())}getFunction(t){if(T(t)){for(const e in this.functions)if(t===this.getSighash(e))return this.functions[e];hn.throwArgumentError("no matching function","sighash",t)}if(-1===t.indexOf("(")){const e=t.trim(),r=Object.keys(this.functions).filter(t=>t.split("(")[0]===e);return 0===r.length?hn.throwArgumentError("no matching function","name",e):r.length>1&&hn.throwArgumentError("multiple matching functions","name",e),this.functions[r[0]]}const e=this.functions[Ut.fromString(t).format()];return e||hn.throwArgumentError("no matching function","signature",t),e}getEvent(t){if(T(t)){const e=t.toLowerCase();for(const t in this.events)if(e===this.getEventTopic(t))return this.events[t];hn.throwArgumentError("no matching event","topichash",e)}if(-1===t.indexOf("(")){const e=t.trim(),r=Object.keys(this.events).filter(t=>t.split("(")[0]===e);return 0===r.length?hn.throwArgumentError("no matching event","name",e):r.length>1&&hn.throwArgumentError("multiple matching events","name",e),this.events[r[0]]}const e=this.events[Rt.fromString(t).format()];return e||hn.throwArgumentError("no matching event","signature",t),e}getError(t){if(T(t)){const e=ft(this.constructor,"getSighash");for(const r in this.errors){if(t===e(this.errors[r]))return this.errors[r]}hn.throwArgumentError("no matching error","sighash",t)}if(-1===t.indexOf("(")){const e=t.trim(),r=Object.keys(this.errors).filter(t=>t.split("(")[0]===e);return 0===r.length?hn.throwArgumentError("no matching error","name",e):r.length>1&&hn.throwArgumentError("multiple matching errors","name",e),this.errors[r[0]]}const e=this.errors[Ut.fromString(t).format()];return e||hn.throwArgumentError("no matching error","signature",t),e}getSighash(t){if("string"==typeof t)try{t=this.getFunction(t)}catch(e){try{t=this.getError(t)}catch(t){throw e}}return ft(this.constructor,"getSighash")(t)}getEventTopic(t){return"string"==typeof t&&(t=this.getEvent(t)),ft(this.constructor,"getEventTopic")(t)}_decodeParams(t,e){return this._abiCoder.decode(t,e)}_encodeParams(t,e){return this._abiCoder.encode(t,e)}encodeDeploy(t){return this._encodeParams(this.deploy.inputs,t||[])}decodeErrorResult(t,e){"string"==typeof t&&(t=this.getError(t));const r=C(e);return N(r.slice(0,4))!==this.getSighash(t)&&hn.throwArgumentError(`data signature does not match error ${t.name}.`,"data",N(r)),this._decodeParams(t.inputs,r.slice(4))}encodeErrorResult(t,e){return"string"==typeof t&&(t=this.getError(t)),N(x([this.getSighash(t),this._encodeParams(t.inputs,e||[])]))}decodeFunctionData(t,e){"string"==typeof t&&(t=this.getFunction(t));const r=C(e);return N(r.slice(0,4))!==this.getSighash(t)&&hn.throwArgumentError(`data signature does not match function ${t.name}.`,"data",N(r)),this._decodeParams(t.inputs,r.slice(4))}encodeFunctionData(t,e){return"string"==typeof t&&(t=this.getFunction(t)),N(x([this.getSighash(t),this._encodeParams(t.inputs,e||[])]))}decodeFunctionResult(t,e){"string"==typeof t&&(t=this.getFunction(t));let r=C(e),n=null,i="",s=null,o=null,a=null;switch(r.length%this._abiCoder._getWordSize()){case 0:try{return this._abiCoder.decode(t.outputs,r)}catch(t){}break;case 4:{const t=N(r.slice(0,4)),e=mn[t];if(e)s=this._abiCoder.decode(e.inputs,r.slice(4)),o=e.name,a=e.signature,e.reason&&(n=s[0]),"Error"===o?i=`; VM Exception while processing transaction: reverted with reason string ${JSON.stringify(s[0])}`:"Panic"===o&&(i=`; VM Exception while processing transaction: reverted with panic code ${s[0]}`);else try{const e=this.getError(t);s=this._abiCoder.decode(e.inputs,r.slice(4)),o=e.name,a=e.format()}catch(t){}break}}return hn.throwError("call revert exception"+i,v.errors.CALL_EXCEPTION,{method:t.format(),data:N(e),errorArgs:s,errorName:o,errorSignature:a,reason:n})}encodeFunctionResult(t,e){return"string"==typeof t&&(t=this.getFunction(t)),N(this._abiCoder.encode(t.outputs,e||[]))}encodeFilterTopics(t,e){"string"==typeof t&&(t=this.getEvent(t)),e.length>t.inputs.length&&hn.throwError("too many arguments for "+t.format(),v.errors.UNEXPECTED_ARGUMENT,{argument:"values",value:e});let r=[];t.anonymous||r.push(this.getEventTopic(t));const n=(t,e)=>"string"===t.type?gr(e):"bytes"===t.type?ee(N(e)):("bool"===t.type&&"boolean"==typeof e&&(e=e?"0x01":"0x00"),t.type.match(/^u?int/)&&(e=K.from(e).toHexString()),"address"===t.type&&this._abiCoder.encode(["address"],[e]),D(N(e),32));for(e.forEach((e,i)=>{let s=t.inputs[i];s.indexed?null==e?r.push(null):"array"===s.baseType||"tuple"===s.baseType?hn.throwArgumentError("filtering with tuples or arrays not supported","contract."+s.name,e):Array.isArray(e)?r.push(e.map(t=>n(s,t))):r.push(n(s,e)):null!=e&&hn.throwArgumentError("cannot filter non-indexed parameters; must be null","contract."+s.name,e)});r.length&&null===r[r.length-1];)r.pop();return r}encodeEventLog(t,e){"string"==typeof t&&(t=this.getEvent(t));const r=[],n=[],i=[];return t.anonymous||r.push(this.getEventTopic(t)),e.length!==t.inputs.length&&hn.throwArgumentError("event arguments/values mismatch","values",e),t.inputs.forEach((t,s)=>{const o=e[s];if(t.indexed)if("string"===t.type)r.push(gr(o));else if("bytes"===t.type)r.push(ee(o));else{if("tuple"===t.baseType||"array"===t.baseType)throw new Error("not implemented");r.push(this._abiCoder.encode([t.type],[o]))}else n.push(t),i.push(o)}),{data:this._abiCoder.encode(n,i),topics:r}}decodeEventLog(t,e,r){if("string"==typeof t&&(t=this.getEvent(t)),null!=r&&!t.anonymous){let e=this.getEventTopic(t);T(r[0],32)&&r[0].toLowerCase()===e||hn.throwError("fragment/topic mismatch",v.errors.INVALID_ARGUMENT,{argument:"topics[0]",expected:e,value:r[0]}),r=r.slice(1)}let n=[],i=[],s=[];t.inputs.forEach((t,e)=>{t.indexed?"string"===t.type||"bytes"===t.type||"tuple"===t.baseType||"array"===t.baseType?(n.push(Nt.fromObject({type:"bytes32",name:t.name})),s.push(!0)):(n.push(t),s.push(!1)):(i.push(t),s.push(!1))});let o=null!=r?this._abiCoder.decode(n,x(r)):null,a=this._abiCoder.decode(i,e,!0),l=[],c=0,h=0;t.inputs.forEach((t,e)=>{if(t.indexed)if(null==o)l[e]=new pn({_isIndexed:!0,hash:null});else if(s[e])l[e]=new pn({_isIndexed:!0,hash:o[h++]});else try{l[e]=o[h++]}catch(t){l[e]=t}else try{l[e]=a[c++]}catch(t){l[e]=t}if(t.name&&null==l[t.name]){const r=l[e];r instanceof Error?Object.defineProperty(l,t.name,{enumerable:!0,get:()=>{throw gn(`property ${JSON.stringify(t.name)}`,r)}}):l[t.name]=r}});for(let t=0;t<l.length;t++){const e=l[t];e instanceof Error&&Object.defineProperty(l,t,{enumerable:!0,get:()=>{throw gn(`index ${t}`,e)}})}return Object.freeze(l)}parseTransaction(t){let e=this.getFunction(t.data.substring(0,10).toLowerCase());return e?new dn({args:this._abiCoder.decode(e.inputs,"0x"+t.data.substring(10)),functionFragment:e,name:e.name,signature:e.format(),sighash:this.getSighash(e),value:K.from(t.value||"0")}):null}parseLog(t){let e=this.getEvent(t.topics[0]);return!e||e.anonymous?null:new un({eventFragment:e,name:e.name,signature:e.format(),topic:this.getEventTopic(e),args:this.decodeEventLog(e,t.data,t.topics)})}parseError(t){const e=N(t);let r=this.getError(e.substring(0,10).toLowerCase());return r?new fn({args:this._abiCoder.decode(r.inputs,"0x"+e.substring(10)),errorFragment:r,name:r.name,signature:r.format(),sighash:this.getSighash(r)}):null}static isInterface(t){return!(!t||!t._isInterface)}}var vn=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const wn=new v("abstract-provider/5.8.0");class bn extends Et{static isForkEvent(t){return!(!t||!t._isForkEvent)}}class En{constructor(){wn.checkAbstract(new.target,En),dt(this,"_isProvider",!0)}getFeeData(){return vn(this,void 0,void 0,function*(){const{block:t,gasPrice:e}=yield pt({block:this.getBlock("latest"),gasPrice:this.getGasPrice().catch(t=>null)});let r=null,n=null,i=null;return t&&t.baseFeePerGas&&(r=t.baseFeePerGas,i=K.from("1500000000"),n=t.baseFeePerGas.mul(2).add(i)),{lastBaseFeePerGas:r,maxFeePerGas:n,maxPriorityFeePerGas:i,gasPrice:e}})}addListener(t,e){return this.on(t,e)}removeListener(t,e){return this.off(t,e)}static isProvider(t){return!(!t||!t._isProvider)}}var An=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const kn=new v("abstract-signer/5.8.0"),Sn=["accessList","ccipReadEnabled","chainId","customData","data","from","gasLimit","gasPrice","maxFeePerGas","maxPriorityFeePerGas","nonce","to","type","value"],Cn=[v.errors.INSUFFICIENT_FUNDS,v.errors.NONCE_EXPIRED,v.errors.REPLACEMENT_UNDERPRICED];class xn{constructor(){kn.checkAbstract(new.target,xn),dt(this,"_isSigner",!0)}getBalance(t){return An(this,void 0,void 0,function*(){return this._checkProvider("getBalance"),yield this.provider.getBalance(this.getAddress(),t)})}getTransactionCount(t){return An(this,void 0,void 0,function*(){return this._checkProvider("getTransactionCount"),yield this.provider.getTransactionCount(this.getAddress(),t)})}estimateGas(t){return An(this,void 0,void 0,function*(){this._checkProvider("estimateGas");const e=yield pt(this.checkTransaction(t));return yield this.provider.estimateGas(e)})}call(t,e){return An(this,void 0,void 0,function*(){this._checkProvider("call");const r=yield pt(this.checkTransaction(t));return yield this.provider.call(r,e)})}sendTransaction(t){return An(this,void 0,void 0,function*(){this._checkProvider("sendTransaction");const e=yield this.populateTransaction(t),r=yield this.signTransaction(e);return yield this.provider.sendTransaction(r)})}getChainId(){return An(this,void 0,void 0,function*(){this._checkProvider("getChainId");return(yield this.provider.getNetwork()).chainId})}getGasPrice(){return An(this,void 0,void 0,function*(){return this._checkProvider("getGasPrice"),yield this.provider.getGasPrice()})}getFeeData(){return An(this,void 0,void 0,function*(){return this._checkProvider("getFeeData"),yield this.provider.getFeeData()})}resolveName(t){return An(this,void 0,void 0,function*(){return this._checkProvider("resolveName"),yield this.provider.resolveName(t)})}checkTransaction(t){for(const e in t)-1===Sn.indexOf(e)&&kn.throwArgumentError("invalid transaction key: "+e,"transaction",t);const e=gt(t);return null==e.from?e.from=this.getAddress():e.from=Promise.all([Promise.resolve(e.from),this.getAddress()]).then(e=>(e[0].toLowerCase()!==e[1].toLowerCase()&&kn.throwArgumentError("from address mismatch","transaction",t),e[0])),e}populateTransaction(t){return An(this,void 0,void 0,function*(){const e=yield pt(this.checkTransaction(t));null!=e.to&&(e.to=Promise.resolve(e.to).then(t=>An(this,void 0,void 0,function*(){if(null==t)return null;const e=yield this.resolveName(t);return null==e&&kn.throwArgumentError("provided ENS name resolves to null","tx.to",t),e})),e.to.catch(t=>{}));const r=null!=e.maxFeePerGas||null!=e.maxPriorityFeePerGas;if(null==e.gasPrice||2!==e.type&&!r?0!==e.type&&1!==e.type||!r||kn.throwArgumentError("pre-eip-1559 transaction do not support maxFeePerGas/maxPriorityFeePerGas","transaction",t):kn.throwArgumentError("eip-1559 transaction do not support gasPrice","transaction",t),2!==e.type&&null!=e.type||null==e.maxFeePerGas||null==e.maxPriorityFeePerGas)if(0===e.type||1===e.type)null==e.gasPrice&&(e.gasPrice=this.getGasPrice());else{const t=yield this.getFeeData();if(null==e.type)if(null!=t.maxFeePerGas&&null!=t.maxPriorityFeePerGas)if(e.type=2,null!=e.gasPrice){const t=e.gasPrice;delete e.gasPrice,e.maxFeePerGas=t,e.maxPriorityFeePerGas=t}else null==e.maxFeePerGas&&(e.maxFeePerGas=t.maxFeePerGas),null==e.maxPriorityFeePerGas&&(e.maxPriorityFeePerGas=t.maxPriorityFeePerGas);else null!=t.gasPrice?(r&&kn.throwError("network does not support EIP-1559",v.errors.UNSUPPORTED_OPERATION,{operation:"populateTransaction"}),null==e.gasPrice&&(e.gasPrice=t.gasPrice),e.type=0):kn.throwError("failed to get consistent fee data",v.errors.UNSUPPORTED_OPERATION,{operation:"signer.getFeeData"});else 2===e.type&&(null==e.maxFeePerGas&&(e.maxFeePerGas=t.maxFeePerGas),null==e.maxPriorityFeePerGas&&(e.maxPriorityFeePerGas=t.maxPriorityFeePerGas))}else e.type=2;return null==e.nonce&&(e.nonce=this.getTransactionCount("pending")),null==e.gasLimit&&(e.gasLimit=this.estimateGas(e).catch(t=>{if(Cn.indexOf(t.code)>=0)throw t;return kn.throwError("cannot estimate gas; transaction may fail or may require manual gas limit",v.errors.UNPREDICTABLE_GAS_LIMIT,{error:t,tx:e})})),null==e.chainId?e.chainId=this.getChainId():e.chainId=Promise.all([Promise.resolve(e.chainId),this.getChainId()]).then(e=>(0!==e[1]&&e[0]!==e[1]&&kn.throwArgumentError("chainId address mismatch","transaction",t),e[0])),yield pt(e)})}_checkProvider(t){this.provider||kn.throwError("missing provider",v.errors.UNSUPPORTED_OPERATION,{operation:t||"_checkProvider"})}static isSigner(t){return!(!t||!t._isSigner)}}class _n extends xn{constructor(t,e){super(),dt(this,"address",t),dt(this,"provider",e||null)}getAddress(){return Promise.resolve(this.address)}_fail(t,e){return Promise.resolve().then(()=>{kn.throwError(t,v.errors.UNSUPPORTED_OPERATION,{operation:e})})}signMessage(t){return this._fail("VoidSigner cannot sign messages","signMessage")}signTransaction(t){return this._fail("VoidSigner cannot sign transactions","signTransaction")}_signTypedData(t,e,r){return this._fail("VoidSigner cannot sign typed data","signTypedData")}connect(t){return new _n(this.address,t)}}var In,Tn,Pn={},Nn={};function Bn(){if(Tn)return In;function t(t,e){if(!t)throw new Error(e||"Assertion failed")}return Tn=1,In=t,t.equal=function(t,e,r){if(t!=e)throw new Error(r||"Assertion failed: "+t+" != "+e)},In}var Mn,Rn,Fn,On={exports:{}},Dn={exports:{}};function Ln(){if(Rn)return On.exports;Rn=1;try{var t=require("util");if("function"!=typeof t.inherits)throw"";On.exports=t.inherits}catch(t){On.exports=(Mn||(Mn=1,"function"==typeof Object.create?Dn.exports=function(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:Dn.exports=function(t,e){if(e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}}),Dn.exports)}return On.exports}function Un(){if(Fn)return Nn;Fn=1;var t=Bn(),e=Ln();function r(t,e){return 55296==(64512&t.charCodeAt(e))&&(!(e<0||e+1>=t.length)&&56320==(64512&t.charCodeAt(e+1)))}function n(t){return(t>>>24|t>>>8&65280|t<<8&16711680|(255&t)<<24)>>>0}function i(t){return 1===t.length?"0"+t:t}function s(t){return 7===t.length?"0"+t:6===t.length?"00"+t:5===t.length?"000"+t:4===t.length?"0000"+t:3===t.length?"00000"+t:2===t.length?"000000"+t:1===t.length?"0000000"+t:t}return Nn.inherits=e,Nn.toArray=function(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var n=[];if("string"==typeof t)if(e){if("hex"===e)for((t=t.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(t="0"+t),s=0;s<t.length;s+=2)n.push(parseInt(t[s]+t[s+1],16))}else for(var i=0,s=0;s<t.length;s++){var o=t.charCodeAt(s);o<128?n[i++]=o:o<2048?(n[i++]=o>>6|192,n[i++]=63&o|128):r(t,s)?(o=65536+((1023&o)<<10)+(1023&t.charCodeAt(++s)),n[i++]=o>>18|240,n[i++]=o>>12&63|128,n[i++]=o>>6&63|128,n[i++]=63&o|128):(n[i++]=o>>12|224,n[i++]=o>>6&63|128,n[i++]=63&o|128)}else for(s=0;s<t.length;s++)n[s]=0|t[s];return n},Nn.toHex=function(t){for(var e="",r=0;r<t.length;r++)e+=i(t[r].toString(16));return e},Nn.htonl=n,Nn.toHex32=function(t,e){for(var r="",i=0;i<t.length;i++){var o=t[i];"little"===e&&(o=n(o)),r+=s(o.toString(16))}return r},Nn.zero2=i,Nn.zero8=s,Nn.join32=function(e,r,n,i){var s=n-r;t(s%4==0);for(var o=new Array(s/4),a=0,l=r;a<o.length;a++,l+=4){var c;c="big"===i?e[l]<<24|e[l+1]<<16|e[l+2]<<8|e[l+3]:e[l+3]<<24|e[l+2]<<16|e[l+1]<<8|e[l],o[a]=c>>>0}return o},Nn.split32=function(t,e){for(var r=new Array(4*t.length),n=0,i=0;n<t.length;n++,i+=4){var s=t[n];"big"===e?(r[i]=s>>>24,r[i+1]=s>>>16&255,r[i+2]=s>>>8&255,r[i+3]=255&s):(r[i+3]=s>>>24,r[i+2]=s>>>16&255,r[i+1]=s>>>8&255,r[i]=255&s)}return r},Nn.rotr32=function(t,e){return t>>>e|t<<32-e},Nn.rotl32=function(t,e){return t<<e|t>>>32-e},Nn.sum32=function(t,e){return t+e>>>0},Nn.sum32_3=function(t,e,r){return t+e+r>>>0},Nn.sum32_4=function(t,e,r,n){return t+e+r+n>>>0},Nn.sum32_5=function(t,e,r,n,i){return t+e+r+n+i>>>0},Nn.sum64=function(t,e,r,n){var i=t[e],s=n+t[e+1]>>>0,o=(s<n?1:0)+r+i;t[e]=o>>>0,t[e+1]=s},Nn.sum64_hi=function(t,e,r,n){return(e+n>>>0<e?1:0)+t+r>>>0},Nn.sum64_lo=function(t,e,r,n){return e+n>>>0},Nn.sum64_4_hi=function(t,e,r,n,i,s,o,a){var l=0,c=e;return l+=(c=c+n>>>0)<e?1:0,l+=(c=c+s>>>0)<s?1:0,t+r+i+o+(l+=(c=c+a>>>0)<a?1:0)>>>0},Nn.sum64_4_lo=function(t,e,r,n,i,s,o,a){return e+n+s+a>>>0},Nn.sum64_5_hi=function(t,e,r,n,i,s,o,a,l,c){var h=0,u=e;return h+=(u=u+n>>>0)<e?1:0,h+=(u=u+s>>>0)<s?1:0,h+=(u=u+a>>>0)<a?1:0,t+r+i+o+l+(h+=(u=u+c>>>0)<c?1:0)>>>0},Nn.sum64_5_lo=function(t,e,r,n,i,s,o,a,l,c){return e+n+s+a+c>>>0},Nn.rotr64_hi=function(t,e,r){return(e<<32-r|t>>>r)>>>0},Nn.rotr64_lo=function(t,e,r){return(t<<32-r|e>>>r)>>>0},Nn.shr64_hi=function(t,e,r){return t>>>r},Nn.shr64_lo=function(t,e,r){return(t<<32-r|e>>>r)>>>0},Nn}var qn,zn={};function jn(){if(qn)return zn;qn=1;var t=Un(),e=Bn();function r(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}return zn.BlockHash=r,r.prototype.update=function(e,r){if(e=t.toArray(e,r),this.pending?this.pending=this.pending.concat(e):this.pending=e,this.pendingTotal+=e.length,this.pending.length>=this._delta8){var n=(e=this.pending).length%this._delta8;this.pending=e.slice(e.length-n,e.length),0===this.pending.length&&(this.pending=null),e=t.join32(e,0,e.length-n,this.endian);for(var i=0;i<e.length;i+=this._delta32)this._update(e,i,i+this._delta32)}return this},r.prototype.digest=function(t){return this.update(this._pad()),e(null===this.pending),this._digest(t)},r.prototype._pad=function(){var t=this.pendingTotal,e=this._delta8,r=e-(t+this.padLength)%e,n=new Array(r+this.padLength);n[0]=128;for(var i=1;i<r;i++)n[i]=0;if(t<<=3,"big"===this.endian){for(var s=8;s<this.padLength;s++)n[i++]=0;n[i++]=0,n[i++]=0,n[i++]=0,n[i++]=0,n[i++]=t>>>24&255,n[i++]=t>>>16&255,n[i++]=t>>>8&255,n[i++]=255&t}else for(n[i++]=255&t,n[i++]=t>>>8&255,n[i++]=t>>>16&255,n[i++]=t>>>24&255,n[i++]=0,n[i++]=0,n[i++]=0,n[i++]=0,s=8;s<this.padLength;s++)n[i++]=0;return n},zn}var Gn,Hn,Wn,Kn,$n,Vn,Jn,Qn,Yn,Xn,Zn,ti,ei={},ri={};function ni(){if(Gn)return ri;Gn=1;var t=Un().rotr32;function e(t,e,r){return t&e^~t&r}function r(t,e,r){return t&e^t&r^e&r}function n(t,e,r){return t^e^r}return ri.ft_1=function(t,i,s,o){return 0===t?e(i,s,o):1===t||3===t?n(i,s,o):2===t?r(i,s,o):void 0},ri.ch32=e,ri.maj32=r,ri.p32=n,ri.s0_256=function(e){return t(e,2)^t(e,13)^t(e,22)},ri.s1_256=function(e){return t(e,6)^t(e,11)^t(e,25)},ri.g0_256=function(e){return t(e,7)^t(e,18)^e>>>3},ri.g1_256=function(e){return t(e,17)^t(e,19)^e>>>10},ri}function ii(){if($n)return Kn;$n=1;var t=Un(),e=jn(),r=ni(),n=Bn(),i=t.sum32,s=t.sum32_4,o=t.sum32_5,a=r.ch32,l=r.maj32,c=r.s0_256,h=r.s1_256,u=r.g0_256,d=r.g1_256,f=e.BlockHash,p=[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];function m(){if(!(this instanceof m))return new m;f.call(this),this.h=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],this.k=p,this.W=new Array(64)}return t.inherits(m,f),Kn=m,m.blockSize=512,m.outSize=256,m.hmacStrength=192,m.padLength=64,m.prototype._update=function(t,e){for(var r=this.W,f=0;f<16;f++)r[f]=t[e+f];for(;f<r.length;f++)r[f]=s(d(r[f-2]),r[f-7],u(r[f-15]),r[f-16]);var p=this.h[0],m=this.h[1],g=this.h[2],y=this.h[3],v=this.h[4],w=this.h[5],b=this.h[6],E=this.h[7];for(n(this.k.length===r.length),f=0;f<r.length;f++){var A=o(E,h(v),a(v,w,b),this.k[f],r[f]),k=i(c(p),l(p,m,g));E=b,b=w,w=v,v=i(y,A),y=g,g=m,m=p,p=i(A,k)}this.h[0]=i(this.h[0],p),this.h[1]=i(this.h[1],m),this.h[2]=i(this.h[2],g),this.h[3]=i(this.h[3],y),this.h[4]=i(this.h[4],v),this.h[5]=i(this.h[5],w),this.h[6]=i(this.h[6],b),this.h[7]=i(this.h[7],E)},m.prototype._digest=function(e){return"hex"===e?t.toHex32(this.h,"big"):t.split32(this.h,"big")},Kn}function si(){if(Yn)return Qn;Yn=1;var t=Un(),e=jn(),r=Bn(),n=t.rotr64_hi,i=t.rotr64_lo,s=t.shr64_hi,o=t.shr64_lo,a=t.sum64,l=t.sum64_hi,c=t.sum64_lo,h=t.sum64_4_hi,u=t.sum64_4_lo,d=t.sum64_5_hi,f=t.sum64_5_lo,p=e.BlockHash,m=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function g(){if(!(this instanceof g))return new g;p.call(this),this.h=[1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209],this.k=m,this.W=new Array(160)}function y(t,e,r,n,i){var s=t&r^~t&i;return s<0&&(s+=4294967296),s}function v(t,e,r,n,i,s){var o=e&n^~e&s;return o<0&&(o+=4294967296),o}function w(t,e,r,n,i){var s=t&r^t&i^r&i;return s<0&&(s+=4294967296),s}function b(t,e,r,n,i,s){var o=e&n^e&s^n&s;return o<0&&(o+=4294967296),o}function E(t,e){var r=n(t,e,28)^n(e,t,2)^n(e,t,7);return r<0&&(r+=4294967296),r}function A(t,e){var r=i(t,e,28)^i(e,t,2)^i(e,t,7);return r<0&&(r+=4294967296),r}function k(t,e){var r=n(t,e,14)^n(t,e,18)^n(e,t,9);return r<0&&(r+=4294967296),r}function S(t,e){var r=i(t,e,14)^i(t,e,18)^i(e,t,9);return r<0&&(r+=4294967296),r}function C(t,e){var r=n(t,e,1)^n(t,e,8)^s(t,e,7);return r<0&&(r+=4294967296),r}function x(t,e){var r=i(t,e,1)^i(t,e,8)^o(t,e,7);return r<0&&(r+=4294967296),r}function _(t,e){var r=n(t,e,19)^n(e,t,29)^s(t,e,6);return r<0&&(r+=4294967296),r}function I(t,e){var r=i(t,e,19)^i(e,t,29)^o(t,e,6);return r<0&&(r+=4294967296),r}return t.inherits(g,p),Qn=g,g.blockSize=1024,g.outSize=512,g.hmacStrength=192,g.padLength=128,g.prototype._prepareBlock=function(t,e){for(var r=this.W,n=0;n<32;n++)r[n]=t[e+n];for(;n<r.length;n+=2){var i=_(r[n-4],r[n-3]),s=I(r[n-4],r[n-3]),o=r[n-14],a=r[n-13],l=C(r[n-30],r[n-29]),c=x(r[n-30],r[n-29]),d=r[n-32],f=r[n-31];r[n]=h(i,s,o,a,l,c,d,f),r[n+1]=u(i,s,o,a,l,c,d,f)}},g.prototype._update=function(t,e){this._prepareBlock(t,e);var n=this.W,i=this.h[0],s=this.h[1],o=this.h[2],h=this.h[3],u=this.h[4],p=this.h[5],m=this.h[6],g=this.h[7],C=this.h[8],x=this.h[9],_=this.h[10],I=this.h[11],T=this.h[12],P=this.h[13],N=this.h[14],B=this.h[15];r(this.k.length===n.length);for(var M=0;M<n.length;M+=2){var R=N,F=B,O=k(C,x),D=S(C,x),L=y(C,x,_,I,T),U=v(C,x,_,I,T,P),q=this.k[M],z=this.k[M+1],j=n[M],G=n[M+1],H=d(R,F,O,D,L,U,q,z,j,G),W=f(R,F,O,D,L,U,q,z,j,G);R=E(i,s),F=A(i,s),O=w(i,s,o,h,u),D=b(i,s,o,h,u,p);var K=l(R,F,O,D),$=c(R,F,O,D);N=T,B=P,T=_,P=I,_=C,I=x,C=l(m,g,H,W),x=c(g,g,H,W),m=u,g=p,u=o,p=h,o=i,h=s,i=l(H,W,K,$),s=c(H,W,K,$)}a(this.h,0,i,s),a(this.h,2,o,h),a(this.h,4,u,p),a(this.h,6,m,g),a(this.h,8,C,x),a(this.h,10,_,I),a(this.h,12,T,P),a(this.h,14,N,B)},g.prototype._digest=function(e){return"hex"===e?t.toHex32(this.h,"big"):t.split32(this.h,"big")},Qn}function oi(){return ti||(ti=1,ei.sha1=function(){if(Wn)return Hn;Wn=1;var t=Un(),e=jn(),r=ni(),n=t.rotl32,i=t.sum32,s=t.sum32_5,o=r.ft_1,a=e.BlockHash,l=[1518500249,1859775393,2400959708,3395469782];function c(){if(!(this instanceof c))return new c;a.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}return t.inherits(c,a),Hn=c,c.blockSize=512,c.outSize=160,c.hmacStrength=80,c.padLength=64,c.prototype._update=function(t,e){for(var r=this.W,a=0;a<16;a++)r[a]=t[e+a];for(;a<r.length;a++)r[a]=n(r[a-3]^r[a-8]^r[a-14]^r[a-16],1);var c=this.h[0],h=this.h[1],u=this.h[2],d=this.h[3],f=this.h[4];for(a=0;a<r.length;a++){var p=~~(a/20),m=s(n(c,5),o(p,h,u,d),f,r[a],l[p]);f=d,d=u,u=n(h,30),h=c,c=m}this.h[0]=i(this.h[0],c),this.h[1]=i(this.h[1],h),this.h[2]=i(this.h[2],u),this.h[3]=i(this.h[3],d),this.h[4]=i(this.h[4],f)},c.prototype._digest=function(e){return"hex"===e?t.toHex32(this.h,"big"):t.split32(this.h,"big")},Hn}(),ei.sha224=function(){if(Jn)return Vn;Jn=1;var t=Un(),e=ii();function r(){if(!(this instanceof r))return new r;e.call(this),this.h=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]}return t.inherits(r,e),Vn=r,r.blockSize=512,r.outSize=224,r.hmacStrength=192,r.padLength=64,r.prototype._digest=function(e){return"hex"===e?t.toHex32(this.h.slice(0,7),"big"):t.split32(this.h.slice(0,7),"big")},Vn}(),ei.sha256=ii(),ei.sha384=function(){if(Zn)return Xn;Zn=1;var t=Un(),e=si();function r(){if(!(this instanceof r))return new r;e.call(this),this.h=[3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]}return t.inherits(r,e),Xn=r,r.blockSize=1024,r.outSize=384,r.hmacStrength=192,r.padLength=128,r.prototype._digest=function(e){return"hex"===e?t.toHex32(this.h.slice(0,12),"big"):t.split32(this.h.slice(0,12),"big")},Xn}(),ei.sha512=si()),ei}var ai,li,ci,hi,ui={};var di=(hi||(hi=1,function(t){var e=t;e.utils=Un(),e.common=jn(),e.sha=oi(),e.ripemd=function(){if(ai)return ui;ai=1;var t=Un(),e=jn(),r=t.rotl32,n=t.sum32,i=t.sum32_3,s=t.sum32_4,o=e.BlockHash;function a(){if(!(this instanceof a))return new a;o.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.endian="little"}function l(t,e,r,n){return t<=15?e^r^n:t<=31?e&r|~e&n:t<=47?(e|~r)^n:t<=63?e&n|r&~n:e^(r|~n)}function c(t){return t<=15?0:t<=31?1518500249:t<=47?1859775393:t<=63?2400959708:2840853838}function h(t){return t<=15?1352829926:t<=31?1548603684:t<=47?1836072691:t<=63?2053994217:0}t.inherits(a,o),ui.ripemd160=a,a.blockSize=512,a.outSize=160,a.hmacStrength=192,a.padLength=64,a.prototype._update=function(t,e){for(var o=this.h[0],a=this.h[1],m=this.h[2],g=this.h[3],y=this.h[4],v=o,w=a,b=m,E=g,A=y,k=0;k<80;k++){var S=n(r(s(o,l(k,a,m,g),t[u[k]+e],c(k)),f[k]),y);o=y,y=g,g=r(m,10),m=a,a=S,S=n(r(s(v,l(79-k,w,b,E),t[d[k]+e],h(k)),p[k]),A),v=A,A=E,E=r(b,10),b=w,w=S}S=i(this.h[1],m,E),this.h[1]=i(this.h[2],g,A),this.h[2]=i(this.h[3],y,v),this.h[3]=i(this.h[4],o,w),this.h[4]=i(this.h[0],a,b),this.h[0]=S},a.prototype._digest=function(e){return"hex"===e?t.toHex32(this.h,"little"):t.split32(this.h,"little")};var u=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],d=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],f=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],p=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11];return ui}(),e.hmac=function(){if(ci)return li;ci=1;var t=Un(),e=Bn();function r(e,n,i){if(!(this instanceof r))return new r(e,n,i);this.Hash=e,this.blockSize=e.blockSize/8,this.outSize=e.outSize/8,this.inner=null,this.outer=null,this._init(t.toArray(n,i))}return li=r,r.prototype._init=function(t){t.length>this.blockSize&&(t=(new this.Hash).update(t).digest()),e(t.length<=this.blockSize);for(var r=t.length;r<this.blockSize;r++)t.push(0);for(r=0;r<t.length;r++)t[r]^=54;for(this.inner=(new this.Hash).update(t),r=0;r<t.length;r++)t[r]^=106;this.outer=(new this.Hash).update(t)},r.prototype.update=function(t,e){return this.inner.update(t,e),this},r.prototype.digest=function(t){return this.outer.update(this.inner.digest()),this.outer.digest(t)},li}(),e.sha1=e.sha.sha1,e.sha256=e.sha.sha256,e.sha224=e.sha.sha224,e.sha384=e.sha.sha384,e.sha512=e.sha.sha512,e.ripemd160=e.ripemd.ripemd160}(Pn)),Pn),fi=n(di);function pi(t,e,r){return r={path:e,exports:{},require:function(t,e){return function(){throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}(null==e&&r.path)}},t(r,r.exports),r.exports}var mi=gi;function gi(t,e){if(!t)throw new Error(e||"Assertion failed")}gi.equal=function(t,e,r){if(t!=e)throw new Error(r||"Assertion failed: "+t+" != "+e)};var yi=pi(function(t,e){var r=e;function n(t){return 1===t.length?"0"+t:t}function i(t){for(var e="",r=0;r<t.length;r++)e+=n(t[r].toString(16));return e}r.toArray=function(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var r=[];if("string"!=typeof t){for(var n=0;n<t.length;n++)r[n]=0|t[n];return r}if("hex"===e){(t=t.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(t="0"+t);for(n=0;n<t.length;n+=2)r.push(parseInt(t[n]+t[n+1],16))}else for(n=0;n<t.length;n++){var i=t.charCodeAt(n),s=i>>8,o=255&i;s?r.push(s,o):r.push(o)}return r},r.zero2=n,r.toHex=i,r.encode=function(t,e){return"hex"===e?i(t):t}}),vi=pi(function(t,e){var r=e;r.assert=mi,r.toArray=yi.toArray,r.zero2=yi.zero2,r.toHex=yi.toHex,r.encode=yi.encode,r.getNAF=function(t,e,r){var n,i=new Array(Math.max(t.bitLength(),r)+1);for(n=0;n<i.length;n+=1)i[n]=0;var s=1<<e+1,o=t.clone();for(n=0;n<i.length;n++){var a,l=o.andln(s-1);o.isOdd()?(a=l>(s>>1)-1?(s>>1)-l:l,o.isubn(a)):a=0,i[n]=a,o.iushrn(1)}return i},r.getJSF=function(t,e){var r=[[],[]];t=t.clone(),e=e.clone();for(var n,i=0,s=0;t.cmpn(-i)>0||e.cmpn(-s)>0;){var o,a,l=t.andln(3)+i&3,c=e.andln(3)+s&3;3===l&&(l=-1),3===c&&(c=-1),o=1&l?3!==(n=t.andln(7)+i&7)&&5!==n||2!==c?l:-l:0,r[0].push(o),a=1&c?3!==(n=e.andln(7)+s&7)&&5!==n||2!==l?c:-c:0,r[1].push(a),2*i===o+1&&(i=1-i),2*s===a+1&&(s=1-s),t.iushrn(1),e.iushrn(1)}return r},r.cachedProperty=function(t,e,r){var n="_"+e;t.prototype[e]=function(){return void 0!==this[n]?this[n]:this[n]=r.call(this)}},r.parseBytes=function(t){return"string"==typeof t?r.toArray(t,"hex"):t},r.intFromLE=function(t){return new l(t,"hex","le")}}),wi=vi.getNAF,bi=vi.getJSF,Ei=vi.assert;function Ai(t,e){this.type=t,this.p=new l(e.p,16),this.red=e.prime?l.red(e.prime):l.mont(this.p),this.zero=new l(0).toRed(this.red),this.one=new l(1).toRed(this.red),this.two=new l(2).toRed(this.red),this.n=e.n&&new l(e.n,16),this.g=e.g&&this.pointFromJSON(e.g,e.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var r=this.n&&this.p.div(this.n);!r||r.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}var ki=Ai;function Si(t,e){this.curve=t,this.type=e,this.precomputed=null}Ai.prototype.point=function(){throw new Error("Not implemented")},Ai.prototype.validate=function(){throw new Error("Not implemented")},Ai.prototype._fixedNafMul=function(t,e){Ei(t.precomputed);var r=t._getDoubles(),n=wi(e,1,this._bitLength),i=(1<<r.step+1)-(r.step%2==0?2:1);i/=3;var s,o,a=[];for(s=0;s<n.length;s+=r.step){o=0;for(var l=s+r.step-1;l>=s;l--)o=(o<<1)+n[l];a.push(o)}for(var c=this.jpoint(null,null,null),h=this.jpoint(null,null,null),u=i;u>0;u--){for(s=0;s<a.length;s++)(o=a[s])===u?h=h.mixedAdd(r.points[s]):o===-u&&(h=h.mixedAdd(r.points[s].neg()));c=c.add(h)}return c.toP()},Ai.prototype._wnafMul=function(t,e){var r=4,n=t._getNAFPoints(r);r=n.wnd;for(var i=n.points,s=wi(e,r,this._bitLength),o=this.jpoint(null,null,null),a=s.length-1;a>=0;a--){for(var l=0;a>=0&&0===s[a];a--)l++;if(a>=0&&l++,o=o.dblp(l),a<0)break;var c=s[a];Ei(0!==c),o="affine"===t.type?c>0?o.mixedAdd(i[c-1>>1]):o.mixedAdd(i[-c-1>>1].neg()):c>0?o.add(i[c-1>>1]):o.add(i[-c-1>>1].neg())}return"affine"===t.type?o.toP():o},Ai.prototype._wnafMulAdd=function(t,e,r,n,i){var s,o,a,l=this._wnafT1,c=this._wnafT2,h=this._wnafT3,u=0;for(s=0;s<n;s++){var d=(a=e[s])._getNAFPoints(t);l[s]=d.wnd,c[s]=d.points}for(s=n-1;s>=1;s-=2){var f=s-1,p=s;if(1===l[f]&&1===l[p]){var m=[e[f],null,null,e[p]];0===e[f].y.cmp(e[p].y)?(m[1]=e[f].add(e[p]),m[2]=e[f].toJ().mixedAdd(e[p].neg())):0===e[f].y.cmp(e[p].y.redNeg())?(m[1]=e[f].toJ().mixedAdd(e[p]),m[2]=e[f].add(e[p].neg())):(m[1]=e[f].toJ().mixedAdd(e[p]),m[2]=e[f].toJ().mixedAdd(e[p].neg()));var g=[-3,-1,-5,-7,0,7,5,1,3],y=bi(r[f],r[p]);for(u=Math.max(y[0].length,u),h[f]=new Array(u),h[p]=new Array(u),o=0;o<u;o++){var v=0|y[0][o],w=0|y[1][o];h[f][o]=g[3*(v+1)+(w+1)],h[p][o]=0,c[f]=m}}else h[f]=wi(r[f],l[f],this._bitLength),h[p]=wi(r[p],l[p],this._bitLength),u=Math.max(h[f].length,u),u=Math.max(h[p].length,u)}var b=this.jpoint(null,null,null),E=this._wnafT4;for(s=u;s>=0;s--){for(var A=0;s>=0;){var k=!0;for(o=0;o<n;o++)E[o]=0|h[o][s],0!==E[o]&&(k=!1);if(!k)break;A++,s--}if(s>=0&&A++,b=b.dblp(A),s<0)break;for(o=0;o<n;o++){var S=E[o];0!==S&&(S>0?a=c[o][S-1>>1]:S<0&&(a=c[o][-S-1>>1].neg()),b="affine"===a.type?b.mixedAdd(a):b.add(a))}}for(s=0;s<n;s++)c[s]=null;return i?b:b.toP()},Ai.BasePoint=Si,Si.prototype.eq=function(){throw new Error("Not implemented")},Si.prototype.validate=function(){return this.curve.validate(this)},Ai.prototype.decodePoint=function(t,e){t=vi.toArray(t,e);var r=this.p.byteLength();if((4===t[0]||6===t[0]||7===t[0])&&t.length-1==2*r)return 6===t[0]?Ei(t[t.length-1]%2==0):7===t[0]&&Ei(t[t.length-1]%2==1),this.point(t.slice(1,1+r),t.slice(1+r,1+2*r));if((2===t[0]||3===t[0])&&t.length-1===r)return this.pointFromX(t.slice(1,1+r),3===t[0]);throw new Error("Unknown point format")},Si.prototype.encodeCompressed=function(t){return this.encode(t,!0)},Si.prototype._encode=function(t){var e=this.curve.p.byteLength(),r=this.getX().toArray("be",e);return t?[this.getY().isEven()?2:3].concat(r):[4].concat(r,this.getY().toArray("be",e))},Si.prototype.encode=function(t,e){return vi.encode(this._encode(e),t)},Si.prototype.precompute=function(t){if(this.precomputed)return this;var e={doubles:null,naf:null,beta:null};return e.naf=this._getNAFPoints(8),e.doubles=this._getDoubles(4,t),e.beta=this._getBeta(),this.precomputed=e,this},Si.prototype._hasDoubles=function(t){if(!this.precomputed)return!1;var e=this.precomputed.doubles;return!!e&&e.points.length>=Math.ceil((t.bitLength()+1)/e.step)},Si.prototype._getDoubles=function(t,e){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var r=[this],n=this,i=0;i<e;i+=t){for(var s=0;s<t;s++)n=n.dbl();r.push(n)}return{step:t,points:r}},Si.prototype._getNAFPoints=function(t){if(this.precomputed&&this.precomputed.naf)return this.precomputed.naf;for(var e=[this],r=(1<<t)-1,n=1===r?null:this.dbl(),i=1;i<r;i++)e[i]=e[i-1].add(n);return{wnd:t,points:e}},Si.prototype._getBeta=function(){return null},Si.prototype.dblp=function(t){for(var e=this,r=0;r<t;r++)e=e.dbl();return e};var Ci=pi(function(t){"function"==typeof Object.create?t.exports=function(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:t.exports=function(t,e){if(e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}}}),xi=vi.assert;function _i(t){ki.call(this,"short",t),this.a=new l(t.a,16).toRed(this.red),this.b=new l(t.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=0===this.a.fromRed().cmpn(0),this.threeA=0===this.a.fromRed().sub(this.p).cmpn(-3),this.endo=this._getEndomorphism(t),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}Ci(_i,ki);var Ii=_i;function Ti(t,e,r,n){ki.BasePoint.call(this,t,"affine"),null===e&&null===r?(this.x=null,this.y=null,this.inf=!0):(this.x=new l(e,16),this.y=new l(r,16),n&&(this.x.forceRed(this.curve.red),this.y.forceRed(this.curve.red)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.inf=!1)}function Pi(t,e,r,n){ki.BasePoint.call(this,t,"jacobian"),null===e&&null===r&&null===n?(this.x=this.curve.one,this.y=this.curve.one,this.z=new l(0)):(this.x=new l(e,16),this.y=new l(r,16),this.z=new l(n,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}_i.prototype._getEndomorphism=function(t){if(this.zeroA&&this.g&&this.n&&1===this.p.modn(3)){var e,r;if(t.beta)e=new l(t.beta,16).toRed(this.red);else{var n=this._getEndoRoots(this.p);e=(e=n[0].cmp(n[1])<0?n[0]:n[1]).toRed(this.red)}if(t.lambda)r=new l(t.lambda,16);else{var i=this._getEndoRoots(this.n);0===this.g.mul(i[0]).x.cmp(this.g.x.redMul(e))?r=i[0]:(r=i[1],xi(0===this.g.mul(r).x.cmp(this.g.x.redMul(e))))}return{beta:e,lambda:r,basis:t.basis?t.basis.map(function(t){return{a:new l(t.a,16),b:new l(t.b,16)}}):this._getEndoBasis(r)}}},_i.prototype._getEndoRoots=function(t){var e=t===this.p?this.red:l.mont(t),r=new l(2).toRed(e).redInvm(),n=r.redNeg(),i=new l(3).toRed(e).redNeg().redSqrt().redMul(r);return[n.redAdd(i).fromRed(),n.redSub(i).fromRed()]},_i.prototype._getEndoBasis=function(t){for(var e,r,n,i,s,o,a,c,h,u=this.n.ushrn(Math.floor(this.n.bitLength()/2)),d=t,f=this.n.clone(),p=new l(1),m=new l(0),g=new l(0),y=new l(1),v=0;0!==d.cmpn(0);){var w=f.div(d);c=f.sub(w.mul(d)),h=g.sub(w.mul(p));var b=y.sub(w.mul(m));if(!n&&c.cmp(u)<0)e=a.neg(),r=p,n=c.neg(),i=h;else if(n&&2===++v)break;a=c,f=d,d=c,g=p,p=h,y=m,m=b}s=c.neg(),o=h;var E=n.sqr().add(i.sqr());return s.sqr().add(o.sqr()).cmp(E)>=0&&(s=e,o=r),n.negative&&(n=n.neg(),i=i.neg()),s.negative&&(s=s.neg(),o=o.neg()),[{a:n,b:i},{a:s,b:o}]},_i.prototype._endoSplit=function(t){var e=this.endo.basis,r=e[0],n=e[1],i=n.b.mul(t).divRound(this.n),s=r.b.neg().mul(t).divRound(this.n),o=i.mul(r.a),a=s.mul(n.a),l=i.mul(r.b),c=s.mul(n.b);return{k1:t.sub(o).sub(a),k2:l.add(c).neg()}},_i.prototype.pointFromX=function(t,e){(t=new l(t,16)).red||(t=t.toRed(this.red));var r=t.redSqr().redMul(t).redIAdd(t.redMul(this.a)).redIAdd(this.b),n=r.redSqrt();if(0!==n.redSqr().redSub(r).cmp(this.zero))throw new Error("invalid point");var i=n.fromRed().isOdd();return(e&&!i||!e&&i)&&(n=n.redNeg()),this.point(t,n)},_i.prototype.validate=function(t){if(t.inf)return!0;var e=t.x,r=t.y,n=this.a.redMul(e),i=e.redSqr().redMul(e).redIAdd(n).redIAdd(this.b);return 0===r.redSqr().redISub(i).cmpn(0)},_i.prototype._endoWnafMulAdd=function(t,e,r){for(var n=this._endoWnafT1,i=this._endoWnafT2,s=0;s<t.length;s++){var o=this._endoSplit(e[s]),a=t[s],l=a._getBeta();o.k1.negative&&(o.k1.ineg(),a=a.neg(!0)),o.k2.negative&&(o.k2.ineg(),l=l.neg(!0)),n[2*s]=a,n[2*s+1]=l,i[2*s]=o.k1,i[2*s+1]=o.k2}for(var c=this._wnafMulAdd(1,n,i,2*s,r),h=0;h<2*s;h++)n[h]=null,i[h]=null;return c},Ci(Ti,ki.BasePoint),_i.prototype.point=function(t,e,r){return new Ti(this,t,e,r)},_i.prototype.pointFromJSON=function(t,e){return Ti.fromJSON(this,t,e)},Ti.prototype._getBeta=function(){if(this.curve.endo){var t=this.precomputed;if(t&&t.beta)return t.beta;var e=this.curve.point(this.x.redMul(this.curve.endo.beta),this.y);if(t){var r=this.curve,n=function(t){return r.point(t.x.redMul(r.endo.beta),t.y)};t.beta=e,e.precomputed={beta:null,naf:t.naf&&{wnd:t.naf.wnd,points:t.naf.points.map(n)},doubles:t.doubles&&{step:t.doubles.step,points:t.doubles.points.map(n)}}}return e}},Ti.prototype.toJSON=function(){return this.precomputed?[this.x,this.y,this.precomputed&&{doubles:this.precomputed.doubles&&{step:this.precomputed.doubles.step,points:this.precomputed.doubles.points.slice(1)},naf:this.precomputed.naf&&{wnd:this.precomputed.naf.wnd,points:this.precomputed.naf.points.slice(1)}}]:[this.x,this.y]},Ti.fromJSON=function(t,e,r){"string"==typeof e&&(e=JSON.parse(e));var n=t.point(e[0],e[1],r);if(!e[2])return n;function i(e){return t.point(e[0],e[1],r)}var s=e[2];return n.precomputed={beta:null,doubles:s.doubles&&{step:s.doubles.step,points:[n].concat(s.doubles.points.map(i))},naf:s.naf&&{wnd:s.naf.wnd,points:[n].concat(s.naf.points.map(i))}},n},Ti.prototype.inspect=function(){return this.isInfinity()?"<EC Point Infinity>":"<EC Point x: "+this.x.fromRed().toString(16,2)+" y: "+this.y.fromRed().toString(16,2)+">"},Ti.prototype.isInfinity=function(){return this.inf},Ti.prototype.add=function(t){if(this.inf)return t;if(t.inf)return this;if(this.eq(t))return this.dbl();if(this.neg().eq(t))return this.curve.point(null,null);if(0===this.x.cmp(t.x))return this.curve.point(null,null);var e=this.y.redSub(t.y);0!==e.cmpn(0)&&(e=e.redMul(this.x.redSub(t.x).redInvm()));var r=e.redSqr().redISub(this.x).redISub(t.x),n=e.redMul(this.x.redSub(r)).redISub(this.y);return this.curve.point(r,n)},Ti.prototype.dbl=function(){if(this.inf)return this;var t=this.y.redAdd(this.y);if(0===t.cmpn(0))return this.curve.point(null,null);var e=this.curve.a,r=this.x.redSqr(),n=t.redInvm(),i=r.redAdd(r).redIAdd(r).redIAdd(e).redMul(n),s=i.redSqr().redISub(this.x.redAdd(this.x)),o=i.redMul(this.x.redSub(s)).redISub(this.y);return this.curve.point(s,o)},Ti.prototype.getX=function(){return this.x.fromRed()},Ti.prototype.getY=function(){return this.y.fromRed()},Ti.prototype.mul=function(t){return t=new l(t,16),this.isInfinity()?this:this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve.endo?this.curve._endoWnafMulAdd([this],[t]):this.curve._wnafMul(this,t)},Ti.prototype.mulAdd=function(t,e,r){var n=[this,e],i=[t,r];return this.curve.endo?this.curve._endoWnafMulAdd(n,i):this.curve._wnafMulAdd(1,n,i,2)},Ti.prototype.jmulAdd=function(t,e,r){var n=[this,e],i=[t,r];return this.curve.endo?this.curve._endoWnafMulAdd(n,i,!0):this.curve._wnafMulAdd(1,n,i,2,!0)},Ti.prototype.eq=function(t){return this===t||this.inf===t.inf&&(this.inf||0===this.x.cmp(t.x)&&0===this.y.cmp(t.y))},Ti.prototype.neg=function(t){if(this.inf)return this;var e=this.curve.point(this.x,this.y.redNeg());if(t&&this.precomputed){var r=this.precomputed,n=function(t){return t.neg()};e.precomputed={naf:r.naf&&{wnd:r.naf.wnd,points:r.naf.points.map(n)},doubles:r.doubles&&{step:r.doubles.step,points:r.doubles.points.map(n)}}}return e},Ti.prototype.toJ=function(){return this.inf?this.curve.jpoint(null,null,null):this.curve.jpoint(this.x,this.y,this.curve.one)},Ci(Pi,ki.BasePoint),_i.prototype.jpoint=function(t,e,r){return new Pi(this,t,e,r)},Pi.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var t=this.z.redInvm(),e=t.redSqr(),r=this.x.redMul(e),n=this.y.redMul(e).redMul(t);return this.curve.point(r,n)},Pi.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},Pi.prototype.add=function(t){if(this.isInfinity())return t;if(t.isInfinity())return this;var e=t.z.redSqr(),r=this.z.redSqr(),n=this.x.redMul(e),i=t.x.redMul(r),s=this.y.redMul(e.redMul(t.z)),o=t.y.redMul(r.redMul(this.z)),a=n.redSub(i),l=s.redSub(o);if(0===a.cmpn(0))return 0!==l.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var c=a.redSqr(),h=c.redMul(a),u=n.redMul(c),d=l.redSqr().redIAdd(h).redISub(u).redISub(u),f=l.redMul(u.redISub(d)).redISub(s.redMul(h)),p=this.z.redMul(t.z).redMul(a);return this.curve.jpoint(d,f,p)},Pi.prototype.mixedAdd=function(t){if(this.isInfinity())return t.toJ();if(t.isInfinity())return this;var e=this.z.redSqr(),r=this.x,n=t.x.redMul(e),i=this.y,s=t.y.redMul(e).redMul(this.z),o=r.redSub(n),a=i.redSub(s);if(0===o.cmpn(0))return 0!==a.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var l=o.redSqr(),c=l.redMul(o),h=r.redMul(l),u=a.redSqr().redIAdd(c).redISub(h).redISub(h),d=a.redMul(h.redISub(u)).redISub(i.redMul(c)),f=this.z.redMul(o);return this.curve.jpoint(u,d,f)},Pi.prototype.dblp=function(t){if(0===t)return this;if(this.isInfinity())return this;if(!t)return this.dbl();var e;if(this.curve.zeroA||this.curve.threeA){var r=this;for(e=0;e<t;e++)r=r.dbl();return r}var n=this.curve.a,i=this.curve.tinv,s=this.x,o=this.y,a=this.z,l=a.redSqr().redSqr(),c=o.redAdd(o);for(e=0;e<t;e++){var h=s.redSqr(),u=c.redSqr(),d=u.redSqr(),f=h.redAdd(h).redIAdd(h).redIAdd(n.redMul(l)),p=s.redMul(u),m=f.redSqr().redISub(p.redAdd(p)),g=p.redISub(m),y=f.redMul(g);y=y.redIAdd(y).redISub(d);var v=c.redMul(a);e+1<t&&(l=l.redMul(d)),s=m,a=v,c=y}return this.curve.jpoint(s,c.redMul(i),a)},Pi.prototype.dbl=function(){return this.isInfinity()?this:this.curve.zeroA?this._zeroDbl():this.curve.threeA?this._threeDbl():this._dbl()},Pi.prototype._zeroDbl=function(){var t,e,r;if(this.zOne){var n=this.x.redSqr(),i=this.y.redSqr(),s=i.redSqr(),o=this.x.redAdd(i).redSqr().redISub(n).redISub(s);o=o.redIAdd(o);var a=n.redAdd(n).redIAdd(n),l=a.redSqr().redISub(o).redISub(o),c=s.redIAdd(s);c=(c=c.redIAdd(c)).redIAdd(c),t=l,e=a.redMul(o.redISub(l)).redISub(c),r=this.y.redAdd(this.y)}else{var h=this.x.redSqr(),u=this.y.redSqr(),d=u.redSqr(),f=this.x.redAdd(u).redSqr().redISub(h).redISub(d);f=f.redIAdd(f);var p=h.redAdd(h).redIAdd(h),m=p.redSqr(),g=d.redIAdd(d);g=(g=g.redIAdd(g)).redIAdd(g),t=m.redISub(f).redISub(f),e=p.redMul(f.redISub(t)).redISub(g),r=(r=this.y.redMul(this.z)).redIAdd(r)}return this.curve.jpoint(t,e,r)},Pi.prototype._threeDbl=function(){var t,e,r;if(this.zOne){var n=this.x.redSqr(),i=this.y.redSqr(),s=i.redSqr(),o=this.x.redAdd(i).redSqr().redISub(n).redISub(s);o=o.redIAdd(o);var a=n.redAdd(n).redIAdd(n).redIAdd(this.curve.a),l=a.redSqr().redISub(o).redISub(o);t=l;var c=s.redIAdd(s);c=(c=c.redIAdd(c)).redIAdd(c),e=a.redMul(o.redISub(l)).redISub(c),r=this.y.redAdd(this.y)}else{var h=this.z.redSqr(),u=this.y.redSqr(),d=this.x.redMul(u),f=this.x.redSub(h).redMul(this.x.redAdd(h));f=f.redAdd(f).redIAdd(f);var p=d.redIAdd(d),m=(p=p.redIAdd(p)).redAdd(p);t=f.redSqr().redISub(m),r=this.y.redAdd(this.z).redSqr().redISub(u).redISub(h);var g=u.redSqr();g=(g=(g=g.redIAdd(g)).redIAdd(g)).redIAdd(g),e=f.redMul(p.redISub(t)).redISub(g)}return this.curve.jpoint(t,e,r)},Pi.prototype._dbl=function(){var t=this.curve.a,e=this.x,r=this.y,n=this.z,i=n.redSqr().redSqr(),s=e.redSqr(),o=r.redSqr(),a=s.redAdd(s).redIAdd(s).redIAdd(t.redMul(i)),l=e.redAdd(e),c=(l=l.redIAdd(l)).redMul(o),h=a.redSqr().redISub(c.redAdd(c)),u=c.redISub(h),d=o.redSqr();d=(d=(d=d.redIAdd(d)).redIAdd(d)).redIAdd(d);var f=a.redMul(u).redISub(d),p=r.redAdd(r).redMul(n);return this.curve.jpoint(h,f,p)},Pi.prototype.trpl=function(){if(!this.curve.zeroA)return this.dbl().add(this);var t=this.x.redSqr(),e=this.y.redSqr(),r=this.z.redSqr(),n=e.redSqr(),i=t.redAdd(t).redIAdd(t),s=i.redSqr(),o=this.x.redAdd(e).redSqr().redISub(t).redISub(n),a=(o=(o=(o=o.redIAdd(o)).redAdd(o).redIAdd(o)).redISub(s)).redSqr(),l=n.redIAdd(n);l=(l=(l=l.redIAdd(l)).redIAdd(l)).redIAdd(l);var c=i.redIAdd(o).redSqr().redISub(s).redISub(a).redISub(l),h=e.redMul(c);h=(h=h.redIAdd(h)).redIAdd(h);var u=this.x.redMul(a).redISub(h);u=(u=u.redIAdd(u)).redIAdd(u);var d=this.y.redMul(c.redMul(l.redISub(c)).redISub(o.redMul(a)));d=(d=(d=d.redIAdd(d)).redIAdd(d)).redIAdd(d);var f=this.z.redAdd(o).redSqr().redISub(r).redISub(a);return this.curve.jpoint(u,d,f)},Pi.prototype.mul=function(t,e){return t=new l(t,e),this.curve._wnafMul(this,t)},Pi.prototype.eq=function(t){if("affine"===t.type)return this.eq(t.toJ());if(this===t)return!0;var e=this.z.redSqr(),r=t.z.redSqr();if(0!==this.x.redMul(r).redISub(t.x.redMul(e)).cmpn(0))return!1;var n=e.redMul(this.z),i=r.redMul(t.z);return 0===this.y.redMul(i).redISub(t.y.redMul(n)).cmpn(0)},Pi.prototype.eqXToP=function(t){var e=this.z.redSqr(),r=t.toRed(this.curve.red).redMul(e);if(0===this.x.cmp(r))return!0;for(var n=t.clone(),i=this.curve.redN.redMul(e);;){if(n.iadd(this.curve.n),n.cmp(this.curve.p)>=0)return!1;if(r.redIAdd(i),0===this.x.cmp(r))return!0}},Pi.prototype.inspect=function(){return this.isInfinity()?"<EC JPoint Infinity>":"<EC JPoint x: "+this.x.toString(16,2)+" y: "+this.y.toString(16,2)+" z: "+this.z.toString(16,2)+">"},Pi.prototype.isInfinity=function(){return 0===this.z.cmpn(0)};var Ni=pi(function(t,e){var r=e;r.base=ki,r.short=Ii,r.mont=null,r.edwards=null}),Bi=pi(function(t,e){var r,n=e,i=vi.assert;function s(t){"short"===t.type?this.curve=new Ni.short(t):"edwards"===t.type?this.curve=new Ni.edwards(t):this.curve=new Ni.mont(t),this.g=this.curve.g,this.n=this.curve.n,this.hash=t.hash,i(this.g.validate(),"Invalid curve"),i(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}function o(t,e){Object.defineProperty(n,t,{configurable:!0,enumerable:!0,get:function(){var r=new s(e);return Object.defineProperty(n,t,{configurable:!0,enumerable:!0,value:r}),r}})}n.PresetCurve=s,o("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:fi.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),o("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:fi.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),o("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:fi.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),o("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:fi.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),o("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:fi.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),o("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:fi.sha256,gRed:!1,g:["9"]}),o("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:fi.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});try{r=null.crash()}catch(t){r=void 0}o("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:fi.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",r]})});function Mi(t){if(!(this instanceof Mi))return new Mi(t);this.hash=t.hash,this.predResist=!!t.predResist,this.outLen=this.hash.outSize,this.minEntropy=t.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var e=yi.toArray(t.entropy,t.entropyEnc||"hex"),r=yi.toArray(t.nonce,t.nonceEnc||"hex"),n=yi.toArray(t.pers,t.persEnc||"hex");mi(e.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(e,r,n)}var Ri=Mi;Mi.prototype._init=function(t,e,r){var n=t.concat(e).concat(r);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var i=0;i<this.V.length;i++)this.K[i]=0,this.V[i]=1;this._update(n),this._reseed=1,this.reseedInterval=281474976710656},Mi.prototype._hmac=function(){return new fi.hmac(this.hash,this.K)},Mi.prototype._update=function(t){var e=this._hmac().update(this.V).update([0]);t&&(e=e.update(t)),this.K=e.digest(),this.V=this._hmac().update(this.V).digest(),t&&(this.K=this._hmac().update(this.V).update([1]).update(t).digest(),this.V=this._hmac().update(this.V).digest())},Mi.prototype.reseed=function(t,e,r,n){"string"!=typeof e&&(n=r,r=e,e=null),t=yi.toArray(t,e),r=yi.toArray(r,n),mi(t.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(t.concat(r||[])),this._reseed=1},Mi.prototype.generate=function(t,e,r,n){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");"string"!=typeof e&&(n=r,r=e,e=null),r&&(r=yi.toArray(r,n||"hex"),this._update(r));for(var i=[];i.length<t;)this.V=this._hmac().update(this.V).digest(),i=i.concat(this.V);var s=i.slice(0,t);return this._update(r),this._reseed++,yi.encode(s,e)};var Fi=vi.assert;function Oi(t,e){this.ec=t,this.priv=null,this.pub=null,e.priv&&this._importPrivate(e.priv,e.privEnc),e.pub&&this._importPublic(e.pub,e.pubEnc)}var Di=Oi;Oi.fromPublic=function(t,e,r){return e instanceof Oi?e:new Oi(t,{pub:e,pubEnc:r})},Oi.fromPrivate=function(t,e,r){return e instanceof Oi?e:new Oi(t,{priv:e,privEnc:r})},Oi.prototype.validate=function(){var t=this.getPublic();return t.isInfinity()?{result:!1,reason:"Invalid public key"}:t.validate()?t.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}},Oi.prototype.getPublic=function(t,e){return"string"==typeof t&&(e=t,t=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),e?this.pub.encode(e,t):this.pub},Oi.prototype.getPrivate=function(t){return"hex"===t?this.priv.toString(16,2):this.priv},Oi.prototype._importPrivate=function(t,e){this.priv=new l(t,e||16),this.priv=this.priv.umod(this.ec.curve.n)},Oi.prototype._importPublic=function(t,e){if(t.x||t.y)return"mont"===this.ec.curve.type?Fi(t.x,"Need x coordinate"):"short"!==this.ec.curve.type&&"edwards"!==this.ec.curve.type||Fi(t.x&&t.y,"Need both x and y coordinate"),void(this.pub=this.ec.curve.point(t.x,t.y));this.pub=this.ec.curve.decodePoint(t,e)},Oi.prototype.derive=function(t){return t.validate()||Fi(t.validate(),"public point not validated"),t.mul(this.priv).getX()},Oi.prototype.sign=function(t,e,r){return this.ec.sign(t,this,e,r)},Oi.prototype.verify=function(t,e,r){return this.ec.verify(t,e,this,void 0,r)},Oi.prototype.inspect=function(){return"<Key priv: "+(this.priv&&this.priv.toString(16,2))+" pub: "+(this.pub&&this.pub.inspect())+" >"};var Li=vi.assert;function Ui(t,e){if(t instanceof Ui)return t;this._importDER(t,e)||(Li(t.r&&t.s,"Signature without r or s"),this.r=new l(t.r,16),this.s=new l(t.s,16),void 0===t.recoveryParam?this.recoveryParam=null:this.recoveryParam=t.recoveryParam)}var qi=Ui;function zi(){this.place=0}function ji(t,e){var r=t[e.place++];if(!(128&r))return r;var n=15&r;if(0===n||n>4)return!1;if(0===t[e.place])return!1;for(var i=0,s=0,o=e.place;s<n;s++,o++)i<<=8,i|=t[o],i>>>=0;return!(i<=127)&&(e.place=o,i)}function Gi(t){for(var e=0,r=t.length-1;!t[e]&&!(128&t[e+1])&&e<r;)e++;return 0===e?t:t.slice(e)}function Hi(t,e){if(e<128)t.push(e);else{var r=1+(Math.log(e)/Math.LN2>>>3);for(t.push(128|r);--r;)t.push(e>>>(r<<3)&255);t.push(e)}}Ui.prototype._importDER=function(t,e){t=vi.toArray(t,e);var r=new zi;if(48!==t[r.place++])return!1;var n=ji(t,r);if(!1===n)return!1;if(n+r.place!==t.length)return!1;if(2!==t[r.place++])return!1;var i=ji(t,r);if(!1===i)return!1;if(128&t[r.place])return!1;var s=t.slice(r.place,i+r.place);if(r.place+=i,2!==t[r.place++])return!1;var o=ji(t,r);if(!1===o)return!1;if(t.length!==o+r.place)return!1;if(128&t[r.place])return!1;var a=t.slice(r.place,o+r.place);if(0===s[0]){if(!(128&s[1]))return!1;s=s.slice(1)}if(0===a[0]){if(!(128&a[1]))return!1;a=a.slice(1)}return this.r=new l(s),this.s=new l(a),this.recoveryParam=null,!0},Ui.prototype.toDER=function(t){var e=this.r.toArray(),r=this.s.toArray();for(128&e[0]&&(e=[0].concat(e)),128&r[0]&&(r=[0].concat(r)),e=Gi(e),r=Gi(r);!(r[0]||128&r[1]);)r=r.slice(1);var n=[2];Hi(n,e.length),(n=n.concat(e)).push(2),Hi(n,r.length);var i=n.concat(r),s=[48];return Hi(s,i.length),s=s.concat(i),vi.encode(s,t)};var Wi=function(){throw new Error("unsupported")},Ki=vi.assert;function $i(t){if(!(this instanceof $i))return new $i(t);"string"==typeof t&&(Ki(Object.prototype.hasOwnProperty.call(Bi,t),"Unknown curve "+t),t=Bi[t]),t instanceof Bi.PresetCurve&&(t={curve:t}),this.curve=t.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=t.curve.g,this.g.precompute(t.curve.n.bitLength()+1),this.hash=t.hash||t.curve.hash}var Vi=$i;$i.prototype.keyPair=function(t){return new Di(this,t)},$i.prototype.keyFromPrivate=function(t,e){return Di.fromPrivate(this,t,e)},$i.prototype.keyFromPublic=function(t,e){return Di.fromPublic(this,t,e)},$i.prototype.genKeyPair=function(t){t||(t={});for(var e=new Ri({hash:this.hash,pers:t.pers,persEnc:t.persEnc||"utf8",entropy:t.entropy||Wi(this.hash.hmacStrength),entropyEnc:t.entropy&&t.entropyEnc||"utf8",nonce:this.n.toArray()}),r=this.n.byteLength(),n=this.n.sub(new l(2));;){var i=new l(e.generate(r));if(!(i.cmp(n)>0))return i.iaddn(1),this.keyFromPrivate(i)}},$i.prototype._truncateToN=function(t,e,r){var n;if(l.isBN(t)||"number"==typeof t)n=(t=new l(t,16)).byteLength();else if("object"==typeof t)n=t.length,t=new l(t,16);else{var i=t.toString();n=i.length+1>>>1,t=new l(i,16)}"number"!=typeof r&&(r=8*n);var s=r-this.n.bitLength();return s>0&&(t=t.ushrn(s)),!e&&t.cmp(this.n)>=0?t.sub(this.n):t},$i.prototype.sign=function(t,e,r,n){if("object"==typeof r&&(n=r,r=null),n||(n={}),"string"!=typeof t&&"number"!=typeof t&&!l.isBN(t)){Ki("object"==typeof t&&t&&"number"==typeof t.length,"Expected message to be an array-like, a hex string, or a BN instance"),Ki(t.length>>>0===t.length);for(var i=0;i<t.length;i++)Ki((255&t[i])===t[i])}e=this.keyFromPrivate(e,r),t=this._truncateToN(t,!1,n.msgBitLength),Ki(!t.isNeg(),"Can not sign a negative message");var s=this.n.byteLength(),o=e.getPrivate().toArray("be",s),a=t.toArray("be",s);Ki(new l(a).eq(t),"Can not sign message");for(var c=new Ri({hash:this.hash,entropy:o,nonce:a,pers:n.pers,persEnc:n.persEnc||"utf8"}),h=this.n.sub(new l(1)),u=0;;u++){var d=n.k?n.k(u):new l(c.generate(this.n.byteLength()));if(!((d=this._truncateToN(d,!0)).cmpn(1)<=0||d.cmp(h)>=0)){var f=this.g.mul(d);if(!f.isInfinity()){var p=f.getX(),m=p.umod(this.n);if(0!==m.cmpn(0)){var g=d.invm(this.n).mul(m.mul(e.getPrivate()).iadd(t));if(0!==(g=g.umod(this.n)).cmpn(0)){var y=(f.getY().isOdd()?1:0)|(0!==p.cmp(m)?2:0);return n.canonical&&g.cmp(this.nh)>0&&(g=this.n.sub(g),y^=1),new qi({r:m,s:g,recoveryParam:y})}}}}}},$i.prototype.verify=function(t,e,r,n,i){i||(i={}),t=this._truncateToN(t,!1,i.msgBitLength),r=this.keyFromPublic(r,n);var s=(e=new qi(e,"hex")).r,o=e.s;if(s.cmpn(1)<0||s.cmp(this.n)>=0)return!1;if(o.cmpn(1)<0||o.cmp(this.n)>=0)return!1;var a,l=o.invm(this.n),c=l.mul(t).umod(this.n),h=l.mul(s).umod(this.n);return this.curve._maxwellTrick?!(a=this.g.jmulAdd(c,r.getPublic(),h)).isInfinity()&&a.eqXToP(s):!(a=this.g.mulAdd(c,r.getPublic(),h)).isInfinity()&&0===a.getX().umod(this.n).cmp(s)},$i.prototype.recoverPubKey=function(t,e,r,n){Ki((3&r)===r,"The recovery param is more than two bits"),e=new qi(e,n);var i=this.n,s=new l(t),o=e.r,a=e.s,c=1&r,h=r>>1;if(o.cmp(this.curve.p.umod(this.curve.n))>=0&&h)throw new Error("Unable to find sencond key candinate");o=h?this.curve.pointFromX(o.add(this.curve.n),c):this.curve.pointFromX(o,c);var u=e.r.invm(i),d=i.sub(s).mul(u).umod(i),f=a.mul(u).umod(i);return this.g.mulAdd(d,o,f)},$i.prototype.getKeyRecoveryParam=function(t,e,r,n){if(null!==(e=new qi(e,n)).recoveryParam)return e.recoveryParam;for(var i=0;i<4;i++){var s;try{s=this.recoverPubKey(t,e,i)}catch(t){continue}if(s.eq(r))return i}throw new Error("Unable to find valid recovery factor")};var Ji=pi(function(t,e){var r=e;r.version="6.6.1",r.utils=vi,r.rand=function(){throw new Error("unsupported")},r.curve=Ni,r.curves=Bi,r.ec=Vi,r.eddsa=null}).ec;const Qi=new v("signing-key/5.8.0");let Yi=null;function Xi(){return Yi||(Yi=new Ji("secp256k1")),Yi}class Zi{constructor(t){dt(this,"curve","secp256k1"),dt(this,"privateKey",N(t)),32!==B(this.privateKey)&&Qi.throwArgumentError("invalid private key","privateKey","[[ REDACTED ]]");const e=Xi().keyFromPrivate(C(this.privateKey));dt(this,"publicKey","0x"+e.getPublic(!1,"hex")),dt(this,"compressedPublicKey","0x"+e.getPublic(!0,"hex")),dt(this,"_isSigningKey",!0)}_addPoint(t){const e=Xi().keyFromPublic(C(this.publicKey)),r=Xi().keyFromPublic(C(t));return"0x"+e.pub.add(r.pub).encodeCompressed("hex")}signDigest(t){const e=Xi().keyFromPrivate(C(this.privateKey)),r=C(t);32!==r.length&&Qi.throwArgumentError("bad digest length","digest",t);const n=e.sign(r,{canonical:!0});return L({recoveryParam:n.recoveryParam,r:D("0x"+n.r.toString(16),32),s:D("0x"+n.s.toString(16),32)})}computeSharedSecret(t){const e=Xi().keyFromPrivate(C(this.privateKey)),r=Xi().keyFromPublic(C(es(t)));return D("0x"+e.derive(r.getPublic()).toString(16),32)}static isSigningKey(t){return!(!t||!t._isSigningKey)}}function ts(t,e){const r=L(e),n={r:C(r.r),s:C(r.s)};return"0x"+Xi().recoverPubKey(C(t),n,r.recoveryParam).encode("hex",!1)}function es(t,e){const r=C(t);if(32===r.length){const t=new Zi(r);return e?"0x"+Xi().keyFromPrivate(r).getPublic(!0,"hex"):t.publicKey}return 33===r.length?e?N(r):"0x"+Xi().keyFromPublic(r).getPublic(!1,"hex"):65===r.length?e?"0x"+Xi().keyFromPublic(r).getPublic(!0,"hex"):N(r):Qi.throwArgumentError("invalid public or private key","key","[REDACTED]")}const rs=new v("transactions/5.8.0");var ns;function is(t){return"0x"===t?null:ye(t)}function ss(t){return"0x"===t?Be:K.from(t)}!function(t){t[t.legacy=0]="legacy",t[t.eip2930=1]="eip2930",t[t.eip1559=2]="eip1559"}(ns||(ns={}));const os=[{name:"nonce",maxLength:32,numeric:!0},{name:"gasPrice",maxLength:32,numeric:!0},{name:"gasLimit",maxLength:32,numeric:!0},{name:"to",length:20},{name:"value",maxLength:32,numeric:!0},{name:"data"}],as={chainId:!0,data:!0,gasLimit:!0,gasPrice:!0,nonce:!0,to:!0,type:!0,value:!0};function ls(t){return ye(M(ee(M(es(t),1)),12))}function cs(t,e){return ls(ts(C(t),e))}function hs(t,e){const r=_(K.from(t).toHexString());return r.length>32&&rs.throwArgumentError("invalid length for "+e,"transaction:"+e,t),r}function us(t,e){return{address:ye(t),storageKeys:(e||[]).map((e,r)=>(32!==B(e)&&rs.throwArgumentError("invalid access list storageKey",`accessList[${t}:${r}]`,e),e.toLowerCase()))}}function ds(t){if(Array.isArray(t))return t.map((t,e)=>Array.isArray(t)?(t.length>2&&rs.throwArgumentError("access list expected to be [ address, storageKeys[] ]",`value[${e}]`,t),us(t[0],t[1])):us(t.address,t.storageKeys));const e=Object.keys(t).map(e=>{const r=t[e].reduce((t,e)=>(t[e]=!0,t),{});return us(e,Object.keys(r).sort())});return e.sort((t,e)=>t.address.localeCompare(e.address)),e}function fs(t){return ds(t).map(t=>[t.address,t.storageKeys])}function ps(t,e){if(null!=t.gasPrice){const e=K.from(t.gasPrice),r=K.from(t.maxFeePerGas||0);e.eq(r)||rs.throwArgumentError("mismatch EIP-1559 gasPrice != maxFeePerGas","tx",{gasPrice:e,maxFeePerGas:r})}const r=[hs(t.chainId||0,"chainId"),hs(t.nonce||0,"nonce"),hs(t.maxPriorityFeePerGas||0,"maxPriorityFeePerGas"),hs(t.maxFeePerGas||0,"maxFeePerGas"),hs(t.gasLimit||0,"gasLimit"),null!=t.to?ye(t.to):"0x",hs(t.value||0,"value"),t.data||"0x",fs(t.accessList||[])];if(e){const t=L(e);r.push(hs(t.recoveryParam,"recoveryParam")),r.push(_(t.r)),r.push(_(t.s))}return R(["0x02",oe(r)])}function ms(t,e){const r=[hs(t.chainId||0,"chainId"),hs(t.nonce||0,"nonce"),hs(t.gasPrice||0,"gasPrice"),hs(t.gasLimit||0,"gasLimit"),null!=t.to?ye(t.to):"0x",hs(t.value||0,"value"),t.data||"0x",fs(t.accessList||[])];if(e){const t=L(e);r.push(hs(t.recoveryParam,"recoveryParam")),r.push(_(t.r)),r.push(_(t.s))}return R(["0x01",oe(r)])}function gs(t,e){if(null==t.type||0===t.type)return null!=t.accessList&&rs.throwArgumentError("untyped transactions do not support accessList; include type: 1","transaction",t),function(t,e){mt(t,as);const r=[];os.forEach(function(e){let n=t[e.name]||[];const i={};e.numeric&&(i.hexPad="left"),n=C(N(n,i)),e.length&&n.length!==e.length&&n.length>0&&rs.throwArgumentError("invalid length for "+e.name,"transaction:"+e.name,n),e.maxLength&&(n=_(n),n.length>e.maxLength&&rs.throwArgumentError("invalid length for "+e.name,"transaction:"+e.name,n)),r.push(N(n))});let n=0;if(null!=t.chainId?(n=t.chainId,"number"!=typeof n&&rs.throwArgumentError("invalid transaction.chainId","transaction",t)):e&&!A(e)&&e.v>28&&(n=Math.floor((e.v-35)/2)),0!==n&&(r.push(N(n)),r.push("0x"),r.push("0x")),!e)return oe(r);const i=L(e);let s=27+i.recoveryParam;return 0!==n?(r.pop(),r.pop(),r.pop(),s+=2*n+8,i.v>28&&i.v!==s&&rs.throwArgumentError("transaction.chainId/signature.v mismatch","signature",e)):i.v!==s&&rs.throwArgumentError("transaction.chainId/signature.v mismatch","signature",e),r.push(N(s)),r.push(_(C(i.r))),r.push(_(C(i.s))),oe(r)}(t,e);switch(t.type){case 1:return ms(t,e);case 2:return ps(t,e)}return rs.throwError(`unsupported transaction type: ${t.type}`,v.errors.UNSUPPORTED_OPERATION,{operation:"serializeTransaction",transactionType:t.type})}function ys(t,e,r){try{const r=ss(e[0]).toNumber();if(0!==r&&1!==r)throw new Error("bad recid");t.v=r}catch(t){rs.throwArgumentError("invalid v for transaction type: 1","v",e[0])}t.r=D(e[1],32),t.s=D(e[2],32);try{const e=ee(r(t));t.from=cs(e,{r:t.r,s:t.s,recoveryParam:t.v})}catch(t){}}function vs(t){const e=C(t);if(e[0]>127)return function(t){const e=ce(t);9!==e.length&&6!==e.length&&rs.throwArgumentError("invalid raw transaction","rawTransaction",t);const r={nonce:ss(e[0]).toNumber(),gasPrice:ss(e[1]),gasLimit:ss(e[2]),to:is(e[3]),value:ss(e[4]),data:e[5],chainId:0};if(6===e.length)return r;try{r.v=K.from(e[6]).toNumber()}catch(t){return r}if(r.r=D(e[7],32),r.s=D(e[8],32),K.from(r.r).isZero()&&K.from(r.s).isZero())r.chainId=r.v,r.v=0;else{r.chainId=Math.floor((r.v-35)/2),r.chainId<0&&(r.chainId=0);let n=r.v-27;const i=e.slice(0,6);0!==r.chainId&&(i.push(N(r.chainId)),i.push("0x"),i.push("0x"),n-=2*r.chainId+8);const s=ee(oe(i));try{r.from=cs(s,{r:N(r.r),s:N(r.s),recoveryParam:n})}catch(t){}r.hash=ee(t)}return r.type=null,r}(e);switch(e[0]){case 1:return function(t){const e=ce(t.slice(1));8!==e.length&&11!==e.length&&rs.throwArgumentError("invalid component count for transaction type: 1","payload",N(t));const r={type:1,chainId:ss(e[0]).toNumber(),nonce:ss(e[1]).toNumber(),gasPrice:ss(e[2]),gasLimit:ss(e[3]),to:is(e[4]),value:ss(e[5]),data:e[6],accessList:ds(e[7])};return 8===e.length||(r.hash=ee(t),ys(r,e.slice(8),ms)),r}(e);case 2:return function(t){const e=ce(t.slice(1));9!==e.length&&12!==e.length&&rs.throwArgumentError("invalid component count for transaction type: 2","payload",N(t));const r=ss(e[2]),n=ss(e[3]),i={type:2,chainId:ss(e[0]).toNumber(),nonce:ss(e[1]).toNumber(),maxPriorityFeePerGas:r,maxFeePerGas:n,gasPrice:null,gasLimit:ss(e[4]),to:is(e[5]),value:ss(e[6]),data:e[7],accessList:ds(e[8])};return 9===e.length||(i.hash=ee(t),ys(i,e.slice(9),ps)),i}(e)}return rs.throwError(`unsupported transaction type: ${e[0]}`,v.errors.UNSUPPORTED_OPERATION,{operation:"parseTransaction",transactionType:e[0]})}var ws=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const bs=new v("contracts/5.8.0"),Es={chainId:!0,data:!0,from:!0,gasLimit:!0,gasPrice:!0,nonce:!0,to:!0,value:!0,type:!0,accessList:!0,maxFeePerGas:!0,maxPriorityFeePerGas:!0,customData:!0,ccipReadEnabled:!0};function As(t,e){return ws(this,void 0,void 0,function*(){const r=yield e;"string"!=typeof r&&bs.throwArgumentError("invalid address or ENS name","name",r);try{return ye(r)}catch(t){}t||bs.throwError("a provider or signer is needed to resolve ENS names",v.errors.UNSUPPORTED_OPERATION,{operation:"resolveName"});const n=yield t.resolveName(r);return null==n&&bs.throwArgumentError("resolver or addr is not configured for ENS name","name",r),n})}function ks(t,e,r){return ws(this,void 0,void 0,function*(){return Array.isArray(r)?yield Promise.all(r.map((r,n)=>ks(t,Array.isArray(e)?e[n]:e[r.name],r))):"address"===r.type?yield As(t,e):"tuple"===r.type?yield ks(t,e,r.components):"array"===r.baseType?Array.isArray(e)?yield Promise.all(e.map(e=>ks(t,e,r.arrayChildren))):Promise.reject(bs.makeError("invalid value for array",v.errors.INVALID_ARGUMENT,{argument:"value",value:e})):e})}function Ss(t,e,r){return ws(this,void 0,void 0,function*(){let n={};r.length===e.inputs.length+1&&"object"==typeof r[r.length-1]&&(n=gt(r.pop())),bs.checkArgumentCount(r.length,e.inputs.length,"passed to contract"),t.signer?n.from?n.from=pt({override:As(t.signer,n.from),signer:t.signer.getAddress()}).then(t=>ws(this,void 0,void 0,function*(){return ye(t.signer)!==t.override&&bs.throwError("Contract with a Signer cannot override from",v.errors.UNSUPPORTED_OPERATION,{operation:"overrides.from"}),t.override})):n.from=t.signer.getAddress():n.from&&(n.from=As(t.provider,n.from));const i=yield pt({args:ks(t.signer||t.provider,r,e.inputs),address:t.resolvedAddress,overrides:pt(n)||{}}),s=t.interface.encodeFunctionData(e,i.args),o={data:s,to:i.address},a=i.overrides;if(null!=a.nonce&&(o.nonce=K.from(a.nonce).toNumber()),null!=a.gasLimit&&(o.gasLimit=K.from(a.gasLimit)),null!=a.gasPrice&&(o.gasPrice=K.from(a.gasPrice)),null!=a.maxFeePerGas&&(o.maxFeePerGas=K.from(a.maxFeePerGas)),null!=a.maxPriorityFeePerGas&&(o.maxPriorityFeePerGas=K.from(a.maxPriorityFeePerGas)),null!=a.from&&(o.from=a.from),null!=a.type&&(o.type=a.type),null!=a.accessList&&(o.accessList=ds(a.accessList)),null==o.gasLimit&&null!=e.gas){let t=21e3;const r=C(s);for(let e=0;e<r.length;e++)t+=4,r[e]&&(t+=64);o.gasLimit=K.from(e.gas).add(t)}if(a.value){const t=K.from(a.value);t.isZero()||e.payable||bs.throwError("non-payable method cannot override value",v.errors.UNSUPPORTED_OPERATION,{operation:"overrides.value",value:n.value}),o.value=t}a.customData&&(o.customData=gt(a.customData)),a.ccipReadEnabled&&(o.ccipReadEnabled=!!a.ccipReadEnabled),delete n.nonce,delete n.gasLimit,delete n.gasPrice,delete n.from,delete n.value,delete n.type,delete n.accessList,delete n.maxFeePerGas,delete n.maxPriorityFeePerGas,delete n.customData,delete n.ccipReadEnabled;const l=Object.keys(n).filter(t=>null!=n[t]);return l.length&&bs.throwError(`cannot override ${l.map(t=>JSON.stringify(t)).join(",")}`,v.errors.UNSUPPORTED_OPERATION,{operation:"overrides",overrides:l}),o})}function Cs(t,e){const r=e.wait.bind(e);e.wait=e=>r(e).then(e=>(e.events=e.logs.map(r=>{let n=bt(r),i=null;try{i=t.interface.parseLog(r)}catch(t){}return i&&(n.args=i.args,n.decode=(e,r)=>t.interface.decodeEventLog(i.eventFragment,e,r),n.event=i.name,n.eventSignature=i.signature),n.removeListener=()=>t.provider,n.getBlock=()=>t.provider.getBlock(e.blockHash),n.getTransaction=()=>t.provider.getTransaction(e.transactionHash),n.getTransactionReceipt=()=>Promise.resolve(e),n}),e))}function xs(t,e,r){const n=t.signer||t.provider;return function(...i){return ws(this,void 0,void 0,function*(){let s;if(i.length===e.inputs.length+1&&"object"==typeof i[i.length-1]){const t=gt(i.pop());null!=t.blockTag&&(s=yield t.blockTag),delete t.blockTag,i.push(t)}null!=t.deployTransaction&&(yield t._deployed(s));const o=yield Ss(t,e,i),a=yield n.call(o,s);try{let n=t.interface.decodeFunctionResult(e,a);return r&&1===e.outputs.length&&(n=n[0]),n}catch(e){throw e.code===v.errors.CALL_EXCEPTION&&(e.address=t.address,e.args=i,e.transaction=o),e}})}}function _s(t,e,r){return e.constant?xs(t,e,r):function(t,e){return function(...r){return ws(this,void 0,void 0,function*(){t.signer||bs.throwError("sending a transaction requires a signer",v.errors.UNSUPPORTED_OPERATION,{operation:"sendTransaction"}),null!=t.deployTransaction&&(yield t._deployed());const n=yield Ss(t,e,r),i=yield t.signer.sendTransaction(n);return Cs(t,i),i})}}(t,e)}function Is(t){return!t.address||null!=t.topics&&0!==t.topics.length?(t.address||"*")+"@"+(t.topics?t.topics.map(t=>Array.isArray(t)?t.join("|"):t).join(":"):""):"*"}class Ts{constructor(t,e){dt(this,"tag",t),dt(this,"filter",e),this._listeners=[]}addListener(t,e){this._listeners.push({listener:t,once:e})}removeListener(t){let e=!1;this._listeners=this._listeners.filter(r=>!(!e&&r.listener===t)||(e=!0,!1))}removeAllListeners(){this._listeners=[]}listeners(){return this._listeners.map(t=>t.listener)}listenerCount(){return this._listeners.length}run(t){const e=this.listenerCount();return this._listeners=this._listeners.filter(e=>{const r=t.slice();return setTimeout(()=>{e.listener.apply(this,r)},0),!e.once}),e}prepareEvent(t){}getEmit(t){return[t]}}class Ps extends Ts{constructor(){super("error",null)}}class Ns extends Ts{constructor(t,e,r,n){const i={address:t};let s=e.getEventTopic(r);n?(s!==n[0]&&bs.throwArgumentError("topic mismatch","topics",n),i.topics=n.slice()):i.topics=[s],super(Is(i),i),dt(this,"address",t),dt(this,"interface",e),dt(this,"fragment",r)}prepareEvent(t){super.prepareEvent(t),t.event=this.fragment.name,t.eventSignature=this.fragment.format(),t.decode=(t,e)=>this.interface.decodeEventLog(this.fragment,t,e);try{t.args=this.interface.decodeEventLog(this.fragment,t.data,t.topics)}catch(e){t.args=null,t.decodeError=e}}getEmit(t){const e=$t(t.args);if(e.length)throw e[0].error;const r=(t.args||[]).slice();return r.push(t),r}}class Bs extends Ts{constructor(t,e){super("*",{address:t}),dt(this,"address",t),dt(this,"interface",e)}prepareEvent(t){super.prepareEvent(t);try{const e=this.interface.parseLog(t);t.event=e.name,t.eventSignature=e.signature,t.decode=(t,r)=>this.interface.decodeEventLog(e.eventFragment,t,r),t.args=e.args}catch(t){}}}class Ms{constructor(t,e,r){dt(this,"interface",ft(new.target,"getInterface")(e)),null==r?(dt(this,"provider",null),dt(this,"signer",null)):xn.isSigner(r)?(dt(this,"provider",r.provider||null),dt(this,"signer",r)):En.isProvider(r)?(dt(this,"provider",r),dt(this,"signer",null)):bs.throwArgumentError("invalid signer or provider","signerOrProvider",r),dt(this,"callStatic",{}),dt(this,"estimateGas",{}),dt(this,"functions",{}),dt(this,"populateTransaction",{}),dt(this,"filters",{});{const t={};Object.keys(this.interface.events).forEach(e=>{const r=this.interface.events[e];dt(this.filters,e,(...t)=>({address:this.address,topics:this.interface.encodeFilterTopics(r,t)})),t[r.name]||(t[r.name]=[]),t[r.name].push(e)}),Object.keys(t).forEach(e=>{const r=t[e];1===r.length?dt(this.filters,e,this.filters[r[0]]):bs.warn(`Duplicate definition of ${e} (${r.join(", ")})`)})}if(dt(this,"_runningEvents",{}),dt(this,"_wrappedEmits",{}),null==t&&bs.throwArgumentError("invalid contract address or ENS name","addressOrName",t),dt(this,"address",t),this.provider)dt(this,"resolvedAddress",As(this.provider,t));else try{dt(this,"resolvedAddress",Promise.resolve(ye(t)))}catch(t){bs.throwError("provider is required to use ENS name as contract address",v.errors.UNSUPPORTED_OPERATION,{operation:"new Contract"})}this.resolvedAddress.catch(t=>{});const n={},i={};Object.keys(this.interface.functions).forEach(t=>{const e=this.interface.functions[t];if(i[t])bs.warn(`Duplicate ABI entry for ${JSON.stringify(t)}`);else{i[t]=!0;{const r=e.name;n[`%${r}`]||(n[`%${r}`]=[]),n[`%${r}`].push(t)}null==this[t]&&dt(this,t,_s(this,e,!0)),null==this.functions[t]&&dt(this.functions,t,_s(this,e,!1)),null==this.callStatic[t]&&dt(this.callStatic,t,xs(this,e,!0)),null==this.populateTransaction[t]&&dt(this.populateTransaction,t,function(t,e){return function(...r){return Ss(t,e,r)}}(this,e)),null==this.estimateGas[t]&&dt(this.estimateGas,t,function(t,e){const r=t.signer||t.provider;return function(...n){return ws(this,void 0,void 0,function*(){r||bs.throwError("estimate require a provider or signer",v.errors.UNSUPPORTED_OPERATION,{operation:"estimateGas"});const i=yield Ss(t,e,n);return yield r.estimateGas(i)})}}(this,e))}}),Object.keys(n).forEach(t=>{const e=n[t];if(e.length>1)return;t=t.substring(1);const r=e[0];try{null==this[t]&&dt(this,t,this[r])}catch(t){}null==this.functions[t]&&dt(this.functions,t,this.functions[r]),null==this.callStatic[t]&&dt(this.callStatic,t,this.callStatic[r]),null==this.populateTransaction[t]&&dt(this.populateTransaction,t,this.populateTransaction[r]),null==this.estimateGas[t]&&dt(this.estimateGas,t,this.estimateGas[r])})}static getContractAddress(t){return ve(t)}static getInterface(t){return yn.isInterface(t)?t:new yn(t)}deployed(){return this._deployed()}_deployed(t){return this._deployedPromise||(this.deployTransaction?this._deployedPromise=this.deployTransaction.wait().then(()=>this):this._deployedPromise=this.provider.getCode(this.address,t).then(t=>("0x"===t&&bs.throwError("contract not deployed",v.errors.UNSUPPORTED_OPERATION,{contractAddress:this.address,operation:"getDeployed"}),this))),this._deployedPromise}fallback(t){this.signer||bs.throwError("sending a transactions require a signer",v.errors.UNSUPPORTED_OPERATION,{operation:"sendTransaction(fallback)"});const e=gt(t||{});return["from","to"].forEach(function(t){null!=e[t]&&bs.throwError("cannot override "+t,v.errors.UNSUPPORTED_OPERATION,{operation:t})}),e.to=this.resolvedAddress,this.deployed().then(()=>this.signer.sendTransaction(e))}connect(t){"string"==typeof t&&(t=new _n(t,this.provider));const e=new this.constructor(this.address,this.interface,t);return this.deployTransaction&&dt(e,"deployTransaction",this.deployTransaction),e}attach(t){return new this.constructor(t,this.interface,this.signer||this.provider)}static isIndexed(t){return pn.isIndexed(t)}_normalizeRunningEvent(t){return this._runningEvents[t.tag]?this._runningEvents[t.tag]:t}_getRunningEvent(t){if("string"==typeof t){if("error"===t)return this._normalizeRunningEvent(new Ps);if("event"===t)return this._normalizeRunningEvent(new Ts("event",null));if("*"===t)return this._normalizeRunningEvent(new Bs(this.address,this.interface));const e=this.interface.getEvent(t);return this._normalizeRunningEvent(new Ns(this.address,this.interface,e))}if(t.topics&&t.topics.length>0){try{const e=t.topics[0];if("string"!=typeof e)throw new Error("invalid topic");const r=this.interface.getEvent(e);return this._normalizeRunningEvent(new Ns(this.address,this.interface,r,t.topics))}catch(t){}const e={address:this.address,topics:t.topics};return this._normalizeRunningEvent(new Ts(Is(e),e))}return this._normalizeRunningEvent(new Bs(this.address,this.interface))}_checkRunningEvents(t){if(0===t.listenerCount()){delete this._runningEvents[t.tag];const e=this._wrappedEmits[t.tag];e&&t.filter&&(this.provider.off(t.filter,e),delete this._wrappedEmits[t.tag])}}_wrapEvent(t,e,r){const n=bt(e);return n.removeListener=()=>{r&&(t.removeListener(r),this._checkRunningEvents(t))},n.getBlock=()=>this.provider.getBlock(e.blockHash),n.getTransaction=()=>this.provider.getTransaction(e.transactionHash),n.getTransactionReceipt=()=>this.provider.getTransactionReceipt(e.transactionHash),t.prepareEvent(n),n}_addEventListener(t,e,r){if(this.provider||bs.throwError("events require a provider or a signer with a provider",v.errors.UNSUPPORTED_OPERATION,{operation:"once"}),t.addListener(e,r),this._runningEvents[t.tag]=t,!this._wrappedEmits[t.tag]){const r=r=>{let n=this._wrapEvent(t,r,e);if(null==n.decodeError)try{const e=t.getEmit(n);this.emit(t.filter,...e)}catch(t){n.decodeError=t.error}null!=t.filter&&this.emit("event",n),null!=n.decodeError&&this.emit("error",n.decodeError,n)};this._wrappedEmits[t.tag]=r,null!=t.filter&&this.provider.on(t.filter,r)}}queryFilter(t,e,r){const n=this._getRunningEvent(t),i=gt(n.filter);return"string"==typeof e&&T(e,32)?(null!=r&&bs.throwArgumentError("cannot specify toBlock with blockhash","toBlock",r),i.blockHash=e):(i.fromBlock=null!=e?e:0,i.toBlock=null!=r?r:"latest"),this.provider.getLogs(i).then(t=>t.map(t=>this._wrapEvent(n,t,null)))}on(t,e){return this._addEventListener(this._getRunningEvent(t),e,!1),this}once(t,e){return this._addEventListener(this._getRunningEvent(t),e,!0),this}emit(t,...e){if(!this.provider)return!1;const r=this._getRunningEvent(t),n=r.run(e)>0;return this._checkRunningEvents(r),n}listenerCount(t){return this.provider?null==t?Object.keys(this._runningEvents).reduce((t,e)=>t+this._runningEvents[e].listenerCount(),0):this._getRunningEvent(t).listenerCount():0}listeners(t){if(!this.provider)return[];if(null==t){const t=[];for(let e in this._runningEvents)this._runningEvents[e].listeners().forEach(e=>{t.push(e)});return t}return this._getRunningEvent(t).listeners()}removeAllListeners(t){if(!this.provider)return this;if(null==t){for(const t in this._runningEvents){const e=this._runningEvents[t];e.removeAllListeners(),this._checkRunningEvents(e)}return this}const e=this._getRunningEvent(t);return e.removeAllListeners(),this._checkRunningEvents(e),this}off(t,e){if(!this.provider)return this;const r=this._getRunningEvent(t);return r.removeListener(e),this._checkRunningEvents(r),this}removeListener(t,e){return this.off(t,e)}}class Rs extends Ms{}class Fs{constructor(t){dt(this,"alphabet",t),dt(this,"base",t.length),dt(this,"_alphabetMap",{}),dt(this,"_leader",t.charAt(0));for(let e=0;e<t.length;e++)this._alphabetMap[t.charAt(e)]=e}encode(t){let e=C(t);if(0===e.length)return"";let r=[0];for(let t=0;t<e.length;++t){let n=e[t];for(let t=0;t<r.length;++t)n+=r[t]<<8,r[t]=n%this.base,n=n/this.base|0;for(;n>0;)r.push(n%this.base),n=n/this.base|0}let n="";for(let t=0;0===e[t]&&t<e.length-1;++t)n+=this._leader;for(let t=r.length-1;t>=0;--t)n+=this.alphabet[r[t]];return n}decode(t){if("string"!=typeof t)throw new TypeError("Expected String");let e=[];if(0===t.length)return new Uint8Array(e);e.push(0);for(let r=0;r<t.length;r++){let n=this._alphabetMap[t[r]];if(void 0===n)throw new Error("Non-base"+this.base+" character");let i=n;for(let t=0;t<e.length;++t)i+=e[t]*this.base,e[t]=255&i,i>>=8;for(;i>0;)e.push(255&i),i>>=8}for(let r=0;t[r]===this._leader&&r<t.length-1;++r)e.push(0);return C(new Uint8Array(e.reverse()))}}new Fs("abcdefghijklmnopqrstuvwxyz234567");const Os=new Fs("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz");var Ds;!function(t){t.sha256="sha256",t.sha512="sha512"}(Ds||(Ds={}));const Ls=new v("sha2/5.8.0");function Us(t){return"0x"+fi.ripemd160().update(C(t)).digest("hex")}function qs(t){return"0x"+fi.sha256().update(C(t)).digest("hex")}function zs(t,e,r){return Ds[t]||Ls.throwError("unsupported algorithm "+t,v.errors.UNSUPPORTED_OPERATION,{operation:"hmac",algorithm:t}),"0x"+fi.hmac(fi[t],C(e)).update(C(r)).digest("hex")}function js(t,e,r,n,i){let s;t=C(t),e=C(e);let o=1;const a=new Uint8Array(n),l=new Uint8Array(e.length+4);let c,h;l.set(e);for(let u=1;u<=o;u++){l[e.length]=u>>24&255,l[e.length+1]=u>>16&255,l[e.length+2]=u>>8&255,l[e.length+3]=255&u;let d=C(zs(i,t,l));s||(s=d.length,h=new Uint8Array(s),o=Math.ceil(n/s),c=n-(o-1)*s),h.set(d);for(let e=1;e<r;e++){d=C(zs(i,t,d));for(let t=0;t<s;t++)h[t]^=d[t]}const f=(u-1)*s,p=u===o?c:s;a.set(C(h).slice(0,p),f)}return N(a)}const Gs=new v("wordlists/5.8.0");class Hs{constructor(t){Gs.checkAbstract(new.target,Hs),dt(this,"locale",t)}split(t){return t.toLowerCase().split(/ +/g)}join(t){return t.join(" ")}static check(t){const e=[];for(let r=0;r<2048;r++){const n=t.getWord(r);if(r!==t.getWordIndex(n))return"0x";e.push(n)}return gr(e.join("\n")+"\n")}static register(t,e){e||(e=t.locale)}}let Ws=null;function Ks(t){if(null==Ws&&(Ws="AbandonAbilityAbleAboutAboveAbsentAbsorbAbstractAbsurdAbuseAccessAccidentAccountAccuseAchieveAcidAcousticAcquireAcrossActActionActorActressActualAdaptAddAddictAddressAdjustAdmitAdultAdvanceAdviceAerobicAffairAffordAfraidAgainAgeAgentAgreeAheadAimAirAirportAisleAlarmAlbumAlcoholAlertAlienAllAlleyAllowAlmostAloneAlphaAlreadyAlsoAlterAlwaysAmateurAmazingAmongAmountAmusedAnalystAnchorAncientAngerAngleAngryAnimalAnkleAnnounceAnnualAnotherAnswerAntennaAntiqueAnxietyAnyApartApologyAppearAppleApproveAprilArchArcticAreaArenaArgueArmArmedArmorArmyAroundArrangeArrestArriveArrowArtArtefactArtistArtworkAskAspectAssaultAssetAssistAssumeAsthmaAthleteAtomAttackAttendAttitudeAttractAuctionAuditAugustAuntAuthorAutoAutumnAverageAvocadoAvoidAwakeAwareAwayAwesomeAwfulAwkwardAxisBabyBachelorBaconBadgeBagBalanceBalconyBallBambooBananaBannerBarBarelyBargainBarrelBaseBasicBasketBattleBeachBeanBeautyBecauseBecomeBeefBeforeBeginBehaveBehindBelieveBelowBeltBenchBenefitBestBetrayBetterBetweenBeyondBicycleBidBikeBindBiologyBirdBirthBitterBlackBladeBlameBlanketBlastBleakBlessBlindBloodBlossomBlouseBlueBlurBlushBoardBoatBodyBoilBombBoneBonusBookBoostBorderBoringBorrowBossBottomBounceBoxBoyBracketBrainBrandBrassBraveBreadBreezeBrickBridgeBriefBrightBringBriskBroccoliBrokenBronzeBroomBrotherBrownBrushBubbleBuddyBudgetBuffaloBuildBulbBulkBulletBundleBunkerBurdenBurgerBurstBusBusinessBusyButterBuyerBuzzCabbageCabinCableCactusCageCakeCallCalmCameraCampCanCanalCancelCandyCannonCanoeCanvasCanyonCapableCapitalCaptainCarCarbonCardCargoCarpetCarryCartCaseCashCasinoCastleCasualCatCatalogCatchCategoryCattleCaughtCauseCautionCaveCeilingCeleryCementCensusCenturyCerealCertainChairChalkChampionChangeChaosChapterChargeChaseChatCheapCheckCheeseChefCherryChestChickenChiefChildChimneyChoiceChooseChronicChuckleChunkChurnCigarCinnamonCircleCitizenCityCivilClaimClapClarifyClawClayCleanClerkCleverClickClientCliffClimbClinicClipClockClogCloseClothCloudClownClubClumpClusterClutchCoachCoastCoconutCodeCoffeeCoilCoinCollectColorColumnCombineComeComfortComicCommonCompanyConcertConductConfirmCongressConnectConsiderControlConvinceCookCoolCopperCopyCoralCoreCornCorrectCostCottonCouchCountryCoupleCourseCousinCoverCoyoteCrackCradleCraftCramCraneCrashCraterCrawlCrazyCreamCreditCreekCrewCricketCrimeCrispCriticCropCrossCrouchCrowdCrucialCruelCruiseCrumbleCrunchCrushCryCrystalCubeCultureCupCupboardCuriousCurrentCurtainCurveCushionCustomCuteCycleDadDamageDampDanceDangerDaringDashDaughterDawnDayDealDebateDebrisDecadeDecemberDecideDeclineDecorateDecreaseDeerDefenseDefineDefyDegreeDelayDeliverDemandDemiseDenialDentistDenyDepartDependDepositDepthDeputyDeriveDescribeDesertDesignDeskDespairDestroyDetailDetectDevelopDeviceDevoteDiagramDialDiamondDiaryDiceDieselDietDifferDigitalDignityDilemmaDinnerDinosaurDirectDirtDisagreeDiscoverDiseaseDishDismissDisorderDisplayDistanceDivertDivideDivorceDizzyDoctorDocumentDogDollDolphinDomainDonateDonkeyDonorDoorDoseDoubleDoveDraftDragonDramaDrasticDrawDreamDressDriftDrillDrinkDripDriveDropDrumDryDuckDumbDuneDuringDustDutchDutyDwarfDynamicEagerEagleEarlyEarnEarthEasilyEastEasyEchoEcologyEconomyEdgeEditEducateEffortEggEightEitherElbowElderElectricElegantElementElephantElevatorEliteElseEmbarkEmbodyEmbraceEmergeEmotionEmployEmpowerEmptyEnableEnactEndEndlessEndorseEnemyEnergyEnforceEngageEngineEnhanceEnjoyEnlistEnoughEnrichEnrollEnsureEnterEntireEntryEnvelopeEpisodeEqualEquipEraEraseErodeErosionErrorEruptEscapeEssayEssenceEstateEternalEthicsEvidenceEvilEvokeEvolveExactExampleExcessExchangeExciteExcludeExcuseExecuteExerciseExhaustExhibitExileExistExitExoticExpandExpectExpireExplainExposeExpressExtendExtraEyeEyebrowFabricFaceFacultyFadeFaintFaithFallFalseFameFamilyFamousFanFancyFantasyFarmFashionFatFatalFatherFatigueFaultFavoriteFeatureFebruaryFederalFeeFeedFeelFemaleFenceFestivalFetchFeverFewFiberFictionFieldFigureFileFilmFilterFinalFindFineFingerFinishFireFirmFirstFiscalFishFitFitnessFixFlagFlameFlashFlatFlavorFleeFlightFlipFloatFlockFloorFlowerFluidFlushFlyFoamFocusFogFoilFoldFollowFoodFootForceForestForgetForkFortuneForumForwardFossilFosterFoundFoxFragileFrameFrequentFreshFriendFringeFrogFrontFrostFrownFrozenFruitFuelFunFunnyFurnaceFuryFutureGadgetGainGalaxyGalleryGameGapGarageGarbageGardenGarlicGarmentGasGaspGateGatherGaugeGazeGeneralGeniusGenreGentleGenuineGestureGhostGiantGiftGiggleGingerGiraffeGirlGiveGladGlanceGlareGlassGlideGlimpseGlobeGloomGloryGloveGlowGlueGoatGoddessGoldGoodGooseGorillaGospelGossipGovernGownGrabGraceGrainGrantGrapeGrassGravityGreatGreenGridGriefGritGroceryGroupGrowGruntGuardGuessGuideGuiltGuitarGunGymHabitHairHalfHammerHamsterHandHappyHarborHardHarshHarvestHatHaveHawkHazardHeadHealthHeartHeavyHedgehogHeightHelloHelmetHelpHenHeroHiddenHighHillHintHipHireHistoryHobbyHockeyHoldHoleHolidayHollowHomeHoneyHoodHopeHornHorrorHorseHospitalHostHotelHourHoverHubHugeHumanHumbleHumorHundredHungryHuntHurdleHurryHurtHusbandHybridIceIconIdeaIdentifyIdleIgnoreIllIllegalIllnessImageImitateImmenseImmuneImpactImposeImproveImpulseInchIncludeIncomeIncreaseIndexIndicateIndoorIndustryInfantInflictInformInhaleInheritInitialInjectInjuryInmateInnerInnocentInputInquiryInsaneInsectInsideInspireInstallIntactInterestIntoInvestInviteInvolveIronIslandIsolateIssueItemIvoryJacketJaguarJarJazzJealousJeansJellyJewelJobJoinJokeJourneyJoyJudgeJuiceJumpJungleJuniorJunkJustKangarooKeenKeepKetchupKeyKickKidKidneyKindKingdomKissKitKitchenKiteKittenKiwiKneeKnifeKnockKnowLabLabelLaborLadderLadyLakeLampLanguageLaptopLargeLaterLatinLaughLaundryLavaLawLawnLawsuitLayerLazyLeaderLeafLearnLeaveLectureLeftLegLegalLegendLeisureLemonLendLengthLensLeopardLessonLetterLevelLiarLibertyLibraryLicenseLifeLiftLightLikeLimbLimitLinkLionLiquidListLittleLiveLizardLoadLoanLobsterLocalLockLogicLonelyLongLoopLotteryLoudLoungeLoveLoyalLuckyLuggageLumberLunarLunchLuxuryLyricsMachineMadMagicMagnetMaidMailMainMajorMakeMammalManManageMandateMangoMansionManualMapleMarbleMarchMarginMarineMarketMarriageMaskMassMasterMatchMaterialMathMatrixMatterMaximumMazeMeadowMeanMeasureMeatMechanicMedalMediaMelodyMeltMemberMemoryMentionMenuMercyMergeMeritMerryMeshMessageMetalMethodMiddleMidnightMilkMillionMimicMindMinimumMinorMinuteMiracleMirrorMiseryMissMistakeMixMixedMixtureMobileModelModifyMomMomentMonitorMonkeyMonsterMonthMoonMoralMoreMorningMosquitoMotherMotionMotorMountainMouseMoveMovieMuchMuffinMuleMultiplyMuscleMuseumMushroomMusicMustMutualMyselfMysteryMythNaiveNameNapkinNarrowNastyNationNatureNearNeckNeedNegativeNeglectNeitherNephewNerveNestNetNetworkNeutralNeverNewsNextNiceNightNobleNoiseNomineeNoodleNormalNorthNoseNotableNoteNothingNoticeNovelNowNuclearNumberNurseNutOakObeyObjectObligeObscureObserveObtainObviousOccurOceanOctoberOdorOffOfferOfficeOftenOilOkayOldOliveOlympicOmitOnceOneOnionOnlineOnlyOpenOperaOpinionOpposeOptionOrangeOrbitOrchardOrderOrdinaryOrganOrientOriginalOrphanOstrichOtherOutdoorOuterOutputOutsideOvalOvenOverOwnOwnerOxygenOysterOzonePactPaddlePagePairPalacePalmPandaPanelPanicPantherPaperParadeParentParkParrotPartyPassPatchPathPatientPatrolPatternPausePavePaymentPeacePeanutPearPeasantPelicanPenPenaltyPencilPeoplePepperPerfectPermitPersonPetPhonePhotoPhrasePhysicalPianoPicnicPicturePiecePigPigeonPillPilotPinkPioneerPipePistolPitchPizzaPlacePlanetPlasticPlatePlayPleasePledgePluckPlugPlungePoemPoetPointPolarPolePolicePondPonyPoolPopularPortionPositionPossiblePostPotatoPotteryPovertyPowderPowerPracticePraisePredictPreferPreparePresentPrettyPreventPricePridePrimaryPrintPriorityPrisonPrivatePrizeProblemProcessProduceProfitProgramProjectPromoteProofPropertyProsperProtectProudProvidePublicPuddingPullPulpPulsePumpkinPunchPupilPuppyPurchasePurityPurposePursePushPutPuzzlePyramidQualityQuantumQuarterQuestionQuickQuitQuizQuoteRabbitRaccoonRaceRackRadarRadioRailRainRaiseRallyRampRanchRandomRangeRapidRareRateRatherRavenRawRazorReadyRealReasonRebelRebuildRecallReceiveRecipeRecordRecycleReduceReflectReformRefuseRegionRegretRegularRejectRelaxReleaseReliefRelyRemainRememberRemindRemoveRenderRenewRentReopenRepairRepeatReplaceReportRequireRescueResembleResistResourceResponseResultRetireRetreatReturnReunionRevealReviewRewardRhythmRibRibbonRiceRichRideRidgeRifleRightRigidRingRiotRippleRiskRitualRivalRiverRoadRoastRobotRobustRocketRomanceRoofRookieRoomRoseRotateRoughRoundRouteRoyalRubberRudeRugRuleRunRunwayRuralSadSaddleSadnessSafeSailSaladSalmonSalonSaltSaluteSameSampleSandSatisfySatoshiSauceSausageSaveSayScaleScanScareScatterSceneSchemeSchoolScienceScissorsScorpionScoutScrapScreenScriptScrubSeaSearchSeasonSeatSecondSecretSectionSecuritySeedSeekSegmentSelectSellSeminarSeniorSenseSentenceSeriesServiceSessionSettleSetupSevenShadowShaftShallowShareShedShellSheriffShieldShiftShineShipShiverShockShoeShootShopShortShoulderShoveShrimpShrugShuffleShySiblingSickSideSiegeSightSignSilentSilkSillySilverSimilarSimpleSinceSingSirenSisterSituateSixSizeSkateSketchSkiSkillSkinSkirtSkullSlabSlamSleepSlenderSliceSlideSlightSlimSloganSlotSlowSlushSmallSmartSmileSmokeSmoothSnackSnakeSnapSniffSnowSoapSoccerSocialSockSodaSoftSolarSoldierSolidSolutionSolveSomeoneSongSoonSorrySortSoulSoundSoupSourceSouthSpaceSpareSpatialSpawnSpeakSpecialSpeedSpellSpendSphereSpiceSpiderSpikeSpinSpiritSplitSpoilSponsorSpoonSportSpotSpraySpreadSpringSpySquareSqueezeSquirrelStableStadiumStaffStageStairsStampStandStartStateStaySteakSteelStemStepStereoStickStillStingStockStomachStoneStoolStoryStoveStrategyStreetStrikeStrongStruggleStudentStuffStumbleStyleSubjectSubmitSubwaySuccessSuchSuddenSufferSugarSuggestSuitSummerSunSunnySunsetSuperSupplySupremeSureSurfaceSurgeSurpriseSurroundSurveySuspectSustainSwallowSwampSwapSwarmSwearSweetSwiftSwimSwingSwitchSwordSymbolSymptomSyrupSystemTableTackleTagTailTalentTalkTankTapeTargetTaskTasteTattooTaxiTeachTeamTellTenTenantTennisTentTermTestTextThankThatThemeThenTheoryThereTheyThingThisThoughtThreeThriveThrowThumbThunderTicketTideTigerTiltTimberTimeTinyTipTiredTissueTitleToastTobaccoTodayToddlerToeTogetherToiletTokenTomatoTomorrowToneTongueTonightToolToothTopTopicToppleTorchTornadoTortoiseTossTotalTouristTowardTowerTownToyTrackTradeTrafficTragicTrainTransferTrapTrashTravelTrayTreatTreeTrendTrialTribeTrickTriggerTrimTripTrophyTroubleTruckTrueTrulyTrumpetTrustTruthTryTubeTuitionTumbleTunaTunnelTurkeyTurnTurtleTwelveTwentyTwiceTwinTwistTwoTypeTypicalUglyUmbrellaUnableUnawareUncleUncoverUnderUndoUnfairUnfoldUnhappyUniformUniqueUnitUniverseUnknownUnlockUntilUnusualUnveilUpdateUpgradeUpholdUponUpperUpsetUrbanUrgeUsageUseUsedUsefulUselessUsualUtilityVacantVacuumVagueValidValleyValveVanVanishVaporVariousVastVaultVehicleVelvetVendorVentureVenueVerbVerifyVersionVeryVesselVeteranViableVibrantViciousVictoryVideoViewVillageVintageViolinVirtualVirusVisaVisitVisualVitalVividVocalVoiceVoidVolcanoVolumeVoteVoyageWageWagonWaitWalkWallWalnutWantWarfareWarmWarriorWashWaspWasteWaterWaveWayWealthWeaponWearWeaselWeatherWebWeddingWeekendWeirdWelcomeWestWetWhaleWhatWheatWheelWhenWhereWhipWhisperWideWidthWifeWildWillWinWindowWineWingWinkWinnerWinterWireWisdomWiseWishWitnessWolfWomanWonderWoodWoolWordWorkWorldWorryWorthWrapWreckWrestleWristWriteWrongYardYearYellowYouYoungYouthZebraZeroZoneZoo".replace(/([A-Z])/g," $1").toLowerCase().substring(1).split(" "),"0x3c8acc1e7b08d8e76f9fda015ef48dc8c710a73cb7e0f77b2c18a9b5a7adde60"!==Hs.check(t)))throw Ws=null,new Error("BIP39 Wordlist for en (English) FAILED")}const $s=new class extends Hs{constructor(){super("en")}getWord(t){return Ks(this),Ws[t]}getWordIndex(t){return Ks(this),Ws.indexOf(t)}};Hs.register($s);const Vs={en:$s},Js=new v("hdnode/5.8.0"),Qs=K.from("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),Ys=Ve("Bitcoin seed"),Xs=2147483648;function Zs(t){return(1<<t)-1<<8-t}function to(t){return(1<<t)-1}function eo(t){return D(N(t),32)}function ro(t){return Os.encode(x([t,M(qs(qs(t)),0,4)]))}function no(t){if(null==t)return Vs.en;if("string"==typeof t){const e=Vs[t];return null==e&&Js.throwArgumentError("unknown locale","wordlist",t),e}return t}const io={},so="m/44'/60'/0'/0/0";class oo{constructor(t,e,r,n,i,s,o,a){if(t!==io)throw new Error("HDNode constructor cannot be called directly");if(e){const t=new Zi(e);dt(this,"privateKey",t.privateKey),dt(this,"publicKey",t.compressedPublicKey)}else dt(this,"privateKey",null),dt(this,"publicKey",N(r));dt(this,"parentFingerprint",n),dt(this,"fingerprint",M(Us(qs(this.publicKey)),0,4)),dt(this,"address",ls(this.publicKey)),dt(this,"chainCode",i),dt(this,"index",s),dt(this,"depth",o),null==a?(dt(this,"mnemonic",null),dt(this,"path",null)):"string"==typeof a?(dt(this,"mnemonic",null),dt(this,"path",a)):(dt(this,"mnemonic",a),dt(this,"path",a.path))}get extendedKey(){if(this.depth>=256)throw new Error("Depth too large!");return ro(x([null!=this.privateKey?"0x0488ADE4":"0x0488B21E",N(this.depth),this.parentFingerprint,D(N(this.index),4),this.chainCode,null!=this.privateKey?x(["0x00",this.privateKey]):this.publicKey]))}neuter(){return new oo(io,null,this.publicKey,this.parentFingerprint,this.chainCode,this.index,this.depth,this.path)}_derive(t){if(t>4294967295)throw new Error("invalid index - "+String(t));let e=this.path;e&&(e+="/"+(2147483647&t));const r=new Uint8Array(37);if(t&Xs){if(!this.privateKey)throw new Error("cannot derive child of neutered node");r.set(C(this.privateKey),1),e&&(e+="'")}else r.set(C(this.publicKey));for(let e=24;e>=0;e-=8)r[33+(e>>3)]=t>>24-e&255;const n=C(zs(Ds.sha512,this.chainCode,r)),i=n.slice(0,32),s=n.slice(32);let o=null,a=null;if(this.privateKey)o=eo(K.from(i).add(this.privateKey).mod(Qs));else{a=new Zi(N(i))._addPoint(this.publicKey)}let l=e;const c=this.mnemonic;return c&&(l=Object.freeze({phrase:c.phrase,path:e,locale:c.locale||"en"})),new oo(io,o,a,this.fingerprint,eo(s),t,this.depth+1,l)}derivePath(t){const e=t.split("/");if(0===e.length||"m"===e[0]&&0!==this.depth)throw new Error("invalid path - "+t);"m"===e[0]&&e.shift();let r=this;for(let t=0;t<e.length;t++){const n=e[t];if(n.match(/^[0-9]+'$/)){const t=parseInt(n.substring(0,n.length-1));if(t>=Xs)throw new Error("invalid path index - "+n);r=r._derive(Xs+t)}else{if(!n.match(/^[0-9]+$/))throw new Error("invalid path component - "+n);{const t=parseInt(n);if(t>=Xs)throw new Error("invalid path index - "+n);r=r._derive(t)}}}return r}static _fromSeed(t,e){const r=C(t);if(r.length<16||r.length>64)throw new Error("invalid seed");const n=C(zs(Ds.sha512,Ys,r));return new oo(io,eo(n.slice(0,32)),null,"0x00000000",eo(n.slice(32)),0,0,e)}static fromMnemonic(t,e,r){return t=co(lo(t,r=no(r)),r),oo._fromSeed(ao(t,e),{phrase:t,path:"m",locale:r.locale})}static fromSeed(t){return oo._fromSeed(t,null)}static fromExtendedKey(t){const e=Os.decode(t);82===e.length&&ro(e.slice(0,78))===t||Js.throwArgumentError("invalid extended key","extendedKey","[REDACTED]");const r=e[4],n=N(e.slice(5,9)),i=parseInt(N(e.slice(9,13)).substring(2),16),s=N(e.slice(13,45)),o=e.slice(45,78);switch(N(e.slice(0,4))){case"0x0488b21e":case"0x043587cf":return new oo(io,null,N(o),n,s,i,r,null);case"0x0488ade4":case"0x04358394 ":if(0!==o[0])break;return new oo(io,N(o.slice(1)),null,n,s,i,r,null)}return Js.throwArgumentError("invalid extended key","extendedKey","[REDACTED]")}}function ao(t,e){e||(e="");const r=Ve("mnemonic"+e,Ge.NFKD);return js(Ve(t,Ge.NFKD),r,2048,64,"sha512")}function lo(t,e){e=no(e),Js.checkNormalize();const r=e.split(t);if(r.length%3!=0)throw new Error("invalid mnemonic");const n=C(new Uint8Array(Math.ceil(11*r.length/8)));let i=0;for(let t=0;t<r.length;t++){let s=e.getWordIndex(r[t].normalize("NFKD"));if(-1===s)throw new Error("invalid mnemonic");for(let t=0;t<11;t++)s&1<<10-t&&(n[i>>3]|=1<<7-i%8),i++}const s=32*r.length/3,o=Zs(r.length/3);if((C(qs(n.slice(0,s/8)))[0]&o)!==(n[n.length-1]&o))throw new Error("invalid checksum");return N(n.slice(0,s/8))}function co(t,e){if(e=no(e),(t=C(t)).length%4!=0||t.length<16||t.length>32)throw new Error("invalid entropy");const r=[0];let n=11;for(let e=0;e<t.length;e++)n>8?(r[r.length-1]<<=8,r[r.length-1]|=t[e],n-=8):(r[r.length-1]<<=n,r[r.length-1]|=t[e]>>8-n,r.push(t[e]&to(8-n)),n+=3);const i=t.length/4,s=C(qs(t))[0]&Zs(i);return r[r.length-1]<<=i,r[r.length-1]|=s>>8-i,e.join(r.map(t=>e.getWord(t)))}const ho=new v("random/5.8.0");const uo=function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if("undefined"!=typeof global)return global;throw new Error("unable to locate global object")}();let fo=uo.crypto||uo.msCrypto;function po(t){(t<=0||t>1024||t%1||t!=t)&&ho.throwArgumentError("invalid length","length",t);const e=new Uint8Array(t);return fo.getRandomValues(e),C(e)}function mo(t){for(let e=(t=t.slice()).length-1;e>0;e--){const r=Math.floor(Math.random()*(e+1)),n=t[e];t[e]=t[r],t[r]=n}return t}fo&&fo.getRandomValues||(ho.warn("WARNING: Missing strong random number source"),fo={getRandomValues:function(t){return ho.throwError("no secure random source avaialble",v.errors.UNSUPPORTED_OPERATION,{operation:"crypto.getRandomValues"})}});var go,yo={exports:{}};var vo=(go||(go=1,function(t){!function(){function e(t){return parseInt(t)===t}function r(t){if(!e(t.length))return!1;for(var r=0;r<t.length;r++)if(!e(t[r])||t[r]<0||t[r]>255)return!1;return!0}function n(t,n){if(t.buffer&&ArrayBuffer.isView(t)&&"Uint8Array"===t.name)return n&&(t=t.slice?t.slice():Array.prototype.slice.call(t)),t;if(Array.isArray(t)){if(!r(t))throw new Error("Array contains invalid value: "+t);return new Uint8Array(t)}if(e(t.length)&&r(t))return new Uint8Array(t);throw new Error("unsupported array-like object")}function i(t){return new Uint8Array(t)}function s(t,e,r,n,i){null==n&&null==i||(t=t.slice?t.slice(n,i):Array.prototype.slice.call(t,n,i)),e.set(t,r)}var o,a={toBytes:function(t){var e=[],r=0;for(t=encodeURI(t);r<t.length;){var i=t.charCodeAt(r++);37===i?(e.push(parseInt(t.substr(r,2),16)),r+=2):e.push(i)}return n(e)},fromBytes:function(t){for(var e=[],r=0;r<t.length;){var n=t[r];n<128?(e.push(String.fromCharCode(n)),r++):n>191&&n<224?(e.push(String.fromCharCode((31&n)<<6|63&t[r+1])),r+=2):(e.push(String.fromCharCode((15&n)<<12|(63&t[r+1])<<6|63&t[r+2])),r+=3)}return e.join("")}},l=(o="0123456789abcdef",{toBytes:function(t){for(var e=[],r=0;r<t.length;r+=2)e.push(parseInt(t.substr(r,2),16));return e},fromBytes:function(t){for(var e=[],r=0;r<t.length;r++){var n=t[r];e.push(o[(240&n)>>4]+o[15&n])}return e.join("")}}),c={16:10,24:12,32:14},h=[1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145],u=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],d=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],f=[3328402341,4168907908,4000806809,4135287693,4294111757,3597364157,3731845041,2445657428,1613770832,33620227,3462883241,1445669757,3892248089,3050821474,1303096294,3967186586,2412431941,528646813,2311702848,4202528135,4026202645,2992200171,2387036105,4226871307,1101901292,3017069671,1604494077,1169141738,597466303,1403299063,3832705686,2613100635,1974974402,3791519004,1033081774,1277568618,1815492186,2118074177,4126668546,2211236943,1748251740,1369810420,3521504564,4193382664,3799085459,2883115123,1647391059,706024767,134480908,2512897874,1176707941,2646852446,806885416,932615841,168101135,798661301,235341577,605164086,461406363,3756188221,3454790438,1311188841,2142417613,3933566367,302582043,495158174,1479289972,874125870,907746093,3698224818,3025820398,1537253627,2756858614,1983593293,3084310113,2108928974,1378429307,3722699582,1580150641,327451799,2790478837,3117535592,0,3253595436,1075847264,3825007647,2041688520,3059440621,3563743934,2378943302,1740553945,1916352843,2487896798,2555137236,2958579944,2244988746,3151024235,3320835882,1336584933,3992714006,2252555205,2588757463,1714631509,293963156,2319795663,3925473552,67240454,4269768577,2689618160,2017213508,631218106,1269344483,2723238387,1571005438,2151694528,93294474,1066570413,563977660,1882732616,4059428100,1673313503,2008463041,2950355573,1109467491,537923632,3858759450,4260623118,3218264685,2177748300,403442708,638784309,3287084079,3193921505,899127202,2286175436,773265209,2479146071,1437050866,4236148354,2050833735,3362022572,3126681063,840505643,3866325909,3227541664,427917720,2655997905,2749160575,1143087718,1412049534,999329963,193497219,2353415882,3354324521,1807268051,672404540,2816401017,3160301282,369822493,2916866934,3688947771,1681011286,1949973070,336202270,2454276571,201721354,1210328172,3093060836,2680341085,3184776046,1135389935,3294782118,965841320,831886756,3554993207,4068047243,3588745010,2345191491,1849112409,3664604599,26054028,2983581028,2622377682,1235855840,3630984372,2891339514,4092916743,3488279077,3395642799,4101667470,1202630377,268961816,1874508501,4034427016,1243948399,1546530418,941366308,1470539505,1941222599,2546386513,3421038627,2715671932,3899946140,1042226977,2521517021,1639824860,227249030,260737669,3765465232,2084453954,1907733956,3429263018,2420656344,100860677,4160157185,470683154,3261161891,1781871967,2924959737,1773779408,394692241,2579611992,974986535,664706745,3655459128,3958962195,731420851,571543859,3530123707,2849626480,126783113,865375399,765172662,1008606754,361203602,3387549984,2278477385,2857719295,1344809080,2782912378,59542671,1503764984,160008576,437062935,1707065306,3622233649,2218934982,3496503480,2185314755,697932208,1512910199,504303377,2075177163,2824099068,1841019862,739644986],p=[2781242211,2230877308,2582542199,2381740923,234877682,3184946027,2984144751,1418839493,1348481072,50462977,2848876391,2102799147,434634494,1656084439,3863849899,2599188086,1167051466,2636087938,1082771913,2281340285,368048890,3954334041,3381544775,201060592,3963727277,1739838676,4250903202,3930435503,3206782108,4149453988,2531553906,1536934080,3262494647,484572669,2923271059,1783375398,1517041206,1098792767,49674231,1334037708,1550332980,4098991525,886171109,150598129,2481090929,1940642008,1398944049,1059722517,201851908,1385547719,1699095331,1587397571,674240536,2704774806,252314885,3039795866,151914247,908333586,2602270848,1038082786,651029483,1766729511,3447698098,2682942837,454166793,2652734339,1951935532,775166490,758520603,3000790638,4004797018,4217086112,4137964114,1299594043,1639438038,3464344499,2068982057,1054729187,1901997871,2534638724,4121318227,1757008337,0,750906861,1614815264,535035132,3363418545,3988151131,3201591914,1183697867,3647454910,1265776953,3734260298,3566750796,3903871064,1250283471,1807470800,717615087,3847203498,384695291,3313910595,3617213773,1432761139,2484176261,3481945413,283769337,100925954,2180939647,4037038160,1148730428,3123027871,3813386408,4087501137,4267549603,3229630528,2315620239,2906624658,3156319645,1215313976,82966005,3747855548,3245848246,1974459098,1665278241,807407632,451280895,251524083,1841287890,1283575245,337120268,891687699,801369324,3787349855,2721421207,3431482436,959321879,1469301956,4065699751,2197585534,1199193405,2898814052,3887750493,724703513,2514908019,2696962144,2551808385,3516813135,2141445340,1715741218,2119445034,2872807568,2198571144,3398190662,700968686,3547052216,1009259540,2041044702,3803995742,487983883,1991105499,1004265696,1449407026,1316239930,504629770,3683797321,168560134,1816667172,3837287516,1570751170,1857934291,4014189740,2797888098,2822345105,2754712981,936633572,2347923833,852879335,1133234376,1500395319,3084545389,2348912013,1689376213,3533459022,3762923945,3034082412,4205598294,133428468,634383082,2949277029,2398386810,3913789102,403703816,3580869306,2297460856,1867130149,1918643758,607656988,4049053350,3346248884,1368901318,600565992,2090982877,2632479860,557719327,3717614411,3697393085,2249034635,2232388234,2430627952,1115438654,3295786421,2865522278,3633334344,84280067,33027830,303828494,2747425121,1600795957,4188952407,3496589753,2434238086,1486471617,658119965,3106381470,953803233,334231800,3005978776,857870609,3151128937,1890179545,2298973838,2805175444,3056442267,574365214,2450884487,550103529,1233637070,4289353045,2018519080,2057691103,2399374476,4166623649,2148108681,387583245,3664101311,836232934,3330556482,3100665960,3280093505,2955516313,2002398509,287182607,3413881008,4238890068,3597515707,975967766],m=[1671808611,2089089148,2006576759,2072901243,4061003762,1807603307,1873927791,3310653893,810573872,16974337,1739181671,729634347,4263110654,3613570519,2883997099,1989864566,3393556426,2191335298,3376449993,2106063485,4195741690,1508618841,1204391495,4027317232,2917941677,3563566036,2734514082,2951366063,2629772188,2767672228,1922491506,3227229120,3082974647,4246528509,2477669779,644500518,911895606,1061256767,4144166391,3427763148,878471220,2784252325,3845444069,4043897329,1905517169,3631459288,827548209,356461077,67897348,3344078279,593839651,3277757891,405286936,2527147926,84871685,2595565466,118033927,305538066,2157648768,3795705826,3945188843,661212711,2999812018,1973414517,152769033,2208177539,745822252,439235610,455947803,1857215598,1525593178,2700827552,1391895634,994932283,3596728278,3016654259,695947817,3812548067,795958831,2224493444,1408607827,3513301457,0,3979133421,543178784,4229948412,2982705585,1542305371,1790891114,3410398667,3201918910,961245753,1256100938,1289001036,1491644504,3477767631,3496721360,4012557807,2867154858,4212583931,1137018435,1305975373,861234739,2241073541,1171229253,4178635257,33948674,2139225727,1357946960,1011120188,2679776671,2833468328,1374921297,2751356323,1086357568,2408187279,2460827538,2646352285,944271416,4110742005,3168756668,3066132406,3665145818,560153121,271589392,4279952895,4077846003,3530407890,3444343245,202643468,322250259,3962553324,1608629855,2543990167,1154254916,389623319,3294073796,2817676711,2122513534,1028094525,1689045092,1575467613,422261273,1939203699,1621147744,2174228865,1339137615,3699352540,577127458,712922154,2427141008,2290289544,1187679302,3995715566,3100863416,339486740,3732514782,1591917662,186455563,3681988059,3762019296,844522546,978220090,169743370,1239126601,101321734,611076132,1558493276,3260915650,3547250131,2901361580,1655096418,2443721105,2510565781,3828863972,2039214713,3878868455,3359869896,928607799,1840765549,2374762893,3580146133,1322425422,2850048425,1823791212,1459268694,4094161908,3928346602,1706019429,2056189050,2934523822,135794696,3134549946,2022240376,628050469,779246638,472135708,2800834470,3032970164,3327236038,3894660072,3715932637,1956440180,522272287,1272813131,3185336765,2340818315,2323976074,1888542832,1044544574,3049550261,1722469478,1222152264,50660867,4127324150,236067854,1638122081,895445557,1475980887,3117443513,2257655686,3243809217,489110045,2662934430,3778599393,4162055160,2561878936,288563729,1773916777,3648039385,2391345038,2493985684,2612407707,505560094,2274497927,3911240169,3460925390,1442818645,678973480,3749357023,2358182796,2717407649,2306869641,219617805,3218761151,3862026214,1120306242,1756942440,1103331905,2578459033,762796589,252780047,2966125488,1425844308,3151392187,372911126],g=[1667474886,2088535288,2004326894,2071694838,4075949567,1802223062,1869591006,3318043793,808472672,16843522,1734846926,724270422,4278065639,3621216949,2880169549,1987484396,3402253711,2189597983,3385409673,2105378810,4210693615,1499065266,1195886990,4042263547,2913856577,3570689971,2728590687,2947541573,2627518243,2762274643,1920112356,3233831835,3082273397,4261223649,2475929149,640051788,909531756,1061110142,4160160501,3435941763,875846760,2779116625,3857003729,4059105529,1903268834,3638064043,825316194,353713962,67374088,3351728789,589522246,3284360861,404236336,2526454071,84217610,2593830191,117901582,303183396,2155911963,3806477791,3958056653,656894286,2998062463,1970642922,151591698,2206440989,741110872,437923380,454765878,1852748508,1515908788,2694904667,1381168804,993742198,3604373943,3014905469,690584402,3823320797,791638366,2223281939,1398011302,3520161977,0,3991743681,538992704,4244381667,2981218425,1532751286,1785380564,3419096717,3200178535,960056178,1246420628,1280103576,1482221744,3486468741,3503319995,4025428677,2863326543,4227536621,1128514950,1296947098,859002214,2240123921,1162203018,4193849577,33687044,2139062782,1347481760,1010582648,2678045221,2829640523,1364325282,2745433693,1077985408,2408548869,2459086143,2644360225,943212656,4126475505,3166494563,3065430391,3671750063,555836226,269496352,4294908645,4092792573,3537006015,3452783745,202118168,320025894,3974901699,1600119230,2543297077,1145359496,387397934,3301201811,2812801621,2122220284,1027426170,1684319432,1566435258,421079858,1936954854,1616945344,2172753945,1330631070,3705438115,572679748,707427924,2425400123,2290647819,1179044492,4008585671,3099120491,336870440,3739122087,1583276732,185277718,3688593069,3772791771,842159716,976899700,168435220,1229577106,101059084,606366792,1549591736,3267517855,3553849021,2897014595,1650632388,2442242105,2509612081,3840161747,2038008818,3890688725,3368567691,926374254,1835907034,2374863873,3587531953,1313788572,2846482505,1819063512,1448540844,4109633523,3941213647,1701162954,2054852340,2930698567,134748176,3132806511,2021165296,623210314,774795868,471606328,2795958615,3031746419,3334885783,3907527627,3722280097,1953799400,522133822,1263263126,3183336545,2341176845,2324333839,1886425312,1044267644,3048588401,1718004428,1212733584,50529542,4143317495,235803164,1633788866,892690282,1465383342,3115962473,2256965911,3250673817,488449850,2661202215,3789633753,4177007595,2560144171,286339874,1768537042,3654906025,2391705863,2492770099,2610673197,505291324,2273808917,3924369609,3469625735,1431699370,673740880,3755965093,2358021891,2711746649,2307489801,218961690,3217021541,3873845719,1111672452,1751693520,1094828930,2576986153,757954394,252645662,2964376443,1414855848,3149649517,370555436],y=[1374988112,2118214995,437757123,975658646,1001089995,530400753,2902087851,1273168787,540080725,2910219766,2295101073,4110568485,1340463100,3307916247,641025152,3043140495,3736164937,632953703,1172967064,1576976609,3274667266,2169303058,2370213795,1809054150,59727847,361929877,3211623147,2505202138,3569255213,1484005843,1239443753,2395588676,1975683434,4102977912,2572697195,666464733,3202437046,4035489047,3374361702,2110667444,1675577880,3843699074,2538681184,1649639237,2976151520,3144396420,4269907996,4178062228,1883793496,2403728665,2497604743,1383856311,2876494627,1917518562,3810496343,1716890410,3001755655,800440835,2261089178,3543599269,807962610,599762354,33778362,3977675356,2328828971,2809771154,4077384432,1315562145,1708848333,101039829,3509871135,3299278474,875451293,2733856160,92987698,2767645557,193195065,1080094634,1584504582,3178106961,1042385657,2531067453,3711829422,1306967366,2438237621,1908694277,67556463,1615861247,429456164,3602770327,2302690252,1742315127,2968011453,126454664,3877198648,2043211483,2709260871,2084704233,4169408201,0,159417987,841739592,504459436,1817866830,4245618683,260388950,1034867998,908933415,168810852,1750902305,2606453969,607530554,202008497,2472011535,3035535058,463180190,2160117071,1641816226,1517767529,470948374,3801332234,3231722213,1008918595,303765277,235474187,4069246893,766945465,337553864,1475418501,2943682380,4003061179,2743034109,4144047775,1551037884,1147550661,1543208500,2336434550,3408119516,3069049960,3102011747,3610369226,1113818384,328671808,2227573024,2236228733,3535486456,2935566865,3341394285,496906059,3702665459,226906860,2009195472,733156972,2842737049,294930682,1206477858,2835123396,2700099354,1451044056,573804783,2269728455,3644379585,2362090238,2564033334,2801107407,2776292904,3669462566,1068351396,742039012,1350078989,1784663195,1417561698,4136440770,2430122216,775550814,2193862645,2673705150,1775276924,1876241833,3475313331,3366754619,270040487,3902563182,3678124923,3441850377,1851332852,3969562369,2203032232,3868552805,2868897406,566021896,4011190502,3135740889,1248802510,3936291284,699432150,832877231,708780849,3332740144,899835584,1951317047,4236429990,3767586992,866637845,4043610186,1106041591,2144161806,395441711,1984812685,1139781709,3433712980,3835036895,2664543715,1282050075,3240894392,1181045119,2640243204,25965917,4203181171,4211818798,3009879386,2463879762,3910161971,1842759443,2597806476,933301370,1509430414,3943906441,3467192302,3076639029,3776767469,2051518780,2631065433,1441952575,404016761,1942435775,1408749034,1610459739,3745345300,2017778566,3400528769,3110650942,941896748,3265478751,371049330,3168937228,675039627,4279080257,967311729,135050206,3635733660,1683407248,2076935265,3576870512,1215061108,3501741890],v=[1347548327,1400783205,3273267108,2520393566,3409685355,4045380933,2880240216,2471224067,1428173050,4138563181,2441661558,636813900,4233094615,3620022987,2149987652,2411029155,1239331162,1730525723,2554718734,3781033664,46346101,310463728,2743944855,3328955385,3875770207,2501218972,3955191162,3667219033,768917123,3545789473,692707433,1150208456,1786102409,2029293177,1805211710,3710368113,3065962831,401639597,1724457132,3028143674,409198410,2196052529,1620529459,1164071807,3769721975,2226875310,486441376,2499348523,1483753576,428819965,2274680428,3075636216,598438867,3799141122,1474502543,711349675,129166120,53458370,2592523643,2782082824,4063242375,2988687269,3120694122,1559041666,730517276,2460449204,4042459122,2706270690,3446004468,3573941694,533804130,2328143614,2637442643,2695033685,839224033,1973745387,957055980,2856345839,106852767,1371368976,4181598602,1033297158,2933734917,1179510461,3046200461,91341917,1862534868,4284502037,605657339,2547432937,3431546947,2003294622,3182487618,2282195339,954669403,3682191598,1201765386,3917234703,3388507166,0,2198438022,1211247597,2887651696,1315723890,4227665663,1443857720,507358933,657861945,1678381017,560487590,3516619604,975451694,2970356327,261314535,3535072918,2652609425,1333838021,2724322336,1767536459,370938394,182621114,3854606378,1128014560,487725847,185469197,2918353863,3106780840,3356761769,2237133081,1286567175,3152976349,4255350624,2683765030,3160175349,3309594171,878443390,1988838185,3704300486,1756818940,1673061617,3403100636,272786309,1075025698,545572369,2105887268,4174560061,296679730,1841768865,1260232239,4091327024,3960309330,3497509347,1814803222,2578018489,4195456072,575138148,3299409036,446754879,3629546796,4011996048,3347532110,3252238545,4270639778,915985419,3483825537,681933534,651868046,2755636671,3828103837,223377554,2607439820,1649704518,3270937875,3901806776,1580087799,4118987695,3198115200,2087309459,2842678573,3016697106,1003007129,2802849917,1860738147,2077965243,164439672,4100872472,32283319,2827177882,1709610350,2125135846,136428751,3874428392,3652904859,3460984630,3572145929,3593056380,2939266226,824852259,818324884,3224740454,930369212,2801566410,2967507152,355706840,1257309336,4148292826,243256656,790073846,2373340630,1296297904,1422699085,3756299780,3818836405,457992840,3099667487,2135319889,77422314,1560382517,1945798516,788204353,1521706781,1385356242,870912086,325965383,2358957921,2050466060,2388260884,2313884476,4006521127,901210569,3990953189,1014646705,1503449823,1062597235,2031621326,3212035895,3931371469,1533017514,350174575,2256028891,2177544179,1052338372,741876788,1606591296,1914052035,213705253,2334669897,1107234197,1899603969,3725069491,2631447780,2422494913,1635502980,1893020342,1950903388,1120974935],w=[2807058932,1699970625,2764249623,1586903591,1808481195,1173430173,1487645946,59984867,4199882800,1844882806,1989249228,1277555970,3623636965,3419915562,1149249077,2744104290,1514790577,459744698,244860394,3235995134,1963115311,4027744588,2544078150,4190530515,1608975247,2627016082,2062270317,1507497298,2200818878,567498868,1764313568,3359936201,2305455554,2037970062,1047239e3,1910319033,1337376481,2904027272,2892417312,984907214,1243112415,830661914,861968209,2135253587,2011214180,2927934315,2686254721,731183368,1750626376,4246310725,1820824798,4172763771,3542330227,48394827,2404901663,2871682645,671593195,3254988725,2073724613,145085239,2280796200,2779915199,1790575107,2187128086,472615631,3029510009,4075877127,3802222185,4107101658,3201631749,1646252340,4270507174,1402811438,1436590835,3778151818,3950355702,3963161475,4020912224,2667994737,273792366,2331590177,104699613,95345982,3175501286,2377486676,1560637892,3564045318,369057872,4213447064,3919042237,1137477952,2658625497,1119727848,2340947849,1530455833,4007360968,172466556,266959938,516552836,0,2256734592,3980931627,1890328081,1917742170,4294704398,945164165,3575528878,958871085,3647212047,2787207260,1423022939,775562294,1739656202,3876557655,2530391278,2443058075,3310321856,547512796,1265195639,437656594,3121275539,719700128,3762502690,387781147,218828297,3350065803,2830708150,2848461854,428169201,122466165,3720081049,1627235199,648017665,4122762354,1002783846,2117360635,695634755,3336358691,4234721005,4049844452,3704280881,2232435299,574624663,287343814,612205898,1039717051,840019705,2708326185,793451934,821288114,1391201670,3822090177,376187827,3113855344,1224348052,1679968233,2361698556,1058709744,752375421,2431590963,1321699145,3519142200,2734591178,188127444,2177869557,3727205754,2384911031,3215212461,2648976442,2450346104,3432737375,1180849278,331544205,3102249176,4150144569,2952102595,2159976285,2474404304,766078933,313773861,2570832044,2108100632,1668212892,3145456443,2013908262,418672217,3070356634,2594734927,1852171925,3867060991,3473416636,3907448597,2614737639,919489135,164948639,2094410160,2997825956,590424639,2486224549,1723872674,3157750862,3399941250,3501252752,3625268135,2555048196,3673637356,1343127501,4130281361,3599595085,2957853679,1297403050,81781910,3051593425,2283490410,532201772,1367295589,3926170974,895287692,1953757831,1093597963,492483431,3528626907,1446242576,1192455638,1636604631,209336225,344873464,1015671571,669961897,3375740769,3857572124,2973530695,3747192018,1933530610,3464042516,935293895,3454686199,2858115069,1863638845,3683022916,4085369519,3292445032,875313188,1080017571,3279033885,621591778,1233856572,2504130317,24197544,3017672716,3835484340,3247465558,2220981195,3060847922,1551124588,1463996600],b=[4104605777,1097159550,396673818,660510266,2875968315,2638606623,4200115116,3808662347,821712160,1986918061,3430322568,38544885,3856137295,718002117,893681702,1654886325,2975484382,3122358053,3926825029,4274053469,796197571,1290801793,1184342925,3556361835,2405426947,2459735317,1836772287,1381620373,3196267988,1948373848,3764988233,3385345166,3263785589,2390325492,1480485785,3111247143,3780097726,2293045232,548169417,3459953789,3746175075,439452389,1362321559,1400849762,1685577905,1806599355,2174754046,137073913,1214797936,1174215055,3731654548,2079897426,1943217067,1258480242,529487843,1437280870,3945269170,3049390895,3313212038,923313619,679998e3,3215307299,57326082,377642221,3474729866,2041877159,133361907,1776460110,3673476453,96392454,878845905,2801699524,777231668,4082475170,2330014213,4142626212,2213296395,1626319424,1906247262,1846563261,562755902,3708173718,1040559837,3871163981,1418573201,3294430577,114585348,1343618912,2566595609,3186202582,1078185097,3651041127,3896688048,2307622919,425408743,3371096953,2081048481,1108339068,2216610296,0,2156299017,736970802,292596766,1517440620,251657213,2235061775,2933202493,758720310,265905162,1554391400,1532285339,908999204,174567692,1474760595,4002861748,2610011675,3234156416,3693126241,2001430874,303699484,2478443234,2687165888,585122620,454499602,151849742,2345119218,3064510765,514443284,4044981591,1963412655,2581445614,2137062819,19308535,1928707164,1715193156,4219352155,1126790795,600235211,3992742070,3841024952,836553431,1669664834,2535604243,3323011204,1243905413,3141400786,4180808110,698445255,2653899549,2989552604,2253581325,3252932727,3004591147,1891211689,2487810577,3915653703,4237083816,4030667424,2100090966,865136418,1229899655,953270745,3399679628,3557504664,4118925222,2061379749,3079546586,2915017791,983426092,2022837584,1607244650,2118541908,2366882550,3635996816,972512814,3283088770,1568718495,3499326569,3576539503,621982671,2895723464,410887952,2623762152,1002142683,645401037,1494807662,2595684844,1335535747,2507040230,4293295786,3167684641,367585007,3885750714,1865862730,2668221674,2960971305,2763173681,1059270954,2777952454,2724642869,1320957812,2194319100,2429595872,2815956275,77089521,3973773121,3444575871,2448830231,1305906550,4021308739,2857194700,2516901860,3518358430,1787304780,740276417,1699839814,1592394909,2352307457,2272556026,188821243,1729977011,3687994002,274084841,3594982253,3613494426,2701949495,4162096729,322734571,2837966542,1640576439,484830689,1202797690,3537852828,4067639125,349075736,3342319475,4157467219,4255800159,1030690015,1155237496,2951971274,1757691577,607398968,2738905026,499347990,3794078908,1011452712,227885567,2818666809,213114376,3034881240,1455525988,3414450555,850817237,1817998408,3092726480],E=[0,235474187,470948374,303765277,941896748,908933415,607530554,708780849,1883793496,2118214995,1817866830,1649639237,1215061108,1181045119,1417561698,1517767529,3767586992,4003061179,4236429990,4069246893,3635733660,3602770327,3299278474,3400528769,2430122216,2664543715,2362090238,2193862645,2835123396,2801107407,3035535058,3135740889,3678124923,3576870512,3341394285,3374361702,3810496343,3977675356,4279080257,4043610186,2876494627,2776292904,3076639029,3110650942,2472011535,2640243204,2403728665,2169303058,1001089995,899835584,666464733,699432150,59727847,226906860,530400753,294930682,1273168787,1172967064,1475418501,1509430414,1942435775,2110667444,1876241833,1641816226,2910219766,2743034109,2976151520,3211623147,2505202138,2606453969,2302690252,2269728455,3711829422,3543599269,3240894392,3475313331,3843699074,3943906441,4178062228,4144047775,1306967366,1139781709,1374988112,1610459739,1975683434,2076935265,1775276924,1742315127,1034867998,866637845,566021896,800440835,92987698,193195065,429456164,395441711,1984812685,2017778566,1784663195,1683407248,1315562145,1080094634,1383856311,1551037884,101039829,135050206,437757123,337553864,1042385657,807962610,573804783,742039012,2531067453,2564033334,2328828971,2227573024,2935566865,2700099354,3001755655,3168937228,3868552805,3902563182,4203181171,4102977912,3736164937,3501741890,3265478751,3433712980,1106041591,1340463100,1576976609,1408749034,2043211483,2009195472,1708848333,1809054150,832877231,1068351396,766945465,599762354,159417987,126454664,361929877,463180190,2709260871,2943682380,3178106961,3009879386,2572697195,2538681184,2236228733,2336434550,3509871135,3745345300,3441850377,3274667266,3910161971,3877198648,4110568485,4211818798,2597806476,2497604743,2261089178,2295101073,2733856160,2902087851,3202437046,2968011453,3936291284,3835036895,4136440770,4169408201,3535486456,3702665459,3467192302,3231722213,2051518780,1951317047,1716890410,1750902305,1113818384,1282050075,1584504582,1350078989,168810852,67556463,371049330,404016761,841739592,1008918595,775550814,540080725,3969562369,3801332234,4035489047,4269907996,3569255213,3669462566,3366754619,3332740144,2631065433,2463879762,2160117071,2395588676,2767645557,2868897406,3102011747,3069049960,202008497,33778362,270040487,504459436,875451293,975658646,675039627,641025152,2084704233,1917518562,1615861247,1851332852,1147550661,1248802510,1484005843,1451044056,933301370,967311729,733156972,632953703,260388950,25965917,328671808,496906059,1206477858,1239443753,1543208500,1441952575,2144161806,1908694277,1675577880,1842759443,3610369226,3644379585,3408119516,3307916247,4011190502,3776767469,4077384432,4245618683,2809771154,2842737049,3144396420,3043140495,2673705150,2438237621,2203032232,2370213795],A=[0,185469197,370938394,487725847,741876788,657861945,975451694,824852259,1483753576,1400783205,1315723890,1164071807,1950903388,2135319889,1649704518,1767536459,2967507152,3152976349,2801566410,2918353863,2631447780,2547432937,2328143614,2177544179,3901806776,3818836405,4270639778,4118987695,3299409036,3483825537,3535072918,3652904859,2077965243,1893020342,1841768865,1724457132,1474502543,1559041666,1107234197,1257309336,598438867,681933534,901210569,1052338372,261314535,77422314,428819965,310463728,3409685355,3224740454,3710368113,3593056380,3875770207,3960309330,4045380933,4195456072,2471224067,2554718734,2237133081,2388260884,3212035895,3028143674,2842678573,2724322336,4138563181,4255350624,3769721975,3955191162,3667219033,3516619604,3431546947,3347532110,2933734917,2782082824,3099667487,3016697106,2196052529,2313884476,2499348523,2683765030,1179510461,1296297904,1347548327,1533017514,1786102409,1635502980,2087309459,2003294622,507358933,355706840,136428751,53458370,839224033,957055980,605657339,790073846,2373340630,2256028891,2607439820,2422494913,2706270690,2856345839,3075636216,3160175349,3573941694,3725069491,3273267108,3356761769,4181598602,4063242375,4011996048,3828103837,1033297158,915985419,730517276,545572369,296679730,446754879,129166120,213705253,1709610350,1860738147,1945798516,2029293177,1239331162,1120974935,1606591296,1422699085,4148292826,4233094615,3781033664,3931371469,3682191598,3497509347,3446004468,3328955385,2939266226,2755636671,3106780840,2988687269,2198438022,2282195339,2501218972,2652609425,1201765386,1286567175,1371368976,1521706781,1805211710,1620529459,2105887268,1988838185,533804130,350174575,164439672,46346101,870912086,954669403,636813900,788204353,2358957921,2274680428,2592523643,2441661558,2695033685,2880240216,3065962831,3182487618,3572145929,3756299780,3270937875,3388507166,4174560061,4091327024,4006521127,3854606378,1014646705,930369212,711349675,560487590,272786309,457992840,106852767,223377554,1678381017,1862534868,1914052035,2031621326,1211247597,1128014560,1580087799,1428173050,32283319,182621114,401639597,486441376,768917123,651868046,1003007129,818324884,1503449823,1385356242,1333838021,1150208456,1973745387,2125135846,1673061617,1756818940,2970356327,3120694122,2802849917,2887651696,2637442643,2520393566,2334669897,2149987652,3917234703,3799141122,4284502037,4100872472,3309594171,3460984630,3545789473,3629546796,2050466060,1899603969,1814803222,1730525723,1443857720,1560382517,1075025698,1260232239,575138148,692707433,878443390,1062597235,243256656,91341917,409198410,325965383,3403100636,3252238545,3704300486,3620022987,3874428392,3990953189,4042459122,4227665663,2460449204,2578018489,2226875310,2411029155,3198115200,3046200461,2827177882,2743944855],k=[0,218828297,437656594,387781147,875313188,958871085,775562294,590424639,1750626376,1699970625,1917742170,2135253587,1551124588,1367295589,1180849278,1265195639,3501252752,3720081049,3399941250,3350065803,3835484340,3919042237,4270507174,4085369519,3102249176,3051593425,2734591178,2952102595,2361698556,2177869557,2530391278,2614737639,3145456443,3060847922,2708326185,2892417312,2404901663,2187128086,2504130317,2555048196,3542330227,3727205754,3375740769,3292445032,3876557655,3926170974,4246310725,4027744588,1808481195,1723872674,1910319033,2094410160,1608975247,1391201670,1173430173,1224348052,59984867,244860394,428169201,344873464,935293895,984907214,766078933,547512796,1844882806,1627235199,2011214180,2062270317,1507497298,1423022939,1137477952,1321699145,95345982,145085239,532201772,313773861,830661914,1015671571,731183368,648017665,3175501286,2957853679,2807058932,2858115069,2305455554,2220981195,2474404304,2658625497,3575528878,3625268135,3473416636,3254988725,3778151818,3963161475,4213447064,4130281361,3599595085,3683022916,3432737375,3247465558,3802222185,4020912224,4172763771,4122762354,3201631749,3017672716,2764249623,2848461854,2331590177,2280796200,2431590963,2648976442,104699613,188127444,472615631,287343814,840019705,1058709744,671593195,621591778,1852171925,1668212892,1953757831,2037970062,1514790577,1463996600,1080017571,1297403050,3673637356,3623636965,3235995134,3454686199,4007360968,3822090177,4107101658,4190530515,2997825956,3215212461,2830708150,2779915199,2256734592,2340947849,2627016082,2443058075,172466556,122466165,273792366,492483431,1047239e3,861968209,612205898,695634755,1646252340,1863638845,2013908262,1963115311,1446242576,1530455833,1277555970,1093597963,1636604631,1820824798,2073724613,1989249228,1436590835,1487645946,1337376481,1119727848,164948639,81781910,331544205,516552836,1039717051,821288114,669961897,719700128,2973530695,3157750862,2871682645,2787207260,2232435299,2283490410,2667994737,2450346104,3647212047,3564045318,3279033885,3464042516,3980931627,3762502690,4150144569,4199882800,3070356634,3121275539,2904027272,2686254721,2200818878,2384911031,2570832044,2486224549,3747192018,3528626907,3310321856,3359936201,3950355702,3867060991,4049844452,4234721005,1739656202,1790575107,2108100632,1890328081,1402811438,1586903591,1233856572,1149249077,266959938,48394827,369057872,418672217,1002783846,919489135,567498868,752375421,209336225,24197544,376187827,459744698,945164165,895287692,574624663,793451934,1679968233,1764313568,2117360635,1933530610,1343127501,1560637892,1243112415,1192455638,3704280881,3519142200,3336358691,3419915562,3907448597,3857572124,4075877127,4294704398,3029510009,3113855344,2927934315,2744104290,2159976285,2377486676,2594734927,2544078150],S=[0,151849742,303699484,454499602,607398968,758720310,908999204,1059270954,1214797936,1097159550,1517440620,1400849762,1817998408,1699839814,2118541908,2001430874,2429595872,2581445614,2194319100,2345119218,3034881240,3186202582,2801699524,2951971274,3635996816,3518358430,3399679628,3283088770,4237083816,4118925222,4002861748,3885750714,1002142683,850817237,698445255,548169417,529487843,377642221,227885567,77089521,1943217067,2061379749,1640576439,1757691577,1474760595,1592394909,1174215055,1290801793,2875968315,2724642869,3111247143,2960971305,2405426947,2253581325,2638606623,2487810577,3808662347,3926825029,4044981591,4162096729,3342319475,3459953789,3576539503,3693126241,1986918061,2137062819,1685577905,1836772287,1381620373,1532285339,1078185097,1229899655,1040559837,923313619,740276417,621982671,439452389,322734571,137073913,19308535,3871163981,4021308739,4104605777,4255800159,3263785589,3414450555,3499326569,3651041127,2933202493,2815956275,3167684641,3049390895,2330014213,2213296395,2566595609,2448830231,1305906550,1155237496,1607244650,1455525988,1776460110,1626319424,2079897426,1928707164,96392454,213114376,396673818,514443284,562755902,679998e3,865136418,983426092,3708173718,3557504664,3474729866,3323011204,4180808110,4030667424,3945269170,3794078908,2507040230,2623762152,2272556026,2390325492,2975484382,3092726480,2738905026,2857194700,3973773121,3856137295,4274053469,4157467219,3371096953,3252932727,3673476453,3556361835,2763173681,2915017791,3064510765,3215307299,2156299017,2307622919,2459735317,2610011675,2081048481,1963412655,1846563261,1729977011,1480485785,1362321559,1243905413,1126790795,878845905,1030690015,645401037,796197571,274084841,425408743,38544885,188821243,3613494426,3731654548,3313212038,3430322568,4082475170,4200115116,3780097726,3896688048,2668221674,2516901860,2366882550,2216610296,3141400786,2989552604,2837966542,2687165888,1202797690,1320957812,1437280870,1554391400,1669664834,1787304780,1906247262,2022837584,265905162,114585348,499347990,349075736,736970802,585122620,972512814,821712160,2595684844,2478443234,2293045232,2174754046,3196267988,3079546586,2895723464,2777952454,3537852828,3687994002,3234156416,3385345166,4142626212,4293295786,3841024952,3992742070,174567692,57326082,410887952,292596766,777231668,660510266,1011452712,893681702,1108339068,1258480242,1343618912,1494807662,1715193156,1865862730,1948373848,2100090966,2701949495,2818666809,3004591147,3122358053,2235061775,2352307457,2535604243,2653899549,3915653703,3764988233,4219352155,4067639125,3444575871,3294430577,3746175075,3594982253,836553431,953270745,600235211,718002117,367585007,484830689,133361907,251657213,2041877159,1891211689,1806599355,1654886325,1568718495,1418573201,1335535747,1184342925];function C(t){for(var e=[],r=0;r<t.length;r+=4)e.push(t[r]<<24|t[r+1]<<16|t[r+2]<<8|t[r+3]);return e}var x=function(t){if(!(this instanceof x))throw Error("AES must be instanitated with `new`");Object.defineProperty(this,"key",{value:n(t,!0)}),this._prepare()};x.prototype._prepare=function(){var t=c[this.key.length];if(null==t)throw new Error("invalid key size (must be 16, 24 or 32 bytes)");this._Ke=[],this._Kd=[];for(var e=0;e<=t;e++)this._Ke.push([0,0,0,0]),this._Kd.push([0,0,0,0]);var r,n=4*(t+1),i=this.key.length/4,s=C(this.key);for(e=0;e<i;e++)r=e>>2,this._Ke[r][e%4]=s[e],this._Kd[t-r][e%4]=s[e];for(var o,a=0,l=i;l<n;){if(o=s[i-1],s[0]^=u[o>>16&255]<<24^u[o>>8&255]<<16^u[255&o]<<8^u[o>>24&255]^h[a]<<24,a+=1,8!=i)for(e=1;e<i;e++)s[e]^=s[e-1];else{for(e=1;e<i/2;e++)s[e]^=s[e-1];for(o=s[i/2-1],s[i/2]^=u[255&o]^u[o>>8&255]<<8^u[o>>16&255]<<16^u[o>>24&255]<<24,e=i/2+1;e<i;e++)s[e]^=s[e-1]}for(e=0;e<i&&l<n;)d=l>>2,f=l%4,this._Ke[d][f]=s[e],this._Kd[t-d][f]=s[e++],l++}for(var d=1;d<t;d++)for(var f=0;f<4;f++)o=this._Kd[d][f],this._Kd[d][f]=E[o>>24&255]^A[o>>16&255]^k[o>>8&255]^S[255&o]},x.prototype.encrypt=function(t){if(16!=t.length)throw new Error("invalid plaintext size (must be 16 bytes)");for(var e=this._Ke.length-1,r=[0,0,0,0],n=C(t),s=0;s<4;s++)n[s]^=this._Ke[0][s];for(var o=1;o<e;o++){for(s=0;s<4;s++)r[s]=f[n[s]>>24&255]^p[n[(s+1)%4]>>16&255]^m[n[(s+2)%4]>>8&255]^g[255&n[(s+3)%4]]^this._Ke[o][s];n=r.slice()}var a,l=i(16);for(s=0;s<4;s++)a=this._Ke[e][s],l[4*s]=255&(u[n[s]>>24&255]^a>>24),l[4*s+1]=255&(u[n[(s+1)%4]>>16&255]^a>>16),l[4*s+2]=255&(u[n[(s+2)%4]>>8&255]^a>>8),l[4*s+3]=255&(u[255&n[(s+3)%4]]^a);return l},x.prototype.decrypt=function(t){if(16!=t.length)throw new Error("invalid ciphertext size (must be 16 bytes)");for(var e=this._Kd.length-1,r=[0,0,0,0],n=C(t),s=0;s<4;s++)n[s]^=this._Kd[0][s];for(var o=1;o<e;o++){for(s=0;s<4;s++)r[s]=y[n[s]>>24&255]^v[n[(s+3)%4]>>16&255]^w[n[(s+2)%4]>>8&255]^b[255&n[(s+1)%4]]^this._Kd[o][s];n=r.slice()}var a,l=i(16);for(s=0;s<4;s++)a=this._Kd[e][s],l[4*s]=255&(d[n[s]>>24&255]^a>>24),l[4*s+1]=255&(d[n[(s+3)%4]>>16&255]^a>>16),l[4*s+2]=255&(d[n[(s+2)%4]>>8&255]^a>>8),l[4*s+3]=255&(d[255&n[(s+1)%4]]^a);return l};var _=function(t){if(!(this instanceof _))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new x(t)};_.prototype.encrypt=function(t){if((t=n(t)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var e=i(t.length),r=i(16),o=0;o<t.length;o+=16)s(t,r,0,o,o+16),s(r=this._aes.encrypt(r),e,o);return e},_.prototype.decrypt=function(t){if((t=n(t)).length%16!=0)throw new Error("invalid ciphertext size (must be multiple of 16 bytes)");for(var e=i(t.length),r=i(16),o=0;o<t.length;o+=16)s(t,r,0,o,o+16),s(r=this._aes.decrypt(r),e,o);return e};var I=function(t,e){if(!(this instanceof I))throw Error("AES must be instanitated with `new`");if(this.description="Cipher Block Chaining",this.name="cbc",e){if(16!=e.length)throw new Error("invalid initialation vector size (must be 16 bytes)")}else e=i(16);this._lastCipherblock=n(e,!0),this._aes=new x(t)};I.prototype.encrypt=function(t){if((t=n(t)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var e=i(t.length),r=i(16),o=0;o<t.length;o+=16){s(t,r,0,o,o+16);for(var a=0;a<16;a++)r[a]^=this._lastCipherblock[a];this._lastCipherblock=this._aes.encrypt(r),s(this._lastCipherblock,e,o)}return e},I.prototype.decrypt=function(t){if((t=n(t)).length%16!=0)throw new Error("invalid ciphertext size (must be multiple of 16 bytes)");for(var e=i(t.length),r=i(16),o=0;o<t.length;o+=16){s(t,r,0,o,o+16),r=this._aes.decrypt(r);for(var a=0;a<16;a++)e[o+a]=r[a]^this._lastCipherblock[a];s(t,this._lastCipherblock,0,o,o+16)}return e};var T=function(t,e,r){if(!(this instanceof T))throw Error("AES must be instanitated with `new`");if(this.description="Cipher Feedback",this.name="cfb",e){if(16!=e.length)throw new Error("invalid initialation vector size (must be 16 size)")}else e=i(16);r||(r=1),this.segmentSize=r,this._shiftRegister=n(e,!0),this._aes=new x(t)};T.prototype.encrypt=function(t){if(t.length%this.segmentSize!=0)throw new Error("invalid plaintext size (must be segmentSize bytes)");for(var e,r=n(t,!0),i=0;i<r.length;i+=this.segmentSize){e=this._aes.encrypt(this._shiftRegister);for(var o=0;o<this.segmentSize;o++)r[i+o]^=e[o];s(this._shiftRegister,this._shiftRegister,0,this.segmentSize),s(r,this._shiftRegister,16-this.segmentSize,i,i+this.segmentSize)}return r},T.prototype.decrypt=function(t){if(t.length%this.segmentSize!=0)throw new Error("invalid ciphertext size (must be segmentSize bytes)");for(var e,r=n(t,!0),i=0;i<r.length;i+=this.segmentSize){e=this._aes.encrypt(this._shiftRegister);for(var o=0;o<this.segmentSize;o++)r[i+o]^=e[o];s(this._shiftRegister,this._shiftRegister,0,this.segmentSize),s(t,this._shiftRegister,16-this.segmentSize,i,i+this.segmentSize)}return r};var P=function(t,e){if(!(this instanceof P))throw Error("AES must be instanitated with `new`");if(this.description="Output Feedback",this.name="ofb",e){if(16!=e.length)throw new Error("invalid initialation vector size (must be 16 bytes)")}else e=i(16);this._lastPrecipher=n(e,!0),this._lastPrecipherIndex=16,this._aes=new x(t)};P.prototype.encrypt=function(t){for(var e=n(t,!0),r=0;r<e.length;r++)16===this._lastPrecipherIndex&&(this._lastPrecipher=this._aes.encrypt(this._lastPrecipher),this._lastPrecipherIndex=0),e[r]^=this._lastPrecipher[this._lastPrecipherIndex++];return e},P.prototype.decrypt=P.prototype.encrypt;var N=function(t){if(!(this instanceof N))throw Error("Counter must be instanitated with `new`");0===t||t||(t=1),"number"==typeof t?(this._counter=i(16),this.setValue(t)):this.setBytes(t)};N.prototype.setValue=function(t){if("number"!=typeof t||parseInt(t)!=t)throw new Error("invalid counter value (must be an integer)");for(var e=15;e>=0;--e)this._counter[e]=t%256,t>>=8},N.prototype.setBytes=function(t){if(16!=(t=n(t,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=t},N.prototype.increment=function(){for(var t=15;t>=0;t--){if(255!==this._counter[t]){this._counter[t]++;break}this._counter[t]=0}};var B=function(t,e){if(!(this instanceof B))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",e instanceof N||(e=new N(e)),this._counter=e,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new x(t)};B.prototype.encrypt=function(t){for(var e=n(t,!0),r=0;r<e.length;r++)16===this._remainingCounterIndex&&(this._remainingCounter=this._aes.encrypt(this._counter._counter),this._remainingCounterIndex=0,this._counter.increment()),e[r]^=this._remainingCounter[this._remainingCounterIndex++];return e},B.prototype.decrypt=B.prototype.encrypt;var M={AES:x,Counter:N,ModeOfOperation:{ecb:_,cbc:I,cfb:T,ofb:P,ctr:B},utils:{hex:l,utf8:a},padding:{pkcs7:{pad:function(t){var e=16-(t=n(t,!0)).length%16,r=i(t.length+e);s(t,r);for(var o=t.length;o<r.length;o++)r[o]=e;return r},strip:function(t){if((t=n(t,!0)).length<16)throw new Error("PKCS#7 invalid length");var e=t[t.length-1];if(e>16)throw new Error("PKCS#7 padding byte out of range");for(var r=t.length-e,o=0;o<e;o++)if(t[r+o]!==e)throw new Error("PKCS#7 invalid padding byte");var a=i(r);return s(t,a,0,0,r),a}}},_arrayTest:{coerceArray:n,createArray:i,copyArray:s}};t.exports=M}()}(yo)),yo.exports),wo=n(vo);const bo="json-wallets/5.8.0";function Eo(t){return"string"==typeof t&&"0x"!==t.substring(0,2)&&(t="0x"+t),C(t)}function Ao(t,e){for(t=String(t);t.length<e;)t="0"+t;return t}function ko(t){return"string"==typeof t?Ve(t,Ge.NFKC):C(t)}function So(t,e){let r=t;const n=e.toLowerCase().split("/");for(let t=0;t<n.length;t++){let e=null;for(const i in r)if(i.toLowerCase()===n[t]){e=r[i];break}if(null===e)return null;r=e}return r}function Co(t){const e=C(t);e[6]=15&e[6]|64,e[8]=63&e[8]|128;const r=N(e);return[r.substring(2,10),r.substring(10,14),r.substring(14,18),r.substring(18,22),r.substring(22,34)].join("-")}const xo=new v(bo);class _o extends Et{isCrowdsaleAccount(t){return!(!t||!t._isCrowdsaleAccount)}}function Io(t,e){const r=JSON.parse(t);e=ko(e);const n=ye(So(r,"ethaddr")),i=Eo(So(r,"encseed"));i&&i.length%16==0||xo.throwArgumentError("invalid encseed","json",t);const s=C(js(e,e,2e3,32,"sha256")).slice(0,16),o=i.slice(0,16),a=i.slice(16),l=new wo.ModeOfOperation.cbc(s,o),c=wo.padding.pkcs7.strip(C(l.decrypt(a)));let h="";for(let t=0;t<c.length;t++)h+=String.fromCharCode(c[t]);const u=ee(Ve(h));return new _o({_isCrowdsaleAccount:!0,address:n,privateKey:u})}function To(t){let e=null;try{e=JSON.parse(t)}catch(t){return!1}return e.encseed&&e.ethaddr}function Po(t){let e=null;try{e=JSON.parse(t)}catch(t){return!1}return!(!e.version||parseInt(e.version)!==e.version||3!==parseInt(e.version))}var No,Bo={exports:{}};var Mo=(No||(No=1,function(t){!function(){const e=2147483647;function r(t){const e=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]);let r=1779033703,n=3144134277,i=1013904242,s=2773480762,o=1359893119,a=2600822924,l=528734635,c=1541459225;const h=new Uint32Array(64);function u(t){let u=0,d=t.length;for(;d>=64;){let f,p,m,g,y,v=r,w=n,b=i,E=s,A=o,k=a,S=l,C=c;for(p=0;p<16;p++)m=u+4*p,h[p]=(255&t[m])<<24|(255&t[m+1])<<16|(255&t[m+2])<<8|255&t[m+3];for(p=16;p<64;p++)f=h[p-2],g=(f>>>17|f<<15)^(f>>>19|f<<13)^f>>>10,f=h[p-15],y=(f>>>7|f<<25)^(f>>>18|f<<14)^f>>>3,h[p]=(g+h[p-7]|0)+(y+h[p-16]|0)|0;for(p=0;p<64;p++)g=(((A>>>6|A<<26)^(A>>>11|A<<21)^(A>>>25|A<<7))+(A&k^~A&S)|0)+(C+(e[p]+h[p]|0)|0)|0,y=((v>>>2|v<<30)^(v>>>13|v<<19)^(v>>>22|v<<10))+(v&w^v&b^w&b)|0,C=S,S=k,k=A,A=E+g|0,E=b,b=w,w=v,v=g+y|0;r=r+v|0,n=n+w|0,i=i+b|0,s=s+E|0,o=o+A|0,a=a+k|0,l=l+S|0,c=c+C|0,u+=64,d-=64}}u(t);let d,f=t.length%64,p=t.length/536870912|0,m=t.length<<3,g=f<56?56:120,y=t.slice(t.length-f,t.length);for(y.push(128),d=f+1;d<g;d++)y.push(0);return y.push(p>>>24&255),y.push(p>>>16&255),y.push(p>>>8&255),y.push(p>>>0&255),y.push(m>>>24&255),y.push(m>>>16&255),y.push(m>>>8&255),y.push(m>>>0&255),u(y),[r>>>24&255,r>>>16&255,r>>>8&255,r>>>0&255,n>>>24&255,n>>>16&255,n>>>8&255,n>>>0&255,i>>>24&255,i>>>16&255,i>>>8&255,i>>>0&255,s>>>24&255,s>>>16&255,s>>>8&255,s>>>0&255,o>>>24&255,o>>>16&255,o>>>8&255,o>>>0&255,a>>>24&255,a>>>16&255,a>>>8&255,a>>>0&255,l>>>24&255,l>>>16&255,l>>>8&255,l>>>0&255,c>>>24&255,c>>>16&255,c>>>8&255,c>>>0&255]}function n(t,e,n){t=t.length<=64?t:r(t);const i=64+e.length+4,s=new Array(i),o=new Array(64);let a,l=[];for(a=0;a<64;a++)s[a]=54;for(a=0;a<t.length;a++)s[a]^=t[a];for(a=0;a<e.length;a++)s[64+a]=e[a];for(a=i-4;a<i;a++)s[a]=0;for(a=0;a<64;a++)o[a]=92;for(a=0;a<t.length;a++)o[a]^=t[a];function c(){for(let t=i-1;t>=i-4;t--){if(s[t]++,s[t]<=255)return;s[t]=0}}for(;n>=32;)c(),l=l.concat(r(o.concat(r(s)))),n-=32;return n>0&&(c(),l=l.concat(r(o.concat(r(s))).slice(0,n))),l}function i(t,e,r,n,i){let s;for(l(t,16*(2*r-1),i,0,16),s=0;s<2*r;s++)a(t,16*s,i,16),o(i,n),l(i,0,t,e+16*s,16);for(s=0;s<r;s++)l(t,e+2*s*16,t,16*s,16);for(s=0;s<r;s++)l(t,e+16*(2*s+1),t,16*(s+r),16)}function s(t,e){return t<<e|t>>>32-e}function o(t,e){l(t,0,e,0,16);for(let t=8;t>0;t-=2)e[4]^=s(e[0]+e[12],7),e[8]^=s(e[4]+e[0],9),e[12]^=s(e[8]+e[4],13),e[0]^=s(e[12]+e[8],18),e[9]^=s(e[5]+e[1],7),e[13]^=s(e[9]+e[5],9),e[1]^=s(e[13]+e[9],13),e[5]^=s(e[1]+e[13],18),e[14]^=s(e[10]+e[6],7),e[2]^=s(e[14]+e[10],9),e[6]^=s(e[2]+e[14],13),e[10]^=s(e[6]+e[2],18),e[3]^=s(e[15]+e[11],7),e[7]^=s(e[3]+e[15],9),e[11]^=s(e[7]+e[3],13),e[15]^=s(e[11]+e[7],18),e[1]^=s(e[0]+e[3],7),e[2]^=s(e[1]+e[0],9),e[3]^=s(e[2]+e[1],13),e[0]^=s(e[3]+e[2],18),e[6]^=s(e[5]+e[4],7),e[7]^=s(e[6]+e[5],9),e[4]^=s(e[7]+e[6],13),e[5]^=s(e[4]+e[7],18),e[11]^=s(e[10]+e[9],7),e[8]^=s(e[11]+e[10],9),e[9]^=s(e[8]+e[11],13),e[10]^=s(e[9]+e[8],18),e[12]^=s(e[15]+e[14],7),e[13]^=s(e[12]+e[15],9),e[14]^=s(e[13]+e[12],13),e[15]^=s(e[14]+e[13],18);for(let r=0;r<16;++r)t[r]+=e[r]}function a(t,e,r,n){for(let i=0;i<n;i++)r[i]^=t[e+i]}function l(t,e,r,n,i){for(;i--;)r[n++]=t[e++]}function c(t){if(!t||"number"!=typeof t.length)return!1;for(let e=0;e<t.length;e++){const r=t[e];if("number"!=typeof r||r%1||r<0||r>=256)return!1}return!0}function h(t,e){if("number"!=typeof t||t%1)throw new Error("invalid "+e);return t}function u(t,r,s,o,u,d,f){if(s=h(s,"N"),o=h(o,"r"),u=h(u,"p"),d=h(d,"dkLen"),0===s||s&s-1)throw new Error("N must be power of 2");if(s>e/128/o)throw new Error("N too large");if(o>e/128/u)throw new Error("r too large");if(!c(t))throw new Error("password must be an array or buffer");if(t=Array.prototype.slice.call(t),!c(r))throw new Error("salt must be an array or buffer");r=Array.prototype.slice.call(r);let p=n(t,r,128*u*o);const m=new Uint32Array(32*u*o);for(let t=0;t<m.length;t++){const e=4*t;m[t]=(255&p[e+3])<<24|(255&p[e+2])<<16|(255&p[e+1])<<8|255&p[e+0]}const g=new Uint32Array(64*o),y=new Uint32Array(32*o*s),v=32*o,w=new Uint32Array(16),b=new Uint32Array(16),E=u*s*2;let A,k,S=0,C=null,x=!1,_=0,I=0;const T=f?parseInt(1e3/o):4294967295,P="undefined"!=typeof setImmediate?setImmediate:setTimeout,N=function(){if(x)return f(new Error("cancelled"),S/E);let e;switch(_){case 0:k=32*I*o,l(m,k,g,0,v),_=1,A=0;case 1:e=s-A,e>T&&(e=T);for(let t=0;t<e;t++)l(g,0,y,(A+t)*v,v),i(g,v,o,w,b);if(A+=e,S+=e,f){const t=parseInt(1e3*S/E);if(t!==C){if(x=f(null,S/E),x)break;C=t}}if(A<s)break;A=0,_=2;case 2:e=s-A,e>T&&(e=T);for(let t=0;t<e;t++){const t=g[16*(2*o-1)]&s-1;a(y,t*v,g,v),i(g,v,o,w,b)}if(A+=e,S+=e,f){const t=parseInt(1e3*S/E);if(t!==C){if(x=f(null,S/E),x)break;C=t}}if(A<s)break;if(l(g,0,m,k,v),I++,I<u){_=0;break}p=[];for(let t=0;t<m.length;t++)p.push(255&m[t]),p.push(m[t]>>8&255),p.push(m[t]>>16&255),p.push(m[t]>>24&255);const r=n(t,p,d);return f&&f(null,1,r),r}f&&P(N)};if(!f)for(;;){const t=N();if(null!=t)return t}N()}const d={scrypt:function(t,e,r,n,i,s,o){return new Promise(function(a,l){let c=0;o&&o(0),u(t,e,r,n,i,s,function(t,e,r){if(t)l(t);else if(r)o&&1!==c&&o(1),a(new Uint8Array(r));else if(o&&e!==c)return c=e,o(e)})})},syncScrypt:function(t,e,r,n,i,s){return new Uint8Array(u(t,e,r,n,i,s))}};t.exports=d}()}(Bo)),Bo.exports),Ro=n(Mo),Fo=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const Oo=new v(bo);function Do(t){return null!=t&&t.mnemonic&&t.mnemonic.phrase}class Lo extends Et{isKeystoreAccount(t){return!(!t||!t._isKeystoreAccount)}}function Uo(t,e){const r=Eo(So(t,"crypto/ciphertext"));if(N(ee(x([e.slice(16,32),r]))).substring(2)!==So(t,"crypto/mac").toLowerCase())throw new Error("invalid password");const n=function(t,e,r){if("aes-128-ctr"===So(t,"crypto/cipher")){const n=Eo(So(t,"crypto/cipherparams/iv")),i=new wo.Counter(n);return C(new wo.ModeOfOperation.ctr(e,i).decrypt(r))}return null}(t,e.slice(0,16),r);n||Oo.throwError("unsupported cipher",v.errors.UNSUPPORTED_OPERATION,{operation:"decrypt"});const i=e.slice(32,64),s=ls(n);if(t.address){let e=t.address.toLowerCase();if("0x"!==e.substring(0,2)&&(e="0x"+e),ye(e)!==s)throw new Error("address mismatch")}const o={_isKeystoreAccount:!0,address:s,privateKey:N(n)};if("0.1"===So(t,"x-ethers/version")){const e=Eo(So(t,"x-ethers/mnemonicCiphertext")),r=Eo(So(t,"x-ethers/mnemonicCounter")),n=new wo.Counter(r),s=new wo.ModeOfOperation.ctr(i,n),a=So(t,"x-ethers/path")||so,l=So(t,"x-ethers/locale")||"en",c=C(s.decrypt(e));try{const t=co(c,l),e=oo.fromMnemonic(t,null,l).derivePath(a);if(e.privateKey!=o.privateKey)throw new Error("mnemonic mismatch");o.mnemonic=e.mnemonic}catch(t){if(t.code!==v.errors.INVALID_ARGUMENT||"wordlist"!==t.argument)throw t}}return new Lo(o)}function qo(t,e,r,n,i){return C(js(t,e,r,n,i))}function zo(t,e,r,n,i){return Promise.resolve(qo(t,e,r,n,i))}function jo(t,e,r,n,i){const s=ko(e),o=So(t,"crypto/kdf");if(o&&"string"==typeof o){const e=function(t,e){return Oo.throwArgumentError("invalid key-derivation function parameters",t,e)};if("scrypt"===o.toLowerCase()){const r=Eo(So(t,"crypto/kdfparams/salt")),a=parseInt(So(t,"crypto/kdfparams/n")),l=parseInt(So(t,"crypto/kdfparams/r")),c=parseInt(So(t,"crypto/kdfparams/p"));a&&l&&c||e("kdf",o),a&a-1&&e("N",a);const h=parseInt(So(t,"crypto/kdfparams/dklen"));return 32!==h&&e("dklen",h),n(s,r,a,l,c,64,i)}if("pbkdf2"===o.toLowerCase()){const n=Eo(So(t,"crypto/kdfparams/salt"));let i=null;const o=So(t,"crypto/kdfparams/prf");"hmac-sha256"===o?i="sha256":"hmac-sha512"===o?i="sha512":e("prf",o);const a=parseInt(So(t,"crypto/kdfparams/c")),l=parseInt(So(t,"crypto/kdfparams/dklen"));return 32!==l&&e("dklen",l),r(s,n,a,l,i)}}return Oo.throwArgumentError("unsupported key-derivation function","kdf",o)}function Go(t,e,r){if(To(t)){r&&r(0);const n=Io(t,e);return r&&r(1),Promise.resolve(n)}return Po(t)?function(t,e,r){return Fo(this,void 0,void 0,function*(){const n=JSON.parse(t);return Uo(n,yield jo(n,e,zo,Ro.scrypt,r))})}(t,e,r):Promise.reject(new Error("invalid JSON wallet"))}function Ho(t,e){if(To(t))return Io(t,e);if(Po(t))return function(t,e){const r=JSON.parse(t);return Uo(r,jo(r,e,qo,Ro.syncScrypt))}(t,e);throw new Error("invalid JSON wallet")}var Wo=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const Ko=new v("wallet/5.8.0");class $o extends xn{constructor(t,e){if(super(),null!=(r=t)&&T(r.privateKey,32)&&null!=r.address){const e=new Zi(t.privateKey);if(dt(this,"_signingKey",()=>e),dt(this,"address",ls(this.publicKey)),this.address!==ye(t.address)&&Ko.throwArgumentError("privateKey/address mismatch","privateKey","[REDACTED]"),function(t){const e=t.mnemonic;return e&&e.phrase}(t)){const e=t.mnemonic;dt(this,"_mnemonic",()=>({phrase:e.phrase,path:e.path||so,locale:e.locale||"en"}));const r=this.mnemonic;ls(oo.fromMnemonic(r.phrase,null,r.locale).derivePath(r.path).privateKey)!==this.address&&Ko.throwArgumentError("mnemonic/address mismatch","privateKey","[REDACTED]")}else dt(this,"_mnemonic",()=>null)}else{if(Zi.isSigningKey(t))"secp256k1"!==t.curve&&Ko.throwArgumentError("unsupported curve; must be secp256k1","privateKey","[REDACTED]"),dt(this,"_signingKey",()=>t);else{"string"==typeof t&&t.match(/^[0-9a-f]*$/i)&&64===t.length&&(t="0x"+t);const e=new Zi(t);dt(this,"_signingKey",()=>e)}dt(this,"_mnemonic",()=>null),dt(this,"address",ls(this.publicKey))}var r;e&&!En.isProvider(e)&&Ko.throwArgumentError("invalid provider","provider",e),dt(this,"provider",e||null)}get mnemonic(){return this._mnemonic()}get privateKey(){return this._signingKey().privateKey}get publicKey(){return this._signingKey().publicKey}getAddress(){return Promise.resolve(this.address)}connect(t){return new $o(this,t)}signTransaction(t){return pt(t).then(e=>{null!=e.from&&(ye(e.from)!==this.address&&Ko.throwArgumentError("transaction from address mismatch","transaction.from",t.from),delete e.from);const r=this._signingKey().signDigest(ee(gs(e)));return gs(e,r)})}signMessage(t){return Wo(this,void 0,void 0,function*(){return U(this._signingKey().signDigest(Kr(t)))})}_signTypedData(t,e,r){return Wo(this,void 0,void 0,function*(){const n=yield cn.resolveNames(t,e,r,t=>(null==this.provider&&Ko.throwError("cannot resolve ENS names without a provider",v.errors.UNSUPPORTED_OPERATION,{operation:"resolveName",value:t}),this.provider.resolveName(t)));return U(this._signingKey().signDigest(cn.hash(n.domain,e,n.value)))})}encrypt(t,e,r){if("function"!=typeof e||r||(r=e,e={}),r&&"function"!=typeof r)throw new Error("invalid callback");return e||(e={}),function(t,e,r,n){try{if(ye(t.address)!==ls(t.privateKey))throw new Error("address/privateKey mismatch");if(Do(t)){const e=t.mnemonic;if(oo.fromMnemonic(e.phrase,null,e.locale).derivePath(e.path||so).privateKey!=t.privateKey)throw new Error("mnemonic mismatch")}}catch(t){return Promise.reject(t)}"function"!=typeof r||n||(n=r,r={}),r||(r={});const i=C(t.privateKey),s=ko(e);let o=null,a=null,l=null;if(Do(t)){const e=t.mnemonic;o=C(lo(e.phrase,e.locale||"en")),a=e.path||so,l=e.locale||"en"}let c=r.client;c||(c="ethers.js");let h=null;h=r.salt?C(r.salt):po(32);let u=null;if(r.iv){if(u=C(r.iv),16!==u.length)throw new Error("invalid iv")}else u=po(16);let d=null;if(r.uuid){if(d=C(r.uuid),16!==d.length)throw new Error("invalid uuid")}else d=po(16);let f=1<<17,p=8,m=1;return r.scrypt&&(r.scrypt.N&&(f=r.scrypt.N),r.scrypt.r&&(p=r.scrypt.r),r.scrypt.p&&(m=r.scrypt.p)),Ro.scrypt(s,h,f,p,m,64,n).then(e=>{const r=(e=C(e)).slice(0,16),n=e.slice(16,32),s=e.slice(32,64),g=new wo.Counter(u),y=C(new wo.ModeOfOperation.ctr(r,g).encrypt(i)),v=ee(x([n,y])),w={address:t.address.substring(2).toLowerCase(),id:Co(d),version:3,crypto:{cipher:"aes-128-ctr",cipherparams:{iv:N(u).substring(2)},ciphertext:N(y).substring(2),kdf:"scrypt",kdfparams:{salt:N(h).substring(2),n:f,dklen:32,p:m,r:p},mac:v.substring(2)}};if(o){const t=po(16),e=new wo.Counter(t),r=C(new wo.ModeOfOperation.ctr(s,e).encrypt(o)),n=new Date,i=n.getUTCFullYear()+"-"+Ao(n.getUTCMonth()+1,2)+"-"+Ao(n.getUTCDate(),2)+"T"+Ao(n.getUTCHours(),2)+"-"+Ao(n.getUTCMinutes(),2)+"-"+Ao(n.getUTCSeconds(),2)+".0Z";w["x-ethers"]={client:c,gethFilename:"UTC--"+i+"--"+w.address,mnemonicCounter:N(t).substring(2),mnemonicCiphertext:N(r).substring(2),path:a,locale:l,version:"0.1"}}return JSON.stringify(w)})}(this,t,e,r)}static createRandom(t){let e=po(16);t||(t={}),t.extraEntropy&&(e=C(M(ee(x([e,t.extraEntropy])),0,16)));const r=co(e,t.locale);return $o.fromMnemonic(r,t.path,t.locale)}static fromEncryptedJson(t,e,r){return Go(t,e,r).then(t=>new $o(t))}static fromEncryptedJsonSync(t,e){return new $o(Ho(t,e))}static fromMnemonic(t,e,r){return e||(e=so),new $o(oo.fromMnemonic(t,null,r).derivePath(e))}}const Vo=new v("networks/5.8.0");function Jo(t){const e=function(e,r){null==r&&(r={});const n=[];if(e.InfuraProvider&&"-"!==r.infura)try{n.push(new e.InfuraProvider(t,r.infura))}catch(t){}if(e.EtherscanProvider&&"-"!==r.etherscan)try{n.push(new e.EtherscanProvider(t,r.etherscan))}catch(t){}if(e.AlchemyProvider&&"-"!==r.alchemy)try{n.push(new e.AlchemyProvider(t,r.alchemy))}catch(t){}if(e.PocketProvider&&"-"!==r.pocket){const i=["goerli","ropsten","rinkeby","sepolia"];try{const s=new e.PocketProvider(t,r.pocket);s.network&&-1===i.indexOf(s.network.name)&&n.push(s)}catch(t){}}if(e.CloudflareProvider&&"-"!==r.cloudflare)try{n.push(new e.CloudflareProvider(t))}catch(t){}if(e.AnkrProvider&&"-"!==r.ankr)try{const i=["ropsten"],s=new e.AnkrProvider(t,r.ankr);s.network&&-1===i.indexOf(s.network.name)&&n.push(s)}catch(t){}if(e.QuickNodeProvider&&"-"!==r.quicknode)try{n.push(new e.QuickNodeProvider(t,r.quicknode))}catch(t){}if(0===n.length)return null;if(e.FallbackProvider){let i=1;return null!=r.quorum?i=r.quorum:"homestead"===t&&(i=2),new e.FallbackProvider(n,i)}return n[0]};return e.renetwork=function(t){return Jo(t)},e}function Qo(t,e){const r=function(r,n){return r.JsonRpcProvider?new r.JsonRpcProvider(t,e):null};return r.renetwork=function(e){return Qo(t,e)},r}const Yo={chainId:1,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"homestead",_defaultProvider:Jo("homestead")},Xo={chainId:3,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"ropsten",_defaultProvider:Jo("ropsten")},Zo={chainId:63,name:"classicMordor",_defaultProvider:Qo("https://www.ethercluster.com/mordor","classicMordor")},ta={unspecified:{chainId:0,name:"unspecified"},homestead:Yo,mainnet:Yo,morden:{chainId:2,name:"morden"},ropsten:Xo,testnet:Xo,rinkeby:{chainId:4,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"rinkeby",_defaultProvider:Jo("rinkeby")},kovan:{chainId:42,name:"kovan",_defaultProvider:Jo("kovan")},goerli:{chainId:5,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"goerli",_defaultProvider:Jo("goerli")},kintsugi:{chainId:1337702,name:"kintsugi"},sepolia:{chainId:11155111,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"sepolia",_defaultProvider:Jo("sepolia")},holesky:{chainId:17e3,name:"holesky",_defaultProvider:Jo("holesky")},classic:{chainId:61,name:"classic",_defaultProvider:Qo("https://www.ethercluster.com/etc","classic")},classicMorden:{chainId:62,name:"classicMorden"},classicMordor:Zo,classicTestnet:Zo,classicKotti:{chainId:6,name:"classicKotti",_defaultProvider:Qo("https://www.ethercluster.com/kotti","classicKotti")},xdai:{chainId:100,name:"xdai"},matic:{chainId:137,name:"matic",_defaultProvider:Jo("matic")},maticmum:{chainId:80001,name:"maticmum",_defaultProvider:Jo("maticmum")},optimism:{chainId:10,name:"optimism",_defaultProvider:Jo("optimism")},"optimism-kovan":{chainId:69,name:"optimism-kovan"},"optimism-goerli":{chainId:420,name:"optimism-goerli"},"optimism-sepolia":{chainId:11155420,name:"optimism-sepolia"},arbitrum:{chainId:42161,name:"arbitrum"},"arbitrum-rinkeby":{chainId:421611,name:"arbitrum-rinkeby"},"arbitrum-goerli":{chainId:421613,name:"arbitrum-goerli"},"arbitrum-sepolia":{chainId:421614,name:"arbitrum-sepolia"},bnb:{chainId:56,name:"bnb"},bnbt:{chainId:97,name:"bnbt"}};function ea(t){if(null==t)return null;if("number"==typeof t){for(const e in ta){const r=ta[e];if(r.chainId===t)return{name:r.name,chainId:r.chainId,ensAddress:r.ensAddress||null,_defaultProvider:r._defaultProvider||null}}return{chainId:t,name:"unknown"}}if("string"==typeof t){const e=ta[t];return null==e?null:{name:e.name,chainId:e.chainId,ensAddress:e.ensAddress,_defaultProvider:e._defaultProvider||null}}const e=ta[t.name];if(!e)return"number"!=typeof t.chainId&&Vo.throwArgumentError("invalid network chainId","network",t),t;0!==t.chainId&&t.chainId!==e.chainId&&Vo.throwArgumentError("network chainId mismatch","network",t);let r=t._defaultProvider||null;var n;return null==r&&e._defaultProvider&&(r=(n=e._defaultProvider)&&"function"==typeof n.renetwork?e._defaultProvider.renetwork(t):e._defaultProvider),{name:t.name,chainId:e.chainId,ensAddress:t.ensAddress||e.ensAddress||null,_defaultProvider:r}}var ra=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};function na(t,e){return ra(this,void 0,void 0,function*(){null==e&&(e={});const r={method:e.method||"GET",headers:e.headers||{},body:e.body||void 0};if(!0!==e.skipFetchSetup&&(r.mode="cors",r.cache="no-cache",r.credentials="same-origin",r.redirect="follow",r.referrer="client"),null!=e.fetchOptions){const t=e.fetchOptions;t.mode&&(r.mode=t.mode),t.cache&&(r.cache=t.cache),t.credentials&&(r.credentials=t.credentials),t.redirect&&(r.redirect=t.redirect),t.referrer&&(r.referrer=t.referrer)}const n=yield fetch(t,r),i=yield n.arrayBuffer(),s={};return n.headers.forEach?n.headers.forEach((t,e)=>{s[e.toLowerCase()]=t}):n.headers.keys().forEach(t=>{s[t.toLowerCase()]=n.headers.get(t)}),{headers:s,statusCode:n.status,statusMessage:n.statusText,body:C(new Uint8Array(i))}})}var ia=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const sa=new v("web/5.8.0");function oa(t){return new Promise(e=>{setTimeout(e,t)})}function aa(t,e){if(null==t)return null;if("string"==typeof t)return t;if(A(t)){if(e&&("text"===e.split("/")[0]||"application/json"===e.split(";")[0].trim()))try{return Ye(t)}catch(t){}return N(t)}return t}function la(t,e,r){const n="object"==typeof t&&null!=t.throttleLimit?t.throttleLimit:12;sa.assertArgument(n>0&&n%1==0,"invalid connection throttle limit","connection.throttleLimit",n);const i="object"==typeof t?t.throttleCallback:null,s="object"==typeof t&&"number"==typeof t.throttleSlotInterval?t.throttleSlotInterval:100;sa.assertArgument(s>0&&s%1==0,"invalid connection throttle slot interval","connection.throttleSlotInterval",s);const o="object"==typeof t&&!!t.errorPassThrough,a={};let l=null;const c={method:"GET"};let h=!1,u=12e4;if("string"==typeof t)l=t;else if("object"==typeof t){if(null!=t&&null!=t.url||sa.throwArgumentError("missing URL","connection.url",t),l=t.url,"number"==typeof t.timeout&&t.timeout>0&&(u=t.timeout),t.headers)for(const e in t.headers)a[e.toLowerCase()]={key:e,value:String(t.headers[e])},["if-none-match","if-modified-since"].indexOf(e.toLowerCase())>=0&&(h=!0);if(c.allowGzip=!!t.allowGzip,null!=t.user&&null!=t.password){"https:"!==l.substring(0,6)&&!0!==t.allowInsecureAuthentication&&sa.throwError("basic authentication requires a secure https url",v.errors.INVALID_ARGUMENT,{argument:"url",url:l,user:t.user,password:"[REDACTED]"});const e=t.user+":"+t.password;a.authorization={key:"Authorization",value:"Basic "+wr(Ve(e))}}null!=t.skipFetchSetup&&(c.skipFetchSetup=!!t.skipFetchSetup),null!=t.fetchOptions&&(c.fetchOptions=gt(t.fetchOptions))}const d=new RegExp("^data:([^;:]*)?(;base64)?,(.*)$","i"),f=l?l.match(d):null;if(f)try{const t={statusCode:200,statusMessage:"OK",headers:{"content-type":f[1]||"text/plain"},body:f[2]?vr(f[3]):(p=f[3],Ve(p.replace(/%([0-9a-f][0-9a-f])/gi,(t,e)=>String.fromCharCode(parseInt(e,16)))))};let e=t.body;return r&&(e=r(t.body,t)),Promise.resolve(e)}catch(t){sa.throwError("processing response error",v.errors.SERVER_ERROR,{body:aa(f[1],f[2]),error:t,requestBody:null,requestMethod:"GET",url:l})}var p;e&&(c.method="POST",c.body=e,null==a["content-type"]&&(a["content-type"]={key:"Content-Type",value:"application/octet-stream"}),null==a["content-length"]&&(a["content-length"]={key:"Content-Length",value:String(e.length)}));const m={};Object.keys(a).forEach(t=>{const e=a[t];m[e.key]=e.value}),c.headers=m;const g=function(){let t=null;return{promise:new Promise(function(e,r){u&&(t=setTimeout(()=>{null!=t&&(t=null,r(sa.makeError("timeout",v.errors.TIMEOUT,{requestBody:aa(c.body,m["content-type"]),requestMethod:c.method,timeout:u,url:l})))},u))}),cancel:function(){null!=t&&(clearTimeout(t),t=null)}}}(),y=function(){return ia(this,void 0,void 0,function*(){for(let t=0;t<n;t++){let e=null;try{if(e=yield na(l,c),t<n)if(301===e.statusCode||302===e.statusCode){const t=e.headers.location||"";if("GET"===c.method&&t.match(/^https:/)){l=e.headers.location;continue}}else if(429===e.statusCode){let r=!0;if(i&&(r=yield i(t,l)),r){let r=0;const n=e.headers["retry-after"];r="string"==typeof n&&n.match(/^[1-9][0-9]*$/)?1e3*parseInt(n):s*parseInt(String(Math.random()*Math.pow(2,t))),yield oa(r);continue}}}catch(t){e=t.response,null==e&&(g.cancel(),sa.throwError("missing response",v.errors.SERVER_ERROR,{requestBody:aa(c.body,m["content-type"]),requestMethod:c.method,serverError:t,url:l}))}let a=e.body;if(h&&304===e.statusCode?a=null:!o&&(e.statusCode<200||e.statusCode>=300)&&(g.cancel(),sa.throwError("bad response",v.errors.SERVER_ERROR,{status:e.statusCode,headers:e.headers,body:aa(a,e.headers?e.headers["content-type"]:null),requestBody:aa(c.body,m["content-type"]),requestMethod:c.method,url:l})),r)try{const t=yield r(a,e);return g.cancel(),t}catch(r){if(r.throttleRetry&&t<n){let e=!0;if(i&&(e=yield i(t,l)),e){const e=s*parseInt(String(Math.random()*Math.pow(2,t)));yield oa(e);continue}}g.cancel(),sa.throwError("processing response error",v.errors.SERVER_ERROR,{body:aa(a,e.headers?e.headers["content-type"]:null),error:r,requestBody:aa(c.body,m["content-type"]),requestMethod:c.method,url:l})}return g.cancel(),a}return sa.throwError("failed response",v.errors.SERVER_ERROR,{requestBody:aa(c.body,m["content-type"]),requestMethod:c.method,url:l})})}();return Promise.race([g.promise,y])}function ca(t,e,r){let n=null;if(null!=e){n=Ve(e);const r="string"==typeof t?{url:t}:gt(t);if(r.headers){0!==Object.keys(r.headers).filter(t=>"content-type"===t.toLowerCase()).length||(r.headers=gt(r.headers),r.headers["content-type"]="application/json")}else r.headers={"content-type":"application/json"};t=r}return la(t,n,(t,e)=>{let n=null;if(null!=t)try{n=JSON.parse(Ye(t))}catch(e){sa.throwError("invalid JSON",v.errors.SERVER_ERROR,{body:t,error:e})}return r&&(n=r(n,e)),n})}function ha(t,e){return e||(e={}),null==(e=gt(e)).floor&&(e.floor=0),null==e.ceiling&&(e.ceiling=1e4),null==e.interval&&(e.interval=250),new Promise(function(r,n){let i=null,s=!1;const o=()=>!s&&(s=!0,i&&clearTimeout(i),!0);e.timeout&&(i=setTimeout(()=>{o()&&n(new Error("timeout"))},e.timeout));const a=e.retryLimit;let l=0;!function i(){return t().then(function(t){if(void 0!==t)o()&&r(t);else if(e.oncePoll)e.oncePoll.once("poll",i);else if(e.onceBlock)e.onceBlock.once("block",i);else if(!s){if(l++,l>a)return void(o()&&n(new Error("retry limit reached")));let t=e.interval*parseInt(String(Math.random()*Math.pow(2,l)));t<e.floor&&(t=e.floor),t>e.ceiling&&(t=e.ceiling),setTimeout(i,t)}return null},function(t){o()&&n(t)})}()})}var ua,da;var fa=function(){if(da)return ua;da=1;for(var t="qpzry9x8gf2tvdw0s3jn54khce6mua7l",e={},r=0;r<32;r++){var n=t.charAt(r);if(void 0!==e[n])throw new TypeError(n+" is ambiguous");e[n]=r}function i(t){var e=t>>25;return(33554431&t)<<5^996825010&-(1&e)^642813549&-(e>>1&1)^513874426&-(e>>2&1)^1027748829&-(e>>3&1)^705979059&-(e>>4&1)}function s(t){for(var e=1,r=0;r<t.length;++r){var n=t.charCodeAt(r);if(n<33||n>126)return"Invalid prefix ("+t+")";e=i(e)^n>>5}for(e=i(e),r=0;r<t.length;++r){var s=t.charCodeAt(r);e=i(e)^31&s}return e}function o(t,r){if(r=r||90,t.length<8)return t+" too short";if(t.length>r)return"Exceeds length limit";var n=t.toLowerCase(),o=t.toUpperCase();if(t!==n&&t!==o)return"Mixed-case string "+t;var a=(t=n).lastIndexOf("1");if(-1===a)return"No separator character for "+t;if(0===a)return"Missing prefix for "+t;var l=t.slice(0,a),c=t.slice(a+1);if(c.length<6)return"Data too short";var h=s(l);if("string"==typeof h)return h;for(var u=[],d=0;d<c.length;++d){var f=c.charAt(d),p=e[f];if(void 0===p)return"Unknown character "+f;h=i(h)^p,d+6>=c.length||u.push(p)}return 1!==h?"Invalid checksum for "+t:{prefix:l,words:u}}function a(t,e,r,n){for(var i=0,s=0,o=(1<<r)-1,a=[],l=0;l<t.length;++l)for(i=i<<e|t[l],s+=e;s>=r;)s-=r,a.push(i>>s&o);if(n)s>0&&a.push(i<<r-s&o);else{if(s>=e)return"Excess padding";if(i<<r-s&o)return"Non-zero padding"}return a}return ua={decodeUnsafe:function(){var t=o.apply(null,arguments);if("object"==typeof t)return t},decode:function(t){var e=o.apply(null,arguments);if("object"==typeof e)return e;throw new Error(e)},encode:function(e,r,n){if(n=n||90,e.length+7+r.length>n)throw new TypeError("Exceeds length limit");var o=s(e=e.toLowerCase());if("string"==typeof o)throw new Error(o);for(var a=e+"1",l=0;l<r.length;++l){var c=r[l];if(c>>5)throw new Error("Non 5-bit word");o=i(o)^c,a+=t.charAt(c)}for(l=0;l<6;++l)o=i(o);for(o^=1,l=0;l<6;++l){a+=t.charAt(o>>5*(5-l)&31)}return a},toWordsUnsafe:function(t){var e=a(t,8,5,!0);if(Array.isArray(e))return e},toWords:function(t){var e=a(t,8,5,!0);if(Array.isArray(e))return e;throw new Error(e)},fromWordsUnsafe:function(t){var e=a(t,5,8,!1);if(Array.isArray(e))return e},fromWords:function(t){var e=a(t,5,8,!1);if(Array.isArray(e))return e;throw new Error(e)}},ua}(),pa=n(fa);const ma="providers/5.8.0",ga=new v(ma);class ya{constructor(){this.formats=this.getDefaultFormats()}getDefaultFormats(){const t={},e=this.address.bind(this),r=this.bigNumber.bind(this),n=this.blockTag.bind(this),i=this.data.bind(this),s=this.hash.bind(this),o=this.hex.bind(this),a=this.number.bind(this),l=this.type.bind(this);return t.transaction={hash:s,type:l,accessList:ya.allowNull(this.accessList.bind(this),null),blockHash:ya.allowNull(s,null),blockNumber:ya.allowNull(a,null),transactionIndex:ya.allowNull(a,null),confirmations:ya.allowNull(a,null),from:e,gasPrice:ya.allowNull(r),maxPriorityFeePerGas:ya.allowNull(r),maxFeePerGas:ya.allowNull(r),gasLimit:r,to:ya.allowNull(e,null),value:r,nonce:a,data:i,r:ya.allowNull(this.uint256),s:ya.allowNull(this.uint256),v:ya.allowNull(a),creates:ya.allowNull(e,null),raw:ya.allowNull(i)},t.transactionRequest={from:ya.allowNull(e),nonce:ya.allowNull(a),gasLimit:ya.allowNull(r),gasPrice:ya.allowNull(r),maxPriorityFeePerGas:ya.allowNull(r),maxFeePerGas:ya.allowNull(r),to:ya.allowNull(e),value:ya.allowNull(r),data:ya.allowNull(t=>this.data(t,!0)),type:ya.allowNull(a),accessList:ya.allowNull(this.accessList.bind(this),null)},t.receiptLog={transactionIndex:a,blockNumber:a,transactionHash:s,address:e,topics:ya.arrayOf(s),data:i,logIndex:a,blockHash:s},t.receipt={to:ya.allowNull(this.address,null),from:ya.allowNull(this.address,null),contractAddress:ya.allowNull(e,null),transactionIndex:a,root:ya.allowNull(o),gasUsed:r,logsBloom:ya.allowNull(i),blockHash:s,transactionHash:s,logs:ya.arrayOf(this.receiptLog.bind(this)),blockNumber:a,confirmations:ya.allowNull(a,null),cumulativeGasUsed:r,effectiveGasPrice:ya.allowNull(r),status:ya.allowNull(a),type:l},t.block={hash:ya.allowNull(s),parentHash:s,number:a,timestamp:a,nonce:ya.allowNull(o),difficulty:this.difficulty.bind(this),gasLimit:r,gasUsed:r,miner:ya.allowNull(e),extraData:i,transactions:ya.allowNull(ya.arrayOf(s)),baseFeePerGas:ya.allowNull(r)},t.blockWithTransactions=gt(t.block),t.blockWithTransactions.transactions=ya.allowNull(ya.arrayOf(this.transactionResponse.bind(this))),t.filter={fromBlock:ya.allowNull(n,void 0),toBlock:ya.allowNull(n,void 0),blockHash:ya.allowNull(s,void 0),address:ya.allowNull(e,void 0),topics:ya.allowNull(this.topics.bind(this),void 0)},t.filterLog={blockNumber:ya.allowNull(a),blockHash:ya.allowNull(s),transactionIndex:a,removed:ya.allowNull(this.boolean.bind(this)),address:e,data:ya.allowFalsish(i,"0x"),topics:ya.arrayOf(s),transactionHash:s,logIndex:a},t}accessList(t){return ds(t||[])}number(t){return"0x"===t?0:K.from(t).toNumber()}type(t){return"0x"===t||null==t?0:K.from(t).toNumber()}bigNumber(t){return K.from(t)}boolean(t){if("boolean"==typeof t)return t;if("string"==typeof t){if("true"===(t=t.toLowerCase()))return!0;if("false"===t)return!1}throw new Error("invalid boolean - "+t)}hex(t,e){return"string"==typeof t&&(e||"0x"===t.substring(0,2)||(t="0x"+t),T(t))?t.toLowerCase():ga.throwArgumentError("invalid hash","value",t)}data(t,e){const r=this.hex(t,e);if(r.length%2!=0)throw new Error("invalid data; odd-length - "+t);return r}address(t){return ye(t)}callAddress(t){if(!T(t,32))return null;const e=ye(M(t,12));return e===Pe?null:e}contractAddress(t){return ve(t)}blockTag(t){if(null==t)return"latest";if("earliest"===t)return"0x0";switch(t){case"earliest":return"0x0";case"latest":case"pending":case"safe":case"finalized":return t}if("number"==typeof t||T(t))return F(t);throw new Error("invalid blockTag")}hash(t,e){const r=this.hex(t,e);return 32!==B(r)?ga.throwArgumentError("invalid hash","value",t):r}difficulty(t){if(null==t)return null;const e=K.from(t);try{return e.toNumber()}catch(t){}return null}uint256(t){if(!T(t))throw new Error("invalid uint256");return D(t,32)}_block(t,e){null!=t.author&&null==t.miner&&(t.miner=t.author);const r=null!=t._difficulty?t._difficulty:t.difficulty,n=ya.check(e,t);return n._difficulty=null==r?null:K.from(r),n}block(t){return this._block(t,this.formats.block)}blockWithTransactions(t){return this._block(t,this.formats.blockWithTransactions)}transactionRequest(t){return ya.check(this.formats.transactionRequest,t)}transactionResponse(t){null!=t.gas&&null==t.gasLimit&&(t.gasLimit=t.gas),t.to&&K.from(t.to).isZero()&&(t.to="0x0000000000000000000000000000000000000000"),null!=t.input&&null==t.data&&(t.data=t.input),null==t.to&&null==t.creates&&(t.creates=this.contractAddress(t)),1!==t.type&&2!==t.type||null!=t.accessList||(t.accessList=[]);const e=ya.check(this.formats.transaction,t);if(null!=t.chainId){let r=t.chainId;T(r)&&(r=K.from(r).toNumber()),e.chainId=r}else{let r=t.networkId;null==r&&null==e.v&&(r=t.chainId),T(r)&&(r=K.from(r).toNumber()),"number"!=typeof r&&null!=e.v&&(r=(e.v-35)/2,r<0&&(r=0),r=parseInt(r)),"number"!=typeof r&&(r=0),e.chainId=r}return e.blockHash&&"x"===e.blockHash.replace(/0/g,"")&&(e.blockHash=null),e}transaction(t){return vs(t)}receiptLog(t){return ya.check(this.formats.receiptLog,t)}receipt(t){const e=ya.check(this.formats.receipt,t);if(null!=e.root)if(e.root.length<=4){const t=K.from(e.root).toNumber();0===t||1===t?(null!=e.status&&e.status!==t&&ga.throwArgumentError("alt-root-status/status mismatch","value",{root:e.root,status:e.status}),e.status=t,delete e.root):ga.throwArgumentError("invalid alt-root-status","value.root",e.root)}else 66!==e.root.length&&ga.throwArgumentError("invalid root hash","value.root",e.root);return null!=e.status&&(e.byzantium=!0),e}topics(t){return Array.isArray(t)?t.map(t=>this.topics(t)):null!=t?this.hash(t,!0):null}filter(t){return ya.check(this.formats.filter,t)}filterLog(t){return ya.check(this.formats.filterLog,t)}static check(t,e){const r={};for(const n in t)try{const i=t[n](e[n]);void 0!==i&&(r[n]=i)}catch(t){throw t.checkKey=n,t.checkValue=e[n],t}return r}static allowNull(t,e){return function(r){return null==r?e:t(r)}}static allowFalsish(t,e){return function(r){return r?t(r):e}}static arrayOf(t){return function(e){if(!Array.isArray(e))throw new Error("not an array");const r=[];return e.forEach(function(e){r.push(t(e))}),r}}}function va(t){return t&&"function"==typeof t.isCommunityResource}function wa(t){return va(t)&&t.isCommunityResource()}let ba=!1;function Ea(){ba||(ba=!0,console.log("========= NOTICE ========="),console.log("Request-Rate Exceeded (this message will not be repeated)"),console.log(""),console.log("The default API keys for each service are provided as a highly-throttled,"),console.log("community resource for low-traffic projects and early prototyping."),console.log(""),console.log("While your application will continue to function, we highly recommended"),console.log("signing up for your own API keys to improve performance, increase your"),console.log("request rate/limit and enable other perks, such as metrics and advanced APIs."),console.log(""),console.log("For more details: https://docs.ethers.io/api-keys/"),console.log("=========================="))}var Aa=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const ka=new v(ma);function Sa(t){return null==t?"null":(32!==B(t)&&ka.throwArgumentError("invalid topic","topic",t),t.toLowerCase())}function Ca(t){for(t=t.slice();t.length>0&&null==t[t.length-1];)t.pop();return t.map(t=>{if(Array.isArray(t)){const e={};t.forEach(t=>{e[Sa(t)]=!0});const r=Object.keys(e);return r.sort(),r.join("|")}return Sa(t)}).join("&")}function xa(t){if("string"==typeof t){if(32===B(t=t.toLowerCase()))return"tx:"+t;if(-1===t.indexOf(":"))return t}else{if(Array.isArray(t))return"filter:*:"+Ca(t);if(bn.isForkEvent(t))throw ka.warn("not implemented"),new Error("not implemented");if(t&&"object"==typeof t)return"filter:"+(t.address||"*")+":"+Ca(t.topics||[])}throw new Error("invalid event - "+t)}function _a(){return(new Date).getTime()}function Ia(t){return new Promise(e=>{setTimeout(e,t)})}const Ta=["block","network","pending","poll"];class Pa{constructor(t,e,r){dt(this,"tag",t),dt(this,"listener",e),dt(this,"once",r),this._lastBlockNumber=-2,this._inflight=!1}get event(){switch(this.type){case"tx":return this.hash;case"filter":return this.filter}return this.tag}get type(){return this.tag.split(":")[0]}get hash(){const t=this.tag.split(":");return"tx"!==t[0]?null:t[1]}get filter(){const t=this.tag.split(":");if("filter"!==t[0])return null;const e=t[1],r=""===(n=t[2])?[]:n.split(/&/g).map(t=>{if(""===t)return[];const e=t.split("|").map(t=>"null"===t?null:t);return 1===e.length?e[0]:e});var n;const i={};return r.length>0&&(i.topics=r),e&&"*"!==e&&(i.address=e),i}pollable(){return this.tag.indexOf(":")>=0||Ta.indexOf(this.tag)>=0}}const Na={0:{symbol:"btc",p2pkh:0,p2sh:5,prefix:"bc"},2:{symbol:"ltc",p2pkh:48,p2sh:50,prefix:"ltc"},3:{symbol:"doge",p2pkh:30,p2sh:22},60:{symbol:"eth",ilk:"eth"},61:{symbol:"etc",ilk:"eth"},700:{symbol:"xdai",ilk:"eth"}};function Ba(t){return D(K.from(t).toHexString(),32)}function Ma(t){return Os.encode(x([t,M(qs(qs(t)),0,4)]))}const Ra=new RegExp("^(ipfs)://(.*)$","i"),Fa=[new RegExp("^(https)://(.*)$","i"),new RegExp("^(data):(.*)$","i"),Ra,new RegExp("^eip155:[0-9]+/(erc[0-9]+):(.*)$","i")];function Oa(t,e){try{return Ye(Da(t,e))}catch(t){}return null}function Da(t,e){if("0x"===t)return null;const r=K.from(M(t,e,e+32)).toNumber(),n=K.from(M(t,r,r+32)).toNumber();return M(t,r+32,r+32+n)}function La(t){return t.match(/^ipfs:\/\/ipfs\//i)?t=t.substring(12):t.match(/^ipfs:\/\//i)?t=t.substring(7):ka.throwArgumentError("unsupported IPFS format","link",t),`https://gateway.ipfs.io/ipfs/${t}`}function Ua(t){const e=C(t);if(e.length>32)throw new Error("internal; should not happen");const r=new Uint8Array(32);return r.set(e,32-e.length),r}function qa(t){if(t.length%32==0)return t;const e=new Uint8Array(32*Math.ceil(t.length/32));return e.set(t),e}function za(t){const e=[];let r=0;for(let n=0;n<t.length;n++)e.push(null),r+=32;for(let n=0;n<t.length;n++){const i=C(t[n]);e[n]=Ua(r),e.push(Ua(i.length)),e.push(qa(i)),r+=32+32*Math.ceil(i.length/32)}return R(e)}class ja{constructor(t,e,r,n){dt(this,"provider",t),dt(this,"name",r),dt(this,"address",t.formatter.address(e)),dt(this,"_resolvedAddress",n)}supportsWildcard(){return this._supportsEip2544||(this._supportsEip2544=this.provider.call({to:this.address,data:"0x01ffc9a79061b92300000000000000000000000000000000000000000000000000000000"}).then(t=>K.from(t).eq(1)).catch(t=>{if(t.code===v.errors.CALL_EXCEPTION)return!1;throw this._supportsEip2544=null,t})),this._supportsEip2544}_fetch(t,e){return Aa(this,void 0,void 0,function*(){const r={to:this.address,ccipReadEnabled:!0,data:R([t,Hr(this.name),e||"0x"])};let n=!1;(yield this.supportsWildcard())&&(n=!0,r.data=R(["0x9061b923",za([Wr(this.name),r.data])]));try{let t=yield this.provider.call(r);return C(t).length%32==4&&ka.throwError("resolver threw error",v.errors.CALL_EXCEPTION,{transaction:r,data:t}),n&&(t=Da(t,0)),t}catch(t){if(t.code===v.errors.CALL_EXCEPTION)return null;throw t}})}_fetchBytes(t,e){return Aa(this,void 0,void 0,function*(){const r=yield this._fetch(t,e);return null!=r?Da(r,0):null})}_getAddress(t,e){const r=Na[String(t)];if(null==r&&ka.throwError(`unsupported coin type: ${t}`,v.errors.UNSUPPORTED_OPERATION,{operation:`getAddress(${t})`}),"eth"===r.ilk)return this.provider.formatter.address(e);const n=C(e);if(null!=r.p2pkh){const t=e.match(/^0x76a9([0-9a-f][0-9a-f])([0-9a-f]*)88ac$/);if(t){const e=parseInt(t[1],16);if(t[2].length===2*e&&e>=1&&e<=75)return Ma(x([[r.p2pkh],"0x"+t[2]]))}}if(null!=r.p2sh){const t=e.match(/^0xa9([0-9a-f][0-9a-f])([0-9a-f]*)87$/);if(t){const e=parseInt(t[1],16);if(t[2].length===2*e&&e>=1&&e<=75)return Ma(x([[r.p2sh],"0x"+t[2]]))}}if(null!=r.prefix){const t=n[1];let e=n[0];if(0===e?20!==t&&32!==t&&(e=-1):e=-1,e>=0&&n.length===2+t&&t>=1&&t<=75){const t=pa.toWords(n.slice(2));return t.unshift(e),pa.encode(r.prefix,t)}}return null}getAddress(t){return Aa(this,void 0,void 0,function*(){if(null==t&&(t=60),60===t)try{const t=yield this._fetch("0x3b3b57de");return"0x"===t||t===Ue?null:this.provider.formatter.callAddress(t)}catch(t){if(t.code===v.errors.CALL_EXCEPTION)return null;throw t}const e=yield this._fetchBytes("0xf1cb7e06",Ba(t));if(null==e||"0x"===e)return null;const r=this._getAddress(t,e);return null==r&&ka.throwError("invalid or unsupported coin data",v.errors.UNSUPPORTED_OPERATION,{operation:`getAddress(${t})`,coinType:t,data:e}),r})}getAvatar(){return Aa(this,void 0,void 0,function*(){const t=[{type:"name",content:this.name}];try{const e=yield this.getText("avatar");if(null==e)return null;for(let r=0;r<Fa.length;r++){const n=e.match(Fa[r]);if(null==n)continue;const i=n[1].toLowerCase();switch(i){case"https":return t.push({type:"url",content:e}),{linkage:t,url:e};case"data":return t.push({type:"data",content:e}),{linkage:t,url:e};case"ipfs":return t.push({type:"ipfs",content:e}),{linkage:t,url:La(e)};case"erc721":case"erc1155":{const r="erc721"===i?"0xc87b56dd":"0x0e89341c";t.push({type:i,content:e});const s=this._resolvedAddress||(yield this.getAddress()),o=(n[2]||"").split("/");if(2!==o.length)return null;const a=yield this.provider.formatter.address(o[0]),l=D(K.from(o[1]).toHexString(),32);if("erc721"===i){const e=this.provider.formatter.callAddress(yield this.provider.call({to:a,data:R(["0x6352211e",l])}));if(s!==e)return null;t.push({type:"owner",content:e})}else if("erc1155"===i){const e=K.from(yield this.provider.call({to:a,data:R(["0x00fdd58e",D(s,32),l])}));if(e.isZero())return null;t.push({type:"balance",content:e.toString()})}const c={to:this.provider.formatter.address(o[0]),data:R([r,l])};let h=Oa(yield this.provider.call(c),0);if(null==h)return null;t.push({type:"metadata-url-base",content:h}),"erc1155"===i&&(h=h.replace("{id}",l.substring(2)),t.push({type:"metadata-url-expanded",content:h})),h.match(/^ipfs:/i)&&(h=La(h)),t.push({type:"metadata-url",content:h});const u=yield ca(h);if(!u)return null;t.push({type:"metadata",content:JSON.stringify(u)});let d=u.image;if("string"!=typeof d)return null;if(d.match(/^(https:\/\/|data:)/i));else{if(null==d.match(Ra))return null;t.push({type:"url-ipfs",content:d}),d=La(d)}return t.push({type:"url",content:d}),{linkage:t,url:d}}}}}catch(t){}return null})}getContentHash(){return Aa(this,void 0,void 0,function*(){const t=yield this._fetchBytes("0xbc1c58d1");if(null==t||"0x"===t)return null;const e=t.match(/^0xe3010170(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);if(e){const t=parseInt(e[3],16);if(e[4].length===2*t)return"ipfs://"+Os.encode("0x"+e[1])}const r=t.match(/^0xe5010172(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);if(r){const t=parseInt(r[3],16);if(r[4].length===2*t)return"ipns://"+Os.encode("0x"+r[1])}const n=t.match(/^0xe40101fa011b20([0-9a-f]*)$/);if(n&&64===n[1].length)return"bzz://"+n[1];const i=t.match(/^0x90b2c605([0-9a-f]*)$/);if(i&&68===i[1].length){const t={"=":"","+":"-","/":"_"};return"sia://"+wr("0x"+i[1]).replace(/[=+\/]/g,e=>t[e])}return ka.throwError("invalid or unsupported content hash data",v.errors.UNSUPPORTED_OPERATION,{operation:"getContentHash()",data:t})})}getText(t){return Aa(this,void 0,void 0,function*(){let e=Ve(t);e=x([Ba(64),Ba(e.length),e]),e.length%32!=0&&(e=x([e,D("0x",32-t.length%32)]));const r=yield this._fetchBytes("0x59d1d43c",N(e));return null==r||"0x"===r?null:Ye(r)})}}let Ga=null,Ha=1;class Wa extends En{constructor(t){if(super(),this._events=[],this._emitted={block:-2},this.disableCcipRead=!1,this.formatter=new.target.getFormatter(),dt(this,"anyNetwork","any"===t),this.anyNetwork&&(t=this.detectNetwork()),t instanceof Promise)this._networkPromise=t,t.catch(t=>{}),this._ready().catch(t=>{});else{const e=ft(new.target,"getNetwork")(t);e?(dt(this,"_network",e),this.emit("network",e,null)):ka.throwArgumentError("invalid network","network",t)}this._maxInternalBlockNumber=-1024,this._lastBlockNumber=-2,this._maxFilterBlockRange=10,this._pollingInterval=4e3,this._fastQueryDate=0}_ready(){return Aa(this,void 0,void 0,function*(){if(null==this._network){let t=null;if(this._networkPromise)try{t=yield this._networkPromise}catch(t){}null==t&&(t=yield this.detectNetwork()),t||ka.throwError("no network detected",v.errors.UNKNOWN_ERROR,{}),null==this._network&&(this.anyNetwork?this._network=t:dt(this,"_network",t),this.emit("network",t,null))}return this._network})}get ready(){return ha(()=>this._ready().then(t=>t,t=>{if(t.code!==v.errors.NETWORK_ERROR||"noNetwork"!==t.event)throw t}))}static getFormatter(){return null==Ga&&(Ga=new ya),Ga}static getNetwork(t){return ea(null==t?"homestead":t)}ccipReadFetch(t,e,r){return Aa(this,void 0,void 0,function*(){if(this.disableCcipRead||0===r.length)return null;const n=t.to.toLowerCase(),i=e.toLowerCase(),s=[];for(let t=0;t<r.length;t++){const e=r[t],o=e.replace("{sender}",n).replace("{data}",i),a=e.indexOf("{data}")>=0?null:JSON.stringify({data:i,sender:n}),l=yield ca({url:o,errorPassThrough:!0},a,(t,e)=>(t.status=e.statusCode,t));if(l.data)return l.data;const c=l.message||"unknown error";if(l.status>=400&&l.status<500)return ka.throwError(`response not found during CCIP fetch: ${c}`,v.errors.SERVER_ERROR,{url:e,errorMessage:c});s.push(c)}return ka.throwError(`error encountered during CCIP fetch: ${s.map(t=>JSON.stringify(t)).join(", ")}`,v.errors.SERVER_ERROR,{urls:r,errorMessages:s})})}_getInternalBlockNumber(t){return Aa(this,void 0,void 0,function*(){if(yield this._ready(),t>0)for(;this._internalBlockNumber;){const e=this._internalBlockNumber;try{const r=yield e;if(_a()-r.respTime<=t)return r.blockNumber;break}catch(t){if(this._internalBlockNumber===e)break}}const e=_a(),r=pt({blockNumber:this.perform("getBlockNumber",{}),networkError:this.getNetwork().then(t=>null,t=>t)}).then(({blockNumber:t,networkError:n})=>{if(n)throw this._internalBlockNumber===r&&(this._internalBlockNumber=null),n;const i=_a();return(t=K.from(t).toNumber())<this._maxInternalBlockNumber&&(t=this._maxInternalBlockNumber),this._maxInternalBlockNumber=t,this._setFastBlockNumber(t),{blockNumber:t,reqTime:e,respTime:i}});return this._internalBlockNumber=r,r.catch(t=>{this._internalBlockNumber===r&&(this._internalBlockNumber=null)}),(yield r).blockNumber})}poll(){return Aa(this,void 0,void 0,function*(){const t=Ha++,e=[];let r=null;try{r=yield this._getInternalBlockNumber(100+this.pollingInterval/2)}catch(t){return void this.emit("error",t)}if(this._setFastBlockNumber(r),this.emit("poll",t,r),r!==this._lastBlockNumber){if(-2===this._emitted.block&&(this._emitted.block=r-1),Math.abs(this._emitted.block-r)>1e3)ka.warn(`network block skew detected; skipping block events (emitted=${this._emitted.block} blockNumber${r})`),this.emit("error",ka.makeError("network block skew detected",v.errors.NETWORK_ERROR,{blockNumber:r,event:"blockSkew",previousBlockNumber:this._emitted.block})),this.emit("block",r);else for(let t=this._emitted.block+1;t<=r;t++)this.emit("block",t);this._emitted.block!==r&&(this._emitted.block=r,Object.keys(this._emitted).forEach(t=>{if("block"===t)return;const e=this._emitted[t];"pending"!==e&&r-e>12&&delete this._emitted[t]})),-2===this._lastBlockNumber&&(this._lastBlockNumber=r-1),this._events.forEach(t=>{switch(t.type){case"tx":{const r=t.hash;let n=this.getTransactionReceipt(r).then(t=>t&&null!=t.blockNumber?(this._emitted["t:"+r]=t.blockNumber,this.emit(r,t),null):null).catch(t=>{this.emit("error",t)});e.push(n);break}case"filter":if(!t._inflight){t._inflight=!0,-2===t._lastBlockNumber&&(t._lastBlockNumber=r-1);const n=t.filter;n.fromBlock=t._lastBlockNumber+1,n.toBlock=r;const i=n.toBlock-this._maxFilterBlockRange;i>n.fromBlock&&(n.fromBlock=i),n.fromBlock<0&&(n.fromBlock=0);const s=this.getLogs(n).then(e=>{t._inflight=!1,0!==e.length&&e.forEach(e=>{e.blockNumber>t._lastBlockNumber&&(t._lastBlockNumber=e.blockNumber),this._emitted["b:"+e.blockHash]=e.blockNumber,this._emitted["t:"+e.transactionHash]=e.blockNumber,this.emit(n,e)})}).catch(e=>{this.emit("error",e),t._inflight=!1});e.push(s)}}}),this._lastBlockNumber=r,Promise.all(e).then(()=>{this.emit("didPoll",t)}).catch(t=>{this.emit("error",t)})}else this.emit("didPoll",t)})}resetEventsBlock(t){this._lastBlockNumber=t-1,this.polling&&this.poll()}get network(){return this._network}detectNetwork(){return Aa(this,void 0,void 0,function*(){return ka.throwError("provider does not support network detection",v.errors.UNSUPPORTED_OPERATION,{operation:"provider.detectNetwork"})})}getNetwork(){return Aa(this,void 0,void 0,function*(){const t=yield this._ready(),e=yield this.detectNetwork();if(t.chainId!==e.chainId){if(this.anyNetwork)return this._network=e,this._lastBlockNumber=-2,this._fastBlockNumber=null,this._fastBlockNumberPromise=null,this._fastQueryDate=0,this._emitted.block=-2,this._maxInternalBlockNumber=-1024,this._internalBlockNumber=null,this.emit("network",e,t),yield Ia(0),this._network;const r=ka.makeError("underlying network changed",v.errors.NETWORK_ERROR,{event:"changed",network:t,detectedNetwork:e});throw this.emit("error",r),r}return t})}get blockNumber(){return this._getInternalBlockNumber(100+this.pollingInterval/2).then(t=>{this._setFastBlockNumber(t)},t=>{}),null!=this._fastBlockNumber?this._fastBlockNumber:-1}get polling(){return null!=this._poller}set polling(t){t&&!this._poller?(this._poller=setInterval(()=>{this.poll()},this.pollingInterval),this._bootstrapPoll||(this._bootstrapPoll=setTimeout(()=>{this.poll(),this._bootstrapPoll=setTimeout(()=>{this._poller||this.poll(),this._bootstrapPoll=null},this.pollingInterval)},0))):!t&&this._poller&&(clearInterval(this._poller),this._poller=null)}get pollingInterval(){return this._pollingInterval}set pollingInterval(t){if("number"!=typeof t||t<=0||parseInt(String(t))!=t)throw new Error("invalid polling interval");this._pollingInterval=t,this._poller&&(clearInterval(this._poller),this._poller=setInterval(()=>{this.poll()},this._pollingInterval))}_getFastBlockNumber(){const t=_a();return t-this._fastQueryDate>2*this._pollingInterval&&(this._fastQueryDate=t,this._fastBlockNumberPromise=this.getBlockNumber().then(t=>((null==this._fastBlockNumber||t>this._fastBlockNumber)&&(this._fastBlockNumber=t),this._fastBlockNumber))),this._fastBlockNumberPromise}_setFastBlockNumber(t){null!=this._fastBlockNumber&&t<this._fastBlockNumber||(this._fastQueryDate=_a(),(null==this._fastBlockNumber||t>this._fastBlockNumber)&&(this._fastBlockNumber=t,this._fastBlockNumberPromise=Promise.resolve(t)))}waitForTransaction(t,e,r){return Aa(this,void 0,void 0,function*(){return this._waitForTransaction(t,null==e?1:e,r||0,null)})}_waitForTransaction(t,e,r,n){return Aa(this,void 0,void 0,function*(){const i=yield this.getTransactionReceipt(t);return(i?i.confirmations:0)>=e?i:new Promise((i,s)=>{const o=[];let a=!1;const l=function(){return!!a||(a=!0,o.forEach(t=>{t()}),!1)},c=t=>{t.confirmations<e||l()||i(t)};if(this.on(t,c),o.push(()=>{this.removeListener(t,c)}),n){let r=n.startBlock,i=null;const c=o=>Aa(this,void 0,void 0,function*(){a||(yield Ia(1e3),this.getTransactionCount(n.from).then(h=>Aa(this,void 0,void 0,function*(){if(!a){if(h<=n.nonce)r=o;else{{const e=yield this.getTransaction(t);if(e&&null!=e.blockNumber)return}for(null==i&&(i=r-3,i<n.startBlock&&(i=n.startBlock));i<=o;){if(a)return;const r=yield this.getBlockWithTransactions(i);for(let i=0;i<r.transactions.length;i++){const o=r.transactions[i];if(o.hash===t)return;if(o.from===n.from&&o.nonce===n.nonce){if(a)return;const r=yield this.waitForTransaction(o.hash,e);if(l())return;let i="replaced";return o.data===n.data&&o.to===n.to&&o.value.eq(n.value)?i="repriced":"0x"===o.data&&o.from===o.to&&o.value.isZero()&&(i="cancelled"),void s(ka.makeError("transaction was replaced",v.errors.TRANSACTION_REPLACED,{cancelled:"replaced"===i||"cancelled"===i,reason:i,replacement:this._wrapTransaction(o),hash:t,receipt:r}))}}i++}}a||this.once("block",c)}}),t=>{a||this.once("block",c)}))});if(a)return;this.once("block",c),o.push(()=>{this.removeListener("block",c)})}if("number"==typeof r&&r>0){const t=setTimeout(()=>{l()||s(ka.makeError("timeout exceeded",v.errors.TIMEOUT,{timeout:r}))},r);t.unref&&t.unref(),o.push(()=>{clearTimeout(t)})}})})}getBlockNumber(){return Aa(this,void 0,void 0,function*(){return this._getInternalBlockNumber(0)})}getGasPrice(){return Aa(this,void 0,void 0,function*(){yield this.getNetwork();const t=yield this.perform("getGasPrice",{});try{return K.from(t)}catch(e){return ka.throwError("bad result from backend",v.errors.SERVER_ERROR,{method:"getGasPrice",result:t,error:e})}})}getBalance(t,e){return Aa(this,void 0,void 0,function*(){yield this.getNetwork();const r=yield pt({address:this._getAddress(t),blockTag:this._getBlockTag(e)}),n=yield this.perform("getBalance",r);try{return K.from(n)}catch(t){return ka.throwError("bad result from backend",v.errors.SERVER_ERROR,{method:"getBalance",params:r,result:n,error:t})}})}getTransactionCount(t,e){return Aa(this,void 0,void 0,function*(){yield this.getNetwork();const r=yield pt({address:this._getAddress(t),blockTag:this._getBlockTag(e)}),n=yield this.perform("getTransactionCount",r);try{return K.from(n).toNumber()}catch(t){return ka.throwError("bad result from backend",v.errors.SERVER_ERROR,{method:"getTransactionCount",params:r,result:n,error:t})}})}getCode(t,e){return Aa(this,void 0,void 0,function*(){yield this.getNetwork();const r=yield pt({address:this._getAddress(t),blockTag:this._getBlockTag(e)}),n=yield this.perform("getCode",r);try{return N(n)}catch(t){return ka.throwError("bad result from backend",v.errors.SERVER_ERROR,{method:"getCode",params:r,result:n,error:t})}})}getStorageAt(t,e,r){return Aa(this,void 0,void 0,function*(){yield this.getNetwork();const n=yield pt({address:this._getAddress(t),blockTag:this._getBlockTag(r),position:Promise.resolve(e).then(t=>F(t))}),i=yield this.perform("getStorageAt",n);try{return N(i)}catch(t){return ka.throwError("bad result from backend",v.errors.SERVER_ERROR,{method:"getStorageAt",params:n,result:i,error:t})}})}_wrapTransaction(t,e,r){if(null!=e&&32!==B(e))throw new Error("invalid response - sendTransaction");const n=t;return null!=e&&t.hash!==e&&ka.throwError("Transaction hash mismatch from Provider.sendTransaction.",v.errors.UNKNOWN_ERROR,{expectedHash:t.hash,returnedHash:e}),n.wait=(e,n)=>Aa(this,void 0,void 0,function*(){let i;null==e&&(e=1),null==n&&(n=0),0!==e&&null!=r&&(i={data:t.data,from:t.from,nonce:t.nonce,to:t.to,value:t.value,startBlock:r});const s=yield this._waitForTransaction(t.hash,e,n,i);return null==s&&0===e?null:(this._emitted["t:"+t.hash]=s.blockNumber,0===s.status&&ka.throwError("transaction failed",v.errors.CALL_EXCEPTION,{transactionHash:t.hash,transaction:t,receipt:s}),s)}),n}sendTransaction(t){return Aa(this,void 0,void 0,function*(){yield this.getNetwork();const e=yield Promise.resolve(t).then(t=>N(t)),r=this.formatter.transaction(t);null==r.confirmations&&(r.confirmations=0);const n=yield this._getInternalBlockNumber(100+2*this.pollingInterval);try{const t=yield this.perform("sendTransaction",{signedTransaction:e});return this._wrapTransaction(r,t,n)}catch(t){throw t.transaction=r,t.transactionHash=r.hash,t}})}_getTransactionRequest(t){return Aa(this,void 0,void 0,function*(){const e=yield t,r={};return["from","to"].forEach(t=>{null!=e[t]&&(r[t]=Promise.resolve(e[t]).then(t=>t?this._getAddress(t):null))}),["gasLimit","gasPrice","maxFeePerGas","maxPriorityFeePerGas","value"].forEach(t=>{null!=e[t]&&(r[t]=Promise.resolve(e[t]).then(t=>t?K.from(t):null))}),["type"].forEach(t=>{null!=e[t]&&(r[t]=Promise.resolve(e[t]).then(t=>null!=t?t:null))}),e.accessList&&(r.accessList=this.formatter.accessList(e.accessList)),["data"].forEach(t=>{null!=e[t]&&(r[t]=Promise.resolve(e[t]).then(t=>t?N(t):null))}),this.formatter.transactionRequest(yield pt(r))})}_getFilter(t){return Aa(this,void 0,void 0,function*(){t=yield t;const e={};return null!=t.address&&(e.address=this._getAddress(t.address)),["blockHash","topics"].forEach(r=>{null!=t[r]&&(e[r]=t[r])}),["fromBlock","toBlock"].forEach(r=>{null!=t[r]&&(e[r]=this._getBlockTag(t[r]))}),this.formatter.filter(yield pt(e))})}_call(t,e,r){return Aa(this,void 0,void 0,function*(){r>=10&&ka.throwError("CCIP read exceeded maximum redirections",v.errors.SERVER_ERROR,{redirects:r,transaction:t});const n=t.to,i=yield this.perform("call",{transaction:t,blockTag:e});if(r>=0&&"latest"===e&&null!=n&&"0x556f1830"===i.substring(0,10)&&B(i)%32==4)try{const s=M(i,4),o=M(s,0,32);K.from(o).eq(n)||ka.throwError("CCIP Read sender did not match",v.errors.CALL_EXCEPTION,{name:"OffchainLookup",signature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",transaction:t,data:i});const a=[],l=K.from(M(s,32,64)).toNumber(),c=K.from(M(s,l,l+32)).toNumber(),h=M(s,l+32);for(let e=0;e<c;e++){const r=Oa(h,32*e);null==r&&ka.throwError("CCIP Read contained corrupt URL string",v.errors.CALL_EXCEPTION,{name:"OffchainLookup",signature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",transaction:t,data:i}),a.push(r)}const u=Da(s,64);K.from(M(s,100,128)).isZero()||ka.throwError("CCIP Read callback selector included junk",v.errors.CALL_EXCEPTION,{name:"OffchainLookup",signature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",transaction:t,data:i});const d=M(s,96,100),f=Da(s,128),p=yield this.ccipReadFetch(t,u,a);null==p&&ka.throwError("CCIP Read disabled or provided no URLs",v.errors.CALL_EXCEPTION,{name:"OffchainLookup",signature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",transaction:t,data:i});const m={to:n,data:R([d,za([p,f])])};return this._call(m,e,r+1)}catch(t){if(t.code===v.errors.SERVER_ERROR)throw t}try{return N(i)}catch(r){return ka.throwError("bad result from backend",v.errors.SERVER_ERROR,{method:"call",params:{transaction:t,blockTag:e},result:i,error:r})}})}call(t,e){return Aa(this,void 0,void 0,function*(){yield this.getNetwork();const r=yield pt({transaction:this._getTransactionRequest(t),blockTag:this._getBlockTag(e),ccipReadEnabled:Promise.resolve(t.ccipReadEnabled)});return this._call(r.transaction,r.blockTag,r.ccipReadEnabled?0:-1)})}estimateGas(t){return Aa(this,void 0,void 0,function*(){yield this.getNetwork();const e=yield pt({transaction:this._getTransactionRequest(t)}),r=yield this.perform("estimateGas",e);try{return K.from(r)}catch(t){return ka.throwError("bad result from backend",v.errors.SERVER_ERROR,{method:"estimateGas",params:e,result:r,error:t})}})}_getAddress(t){return Aa(this,void 0,void 0,function*(){"string"!=typeof(t=yield t)&&ka.throwArgumentError("invalid address or ENS name","name",t);const e=yield this.resolveName(t);return null==e&&ka.throwError("ENS name not configured",v.errors.UNSUPPORTED_OPERATION,{operation:`resolveName(${JSON.stringify(t)})`}),e})}_getBlock(t,e){return Aa(this,void 0,void 0,function*(){yield this.getNetwork(),t=yield t;let r=-128;const n={includeTransactions:!!e};if(T(t,32))n.blockHash=t;else try{n.blockTag=yield this._getBlockTag(t),T(n.blockTag)&&(r=parseInt(n.blockTag.substring(2),16))}catch(e){ka.throwArgumentError("invalid block hash or block tag","blockHashOrBlockTag",t)}return ha(()=>Aa(this,void 0,void 0,function*(){const t=yield this.perform("getBlock",n);if(null==t)return null!=n.blockHash&&null==this._emitted["b:"+n.blockHash]||null!=n.blockTag&&r>this._emitted.block?null:void 0;if(e){let e=null;for(let r=0;r<t.transactions.length;r++){const n=t.transactions[r];if(null==n.blockNumber)n.confirmations=0;else if(null==n.confirmations){null==e&&(e=yield this._getInternalBlockNumber(100+2*this.pollingInterval));let t=e-n.blockNumber+1;t<=0&&(t=1),n.confirmations=t}}const r=this.formatter.blockWithTransactions(t);return r.transactions=r.transactions.map(t=>this._wrapTransaction(t)),r}return this.formatter.block(t)}),{oncePoll:this})})}getBlock(t){return this._getBlock(t,!1)}getBlockWithTransactions(t){return this._getBlock(t,!0)}getTransaction(t){return Aa(this,void 0,void 0,function*(){yield this.getNetwork(),t=yield t;const e={transactionHash:this.formatter.hash(t,!0)};return ha(()=>Aa(this,void 0,void 0,function*(){const r=yield this.perform("getTransaction",e);if(null==r)return null==this._emitted["t:"+t]?null:void 0;const n=this.formatter.transactionResponse(r);if(null==n.blockNumber)n.confirmations=0;else if(null==n.confirmations){let t=(yield this._getInternalBlockNumber(100+2*this.pollingInterval))-n.blockNumber+1;t<=0&&(t=1),n.confirmations=t}return this._wrapTransaction(n)}),{oncePoll:this})})}getTransactionReceipt(t){return Aa(this,void 0,void 0,function*(){yield this.getNetwork(),t=yield t;const e={transactionHash:this.formatter.hash(t,!0)};return ha(()=>Aa(this,void 0,void 0,function*(){const r=yield this.perform("getTransactionReceipt",e);if(null==r)return null==this._emitted["t:"+t]?null:void 0;if(null==r.blockHash)return;const n=this.formatter.receipt(r);if(null==n.blockNumber)n.confirmations=0;else if(null==n.confirmations){let t=(yield this._getInternalBlockNumber(100+2*this.pollingInterval))-n.blockNumber+1;t<=0&&(t=1),n.confirmations=t}return n}),{oncePoll:this})})}getLogs(t){return Aa(this,void 0,void 0,function*(){yield this.getNetwork();const e=yield pt({filter:this._getFilter(t)}),r=yield this.perform("getLogs",e);return r.forEach(t=>{null==t.removed&&(t.removed=!1)}),ya.arrayOf(this.formatter.filterLog.bind(this.formatter))(r)})}getEtherPrice(){return Aa(this,void 0,void 0,function*(){return yield this.getNetwork(),this.perform("getEtherPrice",{})})}_getBlockTag(t){return Aa(this,void 0,void 0,function*(){if("number"==typeof(t=yield t)&&t<0){t%1&&ka.throwArgumentError("invalid BlockTag","blockTag",t);let e=yield this._getInternalBlockNumber(100+2*this.pollingInterval);return e+=t,e<0&&(e=0),this.formatter.blockTag(e)}return this.formatter.blockTag(t)})}getResolver(t){return Aa(this,void 0,void 0,function*(){let e=t;for(;;){if(""===e||"."===e)return null;if("eth"!==t&&"eth"===e)return null;const r=yield this._getResolver(e,"getResolver");if(null!=r){const n=new ja(this,r,t);return e===t||(yield n.supportsWildcard())?n:null}e=e.split(".").slice(1).join(".")}})}_getResolver(t,e){return Aa(this,void 0,void 0,function*(){null==e&&(e="ENS");const r=yield this.getNetwork();r.ensAddress||ka.throwError("network does not support ENS",v.errors.UNSUPPORTED_OPERATION,{operation:e,network:r.name});try{const e=yield this.call({to:r.ensAddress,data:"0x0178b8bf"+Hr(t).substring(2)});return this.formatter.callAddress(e)}catch(t){}return null})}resolveName(t){return Aa(this,void 0,void 0,function*(){t=yield t;try{return Promise.resolve(this.formatter.address(t))}catch(e){if(T(t))throw e}"string"!=typeof t&&ka.throwArgumentError("invalid ENS name","name",t);const e=yield this.getResolver(t);return e?yield e.getAddress():null})}lookupAddress(t){return Aa(this,void 0,void 0,function*(){t=yield t;const e=(t=this.formatter.address(t)).substring(2).toLowerCase()+".addr.reverse",r=yield this._getResolver(e,"lookupAddress");if(null==r)return null;const n=Oa(yield this.call({to:r,data:"0x691f3431"+Hr(e).substring(2)}),0);return(yield this.resolveName(n))!=t?null:n})}getAvatar(t){return Aa(this,void 0,void 0,function*(){let e=null;if(T(t)){const r=this.formatter.address(t).substring(2).toLowerCase()+".addr.reverse",n=yield this._getResolver(r,"getAvatar");if(!n)return null;e=new ja(this,n,r);try{const t=yield e.getAvatar();if(t)return t.url}catch(t){if(t.code!==v.errors.CALL_EXCEPTION)throw t}try{const t=Oa(yield this.call({to:n,data:"0x691f3431"+Hr(r).substring(2)}),0);e=yield this.getResolver(t)}catch(t){if(t.code!==v.errors.CALL_EXCEPTION)throw t;return null}}else if(e=yield this.getResolver(t),!e)return null;const r=yield e.getAvatar();return null==r?null:r.url})}perform(t,e){return ka.throwError(t+" not implemented",v.errors.NOT_IMPLEMENTED,{operation:t})}_startEvent(t){this.polling=this._events.filter(t=>t.pollable()).length>0}_stopEvent(t){this.polling=this._events.filter(t=>t.pollable()).length>0}_addEventListener(t,e,r){const n=new Pa(xa(t),e,r);return this._events.push(n),this._startEvent(n),this}on(t,e){return this._addEventListener(t,e,!1)}once(t,e){return this._addEventListener(t,e,!0)}emit(t,...e){let r=!1,n=[],i=xa(t);return this._events=this._events.filter(t=>t.tag!==i||(setTimeout(()=>{t.listener.apply(this,e)},0),r=!0,!t.once||(n.push(t),!1))),n.forEach(t=>{this._stopEvent(t)}),r}listenerCount(t){if(!t)return this._events.length;let e=xa(t);return this._events.filter(t=>t.tag===e).length}listeners(t){if(null==t)return this._events.map(t=>t.listener);let e=xa(t);return this._events.filter(t=>t.tag===e).map(t=>t.listener)}off(t,e){if(null==e)return this.removeAllListeners(t);const r=[];let n=!1,i=xa(t);return this._events=this._events.filter(t=>t.tag!==i||t.listener!=e||(!!n||(n=!0,r.push(t),!1))),r.forEach(t=>{this._stopEvent(t)}),this}removeAllListeners(t){let e=[];if(null==t)e=this._events,this._events=[];else{const r=xa(t);this._events=this._events.filter(t=>t.tag!==r||(e.push(t),!1))}return e.forEach(t=>{this._stopEvent(t)}),this}}var Ka=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const $a=new v(ma),Va=["call","estimateGas"];function Ja(t,e){if(null==t)return null;if("string"==typeof t.message&&t.message.match("reverted")){const r=T(t.data)?t.data:null;if(!e||r)return{message:t.message,data:r}}if("object"==typeof t){for(const r in t){const n=Ja(t[r],e);if(n)return n}return null}if("string"==typeof t)try{return Ja(JSON.parse(t),e)}catch(t){}return null}function Qa(t,e,r){const n=r.transaction||r.signedTransaction;if("call"===t){const t=Ja(e,!0);if(t)return t.data;$a.throwError("missing revert data in call exception; Transaction reverted without a reason string",v.errors.CALL_EXCEPTION,{data:"0x",transaction:n,error:e})}if("estimateGas"===t){let r=Ja(e.body,!1);null==r&&(r=Ja(e,!1)),r&&$a.throwError("cannot estimate gas; transaction may fail or may require manual gas limit",v.errors.UNPREDICTABLE_GAS_LIMIT,{reason:r.message,method:t,transaction:n,error:e})}let i=e.message;throw e.code===v.errors.SERVER_ERROR&&e.error&&"string"==typeof e.error.message?i=e.error.message:"string"==typeof e.body?i=e.body:"string"==typeof e.responseText&&(i=e.responseText),i=(i||"").toLowerCase(),i.match(/insufficient funds|base fee exceeds gas limit|InsufficientFunds/i)&&$a.throwError("insufficient funds for intrinsic transaction cost",v.errors.INSUFFICIENT_FUNDS,{error:e,method:t,transaction:n}),i.match(/nonce (is )?too low/i)&&$a.throwError("nonce has already been used",v.errors.NONCE_EXPIRED,{error:e,method:t,transaction:n}),i.match(/replacement transaction underpriced|transaction gas price.*too low/i)&&$a.throwError("replacement fee too low",v.errors.REPLACEMENT_UNDERPRICED,{error:e,method:t,transaction:n}),i.match(/only replay-protected/i)&&$a.throwError("legacy pre-eip-155 transactions not supported",v.errors.UNSUPPORTED_OPERATION,{error:e,method:t,transaction:n}),Va.indexOf(t)>=0&&i.match(/gas required exceeds allowance|always failing transaction|execution reverted|revert/)&&$a.throwError("cannot estimate gas; transaction may fail or may require manual gas limit",v.errors.UNPREDICTABLE_GAS_LIMIT,{error:e,method:t,transaction:n}),e}function Ya(t){return new Promise(function(e){setTimeout(e,t)})}function Xa(t){if(t.error){const e=new Error(t.error.message);throw e.code=t.error.code,e.data=t.error.data,e}return t.result}function Za(t){return t?t.toLowerCase():t}const tl={};class el extends xn{constructor(t,e,r){if(super(),t!==tl)throw new Error("do not call the JsonRpcSigner constructor directly; use provider.getSigner");dt(this,"provider",e),null==r&&(r=0),"string"==typeof r?(dt(this,"_address",this.provider.formatter.address(r)),dt(this,"_index",null)):"number"==typeof r?(dt(this,"_index",r),dt(this,"_address",null)):$a.throwArgumentError("invalid address or index","addressOrIndex",r)}connect(t){return $a.throwError("cannot alter JSON-RPC Signer connection",v.errors.UNSUPPORTED_OPERATION,{operation:"connect"})}connectUnchecked(){return new rl(tl,this.provider,this._address||this._index)}getAddress(){return this._address?Promise.resolve(this._address):this.provider.send("eth_accounts",[]).then(t=>(t.length<=this._index&&$a.throwError("unknown account #"+this._index,v.errors.UNSUPPORTED_OPERATION,{operation:"getAddress"}),this.provider.formatter.address(t[this._index])))}sendUncheckedTransaction(t){t=gt(t);const e=this.getAddress().then(t=>(t&&(t=t.toLowerCase()),t));if(null==t.gasLimit){const r=gt(t);r.from=e,t.gasLimit=this.provider.estimateGas(r)}return null!=t.to&&(t.to=Promise.resolve(t.to).then(t=>Ka(this,void 0,void 0,function*(){if(null==t)return null;const e=yield this.provider.resolveName(t);return null==e&&$a.throwArgumentError("provided ENS name resolves to null","tx.to",t),e}))),pt({tx:pt(t),sender:e}).then(({tx:e,sender:r})=>{null!=e.from?e.from.toLowerCase()!==r&&$a.throwArgumentError("from address mismatch","transaction",t):e.from=r;const n=this.provider.constructor.hexlifyTransaction(e,{from:!0});return this.provider.send("eth_sendTransaction",[n]).then(t=>t,t=>("string"==typeof t.message&&t.message.match(/user denied/i)&&$a.throwError("user rejected transaction",v.errors.ACTION_REJECTED,{action:"sendTransaction",transaction:e}),Qa("sendTransaction",t,n)))})}signTransaction(t){return $a.throwError("signing transactions is unsupported",v.errors.UNSUPPORTED_OPERATION,{operation:"signTransaction"})}sendTransaction(t){return Ka(this,void 0,void 0,function*(){const e=yield this.provider._getInternalBlockNumber(100+2*this.provider.pollingInterval),r=yield this.sendUncheckedTransaction(t);try{return yield ha(()=>Ka(this,void 0,void 0,function*(){const t=yield this.provider.getTransaction(r);if(null!==t)return this.provider._wrapTransaction(t,r,e)}),{oncePoll:this.provider})}catch(t){throw t.transactionHash=r,t}})}signMessage(t){return Ka(this,void 0,void 0,function*(){const e="string"==typeof t?Ve(t):t,r=yield this.getAddress();try{return yield this.provider.send("personal_sign",[N(e),r.toLowerCase()])}catch(e){throw"string"==typeof e.message&&e.message.match(/user denied/i)&&$a.throwError("user rejected signing",v.errors.ACTION_REJECTED,{action:"signMessage",from:r,messageData:t}),e}})}_legacySignMessage(t){return Ka(this,void 0,void 0,function*(){const e="string"==typeof t?Ve(t):t,r=yield this.getAddress();try{return yield this.provider.send("eth_sign",[r.toLowerCase(),N(e)])}catch(e){throw"string"==typeof e.message&&e.message.match(/user denied/i)&&$a.throwError("user rejected signing",v.errors.ACTION_REJECTED,{action:"_legacySignMessage",from:r,messageData:t}),e}})}_signTypedData(t,e,r){return Ka(this,void 0,void 0,function*(){const n=yield cn.resolveNames(t,e,r,t=>this.provider.resolveName(t)),i=yield this.getAddress();try{return yield this.provider.send("eth_signTypedData_v4",[i.toLowerCase(),JSON.stringify(cn.getPayload(n.domain,e,n.value))])}catch(t){throw"string"==typeof t.message&&t.message.match(/user denied/i)&&$a.throwError("user rejected signing",v.errors.ACTION_REJECTED,{action:"_signTypedData",from:i,messageData:{domain:n.domain,types:e,value:n.value}}),t}})}unlock(t){return Ka(this,void 0,void 0,function*(){const e=this.provider,r=yield this.getAddress();return e.send("personal_unlockAccount",[r.toLowerCase(),t,null])})}}class rl extends el{sendTransaction(t){return this.sendUncheckedTransaction(t).then(t=>({hash:t,nonce:null,gasLimit:null,gasPrice:null,data:null,value:null,chainId:null,confirmations:0,from:null,wait:e=>this.provider.waitForTransaction(t,e)}))}}const nl={chainId:!0,data:!0,gasLimit:!0,gasPrice:!0,nonce:!0,to:!0,value:!0,type:!0,accessList:!0,maxFeePerGas:!0,maxPriorityFeePerGas:!0};class il extends Wa{constructor(t,e){let r=e;null==r&&(r=new Promise((t,e)=>{setTimeout(()=>{this.detectNetwork().then(e=>{t(e)},t=>{e(t)})},0)})),super(r),t||(t=ft(this.constructor,"defaultUrl")()),dt(this,"connection","string"==typeof t?Object.freeze({url:t}):Object.freeze(gt(t))),this._nextId=42}get _cache(){return null==this._eventLoopCache&&(this._eventLoopCache={}),this._eventLoopCache}static defaultUrl(){return"http://localhost:8545"}detectNetwork(){return this._cache.detectNetwork||(this._cache.detectNetwork=this._uncachedDetectNetwork(),setTimeout(()=>{this._cache.detectNetwork=null},0)),this._cache.detectNetwork}_uncachedDetectNetwork(){return Ka(this,void 0,void 0,function*(){yield Ya(0);let t=null;try{t=yield this.send("eth_chainId",[])}catch(e){try{t=yield this.send("net_version",[])}catch(t){}}if(null!=t){const e=ft(this.constructor,"getNetwork");try{return e(K.from(t).toNumber())}catch(e){return $a.throwError("could not detect network",v.errors.NETWORK_ERROR,{chainId:t,event:"invalidNetwork",serverError:e})}}return $a.throwError("could not detect network",v.errors.NETWORK_ERROR,{event:"noNetwork"})})}getSigner(t){return new el(tl,this,t)}getUncheckedSigner(t){return this.getSigner(t).connectUnchecked()}listAccounts(){return this.send("eth_accounts",[]).then(t=>t.map(t=>this.formatter.address(t)))}send(t,e){const r={method:t,params:e,id:this._nextId++,jsonrpc:"2.0"};this.emit("debug",{action:"request",request:bt(r),provider:this});const n=["eth_chainId","eth_blockNumber"].indexOf(t)>=0;if(n&&this._cache[t])return this._cache[t];const i=ca(this.connection,JSON.stringify(r),Xa).then(t=>(this.emit("debug",{action:"response",request:r,response:t,provider:this}),t),t=>{throw this.emit("debug",{action:"response",error:t,request:r,provider:this}),t});return n&&(this._cache[t]=i,setTimeout(()=>{this._cache[t]=null},0)),i}prepareRequest(t,e){switch(t){case"getBlockNumber":return["eth_blockNumber",[]];case"getGasPrice":return["eth_gasPrice",[]];case"getBalance":return["eth_getBalance",[Za(e.address),e.blockTag]];case"getTransactionCount":return["eth_getTransactionCount",[Za(e.address),e.blockTag]];case"getCode":return["eth_getCode",[Za(e.address),e.blockTag]];case"getStorageAt":return["eth_getStorageAt",[Za(e.address),D(e.position,32),e.blockTag]];case"sendTransaction":return["eth_sendRawTransaction",[e.signedTransaction]];case"getBlock":return e.blockTag?["eth_getBlockByNumber",[e.blockTag,!!e.includeTransactions]]:e.blockHash?["eth_getBlockByHash",[e.blockHash,!!e.includeTransactions]]:null;case"getTransaction":return["eth_getTransactionByHash",[e.transactionHash]];case"getTransactionReceipt":return["eth_getTransactionReceipt",[e.transactionHash]];case"call":return["eth_call",[ft(this.constructor,"hexlifyTransaction")(e.transaction,{from:!0}),e.blockTag]];case"estimateGas":return["eth_estimateGas",[ft(this.constructor,"hexlifyTransaction")(e.transaction,{from:!0})]];case"getLogs":return e.filter&&null!=e.filter.address&&(e.filter.address=Za(e.filter.address)),["eth_getLogs",[e.filter]]}return null}perform(t,e){return Ka(this,void 0,void 0,function*(){if("call"===t||"estimateGas"===t){const t=e.transaction;if(t&&null!=t.type&&K.from(t.type).isZero()&&null==t.maxFeePerGas&&null==t.maxPriorityFeePerGas){const r=yield this.getFeeData();null==r.maxFeePerGas&&null==r.maxPriorityFeePerGas&&((e=gt(e)).transaction=gt(t),delete e.transaction.type)}}const r=this.prepareRequest(t,e);null==r&&$a.throwError(t+" not implemented",v.errors.NOT_IMPLEMENTED,{operation:t});try{return yield this.send(r[0],r[1])}catch(r){return Qa(t,r,e)}})}_startEvent(t){"pending"===t.tag&&this._startPending(),super._startEvent(t)}_startPending(){if(null!=this._pendingFilter)return;const t=this,e=this.send("eth_newPendingTransactionFilter",[]);this._pendingFilter=e,e.then(function(r){return function n(){t.send("eth_getFilterChanges",[r]).then(function(r){if(t._pendingFilter!=e)return null;let n=Promise.resolve();return r.forEach(function(e){t._emitted["t:"+e.toLowerCase()]="pending",n=n.then(function(){return t.getTransaction(e).then(function(e){return t.emit("pending",e),null})})}),n.then(function(){return Ya(1e3)})}).then(function(){if(t._pendingFilter==e)return setTimeout(function(){n()},0),null;t.send("eth_uninstallFilter",[r])}).catch(t=>{})}(),r}).catch(t=>{})}_stopEvent(t){"pending"===t.tag&&0===this.listenerCount("pending")&&(this._pendingFilter=null),super._stopEvent(t)}static hexlifyTransaction(t,e){const r=gt(nl);if(e)for(const t in e)e[t]&&(r[t]=!0);mt(t,r);const n={};return["chainId","gasLimit","gasPrice","type","maxFeePerGas","maxPriorityFeePerGas","nonce","value"].forEach(function(e){if(null==t[e])return;const r=F(K.from(t[e]));"gasLimit"===e&&(e="gas"),n[e]=r}),["from","to","data"].forEach(function(e){null!=t[e]&&(n[e]=N(t[e]))}),t.accessList&&(n.accessList=ds(t.accessList)),n}}let sl=null;try{if(sl=WebSocket,null==sl)throw new Error("inject please")}catch(t){const e=new v(ma);sl=function(){e.throwError("WebSockets not supported in this environment",v.errors.UNSUPPORTED_OPERATION,{operation:"new WebSocket()"})}}var ol=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const al=new v(ma);let ll=1;class cl extends il{constructor(t,e){"any"===e&&al.throwError("WebSocketProvider does not support 'any' network yet",v.errors.UNSUPPORTED_OPERATION,{operation:"network:any"}),super("string"==typeof t?t:"_websocket",e),this._pollingInterval=-1,this._wsReady=!1,dt(this,"_websocket","string"==typeof t?new sl(this.connection.url):t),dt(this,"_requests",{}),dt(this,"_subs",{}),dt(this,"_subIds",{}),dt(this,"_detectNetwork",super.detectNetwork()),this.websocket.onopen=()=>{this._wsReady=!0,Object.keys(this._requests).forEach(t=>{this.websocket.send(this._requests[t].payload)})},this.websocket.onmessage=t=>{const e=t.data,r=JSON.parse(e);if(null!=r.id){const t=String(r.id),n=this._requests[t];if(delete this._requests[t],void 0!==r.result)n.callback(null,r.result),this.emit("debug",{action:"response",request:JSON.parse(n.payload),response:r.result,provider:this});else{let t=null;r.error?(t=new Error(r.error.message||"unknown error"),dt(t,"code",r.error.code||null),dt(t,"response",e)):t=new Error("unknown error"),n.callback(t,void 0),this.emit("debug",{action:"response",error:t,request:JSON.parse(n.payload),provider:this})}}else if("eth_subscription"===r.method){const t=this._subs[r.params.subscription];t&&t.processFunc(r.params.result)}else console.warn("this should not happen")};const r=setInterval(()=>{this.emit("poll")},1e3);r.unref&&r.unref()}get websocket(){return this._websocket}detectNetwork(){return this._detectNetwork}get pollingInterval(){return 0}resetEventsBlock(t){al.throwError("cannot reset events block on WebSocketProvider",v.errors.UNSUPPORTED_OPERATION,{operation:"resetEventBlock"})}set pollingInterval(t){al.throwError("cannot set polling interval on WebSocketProvider",v.errors.UNSUPPORTED_OPERATION,{operation:"setPollingInterval"})}poll(){return ol(this,void 0,void 0,function*(){return null})}set polling(t){t&&al.throwError("cannot set polling on WebSocketProvider",v.errors.UNSUPPORTED_OPERATION,{operation:"setPolling"})}send(t,e){const r=ll++;return new Promise((n,i)=>{const s=JSON.stringify({method:t,params:e,id:r,jsonrpc:"2.0"});this.emit("debug",{action:"request",request:JSON.parse(s),provider:this}),this._requests[String(r)]={callback:function(t,e){return t?i(t):n(e)},payload:s},this._wsReady&&this.websocket.send(s)})}static defaultUrl(){return"ws://localhost:8546"}_subscribe(t,e,r){return ol(this,void 0,void 0,function*(){let n=this._subIds[t];null==n&&(n=Promise.all(e).then(t=>this.send("eth_subscribe",t)),this._subIds[t]=n);const i=yield n;this._subs[i]={tag:t,processFunc:r}})}_startEvent(t){switch(t.type){case"block":this._subscribe("block",["newHeads"],t=>{const e=K.from(t.number).toNumber();this._emitted.block=e,this.emit("block",e)});break;case"pending":this._subscribe("pending",["newPendingTransactions"],t=>{this.emit("pending",t)});break;case"filter":this._subscribe(t.tag,["logs",this._getFilter(t.filter)],e=>{null==e.removed&&(e.removed=!1),this.emit(t.filter,this.formatter.filterLog(e))});break;case"tx":{const e=t=>{const e=t.hash;this.getTransactionReceipt(e).then(t=>{t&&this.emit(e,t)})};e(t),this._subscribe("tx",["newHeads"],t=>{this._events.filter(t=>"tx"===t.type).forEach(e)});break}case"debug":case"poll":case"willPoll":case"didPoll":case"error":break;default:console.log("unhandled:",t)}}_stopEvent(t){let e=t.tag;if("tx"===t.type){if(this._events.filter(t=>"tx"===t.type).length)return;e="tx"}else if(this.listenerCount(t.event))return;const r=this._subIds[e];r&&(delete this._subIds[e],r.then(t=>{this._subs[t]&&(delete this._subs[t],this.send("eth_unsubscribe",[t]))}))}destroy(){return ol(this,void 0,void 0,function*(){this.websocket.readyState===sl.CONNECTING&&(yield new Promise(t=>{this.websocket.onopen=function(){t(!0)},this.websocket.onerror=function(){t(!1)}})),this.websocket.close(1e3)})}}var hl=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const ul=new v(ma);class dl extends il{detectNetwork(){const t=Object.create(null,{detectNetwork:{get:()=>super.detectNetwork}});return hl(this,void 0,void 0,function*(){let e=this.network;return null==e&&(e=yield t.detectNetwork.call(this),e||ul.throwError("no network detected",v.errors.UNKNOWN_ERROR,{}),null==this._network&&(dt(this,"_network",e),this.emit("network",e,null))),e})}}class fl extends dl{constructor(t,e){ul.checkAbstract(new.target,fl),t=ft(new.target,"getNetwork")(t),e=ft(new.target,"getApiKey")(e);super(ft(new.target,"getUrl")(t,e),t),"string"==typeof e?dt(this,"apiKey",e):null!=e&&Object.keys(e).forEach(t=>{dt(this,t,e[t])})}_startPending(){ul.warn("WARNING: API provider does not support pending filters")}isCommunityResource(){return!1}getSigner(t){return ul.throwError("API provider does not support signing",v.errors.UNSUPPORTED_OPERATION,{operation:"getSigner"})}listAccounts(){return Promise.resolve([])}static getApiKey(t){return t}static getUrl(t,e){return ul.throwError("not implemented; sub-classes must override getUrl",v.errors.NOT_IMPLEMENTED,{operation:"getUrl"})}}const pl=new v(ma),ml="_gg7wSSi0KMBsdKnGVfHDueq6xMB9EkC";class gl extends cl{constructor(t,e){const r=new yl(t,e);super(r.connection.url.replace(/^http/i,"ws").replace(".alchemyapi.",".ws.alchemyapi."),r.network),dt(this,"apiKey",r.apiKey)}isCommunityResource(){return this.apiKey===ml}}class yl extends fl{static getWebSocketProvider(t,e){return new gl(t,e)}static getApiKey(t){return null==t?ml:(t&&"string"!=typeof t&&pl.throwArgumentError("invalid apiKey","apiKey",t),t)}static getUrl(t,e){let r=null;switch(t.name){case"homestead":r="eth-mainnet.alchemyapi.io/v2/";break;case"goerli":r="eth-goerli.g.alchemy.com/v2/";break;case"sepolia":r="eth-sepolia.g.alchemy.com/v2/";break;case"matic":r="polygon-mainnet.g.alchemy.com/v2/";break;case"maticmum":r="polygon-mumbai.g.alchemy.com/v2/";break;case"arbitrum":r="arb-mainnet.g.alchemy.com/v2/";break;case"arbitrum-goerli":r="arb-goerli.g.alchemy.com/v2/";break;case"arbitrum-sepolia":r="arb-sepolia.g.alchemy.com/v2/";break;case"optimism":r="opt-mainnet.g.alchemy.com/v2/";break;case"optimism-goerli":r="opt-goerli.g.alchemy.com/v2/";break;case"optimism-sepolia":r="opt-sepolia.g.alchemy.com/v2/";break;default:pl.throwArgumentError("unsupported network","network",arguments[0])}return{allowGzip:!0,url:"https://"+r+e,throttleCallback:(t,r)=>(e===ml&&Ea(),Promise.resolve(!0))}}isCommunityResource(){return this.apiKey===ml}}const vl=new v(ma),wl="9f7d929b018cdffb338517efa06f58359e86ff1ffd350bc889738523659e7972";function bl(t){switch(t){case"homestead":return"rpc.ankr.com/eth/";case"ropsten":return"rpc.ankr.com/eth_ropsten/";case"rinkeby":return"rpc.ankr.com/eth_rinkeby/";case"goerli":return"rpc.ankr.com/eth_goerli/";case"sepolia":return"rpc.ankr.com/eth_sepolia/";case"matic":return"rpc.ankr.com/polygon/";case"maticmum":return"rpc.ankr.com/polygon_mumbai/";case"optimism":return"rpc.ankr.com/optimism/";case"optimism-goerli":return"rpc.ankr.com/optimism_testnet/";case"optimism-sepolia":return"rpc.ankr.com/optimism_sepolia/";case"arbitrum":return"rpc.ankr.com/arbitrum/"}return vl.throwArgumentError("unsupported network","name",t)}class El extends fl{isCommunityResource(){return this.apiKey===wl}static getApiKey(t){return null==t?wl:t}static getUrl(t,e){null==e&&(e=wl);const r={allowGzip:!0,url:"https://"+bl(t.name)+e,throttleCallback:(t,r)=>(e.apiKey===wl&&Ea(),Promise.resolve(!0))};return null!=e.projectSecret&&(r.user="",r.password=e.projectSecret),r}}var Al=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const kl=new v(ma);class Sl extends fl{static getApiKey(t){return null!=t&&kl.throwArgumentError("apiKey not supported for cloudflare","apiKey",t),null}static getUrl(t,e){let r=null;if("homestead"===t.name)r="https://cloudflare-eth.com/";else kl.throwArgumentError("unsupported network","network",arguments[0]);return r}perform(t,e){const r=Object.create(null,{perform:{get:()=>super.perform}});return Al(this,void 0,void 0,function*(){if("getBlockNumber"===t){return(yield r.perform.call(this,"getBlock",{blockTag:"latest"})).number}return r.perform.call(this,t,e)})}}var Cl=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const xl=new v(ma);function _l(t){const e={};for(let r in t){if(null==t[r])continue;let n=t[r];"type"===r&&0===n||(n={type:!0,gasLimit:!0,gasPrice:!0,maxFeePerGs:!0,maxPriorityFeePerGas:!0,nonce:!0,value:!0}[r]?F(N(n)):"accessList"===r?"["+ds(n).map(t=>`{address:"${t.address}",storageKeys:["${t.storageKeys.join('","')}"]}`).join(",")+"]":N(n),e[r]=n)}return e}function Il(t){if(0==t.status&&("No records found"===t.message||"No transactions found"===t.message))return t.result;if(1!=t.status||"string"!=typeof t.message||!t.message.match(/^OK/)){const e=new Error("invalid response");throw e.result=JSON.stringify(t),(t.result||"").toLowerCase().indexOf("rate limit")>=0&&(e.throttleRetry=!0),e}return t.result}function Tl(t){if(t&&0==t.status&&"NOTOK"==t.message&&(t.result||"").toLowerCase().indexOf("rate limit")>=0){const e=new Error("throttled response");throw e.result=JSON.stringify(t),e.throttleRetry=!0,e}if("2.0"!=t.jsonrpc){const e=new Error("invalid response");throw e.result=JSON.stringify(t),e}if(t.error){const e=new Error(t.error.message||"unknown error");throw t.error.code&&(e.code=t.error.code),t.error.data&&(e.data=t.error.data),e}return t.result}function Pl(t){if("pending"===t)throw new Error("pending not supported");return"latest"===t?t:parseInt(t.substring(2),16)}function Nl(t,e,r){if("call"===t&&e.code===v.errors.SERVER_ERROR){const t=e.error;if(t&&(t.message.match(/reverted/i)||t.message.match(/VM execution error/i))){let r=t.data;if(r&&(r="0x"+r.replace(/^.*0x/i,"")),T(r))return r;xl.throwError("missing revert data in call exception",v.errors.CALL_EXCEPTION,{error:e,data:"0x"})}}let n=e.message;throw e.code===v.errors.SERVER_ERROR&&(e.error&&"string"==typeof e.error.message?n=e.error.message:"string"==typeof e.body?n=e.body:"string"==typeof e.responseText&&(n=e.responseText)),n=(n||"").toLowerCase(),n.match(/insufficient funds/)&&xl.throwError("insufficient funds for intrinsic transaction cost",v.errors.INSUFFICIENT_FUNDS,{error:e,method:t,transaction:r}),n.match(/same hash was already imported|transaction nonce is too low|nonce too low/)&&xl.throwError("nonce has already been used",v.errors.NONCE_EXPIRED,{error:e,method:t,transaction:r}),n.match(/another transaction with same nonce/)&&xl.throwError("replacement fee too low",v.errors.REPLACEMENT_UNDERPRICED,{error:e,method:t,transaction:r}),n.match(/execution failed due to an exception|execution reverted/)&&xl.throwError("cannot estimate gas; transaction may fail or may require manual gas limit",v.errors.UNPREDICTABLE_GAS_LIMIT,{error:e,method:t,transaction:r}),e}class Bl extends Wa{constructor(t,e){super(t),dt(this,"baseUrl",this.getBaseUrl()),dt(this,"apiKey",e||null)}getBaseUrl(){switch(this.network?this.network.name:"invalid"){case"homestead":return"https://api.etherscan.io";case"goerli":return"https://api-goerli.etherscan.io";case"sepolia":return"https://api-sepolia.etherscan.io";case"matic":return"https://api.polygonscan.com";case"maticmum":return"https://api-testnet.polygonscan.com";case"arbitrum":return"https://api.arbiscan.io";case"arbitrum-goerli":return"https://api-goerli.arbiscan.io";case"optimism":return"https://api-optimistic.etherscan.io";case"optimism-goerli":return"https://api-goerli-optimistic.etherscan.io"}return xl.throwArgumentError("unsupported network","network",this.network.name)}getUrl(t,e){const r=Object.keys(e).reduce((t,r)=>{const n=e[r];return null!=n&&(t+=`&${r}=${n}`),t},""),n=this.apiKey?`&apikey=${this.apiKey}`:"";return`${this.baseUrl}/api?module=${t}${r}${n}`}getPostUrl(){return`${this.baseUrl}/api`}getPostData(t,e){return e.module=t,e.apikey=this.apiKey,e}fetch(t,e,r){return Cl(this,void 0,void 0,function*(){const n=r?this.getPostUrl():this.getUrl(t,e),i=r?this.getPostData(t,e):null,s="proxy"===t?Tl:Il;this.emit("debug",{action:"request",request:n,provider:this});const o={url:n,throttleSlotInterval:1e3,throttleCallback:(t,e)=>(this.isCommunityResource()&&Ea(),Promise.resolve(!0))};let a=null;i&&(o.headers={"content-type":"application/x-www-form-urlencoded; charset=UTF-8"},a=Object.keys(i).map(t=>`${t}=${i[t]}`).join("&"));const l=yield ca(o,a,s||Tl);return this.emit("debug",{action:"response",request:n,response:bt(l),provider:this}),l})}detectNetwork(){return Cl(this,void 0,void 0,function*(){return this.network})}perform(t,e){const r=Object.create(null,{perform:{get:()=>super.perform}});return Cl(this,void 0,void 0,function*(){switch(t){case"getBlockNumber":return this.fetch("proxy",{action:"eth_blockNumber"});case"getGasPrice":return this.fetch("proxy",{action:"eth_gasPrice"});case"getBalance":return this.fetch("account",{action:"balance",address:e.address,tag:e.blockTag});case"getTransactionCount":return this.fetch("proxy",{action:"eth_getTransactionCount",address:e.address,tag:e.blockTag});case"getCode":return this.fetch("proxy",{action:"eth_getCode",address:e.address,tag:e.blockTag});case"getStorageAt":return this.fetch("proxy",{action:"eth_getStorageAt",address:e.address,position:e.position,tag:e.blockTag});case"sendTransaction":return this.fetch("proxy",{action:"eth_sendRawTransaction",hex:e.signedTransaction},!0).catch(t=>Nl("sendTransaction",t,e.signedTransaction));case"getBlock":if(e.blockTag)return this.fetch("proxy",{action:"eth_getBlockByNumber",tag:e.blockTag,boolean:e.includeTransactions?"true":"false"});throw new Error("getBlock by blockHash not implemented");case"getTransaction":return this.fetch("proxy",{action:"eth_getTransactionByHash",txhash:e.transactionHash});case"getTransactionReceipt":return this.fetch("proxy",{action:"eth_getTransactionReceipt",txhash:e.transactionHash});case"call":{if("latest"!==e.blockTag)throw new Error("EtherscanProvider does not support blockTag for call");const t=_l(e.transaction);t.module="proxy",t.action="eth_call";try{return yield this.fetch("proxy",t,!0)}catch(t){return Nl("call",t,e.transaction)}}case"estimateGas":{const t=_l(e.transaction);t.module="proxy",t.action="eth_estimateGas";try{return yield this.fetch("proxy",t,!0)}catch(t){return Nl("estimateGas",t,e.transaction)}}case"getLogs":{const t={action:"getLogs"};if(e.filter.fromBlock&&(t.fromBlock=Pl(e.filter.fromBlock)),e.filter.toBlock&&(t.toBlock=Pl(e.filter.toBlock)),e.filter.address&&(t.address=e.filter.address),e.filter.topics&&e.filter.topics.length>0&&(e.filter.topics.length>1&&xl.throwError("unsupported topic count",v.errors.UNSUPPORTED_OPERATION,{topics:e.filter.topics}),1===e.filter.topics.length)){const r=e.filter.topics[0];"string"==typeof r&&66===r.length||xl.throwError("unsupported topic format",v.errors.UNSUPPORTED_OPERATION,{topic0:r}),t.topic0=r}const r=yield this.fetch("logs",t);let n={};for(let t=0;t<r.length;t++){const e=r[t];if(null==e.blockHash){if(null==n[e.blockNumber]){const t=yield this.getBlock(e.blockNumber);t&&(n[e.blockNumber]=t.hash)}e.blockHash=n[e.blockNumber]}}return r}case"getEtherPrice":return"homestead"!==this.network.name?0:parseFloat((yield this.fetch("stats",{action:"ethprice"})).ethusd)}return r.perform.call(this,t,e)})}getHistory(t,e,r){return Cl(this,void 0,void 0,function*(){const n={action:"txlist",address:yield this.resolveName(t),startblock:null==e?0:e,endblock:null==r?99999999:r,sort:"asc"};return(yield this.fetch("account",n)).map(t=>{["contractAddress","to"].forEach(function(e){""==t[e]&&delete t[e]}),null==t.creates&&null!=t.contractAddress&&(t.creates=t.contractAddress);const e=this.formatter.transactionResponse(t);return t.timeStamp&&(e.timestamp=parseInt(t.timeStamp)),e})})}isCommunityResource(){return null==this.apiKey}}var Ml=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const Rl=new v(ma);function Fl(){return(new Date).getTime()}function Ol(t){let e=null;for(let r=0;r<t.length;r++){const n=t[r];if(null==n)return null;e?e.name===n.name&&e.chainId===n.chainId&&(e.ensAddress===n.ensAddress||null==e.ensAddress&&null==n.ensAddress)||Rl.throwArgumentError("provider mismatch","networks",t):e=n}return e}function Dl(t,e){t=t.slice().sort();const r=Math.floor(t.length/2);if(t.length%2)return t[r];const n=t[r-1],i=t[r];return null!=e&&Math.abs(n-i)>e?null:(n+i)/2}function Ll(t){if(null===t)return"null";if("number"==typeof t||"boolean"==typeof t)return JSON.stringify(t);if("string"==typeof t)return t;if(K.isBigNumber(t))return t.toString();if(Array.isArray(t))return JSON.stringify(t.map(t=>Ll(t)));if("object"==typeof t){const e=Object.keys(t);return e.sort(),"{"+e.map(e=>{let r=t[e];return r="function"==typeof r?"[function]":Ll(r),JSON.stringify(e)+":"+r}).join(",")+"}"}throw new Error("unknown value type: "+typeof t)}let Ul=1;function ql(t){let e=null,r=null,n=new Promise(n=>{e=function(){r&&(clearTimeout(r),r=null),n()},r=setTimeout(e,t)});return{cancel:e,getPromise:function(){return n},wait:t=>(n=n.then(t),n)}}const zl=[v.errors.CALL_EXCEPTION,v.errors.INSUFFICIENT_FUNDS,v.errors.NONCE_EXPIRED,v.errors.REPLACEMENT_UNDERPRICED,v.errors.UNPREDICTABLE_GAS_LIMIT],jl=["address","args","errorArgs","errorSignature","method","transaction"];function Gl(t,e){const r={weight:t.weight};return Object.defineProperty(r,"provider",{get:()=>t.provider}),t.start&&(r.start=t.start),e&&(r.duration=e-t.start),t.done&&(t.error?r.error=t.error:r.result=t.result||null),r}function Hl(t,e,r){let n=Ll;switch(e){case"getBlockNumber":return function(e){const r=e.map(t=>t.result);let n=Dl(e.map(t=>t.result),2);if(null!=n)return n=Math.ceil(n),r.indexOf(n+1)>=0&&n++,n>=t._highestBlockNumber&&(t._highestBlockNumber=n),t._highestBlockNumber};case"getGasPrice":return function(t){const e=t.map(t=>t.result);return e.sort(),e[Math.floor(e.length/2)]};case"getEtherPrice":return function(t){return Dl(t.map(t=>t.result))};case"getBalance":case"getTransactionCount":case"getCode":case"getStorageAt":case"call":case"estimateGas":case"getLogs":break;case"getTransaction":case"getTransactionReceipt":n=function(t){return null==t?null:((t=gt(t)).confirmations=-1,Ll(t))};break;case"getBlock":n=r.includeTransactions?function(t){return null==t?null:((t=gt(t)).transactions=t.transactions.map(t=>((t=gt(t)).confirmations=-1,t)),Ll(t))}:function(t){return null==t?null:Ll(t)};break;default:throw new Error("unknown method: "+e)}return function(t,e){return function(r){const n={};r.forEach(e=>{const r=t(e.result);n[r]||(n[r]={count:0,result:e.result}),n[r].count++});const i=Object.keys(n);for(let t=0;t<i.length;t++){const r=n[i[t]];if(r.count>=e)return r.result}}}(n,t.quorum)}function Wl(t,e){return Ml(this,void 0,void 0,function*(){const r=t.provider;return null!=r.blockNumber&&r.blockNumber>=e||-1===e?r:ha(()=>new Promise((n,i)=>{setTimeout(function(){return r.blockNumber>=e?n(r):t.cancelled?n(null):n(void 0)},0)}),{oncePoll:r})})}function Kl(t,e,r,n){return Ml(this,void 0,void 0,function*(){let i=t.provider;switch(r){case"getBlockNumber":case"getGasPrice":return i[r]();case"getEtherPrice":if(i.getEtherPrice)return i.getEtherPrice();break;case"getBalance":case"getTransactionCount":case"getCode":return n.blockTag&&T(n.blockTag)&&(i=yield Wl(t,e)),i[r](n.address,n.blockTag||"latest");case"getStorageAt":return n.blockTag&&T(n.blockTag)&&(i=yield Wl(t,e)),i.getStorageAt(n.address,n.position,n.blockTag||"latest");case"getBlock":return n.blockTag&&T(n.blockTag)&&(i=yield Wl(t,e)),i[n.includeTransactions?"getBlockWithTransactions":"getBlock"](n.blockTag||n.blockHash);case"call":case"estimateGas":return n.blockTag&&T(n.blockTag)&&(i=yield Wl(t,e)),"call"===r&&n.blockTag?i[r](n.transaction,n.blockTag):i[r](n.transaction);case"getTransaction":case"getTransactionReceipt":return i[r](n.transactionHash);case"getLogs":{let r=n.filter;return(r.fromBlock&&T(r.fromBlock)||r.toBlock&&T(r.toBlock))&&(i=yield Wl(t,e)),i.getLogs(r)}}return Rl.throwError("unknown method error",v.errors.UNKNOWN_ERROR,{method:r,params:n})})}class $l extends Wa{constructor(t,e){0===t.length&&Rl.throwArgumentError("missing providers","providers",t);const r=t.map((t,e)=>{if(En.isProvider(t)){const e=wa(t)?2e3:750,r=1;return Object.freeze({provider:t,weight:1,stallTimeout:e,priority:r})}const r=gt(t);null==r.priority&&(r.priority=1),null==r.stallTimeout&&(r.stallTimeout=wa(t)?2e3:750),null==r.weight&&(r.weight=1);const n=r.weight;return(n%1||n>512||n<1)&&Rl.throwArgumentError("invalid weight; must be integer in [1, 512]",`providers[${e}].weight`,n),Object.freeze(r)}),n=r.reduce((t,e)=>t+e.weight,0);null==e?e=n/2:e>n&&Rl.throwArgumentError("quorum will always fail; larger than total weight","quorum",e);let i=Ol(r.map(t=>t.provider.network));null==i&&(i=new Promise((t,e)=>{setTimeout(()=>{this.detectNetwork().then(t,e)},0)})),super(i),dt(this,"providerConfigs",Object.freeze(r)),dt(this,"quorum",e),this._highestBlockNumber=-1}detectNetwork(){return Ml(this,void 0,void 0,function*(){return Ol(yield Promise.all(this.providerConfigs.map(t=>t.provider.getNetwork())))})}perform(t,e){return Ml(this,void 0,void 0,function*(){if("sendTransaction"===t){const t=yield Promise.all(this.providerConfigs.map(t=>t.provider.sendTransaction(e.signedTransaction).then(t=>t.hash,t=>t)));for(let e=0;e<t.length;e++){const r=t[e];if("string"==typeof r)return r}throw t[0]}-1===this._highestBlockNumber&&"getBlockNumber"!==t&&(yield this.getBlockNumber());const r=Hl(this,t,e),n=mo(this.providerConfigs.map(gt));n.sort((t,e)=>t.priority-e.priority);const i=this._highestBlockNumber;let s=0,o=!0;for(;;){const a=Fl();let l=n.filter(t=>t.runner&&a-t.start<t.stallTimeout).reduce((t,e)=>t+e.weight,0);for(;l<this.quorum&&s<n.length;){const r=n[s++],o=Ul++;r.start=Fl(),r.staller=ql(r.stallTimeout),r.staller.wait(()=>{r.staller=null}),r.runner=Kl(r,i,t,e).then(n=>{r.done=!0,r.result=n,this.listenerCount("debug")&&this.emit("debug",{action:"request",rid:o,backend:Gl(r,Fl()),request:{method:t,params:bt(e)},provider:this})},n=>{r.done=!0,r.error=n,this.listenerCount("debug")&&this.emit("debug",{action:"request",rid:o,backend:Gl(r,Fl()),request:{method:t,params:bt(e)},provider:this})}),this.listenerCount("debug")&&this.emit("debug",{action:"request",rid:o,backend:Gl(r,null),request:{method:t,params:bt(e)},provider:this}),l+=r.weight}const c=[];n.forEach(t=>{!t.done&&t.runner&&(c.push(t.runner),t.staller&&c.push(t.staller.getPromise()))}),c.length&&(yield Promise.race(c));const h=n.filter(t=>t.done&&null==t.error);if(h.length>=this.quorum){const t=r(h);if(void 0!==t)return n.forEach(t=>{t.staller&&t.staller.cancel(),t.cancelled=!0}),t;o||(yield ql(100).getPromise()),o=!1}const u=n.reduce((t,e)=>{if(!e.done||null==e.error)return t;const r=e.error.code;return zl.indexOf(r)>=0&&(t[r]||(t[r]={error:e.error,weight:0}),t[r].weight+=e.weight),t},{});if(Object.keys(u).forEach(t=>{const e=u[t];if(e.weight<this.quorum)return;n.forEach(t=>{t.staller&&t.staller.cancel(),t.cancelled=!0});const r=e.error,i={};jl.forEach(t=>{null!=r[t]&&(i[t]=r[t])}),Rl.throwError(r.reason||r.message,t,i)}),0===n.filter(t=>!t.done).length)break}return n.forEach(t=>{t.staller&&t.staller.cancel(),t.cancelled=!0}),Rl.throwError("failed to meet quorum",v.errors.SERVER_ERROR,{method:t,params:e,results:n.map(t=>Gl(t)),provider:this})})}}const Vl=new v(ma),Jl="84842078b09946638c03157f83405213";class Ql extends cl{constructor(t,e){const r=new Yl(t,e),n=r.connection;n.password&&Vl.throwError("INFURA WebSocket project secrets unsupported",v.errors.UNSUPPORTED_OPERATION,{operation:"InfuraProvider.getWebSocketProvider()"});super(n.url.replace(/^http/i,"ws").replace("/v3/","/ws/v3/"),t),dt(this,"apiKey",r.projectId),dt(this,"projectId",r.projectId),dt(this,"projectSecret",r.projectSecret)}isCommunityResource(){return this.projectId===Jl}}class Yl extends fl{static getWebSocketProvider(t,e){return new Ql(t,e)}static getApiKey(t){const e={apiKey:Jl,projectId:Jl,projectSecret:null};return null==t||("string"==typeof t?e.projectId=t:null!=t.projectSecret?(Vl.assertArgument("string"==typeof t.projectId,"projectSecret requires a projectId","projectId",t.projectId),Vl.assertArgument("string"==typeof t.projectSecret,"invalid projectSecret","projectSecret","[REDACTED]"),e.projectId=t.projectId,e.projectSecret=t.projectSecret):t.projectId&&(e.projectId=t.projectId),e.apiKey=e.projectId),e}static getUrl(t,e){let r=null;switch(t?t.name:"unknown"){case"homestead":r="mainnet.infura.io";break;case"goerli":r="goerli.infura.io";break;case"sepolia":r="sepolia.infura.io";break;case"matic":r="polygon-mainnet.infura.io";break;case"maticmum":r="polygon-mumbai.infura.io";break;case"optimism":r="optimism-mainnet.infura.io";break;case"optimism-goerli":r="optimism-goerli.infura.io";break;case"optimism-sepolia":r="optimism-sepolia.infura.io";break;case"arbitrum":r="arbitrum-mainnet.infura.io";break;case"arbitrum-goerli":r="arbitrum-goerli.infura.io";break;case"arbitrum-sepolia":r="arbitrum-sepolia.infura.io";break;default:Vl.throwError("unsupported network",v.errors.INVALID_ARGUMENT,{argument:"network",value:t})}const n={allowGzip:!0,url:"https://"+r+"/v3/"+e.projectId,throttleCallback:(t,r)=>(e.projectId===Jl&&Ea(),Promise.resolve(!0))};return null!=e.projectSecret&&(n.user="",n.password=e.projectSecret),n}isCommunityResource(){return this.projectId===Jl}}const Xl=new v(ma);class Zl extends fl{static getApiKey(t){return t&&"string"!=typeof t&&Xl.throwArgumentError("invalid apiKey","apiKey",t),t||"ETHERS_JS_SHARED"}static getUrl(t,e){Xl.warn("NodeSmith will be discontinued on 2019-12-20; please migrate to another platform.");let r=null;switch(t.name){case"homestead":r="https://ethereum.api.nodesmith.io/v1/mainnet/jsonrpc";break;case"ropsten":r="https://ethereum.api.nodesmith.io/v1/ropsten/jsonrpc";break;case"rinkeby":r="https://ethereum.api.nodesmith.io/v1/rinkeby/jsonrpc";break;case"goerli":r="https://ethereum.api.nodesmith.io/v1/goerli/jsonrpc";break;case"kovan":r="https://ethereum.api.nodesmith.io/v1/kovan/jsonrpc";break;default:Xl.throwArgumentError("unsupported network","network",arguments[0])}return r+"?apiKey="+e}}const tc=new v(ma),ec="62e1ad51b37b8e00394bda3b";class rc extends fl{static getApiKey(t){const e={applicationId:null,loadBalancer:!0,applicationSecretKey:null};return null==t?e.applicationId=ec:"string"==typeof t?e.applicationId=t:null!=t.applicationSecretKey?(e.applicationId=t.applicationId,e.applicationSecretKey=t.applicationSecretKey):t.applicationId?e.applicationId=t.applicationId:tc.throwArgumentError("unsupported PocketProvider apiKey","apiKey",t),e}static getUrl(t,e){let r=null;switch(t?t.name:"unknown"){case"goerli":r="eth-goerli.gateway.pokt.network";break;case"homestead":r="eth-mainnet.gateway.pokt.network";break;case"kovan":r="poa-kovan.gateway.pokt.network";break;case"matic":r="poly-mainnet.gateway.pokt.network";break;case"maticmum":r="polygon-mumbai-rpc.gateway.pokt.network";break;case"rinkeby":r="eth-rinkeby.gateway.pokt.network";break;case"ropsten":r="eth-ropsten.gateway.pokt.network";break;default:tc.throwError("unsupported network",v.errors.INVALID_ARGUMENT,{argument:"network",value:t})}const n={headers:{},url:`https://${r}/v1/lb/${e.applicationId}`};return null!=e.applicationSecretKey&&(n.user="",n.password=e.applicationSecretKey),n}isCommunityResource(){return this.applicationId===ec}}const nc=new v(ma);class ic extends fl{static getApiKey(t){return t&&"string"!=typeof t&&nc.throwArgumentError("invalid apiKey","apiKey",t),t||"919b412a057b5e9c9b6dce193c5a60242d6efadb"}static getUrl(t,e){let r=null;switch(t.name){case"homestead":r="ethers.quiknode.pro";break;case"goerli":r="ethers.ethereum-goerli.quiknode.pro";break;case"sepolia":r="ethers.ethereum-sepolia.quiknode.pro";break;case"holesky":r="ethers.ethereum-holesky.quiknode.pro";break;case"arbitrum":r="ethers.arbitrum-mainnet.quiknode.pro";break;case"arbitrum-goerli":r="ethers.arbitrum-goerli.quiknode.pro";break;case"arbitrum-sepolia":r="ethers.arbitrum-sepolia.quiknode.pro";break;case"base":r="ethers.base-mainnet.quiknode.pro";break;case"base-goerli":r="ethers.base-goerli.quiknode.pro";break;case"base-spolia":r="ethers.base-sepolia.quiknode.pro";break;case"bnb":r="ethers.bsc.quiknode.pro";break;case"bnbt":r="ethers.bsc-testnet.quiknode.pro";break;case"matic":r="ethers.matic.quiknode.pro";break;case"maticmum":r="ethers.matic-testnet.quiknode.pro";break;case"optimism":r="ethers.optimism.quiknode.pro";break;case"optimism-goerli":r="ethers.optimism-goerli.quiknode.pro";break;case"optimism-sepolia":r="ethers.optimism-sepolia.quiknode.pro";break;case"xdai":r="ethers.xdai.quiknode.pro";break;default:nc.throwArgumentError("unsupported network","network",arguments[0])}return"https://"+r+"/"+e}}const sc=new v(ma);let oc=1;function ac(t,e){const r="Web3LegacyFetcher";return function(t,n){const i={method:t,params:n,id:oc++,jsonrpc:"2.0"};return new Promise((t,n)=>{this.emit("debug",{action:"request",fetcher:r,request:bt(i),provider:this}),e(i,(e,s)=>{if(e)return this.emit("debug",{action:"response",fetcher:r,error:e,request:i,provider:this}),n(e);if(this.emit("debug",{action:"response",fetcher:r,request:i,response:s,provider:this}),s.error){const t=new Error(s.error.message);return t.code=s.error.code,t.data=s.error.data,n(t)}t(s.result)})})}}class lc extends il{constructor(t,e){null==t&&sc.throwArgumentError("missing provider","provider",t);let r=null,n=null,i=null;"function"==typeof t?(r="unknown:",n=t):(r=t.host||t.path||"",!r&&t.isMetaMask&&(r="metamask"),i=t,t.request?(""===r&&(r="eip-1193:"),n=function(t){return function(e,r){null==r&&(r=[]);const n={method:e,params:r};return this.emit("debug",{action:"request",fetcher:"Eip1193Fetcher",request:bt(n),provider:this}),t.request(n).then(t=>(this.emit("debug",{action:"response",fetcher:"Eip1193Fetcher",request:n,response:t,provider:this}),t),t=>{throw this.emit("debug",{action:"response",fetcher:"Eip1193Fetcher",request:n,error:t,provider:this}),t})}}(t)):t.sendAsync?n=ac(0,t.sendAsync.bind(t)):t.send?n=ac(0,t.send.bind(t)):sc.throwArgumentError("unsupported provider","provider",t),r||(r="unknown:")),super(r,e),dt(this,"jsonRpcFetchFunc",n),dt(this,"provider",i)}send(t,e){return this.jsonRpcFetchFunc(t,e)}}const cc=new v(ma);function hc(t,e){if(null==t&&(t="homestead"),"string"==typeof t){const e=t.match(/^(ws|http)s?:/i);if(e)switch(e[1].toLowerCase()){case"http":case"https":return new il(t);case"ws":case"wss":return new cl(t);default:cc.throwArgumentError("unsupported URL scheme","network",t)}}const r=ea(t);return r&&r._defaultProvider||cc.throwError("unsupported getDefaultProvider network",v.errors.NETWORK_ERROR,{operation:"getDefaultProvider",network:t}),r._defaultProvider({FallbackProvider:$l,AlchemyProvider:yl,AnkrProvider:El,CloudflareProvider:Sl,EtherscanProvider:Bl,InfuraProvider:Yl,JsonRpcProvider:il,NodesmithProvider:Zl,PocketProvider:rc,QuickNodeProvider:ic,Web3Provider:lc,IpcProvider:null},e)}var uc=Object.freeze({__proto__:null,AlchemyProvider:yl,AlchemyWebSocketProvider:gl,AnkrProvider:El,BaseProvider:Wa,CloudflareProvider:Sl,EtherscanProvider:Bl,FallbackProvider:$l,Formatter:ya,InfuraProvider:Yl,InfuraWebSocketProvider:Ql,IpcProvider:null,JsonRpcBatchProvider:class extends il{send(t,e){const r={method:t,params:e,id:this._nextId++,jsonrpc:"2.0"};null==this._pendingBatch&&(this._pendingBatch=[]);const n={request:r,resolve:null,reject:null},i=new Promise((t,e)=>{n.resolve=t,n.reject=e});return this._pendingBatch.push(n),this._pendingBatchAggregator||(this._pendingBatchAggregator=setTimeout(()=>{const t=this._pendingBatch;this._pendingBatch=null,this._pendingBatchAggregator=null;const e=t.map(t=>t.request);return this.emit("debug",{action:"requestBatch",request:bt(e),provider:this}),ca(this.connection,JSON.stringify(e)).then(r=>{this.emit("debug",{action:"response",request:e,response:r,provider:this}),t.forEach((t,e)=>{const n=r[e];if(n.error){const e=new Error(n.error.message);e.code=n.error.code,e.data=n.error.data,t.reject(e)}else t.resolve(n.result)})},r=>{this.emit("debug",{action:"response",error:r,request:e,provider:this}),t.forEach(t=>{t.reject(r)})})},10)),i}},JsonRpcProvider:il,JsonRpcSigner:el,NodesmithProvider:Zl,PocketProvider:rc,Provider:En,QuickNodeProvider:ic,Resolver:ja,StaticJsonRpcProvider:dl,UrlJsonRpcProvider:fl,Web3Provider:lc,WebSocketProvider:cl,getDefaultProvider:hc,getNetwork:ea,isCommunityResourcable:va,isCommunityResource:wa,showThrottleMessage:Ea});const dc=new RegExp("^bytes([0-9]+)$"),fc=new RegExp("^(u?int)([0-9]*)$"),pc=new RegExp("^(.*)\\[([0-9]*)\\]$"),mc=new v("solidity/5.8.0");function gc(t,e,r){switch(t){case"address":return r?I(e,32):C(e);case"string":return Ve(e);case"bytes":return C(e);case"bool":return e=e?"0x01":"0x00",r?I(e,32):C(e)}let n=t.match(fc);if(n){let i=parseInt(n[2]||"256");return(n[2]&&String(i)!==n[2]||i%8!=0||0===i||i>256)&&mc.throwArgumentError("invalid number type","type",t),r&&(i=256),I(e=K.from(e).toTwos(i),i/8)}if(n=t.match(dc),n){const i=parseInt(n[1]);return(String(i)!==n[1]||0===i||i>32)&&mc.throwArgumentError("invalid bytes type","type",t),C(e).byteLength!==i&&mc.throwArgumentError(`invalid value for ${t}`,"value",e),r?C((e+"0000000000000000000000000000000000000000000000000000000000000000").substring(0,66)):e}if(n=t.match(pc),n&&Array.isArray(e)){const r=n[1];parseInt(n[2]||String(e.length))!=e.length&&mc.throwArgumentError(`invalid array length for ${t}`,"value",e);const i=[];return e.forEach(function(t){i.push(gc(r,t,!0))}),x(i)}return mc.throwArgumentError("invalid type","type",t)}function yc(t,e){t.length!=e.length&&mc.throwArgumentError("wrong number of values; expected ${ types.length }","values",e);const r=[];return t.forEach(function(t,n){r.push(gc(t,e[n]))}),N(x(r))}const vc=new v("units/5.8.0"),wc=["wei","kwei","mwei","gwei","szabo","finney","ether"];function bc(t,e){if("string"==typeof e){const t=wc.indexOf(e);-1!==t&&(e=3*t)}return it(t,null!=e?e:18)}function Ec(t,e){if("string"!=typeof t&&vc.throwArgumentError("value must be a string","value",t),"string"==typeof e){const t=wc.indexOf(e);-1!==t&&(e=3*t)}return st(t,null!=e?e:18)}function Ac(t){return bc(t,18)}function kc(t){return Ec(t,18)}var Sc=Object.freeze({__proto__:null,AbiCoder:pr,ConstructorFragment:Lt,ErrorFragment:zt,EventFragment:Rt,FormatTypes:Tt,Fragment:Mt,FunctionFragment:Ut,HDNode:oo,Indexed:pn,Interface:yn,LogDescription:un,Logger:v,ParamType:Nt,RLP:he,SigningKey:Zi,get SupportedAlgorithm(){return Ds},TransactionDescription:dn,get TransactionTypes(){return ns},get UnicodeNormalizationForm(){return Ge},Utf8ErrorFuncs:Ke,get Utf8ErrorReason(){return He},_TypedDataEncoder:cn,_fetchData:la,_toEscapedUtf8String:function(t,e){return'"'+$e(t,e).map(t=>{if(t<256){switch(t){case 8:return"\\b";case 9:return"\\t";case 10:return"\\n";case 13:return"\\r";case 34:return'\\"';case 92:return"\\\\"}if(t>=32&&t<127)return String.fromCharCode(t)}return t<=65535?Je(t):Je(55296+((t-=65536)>>10&1023))+Je(56320+(1023&t))}).join("")+'"'},accessListify:ds,arrayify:C,base58:Os,base64:br,checkProperties:mt,checkResultErrors:$t,commify:function(t){const e=String(t).split(".");(e.length>2||!e[0].match(/^-?[0-9]*$/)||e[1]&&!e[1].match(/^[0-9]*$/)||"."===t||"-."===t)&&vc.throwArgumentError("invalid value","value",t);let r=e[0],n="";for("-"===r.substring(0,1)&&(n="-",r=r.substring(1));"0"===r.substring(0,1);)r=r.substring(1);""===r&&(r="0");let i="";for(2===e.length&&(i="."+(e[1]||"0"));i.length>2&&"0"===i[i.length-1];)i=i.substring(0,i.length-1);const s=[];for(;r.length;){if(r.length<=3){s.unshift(r);break}{const t=r.length-3;s.unshift(r.substring(t)),r=r.substring(0,t)}}return n+s.join(",")+i},computeAddress:ls,computeHmac:zs,computePublicKey:es,concat:x,deepCopy:bt,defaultAbiCoder:mr,defaultPath:so,defineReadOnly:dt,dnsEncode:Wr,entropyToMnemonic:co,fetchJson:ca,formatBytes32String:function(t){const e=Ve(t);if(e.length>31)throw new Error("bytes32 string must be less than 32 bytes");return N(x([e,Ue]).slice(0,32))},formatEther:Ac,formatUnits:bc,getAccountPath:function(t){return("number"!=typeof t||t<0||t>=Xs||t%1)&&Js.throwArgumentError("invalid account index","index",t),`m/44'/60'/${t}'/0/0`},getAddress:ye,getContractAddress:ve,getCreate2Address:function(t,e,r){return 32!==B(e)&&ue.throwArgumentError("salt must be 32 bytes","salt",e),32!==B(r)&&ue.throwArgumentError("initCodeHash must be 32 bytes","initCodeHash",r),ye(M(ee(x(["0xff",ye(t),e,r])),12))},getIcapAddress:function(t){let e=(r=ye(t).substring(2),new z(r,16).toString(36)).toUpperCase();for(var r;e.length<30;)e="0"+e;return"XE"+ge("XE00"+e)+e},getJsonWalletAddress:function(t){if(To(t))try{return ye(JSON.parse(t).ethaddr)}catch(t){return null}if(Po(t))try{return ye(JSON.parse(t).address)}catch(t){return null}return null},getStatic:ft,hashMessage:Kr,hexConcat:R,hexDataLength:B,hexDataSlice:M,hexStripZeros:O,hexValue:F,hexZeroPad:D,hexlify:N,id:gr,isAddress:function(t){try{return ye(t),!0}catch(t){}return!1},isBytes:S,isBytesLike:A,isHexString:T,isValidMnemonic:function(t,e){try{return lo(t,e),!0}catch(t){}return!1},isValidName:function(t){try{return 0!==Gr(t).length}catch(t){}return!1},joinSignature:U,keccak256:ee,mnemonicToEntropy:lo,mnemonicToSeed:ao,namehash:Hr,nameprep:function(t){if(t.match(/^[a-z0-9-]*$/i)&&t.length<=59)return t.toLowerCase();let e=Xe(t);var r;r=e.map(t=>{if(nr.indexOf(t)>=0)return[];if(t>=65024&&t<=65039)return[];let e=function(t){let e=er(t,ir);if(e)return[t+e.s];let r=sr[t];if(r)return r;let n=or[t];return n?[t+n[0]]:ar[t]||null}(t);return e||[t]}),e=r.reduce((t,e)=>(e.forEach(e=>{t.push(e)}),t),[]),e=Xe(Qe(e),Ge.NFKC),e.forEach(t=>{if(er(t,lr))throw new Error("STRINGPREP_CONTAINS_PROHIBITED")}),e.forEach(t=>{if(er(t,rr))throw new Error("STRINGPREP_CONTAINS_UNASSIGNED")});let n=Qe(e);if("-"===n.substring(0,1)||"--"===n.substring(2,4)||"-"===n.substring(n.length-1))throw new Error("invalid hyphen");return n},parseBytes32String:function(t){const e=C(t);if(32!==e.length)throw new Error("invalid bytes32 - not 32 bytes long");if(0!==e[31])throw new Error("invalid bytes32 string - no null terminator");let r=31;for(;0===e[r-1];)r--;return Ye(e.slice(0,r))},parseEther:kc,parseTransaction:vs,parseUnits:Ec,poll:ha,randomBytes:po,recoverAddress:cs,recoverPublicKey:ts,resolveProperties:pt,ripemd160:Us,serializeTransaction:gs,sha256:qs,sha512:function(t){return"0x"+fi.sha512().update(C(t)).digest("hex")},shallowCopy:gt,shuffled:mo,solidityKeccak256:function(t,e){return ee(yc(t,e))},solidityPack:yc,soliditySha256:function(t,e){return qs(yc(t,e))},splitSignature:L,stripZeros:_,toUtf8Bytes:Ve,toUtf8CodePoints:Xe,toUtf8String:Ye,verifyMessage:function(t,e){return cs(Kr(t),e)},verifyTypedData:function(t,e,r,n){return cs(cn.hash(t,e,r),n)},zeroPad:I});const Cc="ethers/5.8.0",xc=new v(Cc);var _c=Object.freeze({__proto__:null,BaseContract:Ms,BigNumber:K,Contract:Rs,ContractFactory:class{constructor(t,e,r){let n=null;n="string"==typeof e?e:S(e)?N(e):e&&"string"==typeof e.object?e.object:"!","0x"!==n.substring(0,2)&&(n="0x"+n),(!T(n)||n.length%2)&&bs.throwArgumentError("invalid bytecode","bytecode",e),r&&!xn.isSigner(r)&&bs.throwArgumentError("invalid signer","signer",r),dt(this,"bytecode",n),dt(this,"interface",ft(new.target,"getInterface")(t)),dt(this,"signer",r||null)}getDeployTransaction(...t){let e={};if(t.length===this.interface.deploy.inputs.length+1&&"object"==typeof t[t.length-1]){e=gt(t.pop());for(const t in e)if(!Es[t])throw new Error("unknown transaction override "+t)}if(["data","from","to"].forEach(t=>{null!=e[t]&&bs.throwError("cannot override "+t,v.errors.UNSUPPORTED_OPERATION,{operation:t})}),e.value){K.from(e.value).isZero()||this.interface.deploy.payable||bs.throwError("non-payable constructor cannot override value",v.errors.UNSUPPORTED_OPERATION,{operation:"overrides.value",value:e.value})}return bs.checkArgumentCount(t.length,this.interface.deploy.inputs.length," in Contract constructor"),e.data=N(x([this.bytecode,this.interface.encodeDeploy(t)])),e}deploy(...t){return ws(this,void 0,void 0,function*(){let e={};t.length===this.interface.deploy.inputs.length+1&&(e=t.pop()),bs.checkArgumentCount(t.length,this.interface.deploy.inputs.length," in Contract constructor");const r=yield ks(this.signer,t,this.interface.deploy.inputs);r.push(e);const n=this.getDeployTransaction(...r),i=yield this.signer.sendTransaction(n),s=ft(this.constructor,"getContractAddress")(i),o=ft(this.constructor,"getContract")(s,this.interface,this.signer);return Cs(o,i),dt(o,"deployTransaction",i),o})}attach(t){return this.constructor.getContract(t,this.interface,this.signer)}connect(t){return new this.constructor(this.interface,this.bytecode,t)}static fromSolidity(t,e){null==t&&bs.throwError("missing compiler output",v.errors.MISSING_ARGUMENT,{argument:"compilerOutput"}),"string"==typeof t&&(t=JSON.parse(t));const r=t.abi;let n=null;return t.bytecode?n=t.bytecode:t.evm&&t.evm.bytecode&&(n=t.evm.bytecode),new this(r,n,e)}static getInterface(t){return Rs.getInterface(t)}static getContractAddress(t){return ve(t)}static getContract(t,e,r){return new Rs(t,e,r)}},FixedNumber:at,Signer:xn,VoidSigner:_n,Wallet:$o,Wordlist:Hs,constants:qe,get errors(){return g},getDefaultProvider:hc,logger:xc,providers:uc,utils:Sc,version:Cc,wordlists:Vs});try{const t=window;null==t._ethers&&(t._ethers=_c)}catch(t){}const Ic=["https://w3s.link/ipfs/","https://cloudflare-ipfs.com/ipfs/","https://ipfs.io/ipfs/","https://gateway.pinata.cloud/ipfs/","https://dweb.link/ipfs/"];function Tc(){const t=function(){try{const t=localStorage.getItem("customIpfsGatewayBaseUrl");if(t&&"string"==typeof t&&t.trim()){const e=t.trim();return e.endsWith("/ipfs/")?e:e.endsWith("/")?e+"ipfs/":e+"/ipfs/"}}catch(t){console.warn("[IpfsService] Failed to read custom gateway from localStorage:",t)}return null}();return t?[t,...Ic]:Ic}function Pc(t){return!(!t||"string"!=typeof t)&&t.toLowerCase().startsWith("ipfs://")}function Nc(t){if(!Pc(t))return t;const e=t.substring(7);return e.startsWith("/")?e.substring(1):e}function Bc(t,e=0){if(!Pc(t))return t;const r=Tc();if(e<0||e>=r.length)return null;const n=Nc(t);return r[e]+n}function Mc(){return Tc()}var Rc=Object.freeze({__proto__:null,fetchJsonWithIpfsSupport:async function(t,e={}){const{timeout:r=1e4,...n}=e;if(!Pc(t)){const e=new AbortController,i=setTimeout(()=>e.abort(),r);try{const r=await fetch(t,{...n,signal:e.signal});if(!r.ok)throw new Error(`HTTP ${r.status}: ${r.statusText}`);const s=await r.json();return clearTimeout(i),s}catch(t){if(clearTimeout(i),"AbortError"===t.name)throw new Error(`Request timeout after ${r}ms`);throw t}}const i=Tc(),s=Nc(t),o=[];for(let t=0;t<i.length;t++){const e=i[t],a=e+s,l=new AbortController,c=setTimeout(()=>l.abort(),r);try{const r=await fetch(a,{...n,signal:l.signal});if(clearTimeout(c),!r.ok)throw new Error(`HTTP ${r.status}: ${r.statusText}`);const s=await r.json();return t>0&&console.log(`[IpfsService] Resolved IPFS via gateway ${t+1}/${i.length}: ${e}`),s}catch(n){clearTimeout(c);const i="AbortError"===n.name?`Timeout after ${r}ms`:n.message||"Unknown error";o.push(`Gateway ${t+1} (${e}): ${i}`);continue}}throw new Error(`Failed to fetch IPFS content after trying ${i.length} gateways:\n`+o.join("\n"))},getAvailableGateways:Mc,isIpfsUri:Pc,normalizeIpfsPath:Nc,resolveIpfsToHttp:Bc,setCustomGateway:function(t){try{t?localStorage.setItem("customIpfsGatewayBaseUrl",t):localStorage.removeItem("customIpfsGatewayBaseUrl")}catch(t){console.warn("[IpfsService] Failed to save custom gateway to localStorage:",t)}},testImageLoad:function(t,e=5e3){return new Promise(r=>{const n=new Image,i=setTimeout(()=>{n.onload=null,n.onerror=null,r(!1)},e);n.onload=()=>{clearTimeout(i),r(!0)},n.onerror=()=>{clearTimeout(i),r(!1)},n.src=t})}});class Fc{async initialize(t){throw new Error("StorageAdapter.initialize() must be implemented")}async putEvents(t){throw new Error("StorageAdapter.putEvents() must be implemented")}async getEvent(t,e){throw new Error("StorageAdapter.getEvent() must be implemented")}async queryEvents(t,e){throw new Error("StorageAdapter.queryEvents() must be implemented")}async countEvents(t,e){throw new Error("StorageAdapter.countEvents() must be implemented")}async deleteEvents(t,e){throw new Error("StorageAdapter.deleteEvents() must be implemented")}async deleteEventsAfterBlock(t){throw new Error("StorageAdapter.deleteEventsAfterBlock() must be implemented")}async getSyncState(){throw new Error("StorageAdapter.getSyncState() must be implemented")}async setSyncState(t){throw new Error("StorageAdapter.setSyncState() must be implemented")}async getVersion(){throw new Error("StorageAdapter.getVersion() must be implemented")}async setVersion(t){throw new Error("StorageAdapter.setVersion() must be implemented")}async clear(){throw new Error("StorageAdapter.clear() must be implemented")}async close(){throw new Error("StorageAdapter.close() must be implemented")}}class Oc extends Fc{constructor(){super(),this.db=null,this.config=null,this.dbName=null}async initialize(t){this.config=t,this.dbName=t.dbName;const e=await this._getStoredVersion();return null!==e&&t.version>e&&(console.log(`[IndexedDBAdapter] Migrating from v${e} to v${t.version}`),await this._deleteDatabase()),new Promise((e,r)=>{const n=indexedDB.open(this.dbName,t.version);n.onerror=()=>{r(new Error(`Failed to open IndexedDB: ${n.error?.message}`))},n.onsuccess=()=>{this.db=n.result,e()},n.onupgradeneeded=e=>{const r=e.target.result;this._createStores(r,t.eventTypes)}})}_createStores(t,e){for(const r of e){const e=`events_${r.name}`;if(!t.objectStoreNames.contains(e)){const n=t.createObjectStore(e,{keyPath:"id"});for(const t of r.indexedParams||[])n.createIndex(`param_${t}`,`indexed.${t}`,{unique:!1});n.createIndex("blockNumber","blockNumber",{unique:!1}),n.createIndex("timestamp","timestamp",{unique:!1})}}t.objectStoreNames.contains("syncState")||t.createObjectStore("syncState",{keyPath:"id"}),t.objectStoreNames.contains("meta")||t.createObjectStore("meta",{keyPath:"key"})}async _getStoredVersion(){return new Promise(t=>{const e=indexedDB.open(this.dbName);e.onsuccess=()=>{const r=e.result,n=r.version;r.close(),t(n)},e.onerror=()=>t(null)})}async _deleteDatabase(){return new Promise((t,e)=>{this.db&&(this.db.close(),this.db=null);const r=indexedDB.deleteDatabase(this.dbName);r.onsuccess=()=>t(),r.onerror=()=>e(r.error)})}async putEvents(t){if(!this.db)throw new Error("IndexedDBAdapter not initialized");if(0===t.length)return;const e=new Map;for(const r of t)e.has(r.type)||e.set(r.type,[]),e.get(r.type).push(r);const r=[];for(const[t,n]of e)r.push(this._putEventsOfType(t,n));await Promise.all(r)}async _putEventsOfType(t,e){const r=`events_${t}`;return this.db.objectStoreNames.contains(r)||await this._addStore(t),new Promise((t,n)=>{const i=this.db.transaction(r,"readwrite"),s=i.objectStore(r);for(const t of e)s.put(t);i.oncomplete=()=>t(),i.onerror=()=>n(i.error)})}async _addStore(t){const e=this.db.version;return this.db.close(),new Promise((r,n)=>{const i=indexedDB.open(this.dbName,e+1);i.onupgradeneeded=e=>{const r=e.target.result,n=`events_${t}`;if(!r.objectStoreNames.contains(n)){const t=r.createObjectStore(n,{keyPath:"id"});t.createIndex("blockNumber","blockNumber",{unique:!1}),t.createIndex("timestamp","timestamp",{unique:!1})}},i.onsuccess=()=>{this.db=i.result,r()},i.onerror=()=>n(i.error)})}async getEvent(t,e){if(!this.db)throw new Error("IndexedDBAdapter not initialized");const r=`events_${t}`;return this.db.objectStoreNames.contains(r)?new Promise((t,n)=>{const i=this.db.transaction(r,"readonly").objectStore(r).get(e);i.onsuccess=()=>t(i.result||null),i.onerror=()=>n(i.error)}):null}async queryEvents(t,e={}){if(!this.db)throw new Error("IndexedDBAdapter not initialized");const r=`events_${t}`;return this.db.objectStoreNames.contains(r)?new Promise((t,n)=>{const i=this.db.transaction(r,"readonly").objectStore(r).getAll();i.onsuccess=()=>{let r=i.result;e.where&&(r=r.filter(t=>this._matchesWhere(t,e.where)));const n=r.length,s=e.orderBy||"blockNumber",o=e.order||"desc";r.sort((t,e)=>{const r=this._getNestedValue(t,s),n=this._getNestedValue(e,s);return r<n?"asc"===o?-1:1:r>n?"asc"===o?1:-1:0});const a=e.offset||0,l=e.limit||100,c=r.slice(a,a+l);t({events:c,total:n,hasMore:a+l<n})},i.onerror=()=>n(i.error)}):{events:[],total:0,hasMore:!1}}async countEvents(t,e){if(!this.db)throw new Error("IndexedDBAdapter not initialized");const r=`events_${t}`;return this.db.objectStoreNames.contains(r)?new Promise((t,n)=>{const i=this.db.transaction(r,"readonly").objectStore(r);if(e){const r=i.getAll();r.onsuccess=()=>{const n=r.result.filter(t=>this._matchesWhere(t,e)).length;t(n)},r.onerror=()=>n(r.error)}else{const e=i.count();e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error)}}):0}async deleteEvents(t,e){if(!this.db)throw new Error("IndexedDBAdapter not initialized");const r=`events_${t}`;if(this.db.objectStoreNames.contains(r))return new Promise((t,n)=>{const i=this.db.transaction(r,"readwrite"),s=i.objectStore(r);for(const t of e)s.delete(t);i.oncomplete=()=>t(),i.onerror=()=>n(i.error)})}async deleteEventsAfterBlock(t){if(!this.db)throw new Error("IndexedDBAdapter not initialized");const e=Array.from(this.db.objectStoreNames).filter(t=>t.startsWith("events_"));for(const r of e)await this._deleteEventsAfterBlockInStore(r,t)}async _deleteEventsAfterBlockInStore(t,e){return new Promise((r,n)=>{const i=this.db.transaction(t,"readwrite"),s=i.objectStore(t).index("blockNumber"),o=IDBKeyRange.lowerBound(e,!0);s.openCursor(o).onsuccess=t=>{const e=t.target.result;e&&(e.delete(),e.continue())},i.oncomplete=()=>r(),i.onerror=()=>n(i.error)})}async getSyncState(){if(!this.db)throw new Error("IndexedDBAdapter not initialized");return new Promise((t,e)=>{const r=this.db.transaction("syncState","readonly").objectStore("syncState").get("current");r.onsuccess=()=>t(r.result||null),r.onerror=()=>e(r.error)})}async setSyncState(t){if(!this.db)throw new Error("IndexedDBAdapter not initialized");return new Promise((e,r)=>{const n=this.db.transaction("syncState","readwrite").objectStore("syncState").put({id:"current",...t});n.onsuccess=()=>e(),n.onerror=()=>r(n.error)})}async getVersion(){return this.db?this.db.version:0}async setVersion(t){}async clear(){if(!this.db)return;const t=Array.from(this.db.objectStoreNames);return new Promise((e,r)=>{const n=this.db.transaction(t,"readwrite");for(const e of t)n.objectStore(e).clear();n.oncomplete=()=>e(),n.onerror=()=>r(n.error)})}async close(){this.db&&(this.db.close(),this.db=null)}_matchesWhere(t,e){for(const[r,n]of Object.entries(e)){const e=this._getNestedValue(t,r);if(Array.isArray(n)){if(!n.includes(e))return!1}else if("object"==typeof n&&null!==n){if(void 0!==n.$gt&&!(e>n.$gt))return!1;if(void 0!==n.$gte&&!(e>=n.$gte))return!1;if(void 0!==n.$lt&&!(e<n.$lt))return!1;if(void 0!==n.$lte&&!(e<=n.$lte))return!1;if(void 0!==n.$ne&&e===n.$ne)return!1}else{if(("string"==typeof e?e.toLowerCase():e)!==("string"==typeof n?n.toLowerCase():n))return!1}}return!0}_getNestedValue(t,e){return e.startsWith("indexed.")?t.indexed?.[e.slice(8)]:e.startsWith("data.")?t.data?.[e.slice(5)]:void 0!==t.indexed?.[e]?t.indexed[e]:void 0!==t.data?.[e]?t.data[e]:t[e]}}class Dc extends Fc{constructor(){super(),this.stores=new Map,this.syncState=null,this.version=0,this.config=null}async initialize(t){this.config=t;for(const e of t.eventTypes)this.stores.set(e.name,new Map);t.version>this.version&&(await this.clear(),this.version=t.version)}async putEvents(t){for(const e of t){this.stores.get(e.type)||this.stores.set(e.type,new Map),this.stores.get(e.type).set(e.id,e)}}async getEvent(t,e){const r=this.stores.get(t);return r&&r.get(e)||null}async queryEvents(t,e={}){const r=this.stores.get(t);if(!r)return{events:[],total:0,hasMore:!1};let n=Array.from(r.values());e.where&&(n=n.filter(t=>this._matchesWhere(t,e.where)));const i=n.length,s=e.orderBy||"blockNumber",o=e.order||"desc";n.sort((t,e)=>{const r=this._getNestedValue(t,s),n=this._getNestedValue(e,s);return r<n?"asc"===o?-1:1:r>n?"asc"===o?1:-1:0});const a=e.offset||0,l=e.limit||100;return{events:n.slice(a,a+l),total:i,hasMore:a+l<i}}async countEvents(t,e){const r=this.stores.get(t);if(!r)return 0;if(!e)return r.size;let n=0;for(const t of r.values())this._matchesWhere(t,e)&&n++;return n}async deleteEvents(t,e){const r=this.stores.get(t);if(r)for(const t of e)r.delete(t)}async deleteEventsAfterBlock(t){for(const e of this.stores.values())for(const[r,n]of e.entries())n.blockNumber>t&&e.delete(r)}async getSyncState(){return this.syncState}async setSyncState(t){this.syncState={...t}}async getVersion(){return this.version}async setVersion(t){this.version=t}async clear(){for(const t of this.stores.values())t.clear();this.syncState=null}async close(){}_matchesWhere(t,e){for(const[r,n]of Object.entries(e)){const e=this._getNestedValue(t,r);if(Array.isArray(n)){if(!n.includes(e))return!1}else if("object"==typeof n&&null!==n){if(void 0!==n.$gt&&!(e>n.$gt))return!1;if(void 0!==n.$gte&&!(e>=n.$gte))return!1;if(void 0!==n.$lt&&!(e<n.$lt))return!1;if(void 0!==n.$lte&&!(e<=n.$lte))return!1;if(void 0!==n.$ne&&e===n.$ne)return!1}else{if(("string"==typeof e?e.toLowerCase():e)!==("string"==typeof n?n.toLowerCase():n))return!1}}return!0}_getNestedValue(t,e){return e.startsWith("indexed.")?t.indexed?.[e.slice(8)]:e.startsWith("data.")?t.data?.[e.slice(5)]:void 0!==t.indexed?.[e]?t.indexed[e]:void 0!==t.data?.[e]?t.data[e]:t[e]}}const Lc="mw3_indexer_settings",Uc={get(){try{const t=localStorage.getItem(Lc);return t?JSON.parse(t):this.getDefaults()}catch{return this.getDefaults()}},getDefaults:()=>({storageEnabled:!0,maxStorageMB:50}),set(t){const e={...this.get(),...t};return localStorage.setItem(Lc,JSON.stringify(e)),e},isStorageEnabled(){return this.get().storageEnabled},async clearAllData(){if("undefined"==typeof indexedDB)return;const t=(await(indexedDB.databases?.())||[]).filter(t=>t.name?.startsWith("micro-web3-events-")||t.name?.includes("colasseum-"));for(const e of t)await new Promise((t,r)=>{const n=indexedDB.deleteDatabase(e.name);n.onsuccess=t,n.onerror=r})},getStorageEstimate:async()=>navigator.storage?.estimate?navigator.storage.estimate():{used:0,quota:0}};class qc{constructor(t,e){this.storage=t,this.eventBus=e,this.subscriptions=new Map,this.nextSubscriptionId=1}async query(t,e={}){return this.storage.queryEvents(t,{where:e.where,orderBy:e.orderBy||"blockNumber",order:e.order||"desc",limit:e.limit||100,offset:e.offset||0})}async get(t,e){return this.storage.getEvent(t,e)}subscribe(t,e){const r=Array.isArray(t)?t:[t],n=this.nextSubscriptionId++;return this.subscriptions.set(n,{eventTypes:new Set(r),callback:e}),()=>{this.subscriptions.delete(n)}}async count(t,e){return this.storage.countEvents(t,e)}notifyNewEvents(t,e){for(const r of this.subscriptions.values())if(r.eventTypes.has(t)||r.eventTypes.has("*"))try{r.callback(e)}catch(t){console.error("[QueryEngine] Subscription callback error:",t)}}async getEventChecker(t={}){const e=new Map;return{has:(r,n={})=>this._getCachedEvents(e,r).some(e=>this._matchesWhere(e,{...t,...n})),get:(r,n={})=>this._getCachedEvents(e,r).filter(e=>this._matchesWhere(e,{...t,...n})),count:(r,n={})=>this._getCachedEvents(e,r).filter(e=>this._matchesWhere(e,{...t,...n})).length,prefetch:async t=>{for(const r of t)if(!e.has(r)){const t=await this.storage.queryEvents(r,{limit:1e4});e.set(r,t.events)}}}}_getCachedEvents(t,e){return t.get(e)||[]}_matchesWhere(t,e){for(const[r,n]of Object.entries(e)){const e=this._getNestedValue(t,r);if(("string"==typeof e?e.toLowerCase():e)!==("string"==typeof n?n.toLowerCase():n))return!1}return!0}_getNestedValue(t,e){return void 0!==t.indexed?.[e]?t.indexed[e]:void 0!==t.data?.[e]?t.data[e]:t[e]}}class zc{constructor(t,e,r,n={}){this.storage=t,this.queryEngine=e,this.eventBus=r,this.batchSize=n.batchSize||2e3,this.confirmations=n.confirmations||2,this.realTimeEnabled=!1!==n.realTimeEnabled,this.retryAttempts=n.retryAttempts||3,this.retryDelay=n.retryDelay||1e3,this.pollInterval=n.pollInterval||12e3,this.reorgTracking=n.reorgTracking||!1,this.reorgDepth=n.reorgDepth||100,this.provider=null,this.contract=null,this.eventTypes=[],this.deployBlock=0,this.chainId=null,this.state="initializing",this.currentBlock=0,this.latestBlock=0,this.eventsIndexed=0,this.lastSyncTime=null,this.error=null,this.eventListeners=[],this.pollTimer=null,this.isPaused=!1,this.recentBlocks=new Map}async initialize({provider:t,contract:e,eventTypes:r,deployBlock:n,chainId:i}){this.provider=t,this.contract=e,this.eventTypes=r,this.deployBlock=n,this.chainId=i,await this._validateChainId();const s=await this.storage.getSyncState();s?(this.currentBlock=s.lastSyncedBlock,this.eventsIndexed=Object.values(s.eventCounts||{}).reduce((t,e)=>t+e,0),this.lastSyncTime=s.lastSyncTime):this.currentBlock=this.deployBlock-1}async _validateChainId(){const t=await this.storage.getSyncState();t&&t.chainId!==this.chainId&&(console.warn("[SyncEngine] Chain ID mismatch, clearing data"),await this.storage.clear())}async start(){if("synced"!==this.state&&"syncing"!==this.state)try{await this._syncHistorical(),this.realTimeEnabled&&!this.isPaused&&await this._startRealTimeSync()}catch(t){this.state="error",this.error=t,this.eventBus.emit("indexer:error",{code:"SYNC_ERROR",message:t.message,cause:t,recoverable:!0})}}async _syncHistorical(){this.state="syncing",this.latestBlock=await this.provider.getBlockNumber();const t=this.latestBlock-this.confirmations;if(this.currentBlock>=t)return this.state="synced",void this.eventBus.emit("indexer:syncComplete",{eventsIndexed:this.eventsIndexed,duration:0});const e=Date.now(),r=this.currentBlock+1;this.eventBus.emit("indexer:syncStarted",{fromBlock:r,toBlock:t});for(let e=r;e<=t&&!this.isPaused;e+=this.batchSize){const n=Math.min(e+this.batchSize-1,t);await this._syncBatch(e,n);const i=(n-r+1)/(t-r+1);this.eventBus.emit("indexer:syncProgress",{progress:i,currentBlock:n,latestBlock:this.latestBlock,eventsIndexed:this.eventsIndexed})}this.isPaused||(this.state="synced",this.lastSyncTime=Date.now(),this.eventBus.emit("indexer:syncComplete",{eventsIndexed:this.eventsIndexed,duration:Date.now()-e}))}async _syncBatch(t,e){const r=await this._fetchEventsWithRetry(t,e);if(r.length>0){const t=r.map(t=>this._parseEvent(t));await this.storage.putEvents(t),this.eventsIndexed+=t.length;const e=this._groupByType(t);for(const[t,r]of Object.entries(e))this.queryEngine.notifyNewEvents(t,r)}this.currentBlock=e,await this._saveSyncState()}async _fetchEventsWithRetry(t,e){for(let r=0;r<this.retryAttempts;r++)try{const r=[];for(const n of this.eventTypes){const i=this.contract.filters[n.name](),s=await this.contract.queryFilter(i,t,e);r.push(...s)}return r}catch(t){if(r===this.retryAttempts-1)throw t;const e=this.retryDelay*Math.pow(2,r);await this._sleep(e)}return[]}_parseEvent(t){const e={},r={};if(t.args){const n=t.eventFragment||this.contract.interface.getEvent(t.event);if(n)for(let i=0;i<n.inputs.length;i++){const s=n.inputs[i],o=t.args[i],a=this._serializeValue(o);s.indexed&&(e[s.name]=a),r[s.name]=a}}return{id:`${t.transactionHash}-${t.logIndex}`,type:t.event,blockNumber:t.blockNumber,blockHash:t.blockHash,transactionHash:t.transactionHash,logIndex:t.logIndex,timestamp:0,data:r,indexed:e}}_serializeValue(t){return null==t?null:"bigint"==typeof t||t._isBigNumber?t.toString():Array.isArray(t)?t.map(t=>this._serializeValue(t)):t}_groupByType(t){const e={};for(const r of t)e[r.type]||(e[r.type]=[]),e[r.type].push(r);return e}async _saveSyncState(){await this.storage.setSyncState({lastSyncedBlock:this.currentBlock,lastSyncTime:Date.now(),eventCounts:{},chainId:this.chainId})}async _startRealTimeSync(){try{for(const t of this.eventTypes){const e=this.contract.filters[t.name](),r=async(...t)=>{const e=t[t.length-1];await this._handleNewEvent(e)};this.contract.on(e,r),this.eventListeners.push({filter:e,listener:r})}}catch(t){console.warn("[SyncEngine] WebSocket subscription failed, falling back to polling"),this._startPolling()}this._startPolling()}_startPolling(){this.pollTimer||(this.pollTimer=setInterval(async()=>{if(!this.isPaused)try{const t=await this.provider.getBlockNumber(),e=t-this.confirmations;e>this.currentBlock&&await this._syncBatch(this.currentBlock+1,e),this.latestBlock=t,this.reorgTracking&&await this._checkForReorg(t)}catch(t){console.error("[SyncEngine] Polling error:",t)}},this.pollInterval))}async _handleNewEvent(t){this.confirmations>0&&await this._waitForConfirmations(t.transactionHash);const e=this._parseEvent(t);await this.storage.putEvents([e]),this.eventsIndexed++,e.blockNumber>this.currentBlock&&(this.currentBlock=e.blockNumber,await this._saveSyncState()),this.queryEngine.notifyNewEvents(e.type,[e]),this.eventBus.emit("indexer:newEvents",{eventType:e.type,events:[e]})}async _waitForConfirmations(t){let e=0;for(;e<this.confirmations;){const r=await this.provider.getTransactionReceipt(t);if(!r){await this._sleep(1e3);continue}e=await this.provider.getBlockNumber()-r.blockNumber+1,e<this.confirmations&&await this._sleep(1e3)}}async _checkForReorg(t){const e=await this.provider.getBlock(t);if(!e)return;const r=this.recentBlocks.get(t-1);if(r&&r!==e.parentHash&&await this._handleReorg(t-1),this.recentBlocks.set(t,e.hash),this.recentBlocks.size>this.reorgDepth){const t=Math.min(...this.recentBlocks.keys());this.recentBlocks.delete(t)}}async _handleReorg(t){let e=t;for(;e>this.deployBlock;){const t=this.recentBlocks.get(e),r=await this.provider.getBlock(e);if(t===r?.hash)break;e--}await this.storage.deleteEventsAfterBlock(e),this.currentBlock=e,await this._saveSyncState(),this.eventBus.emit("indexer:reorg",{forkBlock:t,commonAncestor:e,depth:t-e}),await this._syncHistorical()}pause(){this.isPaused=!0,this.state="paused",this.eventBus.emit("indexer:paused",{})}resume(){this.isPaused=!1,this.start(),this.eventBus.emit("indexer:resumed",{})}async resync(t){this.pause(),this.currentBlock=void 0!==t?t-1:this.deployBlock-1,await this.storage.clear(),await this._saveSyncState(),this.eventsIndexed=0,this.resume()}getStatus(){return{state:this.state,currentBlock:this.currentBlock,latestBlock:this.latestBlock,progress:this.latestBlock>0?Math.min(1,(this.currentBlock-this.deployBlock)/(this.latestBlock-this.deployBlock)):0,eventsIndexed:this.eventsIndexed,lastSyncTime:this.lastSyncTime,error:this.error}}async stop(){this.isPaused=!0;for(const{filter:t,listener:e}of this.eventListeners)this.contract.off(t,e);this.eventListeners=[],this.pollTimer&&(clearInterval(this.pollTimer),this.pollTimer=null)}_sleep(t){return new Promise(e=>setTimeout(e,t))}}class jc{constructor(t,e={}){this.queryEngine=t,this.definitions=e,this.entityAPIs={};for(const[t,r]of Object.entries(e))this.entityAPIs[t]=this._createEntityAPI(t,r)}getEntity(t){return this.entityAPIs[t]}getAllEntities(){return this.entityAPIs}_createEntityAPI(t,e){const r=this;return{query:async(n={})=>r._queryEntities(t,e,n),get:async n=>(await r._queryEntities(t,e,{[e.key]:n}))[0]||null,subscribe(n,i){const s=r._getRelevantEventTypes(e);return r.queryEngine.subscribe(s,async()=>{const s=await r._queryEntities(t,e,n);i(s)})},count:async(n={})=>(await r._queryEntities(t,e,n)).length}}async _queryEntities(t,e,r={}){const n=r.status,i={...r};delete i.status;const s=await this.queryEngine.query(e.source,{where:i,limit:1e4}),o=await this.queryEngine.getEventChecker(),a=this._getRelevantEventTypes(e);await o.prefetch(a);const l=[];for(const r of s.events){const i=await this._buildEntity(t,e,r,o);n&&i.status!==n||l.push(i)}return l}async _buildEntity(t,e,r,n){const i={_type:t,_sourceEvent:r,...r.data};if(i[e.key]=r.data[e.key]||r.indexed[e.key],e.status&&(i.status=this._evaluateStatus(i,e.status,n)),e.computed)for(const[t,r]of Object.entries(e.computed))try{i[t]=r(i,n)}catch(e){console.error(`[EntityResolver] Error computing ${t}:`,e),i[t]=null}if(e.relations)for(const[t,r]of Object.entries(e.relations))Object.defineProperty(i,t,{get:()=>this._resolveRelation(i,r),enumerable:!0});return i}_evaluateStatus(t,e,r){for(const[n,i]of Object.entries(e))if("default"!==n)try{if(i(t,r))return n}catch(t){console.error(`[EntityResolver] Error evaluating status ${n}:`,t)}return e.default||"unknown"}async _resolveRelation(t,e){const r=this.entityAPIs[e.entity];if(!r)return null;const n=t[e.foreignKey];return void 0===n?null:"many"===e.type?r.query({[e.foreignKey]:n}):r.get(n)}_getRelevantEventTypes(t){const e=new Set([t.source]);if(t.status)for(const r of Object.values(t.status))if("function"==typeof r){const t=r.toString().match(/events\.has\(['"](\w+)['"]/g)||[];for(const r of t){const t=r.match(/['"](\w+)['"]/)?.[1];t&&e.add(t)}}return Array.from(e)}}class Gc{constructor(t,e){this.queryEngine=t,this.entityResolver=e}async userActivity(t,e={}){const{events:r=[],userFields:n,limit:i=50,offset:s=0}=e,o=t.toLowerCase(),a=[];for(const t of r){const e=await this.queryEngine.query(t,{limit:1e3}),r=n||this._detectAddressFields(e.events[0]);for(const t of e.events){r.some(e=>{const r=t.indexed[e]||t.data[e];return"string"==typeof r&&r.toLowerCase()===o})&&a.push({type:t.type,timestamp:t.timestamp||t.blockNumber,blockNumber:t.blockNumber,transactionHash:t.transactionHash,data:t.data})}}return a.sort((t,e)=>(e.timestamp||e.blockNumber)-(t.timestamp||t.blockNumber)),a.slice(s,s+i)}async refundable(t){const{itemEvent:e,itemKey:r,parentKey:n,cancelEvent:i,claimEvent:s,userField:o,user:a}=t,l=a.toLowerCase(),c=(await this.queryEngine.query(e,{limit:1e4})).events.filter(t=>{const e=t.indexed[o]||t.data[o];return"string"==typeof e&&e.toLowerCase()===l}),h=await this.queryEngine.query(i,{limit:1e4}),u=new Set(h.events.map(t=>t.indexed[n]||t.data[n])),d=await this.queryEngine.query(s,{limit:1e4}),f=new Set(d.events.map(t=>t.indexed[r]||t.data[r]));return c.filter(t=>{const e=t.indexed[r]||t.data[r],i=t.indexed[n]||t.data[n];return u.has(i)&&!f.has(e)})}async leaderboard(t){const{event:e,groupBy:r,aggregate:n,sumField:i,limit:s=10,where:o}=t,a=await this.queryEngine.query(e,{where:o,limit:1e4}),l=new Map;for(const t of a.events){const e=t.indexed[r]||t.data[r];if(void 0===e)continue;const n="string"==typeof e?e.toLowerCase():e;l.has(n)||l.set(n,{key:e,events:[]}),l.get(n).events.push(t)}const c=[];for(const[t,e]of l){let t;"count"===n?t=e.events.length:"sum"===n&&(t=e.events.reduce((t,e)=>{const r=e.indexed[i]||e.data[i],n="string"==typeof r?parseFloat(r):r;return t+(isNaN(n)?0:n)},0)),c.push({key:e.key,value:t})}return c.sort((t,e)=>e.value-t.value),c.slice(0,s).map((t,e)=>({...t,rank:e+1}))}async timeSeries(t){const{event:e,interval:r,aggregate:n,sumField:i,where:s,periods:o=30}=t,a=await this.queryEngine.query(e,{where:s,limit:1e5}),l={hour:36e5,day:864e5,week:6048e5}[r];if(!l)throw new Error(`Invalid interval: ${r}`);const c=Date.now(),h=new Map;for(let t=0;t<o;t++){const e=new Date(c-(t+1)*l).toISOString();h.set(e,[])}for(const t of a.events){const e=t.timestamp?1e3*t.timestamp:c,r=Math.floor((c-e)/l);if(r>=0&&r<o){const e=new Date(c-(r+1)*l).toISOString();h.has(e)&&h.get(e).push(t)}}const u=[];for(const[t,e]of h){let r;"count"===n?r=e.length:"sum"===n&&(r=e.reduce((t,e)=>{const r=e.indexed[i]||e.data[i],n="string"==typeof r?parseFloat(r):r;return t+(isNaN(n)?0:n)},0)),u.push({period:t,value:r})}return u.sort((t,e)=>new Date(t.period)-new Date(e.period)),u}_detectAddressFields(t){if(!t)return[];const e=[],r={...t.indexed,...t.data};for(const[t,n]of Object.entries(r))"string"==typeof n&&n.match(/^0x[a-fA-F0-9]{40}$/)&&e.push(t);return e}}class Hc extends Error{constructor(t,e,r){super(t),this.name="EventIndexerError",this.code=e,this.cause=r}}const Wc={NOT_INITIALIZED:"NOT_INITIALIZED",STORAGE_ERROR:"STORAGE_ERROR",SYNC_ERROR:"SYNC_ERROR",QUERY_ERROR:"QUERY_ERROR",INVALID_CONFIG:"INVALID_CONFIG",PROVIDER_ERROR:"PROVIDER_ERROR",REORG_DETECTED:"REORG_DETECTED"};class Kc{constructor(t,e={}){if(!t)throw new Hc("EventBus is required",Wc.INVALID_CONFIG);this.eventBus=t,this.blockchainService=e.blockchainService,this.storage=null,this.queryEngine=null,this.syncEngine=null,this.entityResolver=null,this.patternsAPI=null,this.contract=null,this.initialized=!1,this.config=null}async initialize(t){this._validateConfig(t),this.config=t;try{const e=this._getProvider(t),r=await e.getNetwork(),n=Number(r.chainId),i=this._extractEventTypes(t.contract.abi);this.storage=function(t){return"memory"===t?.type?new Dc:Uc.isStorageEnabled()?"undefined"!=typeof indexedDB?new Oc:(console.warn("[EventIndexer] IndexedDB not available, falling back to memory storage"),new Dc):(console.log("[EventIndexer] User disabled IndexedDB storage, using memory"),new Dc)}(t.persistence),await this.storage.initialize({dbName:t.persistence?.dbName||`micro-web3-events-${n}`,version:t.persistence?.version||1,eventTypes:i}),this.contract=new Rs(t.contract.address,t.contract.abi,e);const s=t.contract.deployBlock||await this._detectDeployBlock(e);this.queryEngine=new qc(this.storage,this.eventBus),this.syncEngine=new zc(this.storage,this.queryEngine,this.eventBus,t.sync||{}),await this.syncEngine.initialize({provider:e,contract:this.contract,eventTypes:i,deployBlock:s,chainId:n}),t.entities&&(this.entityResolver=new jc(this.queryEngine,t.entities)),this.patternsAPI=new Gc(this.queryEngine,this.entityResolver),this.initialized=!0,this.eventBus.emit("indexer:initialized",{}),await this.syncEngine.start()}catch(t){throw this.eventBus.emit("indexer:error",{code:Wc.STORAGE_ERROR,message:`Initialization failed: ${t.message}`,cause:t,recoverable:!1}),new Hc(`Failed to initialize EventIndexer: ${t.message}`,Wc.STORAGE_ERROR,t)}}_validateConfig(t){if(!t.contract)throw new Hc("contract config is required",Wc.INVALID_CONFIG);if(!t.contract.address)throw new Hc("contract.address is required",Wc.INVALID_CONFIG);if(!t.contract.abi||!Array.isArray(t.contract.abi))throw new Hc("contract.abi is required and must be an array",Wc.INVALID_CONFIG);if(!t.provider&&!this.blockchainService)throw new Hc("Either provider in config or blockchainService in constructor is required",Wc.INVALID_CONFIG)}_getProvider(t){if(t.provider)return t.provider;if(this.blockchainService?.getProvider)return this.blockchainService.getProvider();if(this.blockchainService?.provider)return this.blockchainService.provider;throw new Hc("No provider available",Wc.PROVIDER_ERROR)}_extractEventTypes(t){const e=[];for(const r of t)if("event"===r.type){const t=r.inputs.filter(t=>t.indexed).map(t=>t.name);e.push({name:r.name,inputs:r.inputs,indexedParams:t})}return e}async _detectDeployBlock(t){return console.warn("[EventIndexer] No deployBlock specified, starting from block 0"),0}get events(){return this._checkInitialized(),{query:(t,e)=>this.queryEngine.query(t,e),get:(t,e)=>this.queryEngine.get(t,e),subscribe:(t,e)=>this.queryEngine.subscribe(t,e),count:(t,e)=>this.queryEngine.count(t,e)}}get entities(){return this._checkInitialized(),this.entityResolver?new Proxy({},{get:(t,e)=>this.entityResolver.getEntity(e)}):(console.warn("[EventIndexer] No entities configured"),{})}get patterns(){return this._checkInitialized(),this.patternsAPI}get sync(){return this._checkInitialized(),{getStatus:()=>this.syncEngine.getStatus(),resync:t=>this.syncEngine.resync(t),clear:()=>this.storage.clear(),pause:()=>this.syncEngine.pause(),resume:()=>this.syncEngine.resume()}}_checkInitialized(){if(!this.initialized)throw new Hc("EventIndexer not initialized. Call initialize() first.",Wc.NOT_INITIALIZED)}async destroy(){this.syncEngine&&await this.syncEngine.stop(),this.storage&&await this.storage.close(),this.initialized=!1}static installHook(t){t.prototype.useIndexer?console.warn("[EventIndexer] useIndexer hook already installed"):t.prototype.useIndexer=function(t,e={},r={}){let n=null,i=!0,s=null;const o=()=>{const t={};for(const[r,n]of Object.entries(e))t[r]="function"==typeof n?n():n;return t},a=async()=>{try{const e=o();if(t.query){const r=await t.query(e);n=Array.isArray(r)?r:r.events}else n=[];i=!1,r.onUpdate&&r.onUpdate(n)}catch(t){i=!1,console.error("[useIndexer] Query error:",t),r.onError&&r.onError(t)}};return a(),t.subscribe&&(s=t.subscribe(o(),()=>{a()})),this.registerCleanup&&this.registerCleanup(()=>{s&&s()}),new Proxy([],{get:(t,e)=>"length"===e?n?.length||0:"isLoading"===e?i:e===Symbol.iterator?function*(){n&&(yield*n)}:"string"!=typeof e||isNaN(e)?n&&"function"==typeof n[e]?n[e].bind(n):n?.[e]:n?.[parseInt(e)]})}}}Kc.EventIndexerError=Hc,Kc.ErrorCodes=Wc;class $c extends e.Component{constructor(t){super(t),this.providerMap=t.providerMap,this.walletIcons=t.walletIcons,this.onWalletSelected=t.onWalletSelected,this.state={isVisible:!1}}events(){return{"click .wallet-modal-close":this.hide,"click .wallet-modal-overlay":t=>{t.target===t.currentTarget&&this.hide()},"click .wallet-option":async t=>{const e=t.currentTarget.dataset.wallet;this.onWalletSelected&&await this.onWalletSelected(e),this.hide()}}}show(){this.setState({isVisible:!0})}hide(){this.setState({isVisible:!1})}render(){if(!this.state.isVisible)return'<div class="wallet-modal-container" style="display: none;"></div>';return`\n <div class="wallet-modal-container">\n <div class="wallet-modal-overlay">\n <div class="wallet-modal">\n <div class="wallet-modal-header">\n <h3>Select Your Wallet</h3>\n <button class="wallet-modal-close">&times;</button>\n </div>\n <div class="wallet-options">\n ${Object.keys(this.providerMap).map(t=>`\n <button class="wallet-option" data-wallet="${t}">\n <img src="${this.walletIcons[t]}" alt="${t}">\n <span>${t.charAt(0).toUpperCase()+t.slice(1)}</span>\n </button>\n `).join("")}\n </div>\n </div>\n </div>\n </div>\n `}}class Vc{constructor({eventBus:t}){this.eventBus=t,this.element=null,this.overlay=null,this.isVisible=!1,this.state={storageEnabled:!0,storageUsed:0,storageQuota:0,clearing:!1}}async show(){if(this.isVisible)return;const t=Uc.get(),e=await Uc.getStorageEstimate();this.state={storageEnabled:t.storageEnabled,storageUsed:e.used||0,storageQuota:e.quota||0,clearing:!1},this._createModal(),this.isVisible=!0}hide(){this.isVisible&&(this.overlay&&this.overlay.parentNode&&this.overlay.parentNode.removeChild(this.overlay),this.overlay=null,this.element=null,this.isVisible=!1)}_createModal(){Vc.injectStyles(),this.overlay=document.createElement("div"),this.overlay.className="mw3-settings-overlay",this.overlay.addEventListener("click",t=>{t.target===this.overlay&&this.hide()}),this.element=document.createElement("div"),this.element.className="mw3-settings-modal",this.element.innerHTML=this._render(),this.overlay.appendChild(this.element),document.body.appendChild(this.overlay),this._setupEventListeners()}_render(){const{storageEnabled:t,storageUsed:e,storageQuota:r,clearing:n}=this.state,i=(e/1048576).toFixed(1),s=(r/1048576).toFixed(0);return`\n <div class="mw3-settings-header">\n <h2>Settings</h2>\n <button class="mw3-settings-close" data-action="close">&times;</button>\n </div>\n\n <div class="mw3-settings-content">\n <div class="mw3-settings-section">\n <h3>Data Storage</h3>\n <p class="mw3-settings-description">\n Event data is cached locally to improve performance. You can disable this to save space.\n </p>\n\n <div class="mw3-settings-row">\n <label class="mw3-settings-toggle">\n <input type="checkbox" ${t?"checked":""} data-setting="storageEnabled">\n <span class="mw3-toggle-slider"></span>\n <span class="mw3-toggle-label">Enable local event storage</span>\n </label>\n </div>\n\n <div class="mw3-settings-info">\n <span>Storage used: ${i} MB${s>0?` / ${s} MB`:""}</span>\n </div>\n\n <div class="mw3-settings-row">\n <button class="mw3-settings-btn mw3-settings-btn--danger" data-action="clearData" ${n?"disabled":""}>\n ${n?"Clearing...":"Clear All Cached Data"}\n </button>\n </div>\n\n <p class="mw3-settings-note">\n Disabling storage means event history will need to be re-fetched each session.\n </p>\n </div>\n </div>\n\n <div class="mw3-settings-footer">\n <button class="mw3-settings-btn mw3-settings-btn--primary" data-action="close">Done</button>\n </div>\n `}_setupEventListeners(){this.element.querySelectorAll('[data-action="close"]').forEach(t=>{t.addEventListener("click",()=>this.hide())});const t=this.element.querySelector('[data-setting="storageEnabled"]');t&&t.addEventListener("change",t=>{const e=t.target.checked;Uc.set({storageEnabled:e}),this.state.storageEnabled=e,this.eventBus.emit("settings:storageChanged",{enabled:e})});const e=this.element.querySelector('[data-action="clearData"]');e&&e.addEventListener("click",async()=>{if(!this.state.clearing){this.state.clearing=!0,this._updateContent();try{await Uc.clearAllData();const t=await Uc.getStorageEstimate();this.state.storageUsed=t.used||0,this.state.storageQuota=t.quota||0,this.eventBus.emit("settings:dataCleared",{})}catch(t){console.error("[SettingsModal] Failed to clear data:",t)}this.state.clearing=!1,this._updateContent()}}),this._escHandler=t=>{"Escape"===t.key&&this.hide()},document.addEventListener("keydown",this._escHandler)}_updateContent(){this.element&&(this.element.innerHTML=this._render(),this._setupEventListeners())}static injectStyles(){if(document.getElementById("mw3-settings-styles"))return;const t=document.createElement("style");t.id="mw3-settings-styles",t.textContent="\n .mw3-settings-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.7);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 10000;\n backdrop-filter: blur(4px);\n }\n\n .mw3-settings-modal {\n background: linear-gradient(135deg, #1a1a2e, #16213e);\n border: 1px solid rgba(218, 165, 32, 0.3);\n border-radius: 12px;\n width: 90%;\n max-width: 400px;\n color: #fff;\n font-family: 'Lato', system-ui, sans-serif;\n box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5);\n }\n\n .mw3-settings-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 1rem 1.25rem;\n border-bottom: 1px solid rgba(218, 165, 32, 0.2);\n }\n\n .mw3-settings-header h2 {\n margin: 0;\n font-size: 1.125rem;\n font-weight: 600;\n color: rgba(218, 165, 32, 0.95);\n }\n\n .mw3-settings-close {\n background: none;\n border: none;\n color: rgba(255, 255, 255, 0.6);\n font-size: 1.5rem;\n cursor: pointer;\n padding: 0;\n line-height: 1;\n }\n\n .mw3-settings-close:hover {\n color: #fff;\n }\n\n .mw3-settings-content {\n padding: 1.25rem;\n }\n\n .mw3-settings-section h3 {\n margin: 0 0 0.5rem 0;\n font-size: 0.9rem;\n font-weight: 600;\n color: rgba(255, 255, 255, 0.9);\n }\n\n .mw3-settings-description {\n margin: 0 0 1rem 0;\n font-size: 0.8rem;\n color: rgba(255, 255, 255, 0.6);\n line-height: 1.4;\n }\n\n .mw3-settings-row {\n margin-bottom: 1rem;\n }\n\n .mw3-settings-toggle {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n cursor: pointer;\n }\n\n .mw3-settings-toggle input {\n display: none;\n }\n\n .mw3-toggle-slider {\n width: 44px;\n height: 24px;\n background: rgba(255, 255, 255, 0.2);\n border-radius: 12px;\n position: relative;\n transition: background 0.2s;\n }\n\n .mw3-toggle-slider::after {\n content: '';\n position: absolute;\n top: 2px;\n left: 2px;\n width: 20px;\n height: 20px;\n background: #fff;\n border-radius: 50%;\n transition: transform 0.2s;\n }\n\n .mw3-settings-toggle input:checked + .mw3-toggle-slider {\n background: rgba(218, 165, 32, 0.8);\n }\n\n .mw3-settings-toggle input:checked + .mw3-toggle-slider::after {\n transform: translateX(20px);\n }\n\n .mw3-toggle-label {\n font-size: 0.875rem;\n color: rgba(255, 255, 255, 0.9);\n }\n\n .mw3-settings-info {\n font-size: 0.75rem;\n color: rgba(255, 255, 255, 0.5);\n margin-bottom: 1rem;\n }\n\n .mw3-settings-note {\n font-size: 0.75rem;\n color: rgba(255, 255, 255, 0.4);\n margin: 0;\n font-style: italic;\n }\n\n .mw3-settings-btn {\n padding: 0.625rem 1rem;\n border-radius: 6px;\n font-size: 0.875rem;\n font-weight: 500;\n cursor: pointer;\n border: none;\n transition: all 0.2s;\n }\n\n .mw3-settings-btn--primary {\n background: rgba(218, 165, 32, 0.9);\n color: #1a1a2e;\n }\n\n .mw3-settings-btn--primary:hover {\n background: rgba(218, 165, 32, 1);\n }\n\n .mw3-settings-btn--danger {\n background: rgba(255, 99, 71, 0.2);\n color: rgba(255, 99, 71, 0.9);\n border: 1px solid rgba(255, 99, 71, 0.3);\n }\n\n .mw3-settings-btn--danger:hover {\n background: rgba(255, 99, 71, 0.3);\n }\n\n .mw3-settings-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .mw3-settings-footer {\n padding: 1rem 1.25rem;\n border-top: 1px solid rgba(218, 165, 32, 0.2);\n display: flex;\n justify-content: flex-end;\n }\n ",document.head.appendChild(t)}}class Jc extends e.Component{constructor(t){super(),this.walletService=t.walletService,this.walletModal=null,this.settingsModal=null,this.state={walletConnected:!1,address:null,balance:"0.00",loading:!0,menuOpen:!1,hasExecTokens:!1,isVaultBenefactor:!1}}onMount(){console.log("[FloatingWalletButton] onMount called"),this.initialize(),this.setupDOMEventListeners()}async initialize(){await this.checkWalletConnection(),this.setupEventListeners()}async checkWalletConnection(){console.log("[FloatingWalletButton] checkWalletConnection called");try{this.walletService.isInitialized||await this.walletService.initialize();let t=this.walletService.isConnected(),e=this.walletService.getAddress();if(!t&&void 0!==window.ethereum)try{const r=await window.ethereum.request({method:"eth_accounts"});if(r&&r.length>0){const n=this._detectWalletType();console.log("[FloatingWalletButton] Detected existing connection:",n,r[0]);try{await this.walletService.selectWallet(n),await this.walletService.connect(),t=this.walletService.isConnected(),e=this.walletService.getAddress(),t&&(console.log("[FloatingWalletButton] Auto-connected to existing session:",n),localStorage.setItem("ms2fun_lastWallet",n))}catch(t){console.log("[FloatingWalletButton] Could not auto-connect:",t.message)}}}catch(t){console.log("[FloatingWalletButton] Could not check existing accounts:",t)}t&&e?await this.loadWalletInfo(e):this.setState({loading:!1,walletConnected:!1})}catch(t){console.error("[FloatingWalletButton] Error checking wallet connection:",t),this.setState({loading:!1,walletConnected:!1})}}_detectWalletType(){return void 0===window.ethereum?"metamask":window.ethereum.isRabby?"rabby":window.ethereum.isRainbow?"rainbow":window.phantom?.ethereum?"phantom":"metamask"}async loadWalletInfo(t){try{let e=this.walletService.ethersProvider;e||void 0===window.ethereum||(e=new lc(window.ethereum));let r="0.00";if(e&&t){const n=await e.getBalance(t);r=parseFloat(Ac(n)).toFixed(4)}const n=!1,i=!1;this.setState({walletConnected:!0,address:t,balance:r,loading:!1,hasExecTokens:n,isVaultBenefactor:i})}catch(e){console.error("[FloatingWalletButton] Failed to load wallet info:",e),this.setState({walletConnected:!0,address:t,loading:!1})}}async checkExecTokens(t){return!1}async checkVaultBenefactor(t){return!1}setupEventListeners(){const t=e.eventBus.on("wallet:connected",async t=>{await this.loadWalletInfo(t.address)}),r=e.eventBus.on("wallet:disconnected",()=>{this.setState({walletConnected:!1,address:null,balance:"0.00",menuOpen:!1,hasExecTokens:!1,isVaultBenefactor:!1})}),n=e.eventBus.on("wallet:changed",async t=>{await this.loadWalletInfo(t.address)});this.registerCleanup(()=>{t(),r(),n()})}setupClickOutsideHandler(){const t=t=>{this.element&&!this.element.contains(t.target)&&this.state.menuOpen&&this.setState({menuOpen:!1})};document.addEventListener("click",t),this.registerCleanup(()=>{document.removeEventListener("click",t)})}async handleButtonClick(t){t.preventDefault(),t.stopPropagation(),this.state.walletConnected?this.setState({menuOpen:!this.state.menuOpen}):await this.showWalletModal()}async showWalletModal(){const t={rabby:()=>window.ethereum?.isRabby?window.ethereum:null,rainbow:()=>window.ethereum?.isRainbow?window.ethereum:null,phantom:()=>window.phantom?.ethereum||null,metamask:()=>window.ethereum||null},e={rabby:"/public/wallets/rabby.webp",rainbow:"/public/wallets/rainbow.webp",phantom:"/public/wallets/phantom.webp",metamask:"/public/wallets/MetaMask.webp"};this.walletModal||(this.walletModal=new $c({providerMap:t,walletIcons:e,onWalletSelected:async t=>{await this.handleWalletSelection(t)}}),this.modalRoot||(this.modalRoot=document.createElement("div"),document.body.appendChild(this.modalRoot)),this.walletModal.mount(this.modalRoot)),this.walletModal.show()}async handleWalletSelection(t){try{await this.walletService.selectWallet(t),localStorage.setItem("ms2fun_lastWallet",t),await this.walletService.connect()}catch(t){console.error("[FloatingWalletButton] Error connecting wallet:",t)}}handleMenuItemClick(t){this.setState({menuOpen:!1}),window.router?window.router.navigate(t):window.location.href=t}async handleDisconnect(t){t.preventDefault(),t.stopPropagation();try{await this.walletService.disconnect(),this.setState({menuOpen:!1})}catch(t){console.error("[FloatingWalletButton] Failed to disconnect:",t)}}static get styles(){return"\n /* FloatingWalletButton - Bottom-right floating wallet connection button with power user dropdown */\n\n .floating-wallet-button {\n position: fixed;\n bottom: 2rem;\n right: 2rem;\n z-index: 9999; /* Above all content */\n }\n\n .floating-wallet-button .wallet-btn {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.75rem 1.25rem;\n background: linear-gradient(135deg, rgba(139, 69, 19, 0.9), rgba(101, 67, 33, 0.9));\n border: 2px solid rgba(218, 165, 32, 0.6);\n border-radius: 50px;\n color: #fff;\n font-family: 'Cinzel', serif;\n font-size: 0.9rem;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.3s ease;\n box-shadow: 0 4px 15px rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(10px);\n }\n\n .floating-wallet-button .wallet-btn:hover {\n transform: translateY(-2px);\n box-shadow: 0 6px 20px rgba(218, 165, 32, 0.4);\n border-color: rgba(218, 165, 32, 0.8);\n background: linear-gradient(135deg, rgba(160, 82, 45, 0.95), rgba(120, 80, 50, 0.95));\n }\n\n .floating-wallet-button .wallet-btn:active {\n transform: translateY(0);\n }\n\n /* Wallet icon */\n .floating-wallet-button .wallet-icon {\n font-size: 1.2rem;\n line-height: 1;\n }\n\n /* Wallet text/address */\n .floating-wallet-button .wallet-text,\n .floating-wallet-button .wallet-address {\n font-size: 0.875rem;\n white-space: nowrap;\n }\n\n /* Loading state */\n .floating-wallet-button.loading {\n pointer-events: none;\n }\n\n .floating-wallet-button .wallet-spinner {\n width: 40px;\n height: 40px;\n border: 3px solid rgba(218, 165, 32, 0.3);\n border-top-color: rgba(218, 165, 32, 0.9);\n border-radius: 50%;\n animation: wallet-spin 0.8s linear infinite;\n }\n\n @keyframes wallet-spin {\n to { transform: rotate(360deg); }\n }\n\n /* Dropdown menu */\n .wallet-dropdown-menu {\n position: absolute;\n bottom: calc(100% + 0.5rem);\n right: 0;\n min-width: 240px;\n background: linear-gradient(135deg, rgba(139, 69, 19, 0.98), rgba(101, 67, 33, 0.98));\n border: 2px solid rgba(218, 165, 32, 0.6);\n border-radius: 12px;\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.6);\n backdrop-filter: blur(15px);\n overflow: hidden;\n animation: dropdown-slide-up 0.2s ease-out;\n }\n\n @keyframes dropdown-slide-up {\n from {\n opacity: 0;\n transform: translateY(10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n\n /* Dropdown header */\n .wallet-dropdown-menu .dropdown-header {\n padding: 1rem;\n background: rgba(0, 0, 0, 0.3);\n border-bottom: 1px solid rgba(218, 165, 32, 0.3);\n }\n\n .wallet-dropdown-menu .dropdown-address {\n font-family: 'Cinzel', serif;\n font-size: 0.875rem;\n font-weight: 600;\n color: rgba(218, 165, 32, 0.95);\n margin-bottom: 0.25rem;\n }\n\n .wallet-dropdown-menu .dropdown-balance {\n font-family: 'Lato', sans-serif;\n font-size: 0.75rem;\n color: rgba(255, 255, 255, 0.7);\n }\n\n /* Dropdown divider */\n .wallet-dropdown-menu .dropdown-divider {\n height: 1px;\n background: linear-gradient(90deg,\n transparent,\n rgba(218, 165, 32, 0.3) 50%,\n transparent\n );\n margin: 0;\n }\n\n /* Dropdown items */\n .wallet-dropdown-menu .dropdown-items {\n padding: 0.5rem;\n }\n\n .wallet-dropdown-menu .dropdown-item {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n width: 100%;\n padding: 0.75rem 1rem;\n background: transparent;\n border: none;\n border-radius: 8px;\n color: rgba(255, 255, 255, 0.9);\n font-family: 'Lato', sans-serif;\n font-size: 0.875rem;\n text-align: left;\n cursor: pointer;\n transition: all 0.2s ease;\n }\n\n .wallet-dropdown-menu .dropdown-item:hover {\n background: rgba(218, 165, 32, 0.15);\n color: #fff;\n }\n\n .wallet-dropdown-menu .dropdown-item:active {\n background: rgba(218, 165, 32, 0.25);\n }\n\n .wallet-dropdown-menu .dropdown-item .item-icon {\n font-size: 1.125rem;\n line-height: 1;\n opacity: 0.9;\n }\n\n .wallet-dropdown-menu .dropdown-item .item-label {\n flex: 1;\n }\n\n /* Disconnect button special styling */\n .wallet-dropdown-menu .dropdown-item.disconnect {\n color: rgba(255, 99, 71, 0.9);\n }\n\n .wallet-dropdown-menu .dropdown-item.disconnect:hover {\n background: rgba(255, 99, 71, 0.15);\n color: rgba(255, 99, 71, 1);\n }\n\n /* Responsive adjustments */\n @media (max-width: 768px) {\n .floating-wallet-button {\n bottom: 1rem;\n right: 1rem;\n }\n\n .floating-wallet-button .wallet-btn {\n padding: 0.625rem 1rem;\n font-size: 0.8rem;\n }\n\n .wallet-dropdown-menu {\n min-width: 200px;\n right: 0;\n }\n\n .wallet-dropdown-menu .dropdown-item {\n padding: 0.625rem 0.875rem;\n font-size: 0.8rem;\n }\n }\n\n /* Small screens - even more compact */\n @media (max-width: 480px) {\n .floating-wallet-button {\n bottom: 0.75rem;\n right: 0.75rem;\n }\n\n .floating-wallet-button .wallet-btn {\n padding: 0.5rem 0.875rem;\n font-size: 0.75rem;\n }\n\n .floating-wallet-button .wallet-icon {\n font-size: 1rem;\n }\n\n .wallet-dropdown-menu {\n min-width: 180px;\n }\n }\n\n /* Ensure menu appears above button when open */\n .floating-wallet-button.menu-open .wallet-btn {\n border-color: rgba(218, 165, 32, 0.9);\n background: linear-gradient(135deg, rgba(160, 82, 45, 0.95), rgba(120, 80, 50, 0.95));\n }\n "}render(){if(console.log("[FloatingWalletButton] render called, loading:",this.state.loading,"walletConnected:",this.state.walletConnected),this.state.loading)return'\n <div class="floating-wallet-button loading">\n <div class="wallet-spinner"></div>\n </div>\n ';const{walletConnected:t,address:e,balance:r,menuOpen:n,hasExecTokens:i,isVaultBenefactor:s}=this.state;if(!t)return'\n <div class="floating-wallet-button disconnected" data-ref="wallet-button">\n <button class="wallet-btn" data-ref="connect-btn">\n <span class="wallet-icon">🦊</span>\n <span class="wallet-text">Connect</span>\n </button>\n </div>\n ';const o=`${e.slice(0,6)}...${e.slice(-4)}`;return`\n <div class="floating-wallet-button connected ${n?"menu-open":""}" data-ref="wallet-button">\n <button class="wallet-btn" data-ref="wallet-btn" title="${this.escapeHtml(e)}\nBalance: ${r} ETH">\n <span class="wallet-icon">🦊</span>\n <span class="wallet-address">${this.escapeHtml(o)}</span>\n </button>\n\n ${n?this.renderDropdownMenu(e,r,i,s):""}\n </div>\n `}renderDropdownMenu(t,e,r,n){const i=`${t.slice(0,6)}...${t.slice(-4)}`;return`\n <div class="wallet-dropdown-menu" data-ref="dropdown-menu">\n <div class="dropdown-header">\n <div class="dropdown-address">${this.escapeHtml(i)}</div>\n <div class="dropdown-balance">${e} ETH</div>\n </div>\n\n <div class="dropdown-divider"></div>\n\n <div class="dropdown-items">\n <button class="dropdown-item" data-route="/portfolio" data-ref="menu-item">\n <span class="item-icon">📊</span>\n <span class="item-label">Portfolio</span>\n </button>\n\n ${r?'\n <button class="dropdown-item" data-route="/governance" data-ref="menu-item">\n <span class="item-icon">🗳️</span>\n <span class="item-label">Governance</span>\n </button>\n ':""}\n\n <button class="dropdown-item" data-route="/staking" data-ref="menu-item">\n <span class="item-icon">🎯</span>\n <span class="item-label">Staking</span>\n </button>\n\n ${n?'\n <button class="dropdown-item" data-route="/portfolio?filter=vaults" data-ref="menu-item">\n <span class="item-icon">💰</span>\n <span class="item-label">Vault Positions</span>\n </button>\n ':""}\n </div>\n\n <div class="dropdown-divider"></div>\n\n <div class="dropdown-items">\n <button class="dropdown-item" data-action="settings" data-ref="menu-item">\n <span class="item-icon">⚙️</span>\n <span class="item-label">Settings</span>\n </button>\n\n <button class="dropdown-item disconnect" data-ref="disconnect-btn">\n <span class="item-icon">🔌</span>\n <span class="item-label">Disconnect</span>\n </button>\n </div>\n </div>\n `}setupDOMEventListeners(){if(console.log("[FloatingWalletButton] setupDOMEventListeners called, element:",this.element),!this.element)return;const t=this.element.querySelector(".wallet-btn");console.log("[FloatingWalletButton] mainBtn found:",t),t&&t.addEventListener("click",t=>this.handleButtonClick(t));Array.from(this.element.querySelectorAll(".dropdown-item[data-route], .dropdown-item[data-action]")).forEach(t=>{t.addEventListener("click",e=>{e.preventDefault(),e.stopPropagation();const r=t.getAttribute("data-route"),n=t.getAttribute("data-action");r?this.handleMenuItemClick(r):"settings"===n&&(this.setState({menuOpen:!1}),this.openSettings())})});const e=this.element.querySelector(".dropdown-item.disconnect");e&&e.addEventListener("click",t=>this.handleDisconnect(t))}onStateUpdate(t,e){t.menuOpen!==e.menuOpen&&this.setTimeout(()=>{this.setupDOMEventListeners()},0)}openSettings(){this.settingsModal||(this.settingsModal=new Vc({eventBus:e.eventBus})),this.settingsModal.show()}onUnmount(){this.walletModal&&(this.walletModal.hide(),this.walletModal=null),this.settingsModal&&(this.settingsModal.hide(),this.settingsModal=null)}escapeHtml(t){if(!t)return"";const e=document.createElement("div");return e.textContent=t,e.innerHTML}}class Qc extends $c{events(){return{..."function"==typeof super.events?super.events():{},"click .wallet-option":async t=>{const e=t?.target?.closest?.(".wallet-option"),r=e?.dataset?.wallet;r&&(this.onWalletSelected&&await this.onWalletSelected(r),this.hide())}}}}class Yc extends e.Component{constructor(t={}){super(),this.props=t,this.setState({gatewayIndex:0,isLoading:!0,hasError:!1,currentSrc:null}),this.handleImageLoad=this.handleImageLoad.bind(this),this.handleImageError=this.handleImageError.bind(this)}getCurrentUrl(){const{src:t}=this.props;return t?Pc(t)?Bc(t,this.state.gatewayIndex):t:null}handleImageLoad(t){this.setState({isLoading:!1,hasError:!1}),this.props.onLoad&&this.props.onLoad(t)}handleImageError(t){const e=Mc(),{src:r}=this.props;if(!Pc(r)||this.state.gatewayIndex>=e.length-1)return this.setState({isLoading:!1,hasError:!0}),console.error("[IpfsImage] Failed to load image:",r,{triedGateways:this.state.gatewayIndex+1,totalGateways:e.length}),void(this.props.onError&&this.props.onError(t));const n=this.state.gatewayIndex+1;this.setState({gatewayIndex:n});const i=this.element?.querySelector("img");if(i){const t=Bc(r,n);t&&(i.src=t)}}render(){const{src:t,alt:e="",className:r="",style:n={},loading:i="lazy",placeholder:s,errorPlaceholder:o}=this.props,{isLoading:a,hasError:l}=this.state;if(!t)return'<div class="ipfs-image-empty"></div>';const c=this.getCurrentUrl();return l?o||`\n <div class="ipfs-image-error ${r}" style="${this.styleToString(n)}">\n <div class="ipfs-image-error-icon">⚠️</div>\n <div class="ipfs-image-error-text">IPFS image unavailable</div>\n </div>\n `:`\n <div class="ipfs-image-container ${r}" style="${this.styleToString(n)}">\n ${a&&s?s:""}\n <img \n src="${this.escapeHtml(c||"")}" \n alt="${this.escapeHtml(e)}" \n loading="${i}"\n class="ipfs-image ${a?"ipfs-image-loading":"ipfs-image-loaded"}"\n style="${a?"opacity: 0;":"opacity: 1; transition: opacity 0.3s;"}"\n />\n </div>\n `}mount(t){super.mount(t);const e=this.element?.querySelector("img");e&&(e.addEventListener("load",this.handleImageLoad),e.addEventListener("error",this.handleImageError),this.registerCleanup(()=>{e.removeEventListener("load",this.handleImageLoad),e.removeEventListener("error",this.handleImageError)}))}styleToString(t){return t&&"object"==typeof t?Object.entries(t).map(([t,e])=>`${t.replace(/([A-Z])/g,"-$1").toLowerCase()}: ${e};`).join(" "):""}}Yc.styles="\n .ipfs-image-container {\n position: relative;\n display: inline-block;\n width: 100%;\n height: 100%;\n }\n \n .ipfs-image {\n display: block;\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n \n .ipfs-image-loading {\n opacity: 0;\n }\n \n .ipfs-image-loaded {\n opacity: 1;\n transition: opacity 0.3s ease-in;\n }\n \n .ipfs-image-error {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n min-height: 100px;\n background-color: #f5f5f5;\n color: #666;\n padding: 1rem;\n text-align: center;\n }\n \n .ipfs-image-error-icon {\n font-size: 2rem;\n margin-bottom: 0.5rem;\n }\n \n .ipfs-image-error-text {\n font-size: 0.875rem;\n }\n \n .ipfs-image-empty {\n display: block;\n width: 100%;\n height: 100%;\n background-color: transparent;\n }\n \n /* Dark mode support */\n html[data-theme='dark'] .ipfs-image-error {\n background-color: #2a2a2a;\n color: #aaa;\n }\n";class Xc extends e.Component{constructor(t){super(t),this.eventBus=t.eventBus,this.state={nftMintingEnabled:t.nftMintingEnabled||!1,message:t.message||"",isValid:void 0===t.isValid||t.isValid,nftBalance:t.nftBalance||0,swapDirection:t.swapDirection||"buy",lastValidationState:!0,isPhase2:null===t.isPhase2?null:t.isPhase2},this.handleMessageInput=this.handleMessageInput.bind(this),this.handleNFTToggle=this.handleNFTToggle.bind(this),this.handleStoreUpdate=this.handleStoreUpdate.bind(this),this.updateTimer=null}onMount(){this.contractDataUnsubscribe=this.eventBus.on("contractData:updated",t=>{this.updateProps({isPhase2:t.liquidityPool&&"0x0000000000000000000000000000000000000000"!==t.liquidityPool})}),this.addEventListeners(),this.updateElements()}onUnmount(){this.contractDataUnsubscribe&&this.contractDataUnsubscribe(),this.removeEventListeners()}updateProps(t){const e={...this.state,...t},r=this.state.isPhase2!==e.isPhase2||this.state.swapDirection!==e.swapDirection||this.state.nftBalance!==e.nftBalance;this.setState(e),r?(this.validateTransaction(),this.update()):this.updateElements()}addEventListeners(){const t=this.element.querySelector("#messageInput"),e=this.element.querySelector("#nftToggle");t&&(this._messageInput=t,t.addEventListener("input",this.handleMessageInput)),e&&(this._nftToggle=e,e.addEventListener("change",this.handleNFTToggle))}removeEventListeners(){this._messageInput&&this._messageInput.removeEventListener("input",this.handleMessageInput),this._nftToggle&&this._nftToggle.removeEventListener("change",this.handleNFTToggle)}validateTransaction(){const t=this.state.message.length<=140,e=!this.state.nftMintingEnabled||this.state.nftBalance<10,r=t&&e;this.state.lastValidationState!==r&&(this.state.lastValidationState=r,this.state.isValid=r,this.eventBus.emit("transactionValidation",{isValid:r,errors:this.getValidationErrors()}))}getValidationErrors(){const t=[];return this.state.message.length>140&&t.push("Message must be 140 characters or less"),this.state.nftMintingEnabled&&this.state.nftBalance>=10&&t.push("Cannot mint more than 10 NFTs"),t}updateElements(){const t=this.element.querySelector("#messageInput"),e=this.element.querySelector("#nftToggle");t&&!t.matches(":focus")&&(t.value=this.state.message),e&&(e.checked=this.state.nftMintingEnabled),this.removeEventListeners(),this.addEventListeners();const r=this.element.querySelector(".character-count");r&&(r.textContent=`${this.state.message.length}/140`,r.className="character-count "+(this.state.message.length>140?"error":""));const n=this.element.querySelector(".validation-status");n&&(n.className="validation-status "+(this.state.isValid?"valid":"invalid"),n.innerHTML=this.getValidationErrors().map(t=>`<p class="error">${t}</p>`).join(""))}handleMessageInput(t){const e=t.target.value||"";this.state={...this.state,message:e},this.updateElements(),this.emitStateUpdate()}handleNFTToggle(t){const e=t.target.checked;this.state={...this.state,nftMintingEnabled:e},this.updateElements(),this.emitStateUpdate()}emitStateUpdate(){const t={message:this.state.message,nftMintingEnabled:this.state.nftMintingEnabled};this.eventBus.emit("transactionOptions:update",t)}checkPhase2Status(){const{isPhase2:t}=this.state;null!==t&&this.state.isPhase2!==t&&this.setState({isPhase2:t})}template(){const{nftMintingEnabled:t,message:e,isValid:r,isPhase2:n,swapDirection:i}=this.state;return null===n||n?"":`\n <div class="transaction-options">\n <div class="option-group ${"sell"===i?"hidden":""}">\n <label class="nft-toggle">\n <input type="checkbox" \n ${t?"checked":""} \n id="nftToggle">\n Mint NFT with transaction\n </label>\n </div>\n \n <div class="option-group">\n <label for="messageInput">Transaction Message</label>\n <textarea id="messageInput" \n maxlength="140" \n placeholder="Enter optional message..."\n >${e}</textarea>\n <span class="character-count ${e.length>140?"error":""}">\n ${e.length}/140\n </span>\n </div>\n\n <div class="validation-status ${r?"valid":"invalid"}">\n ${this.getValidationErrors().map(t=>`<p class="error">${t}</p>`).join("")}\n </div>\n </div>\n `}render(){return this.template()}}class Zc extends e.Component{constructor(t){super(t),this.state={messages:[]}}show(t){const{title:e="",message:r="",type:n="info",duration:i=5e3}=t,s=Date.now()+Math.random(),o={id:s,title:e,message:r,type:n};this.setState({messages:[...this.state.messages,o]}),i>0&&setTimeout(()=>this.close(s),i)}close(t){const e=this.state.messages.filter(e=>e.id!==t);this.setState({messages:e})}error(t,e="Error"){this.show({title:e,message:t,type:"error"})}success(t,e="Success"){this.show({title:e,message:t,type:"success"})}warning(t,e="Warning"){this.show({title:e,message:t,type:"warning"})}info(t,e="Info"){this.show({title:e,message:t,type:"info"})}render(){return`\n <div id="message-popup-container">\n ${this.state.messages.map(t=>`\n <div class="message-popup ${t.type}" data-id="${t.id}">\n <div class="message-content">\n ${t.title?`<div class="message-title">${t.title}</div>`:""}\n <div class="message-text">${t.message}</div>\n </div>\n <button class="close-button" data-id="${t.id}">&times;</button>\n </div>\n `).join("")}\n </div>\n `}events(){return{"click .close-button":t=>{const e=parseFloat(t.target.dataset.id);this.close(e)}}}static get styles(){return"\n #message-popup-container {\n position: fixed;\n top: 20px;\n right: 20px;\n z-index: 10000;\n display: flex;\n flex-direction: column;\n gap: 10px;\n }\n\n .message-popup {\n background: #ffffff;\n border-radius: 8px;\n padding: 15px 20px;\n min-width: 300px;\n max-width: 400px;\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n animation: slideIn 0.3s ease;\n border-left: 4px solid #2196F3;\n }\n\n .message-popup.error {\n border-left-color: #f44336;\n }\n\n .message-popup.success {\n border-left-color: #4CAF50;\n }\n\n .message-popup.warning {\n border-left-color: #ff9800;\n }\n\n .message-content {\n flex-grow: 1;\n margin-right: 10px;\n }\n\n .message-title {\n font-weight: bold;\n margin-bottom: 5px;\n }\n\n .message-text {\n font-size: 14px;\n color: #666;\n }\n\n .close-button {\n background: none;\n border: none;\n color: #999;\n cursor: pointer;\n font-size: 20px;\n padding: 0;\n line-height: 1;\n }\n\n .close-button:hover {\n color: #666;\n }\n\n @keyframes slideIn {\n from {\n transform: translateX(100%);\n opacity: 0;\n }\n to {\n transform: translateX(0);\n opacity: 1;\n }\n }\n\n @keyframes fadeOut {\n from {\n transform: translateX(0);\n opacity: 1;\n }\n to {\n transform: translateX(100%);\n opacity: 0;\n }\n }\n "}}const th={PRICE:"price:updated",STATUS:"price:status"};class eh extends e.Component{constructor(t){super(t),this.eventBus=t.eventBus,this.state={price:t.price||0,lastUpdated:t.lastUpdated||null,loading:void 0===t.loading||t.loading,error:t.error||null},this.handlePriceUpdate=this.handlePriceUpdate.bind(this),this.handleStatusUpdate=this.handleStatusUpdate.bind(this)}onMount(){this.eventBus&&(this.eventBus.on(th.PRICE,this.handlePriceUpdate),this.eventBus.on(th.STATUS,this.handleStatusUpdate))}onUnmount(){this.eventBus&&(this.eventBus.off(th.PRICE,this.handlePriceUpdate),this.eventBus.off(th.STATUS,this.handleStatusUpdate))}updateProps(t){this.setState({price:void 0!==t.price?t.price:this.state.price,lastUpdated:void 0!==t.lastUpdated?t.lastUpdated:this.state.lastUpdated,loading:void 0!==t.loading?t.loading:this.state.loading,error:void 0!==t.error?t.error:this.state.error})}setState(t){super.setState(t)}handlePriceUpdate({price:t}){this.setState({price:t||0,loading:!1})}handleStatusUpdate({loading:t,error:e}){this.setState({loading:t,error:e})}template(){const{price:t,lastUpdated:e,loading:r,error:n}=this.state;return r?'\n <div class="price-display loading marble-bg">\n <div class="price-header">\n <h3>Cult Exec </h3>\n <h3>Bonding Curve Presale</h3>\n </div>\n <div class="price-content">\n <div class="loading-indicator">Loading...</div>\n </div>\n </div>':n?`\n <div class="price-display error marble-bg">\n <div class="price-header">\n <h3>Cult Exec </h3>\n <h3>Bonding Curve Presale</h3>\n </div>\n <div class="price-content">\n <div class="error-message">Error: ${n}</div>\n </div>\n </div>`:`\n <div class="price-display marble-bg">\n <div class="price-header">\n <h3>Cult Exec </h3>\n <h3>Bonding Curve Presale</h3>\n </div>\n \n <div class="price-content">\n <div class="price-value">\n <span class="amount">${Number(t).toFixed(8)}</span>\n <span class="currency">ETH / Cult Exec</span>\n </div>\n </div>\n </div>\n `}render(){return this.template()}static get styles(){return"\n .price-display {\n background: #1a1a1a;\n border-radius: 8px;\n padding: 16px;\n margin-bottom: 16px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\n }\n\n .price-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 12px;\n }\n\n .price-header h3 {\n margin: 0;\n color: var(--price-display-header-color, var(--color-text-primary, #333));\n font-size: 16px;\n }\n\n .last-updated {\n color: #666;\n font-size: 12px;\n }\n\n .price-content {\n display: flex;\n justify-content: center;\n align-items: center;\n min-height: 48px;\n }\n\n .price-value {\n font-size: 24px;\n font-weight: bold;\n color: #fff;\n }\n\n .amount {\n margin-right: 8px;\n }\n\n .currency {\n color: var(--price-display-currency-color, var(--color-accent, #764ba2));\n }\n\n .loading-indicator {\n color: #666;\n font-style: italic;\n }\n\n .error-message {\n color: #ff4444;\n font-size: 14px;\n }\n\n /* Loading state animation */\n .price-display.loading .price-content {\n opacity: 0.7;\n }\n\n .price-display.loading .loading-indicator:after {\n content: '';\n animation: loading-dots 1.5s infinite;\n }\n\n @keyframes loading-dots {\n 0% { content: '.'; }\n 33% { content: '..'; }\n 66% { content: '...'; }\n }\n\n /* Error state styles */\n .price-display.error {\n border: 1px solid #ff4444;\n }\n\n /* Mobile responsive styles */\n @media (max-width: 768px) {\n .price-display {\n margin: 8px;\n padding: 12px;\n }\n\n .price-header {\n flex-direction: column;\n align-items: flex-start;\n }\n\n .last-updated {\n margin-top: 4px;\n }\n\n .price-value {\n font-size: 20px;\n }\n }\n "}}class rh extends e.Component{constructor(t){super(t),console.log("[DEBUG] ApproveModal constructor called with amount:",t.amount,"and address:",t.userAddress),this.blockchainService=t.blockchainService,this.eventBus=t.eventBus,this.amount=t.amount,this.userAddress=t.userAddress,this.messagePopup=new Zc("approve-status"),this.handleApprove=this.handleApprove.bind(this),this.handleClose=this.handleClose.bind(this),this.isClosing=!1,this.modalId=Math.random().toString(36).substring(2,9),console.log(`[DEBUG] ApproveModal instance created with ID: ${this.modalId}`)}onMount(){console.log(`[DEBUG-${this.modalId}] ApproveModal mounted to DOM`),super.onMount(),this.setupEventListeners()}setupEventListeners(){const t=this.element.querySelector(".approve-button"),e=this.element.querySelector(".approve-modal-close"),r=this.element.querySelector(".approve-modal-overlay");t?.addEventListener("click",this.handleApprove),e?.addEventListener("click",this.handleClose),r?.addEventListener("click",t=>{t.target===r&&this.handleClose()})}async handleApprove(){console.log(`[DEBUG-${this.modalId}] Approve button clicked`);try{const t=this.element.querySelector(".approve-button");if(!t)return void console.error(`[DEBUG-${this.modalId}] Approve button not found in the modal`);console.log(`[DEBUG-${this.modalId}] Approve button found, disabling and updating text`);const e=this.element.querySelector(".status-message")||document.createElement("div");if(!e.classList.contains("status-message")){e.className="status-message";const t=this.element.querySelector(".approve-modal-content");t?(console.log(`[DEBUG-${this.modalId}] Adding status message to modal content`),t.appendChild(e)):console.error(`[DEBUG-${this.modalId}] Modal content not found`)}if(e.textContent="Waiting for wallet confirmation...",e.className="status-message pending",t.disabled=!0,t.textContent="Approving...",this.userAddress)console.log(`[DEBUG-${this.modalId}] Using provided user address: ${this.userAddress}`);else{if(console.log(`[DEBUG-${this.modalId}] No user address provided, attempting to get from signer`),!this.blockchainService||!this.blockchainService.signer)throw console.error(`[DEBUG-${this.modalId}] No blockchain service or signer available`),new Error("No wallet connected. Please connect your wallet first.");try{this.userAddress=await this.blockchainService.signer.getAddress(),console.log(`[DEBUG-${this.modalId}] Retrieved user address for approval: ${this.userAddress}`)}catch(t){throw console.error(`[DEBUG-${this.modalId}] Failed to get user address for approval:`,t),new Error("Could not get wallet address for approval. Please reconnect your wallet.")}}console.log(`[DEBUG-${this.modalId}] Parsing amount: ${this.amount}`);const r=this.blockchainService.parseExec(this.amount);console.log(`[DEBUG-${this.modalId}] Parsed amount: ${r}`);const n=this.blockchainService.swapRouter?.address||this.blockchainService.swapRouter;console.log(`[DEBUG-${this.modalId}] Router address for approval: ${n}`),console.log(`[DEBUG-${this.modalId}] Approving ${this.amount} EXEC tokens from ${this.userAddress} to ${n}`),e.textContent="Transaction submitted, waiting for confirmation...",console.log(`[DEBUG-${this.modalId}] Calling blockchainService.setApproval`);try{const t=await this.blockchainService.setApproval(n,r);console.log(`[DEBUG-${this.modalId}] Approval transaction result:`,t)}catch(t){throw console.error(`[DEBUG-${this.modalId}] Transaction error:`,t),t}e.textContent="Approval successful!",e.className="status-message success",console.log(`[DEBUG-${this.modalId}] Approval successful, waiting before emitting event`),await new Promise(t=>setTimeout(t,1500)),console.log(`[DEBUG-${this.modalId}] Emitting approve:complete event`),this.eventBus.emit("approve:complete"),console.log(`[DEBUG-${this.modalId}] Calling handleClose after successful approval`),this.handleClose()}catch(t){console.error(`[DEBUG-${this.modalId}] Approval failed:`,t);let e=t.message;if(e.includes("Contract call")){const t=e.split(": ");e=t[t.length-1]}const r=this.element.querySelector(".status-message")||document.createElement("div");if(!r.classList.contains("status-message")){r.className="status-message";const t=this.element.querySelector(".approve-modal-content");t&&t.appendChild(r)}r.textContent=`Error: ${e}`,r.className="status-message error",this.messagePopup.error(`Approval Failed: ${e}`,"Transaction Failed");const n=this.element.querySelector(".approve-button");n&&(n.disabled=!1,n.textContent="Approve")}}handleClose(){if(console.log(`[DEBUG-${this.modalId}] handleClose called`),this.isClosing)console.log(`[DEBUG-${this.modalId}] Already closing, skipping`);else{this.isClosing=!0,console.log(`[DEBUG-${this.modalId}] Closing approval modal`);try{this.element&&this.element.parentNode?(console.log(`[DEBUG-${this.modalId}] Removing modal from DOM`),this.element.parentNode.removeChild(this.element)):console.warn(`[DEBUG-${this.modalId}] Modal element or parent not found during close`),console.log(`[DEBUG-${this.modalId}] Emitting approveModal:closed event`),this.eventBus.emit("approveModal:closed"),console.log(`[DEBUG-${this.modalId}] Calling dispose method`),this.dispose()}catch(t){console.error(`[DEBUG-${this.modalId}] Error closing approval modal:`,t)}}}dispose(){console.log(`[DEBUG-${this.modalId}] Disposing component resources`);const t=this.element?.querySelector(".approve-button"),e=this.element?.querySelector(".approve-modal-close");this.element?.querySelector(".approve-modal-overlay"),t?.removeEventListener("click",this.handleApprove),e?.removeEventListener("click",this.handleClose),this.isClosing=!0,this.blockchainService=null,this.userAddress=null,console.log(`[DEBUG-${this.modalId}] Component disposed`)}show(){console.log(`[DEBUG-${this.modalId}] Show method called`),this.isClosing=!1,this.element.style.display="block",console.log(`[DEBUG-${this.modalId}] Modal set to display:block`)}hide(){console.log(`[DEBUG-${this.modalId}] Hide method called`),this.element.style.display="none"}events(){return console.log(`[DEBUG-${this.modalId}] Setting up event handlers`),{"click .approve-button":t=>{console.log(`[DEBUG-${this.modalId}] Approve button clicked, calling handleApprove`),this.handleApprove()},"click .approve-modal-close":t=>{console.log(`[DEBUG-${this.modalId}] Close button clicked, calling handleClose`),this.handleClose()},"click .approve-modal-overlay":t=>{console.log(`[DEBUG-${this.modalId}] Overlay clicked`,t.target,t.currentTarget),t.target===t.currentTarget&&(console.log(`[DEBUG-${this.modalId}] Overlay direct click detected, calling handleClose`),this.handleClose())}}}render(){const t=this.blockchainService.swapRouter?.address||this.blockchainService.swapRouter;return`\n <div class="approve-modal-overlay">\n <div class="approve-modal">\n <button class="approve-modal-close">&times;</button>\n <div class="approve-modal-content">\n <h2>Approve Router</h2>\n <p>Before selling your $EXEC tokens, you need to approve the router contract to spend them.</p>\n \n <div class="approve-details">\n <div class="approve-info">\n <span class="label">Amount to Approve:</span>\n <span class="value">${parseInt(this.amount).toLocaleString()} $EXEC</span>\n </div>\n <div class="approve-info">\n <span class="label">Router Address:</span>\n <span class="value">${t}</span>\n </div>\n </div>\n\n <button class="approve-button">\n Approve\n </button>\n </div>\n </div>\n </div>\n `}static get styles(){return"\n .approve-modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(0, 0, 0, 0.75);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 1000;\n }\n\n .approve-modal {\n background-color: #111;\n border-radius: 8px;\n padding: 24px;\n position: relative;\n width: 90%;\n max-width: 500px;\n }\n\n .approve-modal-close {\n position: absolute;\n top: 16px;\n right: 16px;\n background: none;\n border: none;\n font-size: 24px;\n cursor: pointer;\n color: #fff;\n }\n\n .approve-modal h2 {\n margin: 0 0 16px 0;\n color: #fff;\n }\n\n .approve-details {\n background-color: #1a1a1a;\n border-radius: 8px;\n padding: 16px;\n margin: 16px 0;\n }\n\n .approve-info {\n display: flex;\n justify-content: space-between;\n margin-bottom: 8px;\n word-break: break-all;\n }\n\n .approve-info:last-child {\n margin-bottom: 0;\n }\n\n .approve-info .label {\n color: #888;\n margin-right: 16px;\n }\n\n .approve-info .value {\n color: #fff;\n text-align: right;\n }\n\n .approve-button {\n width: 100%;\n padding: 12px;\n background-color: #007bff;\n color: white;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n font-size: 16px;\n margin-top: 16px;\n }\n\n .approve-button:disabled {\n background-color: #555;\n cursor: not-allowed;\n }\n\n .approve-button:hover:not(:disabled) {\n background-color: #0056b3;\n }\n \n .status-message {\n margin-top: 12px;\n padding: 10px;\n border-radius: 4px;\n text-align: center;\n font-size: 14px;\n }\n \n .status-message.pending {\n background-color: #2c3e50;\n color: #f1c40f;\n }\n \n .status-message.success {\n background-color: #27ae60;\n color: white;\n }\n \n .status-message.error {\n background-color: #c0392b;\n color: white;\n }\n "}}class nh extends e.Component{constructor(t={}){super(t),this.props={balances:{eth:"0",exec:"0"},...t}}updateProps(t){this.props={...this.props,...t},this.updateSelectively(t)}updateSelectively(t){if(!this.element)return;if(void 0!==t.direction||void 0!==t.freeMint||void 0!==t.balances){const{balances:t,direction:e,freeMint:r}=this.props,n=parseFloat(t.eth||0).toFixed(6),i=parseInt(t.exec||0).toLocaleString(),s="sell"===e&&r?`Available: ${(parseInt(t.exec||0)-1e6).toLocaleString()}`:`Balance: ${i}`;this.element.querySelectorAll(".token-balance").forEach((t,r)=>{const o=0===r;t.textContent="buy"===e?o?`Balance: ${n}`:`Balance: ${i}`:o?s:`Balance: ${n}`});this.element.querySelectorAll(".token-symbol").forEach((t,r)=>{const n=0===r;t.textContent="buy"===e?n?"ETH":"$EXEC":n?"$EXEC":"ETH"})}const e=this.element.querySelector(".top-input"),r=this.element.querySelector(".bottom-input");if(void 0!==t.calculatingAmount||void 0!==t.execAmount||void 0!==t.ethAmount){const{direction:t,ethAmount:n,execAmount:i,calculatingAmount:s}=this.props;e&&!e.matches(":focus")&&(e.value="buy"===t?n:i),r&&!r.matches(":focus")&&(r.value="buy"===t?s?"Loading...":i:s?"Loading...":n)}}handleInput(t,e){const r=t.target.value;this.props.onInput&&this.props.onInput(e,r)}events(){return{"input .top-input":t=>this.handleInput(t,"top"),"input .bottom-input":t=>this.handleInput(t,"bottom")}}render(){const{direction:t,ethAmount:e,execAmount:r,calculatingAmount:n,freeMint:i,balances:s}=this.props,o=parseFloat(s.eth||0).toFixed(6),a=parseInt(s.exec||0).toLocaleString(),l="sell"===t&&i?`Available: ${(parseInt(s.exec||0)-1e6).toLocaleString()}`:`Balance: ${a}`;return`\n <div class="swap-inputs">\n <div class="input-container">\n <input type="text" \n class="top-input" \n value="${"buy"===t?e:r}" \n placeholder="0.0"\n pattern="^[0-9]*[.]?[0-9]*$">\n <div class="token-info">\n <span class="token-symbol">${"buy"===t?"ETH":"$EXEC"}</span>\n <span class="token-balance">Balance: ${"buy"===t?o:l}</span>\n </div>\n </div>\n <div class="direction-switch-slot"></div>\n <div class="input-container">\n <input type="text" \n class="bottom-input" \n value="${"buy"===t?n?"Loading...":r:n?"Loading...":e}" \n placeholder="0.0"\n pattern="^[0-9]*[.]?[0-9]*$">\n <div class="token-info">\n <span class="token-symbol">${"buy"===t?"$EXEC":"ETH"}</span>\n <span class="token-balance">Balance: ${"buy"===t?a:o}</span>\n </div>\n </div>\n </div>\n `}}class ih extends e.Component{constructor(t={}){super(),this.props=t}updateProps(t){const e={...this.props};this.props={...this.props,...t};const r="buy"===e.direction?"Buy $EXEC":"Sell $EXEC",n="buy"===this.props.direction?"Buy $EXEC":"Sell $EXEC";if((r!==n||e.disabled!==this.props.disabled)&&this.element){const t=this.element.querySelector(".swap-button");t&&(t.textContent=n,this.props.disabled?t.disabled=!0:t.disabled=!1)}}handleClick(t){t.preventDefault(),!this.props.disabled&&this.props.onClick&&this.props.onClick(t)}events(){return{"click .swap-button":t=>this.handleClick(t)}}render(){const{direction:t,disabled:e}=this.props;return`\n <button class="swap-button" ${e?"disabled":""}>\n ${"buy"===t?"Buy $EXEC":"Sell $EXEC"}\n </button>\n `}}class sh extends e.Component{constructor(t){super(t),this.blockchainService=t.blockchainService,this.eventBus=t.eventBus,this.state={direction:t.direction||"buy",ethAmount:"",execAmount:"",activeInput:null,freeMint:t.freeMint||!1,freeSupply:t.freeSupply||0,calculatingAmount:!1,isPhase2:null===t.isPhase2?null:t.isPhase2,dataReady:t.dataReady||!1,balances:t.balances||{eth:"0",exec:"0"},price:t.price||{current:0},contractData:t.contractData||{}},this._address=t.address||null,this.transactionOptions=new Xc,this.messagePopup=new Zc("status-message"),this.priceDisplay=new eh({price:this.state.price,contractData:this.state.contractData}),this.messagePopup.initialize(),this.swapInputs=null,this.swapButton=new ih({direction:this.state.direction,disabled:!1,onClick:this.handleSwap.bind(this)}),this.calculateTimer=null,this.onDirectionChange=t.onDirectionChange,this.handleTransactionEvents=this.handleTransactionEvents.bind(this),this.handleBalanceUpdate=this.handleBalanceUpdate.bind(this),this.handleTransactionOptionsUpdate=this.handleTransactionOptionsUpdate.bind(this),this.transactionOptionsState={message:"",nftMintingEnabled:!1},this.approveModal=null,this.eventListeners=[],this.instanceId=Math.random().toString(36).substring(2,9),console.log(`🔵 SwapInterface instance created: ${this.instanceId}`)}handleBalanceUpdate(t){const e=t.balances||this.props.balances,r=void 0!==t.freeMint?t.freeMint:this.props.freeMint,n=void 0!==t.freeSupply?t.freeSupply:this.props.freeSupply;this.setState({balances:e,freeMint:r,freeSupply:n}),this.swapInputs&&this.swapInputs.updateProps({freeMint:r})}updateElements(){requestAnimationFrame(()=>{this.swapInputs&&this.swapInputs.updateProps({direction:this.state.direction,ethAmount:this.state.ethAmount,execAmount:this.state.execAmount,calculatingAmount:this.state.calculatingAmount,freeMint:this.state.freeMint,isPhase2:this.state.isPhase2}),this.swapButton&&this.swapButton.updateProps({direction:this.state.direction})})}async calculateSwapAmount(t,e){if(!t||isNaN(parseFloat(t)))return"";try{if(this.isLiquidityDeployed()){const r=this.state.price.current;if(console.log("calculateSwapAmount price",r),"eth"===e){const e=parseFloat(t)/r*1e6*.95;return console.log("calculateSwapAmount execAmount",e),e.toFixed(0)}{const e=parseFloat(t)/1e6*r*1.055;return console.log("calculateSwapAmount ethAmount",e),e.toFixed(6)}}if("eth"===e){const e=await this.blockchainService.getExecForEth(t),{freeSupply:r,freeMint:n}=this.state;console.log("calculateSwapAmount freeMint",n);const i=r>0&&!n?1e6:0;return Math.floor(e+i).toString()}return(await this.blockchainService.getEthForExec(t)).toString()}catch(t){return console.error("Error calculating swap amount:",t),""}}onMount(){console.log(`[${this.instanceId}] SwapInterface onMount called`),this.bindEvents();const t=[["contractData:updated",this.handleContractDataUpdate.bind(this),"high"],["transaction:pending",this.handleTransactionEvents,"normal"],["transaction:confirmed",this.handleTransactionEvents,"normal"],["transaction:success",this.handleTransactionEvents,"normal"],["transaction:error",this.handleTransactionEvents,"normal"],["balances:updated",this.handleBalanceUpdate,"high"],["transactionOptions:update",this.handleTransactionOptionsUpdate,"low"]];this.eventListeners=t.map(([t,e,r])=>(console.log(`[${this.instanceId}] Subscribing to ${t} with priority ${r}`),this.eventBus.on(t,e)));const{contractData:e}=this.state;if(e&&void 0!==e.liquidityPool){const t=this.isLiquidityDeployed();this.setState({isPhase2:t,dataReady:!0}),this.initializeChildComponents()}this.update(),requestAnimationFrame(()=>{this.mountChildComponents()})}updateProps(t){const e={...this.state},r={...this.state,...t};this.shouldUpdate(e,r)&&this.setState(r)}initializeChildComponents(){null!==this.state.isPhase2?this.swapInputs||(console.log(`[${this.instanceId}] Initializing SwapInputs with phase ${this.state.isPhase2?"2":"1"}`),this.swapInputs=new nh({direction:this.state.direction,ethAmount:this.state.ethAmount,execAmount:this.state.execAmount,calculatingAmount:this.state.calculatingAmount,freeMint:this.state.freeMint,isPhase2:this.state.isPhase2,onInput:this.handleInput.bind(this)})):console.log(`[${this.instanceId}] Phase not yet determined, skipping SwapInputs initialization`)}mountChildComponents(){const t=this.element.querySelector(".price-display-container");!t||this.priceDisplay.element&&t.contains(this.priceDisplay.element)||(console.log(`[${this.instanceId}] Mounting PriceDisplay component`),this.priceDisplay.mount(t));const e=this.element.querySelector(".transaction-options-container");!e||!this.transactionOptions||this.transactionOptions.element&&e.contains(this.transactionOptions.element)||(console.log(`[${this.instanceId}] Mounting TransactionOptions component`),this.transactionOptions.mount(e));const r=this.element.querySelector(".swap-inputs-container");r&&this.swapInputs&&this.swapInputs.mount(r);const n=this.element.querySelector(".quick-fill-buttons-container");if(n){n.innerHTML='<div class="quick-fill-buttons"></div>';const t=n.querySelector(".quick-fill-buttons");if(t){const{direction:e}=this.state;t.innerHTML="buy"===e?'<button data-amount="0.0025">0.0025</button>\n <button data-amount="0.01">0.01</button>\n <button data-amount="0.05">0.05</button>\n <button data-amount="0.1">0.1</button>':'<button data-percentage="25">25%</button>\n <button data-percentage="50">50%</button>\n <button data-percentage="75">75%</button>\n <button data-percentage="100">100%</button>',t.addEventListener("click",t=>{(t.target.dataset.amount||t.target.dataset.percentage)&&this.handleQuickFill(t)})}}const i=this.element.querySelector(".direction-switch-slot");i&&(i.innerHTML='<button class="direction-switch">↑↓</button>',i.querySelector(".direction-switch").addEventListener("click",t=>{this.handleDirectionSwitch(t)}));const s=this.element.querySelector(".swap-button-container");s&&this.swapButton&&this.swapButton.mount(s)}onUnmount(){if(console.log(`[${this.instanceId}] SwapInterface onUnmount called`),this.eventListeners.forEach(t=>{"function"==typeof t&&t()}),this.eventListeners=[],this.transactionOptions&&this.transactionOptions.element&&this.transactionOptions.element.remove(),this.priceDisplay){try{this.priceDisplay.unmount()}catch(t){console.warn("Error unmounting price display:",t)}this.priceDisplay=null}if(this.swapInputs){try{this.swapInputs.unmount()}catch(t){console.warn("Error unmounting swap inputs:",t)}this.swapInputs=null}if(this.swapButton){try{this.swapButton.unmount()}catch(t){console.warn("Error unmounting swap button:",t)}this.swapButton=null}if(this.approveModal){try{this.approveModal.handleClose()}catch(t){console.warn("Error closing approval modal during unmount:",t)}this.approveModal=null}this.calculateTimer&&(clearTimeout(this.calculateTimer),this.calculateTimer=null)}handleTransactionEvents(t){if(console.log(`[${this.instanceId}] handleTransactionEvents called with:`,{type:t?.type,hasError:!!t?.error,hasHash:!!t?.hash,eventId:t?.id||"none",handled:t?.handled||!1}),t?.handledBy?.includes(this.instanceId))return void console.log(`[${this.instanceId}] Event already handled by this instance, skipping`);t.handledBy||(t.handledBy=[]),t.handledBy.push(this.instanceId);const e="buy"===this.state.direction?"Buy":"Sell";if(t&&t.type){if("buy"!==t.type&&"sell"!==t.type&&"swap"!==t.type||t.error||(console.log(`[${this.instanceId}] Showing transaction pending message for type:`,t.type),this.messagePopup.info(`${e} transaction. Simulating...`,"Transaction Pending")),t.hash&&this.messagePopup.info("Transaction confirmed, waiting for completion...","Transaction Confirmed"),t.receipt&&("buy"===t.type||"sell"===t.type||"swap"===t.type)){const t="buy"===this.state.direction?this.state.execAmount+" EXEC":this.state.ethAmount+" ETH";this.messagePopup.success(`Successfully ${"buy"===e.toLowerCase()?"bought":"sold"} ${t}`,"Transaction Complete"),this.state.ethAmount="",this.state.execAmount="",this.state.calculatingAmount=!1,this.swapInputs&&this.swapInputs.updateProps({ethAmount:"",execAmount:"",calculatingAmount:!1}),this.mountChildComponents()}if(t.error&&!t.handled){console.log(`[${this.instanceId}] Handling error in handleTransactionEvents:`,t.error);let e=t.error?.message||"Transaction failed";if(e.includes("Contract call")){const t=e.split(": ");e=t[t.length-1]}const r="buy"===this.state.direction?"Buy Failed":"Sell Failed";this.messagePopup.error(`${r}: ${e}`,"Transaction Failed"),t.handled=!0}}else console.warn("Invalid transaction event:",t)}handleTransactionOptionsUpdate(t){this.transactionOptionsState={message:t.message,nftMintingEnabled:t.nftMintingEnabled}}handleInput(t,e){this.calculateTimer&&clearTimeout(this.calculateTimer),this.state.activeInput=t,this.state.calculatingAmount=!0,"buy"===this.state.direction?"top"===t?this.state.ethAmount=e:this.state.execAmount=e:"top"===t?this.state.execAmount=e:this.state.ethAmount=e,this.swapInputs&&this.swapInputs.updateProps({direction:this.state.direction,ethAmount:this.state.ethAmount,execAmount:this.state.execAmount,calculatingAmount:this.state.calculatingAmount,freeMint:this.state.freeMint,isPhase2:this.state.isPhase2}),this.calculateTimer=setTimeout(async()=>{try{const r="buy"===this.state.direction==("top"===t),n=await this.calculateSwapAmount(e,r?"eth":"exec");r?(this.state.execAmount=n,this.state.calculatingAmount=!1,this.swapInputs&&this.swapInputs.updateProps({execAmount:n,calculatingAmount:!1})):(this.state.ethAmount=n,this.state.calculatingAmount=!1,this.swapInputs&&this.swapInputs.updateProps({ethAmount:n,calculatingAmount:!1}))}catch(t){console.error("Error calculating swap amount:",t),this.state.calculatingAmount=!1,this.swapInputs&&this.swapInputs.updateProps({calculatingAmount:!1})}},750)}events(){return{}}shouldUpdate(t,e){if(!t||!e)return!0;if(t===e)return!1;return!(t.ethAmount!==e.ethAmount||t.execAmount!==e.execAmount||t.activeInput!==e.activeInput||t.calculatingAmount!==e.calculatingAmount)||t.direction!==e.direction||t.freeMint!==e.freeMint||t.freeSupply!==e.freeSupply||t.isPhase2!==e.isPhase2||t.dataReady!==e.dataReady}handleDirectionSwitch(t){t&&(t.preventDefault(),t.stopPropagation()),this.calculateTimer&&clearTimeout(this.calculateTimer);const e="buy"===this.state.direction?"sell":"buy";console.log("Direction Switch - Current State:",{direction:this.state.direction,newDirection:e,freeMint:this.state.freeMint,freeSupply:this.state.freeSupply}),this.setState({direction:e,calculatingAmount:!1,activeInput:null}),this.onDirectionChange&&this.onDirectionChange(e),requestAnimationFrame(()=>{this.mountChildComponents()})}isLiquidityDeployed(){const{contractData:t}=this.state;if(!t||!t.liquidityPool)return!1;const e="0x0000000000000000000000000000000000000000"!==t.liquidityPool;return console.log("isLiquidityDeployed check:",{liquidityPool:t.liquidityPool,result:e}),e}async handleSwap(){try{if(this.state.calculatingAmount)return void this.messagePopup.info("Please wait for the calculation to complete","Loading");const{ethAmount:t,execAmount:e,direction:r,balances:n,freeMint:i}=this.state;if(!t||!e||parseFloat(t)<=0||parseFloat(e)<=0)return void this.messagePopup.info("Please enter valid amounts","Invalid Input");if("buy"===r){let e=parseFloat(this.blockchainService.formatEther(n.eth||"0"));const r=parseFloat(t);if(isNaN(r)||isNaN(e)||r>e)return void this.messagePopup.info(`Not enough ETH balance. You have ${e.toFixed(6)} ETH, need ${r} ETH`,"Insufficient Balance")}else{const t=e.replace(/,/g,""),r=BigInt(n.exec||0);if(BigInt(parseInt(t)||0)>r){const e=parseInt(n.exec||0).toLocaleString(),r=parseInt(t).toLocaleString();return void this.messagePopup.info(`Not enough EXEC balance. You have ${e} EXEC, need ${r} EXEC`,"Insufficient Balance")}}if("sell"===r&&parseInt(e.replace(/,/g,""))<=1e6&&i)return void this.messagePopup.info("Free minted tokens cannot be sold directly.","Free Mint Restriction");const s=this.isLiquidityDeployed(),o=this.state.execAmount.replace(/,/g,"");if(s){const t=this.blockchainService.parseEther(this.state.ethAmount),e=this.blockchainService.parseExec(o),r=await this.getAddress();if(!r)return void this.messagePopup.error("No wallet address available. Please reconnect your wallet.","Wallet Error");if("buy"===this.state.direction)await this.blockchainService.swapExactEthForTokenSupportingFeeOnTransfer(r,{amount:e},t);else{const t=this.blockchainService.swapRouter?.address||this.blockchainService.swapRouterAddress,n=await this.blockchainService.getApproval(r,t);if(BigInt(n)<BigInt(e)){if(this.approveModal){try{this.eventBus.off("approve:complete"),this.approveModal.handleClose()}catch(t){console.warn("Error closing existing approval modal:",t)}this.approveModal=null}return this.approveModal=new ApproveModal(o,this.blockchainService,r),this.approveModal.mount(document.body),this.eventBus.once("approve:complete",async()=>{try{await this.blockchainService.swapExactTokenForEthSupportingFeeOnTransferV2(r,{amount:e})}catch(t){this.messagePopup.error(`Swap Failed: ${t.message}`,"Transaction Failed")}}),this.eventBus.once("approveModal:closed",()=>{this.approveModal=null}),void this.approveModal.show()}await this.blockchainService.swapExactTokenForEthSupportingFeeOnTransferV2(r,{amount:e})}}else{let t;try{const e=await this.blockchainService.getCurrentTier();if(t=await this.blockchainService.getMerkleProof(this.address,e),!t)return void this.messagePopup.error(`You are not whitelisted for Tier ${e+1}.`,"Not Whitelisted")}catch(t){return void this.messagePopup.error("Failed to verify whitelist status.","Whitelist Check Failed")}let e=o;if("buy"===this.state.direction&&this.state.freeSupply>0&&!this.state.freeMint){const t=parseInt(o);e=Math.max(0,t-1e6).toString()}const r=this.blockchainService.parseEther(this.state.ethAmount),n=this.blockchainService.parseExec(e);if("buy"===this.state.direction)await this.blockchainService.buyBonding({amount:n,maxCost:r,mintNFT:this.transactionOptionsState.nftMintingEnabled,proof:t.proof,message:this.transactionOptionsState.message},r);else{const e=BigInt(r)*BigInt(999)/BigInt(1e3);await this.blockchainService.sellBonding({amount:n,minReturn:e,proof:t.proof,message:this.transactionOptionsState.message})}}}catch(t){console.error("Swap failed:",t);let e=t.message;if(e.includes("Contract call")){const t=e.split(": ");e=t[t.length-1]}const r="buy"===this.state.direction?"Buy Failed":"Sell Failed";this.messagePopup.error(`${r}: ${e}`,"Transaction Failed")}}handleQuickFill(t){t.preventDefault();const e=t.target.dataset.amount,r=t.target.dataset.percentage;let n;if(e)n=e;else if(r){const{balances:t}=this.state,e=t.exec;if(!e||"0"===e)return void console.warn("No EXEC balance available for quick fill");let i=BigInt(e)/BigInt(1e18);if(this.state.freeMint&&(i-=BigInt(1e6),i<=0))return void this.messagePopup.info("You only have free mint tokens which cannot be sold.","Cannot Quick Fill");n=(i*BigInt(r)/BigInt(100)).toString()}this.handleInput("top",n)}handleContractDataUpdate(){try{const t=this.state.isPhase2,e=this.state.dataReady,r=null===t,{contractData:n}=this.state,i=this.isLiquidityDeployed();if(this.state.isPhase2=i,this.state.dataReady=!0,r&&null!==this.state.isPhase2)return console.log(`[${this.instanceId}] Phase determined: ${i?"Phase 2":"Phase 1"}`),this.initializeChildComponents(),this.setState({dataReady:!0,isPhase2:i}),void requestAnimationFrame(()=>this.mountChildComponents());if(!e&&this.state.dataReady)return console.log(`[${this.instanceId}] Data ready, mounting child components`),this.setState({dataReady:!0,isPhase2:i}),void requestAnimationFrame(()=>this.mountChildComponents());if(t!==this.state.isPhase2){console.log("Phase changed"),this.swapInputs&&this.swapInputs.updateProps({isPhase2:this.state.isPhase2});const t=this.element.querySelector(".price-display-container");return void(t&&this.priceDisplay&&this.priceDisplay.mount(t))}const s=this.element.querySelector(".price-display-container");if(s&&this.priceDisplay){!this.priceDisplay.element||!s.contains(this.priceDisplay.element)?this.priceDisplay.mount(s):this.priceDisplay.update()}}catch(t){console.error("Error in handleContractDataUpdate:",t),this.state.dataReady||(this.state.dataReady=!0,this.state.isPhase2=this.isLiquidityDeployed(),this.element&&this.element.innerHTML||this.update())}}render(){console.log("🎨 SwapInterface.render - Starting render");const{direction:t,isPhase2:e,dataReady:r,balances:n,freeMint:i,freeSupply:s}=this.state;if(!r||null===e)return'\n <div class="price-display-container"></div>\n <div class="quick-fill-buttons-container"></div>\n <div class="swap-inputs-container">\n <div style="padding: 20px; text-align: center;">Loading swap interface...</div>\n </div>\n <div class="transaction-options-container"></div>\n <div class="swap-button-container"></div>\n ';console.log("Render - Current State:",{direction:t,freeMint:i,freeSupply:s,isPhase2:e}),parseFloat(n.eth).toFixed(6);parseInt(n.exec).toLocaleString();"sell"===t&&i&&(parseInt(n.exec)-1e6).toLocaleString();const o=`\n <div class="price-display-container"></div>\n ${"sell"===t&&i&&!e?'<div class="free-mint-notice">You have 1,000,000 $EXEC you received for free that cannot be sold here.</div>':"buy"===t&&s>0&&!i&&!e?'<div class="free-mint-notice free-mint-bonus">1,000,000 $EXEC will be added to your purchase. Thank you.</div>':""}\n <div class="quick-fill-buttons-container"></div>\n <div class="swap-inputs-container"></div>\n <div class="transaction-options-container"></div>\n <div class="swap-button-container"></div>\n `;return console.log("🎨 SwapInterface.render - Completed render"),o}async getAddress(){try{const t=await Promise.resolve(this._address);return console.log(`[${this.instanceId}] Resolved address: ${t}`),t}catch(t){return console.error(`[${this.instanceId}] Error resolving address:`,t),null}}setAddress(t){this._address=t}get address(){return this._address}set address(t){this._address=t}}class oh extends e.Component{constructor(t){super(t),this.eventBus=t.eventBus,this.state={currentPrice:t.price||0,totalBondingSupply:t.contractData?.totalBondingSupply||0,totalMessages:t.contractData?.totalMessages||0,totalNFTs:t.contractData?.totalNFTs||0,dataReady:t.dataReady||!1,contractEthBalance:t.contractData?.contractEthBalance||0,liquidityPool:t.contractData?.liquidityPool||null,chainId:t.chainId||null}}onMount(){this.unsubscribeEvents=[this.eventBus.on("contractData:updated",t=>this.updateProps({contractData:t})),this.eventBus.on("price:updated",t=>this.updateProps({price:t.price}))],this.resizeHandler=()=>requestAnimationFrame(()=>this.drawCurve()),window.addEventListener("resize",this.resizeHandler),this.isLiquidityDeployed()?this.renderDexToolsChart():this.drawCurve()}updateProps(t){const e={...this.state};let r=!1;if(t.contractData){const{contractData:n}=t;e.totalBondingSupply=n.totalBondingSupply,e.totalMessages=n.totalMessages,e.totalNFTs=n.totalNFTs,e.contractEthBalance=n.contractEthBalance,e.liquidityPool!==n.liquidityPool&&(e.liquidityPool=n.liquidityPool,r=!0),e.dataReady=!0,r=!0}void 0!==t.price&&(e.currentPrice=t.price,r=!0),void 0!==t.chainId&&(e.chainId=t.chainId,r=!0),this.setState(e),r&&(this.isLiquidityDeployed()?this.renderDexToolsChart():this.drawCurve())}isLiquidityDeployed(){const{liquidityPool:t}=this.state;return t&&"0x0000000000000000000000000000000000000000"!==t}renderDexToolsChart(){try{const t=this.element.querySelector(".bonding-curve");if(!t)return;t.innerHTML="";const e=`https://www.dextools.io/widget-chart/en/${this.getNetworkName(this.state.chainId)}/pe-light/${this.state.liquidityPool}?theme=dark&chartType=2&chartResolution=30&drawingToolbars=false`;t.innerHTML=`\n <iframe \n id="dextools-widget"\n title="$EXEC DEXTools Trading Chart"\n width="100%"\n height="100%"\n src="${e}"\n style="border: none;"\n onerror="console.warn('DEXTools chart failed to load (expected on localhost)')"\n ></iframe>\n `;const r=t.querySelector("#dextools-widget");r&&(r.onerror=()=>{console.warn("DEXTools chart iframe failed to load (expected on localhost due to X-Frame-Options)"),t.innerHTML='\n <div style="display: flex; align-items: center; justify-content: center; height: 100%; color: #888;">\n <div>Chart will be available in production</div>\n </div>\n '})}catch(t){console.error("Error rendering DEXTools chart:",t);const e=this.element.querySelector(".bonding-curve");e&&(e.innerHTML='\n <div style="display: flex; align-items: center; justify-content: center; height: 100%; color: #888;">\n <div>Chart unavailable (expected on localhost)</div>\n </div>\n ')}}getNetworkName(t){return{1:"ether",5:"goerli"}[t]||"ether"}drawCurve(){const t=this.element.querySelector("#curveChart");if(!t)return;const e=t.getContext("2d");t.width=t.offsetWidth,t.height=t.offsetHeight,e.clearRect(0,0,t.width,t.height),this.drawBaseCurve(e,t),this.state.dataReady?this.drawDataElements(e):this.drawPlaceholderLabels(e)}drawBaseCurve(t,e){const r=getComputedStyle(document.documentElement).getPropertyValue("--bonding-curve-color").trim()||"#764ba2";t.strokeStyle=r,t.lineWidth=2;const n=this.calculateCurvePoints(e,t=>Math.pow(.1+.8*t,3.5));this.drawCurvePath(t,n)}drawDataElements(t){const e=Math.max(.1,Math.min(.9,Math.pow(this.state.currentPrice/.08,1/3.5))),r=this.calculateCurvePoints(this.element.querySelector("#curveChart"),t=>Math.pow(.1+.8*t,3.5));this.drawCurrentPosition(t,r,e),this.drawLabels(t)}drawPlaceholderLabels(t){t.fillStyle="#666666",t.font="12px Courier New",t.fillText("Loading price data...",10,20),t.fillText("Loading supply data...",10,40),t.fillText("Loading NFT data...",10,60)}calculateCurvePoints(t,e){const r=[];for(let n=0;n<=100;n++){const i=n/100,s=e(i),o=i*t.width*.8+.1*t.width,a=.9*t.height-s*t.height*.8;r.push({x:o,y:a})}return r}drawCurvePath(t,e){t.beginPath(),t.moveTo(e[0].x,e[0].y);for(let r=1;r<e.length;r++)t.lineTo(e[r].x,e[r].y);t.stroke()}drawCurrentPosition(t,e,r){const n=Math.floor((r-.025)*e.length),i=Math.floor((r+.025)*e.length);if(n>=0&&i<e.length){const r=getComputedStyle(document.documentElement).getPropertyValue("--bonding-curve-color").trim()||"#764ba2";t.beginPath(),t.strokeStyle=r,t.lineWidth=4,t.moveTo(e[n].x,e[n].y);for(let r=n;r<=i;r++)t.lineTo(e[r].x,e[r].y);t.stroke();const s=e[Math.floor((n+i)/2)];t.beginPath(),t.arc(s.x,s.y,4,0,2*Math.PI),t.fillStyle="#FF0000",t.fill()}}drawLabels(t){t.fillStyle="#666666",t.font="12px Courier New",t.fillText(`${this.state.currentPrice.toFixed(4)} ETH / EXEC`,10,20),t.fillText(`Total Supply: ${this.state.totalBondingSupply.toLocaleString()} EXEC`,10,40),t.fillText(`Total Messages: ${this.state.totalMessages.toLocaleString()}`,10,60),t.fillText(`Total NFTs: ${this.state.totalNFTs.toLocaleString()}`,10,80),t.fillText(`Contract ETH Balance: ${this.state.contractEthBalance}`,10,100)}unmount(){this.unsubscribeEvents&&this.unsubscribeEvents.forEach(t=>t()),this.resizeHandler&&window.removeEventListener("resize",this.resizeHandler),super.unmount()}render(){return`\n <div class="bonding-curve marble-bg">\n ${this.isLiquidityDeployed()?"":'<canvas id="curveChart"></canvas>'}\n </div>\n `}static get styles(){return"\n .bonding-curve {\n width: 100%;\n height: 90%;\n min-height: 400px;\n background: #1a1a1a;\n border-radius: 8px;\n padding: 0px;\n overflow: hidden;\n position: relative;\n }\n\n #curveChart {\n width: 100%;\n height: 100%;\n }\n\n #dextools-widget {\n width: 100%;\n height: 100%;\n position: absolute;\n top: 0;\n left: 0;\n border: none;\n }\n "}}class ah extends e.Component{constructor(t){super(t),this.eventBus=t.eventBus,this.state={balances:t.balances||{eth:"0",exec:"0",lastUpdated:null},loading:void 0===t.loading||t.loading,error:t.error||null},this.handleBalanceUpdate=this.handleBalanceUpdate.bind(this)}template(){const{balances:t,loading:e,error:r}=this.state;return`\n <div class="balance-display marble-bg ${e?"loading":""} ${r?"error":""}">\n <div class="balance-header">\n <h3>Your Balances</h3>\n ${t.lastUpdated?`\n <span class="last-updated">\n Last updated: ${new Date(t.lastUpdated).toLocaleTimeString()}\n </span>\n `:""}\n </div>\n \n <div class="balance-content">\n ${e?'\n <div class="loading-indicator">Loading balances...</div>\n ':r?`\n <div class="error-message">${r}</div>\n `:`\n <div class="balance-grid">\n <div class="balance-item eth">\n <span class="label">ETH Balance</span>\n <span class="amount">${t.eth}</span>\n </div>\n <div class="balance-item exec">\n <span class="label">EXEC Balance</span>\n <span class="amount">${t.exec}</span>\n </div>\n </div>\n `}\n </div>\n </div>\n `}render(){return this.template()}onMount(){this.eventBus&&(this.unsubscribeEvents=[this.eventBus.on("balances:updated",this.handleBalanceUpdate)])}onUnmount(){this.unsubscribeEvents&&this.unsubscribeEvents.forEach(t=>t())}updateProps(t){this.setState({balances:void 0!==t.balances?t.balances:this.state.balances,loading:void 0!==t.loading?t.loading:this.state.loading,error:void 0!==t.error?t.error:this.state.error})}handleBalanceUpdate(t){this.setState({balances:t,loading:!1,error:null})}}t.ApprovalModal=rh,t.BalanceDisplay=ah,t.BlockchainService=class{constructor(t,e){if(!t||!e)throw new Error("BlockchainService requires eventBus and contractCache instances.");this.provider=null,this.signer=null,this.contract=null,this.mirrorContract=null,this.connectionState="disconnected",this.networkConfig=null,this.ethers=_c,this.eventBus=t,this.contractCache=e,this.swapRouterAddress="0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D",this.swapRouter=null,this.isInternalNetworkChange=!1,this.transactionCounter=0,this.activeTransactions=new Map,this.networkChangeState="idle",this.networkChangeTimeout=null,this.networkChangeTimeoutDuration=3e4,this.pendingNetworkChange=null,this.previousNetworkId=null,this.isInitializing=!1,this.chainChangedHandler=()=>this.handleNetworkChange(),this.accountsChangedHandler=()=>this.handleAccountChange()}async initialize(t){this.isInitializing=!0;try{if(!t)throw new Error("Network configuration is required for initialization.");return this.networkConfig=t,await this.initializeProvider(),this.connectionState="connected",this.setupNetworkListeners(),this.eventBus.emit("blockchain:initialized"),this.isInitializing=!1,!0}catch(t){throw this.connectionState="error",this.isInitializing=!1,this.eventBus.emit("blockchain:error",t),this.wrapError(t,"Blockchain initialization failed")}}setupNetworkListeners(){if(window.ethereum&&this.chainChangedHandler&&this.accountsChangedHandler){try{window.ethereum.removeListener("chainChanged",this.chainChangedHandler),window.ethereum.removeListener("accountsChanged",this.accountsChangedHandler)}catch(t){}window.ethereum.on("chainChanged",this.chainChangedHandler),window.ethereum.on("accountsChanged",this.accountsChangedHandler)}}async initializeProvider(){try{if(window.ethereum){const t=parseInt(this.networkConfig?.network||"1");await this.waitForCorrectNetwork(t);const e=new lc(window.ethereum,"any");this.provider=e,this.signer=e.getSigner();const r=await this.provider.getNetwork();if(r.chainId!==t){this.eventBus.emit("network:switching",{from:r.chainId,to:t,automatic:!0});try{this.isInternalNetworkChange=!0,await window.ethereum.request({method:"wallet_switchEthereumChain",params:[{chainId:`0x${t.toString(16)}`}]}),this.provider=new lc(window.ethereum),this.signer=this.provider.getSigner(),this.eventBus.emit("network:switched",{from:r.chainId,to:t,success:!0})}catch(e){if(this.isInternalNetworkChange=!1,this.eventBus.emit("network:switched",{from:r.chainId,to:t,success:!1,error:e.message}),4902!==e.code)throw e;await window.ethereum.request({method:"wallet_addEthereumChain",params:[{chainId:`0x${t.toString(16)}`,rpcUrls:[this.networkConfig.rpcUrl],chainName:this.networkConfig.chainName,nativeCurrency:this.networkConfig.nativeCurrency}]}),this.provider=new lc(window.ethereum),this.signer=this.provider.getSigner()}finally{this.isInternalNetworkChange=!1}}}else this.provider=new il(this.networkConfig.rpcUrl)}catch(t){throw this.isInternalNetworkChange=!1,this.wrapError(t,"Provider initialization failed")}}async initializeContract(t,e,r,n){try{if(!(t&&e&&r&&n))throw new Error("Contract address and all ABIs are required.");this.contract=new Rs(t,e,this.provider);const i=await this.contract.mirrorERC721();this.mirrorContract=new Rs(i,r,this.provider),this.swapRouter=new Rs(this.swapRouterAddress,n,this.provider);const s=await this.getLiquidityPool();if(s&&"0x0000000000000000000000000000000000000000"!==s){const t=["function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast)","function token0() external view returns (address)","function token1() external view returns (address)"];this.v2PoolContract=new Rs(s,t,this.provider)}else console.warn("Liquidity pool address is zero, skipping V2 pool contract initialization.");this.eventBus.emit("contract:updated")}catch(t){throw this.wrapError(t,"Contract initialization failed")}}async getMerkleProof(t,e=null){return null}async executeContractCall(t,e=[],r={}){try{if(!this.contract)throw new Error("Contract not initialized");let n="mirror"===r.useContract?this.mirrorContract:this.contract;if("router"===r.useContract&&(n=this.swapRouter),"v2pool"===r.useContract&&(n=this.v2PoolContract),r.requiresSigner){if(!this.signer)throw new Error("No wallet connected");n=n.connect(this.signer)}if("function"!=typeof n[t])throw new Error(`Method ${t} not found on contract`);const i=await n[t](...e||[],r.txOptions||{});if(i.wait){const r=await i.wait();return this.eventBus.emit("transaction:confirmed",{hash:r.transactionHash,method:t,args:e}),r}return i}catch(e){throw this.handleContractError(e,t)}}handleContractError(t,e){let r=t.message;if("INSUFFICIENT_FUNDS"===t.code)return new Error("Insufficient funds to complete transaction");if("UNPREDICTABLE_GAS_LIMIT"===t.code){const e=t.message.match(/execution reverted: (.*?)(?:\"|$)/);return r=e?`Tx Reverted: ${e[1]}`:"Transaction would fail - check your inputs",new Error(r)}if(4001===t.code||"ACTION_REJECTED"===t.code)return new Error("Transaction rejected by user");if(t.message.includes("execution reverted")){const e=t.message.match(/execution reverted: (.*?)(?:\"|$)/);r=e?`Tx Reverted: ${e[1]}`:t.message}return console.error(`Contract error in ${e}:`,t),new Error(r)}wrapError(t,e){const r=new Error(`${e}: ${t.message}`);return r.originalError=t,r.code=t.code,r}async handleNetworkChange(){try{if(this.isInitializing)return void console.log("BlockchainService: Ignoring network change during initialization");if(this.isInternalNetworkChange)return;let t=null;try{const e=await window.ethereum.request({method:"eth_chainId"});t=parseInt(e,16)}catch(e){console.warn("Could not get current network from window.ethereum:",e);try{if(this.provider){t=(await this.provider.getNetwork()).chainId}}catch(t){console.warn("Could not get current network from provider:",t)}}this.previousNetworkId=t;const e=parseInt(this.networkConfig?.network||"1");t&&t!==e&&console.log(`User switched to network ${t}, but we need ${e}. Switching back...`),this.networkChangeState="switching",this.pendingNetworkChange={from:t,to:null,startTime:Date.now()},this.eventBus.emit("network:switching",{from:t,to:null,automatic:!0}),this.networkChangeTimeout=setTimeout(()=>{"switching"===this.networkChangeState&&this.handleNetworkChangeTimeout()},this.networkChangeTimeoutDuration),await this.initializeProvider();let r=null;try{const t=await window.ethereum.request({method:"eth_chainId"});r=parseInt(t,16)}catch(t){console.warn("Could not get new network from window.ethereum:",t);try{if(this.provider){r=(await this.provider.getNetwork()).chainId}}catch(t){console.warn("Could not get new network from provider:",t)}}const n=this.pendingNetworkChange?Date.now()-this.pendingNetworkChange.startTime:0;this.networkChangeTimeout&&(clearTimeout(this.networkChangeTimeout),this.networkChangeTimeout=null),this.networkChangeState="switched";this.pendingNetworkChange;this.pendingNetworkChange=null,this.eventBus.emit("network:switched",{from:t,to:r,success:!0,duration:n}),this.eventBus.emit("network:changed",{automatic:!0}),this.eventBus.emit("contract:updated"),setTimeout(()=>{"switched"===this.networkChangeState&&(this.networkChangeState="idle")},1e3)}catch(t){this.networkChangeTimeout&&(clearTimeout(this.networkChangeTimeout),this.networkChangeTimeout=null),this.networkChangeState="error",this.eventBus.emit("network:switch:error",{from:this.previousNetworkId,to:null,error:t.message||"Network switch failed",originalError:t}),this.eventBus.emit("blockchain:error",t),setTimeout(()=>{"error"===this.networkChangeState&&(this.networkChangeState="idle",this.pendingNetworkChange=null)},2e3)}}handleNetworkChangeTimeout(){console.warn("Network change timed out after",this.networkChangeTimeoutDuration,"ms"),this.networkChangeState="error",this.eventBus.emit("network:switch:timeout",{from:this.previousNetworkId,to:null,timeout:this.networkChangeTimeoutDuration}),this.networkChangeTimeout&&(clearTimeout(this.networkChangeTimeout),this.networkChangeTimeout=null),setTimeout(()=>{"error"===this.networkChangeState&&(this.networkChangeState="idle",this.pendingNetworkChange=null)},2e3)}cancelNetworkChange(){return"switching"===this.networkChangeState&&(this.networkChangeTimeout&&(clearTimeout(this.networkChangeTimeout),this.networkChangeTimeout=null),this.networkChangeState="idle",this.pendingNetworkChange=null,this.eventBus.emit("network:switch:cancelled",{from:this.previousNetworkId}),!0)}getNetworkChangeState(){return this.networkChangeState}async waitForCorrectNetwork(t,e=5e3){const r=Date.now();for(;Date.now()-r<e;){try{const e=await window.ethereum.request({method:"eth_chainId"});if(parseInt(e,16)===t)return void await new Promise(t=>setTimeout(t,200))}catch(t){}await new Promise(t=>setTimeout(t,100))}console.warn(`Network check timeout: Expected ${t}, will verify in initializeProvider`)}async handleAccountChange(){try{if(window.ethereum){const t=new lc(window.ethereum);this.signer=t.getSigner(),this.eventBus.emit("account:changed"),this.eventBus.emit("contract:updated")}}catch(t){this.eventBus.emit("blockchain:error",t)}}getConnectionState(){return this.connectionState}isConnected(){return"connected"===this.connectionState}getProvider(){return this.provider}getContract(t,e){if(!this.provider)throw new Error("Provider not initialized");return new Rs(t,e,this.provider)}async getChainId(){if(!this.provider)throw new Error("Provider not initialized");const t=await this.provider.getNetwork();return Number(t.chainId)}async getBlock(t){if(!this.provider)throw new Error("Provider not initialized");return this.provider.getBlock(t)}async getCurrentTier(){try{const t=this.contractCache.get("getCurrentTier",[]);if(null!==t)return t;const e=await this.executeContractCall("getCurrentTier"),r=parseInt(e.toString());return this.contractCache.set("getCurrentTier",[],r),r}catch(t){throw this.wrapError(t,"Failed to get current tier")}}async getCurrentRoot(){try{return(await this.executeContractCall("getCurrentRoot")).toString()}catch(t){throw this.wrapError(t,"Failed to get current root")}}async getLiquidityPool(){try{const t=this.contractCache.get("getLiquidityPool",[]);if(null!==t)return t;const e=(await this.executeContractCall("liquidityPair")).toString();return this.contractCache.set("getLiquidityPool",[],e),e}catch(t){throw this.wrapError(t,"Failed to get liquidity pool address")}}async getTotalBondingSupply(){try{const t=this.contractCache.get("getTotalBondingSupply",[]);if(null!==t)return t;const e=await this.executeContractCall("totalBondingSupply"),r=parseFloat(this.ethers.utils.formatUnits(e,0));return this.contractCache.set("getTotalBondingSupply",[],r),r}catch(t){throw this.wrapError(t,"Failed to get total bonding supply")}}async getTotalMessages(){try{const t=this.contractCache.get("getTotalMessages",[]);if(null!==t)return t;const e=await this.executeContractCall("totalMessages"),r=parseFloat(this.ethers.utils.formatUnits(e,0));return this.contractCache.set("getTotalMessages",[],r),r}catch(t){throw this.wrapError(t,"Failed to get total messages")}}async getMessagesBatch(t,e){return(await this.executeContractCall("getMessagesBatch",[t,e])).map(t=>t.toString())}async getTokenBalance(t){if(!t||"string"!=typeof t)throw new Error("Invalid address provided to getTokenBalance");const e=this.contractCache.get("getTokenBalance",[t]);if(null!==e)return e;const r=await this.executeContractCall("balanceOf",[t]);return this.contractCache.set("getTokenBalance",[t],r),r}async getNFTBalance(t){try{if(!t||"string"!=typeof t)throw new Error("Invalid address provided to getNFTBalance");const e=this.contractCache.get("getNFTBalance",[t]);if(null!==e)return e;const r=await this.executeContractCall("balanceOf",[t],{useContract:"mirror"}),n=parseInt(r.toString());return this.contractCache.set("getNFTBalance",[t],n),n}catch(t){throw this.wrapError(t,"Failed to get NFT balance")}}async getNFTSupply(){try{return this.executeContractCall("totalSupply",[],{useContract:"mirror"})}catch(t){throw this.wrapError(t,"Failed to get NFT supply")}}async getEthBalance(t){try{if(!t||"string"!=typeof t)throw new Error("Invalid address provided to getEthBalance");const e=this.contractCache.get("getEthBalance",[t]);if(null!==e)return e;const r=(await this.provider.getBalance(t)).toString();return this.contractCache.set("getEthBalance",[t],r),r}catch(t){throw this.wrapError(t,"Failed to get ETH balance")}}async buyBonding(t,e){try{this.eventBus.emit("transaction:pending",{type:"buy"}),console.log("Buy bonding called with params:",t);const r=await this.executeContractCall("buyBonding",[t.amount,t.maxCost,t.mintNFT,t.proof,t.message],{requiresSigner:!0,txOptions:{value:e}});return this.eventBus.emit("transaction:success",{type:"buy",receipt:r,amount:t.amount}),r}catch(t){throw this.eventBus.emit("transaction:error",{type:"buy",error:this.wrapError(t,"Buy bonding failed")}),t}}async sellBonding(t){try{this.eventBus.emit("transaction:pending",{type:"sell"});const e=await this.executeContractCall("sellBonding",[t.amount,t.minReturn,t.proof,t.message],{requiresSigner:!0});return this.eventBus.emit("transaction:success",{type:"sell",receipt:e,amount:t.amount}),e}catch(t){throw this.eventBus.emit("transaction:error",{type:"sell",error:this.wrapError(t,"Sell bonding failed")}),t}}async getTokenPrice(){try{if(!this.contract)throw new Error("Contract not initialized");const t=kc("1000000"),e=await this.executeContractCall("calculateCost",[t]);if(!e||!K.isBigNumber(e))throw new Error("Invalid price format from contract");return parseFloat(this.ethers.utils.formatEther(e))}catch(t){throw this.wrapError(t,"Failed to get token price")}}async getCurrentPrice(){try{const t=this.contractCache.get("getCurrentPrice",[]);if(null!==t)return t;const e=await this.getTokenPrice();return this.contractCache.set("getCurrentPrice",[],e),e}catch(t){throw this.wrapError(t,"Failed to get current price")}}async calculateCost(t){try{return await this.executeContractCall("calculateCost",[t])}catch(t){throw this.wrapError(t,"Failed to calculate cost")}}async getExecForEth(t){try{const e=kc(t.toString()),r=await this.executeContractCall("getExecForEth",[e]);return this.formatExec(r)}catch(t){throw this.wrapError(t,"Failed to calculate EXEC for ETH amount")}}async getEthForExec(t){try{const e=Ec(t.toString(),18),r=await this.executeContractCall("getEthForExec",[e]);return this.formatEther(r)}catch(t){throw this.wrapError(t,"Failed to calculate ETH for EXEC amount")}}async getFreeSupply(){try{const t=this.contractCache.get("getFreeSupply",[]);if(null!==t)return t;const e=await this.executeContractCall("freeSupply"),r=this.formatExec(e);return this.contractCache.set("getFreeSupply",[],r),r}catch(t){throw this.wrapError(t,"Failed to get free supply")}}async getFreeMint(t){try{if(!t||"string"!=typeof t)throw new Error("Invalid address provided to getFreeMint");const e=this.contractCache.get("getFreeMint",[t]);if(null!==e)return e;const r=await this.executeContractCall("freeMint",[t]);return console.log("FREE MINT",r),this.contractCache.set("getFreeMint",[t],r),r}catch(t){throw this.wrapError(t,"Failed to get free mint")}}async getFreeSituation(t){try{const e=await this.getFreeMint(t),r=await this.getFreeSupply();return{freeMint:e,freeSupply:r}}catch(t){throw this.wrapError(t,"Failed to get free situation")}}async getUserNFTIds(t){try{return await this.executeContractCall("getOwnerTokens",[t])}catch(t){throw this.wrapError(t,"Failed to get user NFT IDs")}}async getTokenUri(t){try{return await this.executeContractCall("tokenURI",[t])}catch(t){throw this.wrapError(t,"Failed to get token URI")}}async getContractEthBalance(){try{const t=this.contractCache.get("getContractEthBalance",[]);if(null!==t)return t;const e=await this.provider.getBalance(this.contract.address),r=this.formatEther(e);return console.log("CONTRACT ETH BALANCE",r),this.contractCache.set("getContractEthBalance",[],r),r}catch(t){throw this.wrapError(t,"Failed to get contract ETH balance")}}async getUserNFTs(t){try{if(!t||"string"!=typeof t)throw new Error("Invalid address provided to getUserNFTs");return await this.executeContractCall("getOwnerTokens",[t])}catch(t){throw this.wrapError(t,"Failed to get user NFT IDs")}}async getNFTMetadata(t){try{const e=await this.executeContractCall("tokenURI",[t]);return console.log("NFT METADATA",e),e}catch(t){throw this.wrapError(t,"Failed to get NFT metadata")}}async getNFTMetadataBatch(t){try{const e=t.map(t=>this.executeContractCall("tokenURI",[t])),r=await Promise.all(e);return console.log("Batch NFT Metadata:",r),r}catch(t){throw this.wrapError(t,"Failed to get NFT metadata batch")}}async getUserNFTsWithMetadata(t,e=5){try{if(!t||"string"!=typeof t)throw new Error("Invalid address provided to getUserNFTsWithMetadata");const r=await this.getUserNFTs(t);if(!r||0===r.length)return[];const n=r.slice(0,e),i=await this.getNFTMetadataBatch(n),s=n.map((t,e)=>({tokenId:t,metadata:i[e]}));return console.log("NFTs with metadata:",s),s}catch(t){throw this.wrapError(t,"Failed to get user NFTs with metadata")}}async balanceMint(t){try{this.eventBus.emit("transaction:pending",{type:"mint"});const e=await this.executeContractCall("balanceMint",[t],{requiresSigner:!0});return this.eventBus.emit("transaction:success",{type:"mint",receipt:e,amount:t}),e}catch(t){throw this.eventBus.emit("transaction:error",{type:"mint",error:this.wrapError(t,"Failed to mint NFTs")}),t}}async transferNFT(t,e,r){try{this.eventBus.emit("transaction:pending",{type:"send"});const n=await this.executeContractCall("transferFrom",[t,e,r],{requiresSigner:!0,useContract:"mirror"});return this.eventBus.emit("transaction:success",{type:"send",receipt:n,tokenId:r,recipient:e}),n}catch(t){throw this.eventBus.emit("transaction:error",{type:"send",error:this.wrapError(t,"Failed to send NFT")}),t}}async getSkipNFT(t){try{return await this.executeContractCall("getSkipNFT",[t])}catch(t){throw this.wrapError(t,"Failed to get skipNFT status")}}async setSkipNFT(t){try{if(!this.signer)throw new Error("No wallet connected");this.eventBus.emit("transaction:pending",{type:"setSkipNFT",skipNFT:t});const e=await this.executeContractCall("setSkipNFT",[t],{requiresSigner:!0});return this.eventBus.emit("transaction:success",{type:"setSkipNFT",receipt:e,skipNFT:t}),e}catch(t){throw this.eventBus.emit("transaction:error",{type:"setSkipNFT",error:this.wrapError(t,"Failed to set skipNFT")}),t}}async transferTokensToSelf(t){try{if(!this.signer)throw new Error("No wallet connected");const e=await this.signer.getAddress();this.eventBus.emit("transaction:pending",{type:"reroll"});const r=await this.executeContractCall("transfer",[e,t],{requiresSigner:!0});return this.eventBus.emit("transaction:success",{type:"reroll",receipt:r,amount:t}),r}catch(t){throw this.eventBus.emit("transaction:error",{type:"reroll",error:this.wrapError(t,"Failed to re-roll NFTs")}),t}}parseEther(t){return kc(t).toString()}formatEther(t){return parseFloat(Ac(t))}parseExec(t){return Ec(t,18).toString()}formatExec(t){return parseFloat(bc(t,18))}async getToken0PriceInToken1(t){try{const e=new this.ethers.Contract(t,["function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast)"],this.provider,{useContract:"v2pool"}),[r,n]=await e.getReserves();return n/r}catch(t){throw this.wrapError(t,"Failed to get token0 price in terms of token1")}}async isToken0(t,e){try{const r=new this.ethers.Contract(t,["function token0() external view returns (address)","function token1() external view returns (address)"],this.provider,{useContract:"v2pool"});return(await r.token0()).toLowerCase()===e.toLowerCase()}catch(t){throw this.wrapError(t,"Failed to check if token is token0")}}async getApproval(t,e=null){try{if(!t)throw new Error("User address is required for approval check");let r;if(null===e)r=this.swapRouter.address||this.swapRouter;else if("string"==typeof e)r=e;else{if(!e||"object"!=typeof e||!e.address)throw new Error("Invalid target for approval check");r=e.address}console.log(`Checking allowance for ${t} to spend tokens at ${r}`);return(await this.executeContractCall("allowance",[t,r])).toString()}catch(t){throw this.wrapError(t,"Failed to get approval")}}async setApproval(t=null,e){try{let r;if(null===t)r=this.swapRouter.address;else if("string"==typeof t)r=t;else{if(!t||"object"!=typeof t||!t.address)throw new Error("Invalid target for approval");r=t.address}console.log(`Setting approval for ${r} to spend ${e} tokens`);const n=`tx_approve_${++this.transactionCounter}_${Date.now()}`,i={type:"approve",id:n,pending:!0};this.activeTransactions.set(n,i),console.log(`[BlockchainService] Emitting transaction:pending for approve ${n}`),this.eventBus.emit("transaction:pending",i);const s=await this.executeContractCall("approve",[r,e],{requiresSigner:!0}),o={type:"approve",id:n,receipt:s,amount:e};return this.activeTransactions.set(n,o),console.log(`[BlockchainService] Emitting transaction:success for ${n}`),this.eventBus.emit("transaction:success",o),s}catch(t){const e={type:"approve",id:`error_approve_${++this.transactionCounter}_${Date.now()}`,error:this.wrapError(t,"Failed to set approval")};throw console.log("[BlockchainService] Emitting transaction:error for approval error"),this.eventBus.emit("transaction:error",e),t}}async swapExactTokenForEthSupportingFeeOnTransferV2(t,e){try{const r=`tx_${++this.transactionCounter}_${Date.now()}`,n={type:"swap",id:r,pending:!0};this.activeTransactions.set(r,n),console.log(`[BlockchainService] Emitting transaction:pending for ${r}`),this.eventBus.emit("transaction:pending",n);const i=["0x185485bF2e26e0Da48149aee0A8032c8c2060Db2","0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"],s=t,o=Math.floor(Date.now()/1e3)+1200,a=(await this.executeContractCall("getAmountsOut",[e.amount,i],{useContract:"router"}))[1],l=BigInt(a)*BigInt(940)/BigInt(1e3);console.log("Sell transaction parameters:",{amountIn:e.amount.toString(),amountOutMin:l.toString(),path:i,txId:r});const c=await this.executeContractCall("swapExactTokensForETHSupportingFeeOnTransferTokens",[e.amount,l,i,s,o],{useContract:"router",requiresSigner:!0}),h={type:"swap",id:r,receipt:c,amount:e.amount};return this.activeTransactions.set(r,h),console.log(`[BlockchainService] Emitting transaction:success for ${r}`),this.eventBus.emit("transaction:success",h),setTimeout(()=>{this.activeTransactions.delete(r)},1e3),c}catch(t){const e={type:"swap",id:`error_${++this.transactionCounter}_${Date.now()}`,error:this.wrapError(t,"Failed to swap tokens for ETH")};throw console.log("[BlockchainService] Emitting transaction:error for error transaction"),this.eventBus.emit("transaction:error",e),t}}async swapExactEthForTokenSupportingFeeOnTransfer(t,e,r){try{const n=`tx_${++this.transactionCounter}_${Date.now()}`,i={type:"swap",id:n,pending:!0};this.activeTransactions.set(n,i),console.log(`[BlockchainService] Emitting transaction:pending for ${n}`),this.eventBus.emit("transaction:pending",i);const s=["0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2","0x185485bF2e26e0Da48149aee0A8032c8c2060Db2"],o=t,a=Math.floor(Date.now()/1e3)+1200,l=BigInt(e.amount)*BigInt(940)/BigInt(1e3);console.log("Buy transaction parameters:",{amountOutMin:l.toString(),ethValue:r.toString(),path:s,txId:n});const c=await this.executeContractCall("swapExactETHForTokensSupportingFeeOnTransferTokens",[l,s,o,a],{useContract:"router",requiresSigner:!0,txOptions:{value:r}}),h={type:"swap",id:n,receipt:c,amount:e.amount};return this.activeTransactions.set(n,h),console.log(`[BlockchainService] Emitting transaction:success for ${n}`),this.eventBus.emit("transaction:success",h),setTimeout(()=>{this.activeTransactions.delete(n)},1e3),c}catch(t){const e={type:"swap",id:`error_${++this.transactionCounter}_${Date.now()}`,error:this.wrapError(t,"Failed to swap ETH for tokens")};throw console.log("[BlockchainService] Emitting transaction:error for error transaction"),this.eventBus.emit("transaction:error",e),t}}async getCurrentBlockInfo(){try{const t=await this.provider.getBlockNumber(),e=await this.provider.getBlock(t);return{number:t,timestamp:e.timestamp,hash:e.hash,date:new Date(1e3*e.timestamp)}}catch(t){throw this.wrapError(t,"Failed to get current block info")}}},t.BondingCurve=oh,t.ContractCache=class{constructor(t,e={}){if(!t)throw new Error("ContractCache requires an eventBus instance.");this.eventBus=t,this.cache=new Map,this.stats={hits:0,misses:0,invalidations:0,sets:0},this.defaultTTLs={price:5e3,balance:3e3,contractData:1e4,supply:1e4,metadata:6e4,tier:3e4,default:5e3},this.noCacheMethods=new Set(["executeContractCall","swapExactETHForTokens","swapExactTokensForETH","buy","sell","mint"]),this.setupEventListeners(),e.eventInvalidation&&this.setupEventInvalidation(e.eventInvalidation),this.debug=!1}setupEventListeners(){this.eventBus.on("transaction:confirmed",()=>{this.invalidateByPattern("balance","price","contractData"),this.debug&&console.log("[ContractCache] Invalidated cache due to transaction confirmation")}),this.eventBus.on("account:changed",()=>{this.invalidateByPattern("balance"),this.debug&&console.log("[ContractCache] Invalidated cache due to account change")}),this.eventBus.on("network:changed",()=>{this.clear(),this.debug&&console.log("[ContractCache] Cleared cache due to network change")}),this.eventBus.on("contractData:updated",()=>{this.invalidateByPattern("contractData","price","supply"),this.debug&&console.log("[ContractCache] Invalidated cache due to contract data update")})}setupEventInvalidation(t){this.eventBus.on("indexer:newEvents",({eventType:e})=>{const r=t[e];r&&Array.isArray(r)&&this.invalidateByPattern(...r)})}generateKey(t,e=[]){return`${t}:${e.length>0?JSON.stringify(e.map(t=>t&&"object"==typeof t&&t.toString?t.toString():t)):""}`}get(t,e=[]){if(this.noCacheMethods.has(t))return null;const r=this.generateKey(t,e),n=this.cache.get(r);return n?Date.now()>n.expiresAt?(this.cache.delete(r),this.stats.misses++,null):(n.accessCount++,this.stats.hits++,this.debug&&console.log(`[ContractCache] Cache HIT for ${t}`,e),n.value):(this.stats.misses++,null)}set(t,e=[],r,n=null){if(this.noCacheMethods.has(t))return;null===n&&(n=this.getTTLForMethod(t));const i=this.generateKey(t,e),s=Date.now()+n;this.cache.set(i,{value:r,expiresAt:s,accessCount:0,method:t,args:e,cachedAt:Date.now()}),this.stats.sets++,this.debug&&console.log(`[ContractCache] Cached ${t}`,e,`TTL: ${n}ms`)}getTTLForMethod(t){const e=t.toLowerCase();return e.includes("price")||e.includes("cost")?this.defaultTTLs.price:e.includes("balance")?this.defaultTTLs.balance:e.includes("supply")||e.includes("total")?this.defaultTTLs.supply:e.includes("metadata")||e.includes("uri")?this.defaultTTLs.metadata:e.includes("tier")||e.includes("merkle")||e.includes("proof")?this.defaultTTLs.tier:e.includes("contract")||e.includes("pool")||e.includes("liquidity")?this.defaultTTLs.contractData:this.defaultTTLs.default}invalidateByPattern(...t){let e=0;for(const[r,n]of this.cache.entries()){const i=n.method.toLowerCase();t.some(t=>i.includes(t.toLowerCase()))&&(this.cache.delete(r),e++)}this.stats.invalidations+=e,this.debug&&e>0&&console.log(`[ContractCache] Invalidated ${e} entries matching patterns:`,t)}invalidate(t,e=[]){const r=this.generateKey(t,e);this.cache.delete(r)&&(this.stats.invalidations++,this.debug&&console.log(`[ContractCache] Invalidated ${t}`,e))}clear(){const t=this.cache.size;this.cache.clear(),this.stats.invalidations+=t,this.debug&&console.log("[ContractCache] Cleared all cache")}getStats(){const t=this.stats.hits+this.stats.misses,e=t>0?(this.stats.hits/t*100).toFixed(2):0;return{...this.stats,hitRate:`${e}%`,cacheSize:this.cache.size,totalRequests:t}}async warmCache(t,e=[]){this.debug&&console.log("[ContractCache] Warming cache for methods:",e);const r=e.map(async e=>{try{return await t(e)}catch(t){return console.warn(`[ContractCache] Failed to warm cache for ${e}:`,t),null}});await Promise.all(r)}setDebug(t){this.debug=t}cleanup(){const t=Date.now();let e=0;for(const[r,n]of this.cache.entries())t>n.expiresAt&&(this.cache.delete(r),e++);return this.debug&&e>0&&console.log(`[ContractCache] Cleaned up ${e} expired entries`),e}},t.EventIndexer=Kc,t.FloatingWalletButton=Jc,t.IndexedDBAdapter=Oc,t.IndexerSettings=Uc,t.IpfsImage=Yc,t.IpfsService=Rc,t.MemoryAdapter=Dc,t.MessagePopup=Zc,t.PriceDisplay=eh,t.PriceService=class{constructor(t,e,r=6e4){if(!t||!e)throw new Error("PriceService requires blockchainService and eventBus instances.");this._blockchainService=t,this.eventBus=e,this._cache=new Map,this._contractUpdateInterval=null,this._updateIntervalTime=r,this._cacheExpirationTime=3e5,this._updateDebounceTimeout=null,this._updateDebounceDelay=2e3,this._lastEmittedData=null,this.getCurrentPrice=this.getCurrentPrice.bind(this),this.startContractUpdates=this.startContractUpdates.bind(this),this.stopContractUpdates=this.stopContractUpdates.bind(this),this.debouncedUpdateContractData=this.debouncedUpdateContractData.bind(this)}initialize(t=null){console.log("PriceService: Fetching initial data immediately",t?`for address: ${t}`:"(no address yet)"),this.updateContractData(t).catch(t=>{console.error("Failed to fetch initial contract data:",t)}),this.startContractUpdates(t)}async getCurrentPrice(){try{if(!this._blockchainService)throw new Error("PriceService not initialized");const t=this._getCacheValue("currentPrice");if(null!==t)return t;const e=await this._blockchainService.getTokenPrice();if("number"!=typeof e||isNaN(e)||e<=0)throw console.error("Invalid price value:",e),new Error("Invalid price value received");return this._setCacheValue("currentPrice",e),this.eventBus.emit("price:updated",{price:e}),e}catch(t){throw console.error("Error fetching price:",t),t}}async calculateCost(t){try{if(!this._blockchainService)throw new Error("PriceService not initialized");return await this._blockchainService.calculateCost(t)}catch(t){throw console.error("Error calculating cost:",t),t}}async updateContractData(t=null){try{const e=[this._blockchainService.getCurrentPrice(),this._blockchainService.getTotalBondingSupply(),this._blockchainService.getTotalMessages(),this._blockchainService.getNFTSupply(),this._blockchainService.getFreeSupply(),this._blockchainService.getContractEthBalance(),this._blockchainService.getCurrentTier(),this._blockchainService.getLiquidityPool()];t&&e.push(this._blockchainService.getEthBalance(t),this._blockchainService.getTokenBalance(t),this._blockchainService.getNFTBalance(t),this._blockchainService.getFreeMint(t));const[r,n,i,s,o,a,l,c,h,u,d,f]=await Promise.all(e),p={totalBondingSupply:n,currentPrice:r,totalMessages:i,totalNFTs:s,freeSupply:o,freeMint:void 0!==f&&f,contractEthBalance:a,currentTier:l,liquidityPool:c},m={eth:h||"0",exec:u||"0",nfts:d||0},g=!this._lastEmittedData||JSON.stringify(this._lastEmittedData.contractData)!==JSON.stringify(p),y=!this._lastEmittedData||JSON.stringify(this._lastEmittedData.balances)!==JSON.stringify(m);g&&this.eventBus.emit("contractData:updated",p),y&&this.eventBus.emit("balances:updated",m),this._lastEmittedData&&this._lastEmittedData.contractData.currentPrice===r||this.eventBus.emit("price:updated",{price:r}),this._lastEmittedData={contractData:p,balances:m}}catch(t){console.error("Error updating contract data:",t),this.eventBus.emit("price:error",{error:t.message})}}startContractUpdates(){this.stopContractUpdates(),this.debouncedUpdateContractData(),this._contractUpdateInterval=setInterval(()=>{this.debouncedUpdateContractData()},this._updateIntervalTime)}stopContractUpdates(){this._contractUpdateInterval&&(clearInterval(this._contractUpdateInterval),this._contractUpdateInterval=null)}_setCacheValue(t,e){this._cache.set(t,{value:e,timestamp:Date.now()})}debouncedUpdateContractData(t=null){this._updateDebounceTimeout&&clearTimeout(this._updateDebounceTimeout),this._updateDebounceTimeout=setTimeout(()=>{this.updateContractData(t).catch(t=>{console.error("Failed to update contract data:",t)})},this._updateDebounceDelay)}},t.SettingsModal=Vc,t.SwapButton=ih,t.SwapInputs=nh,t.SwapInterface=sh,t.SyncProgressBar=class{constructor({indexer:t,eventBus:e}){if(!t)throw new Error("SyncProgressBar requires indexer instance");if(!e)throw new Error("SyncProgressBar requires eventBus instance");this.indexer=t,this.eventBus=e,this.element=null,this.unsubscribers=[],this.state={status:"initializing",progress:0,currentBlock:0,latestBlock:0,error:null}}mount(t){if("string"==typeof t&&(t=document.querySelector(t)),!t)throw new Error("SyncProgressBar: Invalid container");return this.element=document.createElement("div"),this.element.className="mw3-sync-progress",t.appendChild(this.element),this._setupListeners(),this._updateState(this.indexer.sync.getStatus()),this._render(),this}unmount(){for(const t of this.unsubscribers)t();this.unsubscribers=[],this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element),this.element=null}_setupListeners(){const t=[["indexer:syncProgress",t=>{this._updateState({status:"syncing",progress:t.progress,currentBlock:t.currentBlock,latestBlock:t.latestBlock})}],["indexer:syncComplete",()=>{this._updateState({status:"synced",progress:1})}],["indexer:error",t=>{this._updateState({status:"error",error:t.message})}],["indexer:paused",()=>{this._updateState({status:"paused"})}],["indexer:resumed",()=>{this._updateState({status:"syncing"})}]];for(const[e,r]of t){const t=this.eventBus.on(e,r);this.unsubscribers.push(t)}}_updateState(t){this.state={...this.state,...t},this._render()}_render(){if(!this.element)return;const{status:t,progress:e,currentBlock:r,latestBlock:n,error:i}=this.state;if(this.element.className=`mw3-sync-progress mw3-sync-progress--${t}`,"syncing"===t){const t=Math.round(100*e);this.element.innerHTML=`\n <div class="mw3-sync-progress__bar" style="width: ${t}%"></div>\n <span class="mw3-sync-progress__text">Syncing... ${t}%</span>\n `}else if("synced"===t)this.element.innerHTML=`\n <span class="mw3-sync-progress__text">Synced to block ${n.toLocaleString()}</span>\n `;else if("error"===t){this.element.innerHTML=`\n <span class="mw3-sync-progress__text">Sync failed: ${i||"Unknown error"}</span>\n <button class="mw3-sync-progress__retry">Retry</button>\n `;const t=this.element.querySelector(".mw3-sync-progress__retry");t&&(t.onclick=()=>this.indexer.sync.resync())}else if("paused"===t){this.element.innerHTML='\n <span class="mw3-sync-progress__text">Sync paused</span>\n <button class="mw3-sync-progress__resume">Resume</button>\n ';const t=this.element.querySelector(".mw3-sync-progress__resume");t&&(t.onclick=()=>this.indexer.sync.resume())}else this.element.innerHTML='\n <span class="mw3-sync-progress__text">Initializing...</span>\n '}static injectStyles(){if(document.getElementById("mw3-sync-progress-styles"))return;const t=document.createElement("style");t.id="mw3-sync-progress-styles",t.textContent="\n .mw3-sync-progress {\n position: relative;\n height: 24px;\n background: var(--mw3-sync-bg, #f0f0f0);\n border-radius: 4px;\n overflow: hidden;\n font-family: system-ui, sans-serif;\n font-size: 12px;\n }\n\n .mw3-sync-progress__bar {\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n background: var(--mw3-sync-bar, #4caf50);\n transition: width 0.3s ease;\n }\n\n .mw3-sync-progress__text {\n position: relative;\n z-index: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n color: var(--mw3-sync-text, #333);\n padding: 0 8px;\n }\n\n .mw3-sync-progress--synced {\n background: var(--mw3-sync-bar, #4caf50);\n }\n\n .mw3-sync-progress--synced .mw3-sync-progress__text {\n color: white;\n }\n\n .mw3-sync-progress--error {\n background: var(--mw3-sync-error, #f44336);\n }\n\n .mw3-sync-progress--error .mw3-sync-progress__text {\n color: white;\n justify-content: space-between;\n }\n\n .mw3-sync-progress__retry,\n .mw3-sync-progress__resume {\n background: rgba(255,255,255,0.2);\n border: 1px solid rgba(255,255,255,0.4);\n border-radius: 3px;\n color: white;\n padding: 2px 8px;\n cursor: pointer;\n font-size: 11px;\n }\n\n .mw3-sync-progress__retry:hover,\n .mw3-sync-progress__resume:hover {\n background: rgba(255,255,255,0.3);\n }\n\n .mw3-sync-progress--paused {\n background: var(--mw3-sync-paused, #ff9800);\n }\n\n .mw3-sync-progress--paused .mw3-sync-progress__text {\n color: white;\n justify-content: space-between;\n }\n ",document.head.appendChild(t)}},t.TransactionOptions=Xc,t.WalletButton=class extends Jc{constructor(t){super(t),this.modalRoot=null}async showWalletModal(){const t=this.walletService?.providerMap||{rabby:()=>window.ethereum?.isRabby?window.ethereum:null,rainbow:()=>window.ethereum?.isRainbow?window.ethereum:null,phantom:()=>window.phantom?.ethereum||null,metamask:()=>window.ethereum||null},e=this.walletService?.walletIcons||{rabby:"/public/wallets/rabby.webp",rainbow:"/public/wallets/rainbow.webp",phantom:"/public/wallets/phantom.webp",metamask:"/public/wallets/MetaMask.webp"};this.walletModal||(this.walletModal=new Qc({providerMap:t,walletIcons:e,onWalletSelected:async t=>{await this.handleWalletSelection(t)}}),this.modalRoot||(this.modalRoot=document.createElement("div"),document.body.appendChild(this.modalRoot)),this.walletModal.mount(this.modalRoot)),this.walletModal.show()}onUnmount(){this.modalRoot?.parentNode&&(this.modalRoot.parentNode.removeChild(this.modalRoot),this.modalRoot=null),super.onUnmount()}render(){if(this.state.loading)return'\n <div class="floating-wallet-button loading">\n <div class="wallet-spinner"></div>\n </div>\n ';const{walletConnected:t,address:e,balance:r,menuOpen:n}=this.state;if(!t)return'\n <div class="floating-wallet-button disconnected" data-ref="wallet-button">\n <button class="wallet-btn" data-ref="connect-btn">\n <span class="wallet-mark"></span>\n <span class="wallet-text">Connect Wallet</span>\n </button>\n </div>\n ';const i=`${e.slice(0,6)}...${e.slice(-4)}`,s=["floating-wallet-button","connected"];n&&s.push("menu-open");const o=`\n <div class="${s.join(" ")}" data-ref="wallet-button">\n <button class="wallet-btn" data-ref="wallet-btn" title="${this.escapeHtml(e)}\nBalance: ${r} ETH">\n <span class="wallet-mark wallet-mark--connected"></span>\n <span class="wallet-address">${this.escapeHtml(i)}</span>\n <span class="wallet-disconnect" data-ref="inline-disconnect" title="Disconnect">⏏︎</span>\n </button>\n ${this.renderWalletPanel(e,r,n)}\n </div>\n `;return this.minifyHtml(o)}events(){return{...super.events?.()||{},'click [data-ref="inline-disconnect"]':t=>this.handleInlineDisconnect(t),'click [data-ref="wallet-btn"]':t=>this.handleWalletToggle(t),'click [data-ref="connect-btn"]':t=>this.handleWalletToggle(t)}}renderWalletPanel(t,e,r){const n=`${t.slice(0,6)}...${t.slice(-4)}`,i=`\n <div class="wallet-info-panel" data-ref="wallet-panel" aria-hidden="${r?"false":"true"}">\n <div class="wallet-info-row">\n <span class="wallet-info-label">Address</span>\n <span class="wallet-info-value">${this.escapeHtml(n)}</span>\n </div>\n <div class="wallet-info-row">\n <span class="wallet-info-label">ETH Balance</span>\n <span class="wallet-info-value">${e} ETH</span>\n </div>\n </div>\n `;return this.minifyHtml(i)}onStateUpdate(t,e){"function"==typeof super.onStateUpdate&&super.onStateUpdate(t,e),t&&t.menuOpen===e.menuOpen||(e.menuOpen?this.attachOutsideClickListener():this.detachOutsideClickListener())}attachOutsideClickListener(){this.outsideClickHandler||this.outsideClickTimeout||(this.outsideClickHandler=t=>{if(!this.element)return;const e="function"==typeof t.composedPath?t.composedPath():[];e.length&&e.includes(this.element)||t.target&&this.element.contains(t.target)||this.setState({menuOpen:!1})},this.outsideClickTimeout=window.setTimeout(()=>{document.addEventListener("click",this.outsideClickHandler),this.outsideClickTimeout=null},0))}detachOutsideClickListener(){this.outsideClickTimeout&&(window.clearTimeout(this.outsideClickTimeout),this.outsideClickTimeout=null),this.outsideClickHandler&&(document.removeEventListener("click",this.outsideClickHandler),this.outsideClickHandler=null)}setupDOMEventListeners(){}handleWalletToggle(t){this.handleButtonClick(t)}handleInlineDisconnect(t){t&&(t.preventDefault(),t.stopPropagation()),super.handleDisconnect(t)}minifyHtml(t){return"string"==typeof t?t.replace(/>\s+</g,"><").trim():t}},t.WalletModal=$c,t.WalletService=class{constructor(t){if(!t)throw new Error("WalletService requires an eventBus instance.");this.eventBus=t,this.provider=null,this.signer=null,this.connectedAddress=null,this.selectedWallet=null,this.connected=!1,this.ethers=_c,this.isInitialized=!1,this.providerMap={rabby:()=>window.ethereum&&window.ethereum.isRabby?window.ethereum:null,rainbow:()=>window.ethereum&&window.ethereum.isRainbow?window.ethereum:window.rainbow||null,phantom:()=>window.phantom&&window.phantom.ethereum?window.phantom.ethereum:null,metamask:()=>(console.log("Checking for MetaMask with direct window.ethereum access"),window.ethereum||null)},this.walletIcons={rabby:"/public/wallets/rabby.webp",rainbow:"/public/wallets/rainbow.webp",phantom:"/public/wallets/phantom.webp",metamask:"/public/wallets/MetaMask.webp"}}async initialize(){try{return console.log("Initializing WalletService..."),void 0!==window.ethereum?(console.log("Found Ethereum provider"),this.eventBus.emit("wallet:detected"),this.isMetaMask=window.ethereum.isMetaMask,this.setupEventListeners()):(console.log("No Ethereum provider found"),this.eventBus.emit("wallet:notdetected")),this.isInitialized=!0,!0}catch(t){throw console.error("Error initializing WalletService:",t),t}}formatError(t,e=""){if("string"==typeof t)return new Error(`${e}: ${t}`);if(t&&t.message){const r=this.getUserFriendlyErrorMessage(t,e),n=new Error(r);return n.code=t.code,n.originalError=t,n}return new Error(`${e}: Unknown error`)}getUserFriendlyErrorMessage(t,e){const r=t.message||"Unknown error";return 4001===t.code?"Connection request rejected by user":4902===t.code?"Network needs to be added to your wallet":r.includes("redefine property")||r.includes("which has only a getter")?"Wallet conflict detected. Please disable all wallet extensions except the one you want to use, then refresh.":r.includes("user rejected")?"Connection rejected by user":r.includes("already pending")?"A wallet request is already pending, please check your wallet":e?`${e}: ${r}`:r}getAvailableWallets(){const t={};console.log("Checking for available wallets..."),window.ethereum?console.log("window.ethereum is available"):console.log("window.ethereum is not available");for(const[e,r]of Object.entries(this.providerMap))try{console.log(`Checking for ${e} wallet...`);const n=r();n?(console.log(`Found ${e} wallet`),t[e]={name:e,icon:this.walletIcons[e],provider:n}):console.log(`${e} wallet not detected`)}catch(t){console.warn(`Error detecting ${e} wallet:`,t)}return 0===Object.keys(t).length&&window.ethereum?(console.log("No specific wallets detected, but window.ethereum exists. Adding MetaMask as fallback."),t.metamask={name:"metamask",icon:this.walletIcons.metamask,provider:window.ethereum}):!t.metamask&&window.ethereum&&(console.log("window.ethereum exists. Adding MetaMask option regardless of detection."),t.metamask={name:"metamask",icon:this.walletIcons.metamask,provider:window.ethereum}),console.log("Available wallets:",Object.keys(t)),t}async selectWallet(t){try{if(this.cleanup(),!this.providerMap[t])throw new Error(`Unsupported wallet: ${t}`);const e=this.providerMap[t]();if(!e)throw new Error(`${t} not detected. Please install it first.`);return this.selectedWallet=t,this.provider=e,this.setupEventListeners(),this.eventBus.emit("wallet:selected",{type:t,provider:e}),t}catch(t){const e=this.formatError(t,"Wallet selection failed");throw this.eventBus.emit("wallet:error",e),e}}setupEventListeners(){if(this.provider){try{this.provider.removeListener("chainChanged",this.handleNetworkChange),this.provider.removeListener("accountsChanged",this.handleAccountChange)}catch(t){}this.provider.on("chainChanged",()=>this.handleNetworkChange()),this.provider.on("accountsChanged",t=>this.handleAccountChange(t))}}cleanup(){if(this.provider)try{this.provider.removeListener("chainChanged",this.handleNetworkChange),this.provider.removeListener("accountsChanged",this.handleAccountChange)}catch(t){}this.provider=null,this.signer=null,this.connectedAddress=null,this.connected=!1,this.ethersProvider=null}async connect(){try{if(!this.selectedWallet||!this.provider)throw new Error("Please select a wallet first");let t;this.eventBus.emit("wallet:connecting"),console.log(`Attempting to connect to ${this.selectedWallet}...`);try{if(await new Promise(t=>setTimeout(t,500)),"phantom"===this.selectedWallet&&window.phantom&&window.phantom.ethereum)console.log("Using phantom-specific connection method"),t=await window.phantom.ethereum.request({method:"eth_requestAccounts"});else{console.log(`Using standard connection method for ${this.selectedWallet}`);try{const t=await this.provider.request({method:"eth_accounts"});console.log("Existing accounts:",t),t&&0!==t.length||console.log("No existing accounts found, requesting user approval...")}catch(t){console.warn("Error checking existing accounts:",t)}t=await this.provider.request({method:"eth_requestAccounts",params:[]})}}catch(t){throw console.error("Error requesting accounts:",t),t&&4001===t.code?this.formatError(t,"Wallet connection rejected"):t&&t.message&&t.message.includes("wallet must has at least one account")?new Error("Your wallet has no accounts. Please create at least one account in your wallet and try again."):t}if(console.log("Accounts received:",t),!t||!t[0])throw new Error("No accounts found. Please unlock your wallet and make sure you have at least one account set up.");return this.connectedAddress=t[0],this.connected=!0,console.log(`Successfully connected to account: ${this.connectedAddress}`),this.selectedWallet&&localStorage.setItem("ms2fun_lastWallet",this.selectedWallet),this.ethersProvider=new lc(this.provider,"any"),this.signer=this.ethersProvider.getSigner(),this.eventBus.emit("wallet:connected",{address:this.connectedAddress,walletType:this.selectedWallet,provider:this.provider,ethersProvider:this.ethersProvider,signer:this.signer}),this.connectedAddress}catch(t){if(console.error("Wallet connection error:",t),t.message&&(t.message.includes("at least one account")||t.message.includes("wallet must has")||t.message.includes("no accounts"))){const e=new Error("Your wallet has no accounts. Please create at least one account in your wallet and try again.");throw e.code=t.code,e.originalError=t,this.eventBus.emit("wallet:error",e),e}const e=this.formatError(t,"Wallet connection failed");throw this.eventBus.emit("wallet:error",e),e}}async switchNetwork(t){try{if(!this.provider)throw new Error("No wallet connected");const e=`0x${Number(t).toString(16)}`;this.eventBus.emit("network:switching",{to:t,automatic:!1});try{return await this.provider.request({method:"wallet_switchEthereumChain",params:[{chainId:e}]}),this.ethersProvider=new lc(this.provider,"any"),this.signer=this.ethersProvider.getSigner(),this.eventBus.emit("network:switched",{to:t,success:!0}),!0}catch(t){throw 4902===t.code?new Error("Network needs to be added first"):t}}catch(e){const r=this.formatError(e,"Network switch failed");throw this.eventBus.emit("network:switch:error",{from:null,to:t,error:r.message,originalError:e}),this.eventBus.emit("network:switched",{to:t,success:!1,error:r.message}),r}}getAddress(){return this.connectedAddress}isConnected(){return this.connected&&!!this.connectedAddress}getProviderAndSigner(){return{provider:this.ethersProvider,signer:this.signer}}handleNetworkChange(){this.provider&&(this.ethersProvider=new lc(this.provider,"any"),this.signer=this.ethersProvider.getSigner())}handleAccountChange(t){t&&Array.isArray(t)&&(0===t.length?(this.connected=!1,this.connectedAddress=null,this.eventBus.emit("wallet:disconnected")):t[0]!==this.connectedAddress&&(this.connectedAddress=t[0],this.eventBus.emit("wallet:changed",{address:t[0]})))}async disconnect(){this.cleanup(),this.eventBus.emit("wallet:disconnected")}}});
10
10
  //# sourceMappingURL=micro-web3.umd.js.map