@monygroupcorp/micro-web3 0.1.0 → 0.1.3

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
- import{Component as t}from"@monygroupcorp/microact";var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function r(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var n,i={exports:{}};var o=(n||(n=1,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,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!==s){var u=1;for(c=l(t,h,t.length,e),h=0;h<s;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],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 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+=(s=(i=0|t.words[p])*(o=0|e.words[f])+u)/67108864|0,u=67108863&s}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,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?u[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],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)},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,h=0|s[0],u=8191&h,d=h>>>13,f=0|s[1],p=8191&f,m=f>>>13,g=0|s[2],v=8191&g,y=g>>>13,w=0|s[3],b=8191&w,E=w>>>13,A=0|s[4],k=8191&A,S=A>>>13,C=0|s[5],_=8191&C,x=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],L=8191&D,U=D>>>13,q=0|a[0],G=8191&q,z=q>>>13,j=0|a[1],H=8191&j,K=j>>>13,W=0|a[2],V=8191&W,J=W>>>13,$=0|a[3],Q=8191&$,Y=$>>>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,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,G))|0)+((8191&(i=(i=Math.imul(u,z))+Math.imul(d,G)|0))<<13)|0;c=((o=Math.imul(d,z))+(i>>>13)|0)+(gt>>>26)|0,gt&=67108863,n=Math.imul(p,G),i=(i=Math.imul(p,z))+Math.imul(m,G)|0,o=Math.imul(m,z);var vt=(c+(n=n+Math.imul(u,H)|0)|0)+((8191&(i=(i=i+Math.imul(u,K)|0)+Math.imul(d,H)|0))<<13)|0;c=((o=o+Math.imul(d,K)|0)+(i>>>13)|0)+(vt>>>26)|0,vt&=67108863,n=Math.imul(v,G),i=(i=Math.imul(v,z))+Math.imul(y,G)|0,o=Math.imul(y,z),n=n+Math.imul(p,H)|0,i=(i=i+Math.imul(p,K)|0)+Math.imul(m,H)|0,o=o+Math.imul(m,K)|0;var yt=(c+(n=n+Math.imul(u,V)|0)|0)+((8191&(i=(i=i+Math.imul(u,J)|0)+Math.imul(d,V)|0))<<13)|0;c=((o=o+Math.imul(d,J)|0)+(i>>>13)|0)+(yt>>>26)|0,yt&=67108863,n=Math.imul(b,G),i=(i=Math.imul(b,z))+Math.imul(E,G)|0,o=Math.imul(E,z),n=n+Math.imul(v,H)|0,i=(i=i+Math.imul(v,K)|0)+Math.imul(y,H)|0,o=o+Math.imul(y,K)|0,n=n+Math.imul(p,V)|0,i=(i=i+Math.imul(p,J)|0)+Math.imul(m,V)|0,o=o+Math.imul(m,J)|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=((o=o+Math.imul(d,Y)|0)+(i>>>13)|0)+(wt>>>26)|0,wt&=67108863,n=Math.imul(k,G),i=(i=Math.imul(k,z))+Math.imul(S,G)|0,o=Math.imul(S,z),n=n+Math.imul(b,H)|0,i=(i=i+Math.imul(b,K)|0)+Math.imul(E,H)|0,o=o+Math.imul(E,K)|0,n=n+Math.imul(v,V)|0,i=(i=i+Math.imul(v,J)|0)+Math.imul(y,V)|0,o=o+Math.imul(y,J)|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(u,Z)|0)|0)+((8191&(i=(i=i+Math.imul(u,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(_,G),i=(i=Math.imul(_,z))+Math.imul(x,G)|0,o=Math.imul(x,z),n=n+Math.imul(k,H)|0,i=(i=i+Math.imul(k,K)|0)+Math.imul(S,H)|0,o=o+Math.imul(S,K)|0,n=n+Math.imul(b,V)|0,i=(i=i+Math.imul(b,J)|0)+Math.imul(E,V)|0,o=o+Math.imul(E,J)|0,n=n+Math.imul(v,Q)|0,i=(i=i+Math.imul(v,Y)|0)+Math.imul(y,Q)|0,o=o+Math.imul(y,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(u,rt)|0)|0)+((8191&(i=(i=i+Math.imul(u,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,G),i=(i=Math.imul(P,z))+Math.imul(I,G)|0,o=Math.imul(I,z),n=n+Math.imul(_,H)|0,i=(i=i+Math.imul(_,K)|0)+Math.imul(x,H)|0,o=o+Math.imul(x,K)|0,n=n+Math.imul(k,V)|0,i=(i=i+Math.imul(k,J)|0)+Math.imul(S,V)|0,o=o+Math.imul(S,J)|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(y,Z)|0,o=o+Math.imul(y,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(u,ot)|0)|0)+((8191&(i=(i=i+Math.imul(u,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,G),i=(i=Math.imul(M,z))+Math.imul(B,G)|0,o=Math.imul(B,z),n=n+Math.imul(P,H)|0,i=(i=i+Math.imul(P,K)|0)+Math.imul(I,H)|0,o=o+Math.imul(I,K)|0,n=n+Math.imul(_,V)|0,i=(i=i+Math.imul(_,J)|0)+Math.imul(x,V)|0,o=o+Math.imul(x,J)|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(y,rt)|0,o=o+Math.imul(y,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(u,lt)|0)|0)+((8191&(i=(i=i+Math.imul(u,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,G),i=(i=Math.imul(F,z))+Math.imul(O,G)|0,o=Math.imul(O,z),n=n+Math.imul(M,H)|0,i=(i=i+Math.imul(M,K)|0)+Math.imul(B,H)|0,o=o+Math.imul(B,K)|0,n=n+Math.imul(P,V)|0,i=(i=i+Math.imul(P,J)|0)+Math.imul(I,V)|0,o=o+Math.imul(I,J)|0,n=n+Math.imul(_,Q)|0,i=(i=i+Math.imul(_,Y)|0)+Math.imul(x,Q)|0,o=o+Math.imul(x,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(y,ot)|0,o=o+Math.imul(y,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(u,ut)|0)|0)+((8191&(i=(i=i+Math.imul(u,dt)|0)+Math.imul(d,ut)|0))<<13)|0;c=((o=o+Math.imul(d,dt)|0)+(i>>>13)|0)+(St>>>26)|0,St&=67108863,n=Math.imul(L,G),i=(i=Math.imul(L,z))+Math.imul(U,G)|0,o=Math.imul(U,z),n=n+Math.imul(F,H)|0,i=(i=i+Math.imul(F,K)|0)+Math.imul(O,H)|0,o=o+Math.imul(O,K)|0,n=n+Math.imul(M,V)|0,i=(i=i+Math.imul(M,J)|0)+Math.imul(B,V)|0,o=o+Math.imul(B,J)|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(_,Z)|0,i=(i=i+Math.imul(_,tt)|0)+Math.imul(x,Z)|0,o=o+Math.imul(x,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(y,lt)|0,o=o+Math.imul(y,ct)|0,n=n+Math.imul(p,ut)|0,i=(i=i+Math.imul(p,dt)|0)+Math.imul(m,ut)|0,o=o+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=((o=o+Math.imul(d,mt)|0)+(i>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,n=Math.imul(L,H),i=(i=Math.imul(L,K))+Math.imul(U,H)|0,o=Math.imul(U,K),n=n+Math.imul(F,V)|0,i=(i=i+Math.imul(F,J)|0)+Math.imul(O,V)|0,o=o+Math.imul(O,J)|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(_,rt)|0,i=(i=i+Math.imul(_,nt)|0)+Math.imul(x,rt)|0,o=o+Math.imul(x,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,ut)|0,i=(i=i+Math.imul(v,dt)|0)+Math.imul(y,ut)|0,o=o+Math.imul(y,dt)|0;var _t=(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)+(_t>>>26)|0,_t&=67108863,n=Math.imul(L,V),i=(i=Math.imul(L,J))+Math.imul(U,V)|0,o=Math.imul(U,J),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(_,ot)|0,i=(i=i+Math.imul(_,st)|0)+Math.imul(x,ot)|0,o=o+Math.imul(x,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,ut)|0,i=(i=i+Math.imul(b,dt)|0)+Math.imul(E,ut)|0,o=o+Math.imul(E,dt)|0;var xt=(c+(n=n+Math.imul(v,pt)|0)|0)+((8191&(i=(i=i+Math.imul(v,mt)|0)+Math.imul(y,pt)|0))<<13)|0;c=((o=o+Math.imul(y,mt)|0)+(i>>>13)|0)+(xt>>>26)|0,xt&=67108863,n=Math.imul(L,Q),i=(i=Math.imul(L,Y))+Math.imul(U,Q)|0,o=Math.imul(U,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(_,lt)|0,i=(i=i+Math.imul(_,ct)|0)+Math.imul(x,lt)|0,o=o+Math.imul(x,ct)|0,n=n+Math.imul(k,ut)|0,i=(i=i+Math.imul(k,dt)|0)+Math.imul(S,ut)|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(L,Z),i=(i=Math.imul(L,tt))+Math.imul(U,Z)|0,o=Math.imul(U,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(_,ut)|0,i=(i=i+Math.imul(_,dt)|0)+Math.imul(x,ut)|0,o=o+Math.imul(x,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(L,rt),i=(i=Math.imul(L,nt))+Math.imul(U,rt)|0,o=Math.imul(U,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,ut)|0,i=(i=i+Math.imul(P,dt)|0)+Math.imul(I,ut)|0,o=o+Math.imul(I,dt)|0;var It=(c+(n=n+Math.imul(_,pt)|0)|0)+((8191&(i=(i=i+Math.imul(_,mt)|0)+Math.imul(x,pt)|0))<<13)|0;c=((o=o+Math.imul(x,mt)|0)+(i>>>13)|0)+(It>>>26)|0,It&=67108863,n=Math.imul(L,ot),i=(i=Math.imul(L,st))+Math.imul(U,ot)|0,o=Math.imul(U,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,ut)|0,i=(i=i+Math.imul(M,dt)|0)+Math.imul(B,ut)|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(L,lt),i=(i=Math.imul(L,ct))+Math.imul(U,lt)|0,o=Math.imul(U,ct),n=n+Math.imul(F,ut)|0,i=(i=i+Math.imul(F,dt)|0)+Math.imul(O,ut)|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(L,ut),i=(i=Math.imul(L,dt))+Math.imul(U,ut)|0,o=Math.imul(U,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(L,pt))|0)+((8191&(i=(i=Math.imul(L,mt))+Math.imul(U,pt)|0))<<13)|0;return c=((o=Math.imul(U,mt))+(i>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,l[0]=gt,l[1]=vt,l[2]=yt,l[3]=wt,l[4]=bt,l[5]=Et,l[6]=At,l[7]=kt,l[8]=St,l[9]=Ct,l[10]=_t,l[11]=xt,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 h=o-c,u=(0|t.words[h])*(0|e.words[c]),d=67108863&u;a=67108863&(d=d+a|0),i+=(s=(s=s+(u/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 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-o|u>>>o,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,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 h=n.clone()._ishlnsubmul(o,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[o.length+u])+(0|n.words[o.length+u-1]);for(d=Math.min(d/s|0,67108863),n._ishlnsubmul(o,d,u);0!==n.negative;)d--,n.negative=0,n._ishlnsubmul(o,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&&(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 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;)(o.isOdd()||s.isOdd())&&(o.iadd(h),s.isub(u)),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(h),l.isub(u)),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,h=1;0===(e.words[0]&h)&&c<26;++c,h<<=1);if(c>0)for(e.iushrn(c);c-- >0;)s.isOdd()&&s.iadd(l),s.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),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 y={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 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,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(y[t])return y[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 y[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),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,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(u,new i(1).iushln(p-g-1));d=d.redMul(v),u=v.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 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],h=l-1;h>=0;h--){var u=c>>h&1;o!==r[0]&&(o=this.sqr(o)),0!==u||0!==s?(s<<=1,s|=u,(4===++a||0===n&&0===h)&&(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)}}(i,i.exports)),i.exports),s=r(o);let a=!1,l=!1;const c={debug:1,default:2,info:2,warning:3,error:4,off:5};let h=c.default,u=null;const d=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 f,p;!function(t){t.DEBUG="DEBUG",t.INFO="INFO",t.WARNING="WARNING",t.ERROR="ERROR",t.OFF="OFF"}(f||(f={})),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"}(p||(p={}));const m="0123456789abcdef";class g{constructor(t){Object.defineProperty(this,"version",{enumerable:!0,value:t,writable:!1})}_log(t,e){const r=t.toLowerCase();null==c[r]&&this.throwArgumentError("invalid log level name","logLevel",t),h>c[r]||console.log.apply(console,e)}debug(...t){this._log(g.levels.DEBUG,t)}info(...t){this._log(g.levels.INFO,t)}warn(...t){this._log(g.levels.WARNING,t)}makeError(t,e,r){if(l)return this.makeError("censored error",e,{});e||(e=g.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+=m[e[t]>>4],r+=m[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 p.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 p.CALL_EXCEPTION:case p.INSUFFICIENT_FUNDS:case p.MISSING_NEW:case p.NONCE_EXPIRED:case p.REPLACEMENT_UNDERPRICED:case p.TRANSACTION_REPLACED:case p.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,g.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){d&&this.throwError("platform missing String.prototype.normalize",g.errors.UNSUPPORTED_OPERATION,{operation:"String.prototype.normalize",form:d})}checkSafeUint53(t,e){"number"==typeof t&&(null==e&&(e="value not safe"),(t<0||t>=9007199254740991)&&this.throwError(e,g.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"out-of-safe-range",value:t}),t%1&&this.throwError(e,g.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"non-integer",value:t}))}checkArgumentCount(t,e,r){r=r?": "+r:"",t<e&&this.throwError("missing argument"+r,g.errors.MISSING_ARGUMENT,{count:t,expectedCount:e}),t>e&&this.throwError("too many arguments"+r,g.errors.UNEXPECTED_ARGUMENT,{count:t,expectedCount:e})}checkNew(t,e){t!==Object&&null!=t||this.throwError("missing new",g.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",g.errors.UNSUPPORTED_OPERATION,{name:t.name,operation:"new"}):t!==Object&&null!=t||this.throwError("missing new",g.errors.MISSING_NEW,{name:e.name})}static globalLogger(){return u||(u=new g("logger/5.8.0")),u}static setCensorship(t,e){if(!t&&e&&this.globalLogger().throwError("cannot permanently disable censorship",g.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"}),a){if(!t)return;this.globalLogger().throwError("error censorship permanent",g.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"})}l=!!t,a=!!e}static setLogLevel(t){const e=c[t.toLowerCase()];null!=e?h=e:g.globalLogger().warn("invalid log level - "+t)}static from(t){return new g(t)}}g.errors=p,g.levels=f;const v=new g("bytes/5.8.0");function y(t){return!!t.toHexString}function w(t){return t.slice||(t.slice=function(){const e=Array.prototype.slice.call(arguments);return w(new Uint8Array(Array.prototype.slice.apply(t,e)))}),t}function b(t){return x(t)&&!(t.length%2)||A(t)}function E(t){return"number"==typeof t&&t==t&&t%1==0}function A(t){if(null==t)return!1;if(t.constructor===Uint8Array)return!0;if("string"==typeof t)return!1;if(!E(t.length)||t.length<0)return!1;for(let e=0;e<t.length;e++){const r=t[e];if(!E(r)||r<0||r>=256)return!1}return!0}function k(t,e){if(e||(e={}),"number"==typeof t){v.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),w(new Uint8Array(e))}if(e.allowMissingPrefix&&"string"==typeof t&&"0x"!==t.substring(0,2)&&(t="0x"+t),y(t)&&(t=t.toHexString()),x(t)){let r=t.substring(2);r.length%2&&("left"===e.hexPad?r="0"+r:"right"===e.hexPad?r+="0":v.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 w(new Uint8Array(n))}return A(t)?w(new Uint8Array(t)):v.throwArgumentError("invalid arrayify value","value",t)}function S(t){const e=t.map(t=>k(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),w(n)}function C(t){let e=k(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,e){(t=k(t)).length>e&&v.throwArgumentError("value out of range","value",arguments[0]);const r=new Uint8Array(e);return r.set(t,e-t.length),w(r)}function x(t,e){return!("string"!=typeof t||!t.match(/^0x[0-9A-Fa-f]*$/))&&(!e||t.length===2+2*e)}const T="0123456789abcdef";function P(t,e){if(e||(e={}),"number"==typeof t){v.checkSafeUint53(t,"invalid hexlify value");let e="";for(;t;)e=T[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),y(t))return t.toHexString();if(x(t))return t.length%2&&("left"===e.hexPad?t="0x0"+t.substring(2):"right"===e.hexPad?t+="0":v.throwArgumentError("hex data is odd-length","value",t)),t.toLowerCase();if(A(t)){let e="0x";for(let r=0;r<t.length;r++){let n=t[r];e+=T[(240&n)>>4]+T[15&n]}return e}return v.throwArgumentError("invalid hexlify value","value",t)}function I(t){if("string"!=typeof t)t=P(t);else if(!x(t)||t.length%2)return null;return(t.length-2)/2}function N(t,e,r){return"string"!=typeof t?t=P(t):(!x(t)||t.length%2)&&v.throwArgumentError("invalid hexData","value",t),e=2+2*e,null!=r?"0x"+t.substring(e,2+2*r):"0x"+t.substring(e)}function M(t){let e="0x";return t.forEach(t=>{e+=P(t).substring(2)}),e}function B(t){const e=R(P(t,{hexPad:"left"}));return"0x"===e?"0x0":e}function R(t){"string"!=typeof t&&(t=P(t)),x(t)||v.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 F(t,e){for("string"!=typeof t?t=P(t):x(t)||v.throwArgumentError("invalid hex string","value",t),t.length>2*e+2&&v.throwArgumentError("value out of range","value",arguments[1]);t.length<2*e+2;)t="0x0"+t.substring(2);return t}function O(t){const e={r:"0x",s:"0x",_vs:"0x",recoveryParam:0,v:0,yParityAndS:"0x",compact:"0x"};if(b(t)){let r=k(t);64===r.length?(e.v=27+(r[32]>>7),r[32]&=127,e.r=P(r.slice(0,32)),e.s=P(r.slice(32,64))):65===r.length?(e.r=P(r.slice(0,32)),e.s=P(r.slice(32,64)),e.v=r[64]):v.throwArgumentError("invalid signature string","signature",t),e.v<27&&(0===e.v||1===e.v?e.v+=27:v.throwArgumentError("signature invalid v byte","signature",t)),e.recoveryParam=1-e.v%2,e.recoveryParam&&(r[32]|=128),e._vs=P(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=_(k(e._vs),32);e._vs=P(r);const n=r[0]>=128?1:0;null==e.recoveryParam?e.recoveryParam=n:e.recoveryParam!==n&&v.throwArgumentError("signature recoveryParam mismatch _vs","signature",t),r[0]&=127;const i=P(r);null==e.s?e.s=i:e.s!==i&&v.throwArgumentError("signature v mismatch _vs","signature",t)}if(null==e.recoveryParam)null==e.v?v.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&&v.throwArgumentError("signature recoveryParam mismatch v","signature",t)}null!=e.r&&x(e.r)?e.r=F(e.r,32):v.throwArgumentError("signature missing or invalid r","signature",t),null!=e.s&&x(e.s)?e.s=F(e.s,32):v.throwArgumentError("signature missing or invalid s","signature",t);const r=k(e.s);r[0]>=128&&v.throwArgumentError("signature s out of range","signature",t),e.recoveryParam&&(r[0]|=128);const n=P(r);e._vs&&(x(e._vs)||v.throwArgumentError("signature invalid _vs","signature",t),e._vs=F(e._vs,32)),null==e._vs?e._vs=n:e._vs!==n&&v.throwArgumentError("signature _vs mismatch v and s","signature",t)}return e.yParityAndS=e._vs,e.compact=e.r+e.yParityAndS.substring(2),e}function D(t){return P(S([(t=O(t)).r,t.s,t.recoveryParam?"0x1c":"0x1b"]))}const L="bignumber/5.8.0";var U=s.BN;const q=new g(L),G={},z=9007199254740991;let j=!1;class H{constructor(t,e){t!==G&&q.throwError("cannot call constructor directly; use BigNumber.from",g.errors.UNSUPPORTED_OPERATION,{operation:"new (BigNumber)"}),this._hex=e,this._isBigNumber=!0,Object.freeze(this)}fromTwos(t){return W(V(this).fromTwos(t))}toTwos(t){return W(V(this).toTwos(t))}abs(){return"-"===this._hex[0]?H.from(this._hex.substring(1)):this}add(t){return W(V(this).add(V(t)))}sub(t){return W(V(this).sub(V(t)))}div(t){return H.from(t).isZero()&&J("division-by-zero","div"),W(V(this).div(V(t)))}mul(t){return W(V(this).mul(V(t)))}mod(t){const e=V(t);return e.isNeg()&&J("division-by-zero","mod"),W(V(this).umod(e))}pow(t){const e=V(t);return e.isNeg()&&J("negative-power","pow"),W(V(this).pow(e))}and(t){const e=V(t);return(this.isNegative()||e.isNeg())&&J("unbound-bitwise-result","and"),W(V(this).and(e))}or(t){const e=V(t);return(this.isNegative()||e.isNeg())&&J("unbound-bitwise-result","or"),W(V(this).or(e))}xor(t){const e=V(t);return(this.isNegative()||e.isNeg())&&J("unbound-bitwise-result","xor"),W(V(this).xor(e))}mask(t){return(this.isNegative()||t<0)&&J("negative-width","mask"),W(V(this).maskn(t))}shl(t){return(this.isNegative()||t<0)&&J("negative-width","shl"),W(V(this).shln(t))}shr(t){return(this.isNegative()||t<0)&&J("negative-width","shr"),W(V(this).shrn(t))}eq(t){return V(this).eq(V(t))}lt(t){return V(this).lt(V(t))}lte(t){return V(this).lte(V(t))}gt(t){return V(this).gt(V(t))}gte(t){return V(this).gte(V(t))}isNegative(){return"-"===this._hex[0]}isZero(){return V(this).isZero()}toNumber(){try{return V(this).toNumber()}catch(t){J("overflow","toNumber",this.toString())}return null}toBigInt(){try{return BigInt(this.toString())}catch(t){}return q.throwError("this platform does not support BigInt",g.errors.UNSUPPORTED_OPERATION,{value:this.toString()})}toString(){return arguments.length>0&&(10===arguments[0]?j||(j=!0,q.warn("BigNumber.toString does not accept any parameters; base-10 is assumed")):16===arguments[0]?q.throwError("BigNumber.toString does not accept any parameters; use bigNumber.toHexString()",g.errors.UNEXPECTED_ARGUMENT,{}):q.throwError("BigNumber.toString does not accept parameters",g.errors.UNEXPECTED_ARGUMENT,{})),V(this).toString(10)}toHexString(){return this._hex}toJSON(t){return{type:"BigNumber",hex:this.toHexString()}}static from(t){if(t instanceof H)return t;if("string"==typeof t)return t.match(/^-?0x[0-9a-f]+$/i)?new H(G,K(t)):t.match(/^-?[0-9]+$/)?new H(G,K(new U(t))):q.throwArgumentError("invalid BigNumber string","value",t);if("number"==typeof t)return t%1&&J("underflow","BigNumber.from",t),(t>=z||t<=-z)&&J("overflow","BigNumber.from",t),H.from(String(t));const e=t;if("bigint"==typeof e)return H.from(e.toString());if(A(e))return H.from(P(e));if(e)if(e.toHexString){const t=e.toHexString();if("string"==typeof t)return H.from(t)}else{let t=e._hex;if(null==t&&"BigNumber"===e.type&&(t=e.hex),"string"==typeof t&&(x(t)||"-"===t[0]&&x(t.substring(1))))return H.from(t)}return q.throwArgumentError("invalid BigNumber value","value",t)}static isBigNumber(t){return!(!t||!t._isBigNumber)}}function K(t){if("string"!=typeof t)return K(t.toString(16));if("-"===t[0])return"-"===(t=t.substring(1))[0]&&q.throwArgumentError("invalid hex","value",t),"0x00"===(t=K(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 W(t){return H.from(K(t))}function V(t){const e=H.from(t).toHexString();return"-"===e[0]?new U("-"+e.substring(3),16):new U(e.substring(2),16)}function J(t,e,r){const n={fault:t,operation:e};return null!=r&&(n.value=r),q.throwError(t,g.errors.NUMERIC_FAULT,n)}const $=new g(L),Q={},Y=H.from(0),X=H.from(-1);function Z(t,e,r,n){const i={fault:e,operation:r};return void 0!==n&&(i.value=n),$.throwError(t,g.errors.NUMERIC_FAULT,i)}let tt="0";for(;tt.length<256;)tt+=tt;function et(t){if("number"!=typeof t)try{t=H.from(t).toNumber()}catch(t){}return"number"==typeof t&&t>=0&&t<=256&&!(t%1)?"1"+tt.substring(0,t):$.throwArgumentError("invalid decimal size","decimals",t)}function rt(t,e){null==e&&(e=0);const r=et(e),n=(t=H.from(t)).lt(Y);n&&(t=t.mul(X));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 nt(t,e){null==e&&(e=0);const r=et(e);"string"==typeof t&&t.match(/^-?[0-9.]+$/)||$.throwArgumentError("invalid decimal value","value",t);const n="-"===t.substring(0,1);n&&(t=t.substring(1)),"."===t&&$.throwArgumentError("missing value","value",t);const i=t.split(".");i.length>2&&$.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&&Z("fractional component exceeds decimals","underflow","parseFixed"),""===s&&(s="0");s.length<r.length-1;)s+="0";const a=H.from(o),l=H.from(s);let c=a.mul(r).add(l);return n&&(c=c.mul(X)),c}class it{constructor(t,e,r,n){t!==Q&&$.throwError("cannot use FixedFormat constructor; use FixedFormat.from",g.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=et(n),Object.freeze(this)}static from(t){if(t instanceof it)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||$.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&&$.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&&$.throwArgumentError("invalid fixed format width (not byte aligned)","format.width",r),n>80&&$.throwArgumentError("invalid fixed format (decimals too large)","format.decimals",n),new it(Q,e,r,n)}}class ot{constructor(t,e,r,n){t!==Q&&$.throwError("cannot use FixedNumber constructor; use FixedNumber.from",g.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&&$.throwArgumentError("incompatible format; use fixedNumber.toFormat","other",t)}addUnsafe(t){this._checkFormat(t);const e=nt(this._value,this.format.decimals),r=nt(t._value,t.format.decimals);return ot.fromValue(e.add(r),this.format.decimals,this.format)}subUnsafe(t){this._checkFormat(t);const e=nt(this._value,this.format.decimals),r=nt(t._value,t.format.decimals);return ot.fromValue(e.sub(r),this.format.decimals,this.format)}mulUnsafe(t){this._checkFormat(t);const e=nt(this._value,this.format.decimals),r=nt(t._value,t.format.decimals);return ot.fromValue(e.mul(r).div(this.format._multiplier),this.format.decimals,this.format)}divUnsafe(t){this._checkFormat(t);const e=nt(this._value,this.format.decimals),r=nt(t._value,t.format.decimals);return ot.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=ot.from(t[0],this.format);const r=!t[1].match(/^(0*)$/);return this.isNegative()&&r&&(e=e.subUnsafe(st.toFormat(e.format))),e}ceiling(){const t=this.toString().split(".");1===t.length&&t.push("0");let e=ot.from(t[0],this.format);const r=!t[1].match(/^(0*)$/);return!this.isNegative()&&r&&(e=e.addUnsafe(st.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)&&$.throwArgumentError("invalid decimal count","decimals",t),e[1].length<=t)return this;const r=ot.from("1"+tt.substring(0,t),this.format),n=at.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&&$.throwArgumentError("invalid byte width","width",t);return F(H.from(this._hex).fromTwos(this.format.width).toTwos(t).toHexString(),t/8)}toUnsafeFloat(){return parseFloat(this.toString())}toFormat(t){return ot.fromString(this._value,t)}static fromValue(t,e,r){return null!=r||null==e||function(t){return null!=t&&(H.isBigNumber(t)||"number"==typeof t&&t%1==0||"string"==typeof t&&!!t.match(/^-?[0-9]+$/)||x(t)||"bigint"==typeof t||A(t))}(e)||(r=e,e=null),null==e&&(e=0),null==r&&(r="fixed"),ot.fromString(rt(t,e),it.from(r))}static fromString(t,e){null==e&&(e="fixed");const r=it.from(e),n=nt(t,r.decimals);!r.signed&&n.lt(Y)&&Z("unsigned value cannot be negative","overflow","value",t);let i=null;r.signed?i=n.toTwos(r.width).toHexString():(i=n.toHexString(),i=F(i,r.width/8));const o=rt(n,r.decimals);return new ot(Q,i,o,r)}static fromBytes(t,e){null==e&&(e="fixed");const r=it.from(e);if(k(t).length>r.width/8)throw new Error("overflow");let n=H.from(t);r.signed&&(n=n.fromTwos(r.width));const i=n.toTwos((r.signed?0:1)+r.width).toHexString(),o=rt(n,r.decimals);return new ot(Q,i,o,r)}static from(t,e){if("string"==typeof t)return ot.fromString(t,e);if(A(t))return ot.fromBytes(t,e);try{return ot.fromValue(t,0,e)}catch(t){if(t.code!==g.errors.INVALID_ARGUMENT)throw t}return $.throwArgumentError("invalid FixedNumber value","value",t)}static isFixedNumber(t){return!(!t||!t._isFixedNumber)}}const st=ot.from(1),at=ot.from("0.5");var lt=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 ct=new g("properties/5.8.0");function ht(t,e,r){Object.defineProperty(t,e,{enumerable:!0,value:r,writable:!1})}function ut(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 dt(t){return lt(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 ft(t,e){t&&"object"==typeof t||ct.throwArgumentError("invalid object","object",t),Object.keys(t).forEach(r=>{e[r]||ct.throwArgumentError("invalid object key - "+r,"transaction:"+r,t)})}function pt(t){const e={};for(const r in t)e[r]=t[r];return e}const mt={bigint:!0,boolean:!0,function:!0,number:!0,string:!0};function gt(t){if(null==t||mt[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(!gt(n))return!1}return!0}return ct.throwArgumentError("Cannot deepCopy "+typeof t,"object",t)}function vt(t){if(gt(t))return t;if(Array.isArray(t))return Object.freeze(t.map(t=>yt(t)));if("object"==typeof t){const e={};for(const r in t){const n=t[r];void 0!==n&&ht(e,r,yt(n))}return e}return ct.throwArgumentError("Cannot deepCopy "+typeof t,"object",t)}function yt(t){return vt(t)}class wt{constructor(t){for(const e in t)this[e]=yt(t[e])}}const bt="abi/5.8.0",Et=new g(bt),At={};let kt={calldata:!0,memory:!0,storage:!0},St={calldata:!0,memory:!0};function Ct(t,e){if("bytes"===t||"string"===t){if(kt[e])return!0}else if("address"===t){if("payable"===e)return!0}else if((t.indexOf("[")>=0||"tuple"===t)&&St[e])return!0;return(kt[e]||"payable"===e)&&Et.throwArgumentError("invalid modifier","name",e),!1}function _t(t,e){for(let r in e)ht(t,r,e[r])}const xt=Object.freeze({sighash:"sighash",minimal:"minimal",full:"full",json:"json"}),Tt=new RegExp(/^(.*)\[([0-9]*)\]$/);class Pt{constructor(t,e){t!==At&&Et.throwError("use fromString",g.errors.UNSUPPORTED_OPERATION,{operation:"new ParamType()"}),_t(this,e);let r=this.type.match(Tt);_t(this,r?{arrayLength:parseInt(r[2]||"-1"),arrayChildren:Pt.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=xt.sighash),xt[t]||Et.throwArgumentError("invalid format type","format",t),t===xt.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!==xt.sighash&&(e+=this.type),e+="("+this.components.map(e=>e.format(t)).join(t===xt.full?", ":",")+")"):e+=this.type,t!==xt.sighash&&(!0===this.indexed&&(e+=" indexed"),t===xt.full&&this.name&&(e+=" "+this.name)),e}static from(t,e){return"string"==typeof t?Pt.fromString(t,e):Pt.fromObject(t)}static fromObject(t){return Pt.isParamType(t)?t:new Pt(At,{name:t.name||null,type:qt(t.type),indexed:null==t.indexed?null:!!t.indexed,components:t.components?t.components.map(Pt.fromObject):null})}static fromString(t,e){return r=function(t,e){let r=t;function n(e){Et.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=qt(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=""),Ct(s.type,s.name)&&(s.name=""),s.type=qt(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=""),Ct(s.type,s.name)&&(s.name=""),s.type=qt(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=qt(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=""):Ct(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&&Et.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=""):Ct(s.type,s.name)&&(s.name=""),o.type=qt(o.type),o}(t,!!e),Pt.fromObject({name:r.name,type:r.type,indexed:r.indexed,components:r.components});var r}static isParamType(t){return!(null==t||!t._isParamType)}}function It(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&&Et.throwArgumentError("unbalanced parenthesis","value",t)))}r&&e.push(r);return e}(t).map(t=>Pt.fromString(t,e))}class Nt{constructor(t,e){t!==At&&Et.throwError("use a static from method",g.errors.UNSUPPORTED_OPERATION,{operation:"new Fragment()"}),_t(this,e),this._isFragment=!0,Object.freeze(this)}static from(t){return Nt.isFragment(t)?t:"string"==typeof t?Nt.fromString(t):Nt.fromObject(t)}static fromObject(t){if(Nt.isFragment(t))return t;switch(t.type){case"function":return Dt.fromObject(t);case"event":return Mt.fromObject(t);case"constructor":return Ot.fromObject(t);case"error":return Ut.fromObject(t);case"fallback":case"receive":return null}return Et.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]?Mt.fromString(t.substring(5).trim()):"function"===t.split(" ")[0]?Dt.fromString(t.substring(8).trim()):"constructor"===t.split("(")[0].trim()?Ot.fromString(t.trim()):"error"===t.split(" ")[0]?Ut.fromString(t.substring(5).trim()):Et.throwArgumentError("unsupported fragment","value",t)}static isFragment(t){return!(!t||!t._isFragment)}}class Mt extends Nt{format(t){if(t||(t=xt.sighash),xt[t]||Et.throwArgumentError("invalid format type","format",t),t===xt.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!==xt.sighash&&(e+="event "),e+=this.name+"("+this.inputs.map(e=>e.format(t)).join(t===xt.full?", ":",")+") ",t!==xt.sighash&&this.anonymous&&(e+="anonymous "),e.trim()}static from(t){return"string"==typeof t?Mt.fromString(t):Mt.fromObject(t)}static fromObject(t){if(Mt.isEventFragment(t))return t;"event"!==t.type&&Et.throwArgumentError("invalid event object","value",t);const e={name:zt(t.name),anonymous:t.anonymous,inputs:t.inputs?t.inputs.map(Pt.fromObject):[],type:"event"};return new Mt(At,e)}static fromString(t){let e=t.match(jt);e||Et.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:Et.warn("unknown modifier: "+t)}}),Mt.fromObject({name:e[1].trim(),anonymous:r,inputs:It(e[2],!0),type:"event"})}static isEventFragment(t){return t&&t._isFragment&&"event"===t.type}}function Bt(t,e){e.gas=null;let r=t.split("@");return 1!==r.length?(r.length>2&&Et.throwArgumentError("invalid human-readable ABI signature","value",t),r[1].match(/^[0-9]+$/)||Et.throwArgumentError("invalid human-readable ABI signature gas","value",t),e.gas=H.from(r[1]),r[0]):t}function Rt(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 Ft(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&&Et.throwArgumentError("cannot have constant function with mutability "+e.stateMutability,"value",t),e.payable="payable"===e.stateMutability,null!=t.payable&&!!t.payable!==e.payable&&Et.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||Et.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&&Et.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&&Et.throwArgumentError("unable to determine stateMutability","value",t),e}class Ot extends Nt{format(t){if(t||(t=xt.sighash),xt[t]||Et.throwArgumentError("invalid format type","format",t),t===xt.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===xt.sighash&&Et.throwError("cannot format a constructor for sighash",g.errors.UNSUPPORTED_OPERATION,{operation:"format(sighash)"});let e="constructor("+this.inputs.map(e=>e.format(t)).join(t===xt.full?", ":",")+") ";return this.stateMutability&&"nonpayable"!==this.stateMutability&&(e+=this.stateMutability+" "),e.trim()}static from(t){return"string"==typeof t?Ot.fromString(t):Ot.fromObject(t)}static fromObject(t){if(Ot.isConstructorFragment(t))return t;"constructor"!==t.type&&Et.throwArgumentError("invalid constructor object","value",t);let e=Ft(t);e.constant&&Et.throwArgumentError("constructor cannot be constant","value",t);const r={name:null,type:t.type,inputs:t.inputs?t.inputs.map(Pt.fromObject):[],payable:e.payable,stateMutability:e.stateMutability,gas:t.gas?H.from(t.gas):null};return new Ot(At,r)}static fromString(t){let e={type:"constructor"},r=(t=Bt(t,e)).match(jt);return r&&"constructor"===r[1].trim()||Et.throwArgumentError("invalid constructor string","value",t),e.inputs=It(r[2].trim(),!1),Rt(r[3].trim(),e),Ot.fromObject(e)}static isConstructorFragment(t){return t&&t._isFragment&&"constructor"===t.type}}class Dt extends Ot{format(t){if(t||(t=xt.sighash),xt[t]||Et.throwArgumentError("invalid format type","format",t),t===xt.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!==xt.sighash&&(e+="function "),e+=this.name+"("+this.inputs.map(e=>e.format(t)).join(t===xt.full?", ":",")+") ",t!==xt.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?Dt.fromString(t):Dt.fromObject(t)}static fromObject(t){if(Dt.isFunctionFragment(t))return t;"function"!==t.type&&Et.throwArgumentError("invalid function object","value",t);let e=Ft(t);const r={type:t.type,name:zt(t.name),constant:e.constant,inputs:t.inputs?t.inputs.map(Pt.fromObject):[],outputs:t.outputs?t.outputs.map(Pt.fromObject):[],payable:e.payable,stateMutability:e.stateMutability,gas:t.gas?H.from(t.gas):null};return new Dt(At,r)}static fromString(t){let e={type:"function"},r=(t=Bt(t,e)).split(" returns ");r.length>2&&Et.throwArgumentError("invalid function string","value",t);let n=r[0].match(jt);if(n||Et.throwArgumentError("invalid function signature","value",t),e.name=n[1].trim(),e.name&&zt(e.name),e.inputs=It(n[2],!1),Rt(n[3].trim(),e),r.length>1){let n=r[1].match(jt);""==n[1].trim()&&""==n[3].trim()||Et.throwArgumentError("unexpected tokens","value",t),e.outputs=It(n[2],!1)}else e.outputs=[];return Dt.fromObject(e)}static isFunctionFragment(t){return t&&t._isFragment&&"function"===t.type}}function Lt(t){const e=t.format();return"Error(string)"!==e&&"Panic(uint256)"!==e||Et.throwArgumentError(`cannot specify user defined ${e} error`,"fragment",t),t}class Ut extends Nt{format(t){if(t||(t=xt.sighash),xt[t]||Et.throwArgumentError("invalid format type","format",t),t===xt.json)return JSON.stringify({type:"error",name:this.name,inputs:this.inputs.map(e=>JSON.parse(e.format(t)))});let e="";return t!==xt.sighash&&(e+="error "),e+=this.name+"("+this.inputs.map(e=>e.format(t)).join(t===xt.full?", ":",")+") ",e.trim()}static from(t){return"string"==typeof t?Ut.fromString(t):Ut.fromObject(t)}static fromObject(t){if(Ut.isErrorFragment(t))return t;"error"!==t.type&&Et.throwArgumentError("invalid error object","value",t);const e={type:t.type,name:zt(t.name),inputs:t.inputs?t.inputs.map(Pt.fromObject):[]};return Lt(new Ut(At,e))}static fromString(t){let e={type:"error"},r=t.match(jt);return r||Et.throwArgumentError("invalid error signature","value",t),e.name=r[1].trim(),e.name&&zt(e.name),e.inputs=It(r[2],!1),Lt(Ut.fromObject(e))}static isErrorFragment(t){return t&&t._isFragment&&"error"===t.type}}function qt(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 zt(t){return t&&t.match(Gt)||Et.throwArgumentError(`invalid identifier "${t}"`,"value",t),t}const jt=new RegExp("^([^)(]*)\\((.*)\\)([^)(]*)$");const Ht=new g(bt);function Kt(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 Wt{constructor(t,e,r,n){this.name=t,this.type=e,this.localName=r,this.dynamic=n}_throwError(t,e){Ht.throwArgumentError(t,this.localName,e)}}class Vt{constructor(t){ht(this,"wordSize",t||32),this._data=[],this._dataLength=0,this._padding=new Uint8Array(t)}get data(){return M(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(S(t._data))}writeBytes(t){let e=k(t);const r=e.length%this.wordSize;return r&&(e=S([e,this._padding.slice(r)])),this._writeData(e)}_getValue(t){let e=k(H.from(t));return e.length>this.wordSize&&Ht.throwError("value out-of-bounds",g.errors.BUFFER_OVERRUN,{length:this.wordSize,offset:e.length}),e.length%this.wordSize&&(e=S([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 Jt{constructor(t,e,r,n){ht(this,"_data",k(t)),ht(this,"wordSize",e||32),ht(this,"_coerceFunc",r),ht(this,"allowLoose",n),this._offset=0}get data(){return P(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):Jt.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:Ht.throwError("data out-of-bounds",g.errors.BUFFER_OVERRUN,{length:this._data.length,offset:this._offset+n})),this._data.slice(this._offset,this._offset+n)}subReader(t){return new Jt(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 H.from(this.readBytes(this.wordSize))}}var $t,Qt={exports:{}};
1
+ import{Component as t,eventBus as e}from"@monygroupcorp/microact";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:{}};var s=(i||(i=1,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)}}(o,o.exports)),o.exports),a=n(s);let l=!1,c=!1;const u={debug:1,default:2,info:2,warning:3,error:4,off:5};let h=u.default,d=null;const f=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 p,m;!function(t){t.DEBUG="DEBUG",t.INFO="INFO",t.WARNING="WARNING",t.ERROR="ERROR",t.OFF="OFF"}(p||(p={})),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"}(m||(m={}));const g="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),h>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(c)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+=g[e[t]>>4],r+=g[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 m.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 m.CALL_EXCEPTION:case m.INSUFFICIENT_FUNDS:case m.MISSING_NEW:case m.NONCE_EXPIRED:case m.REPLACEMENT_UNDERPRICED:case m.TRANSACTION_REPLACED:case m.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,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){f&&this.throwError("platform missing String.prototype.normalize",v.errors.UNSUPPORTED_OPERATION,{operation:"String.prototype.normalize",form:f})}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 d||(d=new v("logger/5.8.0")),d}static setCensorship(t,e){if(!t&&e&&this.globalLogger().throwError("cannot permanently disable censorship",v.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"}),l){if(!t)return;this.globalLogger().throwError("error censorship permanent",v.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"})}c=!!t,l=!!e}static setLogLevel(t){const e=u[t.toLowerCase()];null!=e?h=e:v.globalLogger().warn("invalid log level - "+t)}static from(t){return new v(t)}}v.errors=m,v.levels=p;const w=new v("bytes/5.8.0");function y(t){return!!t.toHexString}function b(t){return t.slice||(t.slice=function(){const e=Array.prototype.slice.call(arguments);return b(new Uint8Array(Array.prototype.slice.apply(t,e)))}),t}function E(t){return T(t)&&!(t.length%2)||k(t)}function A(t){return"number"==typeof t&&t==t&&t%1==0}function k(t){if(null==t)return!1;if(t.constructor===Uint8Array)return!0;if("string"==typeof t)return!1;if(!A(t.length)||t.length<0)return!1;for(let e=0;e<t.length;e++){const r=t[e];if(!A(r)||r<0||r>=256)return!1}return!0}function S(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),b(new Uint8Array(e))}if(e.allowMissingPrefix&&"string"==typeof t&&"0x"!==t.substring(0,2)&&(t="0x"+t),y(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 b(new Uint8Array(n))}return k(t)?b(new Uint8Array(t)):w.throwArgumentError("invalid arrayify value","value",t)}function C(t){const e=t.map(t=>S(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),b(n)}function x(t){let e=S(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,e){(t=S(t)).length>e&&w.throwArgumentError("value out of range","value",arguments[0]);const r=new Uint8Array(e);return r.set(t,e-t.length),b(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 I(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),y(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(k(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 N(t){if("string"!=typeof t)t=I(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=I(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 B(t){let e="0x";return t.forEach(t=>{e+=I(t).substring(2)}),e}function R(t){const e=F(I(t,{hexPad:"left"}));return"0x"===e?"0x0":e}function F(t){"string"!=typeof t&&(t=I(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 O(t,e){for("string"!=typeof t?t=I(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 D(t){const e={r:"0x",s:"0x",_vs:"0x",recoveryParam:0,v:0,yParityAndS:"0x",compact:"0x"};if(E(t)){let r=S(t);64===r.length?(e.v=27+(r[32]>>7),r[32]&=127,e.r=I(r.slice(0,32)),e.s=I(r.slice(32,64))):65===r.length?(e.r=I(r.slice(0,32)),e.s=I(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=I(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=_(S(e._vs),32);e._vs=I(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=I(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=O(e.r,32):w.throwArgumentError("signature missing or invalid r","signature",t),null!=e.s&&T(e.s)?e.s=O(e.s,32):w.throwArgumentError("signature missing or invalid s","signature",t);const r=S(e.s);r[0]>=128&&w.throwArgumentError("signature s out of range","signature",t),e.recoveryParam&&(r[0]|=128);const n=I(r);e._vs&&(T(e._vs)||w.throwArgumentError("signature invalid _vs","signature",t),e._vs=O(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 I(C([(t=D(t)).r,t.s,t.recoveryParam?"0x1c":"0x1b"]))}const L="bignumber/5.8.0";var q=a.BN;const z=new v(L),G={},H=9007199254740991;let j=!1;class K{constructor(t,e){t!==G&&z.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($(this).fromTwos(t))}toTwos(t){return V($(this).toTwos(t))}abs(){return"-"===this._hex[0]?K.from(this._hex.substring(1)):this}add(t){return V($(this).add($(t)))}sub(t){return V($(this).sub($(t)))}div(t){return K.from(t).isZero()&&J("division-by-zero","div"),V($(this).div($(t)))}mul(t){return V($(this).mul($(t)))}mod(t){const e=$(t);return e.isNeg()&&J("division-by-zero","mod"),V($(this).umod(e))}pow(t){const e=$(t);return e.isNeg()&&J("negative-power","pow"),V($(this).pow(e))}and(t){const e=$(t);return(this.isNegative()||e.isNeg())&&J("unbound-bitwise-result","and"),V($(this).and(e))}or(t){const e=$(t);return(this.isNegative()||e.isNeg())&&J("unbound-bitwise-result","or"),V($(this).or(e))}xor(t){const e=$(t);return(this.isNegative()||e.isNeg())&&J("unbound-bitwise-result","xor"),V($(this).xor(e))}mask(t){return(this.isNegative()||t<0)&&J("negative-width","mask"),V($(this).maskn(t))}shl(t){return(this.isNegative()||t<0)&&J("negative-width","shl"),V($(this).shln(t))}shr(t){return(this.isNegative()||t<0)&&J("negative-width","shr"),V($(this).shrn(t))}eq(t){return $(this).eq($(t))}lt(t){return $(this).lt($(t))}lte(t){return $(this).lte($(t))}gt(t){return $(this).gt($(t))}gte(t){return $(this).gte($(t))}isNegative(){return"-"===this._hex[0]}isZero(){return $(this).isZero()}toNumber(){try{return $(this).toNumber()}catch(t){J("overflow","toNumber",this.toString())}return null}toBigInt(){try{return BigInt(this.toString())}catch(t){}return z.throwError("this platform does not support BigInt",v.errors.UNSUPPORTED_OPERATION,{value:this.toString()})}toString(){return arguments.length>0&&(10===arguments[0]?j||(j=!0,z.warn("BigNumber.toString does not accept any parameters; base-10 is assumed")):16===arguments[0]?z.throwError("BigNumber.toString does not accept any parameters; use bigNumber.toHexString()",v.errors.UNEXPECTED_ARGUMENT,{}):z.throwError("BigNumber.toString does not accept parameters",v.errors.UNEXPECTED_ARGUMENT,{})),$(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,W(t)):t.match(/^-?[0-9]+$/)?new K(G,W(new q(t))):z.throwArgumentError("invalid BigNumber string","value",t);if("number"==typeof t)return t%1&&J("underflow","BigNumber.from",t),(t>=H||t<=-H)&&J("overflow","BigNumber.from",t),K.from(String(t));const e=t;if("bigint"==typeof e)return K.from(e.toString());if(k(e))return K.from(I(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 z.throwArgumentError("invalid BigNumber value","value",t)}static isBigNumber(t){return!(!t||!t._isBigNumber)}}function W(t){if("string"!=typeof t)return W(t.toString(16));if("-"===t[0])return"-"===(t=t.substring(1))[0]&&z.throwArgumentError("invalid hex","value",t),"0x00"===(t=W(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(W(t))}function $(t){const e=K.from(t).toHexString();return"-"===e[0]?new q("-"+e.substring(3),16):new q(e.substring(2),16)}function J(t,e,r){const n={fault:t,operation:e};return null!=r&&(n.value=r),z.throwError(t,v.errors.NUMERIC_FAULT,n)}const Q=new v(L),Y={},X=K.from(0),Z=K.from(-1);function tt(t,e,r,n){const i={fault:e,operation:r};return void 0!==n&&(i.value=n),Q.throwError(t,v.errors.NUMERIC_FAULT,i)}let et="0";for(;et.length<256;)et+=et;function rt(t){if("number"!=typeof t)try{t=K.from(t).toNumber()}catch(t){}return"number"==typeof t&&t>=0&&t<=256&&!(t%1)?"1"+et.substring(0,t):Q.throwArgumentError("invalid decimal size","decimals",t)}function nt(t,e){null==e&&(e=0);const r=rt(e),n=(t=K.from(t)).lt(X);n&&(t=t.mul(Z));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 it(t,e){null==e&&(e=0);const r=rt(e);"string"==typeof t&&t.match(/^-?[0-9.]+$/)||Q.throwArgumentError("invalid decimal value","value",t);const n="-"===t.substring(0,1);n&&(t=t.substring(1)),"."===t&&Q.throwArgumentError("missing value","value",t);const i=t.split(".");i.length>2&&Q.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&&tt("fractional component exceeds decimals","underflow","parseFixed"),""===s&&(s="0");s.length<r.length-1;)s+="0";const a=K.from(o),l=K.from(s);let c=a.mul(r).add(l);return n&&(c=c.mul(Z)),c}class ot{constructor(t,e,r,n){t!==Y&&Q.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=rt(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||Q.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&&Q.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&&Q.throwArgumentError("invalid fixed format width (not byte aligned)","format.width",r),n>80&&Q.throwArgumentError("invalid fixed format (decimals too large)","format.decimals",n),new ot(Y,e,r,n)}}class st{constructor(t,e,r,n){t!==Y&&Q.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&&Q.throwArgumentError("incompatible format; use fixedNumber.toFormat","other",t)}addUnsafe(t){this._checkFormat(t);const e=it(this._value,this.format.decimals),r=it(t._value,t.format.decimals);return st.fromValue(e.add(r),this.format.decimals,this.format)}subUnsafe(t){this._checkFormat(t);const e=it(this._value,this.format.decimals),r=it(t._value,t.format.decimals);return st.fromValue(e.sub(r),this.format.decimals,this.format)}mulUnsafe(t){this._checkFormat(t);const e=it(this._value,this.format.decimals),r=it(t._value,t.format.decimals);return st.fromValue(e.mul(r).div(this.format._multiplier),this.format.decimals,this.format)}divUnsafe(t){this._checkFormat(t);const e=it(this._value,this.format.decimals),r=it(t._value,t.format.decimals);return st.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=st.from(t[0],this.format);const r=!t[1].match(/^(0*)$/);return this.isNegative()&&r&&(e=e.subUnsafe(at.toFormat(e.format))),e}ceiling(){const t=this.toString().split(".");1===t.length&&t.push("0");let e=st.from(t[0],this.format);const r=!t[1].match(/^(0*)$/);return!this.isNegative()&&r&&(e=e.addUnsafe(at.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)&&Q.throwArgumentError("invalid decimal count","decimals",t),e[1].length<=t)return this;const r=st.from("1"+et.substring(0,t),this.format),n=lt.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&&Q.throwArgumentError("invalid byte width","width",t);return O(K.from(this._hex).fromTwos(this.format.width).toTwos(t).toHexString(),t/8)}toUnsafeFloat(){return parseFloat(this.toString())}toFormat(t){return st.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||k(t))}(e)||(r=e,e=null),null==e&&(e=0),null==r&&(r="fixed"),st.fromString(nt(t,e),ot.from(r))}static fromString(t,e){null==e&&(e="fixed");const r=ot.from(e),n=it(t,r.decimals);!r.signed&&n.lt(X)&&tt("unsigned value cannot be negative","overflow","value",t);let i=null;r.signed?i=n.toTwos(r.width).toHexString():(i=n.toHexString(),i=O(i,r.width/8));const o=nt(n,r.decimals);return new st(Y,i,o,r)}static fromBytes(t,e){null==e&&(e="fixed");const r=ot.from(e);if(S(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(),o=nt(n,r.decimals);return new st(Y,i,o,r)}static from(t,e){if("string"==typeof t)return st.fromString(t,e);if(k(t))return st.fromBytes(t,e);try{return st.fromValue(t,0,e)}catch(t){if(t.code!==v.errors.INVALID_ARGUMENT)throw t}return Q.throwArgumentError("invalid FixedNumber value","value",t)}static isFixedNumber(t){return!(!t||!t._isFixedNumber)}}const at=st.from(1),lt=st.from("0.5");var ct=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 ut=new v("properties/5.8.0");function ht(t,e,r){Object.defineProperty(t,e,{enumerable:!0,value:r,writable:!1})}function dt(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 ft(t){return ct(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 pt(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 mt(t){const e={};for(const r in t)e[r]=t[r];return e}const gt={bigint:!0,boolean:!0,function:!0,number:!0,string:!0};function vt(t){if(null==t||gt[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=>yt(t)));if("object"==typeof t){const e={};for(const r in t){const n=t[r];void 0!==n&&ht(e,r,yt(n))}return e}return ut.throwArgumentError("Cannot deepCopy "+typeof t,"object",t)}function yt(t){return wt(t)}class bt{constructor(t){for(const e in t)this[e]=yt(t[e])}}const Et="abi/5.8.0",At=new v(Et),kt={};let St={calldata:!0,memory:!0,storage:!0},Ct={calldata:!0,memory:!0};function xt(t,e){if("bytes"===t||"string"===t){if(St[e])return!0}else if("address"===t){if("payable"===e)return!0}else if((t.indexOf("[")>=0||"tuple"===t)&&Ct[e])return!0;return(St[e]||"payable"===e)&&At.throwArgumentError("invalid modifier","name",e),!1}function _t(t,e){for(let r in e)ht(t,r,e[r])}const Tt=Object.freeze({sighash:"sighash",minimal:"minimal",full:"full",json:"json"}),Pt=new RegExp(/^(.*)\[([0-9]*)\]$/);class It{constructor(t,e){t!==kt&&At.throwError("use fromString",v.errors.UNSUPPORTED_OPERATION,{operation:"new ParamType()"}),_t(this,e);let r=this.type.match(Pt);_t(this,r?{arrayLength:parseInt(r[2]||"-1"),arrayChildren:It.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]||At.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?It.fromString(t,e):It.fromObject(t)}static fromObject(t){return It.isParamType(t)?t:new It(kt,{name:t.name||null,type:zt(t.type),indexed:null==t.indexed?null:!!t.indexed,components:t.components?t.components.map(It.fromObject):null})}static fromString(t,e){return r=function(t,e){let r=t;function n(e){At.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=zt(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=""),xt(s.type,s.name)&&(s.name=""),s.type=zt(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=""),xt(s.type,s.name)&&(s.name=""),s.type=zt(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=zt(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=""):xt(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&&At.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=""):xt(s.type,s.name)&&(s.name=""),o.type=zt(o.type),o}(t,!!e),It.fromObject({name:r.name,type:r.type,indexed:r.indexed,components:r.components});var r}static isParamType(t){return!(null==t||!t._isParamType)}}function Nt(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&&At.throwArgumentError("unbalanced parenthesis","value",t)))}r&&e.push(r);return e}(t).map(t=>It.fromString(t,e))}class Mt{constructor(t,e){t!==kt&&At.throwError("use a static from method",v.errors.UNSUPPORTED_OPERATION,{operation:"new Fragment()"}),_t(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 Bt.fromObject(t);case"constructor":return Dt.fromObject(t);case"error":return qt.fromObject(t);case"fallback":case"receive":return null}return At.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]?Bt.fromString(t.substring(5).trim()):"function"===t.split(" ")[0]?Ut.fromString(t.substring(8).trim()):"constructor"===t.split("(")[0].trim()?Dt.fromString(t.trim()):"error"===t.split(" ")[0]?qt.fromString(t.substring(5).trim()):At.throwArgumentError("unsupported fragment","value",t)}static isFragment(t){return!(!t||!t._isFragment)}}class Bt extends Mt{format(t){if(t||(t=Tt.sighash),Tt[t]||At.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?Bt.fromString(t):Bt.fromObject(t)}static fromObject(t){if(Bt.isEventFragment(t))return t;"event"!==t.type&&At.throwArgumentError("invalid event object","value",t);const e={name:Ht(t.name),anonymous:t.anonymous,inputs:t.inputs?t.inputs.map(It.fromObject):[],type:"event"};return new Bt(kt,e)}static fromString(t){let e=t.match(jt);e||At.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:At.warn("unknown modifier: "+t)}}),Bt.fromObject({name:e[1].trim(),anonymous:r,inputs:Nt(e[2],!0),type:"event"})}static isEventFragment(t){return t&&t._isFragment&&"event"===t.type}}function Rt(t,e){e.gas=null;let r=t.split("@");return 1!==r.length?(r.length>2&&At.throwArgumentError("invalid human-readable ABI signature","value",t),r[1].match(/^[0-9]+$/)||At.throwArgumentError("invalid human-readable ABI signature gas","value",t),e.gas=K.from(r[1]),r[0]):t}function Ft(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 Ot(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&&At.throwArgumentError("cannot have constant function with mutability "+e.stateMutability,"value",t),e.payable="payable"===e.stateMutability,null!=t.payable&&!!t.payable!==e.payable&&At.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||At.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&&At.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&&At.throwArgumentError("unable to determine stateMutability","value",t),e}class Dt extends Mt{format(t){if(t||(t=Tt.sighash),Tt[t]||At.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&&At.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?Dt.fromString(t):Dt.fromObject(t)}static fromObject(t){if(Dt.isConstructorFragment(t))return t;"constructor"!==t.type&&At.throwArgumentError("invalid constructor object","value",t);let e=Ot(t);e.constant&&At.throwArgumentError("constructor cannot be constant","value",t);const r={name:null,type:t.type,inputs:t.inputs?t.inputs.map(It.fromObject):[],payable:e.payable,stateMutability:e.stateMutability,gas:t.gas?K.from(t.gas):null};return new Dt(kt,r)}static fromString(t){let e={type:"constructor"},r=(t=Rt(t,e)).match(jt);return r&&"constructor"===r[1].trim()||At.throwArgumentError("invalid constructor string","value",t),e.inputs=Nt(r[2].trim(),!1),Ft(r[3].trim(),e),Dt.fromObject(e)}static isConstructorFragment(t){return t&&t._isFragment&&"constructor"===t.type}}class Ut extends Dt{format(t){if(t||(t=Tt.sighash),Tt[t]||At.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&&At.throwArgumentError("invalid function object","value",t);let e=Ot(t);const r={type:t.type,name:Ht(t.name),constant:e.constant,inputs:t.inputs?t.inputs.map(It.fromObject):[],outputs:t.outputs?t.outputs.map(It.fromObject):[],payable:e.payable,stateMutability:e.stateMutability,gas:t.gas?K.from(t.gas):null};return new Ut(kt,r)}static fromString(t){let e={type:"function"},r=(t=Rt(t,e)).split(" returns ");r.length>2&&At.throwArgumentError("invalid function string","value",t);let n=r[0].match(jt);if(n||At.throwArgumentError("invalid function signature","value",t),e.name=n[1].trim(),e.name&&Ht(e.name),e.inputs=Nt(n[2],!1),Ft(n[3].trim(),e),r.length>1){let n=r[1].match(jt);""==n[1].trim()&&""==n[3].trim()||At.throwArgumentError("unexpected tokens","value",t),e.outputs=Nt(n[2],!1)}else e.outputs=[];return Ut.fromObject(e)}static isFunctionFragment(t){return t&&t._isFragment&&"function"===t.type}}function Lt(t){const e=t.format();return"Error(string)"!==e&&"Panic(uint256)"!==e||At.throwArgumentError(`cannot specify user defined ${e} error`,"fragment",t),t}class qt extends Mt{format(t){if(t||(t=Tt.sighash),Tt[t]||At.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?qt.fromString(t):qt.fromObject(t)}static fromObject(t){if(qt.isErrorFragment(t))return t;"error"!==t.type&&At.throwArgumentError("invalid error object","value",t);const e={type:t.type,name:Ht(t.name),inputs:t.inputs?t.inputs.map(It.fromObject):[]};return Lt(new qt(kt,e))}static fromString(t){let e={type:"error"},r=t.match(jt);return r||At.throwArgumentError("invalid error signature","value",t),e.name=r[1].trim(),e.name&&Ht(e.name),e.inputs=Nt(r[2],!1),Lt(qt.fromObject(e))}static isErrorFragment(t){return t&&t._isFragment&&"error"===t.type}}function zt(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)||At.throwArgumentError(`invalid identifier "${t}"`,"value",t),t}const jt=new RegExp("^([^)(]*)\\((.*)\\)([^)(]*)$");const Kt=new v(Et);function Wt(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 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 $t{constructor(t){ht(this,"wordSize",t||32),this._data=[],this._dataLength=0,this._padding=new Uint8Array(t)}get data(){return B(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(C(t._data))}writeBytes(t){let e=S(t);const r=e.length%this.wordSize;return r&&(e=C([e,this._padding.slice(r)])),this._writeData(e)}_getValue(t){let e=S(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=C([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 Jt{constructor(t,e,r,n){ht(this,"_data",S(t)),ht(this,"wordSize",e||32),ht(this,"_coerceFunc",r),ht(this,"allowLoose",n),this._offset=0}get data(){return I(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):Jt.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 Jt(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 Qt,Yt={exports:{}};
2
2
  /**
3
3
  * [js-sha3]{@link https://github.com/emn178/js-sha3}
4
4
  *
@@ -6,5 +6,5 @@ import{Component as t}from"@monygroupcorp/microact";var e="undefined"!=typeof gl
6
6
  * @author Chen, Yi-Cyuan [emn178@gmail.com]
7
7
  * @copyright Chen, Yi-Cyuan 2015-2018
8
8
  * @license MIT
9
- */var Yt,Xt=($t||($t=1,Yt=Qt,function(){var t="input is invalid type",r="object"==typeof window,n=r?window:{};n.JS_SHA3_NO_WINDOW&&(r=!1);var i=!r&&"object"==typeof self;!n.JS_SHA3_NO_NODE_JS&&"object"==typeof process&&process.versions&&process.versions.node?n=e:i&&(n=self);var o=!n.JS_SHA3_NO_COMMON_JS&&Yt.exports,s=!n.JS_SHA3_NO_ARRAY_BUFFER&&"undefined"!=typeof ArrayBuffer,a="0123456789abcdef".split(""),l=[4,1024,262144,67108864],c=[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],u=[224,256,384,512],d=[128,256],f=["hex","buffer","arrayBuffer","array","digest"],p={128:168,256:136};!n.JS_SHA3_NO_NODE_JS&&Array.isArray||(Array.isArray=function(t){return"[object Array]"===Object.prototype.toString.call(t)}),!s||!n.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 m=function(t,e,r){return function(n){return new I(t,e,t).update(n)[r]()}},g=function(t,e,r){return function(n,i){return new I(t,e,i).update(n)[r]()}},v=function(t,e,r){return function(e,n,i,o){return A["cshake"+t].update(e,n,i,o)[r]()}},y=function(t,e,r){return function(e,n,i,o){return A["kmac"+t].update(e,n,i,o)[r]()}},w=function(t,e,r,n){for(var i=0;i<f.length;++i){var o=f[i];t[o]=e(r,n,o)}return t},b=function(t,e){var r=m(t,e,"hex");return r.create=function(){return new I(t,e,t)},r.update=function(t){return r.create().update(t)},w(r,m,t,e)},E=[{name:"keccak",padding:[1,256,65536,16777216],bits:u,createMethod:b},{name:"sha3",padding:[6,1536,393216,100663296],bits:u,createMethod:b},{name:"shake",padding:[31,7936,2031616,520093696],bits:d,createMethod:function(t,e){var r=g(t,e,"hex");return r.create=function(r){return new I(t,e,r)},r.update=function(t,e){return r.create(e).update(t)},w(r,g,t,e)}},{name:"cshake",padding:l,bits:d,createMethod:function(t,e){var r=p[t],n=v(t,0,"hex");return n.create=function(n,i,o){return i||o?new I(t,e,n).bytepad([i,o],r):A["shake"+t].create(n)},n.update=function(t,e,r,i){return n.create(e,r,i).update(t)},w(n,v,t,e)}},{name:"kmac",padding:l,bits:d,createMethod:function(t,e){var r=p[t],n=y(t,0,"hex");return n.create=function(n,i,o){return new N(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)},w(n,y,t,e)}}],A={},k=[],S=0;S<E.length;++S)for(var C=E[S],_=C.bits,x=0;x<_.length;++x){var T=C.name+"_"+_[x];if(k.push(T),A[T]=C.createMethod(_[x],C.padding),"sha3"!==C.name){var P=C.name+_[x];k.push(P),A[P]=A[T]}}function I(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 N(t,e,r){I.call(this,t,e,r)}I.prototype.update=function(e){if(this.finalized)throw new Error("finalize already called");var r,n=typeof e;if("string"!==n){if("object"!==n)throw new Error(t);if(null===e)throw new Error(t);if(s&&e.constructor===ArrayBuffer)e=new Uint8Array(e);else if(!(Array.isArray(e)||s&&ArrayBuffer.isView(e)))throw new Error(t);r=!0}for(var i,o,a=this.blocks,l=this.byteCount,h=e.length,u=this.blockCount,d=0,f=this.s;d<h;){if(this.reset)for(this.reset=!1,a[0]=this.block,i=1;i<u+1;++i)a[i]=0;if(r)for(i=this.start;d<h&&i<l;++d)a[i>>2]|=e[d]<<c[3&i++];else for(i=this.start;d<h&&i<l;++d)(o=e.charCodeAt(d))<128?a[i>>2]|=o<<c[3&i++]:o<2048?(a[i>>2]|=(192|o>>6)<<c[3&i++],a[i>>2]|=(128|63&o)<<c[3&i++]):o<55296||o>=57344?(a[i>>2]|=(224|o>>12)<<c[3&i++],a[i>>2]|=(128|o>>6&63)<<c[3&i++],a[i>>2]|=(128|63&o)<<c[3&i++]):(o=65536+((1023&o)<<10|1023&e.charCodeAt(++d)),a[i>>2]|=(240|o>>18)<<c[3&i++],a[i>>2]|=(128|o>>12&63)<<c[3&i++],a[i>>2]|=(128|o>>6&63)<<c[3&i++],a[i>>2]|=(128|63&o)<<c[3&i++]);if(this.lastByteIndex=i,i>=l){for(this.start=i-l,this.block=a[u],i=0;i<u;++i)f[i]^=a[i];M(f),this.reset=!0}else this.start=i}return this},I.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},I.prototype.encodeString=function(e){var r,n=typeof e;if("string"!==n){if("object"!==n)throw new Error(t);if(null===e)throw new Error(t);if(s&&e.constructor===ArrayBuffer)e=new Uint8Array(e);else if(!(Array.isArray(e)||s&&ArrayBuffer.isView(e)))throw new Error(t);r=!0}var i=0,o=e.length;if(r)i=o;else for(var a=0;a<e.length;++a){var l=e.charCodeAt(a);l<128?i+=1:l<2048?i+=2:l<55296||l>=57344?i+=3:(l=65536+((1023&l)<<10|1023&e.charCodeAt(++a)),i+=4)}return i+=this.encode(8*i),this.update(e),i},I.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},I.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)}},I.prototype.toString=I.prototype.hex=function(){this.finalize();for(var t,e=this.blockCount,r=this.s,n=this.outputBlocks,i=this.extraBytes,o=0,s=0,l="";s<n;){for(o=0;o<e&&s<n;++o,++s)t=r[o],l+=a[t>>4&15]+a[15&t]+a[t>>12&15]+a[t>>8&15]+a[t>>20&15]+a[t>>16&15]+a[t>>28&15]+a[t>>24&15];s%e===0&&(M(r),o=0)}return i&&(t=r[o],l+=a[t>>4&15]+a[15&t],i>1&&(l+=a[t>>12&15]+a[t>>8&15]),i>2&&(l+=a[t>>20&15]+a[t>>16&15])),l},I.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&&M(r)}return i&&(l[o]=r[o],t=t.slice(0,a)),t},I.prototype.buffer=I.prototype.arrayBuffer,I.prototype.digest=I.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&&M(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},N.prototype=new I,N.prototype.finalize=function(){return this.encode(this.outputBits,!0),I.prototype.finalize.call(this)};var M=function(t){var e,r,n,i,o,s,a,l,c,u,d,f,p,m,g,v,y,w,b,E,A,k,S,C,_,x,T,P,I,N,M,B,R,F,O,D,L,U,q,G,z,j,H,K,W,V,J,$,Q,Y,X,Z,tt,et,rt,nt,it,ot,st,at,lt,ct,ht;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,J=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,j=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,v=t[13]<<12|t[12]>>>20,y=t[12]<<12|t[13]>>>20,$=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,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,B=t[45]<<29|t[44]>>>3,R=t[44]<<29|t[45]>>>3,C=t[6]<<28|t[7]>>>4,_=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,K=t[8]<<27|t[9]>>>5,W=t[9]<<27|t[8]>>>5,x=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,G=t[38]<<8|t[39]>>>24,z=t[39]<<8|t[38]>>>24,k=t[48]<<14|t[49]>>>18,S=t[49]<<14|t[48]>>>18,t[0]=m^~v&w,t[1]=g^~y&b,t[10]=C^~x&P,t[11]=_^~T&I,t[20]=F^~D&U,t[21]=O^~L&q,t[30]=K^~V&$,t[31]=W^~J&Q,t[40]=et^~nt&ot,t[41]=rt^~it&st,t[2]=v^~w&E,t[3]=y^~b&A,t[12]=x^~P&N,t[13]=T^~I&M,t[22]=D^~U&G,t[23]=L^~q&z,t[32]=V^~$&Y,t[33]=J^~Q&X,t[42]=nt^~ot&at,t[43]=it^~st&lt,t[4]=w^~E&k,t[5]=b^~A&S,t[14]=P^~N&B,t[15]=I^~M&R,t[24]=U^~G&j,t[25]=q^~z&H,t[34]=$^~Y&Z,t[35]=Q^~X&tt,t[44]=ot^~at&ct,t[45]=st^~lt&ht,t[6]=E^~k&m,t[7]=A^~S&g,t[16]=N^~B&C,t[17]=M^~R&_,t[26]=G^~j&F,t[27]=z^~H&O,t[36]=Y^~Z&K,t[37]=X^~tt&W,t[46]=at^~ct&et,t[47]=lt^~ht&rt,t[8]=k^~m&v,t[9]=S^~g&y,t[18]=B^~C&x,t[19]=R^~_&T,t[28]=j^~F&D,t[29]=H^~O&L,t[38]=Z^~K&V,t[39]=tt^~W&J,t[48]=ct^~et&nt,t[49]=ht^~rt&it,t[0]^=h[n],t[1]^=h[n+1]};if(o)Yt.exports=A;else for(S=0;S<k.length;++S)n[k[S]]=A[k[S]]}()),Qt.exports),Zt=r(Xt);function te(t){return"0x"+Zt.keccak_256(k(t))}const ee=new g("rlp/5.8.0");function re(t){const e=[];for(;t;)e.unshift(255&t),t>>=8;return e}function ne(t,e,r){let n=0;for(let i=0;i<r;i++)n=256*n+t[e+i];return n}function ie(t){if(Array.isArray(t)){let e=[];if(t.forEach(function(t){e=e.concat(ie(t))}),e.length<=55)return e.unshift(192+e.length),e;const r=re(e.length);return r.unshift(247+r.length),r.concat(e)}b(t)||ee.throwArgumentError("RLP object must be BytesLike","object",t);const e=Array.prototype.slice.call(k(t));if(1===e.length&&e[0]<=127)return e;if(e.length<=55)return e.unshift(128+e.length),e;const r=re(e.length);return r.unshift(183+r.length),r.concat(e)}function oe(t){return P(ie(t))}function se(t,e,r,n){const i=[];for(;r<e+1+n;){const o=ae(t,r);i.push(o.result),(r+=o.consumed)>e+1+n&&ee.throwError("child data too short",g.errors.BUFFER_OVERRUN,{})}return{consumed:1+n,result:i}}function ae(t,e){if(0===t.length&&ee.throwError("data too short",g.errors.BUFFER_OVERRUN,{}),t[e]>=248){const r=t[e]-247;e+1+r>t.length&&ee.throwError("data short segment too short",g.errors.BUFFER_OVERRUN,{});const n=ne(t,e+1,r);return e+1+r+n>t.length&&ee.throwError("data long segment too short",g.errors.BUFFER_OVERRUN,{}),se(t,e,e+1+r,r+n)}if(t[e]>=192){const r=t[e]-192;return e+1+r>t.length&&ee.throwError("data array too short",g.errors.BUFFER_OVERRUN,{}),se(t,e,e+1,r)}if(t[e]>=184){const r=t[e]-183;e+1+r>t.length&&ee.throwError("data array too short",g.errors.BUFFER_OVERRUN,{});const n=ne(t,e+1,r);e+1+r+n>t.length&&ee.throwError("data array too short",g.errors.BUFFER_OVERRUN,{});return{consumed:1+r+n,result:P(t.slice(e+1+r,e+1+r+n))}}if(t[e]>=128){const r=t[e]-128;e+1+r>t.length&&ee.throwError("data too short",g.errors.BUFFER_OVERRUN,{});return{consumed:1+r,result:P(t.slice(e+1,e+1+r))}}return{consumed:1,result:P(t[e])}}function le(t){const e=k(t),r=ae(e,0);return r.consumed!==e.length&&ee.throwArgumentError("invalid rlp data","data",t),r.result}var ce=Object.freeze({__proto__:null,decode:le,encode:oe});const he=new g("address/5.8.0");function ue(t){x(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=k(te(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 de={};for(let t=0;t<10;t++)de[String(t)]=String(t);for(let t=0;t<26;t++)de[String.fromCharCode(65+t)]=String(10+t);const fe=Math.floor((pe=9007199254740991,Math.log10?Math.log10(pe):Math.log(pe)/Math.LN10));var pe;function me(t){let e=(t=(t=t.toUpperCase()).substring(4)+t.substring(0,2)+"00").split("").map(t=>de[t]).join("");for(;e.length>=fe;){let t=e.substring(0,fe);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 ge(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=ue(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)!==me(t)&&he.throwArgumentError("bad icap checksum","address",t),r=t.substring(4),e=new U(r,36).toString(16);e.length<40;)e="0"+e;e=ue("0x"+e)}else he.throwArgumentError("invalid address","address",t);var r;return e}function ve(t){let e=null;try{e=ge(t.from)}catch(e){he.throwArgumentError("missing from address","transaction",t)}return ge(N(te(oe([e,C(k(H.from(t.nonce).toHexString()))])),12))}class ye extends Wt{constructor(t){super("address","address",t,!1)}defaultValue(){return"0x0000000000000000000000000000000000000000"}encode(t,e){try{e=ge(e)}catch(t){this._throwError(t.message,e)}return t.writeValue(e)}decode(t){return ge(F(t.readValue().toHexString(),20))}}class we extends Wt{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 be=new g(bt);function Ee(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||be.throwError("cannot encode object for signature with missing names",g.errors.INVALID_ARGUMENT,{argument:"values",coder:e,value:r}),t[n]&&be.throwError("cannot encode object for signature with duplicate names",g.errors.INVALID_ARGUMENT,{argument:"values",coder:e,value:r}),t[n]=!0,r[n]})}else be.throwArgumentError("invalid tuple value","tuple",r);e.length!==n.length&&be.throwArgumentError("types/value length mismatch","tuple",r);let i=new Vt(t.wordSize),o=new Vt(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 Ae(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===g.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===g.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 ke extends Wt{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)),be.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 Ee(t,n,e)}decode(t){let e=this.length;-1===e&&(e=t.readValue().toNumber(),32*e>t._data.length&&be.throwError("insufficient data length",g.errors.BUFFER_OVERRUN,{length:t._data.length,count:e}));let r=[];for(let t=0;t<e;t++)r.push(new we(this.coder));return t.coerce(this.name,Ae(t,r))}}class Se extends Wt{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 Ce extends Wt{constructor(t,e){super(t,t,e,!0)}defaultValue(){return"0x"}encode(t,e){e=k(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 Ce{constructor(t){super("bytes",t)}decode(t){return t.coerce(this.name,P(super.decode(t)))}}class xe extends Wt{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=k(e);return r.length!==this.size&&this._throwError("incorrect data length",e),t.writeBytes(r)}decode(t){return t.coerce(this.name,P(t.readBytes(this.size)))}}class Te extends Wt{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",Ie=H.from(-1),Ne=H.from(0),Me=H.from(1),Be=H.from(2),Re=H.from("1000000000000000000"),Fe=H.from("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),Oe=H.from("-0x8000000000000000000000000000000000000000000000000000000000000000"),De=H.from("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),Le="0x0000000000000000000000000000000000000000000000000000000000000000";var Ue=Object.freeze({__proto__:null,AddressZero:Pe,EtherSymbol:"Ξ",HashZero:Le,MaxInt256:De,MaxUint256:Fe,MinInt256:Oe,NegativeOne:Ie,One:Me,Two:Be,WeiPerEther:Re,Zero:Ne});class qe extends Wt{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=H.from(e),n=Fe.mask(8*t.wordSize);if(this.signed){let t=n.mask(8*this.size-1);(r.gt(t)||r.lt(t.add(Me).mul(Ie)))&&this._throwError("value out-of-bounds",e)}else(r.lt(Ne)||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 g("strings/5.8.0");var ze,je;function He(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"}(ze||(ze={})),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 Ke=Object.freeze({error:function(t,e,r,n,i){return Ge.throwArgumentError(`invalid codepoint at offset ${e}; ${t}`,"bytes",r)},ignore:He,replace:function(t,e,r,n,i){return t===je.OVERLONG?(n.push(i),0):(n.push(65533),He(t,e,r))}});function We(t,e){null==e&&(e=Ke.error),t=k(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 Ve(t,e=ze.current){e!=ze.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 k(r)}function Je(t){const e="0000"+t.toString(16);return"\\u"+e.substring(e.length-4)}function $e(t){return t.map(t=>t<=65535?String.fromCharCode(t):(t-=65536,String.fromCharCode(55296+(t>>10&1023),56320+(1023&t)))).join("")}function Qe(t,e){return $e(We(t,e))}function Ye(t,e=ze.current){return We(Ve(t,e))}function Xe(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 Ze(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 tr(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 er=Ze("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"),rr="ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff".split(",").map(t=>parseInt(t,16)),nr=[{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}],ir=Xe("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=Xe("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"),sr=Xe("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}),ar=Ze("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 lr extends Ce{constructor(t){super("string",t)}defaultValue(){return""}encode(t,e){return super.encode(t,Ve(e))}decode(t){return Qe(super.decode(t))}}class cr extends Wt{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 Ee(t,this.coders,e)}decode(t){return t.coerce(this.name,Ae(t,this.coders))}}const hr=new g(bt),ur=new RegExp(/^bytes([0-9]*)$/),dr=new RegExp(/^(u?int)([0-9]*)$/);class fr{constructor(t){ht(this,"coerceFunc",t||null)}_getCoder(t){switch(t.baseType){case"address":return new ye(t.name);case"bool":return new Se(t.name);case"string":return new lr(t.name);case"bytes":return new _e(t.name);case"array":return new ke(this._getCoder(t.arrayChildren),t.arrayLength,t.name);case"tuple":return new cr((t.components||[]).map(t=>this._getCoder(t)),t.name);case"":return new Te(t.name)}let e=t.type.match(dr);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 qe(r/8,"int"===e[1],t.name)}if(e=t.type.match(ur),e){let r=parseInt(e[1]);return(0===r||r>32)&&hr.throwArgumentError("invalid bytes length","param",t),new xe(r,t.name)}return hr.throwArgumentError("invalid type","type",t.type)}_getWordSize(){return 32}_getReader(t,e){return new Jt(t,this._getWordSize(),this.coerceFunc,e)}_getWriter(){return new Vt(this._getWordSize())}getDefaultValue(t){const e=t.map(t=>this._getCoder(Pt.from(t)));return new cr(e,"_").defaultValue()}encode(t,e){t.length!==e.length&&hr.throwError("types/values length mismatch",g.errors.INVALID_ARGUMENT,{count:{types:t.length,values:e.length},value:{types:t,values:e}});const r=t.map(t=>this._getCoder(Pt.from(t))),n=new cr(r,"_"),i=this._getWriter();return n.encode(i,e),i.data}decode(t,e,r){const n=t.map(t=>this._getCoder(Pt.from(t)));return new cr(n,"_").decode(this._getReader(k(e),r))}}const pr=new fr;function mr(t){return te(Ve(t))}const gr="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 k(e)}function yr(t){t=k(t);let e="";for(let r=0;r<t.length;r++)e+=String.fromCharCode(t[r]);return btoa(e)}var wr=Object.freeze({__proto__:null,decode:vr,encode:yr});function br(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 Er(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 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=[],v=0,y=u;for(;;){let t=Math.floor(((m-v+1)*i-1)/y),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(y*o[e]/i),a=v+Math.floor(y*o[e+1]/i)-1;for(;0==((s^a)&d);)m=m<<1&p|h(),s=s<<1&p,a=a<<1&p|1;for(;s&~a&f;)m=m&d|m<<1&p>>>1|h(),s=s<<1^d,a=(a^d)<<1|d|1;v=s,y=1+a-s}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 Ar(t){return 1&t?~t>>1:t>>1}function kr(t,e){let r=Array(t);for(let n=0,i=-1;n<t;n++)r[n]=i+=1+e();return r}function Sr(t,e){let r=Array(t);for(let n=0,i=0;n<t;n++)r[n]=i+=Ar(e());return r}function Cr(t,e){let r=kr(t(),t),n=t(),i=kr(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++)Sr(t,r).forEach((t,e)=>n[e].push(t));return n}function xr(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 br(_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 Tr(t,e){return _r(1+e(),1+t,e).map(t=>[t[0],t.slice(1)])}const Pr=Er(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==")),Ir=new Set(Cr(Pr)),Nr=new Set(Cr(Pr)),Mr=function(t){let e=[];for(;;){let r=t();if(0==r)break;e.push(xr(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}(br(e))}(Pr),Br=function(t){let e=Cr(t).sort((t,e)=>t-e);return function r(){let n=[];for(;;){let i=Cr(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}}()}(Pr);function Rr(t){return Ye(t)}function Fr(t){return t.filter(t=>65039!=t)}function Or(t){for(let e of t.split(".")){let t=Rr(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 Dr(t){return Or(function(t,e){let r=Rr(t).reverse(),n=[];for(;r.length;){let t=Lr(r);if(t){n.push(...e(t));continue}let i=r.pop();if(Ir.has(i)){n.push(i);continue}if(Nr.has(i))continue;let o=Mr[i];if(!o)throw new Error(`Disallowed codepoint: 0x${i.toString(16).toUpperCase()}`);n.push(...o)}return Or((i=String.fromCodePoint(...n),i.normalize("NFC")));var i}(t,Fr))}function Lr(t,e){var r;let n,i,o=Br,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 Ur=new g(gr),qr=new Uint8Array(32);function Gr(t){if(0===t.length)throw new Error("invalid ENS name; empty component");return t}function zr(t){const e=Ve(Dr(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&&Ur.throwArgumentError("invalid ENS name; not a string","name",t);let e=qr;const r=zr(t);for(;r.length;)e=te(S([e,te(r.pop())]));return P(e)}function Hr(t){return P(S(zr(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"}qr.fill(0);function Kr(t){return"string"==typeof t&&(t=Ve(t)),te(S([Ve("Ethereum Signed Message:\n"),Ve(String(t.length)),t]))}var Wr=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 Vr=new g(gr),Jr=new Uint8Array(32);Jr.fill(0);const $r=H.from(-1),Qr=H.from(0),Yr=H.from(1),Xr=H.from("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");const Zr=F(Yr.toHexString(),32),tn=F(Qr.toHexString(),32),en={name:"string",version:"string",chainId:"uint256",verifyingContract:"address",salt:"bytes32"},rn=["name","version","chainId","verifyingContract","salt"];function nn(t){return function(e){return"string"!=typeof e&&Vr.throwArgumentError(`invalid domain value for ${JSON.stringify(t)}`,`domain.${t}`,e),e}}const on={name:nn("name"),version:nn("version"),chainId:function(t){try{return H.from(t).toString()}catch(t){}return Vr.throwArgumentError('invalid domain value for "chainId"',"domain.chainId",t)},verifyingContract:function(t){try{return ge(t).toLowerCase()}catch(t){}return Vr.throwArgumentError('invalid domain value "verifyingContract"',"domain.verifyingContract",t)},salt:function(t){try{const e=k(t);if(32!==e.length)throw new Error("bad length");return P(e)}catch(t){}return Vr.throwArgumentError('invalid domain value "salt"',"domain.salt",t)}};function sn(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=Xr.mask(r?n-1:n),o=r?i.add(Yr).mul($r):Qr;return function(e){const r=H.from(e);return(r.lt(o)||r.gt(i))&&Vr.throwArgumentError(`value out-of-bounds for ${t}`,"value",e),F(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 k(e).length!==r&&Vr.throwArgumentError(`invalid length for ${t}`,"value",e),function(t){const e=k(t),r=e.length%32;return r?M([e,Jr.slice(r)]):P(e)}(e)}}}switch(t){case"address":return function(t){return F(ge(t),32)};case"bool":return function(t){return t?Zr:tn};case"bytes":return function(t){return te(t)};case"string":return function(t){return mr(t)}}return null}function an(t,e){return`${t}(${e.map(({name:t,type:e})=>e+" "+t).join(",")})`}class ln{constructor(t){ht(this,"types",Object.freeze(yt(t))),ht(this,"_encoderCache",{}),ht(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]&&Vr.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&&Vr.throwArgumentError(`circular type reference to ${JSON.stringify(s)}`,"types",t);sn(s)||(r[s]||Vr.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?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),ht(this,"primaryType",i[0]),function i(o,s){s[o]&&Vr.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]=an(e,t[e])+r.map(e=>an(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=sn(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(te)),te(M(i))}}const r=this.types[t];if(r){const e=mr(this._types[t]);return t=>{const n=r.map(({name:e,type:r})=>{const n=this.getEncoder(r)(t[e]);return this._types[r]?te(n):n});return n.unshift(e),M(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 te(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(sn(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 ln(t)}static getPrimaryType(t){return ln.from(t).primaryType}static hashStruct(t,e,r){return ln.from(e).hashStruct(t,r)}static hashDomain(t){const e=[];for(const r in t){const n=en[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)=>rn.indexOf(t.name)-rn.indexOf(e.name)),ln.hashStruct("EIP712Domain",{EIP712Domain:e},t)}static encode(t,e,r){return M(["0x1901",ln.hashDomain(t),ln.from(e).hash(r)])}static hash(t,e,r){return te(ln.encode(t,e,r))}static resolveNames(t,e,r,n){return Wr(this,void 0,void 0,function*(){t=pt(t);const i={};t.verifyingContract&&!x(t.verifyingContract,20)&&(i[t.verifyingContract]="0x");const o=ln.from(e);o.visit(r,(t,e)=>("address"!==t||x(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){ln.hashDomain(t);const n={},i=[];rn.forEach(e=>{const r=t[e];null!=r&&(n[e]=on[e](r),i.push({name:e,type:en[e]}))});const o=ln.from(e),s=pt(e);return s.EIP712Domain?Vr.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 P(k(e));if(t.match(/^u?int/))return H.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 cn=new g(bt);class hn extends wt{}class un extends wt{}class dn extends wt{}class fn extends wt{static isIndexed(t){return!(!t||!t._isIndexed)}}const pn={"0x08c379a0":{signature:"Error(string)",name:"Error",inputs:["string"],reason:!0},"0x4e487b71":{signature:"Panic(uint256)",name:"Panic",inputs:["uint256"]}};function mn(t,e){const r=new Error(`deferred error during ABI decoding triggered accessing ${t}`);return r.error=e,r}class gn{constructor(t){let e=[];e="string"==typeof t?JSON.parse(t):t,ht(this,"fragments",e.map(t=>Nt.from(t)).filter(t=>null!=t)),ht(this,"_abiCoder",ut(new.target,"getAbiCoder")()),ht(this,"functions",{}),ht(this,"errors",{}),ht(this,"events",{}),ht(this,"structs",{}),this.fragments.forEach(t=>{let e=null;switch(t.type){case"constructor":return this.deploy?void cn.warn("duplicate definition - constructor"):void ht(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]?cn.warn("duplicate definition - "+r):e[r]=t}),this.deploy||ht(this,"deploy",Ot.from({payable:!1,type:"constructor"})),ht(this,"_isInterface",!0)}format(t){t||(t=xt.full),t===xt.sighash&&cn.throwArgumentError("interface does not support formatting sighash","format",t);const e=this.fragments.map(e=>e.format(t));return t===xt.json?JSON.stringify(e.map(t=>JSON.parse(t))):e}static getAbiCoder(){return pr}static getAddress(t){return ge(t)}static getSighash(t){return N(mr(t.format()),0,4)}static getEventTopic(t){return mr(t.format())}getFunction(t){if(x(t)){for(const e in this.functions)if(t===this.getSighash(e))return this.functions[e];cn.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?cn.throwArgumentError("no matching function","name",e):r.length>1&&cn.throwArgumentError("multiple matching functions","name",e),this.functions[r[0]]}const e=this.functions[Dt.fromString(t).format()];return e||cn.throwArgumentError("no matching function","signature",t),e}getEvent(t){if(x(t)){const e=t.toLowerCase();for(const t in this.events)if(e===this.getEventTopic(t))return this.events[t];cn.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?cn.throwArgumentError("no matching event","name",e):r.length>1&&cn.throwArgumentError("multiple matching events","name",e),this.events[r[0]]}const e=this.events[Mt.fromString(t).format()];return e||cn.throwArgumentError("no matching event","signature",t),e}getError(t){if(x(t)){const e=ut(this.constructor,"getSighash");for(const r in this.errors){if(t===e(this.errors[r]))return this.errors[r]}cn.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?cn.throwArgumentError("no matching error","name",e):r.length>1&&cn.throwArgumentError("multiple matching errors","name",e),this.errors[r[0]]}const e=this.errors[Dt.fromString(t).format()];return e||cn.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 ut(this.constructor,"getSighash")(t)}getEventTopic(t){return"string"==typeof t&&(t=this.getEvent(t)),ut(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=k(e);return P(r.slice(0,4))!==this.getSighash(t)&&cn.throwArgumentError(`data signature does not match error ${t.name}.`,"data",P(r)),this._decodeParams(t.inputs,r.slice(4))}encodeErrorResult(t,e){return"string"==typeof t&&(t=this.getError(t)),P(S([this.getSighash(t),this._encodeParams(t.inputs,e||[])]))}decodeFunctionData(t,e){"string"==typeof t&&(t=this.getFunction(t));const r=k(e);return P(r.slice(0,4))!==this.getSighash(t)&&cn.throwArgumentError(`data signature does not match function ${t.name}.`,"data",P(r)),this._decodeParams(t.inputs,r.slice(4))}encodeFunctionData(t,e){return"string"==typeof t&&(t=this.getFunction(t)),P(S([this.getSighash(t),this._encodeParams(t.inputs,e||[])]))}decodeFunctionResult(t,e){"string"==typeof t&&(t=this.getFunction(t));let r=k(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=P(r.slice(0,4)),e=pn[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 cn.throwError("call revert exception"+i,g.errors.CALL_EXCEPTION,{method:t.format(),data:P(e),errorArgs:o,errorName:s,errorSignature:a,reason:n})}encodeFunctionResult(t,e){return"string"==typeof t&&(t=this.getFunction(t)),P(this._abiCoder.encode(t.outputs,e||[]))}encodeFilterTopics(t,e){"string"==typeof t&&(t=this.getEvent(t)),e.length>t.inputs.length&&cn.throwError("too many arguments for "+t.format(),g.errors.UNEXPECTED_ARGUMENT,{argument:"values",value:e});let r=[];t.anonymous||r.push(this.getEventTopic(t));const n=(t,e)=>"string"===t.type?mr(e):"bytes"===t.type?te(P(e)):("bool"===t.type&&"boolean"==typeof e&&(e=e?"0x01":"0x00"),t.type.match(/^u?int/)&&(e=H.from(e).toHexString()),"address"===t.type&&this._abiCoder.encode(["address"],[e]),F(P(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?cn.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&&cn.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&&cn.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(mr(s));else if("bytes"===t.type)r.push(te(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);x(r[0],32)&&r[0].toLowerCase()===e||cn.throwError("fragment/topic mismatch",g.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(Pt.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,S(r)):null,a=this._abiCoder.decode(i,e,!0),l=[],c=0,h=0;t.inputs.forEach((t,e)=>{if(t.indexed)if(null==s)l[e]=new fn({_isIndexed:!0,hash:null});else if(o[e])l[e]=new fn({_isIndexed:!0,hash:s[h++]});else try{l[e]=s[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 mn(`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 mn(`index ${t}`,e)}})}return Object.freeze(l)}parseTransaction(t){let e=this.getFunction(t.data.substring(0,10).toLowerCase());return e?new un({args:this._abiCoder.decode(e.inputs,"0x"+t.data.substring(10)),functionFragment:e,name:e.name,signature:e.format(),sighash:this.getSighash(e),value:H.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=P(t);let r=this.getError(e.substring(0,10).toLowerCase());return r?new dn({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,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 g("abstract-provider/5.8.0");class wn extends wt{static isForkEvent(t){return!(!t||!t._isForkEvent)}}class bn{constructor(){yn.checkAbstract(new.target,bn),ht(this,"_isProvider",!0)}getFeeData(){return vn(this,void 0,void 0,function*(){const{block:t,gasPrice:e}=yield dt({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=H.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 En=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 An=new g("abstract-signer/5.8.0"),kn=["accessList","ccipReadEnabled","chainId","customData","data","from","gasLimit","gasPrice","maxFeePerGas","maxPriorityFeePerGas","nonce","to","type","value"],Sn=[g.errors.INSUFFICIENT_FUNDS,g.errors.NONCE_EXPIRED,g.errors.REPLACEMENT_UNDERPRICED];class Cn{constructor(){An.checkAbstract(new.target,Cn),ht(this,"_isSigner",!0)}getBalance(t){return En(this,void 0,void 0,function*(){return this._checkProvider("getBalance"),yield this.provider.getBalance(this.getAddress(),t)})}getTransactionCount(t){return En(this,void 0,void 0,function*(){return this._checkProvider("getTransactionCount"),yield this.provider.getTransactionCount(this.getAddress(),t)})}estimateGas(t){return En(this,void 0,void 0,function*(){this._checkProvider("estimateGas");const e=yield dt(this.checkTransaction(t));return yield this.provider.estimateGas(e)})}call(t,e){return En(this,void 0,void 0,function*(){this._checkProvider("call");const r=yield dt(this.checkTransaction(t));return yield this.provider.call(r,e)})}sendTransaction(t){return En(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 En(this,void 0,void 0,function*(){this._checkProvider("getChainId");return(yield this.provider.getNetwork()).chainId})}getGasPrice(){return En(this,void 0,void 0,function*(){return this._checkProvider("getGasPrice"),yield this.provider.getGasPrice()})}getFeeData(){return En(this,void 0,void 0,function*(){return this._checkProvider("getFeeData"),yield this.provider.getFeeData()})}resolveName(t){return En(this,void 0,void 0,function*(){return this._checkProvider("resolveName"),yield this.provider.resolveName(t)})}checkTransaction(t){for(const e in t)-1===kn.indexOf(e)&&An.throwArgumentError("invalid transaction key: "+e,"transaction",t);const e=pt(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()&&An.throwArgumentError("from address mismatch","transaction",t),e[0])),e}populateTransaction(t){return En(this,void 0,void 0,function*(){const e=yield dt(this.checkTransaction(t));null!=e.to&&(e.to=Promise.resolve(e.to).then(t=>En(this,void 0,void 0,function*(){if(null==t)return null;const e=yield this.resolveName(t);return null==e&&An.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||An.throwArgumentError("pre-eip-1559 transaction do not support maxFeePerGas/maxPriorityFeePerGas","transaction",t):An.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&&An.throwError("network does not support EIP-1559",g.errors.UNSUPPORTED_OPERATION,{operation:"populateTransaction"}),null==e.gasPrice&&(e.gasPrice=t.gasPrice),e.type=0):An.throwError("failed to get consistent fee data",g.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(Sn.indexOf(t.code)>=0)throw t;return An.throwError("cannot estimate gas; transaction may fail or may require manual gas limit",g.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]&&An.throwArgumentError("chainId address mismatch","transaction",t),e[0])),yield dt(e)})}_checkProvider(t){this.provider||An.throwError("missing provider",g.errors.UNSUPPORTED_OPERATION,{operation:t||"_checkProvider"})}static isSigner(t){return!(!t||!t._isSigner)}}class _n extends Cn{constructor(t,e){super(),ht(this,"address",t),ht(this,"provider",e||null)}getAddress(){return Promise.resolve(this.address)}_fail(t,e){return Promise.resolve().then(()=>{An.throwError(t,g.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 xn,Tn,Pn={},In={};function Nn(){if(Tn)return xn;function t(t,e){if(!t)throw new Error(e||"Assertion failed")}return Tn=1,xn=t,t.equal=function(t,e,r){if(t!=e)throw new Error(r||"Assertion failed: "+t+" != "+e)},xn}var Mn,Bn,Rn,Fn={exports:{}},On={exports:{}};function Dn(){if(Bn)return Fn.exports;Bn=1;try{var t=require("util");if("function"!=typeof t.inherits)throw"";Fn.exports=t.inherits}catch(t){Fn.exports=(Mn||(Mn=1,"function"==typeof Object.create?On.exports=function(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:On.exports=function(t,e){if(e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}}),On.exports)}return Fn.exports}function Ln(){if(Rn)return In;Rn=1;var t=Nn(),e=Dn();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 In.inherits=e,In.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},In.toHex=function(t){for(var e="",r=0;r<t.length;r++)e+=i(t[r].toString(16));return e},In.htonl=n,In.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},In.zero2=i,In.zero8=o,In.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},In.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},In.rotr32=function(t,e){return t>>>e|t<<32-e},In.rotl32=function(t,e){return t<<e|t>>>32-e},In.sum32=function(t,e){return t+e>>>0},In.sum32_3=function(t,e,r){return t+e+r>>>0},In.sum32_4=function(t,e,r,n){return t+e+r+n>>>0},In.sum32_5=function(t,e,r,n,i){return t+e+r+n+i>>>0},In.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},In.sum64_hi=function(t,e,r,n){return(e+n>>>0<e?1:0)+t+r>>>0},In.sum64_lo=function(t,e,r,n){return e+n>>>0},In.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},In.sum64_4_lo=function(t,e,r,n,i,o,s,a){return e+n+o+a>>>0},In.sum64_5_hi=function(t,e,r,n,i,o,s,a,l,c){var h=0,u=e;return h+=(u=u+n>>>0)<e?1:0,h+=(u=u+o>>>0)<o?1:0,h+=(u=u+a>>>0)<a?1:0,t+r+i+s+l+(h+=(u=u+c>>>0)<c?1:0)>>>0},In.sum64_5_lo=function(t,e,r,n,i,o,s,a,l,c){return e+n+o+a+c>>>0},In.rotr64_hi=function(t,e,r){return(e<<32-r|t>>>r)>>>0},In.rotr64_lo=function(t,e,r){return(t<<32-r|e>>>r)>>>0},In.shr64_hi=function(t,e,r){return t>>>r},In.shr64_lo=function(t,e,r){return(t<<32-r|e>>>r)>>>0},In}var Un,qn={};function Gn(){if(Un)return qn;Un=1;var t=Ln(),e=Nn();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 qn.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},qn}var zn,jn,Hn,Kn,Wn,Vn,Jn,$n,Qn,Yn,Xn,Zn,ti={},ei={};function ri(){if(zn)return ei;zn=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 ei.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},ei.ch32=e,ei.maj32=r,ei.p32=n,ei.s0_256=function(e){return t(e,2)^t(e,13)^t(e,22)},ei.s1_256=function(e){return t(e,6)^t(e,11)^t(e,25)},ei.g0_256=function(e){return t(e,7)^t(e,18)^e>>>3},ei.g1_256=function(e){return t(e,17)^t(e,19)^e>>>10},ei}function ni(){if(Wn)return Kn;Wn=1;var t=Ln(),e=Gn(),r=ri(),n=Nn(),i=t.sum32,o=t.sum32_4,s=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]=o(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],v=this.h[3],y=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=s(E,h(y),a(y,w,b),this.k[f],r[f]),k=i(c(p),l(p,m,g));E=b,b=w,w=y,y=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],y),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 ii(){if(Qn)return $n;Qn=1;var t=Ln(),e=Gn(),r=Nn(),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,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 v(t,e,r,n,i){var o=t&r^~t&i;return o<0&&(o+=4294967296),o}function y(t,e,r,n,i,o){var s=e&n^~e&o;return s<0&&(s+=4294967296),s}function w(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 _(t,e){var r=i(t,e,1)^i(t,e,8)^s(t,e,7);return r<0&&(r+=4294967296),r}function x(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),$n=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=x(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=_(r[n-30],r[n-29]),d=r[n-32],f=r[n-31];r[n]=h(i,o,s,a,l,c,d,f),r[n+1]=u(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],h=this.h[3],u=this.h[4],p=this.h[5],m=this.h[6],g=this.h[7],C=this.h[8],_=this.h[9],x=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,_),D=S(C,_),L=v(C,_,x,T,P),U=y(C,_,x,T,P,I),q=this.k[B],G=this.k[B+1],z=n[B],j=n[B+1],H=d(R,F,O,D,L,U,q,G,z,j),K=f(R,F,O,D,L,U,q,G,z,j);R=E(i,o),F=A(i,o),O=w(i,o,s,h,u),D=b(i,o,s,h,u,p);var W=l(R,F,O,D),V=c(R,F,O,D);N=P,M=I,P=x,I=T,x=C,T=_,C=l(m,g,H,K),_=c(g,g,H,K),m=u,g=p,u=s,p=h,s=i,h=o,i=l(H,K,W,V),o=c(H,K,W,V)}a(this.h,0,i,o),a(this.h,2,s,h),a(this.h,4,u,p),a(this.h,6,m,g),a(this.h,8,C,_),a(this.h,10,x,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")},$n}function oi(){return Zn||(Zn=1,ti.sha1=function(){if(Hn)return jn;Hn=1;var t=Ln(),e=Gn(),r=ri(),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],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=o(n(c,5),s(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")},jn}(),ti.sha224=function(){if(Jn)return Vn;Jn=1;var t=Ln(),e=ni();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}(),ti.sha256=ni(),ti.sha384=function(){if(Xn)return Yn;Xn=1;var t=Ln(),e=ii();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),Yn=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")},Yn}(),ti.sha512=ii()),ti}var si,ai,li,ci,hi={};var ui=(ci||(ci=1,function(){var t=Pn;t.utils=Ln(),t.common=Gn(),t.sha=oi(),t.ripemd=function(){if(si)return hi;si=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 h(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],y=s,w=a,b=m,E=g,A=v,k=0;k<80;k++){var S=n(r(o(s,l(k,a,m,g),t[u[k]+e],c(k)),f[k]),v);s=v,v=g,g=r(m,10),m=a,a=S,S=n(r(o(y,l(79-k,w,b,E),t[d[k]+e],h(k)),p[k]),A),y=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],v,y),this.h[3]=i(this.h[4],s,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 hi}(),t.hmac=function(){if(li)return ai;li=1;var t=Ln(),e=Nn();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 ai=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)},ai}(),t.sha1=t.sha.sha1,t.sha256=t.sha.sha256,t.sha224=t.sha.sha224,t.sha384=t.sha.sha384,t.sha512=t.sha.sha512,t.ripemd160=t.ripemd.ripemd160}()),Pn),di=r(ui);function fi(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 pi=mi;function mi(t,e){if(!t)throw new Error(e||"Assertion failed")}mi.equal=function(t,e,r){if(t!=e)throw new Error(r||"Assertion failed: "+t+" != "+e)};var gi=fi(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}}),vi=fi(function(t,e){var r=e;r.assert=pi,r.toArray=gi.toArray,r.zero2=gi.zero2,r.toHex=gi.toHex,r.encode=gi.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 s(t,"hex","le")}}),yi=vi.getNAF,wi=vi.getJSF,bi=vi.assert;function Ei(t,e){this.type=t,this.p=new s(e.p,16),this.red=e.prime?s.red(e.prime):s.mont(this.p),this.zero=new s(0).toRed(this.red),this.one=new s(1).toRed(this.red),this.two=new s(2).toRed(this.red),this.n=e.n&&new s(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 Ai=Ei;function ki(t,e){this.curve=t,this.type=e,this.precomputed=null}Ei.prototype.point=function(){throw new Error("Not implemented")},Ei.prototype.validate=function(){throw new Error("Not implemented")},Ei.prototype._fixedNafMul=function(t,e){bi(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),h=this.jpoint(null,null,null),u=i;u>0;u--){for(o=0;o<a.length;o++)(s=a[o])===u?h=h.mixedAdd(r.points[o]):s===-u&&(h=h.mixedAdd(r.points[o].neg()));c=c.add(h)}return c.toP()},Ei.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];bi(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},Ei.prototype._wnafMulAdd=function(t,e,r,n,i){var o,s,a,l=this._wnafT1,c=this._wnafT2,h=this._wnafT3,u=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=wi(r[f],r[p]);for(u=Math.max(v[0].length,u),h[f]=new Array(u),h[p]=new Array(u),s=0;s<u;s++){var y=0|v[0][s],w=0|v[1][s];h[f][s]=g[3*(y+1)+(w+1)],h[p][s]=0,c[f]=m}}else h[f]=yi(r[f],l[f],this._bitLength),h[p]=yi(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(o=u;o>=0;o--){for(var A=0;o>=0;){var k=!0;for(s=0;s<n;s++)E[s]=0|h[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()},Ei.BasePoint=ki,ki.prototype.eq=function(){throw new Error("Not implemented")},ki.prototype.validate=function(){return this.curve.validate(this)},Ei.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]?bi(t[t.length-1]%2==0):7===t[0]&&bi(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")},ki.prototype.encodeCompressed=function(t){return this.encode(t,!0)},ki.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))},ki.prototype.encode=function(t,e){return vi.encode(this._encode(e),t)},ki.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},ki.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)},ki.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}},ki.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}},ki.prototype._getBeta=function(){return null},ki.prototype.dblp=function(t){for(var e=this,r=0;r<t;r++)e=e.dbl();return e};var Si=fi(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}}}),Ci=vi.assert;function _i(t){Ai.call(this,"short",t),this.a=new s(t.a,16).toRed(this.red),this.b=new s(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)}Si(_i,Ai);var xi=_i;function Ti(t,e,r,n){Ai.BasePoint.call(this,t,"affine"),null===e&&null===r?(this.x=null,this.y=null,this.inf=!0):(this.x=new s(e,16),this.y=new s(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){Ai.BasePoint.call(this,t,"jacobian"),null===e&&null===r&&null===n?(this.x=this.curve.one,this.y=this.curve.one,this.z=new s(0)):(this.x=new s(e,16),this.y=new s(r,16),this.z=new s(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 s(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 s(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],Ci(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 s(t.a,16),b:new s(t.b,16)}}):this._getEndoBasis(r)}}},_i.prototype._getEndoRoots=function(t){var e=t===this.p?this.red:s.mont(t),r=new s(2).toRed(e).redInvm(),n=r.redNeg(),i=new s(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,a,l,c,h,u=this.n.ushrn(Math.floor(this.n.bitLength()/2)),d=t,f=this.n.clone(),p=new s(1),m=new s(0),g=new s(0),v=new s(1),y=0;0!==d.cmpn(0);){var w=f.div(d);c=f.sub(w.mul(d)),h=g.sub(w.mul(p));var b=v.sub(w.mul(m));if(!n&&c.cmp(u)<0)e=l.neg(),r=p,n=c.neg(),i=h;else if(n&&2===++y)break;l=c,f=d,d=c,g=p,p=h,v=m,m=b}o=c.neg(),a=h;var E=n.sqr().add(i.sqr());return o.sqr().add(a.sqr()).cmp(E)>=0&&(o=e,a=r),n.negative&&(n=n.neg(),i=i.neg()),o.negative&&(o=o.neg(),a=a.neg()),[{a:n,b:i},{a:o,b:a}]},_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 s(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),h=0;h<2*o;h++)n[h]=null,i[h]=null;return c},Si(Ti,Ai.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 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},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),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)},Ti.prototype.getX=function(){return this.x.fromRed()},Ti.prototype.getY=function(){return this.y.fromRed()},Ti.prototype.mul=function(t){return t=new s(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)},Si(Pi,Ai.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),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(),h=c.redMul(a),u=n.redMul(c),d=l.redSqr().redIAdd(h).redISub(u).redISub(u),f=l.redMul(u.redISub(d)).redISub(o.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,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),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(s);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,o=this.x,s=this.y,a=this.z,l=a.redSqr().redSqr(),c=s.redAdd(s);for(e=0;e<t;e++){var h=o.redSqr(),u=c.redSqr(),d=u.redSqr(),f=h.redAdd(h).redIAdd(h).redIAdd(n.redMul(l)),p=o.redMul(u),m=f.redSqr().redISub(p.redAdd(p)),g=p.redISub(m),v=f.redMul(g);v=v.redIAdd(v).redISub(d);var y=c.redMul(a);e+1<t&&(l=l.redMul(d)),o=m,a=y,c=v}return this.curve.jpoint(o,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(),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 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(),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 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(),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),h=a.redSqr().redISub(c.redAdd(c)),u=c.redISub(h),d=s.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),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),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(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(u,d,f)},Pi.prototype.mul=function(t,e){return t=new s(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 Ii=fi(function(t,e){var r=e;r.base=Ai,r.short=xi,r.mont=null,r.edwards=null}),Ni=fi(function(t,e){var r,n=e,i=vi.assert;function o(t){"short"===t.type?this.curve=new Ii.short(t):"edwards"===t.type?this.curve=new Ii.edwards(t):this.curve=new Ii.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:di.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:di.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:di.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:di.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:di.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:di.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:di.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:di.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=gi.toArray(t.entropy,t.entropyEnc||"hex"),r=gi.toArray(t.nonce,t.nonceEnc||"hex"),n=gi.toArray(t.pers,t.persEnc||"hex");pi(e.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(e,r,n)}var Bi=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 di.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=gi.toArray(t,e),r=gi.toArray(r,n),pi(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=gi.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++,gi.encode(o,e)};var Ri=vi.assert;function Fi(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 Oi=Fi;Fi.fromPublic=function(t,e,r){return e instanceof Fi?e:new Fi(t,{pub:e,pubEnc:r})},Fi.fromPrivate=function(t,e,r){return e instanceof Fi?e:new Fi(t,{priv:e,privEnc:r})},Fi.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"}},Fi.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},Fi.prototype.getPrivate=function(t){return"hex"===t?this.priv.toString(16,2):this.priv},Fi.prototype._importPrivate=function(t,e){this.priv=new s(t,e||16),this.priv=this.priv.umod(this.ec.curve.n)},Fi.prototype._importPublic=function(t,e){if(t.x||t.y)return"mont"===this.ec.curve.type?Ri(t.x,"Need x coordinate"):"short"!==this.ec.curve.type&&"edwards"!==this.ec.curve.type||Ri(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)},Fi.prototype.derive=function(t){return t.validate()||Ri(t.validate(),"public point not validated"),t.mul(this.priv).getX()},Fi.prototype.sign=function(t,e,r){return this.ec.sign(t,this,e,r)},Fi.prototype.verify=function(t,e,r){return this.ec.verify(t,e,this,void 0,r)},Fi.prototype.inspect=function(){return"<Key priv: "+(this.priv&&this.priv.toString(16,2))+" pub: "+(this.pub&&this.pub.inspect())+" >"};var Di=vi.assert;function Li(t,e){if(t instanceof Li)return t;this._importDER(t,e)||(Di(t.r&&t.s,"Signature without r or s"),this.r=new s(t.r,16),this.s=new s(t.s,16),void 0===t.recoveryParam?this.recoveryParam=null:this.recoveryParam=t.recoveryParam)}var Ui=Li;function qi(){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 zi(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=vi.toArray(t,e);var r=new qi;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 a=Gi(t,r);if(!1===a)return!1;if(t.length!==a+r.place)return!1;if(128&t[r.place])return!1;var l=t.slice(r.place,a+r.place);if(0===o[0]){if(!(128&o[1]))return!1;o=o.slice(1)}if(0===l[0]){if(!(128&l[1]))return!1;l=l.slice(1)}return this.r=new s(o),this.s=new s(l),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=zi(e),r=zi(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),vi.encode(o,t)};var Hi=function(){throw new Error("unsupported")},Ki=vi.assert;function Wi(t){if(!(this instanceof Wi))return new Wi(t);"string"==typeof t&&(Ki(Object.prototype.hasOwnProperty.call(Ni,t),"Unknown curve "+t),t=Ni[t]),t instanceof Ni.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=Wi;Wi.prototype.keyPair=function(t){return new Oi(this,t)},Wi.prototype.keyFromPrivate=function(t,e){return Oi.fromPrivate(this,t,e)},Wi.prototype.keyFromPublic=function(t,e){return Oi.fromPublic(this,t,e)},Wi.prototype.genKeyPair=function(t){t||(t={});for(var e=new Bi({hash:this.hash,pers:t.pers,persEnc:t.persEnc||"utf8",entropy:t.entropy||Hi(this.hash.hmacStrength),entropyEnc:t.entropy&&t.entropyEnc||"utf8",nonce:this.n.toArray()}),r=this.n.byteLength(),n=this.n.sub(new s(2));;){var i=new s(e.generate(r));if(!(i.cmp(n)>0))return i.iaddn(1),this.keyFromPrivate(i)}},Wi.prototype._truncateToN=function(t,e,r){var n;if(s.isBN(t)||"number"==typeof t)n=(t=new s(t,16)).byteLength();else if("object"==typeof t)n=t.length,t=new s(t,16);else{var i=t.toString();n=i.length+1>>>1,t=new s(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},Wi.prototype.sign=function(t,e,r,n){if("object"==typeof r&&(n=r,r=null),n||(n={}),"string"!=typeof t&&"number"!=typeof t&&!s.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 o=this.n.byteLength(),a=e.getPrivate().toArray("be",o),l=t.toArray("be",o);Ki(new s(l).eq(t),"Can not sign message");for(var c=new Bi({hash:this.hash,entropy:a,nonce:l,pers:n.pers,persEnc:n.persEnc||"utf8"}),h=this.n.sub(new s(1)),u=0;;u++){var d=n.k?n.k(u):new s(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 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 Ui({r:m,s:g,recoveryParam:v})}}}}}},Wi.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 Ui(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),h=l.mul(o).umod(this.n);return this.curve._maxwellTrick?!(a=this.g.jmulAdd(c,r.getPublic(),h)).isInfinity()&&a.eqXToP(o):!(a=this.g.mulAdd(c,r.getPublic(),h)).isInfinity()&&0===a.getX().umod(this.n).cmp(o)},Wi.prototype.recoverPubKey=function(t,e,r,n){Ki((3&r)===r,"The recovery param is more than two bits"),e=new Ui(e,n);var i=this.n,o=new s(t),a=e.r,l=e.s,c=1&r,h=r>>1;if(a.cmp(this.curve.p.umod(this.curve.n))>=0&&h)throw new Error("Unable to find sencond key candinate");a=h?this.curve.pointFromX(a.add(this.curve.n),c):this.curve.pointFromX(a,c);var u=e.r.invm(i),d=i.sub(o).mul(u).umod(i),f=l.mul(u).umod(i);return this.g.mulAdd(d,a,f)},Wi.prototype.getKeyRecoveryParam=function(t,e,r,n){if(null!==(e=new Ui(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=fi(function(t,e){var r=e;r.version="6.6.1",r.utils=vi,r.rand=function(){throw new Error("unsupported")},r.curve=Ii,r.curves=Ni,r.ec=Vi,r.eddsa=null}).ec;const $i=new g("signing-key/5.8.0");let Qi=null;function Yi(){return Qi||(Qi=new Ji("secp256k1")),Qi}class Xi{constructor(t){ht(this,"curve","secp256k1"),ht(this,"privateKey",P(t)),32!==I(this.privateKey)&&$i.throwArgumentError("invalid private key","privateKey","[[ REDACTED ]]");const e=Yi().keyFromPrivate(k(this.privateKey));ht(this,"publicKey","0x"+e.getPublic(!1,"hex")),ht(this,"compressedPublicKey","0x"+e.getPublic(!0,"hex")),ht(this,"_isSigningKey",!0)}_addPoint(t){const e=Yi().keyFromPublic(k(this.publicKey)),r=Yi().keyFromPublic(k(t));return"0x"+e.pub.add(r.pub).encodeCompressed("hex")}signDigest(t){const e=Yi().keyFromPrivate(k(this.privateKey)),r=k(t);32!==r.length&&$i.throwArgumentError("bad digest length","digest",t);const n=e.sign(r,{canonical:!0});return O({recoveryParam:n.recoveryParam,r:F("0x"+n.r.toString(16),32),s:F("0x"+n.s.toString(16),32)})}computeSharedSecret(t){const e=Yi().keyFromPrivate(k(this.privateKey)),r=Yi().keyFromPublic(k(to(t)));return F("0x"+e.derive(r.getPublic()).toString(16),32)}static isSigningKey(t){return!(!t||!t._isSigningKey)}}function Zi(t,e){const r=O(e),n={r:k(r.r),s:k(r.s)};return"0x"+Yi().recoverPubKey(k(t),n,r.recoveryParam).encode("hex",!1)}function to(t,e){const r=k(t);if(32===r.length){const t=new Xi(r);return e?"0x"+Yi().keyFromPrivate(r).getPublic(!0,"hex"):t.publicKey}return 33===r.length?e?P(r):"0x"+Yi().keyFromPublic(r).getPublic(!1,"hex"):65===r.length?e?"0x"+Yi().keyFromPublic(r).getPublic(!0,"hex"):P(r):$i.throwArgumentError("invalid public or private key","key","[REDACTED]")}const eo=new g("transactions/5.8.0");var ro;function no(t){return"0x"===t?null:ge(t)}function io(t){return"0x"===t?Ne:H.from(t)}!function(t){t[t.legacy=0]="legacy",t[t.eip2930=1]="eip2930",t[t.eip1559=2]="eip1559"}(ro||(ro={}));const oo=[{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"}],so={chainId:!0,data:!0,gasLimit:!0,gasPrice:!0,nonce:!0,to:!0,type:!0,value:!0};function ao(t){return ge(N(te(N(to(t),1)),12))}function lo(t,e){return ao(Zi(k(t),e))}function co(t,e){const r=C(H.from(t).toHexString());return r.length>32&&eo.throwArgumentError("invalid length for "+e,"transaction:"+e,t),r}function ho(t,e){return{address:ge(t),storageKeys:(e||[]).map((e,r)=>(32!==I(e)&&eo.throwArgumentError("invalid access list storageKey",`accessList[${t}:${r}]`,e),e.toLowerCase()))}}function uo(t){if(Array.isArray(t))return t.map((t,e)=>Array.isArray(t)?(t.length>2&&eo.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 fo(t){return uo(t).map(t=>[t.address,t.storageKeys])}function po(t,e){if(null!=t.gasPrice){const e=H.from(t.gasPrice),r=H.from(t.maxFeePerGas||0);e.eq(r)||eo.throwArgumentError("mismatch EIP-1559 gasPrice != maxFeePerGas","tx",{gasPrice:e,maxFeePerGas:r})}const r=[co(t.chainId||0,"chainId"),co(t.nonce||0,"nonce"),co(t.maxPriorityFeePerGas||0,"maxPriorityFeePerGas"),co(t.maxFeePerGas||0,"maxFeePerGas"),co(t.gasLimit||0,"gasLimit"),null!=t.to?ge(t.to):"0x",co(t.value||0,"value"),t.data||"0x",fo(t.accessList||[])];if(e){const t=O(e);r.push(co(t.recoveryParam,"recoveryParam")),r.push(C(t.r)),r.push(C(t.s))}return M(["0x02",oe(r)])}function mo(t,e){const r=[co(t.chainId||0,"chainId"),co(t.nonce||0,"nonce"),co(t.gasPrice||0,"gasPrice"),co(t.gasLimit||0,"gasLimit"),null!=t.to?ge(t.to):"0x",co(t.value||0,"value"),t.data||"0x",fo(t.accessList||[])];if(e){const t=O(e);r.push(co(t.recoveryParam,"recoveryParam")),r.push(C(t.r)),r.push(C(t.s))}return M(["0x01",oe(r)])}function go(t,e){if(null==t.type||0===t.type)return null!=t.accessList&&eo.throwArgumentError("untyped transactions do not support accessList; include type: 1","transaction",t),function(t,e){ft(t,so);const r=[];oo.forEach(function(e){let n=t[e.name]||[];const i={};e.numeric&&(i.hexPad="left"),n=k(P(n,i)),e.length&&n.length!==e.length&&n.length>0&&eo.throwArgumentError("invalid length for "+e.name,"transaction:"+e.name,n),e.maxLength&&(n=C(n),n.length>e.maxLength&&eo.throwArgumentError("invalid length for "+e.name,"transaction:"+e.name,n)),r.push(P(n))});let n=0;if(null!=t.chainId?(n=t.chainId,"number"!=typeof n&&eo.throwArgumentError("invalid transaction.chainId","transaction",t)):e&&!b(e)&&e.v>28&&(n=Math.floor((e.v-35)/2)),0!==n&&(r.push(P(n)),r.push("0x"),r.push("0x")),!e)return oe(r);const i=O(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&&eo.throwArgumentError("transaction.chainId/signature.v mismatch","signature",e)):i.v!==o&&eo.throwArgumentError("transaction.chainId/signature.v mismatch","signature",e),r.push(P(o)),r.push(C(k(i.r))),r.push(C(k(i.s))),oe(r)}(t,e);switch(t.type){case 1:return mo(t,e);case 2:return po(t,e)}return eo.throwError(`unsupported transaction type: ${t.type}`,g.errors.UNSUPPORTED_OPERATION,{operation:"serializeTransaction",transactionType:t.type})}function vo(t,e,r){try{const r=io(e[0]).toNumber();if(0!==r&&1!==r)throw new Error("bad recid");t.v=r}catch(t){eo.throwArgumentError("invalid v for transaction type: 1","v",e[0])}t.r=F(e[1],32),t.s=F(e[2],32);try{const e=te(r(t));t.from=lo(e,{r:t.r,s:t.s,recoveryParam:t.v})}catch(t){}}function yo(t){const e=k(t);if(e[0]>127)return function(t){const e=le(t);9!==e.length&&6!==e.length&&eo.throwArgumentError("invalid raw transaction","rawTransaction",t);const r={nonce:io(e[0]).toNumber(),gasPrice:io(e[1]),gasLimit:io(e[2]),to:no(e[3]),value:io(e[4]),data:e[5],chainId:0};if(6===e.length)return r;try{r.v=H.from(e[6]).toNumber()}catch(t){return r}if(r.r=F(e[7],32),r.s=F(e[8],32),H.from(r.r).isZero()&&H.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(P(r.chainId)),i.push("0x"),i.push("0x"),n-=2*r.chainId+8);const o=te(oe(i));try{r.from=lo(o,{r:P(r.r),s:P(r.s),recoveryParam:n})}catch(t){}r.hash=te(t)}return r.type=null,r}(e);switch(e[0]){case 1:return function(t){const e=le(t.slice(1));8!==e.length&&11!==e.length&&eo.throwArgumentError("invalid component count for transaction type: 1","payload",P(t));const r={type:1,chainId:io(e[0]).toNumber(),nonce:io(e[1]).toNumber(),gasPrice:io(e[2]),gasLimit:io(e[3]),to:no(e[4]),value:io(e[5]),data:e[6],accessList:uo(e[7])};return 8===e.length||(r.hash=te(t),vo(r,e.slice(8),mo)),r}(e);case 2:return function(t){const e=le(t.slice(1));9!==e.length&&12!==e.length&&eo.throwArgumentError("invalid component count for transaction type: 2","payload",P(t));const r=io(e[2]),n=io(e[3]),i={type:2,chainId:io(e[0]).toNumber(),nonce:io(e[1]).toNumber(),maxPriorityFeePerGas:r,maxFeePerGas:n,gasPrice:null,gasLimit:io(e[4]),to:no(e[5]),value:io(e[6]),data:e[7],accessList:uo(e[8])};return 9===e.length||(i.hash=te(t),vo(i,e.slice(9),po)),i}(e)}return eo.throwError(`unsupported transaction type: ${e[0]}`,g.errors.UNSUPPORTED_OPERATION,{operation:"parseTransaction",transactionType:e[0]})}var wo=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 bo=new g("contracts/5.8.0"),Eo={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 Ao(t,e){return wo(this,void 0,void 0,function*(){const r=yield e;"string"!=typeof r&&bo.throwArgumentError("invalid address or ENS name","name",r);try{return ge(r)}catch(t){}t||bo.throwError("a provider or signer is needed to resolve ENS names",g.errors.UNSUPPORTED_OPERATION,{operation:"resolveName"});const n=yield t.resolveName(r);return null==n&&bo.throwArgumentError("resolver or addr is not configured for ENS name","name",r),n})}function ko(t,e,r){return wo(this,void 0,void 0,function*(){return Array.isArray(r)?yield Promise.all(r.map((r,n)=>ko(t,Array.isArray(e)?e[n]:e[r.name],r))):"address"===r.type?yield Ao(t,e):"tuple"===r.type?yield ko(t,e,r.components):"array"===r.baseType?Array.isArray(e)?yield Promise.all(e.map(e=>ko(t,e,r.arrayChildren))):Promise.reject(bo.makeError("invalid value for array",g.errors.INVALID_ARGUMENT,{argument:"value",value:e})):e})}function So(t,e,r){return wo(this,void 0,void 0,function*(){let n={};r.length===e.inputs.length+1&&"object"==typeof r[r.length-1]&&(n=pt(r.pop())),bo.checkArgumentCount(r.length,e.inputs.length,"passed to contract"),t.signer?n.from?n.from=dt({override:Ao(t.signer,n.from),signer:t.signer.getAddress()}).then(t=>wo(this,void 0,void 0,function*(){return ge(t.signer)!==t.override&&bo.throwError("Contract with a Signer cannot override from",g.errors.UNSUPPORTED_OPERATION,{operation:"overrides.from"}),t.override})):n.from=t.signer.getAddress():n.from&&(n.from=Ao(t.provider,n.from));const i=yield dt({args:ko(t.signer||t.provider,r,e.inputs),address:t.resolvedAddress,overrides:dt(n)||{}}),o=t.interface.encodeFunctionData(e,i.args),s={data:o,to:i.address},a=i.overrides;if(null!=a.nonce&&(s.nonce=H.from(a.nonce).toNumber()),null!=a.gasLimit&&(s.gasLimit=H.from(a.gasLimit)),null!=a.gasPrice&&(s.gasPrice=H.from(a.gasPrice)),null!=a.maxFeePerGas&&(s.maxFeePerGas=H.from(a.maxFeePerGas)),null!=a.maxPriorityFeePerGas&&(s.maxPriorityFeePerGas=H.from(a.maxPriorityFeePerGas)),null!=a.from&&(s.from=a.from),null!=a.type&&(s.type=a.type),null!=a.accessList&&(s.accessList=uo(a.accessList)),null==s.gasLimit&&null!=e.gas){let t=21e3;const r=k(o);for(let e=0;e<r.length;e++)t+=4,r[e]&&(t+=64);s.gasLimit=H.from(e.gas).add(t)}if(a.value){const t=H.from(a.value);t.isZero()||e.payable||bo.throwError("non-payable method cannot override value",g.errors.UNSUPPORTED_OPERATION,{operation:"overrides.value",value:n.value}),s.value=t}a.customData&&(s.customData=pt(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&&bo.throwError(`cannot override ${l.map(t=>JSON.stringify(t)).join(",")}`,g.errors.UNSUPPORTED_OPERATION,{operation:"overrides",overrides:l}),s})}function Co(t,e){const r=e.wait.bind(e);e.wait=e=>r(e).then(e=>(e.events=e.logs.map(r=>{let n=yt(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 wo(this,void 0,void 0,function*(){let o;if(i.length===e.inputs.length+1&&"object"==typeof i[i.length-1]){const t=pt(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 So(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===g.errors.CALL_EXCEPTION&&(e.address=t.address,e.args=i,e.transaction=s),e}})}}function xo(t,e,r){return e.constant?_o(t,e,r):function(t,e){return function(...r){return wo(this,void 0,void 0,function*(){t.signer||bo.throwError("sending a transaction requires a signer",g.errors.UNSUPPORTED_OPERATION,{operation:"sendTransaction"}),null!=t.deployTransaction&&(yield t._deployed());const n=yield So(t,e,r),i=yield t.signer.sendTransaction(n);return Co(t,i),i})}}(t,e)}function To(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 Po{constructor(t,e){ht(this,"tag",t),ht(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 Io extends Po{constructor(){super("error",null)}}class No extends Po{constructor(t,e,r,n){const i={address:t};let o=e.getEventTopic(r);n?(o!==n[0]&&bo.throwArgumentError("topic mismatch","topics",n),i.topics=n.slice()):i.topics=[o],super(To(i),i),ht(this,"address",t),ht(this,"interface",e),ht(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=Kt(t.args);if(e.length)throw e[0].error;const r=(t.args||[]).slice();return r.push(t),r}}class Mo extends Po{constructor(t,e){super("*",{address:t}),ht(this,"address",t),ht(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 Bo{constructor(t,e,r){ht(this,"interface",ut(new.target,"getInterface")(e)),null==r?(ht(this,"provider",null),ht(this,"signer",null)):Cn.isSigner(r)?(ht(this,"provider",r.provider||null),ht(this,"signer",r)):bn.isProvider(r)?(ht(this,"provider",r),ht(this,"signer",null)):bo.throwArgumentError("invalid signer or provider","signerOrProvider",r),ht(this,"callStatic",{}),ht(this,"estimateGas",{}),ht(this,"functions",{}),ht(this,"populateTransaction",{}),ht(this,"filters",{});{const t={};Object.keys(this.interface.events).forEach(e=>{const r=this.interface.events[e];ht(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?ht(this.filters,e,this.filters[r[0]]):bo.warn(`Duplicate definition of ${e} (${r.join(", ")})`)})}if(ht(this,"_runningEvents",{}),ht(this,"_wrappedEmits",{}),null==t&&bo.throwArgumentError("invalid contract address or ENS name","addressOrName",t),ht(this,"address",t),this.provider)ht(this,"resolvedAddress",Ao(this.provider,t));else try{ht(this,"resolvedAddress",Promise.resolve(ge(t)))}catch(t){bo.throwError("provider is required to use ENS name as contract address",g.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])bo.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]&&ht(this,t,xo(this,e,!0)),null==this.functions[t]&&ht(this.functions,t,xo(this,e,!1)),null==this.callStatic[t]&&ht(this.callStatic,t,_o(this,e,!0)),null==this.populateTransaction[t]&&ht(this.populateTransaction,t,function(t,e){return function(...r){return So(t,e,r)}}(this,e)),null==this.estimateGas[t]&&ht(this.estimateGas,t,function(t,e){const r=t.signer||t.provider;return function(...n){return wo(this,void 0,void 0,function*(){r||bo.throwError("estimate require a provider or signer",g.errors.UNSUPPORTED_OPERATION,{operation:"estimateGas"});const i=yield So(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]&&ht(this,t,this[r])}catch(t){}null==this.functions[t]&&ht(this.functions,t,this.functions[r]),null==this.callStatic[t]&&ht(this.callStatic,t,this.callStatic[r]),null==this.populateTransaction[t]&&ht(this.populateTransaction,t,this.populateTransaction[r]),null==this.estimateGas[t]&&ht(this.estimateGas,t,this.estimateGas[r])})}static getContractAddress(t){return ve(t)}static getInterface(t){return gn.isInterface(t)?t:new gn(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&&bo.throwError("contract not deployed",g.errors.UNSUPPORTED_OPERATION,{contractAddress:this.address,operation:"getDeployed"}),this))),this._deployedPromise}fallback(t){this.signer||bo.throwError("sending a transactions require a signer",g.errors.UNSUPPORTED_OPERATION,{operation:"sendTransaction(fallback)"});const e=pt(t||{});return["from","to"].forEach(function(t){null!=e[t]&&bo.throwError("cannot override "+t,g.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&&ht(e,"deployTransaction",this.deployTransaction),e}attach(t){return new this.constructor(t,this.interface,this.signer||this.provider)}static isIndexed(t){return fn.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 Io);if("event"===t)return this._normalizeRunningEvent(new Po("event",null));if("*"===t)return this._normalizeRunningEvent(new Mo(this.address,this.interface));const e=this.interface.getEvent(t);return this._normalizeRunningEvent(new No(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 No(this.address,this.interface,r,t.topics))}catch(t){}const e={address:this.address,topics:t.topics};return this._normalizeRunningEvent(new Po(To(e),e))}return this._normalizeRunningEvent(new Mo(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=yt(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||bo.throwError("events require a provider or a signer with a provider",g.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=pt(n.filter);return"string"==typeof e&&x(e,32)?(null!=r&&bo.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 Ro extends Bo{}class Fo{constructor(t){ht(this,"alphabet",t),ht(this,"base",t.length),ht(this,"_alphabetMap",{}),ht(this,"_leader",t.charAt(0));for(let e=0;e<t.length;e++)this._alphabetMap[t.charAt(e)]=e}encode(t){let e=k(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 k(new Uint8Array(e.reverse()))}}new Fo("abcdefghijklmnopqrstuvwxyz234567");const Oo=new Fo("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz");var Do;!function(t){t.sha256="sha256",t.sha512="sha512"}(Do||(Do={}));const Lo=new g("sha2/5.8.0");function Uo(t){return"0x"+di.ripemd160().update(k(t)).digest("hex")}function qo(t){return"0x"+di.sha256().update(k(t)).digest("hex")}function Go(t,e,r){return Do[t]||Lo.throwError("unsupported algorithm "+t,g.errors.UNSUPPORTED_OPERATION,{operation:"hmac",algorithm:t}),"0x"+di.hmac(di[t],k(e)).update(k(r)).digest("hex")}function zo(t,e,r,n,i){let o;t=k(t),e=k(e);let s=1;const a=new Uint8Array(n),l=new Uint8Array(e.length+4);let c,h;l.set(e);for(let u=1;u<=s;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=k(Go(i,t,l));o||(o=d.length,h=new Uint8Array(o),s=Math.ceil(n/o),c=n-(s-1)*o),h.set(d);for(let e=1;e<r;e++){d=k(Go(i,t,d));for(let t=0;t<o;t++)h[t]^=d[t]}const f=(u-1)*o,p=u===s?c:o;a.set(k(h).slice(0,p),f)}return P(a)}const jo=new g("wordlists/5.8.0");class Ho{constructor(t){jo.checkAbstract(new.target,Ho),ht(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 mr(e.join("\n")+"\n")}static register(t,e){e||(e=t.locale)}}let Ko=null;function Wo(t){if(null==Ko&&(Ko="AbandonAbilityAbleAboutAboveAbsentAbsorbAbstractAbsurdAbuseAccessAccidentAccountAccuseAchieveAcidAcousticAcquireAcrossActActionActorActressActualAdaptAddAddictAddressAdjustAdmitAdultAdvanceAdviceAerobicAffairAffordAfraidAgainAgeAgentAgreeAheadAimAirAirportAisleAlarmAlbumAlcoholAlertAlienAllAlleyAllowAlmostAloneAlphaAlreadyAlsoAlterAlwaysAmateurAmazingAmongAmountAmusedAnalystAnchorAncientAngerAngleAngryAnimalAnkleAnnounceAnnualAnotherAnswerAntennaAntiqueAnxietyAnyApartApologyAppearAppleApproveAprilArchArcticAreaArenaArgueArmArmedArmorArmyAroundArrangeArrestArriveArrowArtArtefactArtistArtworkAskAspectAssaultAssetAssistAssumeAsthmaAthleteAtomAttackAttendAttitudeAttractAuctionAuditAugustAuntAuthorAutoAutumnAverageAvocadoAvoidAwakeAwareAwayAwesomeAwfulAwkwardAxisBabyBachelorBaconBadgeBagBalanceBalconyBallBambooBananaBannerBarBarelyBargainBarrelBaseBasicBasketBattleBeachBeanBeautyBecauseBecomeBeefBeforeBeginBehaveBehindBelieveBelowBeltBenchBenefitBestBetrayBetterBetweenBeyondBicycleBidBikeBindBiologyBirdBirthBitterBlackBladeBlameBlanketBlastBleakBlessBlindBloodBlossomBlouseBlueBlurBlushBoardBoatBodyBoilBombBoneBonusBookBoostBorderBoringBorrowBossBottomBounceBoxBoyBracketBrainBrandBrassBraveBreadBreezeBrickBridgeBriefBrightBringBriskBroccoliBrokenBronzeBroomBrotherBrownBrushBubbleBuddyBudgetBuffaloBuildBulbBulkBulletBundleBunkerBurdenBurgerBurstBusBusinessBusyButterBuyerBuzzCabbageCabinCableCactusCageCakeCallCalmCameraCampCanCanalCancelCandyCannonCanoeCanvasCanyonCapableCapitalCaptainCarCarbonCardCargoCarpetCarryCartCaseCashCasinoCastleCasualCatCatalogCatchCategoryCattleCaughtCauseCautionCaveCeilingCeleryCementCensusCenturyCerealCertainChairChalkChampionChangeChaosChapterChargeChaseChatCheapCheckCheeseChefCherryChestChickenChiefChildChimneyChoiceChooseChronicChuckleChunkChurnCigarCinnamonCircleCitizenCityCivilClaimClapClarifyClawClayCleanClerkCleverClickClientCliffClimbClinicClipClockClogCloseClothCloudClownClubClumpClusterClutchCoachCoastCoconutCodeCoffeeCoilCoinCollectColorColumnCombineComeComfortComicCommonCompanyConcertConductConfirmCongressConnectConsiderControlConvinceCookCoolCopperCopyCoralCoreCornCorrectCostCottonCouchCountryCoupleCourseCousinCoverCoyoteCrackCradleCraftCramCraneCrashCraterCrawlCrazyCreamCreditCreekCrewCricketCrimeCrispCriticCropCrossCrouchCrowdCrucialCruelCruiseCrumbleCrunchCrushCryCrystalCubeCultureCupCupboardCuriousCurrentCurtainCurveCushionCustomCuteCycleDadDamageDampDanceDangerDaringDashDaughterDawnDayDealDebateDebrisDecadeDecemberDecideDeclineDecorateDecreaseDeerDefenseDefineDefyDegreeDelayDeliverDemandDemiseDenialDentistDenyDepartDependDepositDepthDeputyDeriveDescribeDesertDesignDeskDespairDestroyDetailDetectDevelopDeviceDevoteDiagramDialDiamondDiaryDiceDieselDietDifferDigitalDignityDilemmaDinnerDinosaurDirectDirtDisagreeDiscoverDiseaseDishDismissDisorderDisplayDistanceDivertDivideDivorceDizzyDoctorDocumentDogDollDolphinDomainDonateDonkeyDonorDoorDoseDoubleDoveDraftDragonDramaDrasticDrawDreamDressDriftDrillDrinkDripDriveDropDrumDryDuckDumbDuneDuringDustDutchDutyDwarfDynamicEagerEagleEarlyEarnEarthEasilyEastEasyEchoEcologyEconomyEdgeEditEducateEffortEggEightEitherElbowElderElectricElegantElementElephantElevatorEliteElseEmbarkEmbodyEmbraceEmergeEmotionEmployEmpowerEmptyEnableEnactEndEndlessEndorseEnemyEnergyEnforceEngageEngineEnhanceEnjoyEnlistEnoughEnrichEnrollEnsureEnterEntireEntryEnvelopeEpisodeEqualEquipEraEraseErodeErosionErrorEruptEscapeEssayEssenceEstateEternalEthicsEvidenceEvilEvokeEvolveExactExampleExcessExchangeExciteExcludeExcuseExecuteExerciseExhaustExhibitExileExistExitExoticExpandExpectExpireExplainExposeExpressExtendExtraEyeEyebrowFabricFaceFacultyFadeFaintFaithFallFalseFameFamilyFamousFanFancyFantasyFarmFashionFatFatalFatherFatigueFaultFavoriteFeatureFebruaryFederalFeeFeedFeelFemaleFenceFestivalFetchFeverFewFiberFictionFieldFigureFileFilmFilterFinalFindFineFingerFinishFireFirmFirstFiscalFishFitFitnessFixFlagFlameFlashFlatFlavorFleeFlightFlipFloatFlockFloorFlowerFluidFlushFlyFoamFocusFogFoilFoldFollowFoodFootForceForestForgetForkFortuneForumForwardFossilFosterFoundFoxFragileFrameFrequentFreshFriendFringeFrogFrontFrostFrownFrozenFruitFuelFunFunnyFurnaceFuryFutureGadgetGainGalaxyGalleryGameGapGarageGarbageGardenGarlicGarmentGasGaspGateGatherGaugeGazeGeneralGeniusGenreGentleGenuineGestureGhostGiantGiftGiggleGingerGiraffeGirlGiveGladGlanceGlareGlassGlideGlimpseGlobeGloomGloryGloveGlowGlueGoatGoddessGoldGoodGooseGorillaGospelGossipGovernGownGrabGraceGrainGrantGrapeGrassGravityGreatGreenGridGriefGritGroceryGroupGrowGruntGuardGuessGuideGuiltGuitarGunGymHabitHairHalfHammerHamsterHandHappyHarborHardHarshHarvestHatHaveHawkHazardHeadHealthHeartHeavyHedgehogHeightHelloHelmetHelpHenHeroHiddenHighHillHintHipHireHistoryHobbyHockeyHoldHoleHolidayHollowHomeHoneyHoodHopeHornHorrorHorseHospitalHostHotelHourHoverHubHugeHumanHumbleHumorHundredHungryHuntHurdleHurryHurtHusbandHybridIceIconIdeaIdentifyIdleIgnoreIllIllegalIllnessImageImitateImmenseImmuneImpactImposeImproveImpulseInchIncludeIncomeIncreaseIndexIndicateIndoorIndustryInfantInflictInformInhaleInheritInitialInjectInjuryInmateInnerInnocentInputInquiryInsaneInsectInsideInspireInstallIntactInterestIntoInvestInviteInvolveIronIslandIsolateIssueItemIvoryJacketJaguarJarJazzJealousJeansJellyJewelJobJoinJokeJourneyJoyJudgeJuiceJumpJungleJuniorJunkJustKangarooKeenKeepKetchupKeyKickKidKidneyKindKingdomKissKitKitchenKiteKittenKiwiKneeKnifeKnockKnowLabLabelLaborLadderLadyLakeLampLanguageLaptopLargeLaterLatinLaughLaundryLavaLawLawnLawsuitLayerLazyLeaderLeafLearnLeaveLectureLeftLegLegalLegendLeisureLemonLendLengthLensLeopardLessonLetterLevelLiarLibertyLibraryLicenseLifeLiftLightLikeLimbLimitLinkLionLiquidListLittleLiveLizardLoadLoanLobsterLocalLockLogicLonelyLongLoopLotteryLoudLoungeLoveLoyalLuckyLuggageLumberLunarLunchLuxuryLyricsMachineMadMagicMagnetMaidMailMainMajorMakeMammalManManageMandateMangoMansionManualMapleMarbleMarchMarginMarineMarketMarriageMaskMassMasterMatchMaterialMathMatrixMatterMaximumMazeMeadowMeanMeasureMeatMechanicMedalMediaMelodyMeltMemberMemoryMentionMenuMercyMergeMeritMerryMeshMessageMetalMethodMiddleMidnightMilkMillionMimicMindMinimumMinorMinuteMiracleMirrorMiseryMissMistakeMixMixedMixtureMobileModelModifyMomMomentMonitorMonkeyMonsterMonthMoonMoralMoreMorningMosquitoMotherMotionMotorMountainMouseMoveMovieMuchMuffinMuleMultiplyMuscleMuseumMushroomMusicMustMutualMyselfMysteryMythNaiveNameNapkinNarrowNastyNationNatureNearNeckNeedNegativeNeglectNeitherNephewNerveNestNetNetworkNeutralNeverNewsNextNiceNightNobleNoiseNomineeNoodleNormalNorthNoseNotableNoteNothingNoticeNovelNowNuclearNumberNurseNutOakObeyObjectObligeObscureObserveObtainObviousOccurOceanOctoberOdorOffOfferOfficeOftenOilOkayOldOliveOlympicOmitOnceOneOnionOnlineOnlyOpenOperaOpinionOpposeOptionOrangeOrbitOrchardOrderOrdinaryOrganOrientOriginalOrphanOstrichOtherOutdoorOuterOutputOutsideOvalOvenOverOwnOwnerOxygenOysterOzonePactPaddlePagePairPalacePalmPandaPanelPanicPantherPaperParadeParentParkParrotPartyPassPatchPathPatientPatrolPatternPausePavePaymentPeacePeanutPearPeasantPelicanPenPenaltyPencilPeoplePepperPerfectPermitPersonPetPhonePhotoPhrasePhysicalPianoPicnicPicturePiecePigPigeonPillPilotPinkPioneerPipePistolPitchPizzaPlacePlanetPlasticPlatePlayPleasePledgePluckPlugPlungePoemPoetPointPolarPolePolicePondPonyPoolPopularPortionPositionPossiblePostPotatoPotteryPovertyPowderPowerPracticePraisePredictPreferPreparePresentPrettyPreventPricePridePrimaryPrintPriorityPrisonPrivatePrizeProblemProcessProduceProfitProgramProjectPromoteProofPropertyProsperProtectProudProvidePublicPuddingPullPulpPulsePumpkinPunchPupilPuppyPurchasePurityPurposePursePushPutPuzzlePyramidQualityQuantumQuarterQuestionQuickQuitQuizQuoteRabbitRaccoonRaceRackRadarRadioRailRainRaiseRallyRampRanchRandomRangeRapidRareRateRatherRavenRawRazorReadyRealReasonRebelRebuildRecallReceiveRecipeRecordRecycleReduceReflectReformRefuseRegionRegretRegularRejectRelaxReleaseReliefRelyRemainRememberRemindRemoveRenderRenewRentReopenRepairRepeatReplaceReportRequireRescueResembleResistResourceResponseResultRetireRetreatReturnReunionRevealReviewRewardRhythmRibRibbonRiceRichRideRidgeRifleRightRigidRingRiotRippleRiskRitualRivalRiverRoadRoastRobotRobustRocketRomanceRoofRookieRoomRoseRotateRoughRoundRouteRoyalRubberRudeRugRuleRunRunwayRuralSadSaddleSadnessSafeSailSaladSalmonSalonSaltSaluteSameSampleSandSatisfySatoshiSauceSausageSaveSayScaleScanScareScatterSceneSchemeSchoolScienceScissorsScorpionScoutScrapScreenScriptScrubSeaSearchSeasonSeatSecondSecretSectionSecuritySeedSeekSegmentSelectSellSeminarSeniorSenseSentenceSeriesServiceSessionSettleSetupSevenShadowShaftShallowShareShedShellSheriffShieldShiftShineShipShiverShockShoeShootShopShortShoulderShoveShrimpShrugShuffleShySiblingSickSideSiegeSightSignSilentSilkSillySilverSimilarSimpleSinceSingSirenSisterSituateSixSizeSkateSketchSkiSkillSkinSkirtSkullSlabSlamSleepSlenderSliceSlideSlightSlimSloganSlotSlowSlushSmallSmartSmileSmokeSmoothSnackSnakeSnapSniffSnowSoapSoccerSocialSockSodaSoftSolarSoldierSolidSolutionSolveSomeoneSongSoonSorrySortSoulSoundSoupSourceSouthSpaceSpareSpatialSpawnSpeakSpecialSpeedSpellSpendSphereSpiceSpiderSpikeSpinSpiritSplitSpoilSponsorSpoonSportSpotSpraySpreadSpringSpySquareSqueezeSquirrelStableStadiumStaffStageStairsStampStandStartStateStaySteakSteelStemStepStereoStickStillStingStockStomachStoneStoolStoryStoveStrategyStreetStrikeStrongStruggleStudentStuffStumbleStyleSubjectSubmitSubwaySuccessSuchSuddenSufferSugarSuggestSuitSummerSunSunnySunsetSuperSupplySupremeSureSurfaceSurgeSurpriseSurroundSurveySuspectSustainSwallowSwampSwapSwarmSwearSweetSwiftSwimSwingSwitchSwordSymbolSymptomSyrupSystemTableTackleTagTailTalentTalkTankTapeTargetTaskTasteTattooTaxiTeachTeamTellTenTenantTennisTentTermTestTextThankThatThemeThenTheoryThereTheyThingThisThoughtThreeThriveThrowThumbThunderTicketTideTigerTiltTimberTimeTinyTipTiredTissueTitleToastTobaccoTodayToddlerToeTogetherToiletTokenTomatoTomorrowToneTongueTonightToolToothTopTopicToppleTorchTornadoTortoiseTossTotalTouristTowardTowerTownToyTrackTradeTrafficTragicTrainTransferTrapTrashTravelTrayTreatTreeTrendTrialTribeTrickTriggerTrimTripTrophyTroubleTruckTrueTrulyTrumpetTrustTruthTryTubeTuitionTumbleTunaTunnelTurkeyTurnTurtleTwelveTwentyTwiceTwinTwistTwoTypeTypicalUglyUmbrellaUnableUnawareUncleUncoverUnderUndoUnfairUnfoldUnhappyUniformUniqueUnitUniverseUnknownUnlockUntilUnusualUnveilUpdateUpgradeUpholdUponUpperUpsetUrbanUrgeUsageUseUsedUsefulUselessUsualUtilityVacantVacuumVagueValidValleyValveVanVanishVaporVariousVastVaultVehicleVelvetVendorVentureVenueVerbVerifyVersionVeryVesselVeteranViableVibrantViciousVictoryVideoViewVillageVintageViolinVirtualVirusVisaVisitVisualVitalVividVocalVoiceVoidVolcanoVolumeVoteVoyageWageWagonWaitWalkWallWalnutWantWarfareWarmWarriorWashWaspWasteWaterWaveWayWealthWeaponWearWeaselWeatherWebWeddingWeekendWeirdWelcomeWestWetWhaleWhatWheatWheelWhenWhereWhipWhisperWideWidthWifeWildWillWinWindowWineWingWinkWinnerWinterWireWisdomWiseWishWitnessWolfWomanWonderWoodWoolWordWorkWorldWorryWorthWrapWreckWrestleWristWriteWrongYardYearYellowYouYoungYouthZebraZeroZoneZoo".replace(/([A-Z])/g," $1").toLowerCase().substring(1).split(" "),"0x3c8acc1e7b08d8e76f9fda015ef48dc8c710a73cb7e0f77b2c18a9b5a7adde60"!==Ho.check(t)))throw Ko=null,new Error("BIP39 Wordlist for en (English) FAILED")}const Vo=new class extends Ho{constructor(){super("en")}getWord(t){return Wo(this),Ko[t]}getWordIndex(t){return Wo(this),Ko.indexOf(t)}};Ho.register(Vo);const Jo={en:Vo},$o=new g("hdnode/5.8.0"),Qo=H.from("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),Yo=Ve("Bitcoin seed"),Xo=2147483648;function Zo(t){return(1<<t)-1<<8-t}function ts(t){return(1<<t)-1}function es(t){return F(P(t),32)}function rs(t){return Oo.encode(S([t,N(qo(qo(t)),0,4)]))}function ns(t){if(null==t)return Jo.en;if("string"==typeof t){const e=Jo[t];return null==e&&$o.throwArgumentError("unknown locale","wordlist",t),e}return t}const is={},os="m/44'/60'/0'/0/0";class ss{constructor(t,e,r,n,i,o,s,a){if(t!==is)throw new Error("HDNode constructor cannot be called directly");if(e){const t=new Xi(e);ht(this,"privateKey",t.privateKey),ht(this,"publicKey",t.compressedPublicKey)}else ht(this,"privateKey",null),ht(this,"publicKey",P(r));ht(this,"parentFingerprint",n),ht(this,"fingerprint",N(Uo(qo(this.publicKey)),0,4)),ht(this,"address",ao(this.publicKey)),ht(this,"chainCode",i),ht(this,"index",o),ht(this,"depth",s),null==a?(ht(this,"mnemonic",null),ht(this,"path",null)):"string"==typeof a?(ht(this,"mnemonic",null),ht(this,"path",a)):(ht(this,"mnemonic",a),ht(this,"path",a.path))}get extendedKey(){if(this.depth>=256)throw new Error("Depth too large!");return rs(S([null!=this.privateKey?"0x0488ADE4":"0x0488B21E",P(this.depth),this.parentFingerprint,F(P(this.index),4),this.chainCode,null!=this.privateKey?S(["0x00",this.privateKey]):this.publicKey]))}neuter(){return new ss(is,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&Xo){if(!this.privateKey)throw new Error("cannot derive child of neutered node");r.set(k(this.privateKey),1),e&&(e+="'")}else r.set(k(this.publicKey));for(let e=24;e>=0;e-=8)r[33+(e>>3)]=t>>24-e&255;const n=k(Go(Do.sha512,this.chainCode,r)),i=n.slice(0,32),o=n.slice(32);let s=null,a=null;if(this.privateKey)s=es(H.from(i).add(this.privateKey).mod(Qo));else{a=new Xi(P(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 ss(is,s,a,this.fingerprint,es(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>=Xo)throw new Error("invalid path index - "+n);r=r._derive(Xo+t)}else{if(!n.match(/^[0-9]+$/))throw new Error("invalid path component - "+n);{const t=parseInt(n);if(t>=Xo)throw new Error("invalid path index - "+n);r=r._derive(t)}}}return r}static _fromSeed(t,e){const r=k(t);if(r.length<16||r.length>64)throw new Error("invalid seed");const n=k(Go(Do.sha512,Yo,r));return new ss(is,es(n.slice(0,32)),null,"0x00000000",es(n.slice(32)),0,0,e)}static fromMnemonic(t,e,r){return t=cs(ls(t,r=ns(r)),r),ss._fromSeed(as(t,e),{phrase:t,path:"m",locale:r.locale})}static fromSeed(t){return ss._fromSeed(t,null)}static fromExtendedKey(t){const e=Oo.decode(t);82===e.length&&rs(e.slice(0,78))===t||$o.throwArgumentError("invalid extended key","extendedKey","[REDACTED]");const r=e[4],n=P(e.slice(5,9)),i=parseInt(P(e.slice(9,13)).substring(2),16),o=P(e.slice(13,45)),s=e.slice(45,78);switch(P(e.slice(0,4))){case"0x0488b21e":case"0x043587cf":return new ss(is,null,P(s),n,o,i,r,null);case"0x0488ade4":case"0x04358394 ":if(0!==s[0])break;return new ss(is,P(s.slice(1)),null,n,o,i,r,null)}return $o.throwArgumentError("invalid extended key","extendedKey","[REDACTED]")}}function as(t,e){e||(e="");const r=Ve("mnemonic"+e,ze.NFKD);return zo(Ve(t,ze.NFKD),r,2048,64,"sha512")}function ls(t,e){e=ns(e),$o.checkNormalize();const r=e.split(t);if(r.length%3!=0)throw new Error("invalid mnemonic");const n=k(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=Zo(r.length/3);if((k(qo(n.slice(0,o/8)))[0]&s)!==(n[n.length-1]&s))throw new Error("invalid checksum");return P(n.slice(0,o/8))}function cs(t,e){if(e=ns(e),(t=k(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]&ts(8-n)),n+=3);const i=t.length/4,o=k(qo(t))[0]&Zo(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 g("random/5.8.0");const us=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 ds=us.crypto||us.msCrypto;function fs(t){(t<=0||t>1024||t%1||t!=t)&&hs.throwArgumentError("invalid length","length",t);const e=new Uint8Array(t);return ds.getRandomValues(e),k(e)}function ps(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}ds&&ds.getRandomValues||(hs.warn("WARNING: Missing strong random number source"),ds={getRandomValues:function(t){return hs.throwError("no secure random source avaialble",g.errors.UNSUPPORTED_OPERATION,{operation:"crypto.getRandomValues"})}});var ms,gs={exports:{}};var vs=(ms||(ms=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},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],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],y=[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 _=function(t){if(!(this instanceof _))throw Error("AES must be instanitated with `new`");Object.defineProperty(this,"key",{value:n(t,!0)}),this._prepare()};_.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]^=u[s>>16&255]<<24^u[s>>8&255]<<16^u[255&s]<<8^u[s>>24&255]^h[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]^=u[255&s]^u[s>>8&255]<<8^u[s>>16&255]<<16^u[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]},_.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&(u[n[o]>>24&255]^a>>24),l[4*o+1]=255&(u[n[(o+1)%4]>>16&255]^a>>16),l[4*o+2]=255&(u[n[(o+2)%4]>>8&255]^a>>8),l[4*o+3]=255&(u[255&n[(o+3)%4]]^a);return l},_.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]^y[n[(o+3)%4]>>16&255]^w[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 x=function(t){if(!(this instanceof x))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new _(t)};x.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},x.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 _(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 _(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 _(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 _(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:_,Counter:N,ModeOfOperation:{ecb:x,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}()}(gs)),gs.exports),ys=r(vs);const ws="json-wallets/5.8.0";function bs(t){return"string"==typeof t&&"0x"!==t.substring(0,2)&&(t="0x"+t),k(t)}function Es(t,e){for(t=String(t);t.length<e;)t="0"+t;return t}function As(t){return"string"==typeof t?Ve(t,ze.NFKC):k(t)}function ks(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 Ss(t){const e=k(t);e[6]=15&e[6]|64,e[8]=63&e[8]|128;const r=P(e);return[r.substring(2,10),r.substring(10,14),r.substring(14,18),r.substring(18,22),r.substring(22,34)].join("-")}const Cs=new g(ws);class _s extends wt{isCrowdsaleAccount(t){return!(!t||!t._isCrowdsaleAccount)}}function xs(t,e){const r=JSON.parse(t);e=As(e);const n=ge(ks(r,"ethaddr")),i=bs(ks(r,"encseed"));i&&i.length%16==0||Cs.throwArgumentError("invalid encseed","json",t);const o=k(zo(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(k(l.decrypt(a)));let h="";for(let t=0;t<c.length;t++)h+=String.fromCharCode(c[t]);const u=te(Ve(h));return new _s({_isCrowdsaleAccount:!0,address:n,privateKey:u})}function Ts(t){let e=null;try{e=JSON.parse(t)}catch(t){return!1}return e.encseed&&e.ethaddr}function Ps(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 Is,Ns={exports:{}};var Ms=(Is||(Is=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 h=new Uint32Array(64);function u(t){let u=0,d=t.length;for(;d>=64;){let f,p,m,g,v,y=r,w=n,b=i,E=o,A=s,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],v=(f>>>7|f<<25)^(f>>>18|f<<14)^f>>>3,h[p]=(g+h[p-7]|0)+(v+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,v=((y>>>2|y<<30)^(y>>>13|y<<19)^(y>>>22|y<<10))+(y&w^y&b^w&b)|0,C=S,S=k,k=A,A=E+g|0,E=b,b=w,w=y,y=g+v|0;r=r+y|0,n=n+w|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,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,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),u(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 h(t,e){if("number"!=typeof t||t%1)throw new Error("invalid "+e);return t}function u(t,r,o,s,u,d,f){if(o=h(o,"N"),s=h(s,"r"),u=h(u,"p"),d=h(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/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*s);const m=new Uint32Array(32*u*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),y=32*s,w=new Uint32Array(16),b=new Uint32Array(16),E=u*o*2;let A,k,S=0,C=null,_=!1,x=0,T=0;const P=f?parseInt(1e3/s):4294967295,I="undefined"!=typeof setImmediate?setImmediate:setTimeout,N=function(){if(_)return f(new Error("cancelled"),S/E);let e;switch(x){case 0:k=32*T*s,l(m,k,g,0,y),x=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)*y,y),i(g,y,s,w,b);if(A+=e,S+=e,f){const t=parseInt(1e3*S/E);if(t!==C){if(_=f(null,S/E),_)break;C=t}}if(A<o)break;A=0,x=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*y,g,y),i(g,y,s,w,b)}if(A+=e,S+=e,f){const t=parseInt(1e3*S/E);if(t!==C){if(_=f(null,S/E),_)break;C=t}}if(A<o)break;if(l(g,0,m,k,y),T++,T<u){x=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),u(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(u(t,e,r,n,i,o))}};t.exports=d}()}(Ns)),Ns.exports),Bs=r(Ms),Rs=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 Fs=new g(ws);function Os(t){return null!=t&&t.mnemonic&&t.mnemonic.phrase}class Ds extends wt{isKeystoreAccount(t){return!(!t||!t._isKeystoreAccount)}}function Ls(t,e){const r=bs(ks(t,"crypto/ciphertext"));if(P(te(S([e.slice(16,32),r]))).substring(2)!==ks(t,"crypto/mac").toLowerCase())throw new Error("invalid password");const n=function(t,e,r){if("aes-128-ctr"===ks(t,"crypto/cipher")){const n=bs(ks(t,"crypto/cipherparams/iv")),i=new ys.Counter(n);return k(new ys.ModeOfOperation.ctr(e,i).decrypt(r))}return null}(t,e.slice(0,16),r);n||Fs.throwError("unsupported cipher",g.errors.UNSUPPORTED_OPERATION,{operation:"decrypt"});const i=e.slice(32,64),o=ao(n);if(t.address){let e=t.address.toLowerCase();if("0x"!==e.substring(0,2)&&(e="0x"+e),ge(e)!==o)throw new Error("address mismatch")}const s={_isKeystoreAccount:!0,address:o,privateKey:P(n)};if("0.1"===ks(t,"x-ethers/version")){const e=bs(ks(t,"x-ethers/mnemonicCiphertext")),r=bs(ks(t,"x-ethers/mnemonicCounter")),n=new ys.Counter(r),o=new ys.ModeOfOperation.ctr(i,n),a=ks(t,"x-ethers/path")||os,l=ks(t,"x-ethers/locale")||"en",c=k(o.decrypt(e));try{const t=cs(c,l),e=ss.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!==g.errors.INVALID_ARGUMENT||"wordlist"!==t.argument)throw t}}return new Ds(s)}function Us(t,e,r,n,i){return k(zo(t,e,r,n,i))}function qs(t,e,r,n,i){return Promise.resolve(Us(t,e,r,n,i))}function Gs(t,e,r,n,i){const o=As(e),s=ks(t,"crypto/kdf");if(s&&"string"==typeof s){const e=function(t,e){return Fs.throwArgumentError("invalid key-derivation function parameters",t,e)};if("scrypt"===s.toLowerCase()){const r=bs(ks(t,"crypto/kdfparams/salt")),a=parseInt(ks(t,"crypto/kdfparams/n")),l=parseInt(ks(t,"crypto/kdfparams/r")),c=parseInt(ks(t,"crypto/kdfparams/p"));a&&l&&c||e("kdf",s),a&a-1&&e("N",a);const h=parseInt(ks(t,"crypto/kdfparams/dklen"));return 32!==h&&e("dklen",h),n(o,r,a,l,c,64,i)}if("pbkdf2"===s.toLowerCase()){const n=bs(ks(t,"crypto/kdfparams/salt"));let i=null;const s=ks(t,"crypto/kdfparams/prf");"hmac-sha256"===s?i="sha256":"hmac-sha512"===s?i="sha512":e("prf",s);const a=parseInt(ks(t,"crypto/kdfparams/c")),l=parseInt(ks(t,"crypto/kdfparams/dklen"));return 32!==l&&e("dklen",l),r(o,n,a,l,i)}}return Fs.throwArgumentError("unsupported key-derivation function","kdf",s)}function zs(t,e,r){if(Ts(t)){r&&r(0);const n=xs(t,e);return r&&r(1),Promise.resolve(n)}return Ps(t)?function(t,e,r){return Rs(this,void 0,void 0,function*(){const n=JSON.parse(t);return Ls(n,yield Gs(n,e,qs,Bs.scrypt,r))})}(t,e,r):Promise.reject(new Error("invalid JSON wallet"))}function js(t,e){if(Ts(t))return xs(t,e);if(Ps(t))return function(t,e){const r=JSON.parse(t);return Ls(r,Gs(r,e,Us,Bs.syncScrypt))}(t,e);throw new Error("invalid JSON wallet")}var Hs=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 Ks=new g("wallet/5.8.0");class Ws extends Cn{constructor(t,e){if(super(),null!=(r=t)&&x(r.privateKey,32)&&null!=r.address){const e=new Xi(t.privateKey);if(ht(this,"_signingKey",()=>e),ht(this,"address",ao(this.publicKey)),this.address!==ge(t.address)&&Ks.throwArgumentError("privateKey/address mismatch","privateKey","[REDACTED]"),function(t){const e=t.mnemonic;return e&&e.phrase}(t)){const e=t.mnemonic;ht(this,"_mnemonic",()=>({phrase:e.phrase,path:e.path||os,locale:e.locale||"en"}));const r=this.mnemonic;ao(ss.fromMnemonic(r.phrase,null,r.locale).derivePath(r.path).privateKey)!==this.address&&Ks.throwArgumentError("mnemonic/address mismatch","privateKey","[REDACTED]")}else ht(this,"_mnemonic",()=>null)}else{if(Xi.isSigningKey(t))"secp256k1"!==t.curve&&Ks.throwArgumentError("unsupported curve; must be secp256k1","privateKey","[REDACTED]"),ht(this,"_signingKey",()=>t);else{"string"==typeof t&&t.match(/^[0-9a-f]*$/i)&&64===t.length&&(t="0x"+t);const e=new Xi(t);ht(this,"_signingKey",()=>e)}ht(this,"_mnemonic",()=>null),ht(this,"address",ao(this.publicKey))}var r;e&&!bn.isProvider(e)&&Ks.throwArgumentError("invalid provider","provider",e),ht(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 Ws(this,t)}signTransaction(t){return dt(t).then(e=>{null!=e.from&&(ge(e.from)!==this.address&&Ks.throwArgumentError("transaction from address mismatch","transaction.from",t.from),delete e.from);const r=this._signingKey().signDigest(te(go(e)));return go(e,r)})}signMessage(t){return Hs(this,void 0,void 0,function*(){return D(this._signingKey().signDigest(Kr(t)))})}_signTypedData(t,e,r){return Hs(this,void 0,void 0,function*(){const n=yield ln.resolveNames(t,e,r,t=>(null==this.provider&&Ks.throwError("cannot resolve ENS names without a provider",g.errors.UNSUPPORTED_OPERATION,{operation:"resolveName",value:t}),this.provider.resolveName(t)));return D(this._signingKey().signDigest(ln.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(ge(t.address)!==ao(t.privateKey))throw new Error("address/privateKey mismatch");if(Os(t)){const e=t.mnemonic;if(ss.fromMnemonic(e.phrase,null,e.locale).derivePath(e.path||os).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=k(t.privateKey),o=As(e);let s=null,a=null,l=null;if(Os(t)){const e=t.mnemonic;s=k(ls(e.phrase,e.locale||"en")),a=e.path||os,l=e.locale||"en"}let c=r.client;c||(c="ethers.js");let h=null;h=r.salt?k(r.salt):fs(32);let u=null;if(r.iv){if(u=k(r.iv),16!==u.length)throw new Error("invalid iv")}else u=fs(16);let d=null;if(r.uuid){if(d=k(r.uuid),16!==d.length)throw new Error("invalid uuid")}else d=fs(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)),Bs.scrypt(o,h,f,p,m,64,n).then(e=>{const r=(e=k(e)).slice(0,16),n=e.slice(16,32),o=e.slice(32,64),g=new ys.Counter(u),v=k(new ys.ModeOfOperation.ctr(r,g).encrypt(i)),y=te(S([n,v])),w={address:t.address.substring(2).toLowerCase(),id:Ss(d),version:3,crypto:{cipher:"aes-128-ctr",cipherparams:{iv:P(u).substring(2)},ciphertext:P(v).substring(2),kdf:"scrypt",kdfparams:{salt:P(h).substring(2),n:f,dklen:32,p:m,r:p},mac:y.substring(2)}};if(s){const t=fs(16),e=new ys.Counter(t),r=k(new ys.ModeOfOperation.ctr(o,e).encrypt(s)),n=new Date,i=n.getUTCFullYear()+"-"+Es(n.getUTCMonth()+1,2)+"-"+Es(n.getUTCDate(),2)+"T"+Es(n.getUTCHours(),2)+"-"+Es(n.getUTCMinutes(),2)+"-"+Es(n.getUTCSeconds(),2)+".0Z";w["x-ethers"]={client:c,gethFilename:"UTC--"+i+"--"+w.address,mnemonicCounter:P(t).substring(2),mnemonicCiphertext:P(r).substring(2),path:a,locale:l,version:"0.1"}}return JSON.stringify(w)})}(this,t,e,r)}static createRandom(t){let e=fs(16);t||(t={}),t.extraEntropy&&(e=k(N(te(S([e,t.extraEntropy])),0,16)));const r=cs(e,t.locale);return Ws.fromMnemonic(r,t.path,t.locale)}static fromEncryptedJson(t,e,r){return zs(t,e,r).then(t=>new Ws(t))}static fromEncryptedJsonSync(t,e){return new Ws(js(t,e))}static fromMnemonic(t,e,r){return e||(e=os),new Ws(ss.fromMnemonic(t,null,r).derivePath(e))}}const Vs=new g("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 $s(t,e){const r=function(r,n){return r.JsonRpcProvider?new r.JsonRpcProvider(t,e):null};return r.renetwork=function(e){return $s(t,e)},r}const Qs={chainId:1,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"homestead",_defaultProvider:Js("homestead")},Ys={chainId:3,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"ropsten",_defaultProvider:Js("ropsten")},Xs={chainId:63,name:"classicMordor",_defaultProvider:$s("https://www.ethercluster.com/mordor","classicMordor")},Zs={unspecified:{chainId:0,name:"unspecified"},homestead:Qs,mainnet:Qs,morden:{chainId:2,name:"morden"},ropsten:Ys,testnet:Ys,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:$s("https://www.ethercluster.com/etc","classic")},classicMorden:{chainId:62,name:"classicMorden"},classicMordor:Xs,classicTestnet:Xs,classicKotti:{chainId:6,name:"classicKotti",_defaultProvider:$s("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 ta(t){if(null==t)return null;if("number"==typeof t){for(const e in Zs){const r=Zs[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=Zs[t];return null==e?null:{name:e.name,chainId:e.chainId,ensAddress:e.ensAddress,_defaultProvider:e._defaultProvider||null}}const e=Zs[t.name];if(!e)return"number"!=typeof t.chainId&&Vs.throwArgumentError("invalid network chainId","network",t),t;0!==t.chainId&&t.chainId!==e.chainId&&Vs.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 ea=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 ra(t,e){return ea(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:k(new Uint8Array(i))}})}var na=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 ia=new g("web/5.8.0");function oa(t){return new Promise(e=>{setTimeout(e,t)})}function sa(t,e){if(null==t)return null;if("string"==typeof t)return t;if(b(t)){if(e&&("text"===e.split("/")[0]||"application/json"===e.split(";")[0].trim()))try{return Qe(t)}catch(t){}return P(t)}return t}function aa(t,e,r){const n="object"==typeof t&&null!=t.throttleLimit?t.throttleLimit:12;ia.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;ia.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 h=!1,u=12e4;if("string"==typeof t)l=t;else if("object"==typeof t){if(null!=t&&null!=t.url||ia.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&&ia.throwError("basic authentication requires a secure https url",g.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(Ve(e))}}null!=t.skipFetchSetup&&(c.skipFetchSetup=!!t.skipFetchSetup),null!=t.fetchOptions&&(c.fetchOptions=pt(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){ia.throwError("processing response error",g.errors.SERVER_ERROR,{body:sa(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 v=function(){let t=null;return{promise:new Promise(function(e,r){u&&(t=setTimeout(()=>{null!=t&&(t=null,r(ia.makeError("timeout",g.errors.TIMEOUT,{requestBody:sa(c.body,m["content-type"]),requestMethod:c.method,timeout:u,url:l})))},u))}),cancel:function(){null!=t&&(clearTimeout(t),t=null)}}}(),y=function(){return na(this,void 0,void 0,function*(){for(let t=0;t<n;t++){let e=null;try{if(e=yield ra(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 oa(r);continue}}}catch(t){e=t.response,null==e&&(v.cancel(),ia.throwError("missing response",g.errors.SERVER_ERROR,{requestBody:sa(c.body,m["content-type"]),requestMethod:c.method,serverError:t,url:l}))}let a=e.body;if(h&&304===e.statusCode?a=null:!s&&(e.statusCode<200||e.statusCode>=300)&&(v.cancel(),ia.throwError("bad response",g.errors.SERVER_ERROR,{status:e.statusCode,headers:e.headers,body:sa(a,e.headers?e.headers["content-type"]:null),requestBody:sa(c.body,m["content-type"]),requestMethod:c.method,url:l})),r)try{const t=yield r(a,e);return v.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 oa(e);continue}}v.cancel(),ia.throwError("processing response error",g.errors.SERVER_ERROR,{body:sa(a,e.headers?e.headers["content-type"]:null),error:r,requestBody:sa(c.body,m["content-type"]),requestMethod:c.method,url:l})}return v.cancel(),a}return ia.throwError("failed response",g.errors.SERVER_ERROR,{requestBody:sa(c.body,m["content-type"]),requestMethod:c.method,url:l})})}();return Promise.race([v.promise,y])}function la(t,e,r){let n=null;if(null!=e){n=Ve(e);const r="string"==typeof t?{url:t}:pt(t);if(r.headers){0!==Object.keys(r.headers).filter(t=>"content-type"===t.toLowerCase()).length||(r.headers=pt(r.headers),r.headers["content-type"]="application/json")}else r.headers={"content-type":"application/json"};t=r}return aa(t,n,(t,e)=>{let n=null;if(null!=t)try{n=JSON.parse(Qe(t))}catch(e){ia.throwError("invalid JSON",g.errors.SERVER_ERROR,{body:t,error:e})}return r&&(n=r(n,e)),n})}function ca(t,e){return e||(e={}),null==(e=pt(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,ua;var da=function(){if(ua)return ha;ua=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 h=o(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,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}(),fa=r(da);const pa="providers/5.8.0",ma=new g(pa);class ga{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:ga.allowNull(this.accessList.bind(this),null),blockHash:ga.allowNull(o,null),blockNumber:ga.allowNull(a,null),transactionIndex:ga.allowNull(a,null),confirmations:ga.allowNull(a,null),from:e,gasPrice:ga.allowNull(r),maxPriorityFeePerGas:ga.allowNull(r),maxFeePerGas:ga.allowNull(r),gasLimit:r,to:ga.allowNull(e,null),value:r,nonce:a,data:i,r:ga.allowNull(this.uint256),s:ga.allowNull(this.uint256),v:ga.allowNull(a),creates:ga.allowNull(e,null),raw:ga.allowNull(i)},t.transactionRequest={from:ga.allowNull(e),nonce:ga.allowNull(a),gasLimit:ga.allowNull(r),gasPrice:ga.allowNull(r),maxPriorityFeePerGas:ga.allowNull(r),maxFeePerGas:ga.allowNull(r),to:ga.allowNull(e),value:ga.allowNull(r),data:ga.allowNull(t=>this.data(t,!0)),type:ga.allowNull(a),accessList:ga.allowNull(this.accessList.bind(this),null)},t.receiptLog={transactionIndex:a,blockNumber:a,transactionHash:o,address:e,topics:ga.arrayOf(o),data:i,logIndex:a,blockHash:o},t.receipt={to:ga.allowNull(this.address,null),from:ga.allowNull(this.address,null),contractAddress:ga.allowNull(e,null),transactionIndex:a,root:ga.allowNull(s),gasUsed:r,logsBloom:ga.allowNull(i),blockHash:o,transactionHash:o,logs:ga.arrayOf(this.receiptLog.bind(this)),blockNumber:a,confirmations:ga.allowNull(a,null),cumulativeGasUsed:r,effectiveGasPrice:ga.allowNull(r),status:ga.allowNull(a),type:l},t.block={hash:ga.allowNull(o),parentHash:o,number:a,timestamp:a,nonce:ga.allowNull(s),difficulty:this.difficulty.bind(this),gasLimit:r,gasUsed:r,miner:ga.allowNull(e),extraData:i,transactions:ga.allowNull(ga.arrayOf(o)),baseFeePerGas:ga.allowNull(r)},t.blockWithTransactions=pt(t.block),t.blockWithTransactions.transactions=ga.allowNull(ga.arrayOf(this.transactionResponse.bind(this))),t.filter={fromBlock:ga.allowNull(n,void 0),toBlock:ga.allowNull(n,void 0),blockHash:ga.allowNull(o,void 0),address:ga.allowNull(e,void 0),topics:ga.allowNull(this.topics.bind(this),void 0)},t.filterLog={blockNumber:ga.allowNull(a),blockHash:ga.allowNull(o),transactionIndex:a,removed:ga.allowNull(this.boolean.bind(this)),address:e,data:ga.allowFalsish(i,"0x"),topics:ga.arrayOf(o),transactionHash:o,logIndex:a},t}accessList(t){return uo(t||[])}number(t){return"0x"===t?0:H.from(t).toNumber()}type(t){return"0x"===t||null==t?0:H.from(t).toNumber()}bigNumber(t){return H.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),x(t))?t.toLowerCase():ma.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 ge(t)}callAddress(t){if(!x(t,32))return null;const e=ge(N(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||x(t))return B(t);throw new Error("invalid blockTag")}hash(t,e){const r=this.hex(t,e);return 32!==I(r)?ma.throwArgumentError("invalid hash","value",t):r}difficulty(t){if(null==t)return null;const e=H.from(t);try{return e.toNumber()}catch(t){}return null}uint256(t){if(!x(t))throw new Error("invalid uint256");return F(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=ga.check(e,t);return n._difficulty=null==r?null:H.from(r),n}block(t){return this._block(t,this.formats.block)}blockWithTransactions(t){return this._block(t,this.formats.blockWithTransactions)}transactionRequest(t){return ga.check(this.formats.transactionRequest,t)}transactionResponse(t){null!=t.gas&&null==t.gasLimit&&(t.gasLimit=t.gas),t.to&&H.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=ga.check(this.formats.transaction,t);if(null!=t.chainId){let r=t.chainId;x(r)&&(r=H.from(r).toNumber()),e.chainId=r}else{let r=t.networkId;null==r&&null==e.v&&(r=t.chainId),x(r)&&(r=H.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 ga.check(this.formats.receiptLog,t)}receipt(t){const e=ga.check(this.formats.receipt,t);if(null!=e.root)if(e.root.length<=4){const t=H.from(e.root).toNumber();0===t||1===t?(null!=e.status&&e.status!==t&&ma.throwArgumentError("alt-root-status/status mismatch","value",{root:e.root,status:e.status}),e.status=t,delete e.root):ma.throwArgumentError("invalid alt-root-status","value.root",e.root)}else 66!==e.root.length&&ma.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 ga.check(this.formats.filter,t)}filterLog(t){return ga.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 ya(t){return va(t)&&t.isCommunityResource()}let wa=!1;function ba(){wa||(wa=!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 Ea=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 Aa=new g(pa);function ka(t){return null==t?"null":(32!==I(t)&&Aa.throwArgumentError("invalid topic","topic",t),t.toLowerCase())}function Sa(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[ka(t)]=!0});const r=Object.keys(e);return r.sort(),r.join("|")}return ka(t)}).join("&")}function Ca(t){if("string"==typeof t){if(32===I(t=t.toLowerCase()))return"tx:"+t;if(-1===t.indexOf(":"))return t}else{if(Array.isArray(t))return"filter:*:"+Sa(t);if(wn.isForkEvent(t))throw Aa.warn("not implemented"),new Error("not implemented");if(t&&"object"==typeof t)return"filter:"+(t.address||"*")+":"+Sa(t.topics||[])}throw new Error("invalid event - "+t)}function _a(){return(new Date).getTime()}function xa(t){return new Promise(e=>{setTimeout(e,t)})}const Ta=["block","network","pending","poll"];class Pa{constructor(t,e,r){ht(this,"tag",t),ht(this,"listener",e),ht(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 Ia={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 Na(t){return F(H.from(t).toHexString(),32)}function Ma(t){return Oo.encode(S([t,N(qo(qo(t)),0,4)]))}const Ba=new RegExp("^(ipfs)://(.*)$","i"),Ra=[new RegExp("^(https)://(.*)$","i"),new RegExp("^(data):(.*)$","i"),Ba,new RegExp("^eip155:[0-9]+/(erc[0-9]+):(.*)$","i")];function Fa(t,e){try{return Qe(Oa(t,e))}catch(t){}return null}function Oa(t,e){if("0x"===t)return null;const r=H.from(N(t,e,e+32)).toNumber(),n=H.from(N(t,r,r+32)).toNumber();return N(t,r+32,r+32+n)}function Da(t){return t.match(/^ipfs:\/\/ipfs\//i)?t=t.substring(12):t.match(/^ipfs:\/\//i)?t=t.substring(7):Aa.throwArgumentError("unsupported IPFS format","link",t),`https://gateway.ipfs.io/ipfs/${t}`}function La(t){const e=k(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 Ua(t){if(t.length%32==0)return t;const e=new Uint8Array(32*Math.ceil(t.length/32));return e.set(t),e}function qa(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=k(t[n]);e[n]=La(r),e.push(La(i.length)),e.push(Ua(i)),r+=32+32*Math.ceil(i.length/32)}return M(e)}class Ga{constructor(t,e,r,n){ht(this,"provider",t),ht(this,"name",r),ht(this,"address",t.formatter.address(e)),ht(this,"_resolvedAddress",n)}supportsWildcard(){return this._supportsEip2544||(this._supportsEip2544=this.provider.call({to:this.address,data:"0x01ffc9a79061b92300000000000000000000000000000000000000000000000000000000"}).then(t=>H.from(t).eq(1)).catch(t=>{if(t.code===g.errors.CALL_EXCEPTION)return!1;throw this._supportsEip2544=null,t})),this._supportsEip2544}_fetch(t,e){return Ea(this,void 0,void 0,function*(){const r={to:this.address,ccipReadEnabled:!0,data:M([t,jr(this.name),e||"0x"])};let n=!1;(yield this.supportsWildcard())&&(n=!0,r.data=M(["0x9061b923",qa([Hr(this.name),r.data])]));try{let t=yield this.provider.call(r);return k(t).length%32==4&&Aa.throwError("resolver threw error",g.errors.CALL_EXCEPTION,{transaction:r,data:t}),n&&(t=Oa(t,0)),t}catch(t){if(t.code===g.errors.CALL_EXCEPTION)return null;throw t}})}_fetchBytes(t,e){return Ea(this,void 0,void 0,function*(){const r=yield this._fetch(t,e);return null!=r?Oa(r,0):null})}_getAddress(t,e){const r=Ia[String(t)];if(null==r&&Aa.throwError(`unsupported coin type: ${t}`,g.errors.UNSUPPORTED_OPERATION,{operation:`getAddress(${t})`}),"eth"===r.ilk)return this.provider.formatter.address(e);const n=k(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(S([[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(S([[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=fa.toWords(n.slice(2));return t.unshift(e),fa.encode(r.prefix,t)}}return null}getAddress(t){return Ea(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===g.errors.CALL_EXCEPTION)return null;throw t}const e=yield this._fetchBytes("0xf1cb7e06",Na(t));if(null==e||"0x"===e)return null;const r=this._getAddress(t,e);return null==r&&Aa.throwError("invalid or unsupported coin data",g.errors.UNSUPPORTED_OPERATION,{operation:`getAddress(${t})`,coinType:t,data:e}),r})}getAvatar(){return Ea(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<Ra.length;r++){const n=e.match(Ra[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:Da(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=F(H.from(s[1]).toHexString(),32);if("erc721"===i){const e=this.provider.formatter.callAddress(yield this.provider.call({to:a,data:M(["0x6352211e",l])}));if(o!==e)return null;t.push({type:"owner",content:e})}else if("erc1155"===i){const e=H.from(yield this.provider.call({to:a,data:M(["0x00fdd58e",F(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:M([r,l])};let h=Fa(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=Da(h)),t.push({type:"metadata-url",content:h});const u=yield la(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(Ba))return null;t.push({type:"url-ipfs",content:d}),d=Da(d)}return t.push({type:"url",content:d}),{linkage:t,url:d}}}}}catch(t){}return null})}getContentHash(){return Ea(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://"+Oo.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://"+Oo.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 Aa.throwError("invalid or unsupported content hash data",g.errors.UNSUPPORTED_OPERATION,{operation:"getContentHash()",data:t})})}getText(t){return Ea(this,void 0,void 0,function*(){let e=Ve(t);e=S([Na(64),Na(e.length),e]),e.length%32!=0&&(e=S([e,F("0x",32-t.length%32)]));const r=yield this._fetchBytes("0x59d1d43c",P(e));return null==r||"0x"===r?null:Qe(r)})}}let za=null,ja=1;class Ha extends bn{constructor(t){if(super(),this._events=[],this._emitted={block:-2},this.disableCcipRead=!1,this.formatter=new.target.getFormatter(),ht(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=ut(new.target,"getNetwork")(t);e?(ht(this,"_network",e),this.emit("network",e,null)):Aa.throwArgumentError("invalid network","network",t)}this._maxInternalBlockNumber=-1024,this._lastBlockNumber=-2,this._maxFilterBlockRange=10,this._pollingInterval=4e3,this._fastQueryDate=0}_ready(){return Ea(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||Aa.throwError("no network detected",g.errors.UNKNOWN_ERROR,{}),null==this._network&&(this.anyNetwork?this._network=t:ht(this,"_network",t),this.emit("network",t,null))}return this._network})}get ready(){return ca(()=>this._ready().then(t=>t,t=>{if(t.code!==g.errors.NETWORK_ERROR||"noNetwork"!==t.event)throw t}))}static getFormatter(){return null==za&&(za=new ga),za}static getNetwork(t){return ta(null==t?"homestead":t)}ccipReadFetch(t,e,r){return Ea(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 la({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 Aa.throwError(`response not found during CCIP fetch: ${c}`,g.errors.SERVER_ERROR,{url:e,errorMessage:c});o.push(c)}return Aa.throwError(`error encountered during CCIP fetch: ${o.map(t=>JSON.stringify(t)).join(", ")}`,g.errors.SERVER_ERROR,{urls:r,errorMessages:o})})}_getInternalBlockNumber(t){return Ea(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=dt({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=H.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 Ea(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)Aa.warn(`network block skew detected; skipping block events (emitted=${this._emitted.block} blockNumber${r})`),this.emit("error",Aa.makeError("network block skew detected",g.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 Ea(this,void 0,void 0,function*(){return Aa.throwError("provider does not support network detection",g.errors.UNSUPPORTED_OPERATION,{operation:"provider.detectNetwork"})})}getNetwork(){return Ea(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 xa(0),this._network;const r=Aa.makeError("underlying network changed",g.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 Ea(this,void 0,void 0,function*(){return this._waitForTransaction(t,null==e?1:e,r||0,null)})}_waitForTransaction(t,e,r,n){return Ea(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=>Ea(this,void 0,void 0,function*(){a||(yield xa(1e3),this.getTransactionCount(n.from).then(h=>Ea(this,void 0,void 0,function*(){if(!a){if(h<=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(Aa.makeError("transaction was replaced",g.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(Aa.makeError("timeout exceeded",g.errors.TIMEOUT,{timeout:r}))},r);t.unref&&t.unref(),s.push(()=>{clearTimeout(t)})}})})}getBlockNumber(){return Ea(this,void 0,void 0,function*(){return this._getInternalBlockNumber(0)})}getGasPrice(){return Ea(this,void 0,void 0,function*(){yield this.getNetwork();const t=yield this.perform("getGasPrice",{});try{return H.from(t)}catch(e){return Aa.throwError("bad result from backend",g.errors.SERVER_ERROR,{method:"getGasPrice",result:t,error:e})}})}getBalance(t,e){return Ea(this,void 0,void 0,function*(){yield this.getNetwork();const r=yield dt({address:this._getAddress(t),blockTag:this._getBlockTag(e)}),n=yield this.perform("getBalance",r);try{return H.from(n)}catch(t){return Aa.throwError("bad result from backend",g.errors.SERVER_ERROR,{method:"getBalance",params:r,result:n,error:t})}})}getTransactionCount(t,e){return Ea(this,void 0,void 0,function*(){yield this.getNetwork();const r=yield dt({address:this._getAddress(t),blockTag:this._getBlockTag(e)}),n=yield this.perform("getTransactionCount",r);try{return H.from(n).toNumber()}catch(t){return Aa.throwError("bad result from backend",g.errors.SERVER_ERROR,{method:"getTransactionCount",params:r,result:n,error:t})}})}getCode(t,e){return Ea(this,void 0,void 0,function*(){yield this.getNetwork();const r=yield dt({address:this._getAddress(t),blockTag:this._getBlockTag(e)}),n=yield this.perform("getCode",r);try{return P(n)}catch(t){return Aa.throwError("bad result from backend",g.errors.SERVER_ERROR,{method:"getCode",params:r,result:n,error:t})}})}getStorageAt(t,e,r){return Ea(this,void 0,void 0,function*(){yield this.getNetwork();const n=yield dt({address:this._getAddress(t),blockTag:this._getBlockTag(r),position:Promise.resolve(e).then(t=>B(t))}),i=yield this.perform("getStorageAt",n);try{return P(i)}catch(t){return Aa.throwError("bad result from backend",g.errors.SERVER_ERROR,{method:"getStorageAt",params:n,result:i,error:t})}})}_wrapTransaction(t,e,r){if(null!=e&&32!==I(e))throw new Error("invalid response - sendTransaction");const n=t;return null!=e&&t.hash!==e&&Aa.throwError("Transaction hash mismatch from Provider.sendTransaction.",g.errors.UNKNOWN_ERROR,{expectedHash:t.hash,returnedHash:e}),n.wait=(e,n)=>Ea(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&&Aa.throwError("transaction failed",g.errors.CALL_EXCEPTION,{transactionHash:t.hash,transaction:t,receipt:o}),o)}),n}sendTransaction(t){return Ea(this,void 0,void 0,function*(){yield this.getNetwork();const e=yield Promise.resolve(t).then(t=>P(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 Ea(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?H.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?P(t):null))}),this.formatter.transactionRequest(yield dt(r))})}_getFilter(t){return Ea(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 dt(e))})}_call(t,e,r){return Ea(this,void 0,void 0,function*(){r>=10&&Aa.throwError("CCIP read exceeded maximum redirections",g.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)&&I(i)%32==4)try{const o=N(i,4),s=N(o,0,32);H.from(s).eq(n)||Aa.throwError("CCIP Read sender did not match",g.errors.CALL_EXCEPTION,{name:"OffchainLookup",signature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",transaction:t,data:i});const a=[],l=H.from(N(o,32,64)).toNumber(),c=H.from(N(o,l,l+32)).toNumber(),h=N(o,l+32);for(let e=0;e<c;e++){const r=Fa(h,32*e);null==r&&Aa.throwError("CCIP Read contained corrupt URL string",g.errors.CALL_EXCEPTION,{name:"OffchainLookup",signature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",transaction:t,data:i}),a.push(r)}const u=Oa(o,64);H.from(N(o,100,128)).isZero()||Aa.throwError("CCIP Read callback selector included junk",g.errors.CALL_EXCEPTION,{name:"OffchainLookup",signature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",transaction:t,data:i});const d=N(o,96,100),f=Oa(o,128),p=yield this.ccipReadFetch(t,u,a);null==p&&Aa.throwError("CCIP Read disabled or provided no URLs",g.errors.CALL_EXCEPTION,{name:"OffchainLookup",signature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",transaction:t,data:i});const m={to:n,data:M([d,qa([p,f])])};return this._call(m,e,r+1)}catch(t){if(t.code===g.errors.SERVER_ERROR)throw t}try{return P(i)}catch(r){return Aa.throwError("bad result from backend",g.errors.SERVER_ERROR,{method:"call",params:{transaction:t,blockTag:e},result:i,error:r})}})}call(t,e){return Ea(this,void 0,void 0,function*(){yield this.getNetwork();const r=yield dt({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 Ea(this,void 0,void 0,function*(){yield this.getNetwork();const e=yield dt({transaction:this._getTransactionRequest(t)}),r=yield this.perform("estimateGas",e);try{return H.from(r)}catch(t){return Aa.throwError("bad result from backend",g.errors.SERVER_ERROR,{method:"estimateGas",params:e,result:r,error:t})}})}_getAddress(t){return Ea(this,void 0,void 0,function*(){"string"!=typeof(t=yield t)&&Aa.throwArgumentError("invalid address or ENS name","name",t);const e=yield this.resolveName(t);return null==e&&Aa.throwError("ENS name not configured",g.errors.UNSUPPORTED_OPERATION,{operation:`resolveName(${JSON.stringify(t)})`}),e})}_getBlock(t,e){return Ea(this,void 0,void 0,function*(){yield this.getNetwork(),t=yield t;let r=-128;const n={includeTransactions:!!e};if(x(t,32))n.blockHash=t;else try{n.blockTag=yield this._getBlockTag(t),x(n.blockTag)&&(r=parseInt(n.blockTag.substring(2),16))}catch(e){Aa.throwArgumentError("invalid block hash or block tag","blockHashOrBlockTag",t)}return ca(()=>Ea(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 Ea(this,void 0,void 0,function*(){yield this.getNetwork(),t=yield t;const e={transactionHash:this.formatter.hash(t,!0)};return ca(()=>Ea(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 Ea(this,void 0,void 0,function*(){yield this.getNetwork(),t=yield t;const e={transactionHash:this.formatter.hash(t,!0)};return ca(()=>Ea(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 Ea(this,void 0,void 0,function*(){yield this.getNetwork();const e=yield dt({filter:this._getFilter(t)}),r=yield this.perform("getLogs",e);return r.forEach(t=>{null==t.removed&&(t.removed=!1)}),ga.arrayOf(this.formatter.filterLog.bind(this.formatter))(r)})}getEtherPrice(){return Ea(this,void 0,void 0,function*(){return yield this.getNetwork(),this.perform("getEtherPrice",{})})}_getBlockTag(t){return Ea(this,void 0,void 0,function*(){if("number"==typeof(t=yield t)&&t<0){t%1&&Aa.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 Ea(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 Ea(this,void 0,void 0,function*(){null==e&&(e="ENS");const r=yield this.getNetwork();r.ensAddress||Aa.throwError("network does not support ENS",g.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 Ea(this,void 0,void 0,function*(){t=yield t;try{return Promise.resolve(this.formatter.address(t))}catch(e){if(x(t))throw e}"string"!=typeof t&&Aa.throwArgumentError("invalid ENS name","name",t);const e=yield this.getResolver(t);return e?yield e.getAddress():null})}lookupAddress(t){return Ea(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=Fa(yield this.call({to:r,data:"0x691f3431"+jr(e).substring(2)}),0);return(yield this.resolveName(n))!=t?null:n})}getAvatar(t){return Ea(this,void 0,void 0,function*(){let e=null;if(x(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!==g.errors.CALL_EXCEPTION)throw t}try{const t=Fa(yield this.call({to:n,data:"0x691f3431"+jr(r).substring(2)}),0);e=yield this.getResolver(t)}catch(t){if(t.code!==g.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 Aa.throwError(t+" not implemented",g.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(Ca(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=Ca(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=Ca(t);return this._events.filter(t=>t.tag===e).length}listeners(t){if(null==t)return this._events.map(t=>t.listener);let e=Ca(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=Ca(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=Ca(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,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 Wa=new g(pa),Va=["call","estimateGas"];function Ja(t,e){if(null==t)return null;if("string"==typeof t.message&&t.message.match("reverted")){const r=x(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 $a(t,e,r){const n=r.transaction||r.signedTransaction;if("call"===t){const t=Ja(e,!0);if(t)return t.data;Wa.throwError("missing revert data in call exception; Transaction reverted without a reason string",g.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&&Wa.throwError("cannot estimate gas; transaction may fail or may require manual gas limit",g.errors.UNPREDICTABLE_GAS_LIMIT,{reason:r.message,method:t,transaction:n,error:e})}let i=e.message;throw e.code===g.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)&&Wa.throwError("insufficient funds for intrinsic transaction cost",g.errors.INSUFFICIENT_FUNDS,{error:e,method:t,transaction:n}),i.match(/nonce (is )?too low/i)&&Wa.throwError("nonce has already been used",g.errors.NONCE_EXPIRED,{error:e,method:t,transaction:n}),i.match(/replacement transaction underpriced|transaction gas price.*too low/i)&&Wa.throwError("replacement fee too low",g.errors.REPLACEMENT_UNDERPRICED,{error:e,method:t,transaction:n}),i.match(/only replay-protected/i)&&Wa.throwError("legacy pre-eip-155 transactions not supported",g.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/)&&Wa.throwError("cannot estimate gas; transaction may fail or may require manual gas limit",g.errors.UNPREDICTABLE_GAS_LIMIT,{error:e,method:t,transaction:n}),e}function Qa(t){return new Promise(function(e){setTimeout(e,t)})}function Ya(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 Xa(t){return t?t.toLowerCase():t}const Za={};class tl extends Cn{constructor(t,e,r){if(super(),t!==Za)throw new Error("do not call the JsonRpcSigner constructor directly; use provider.getSigner");ht(this,"provider",e),null==r&&(r=0),"string"==typeof r?(ht(this,"_address",this.provider.formatter.address(r)),ht(this,"_index",null)):"number"==typeof r?(ht(this,"_index",r),ht(this,"_address",null)):Wa.throwArgumentError("invalid address or index","addressOrIndex",r)}connect(t){return Wa.throwError("cannot alter JSON-RPC Signer connection",g.errors.UNSUPPORTED_OPERATION,{operation:"connect"})}connectUnchecked(){return new el(Za,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&&Wa.throwError("unknown account #"+this._index,g.errors.UNSUPPORTED_OPERATION,{operation:"getAddress"}),this.provider.formatter.address(t[this._index])))}sendUncheckedTransaction(t){t=pt(t);const e=this.getAddress().then(t=>(t&&(t=t.toLowerCase()),t));if(null==t.gasLimit){const r=pt(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&&Wa.throwArgumentError("provided ENS name resolves to null","tx.to",t),e}))),dt({tx:dt(t),sender:e}).then(({tx:e,sender:r})=>{null!=e.from?e.from.toLowerCase()!==r&&Wa.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)&&Wa.throwError("user rejected transaction",g.errors.ACTION_REJECTED,{action:"sendTransaction",transaction:e}),$a("sendTransaction",t,n)))})}signTransaction(t){return Wa.throwError("signing transactions is unsupported",g.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 ca(()=>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",[P(e),r.toLowerCase()])}catch(e){throw"string"==typeof e.message&&e.message.match(/user denied/i)&&Wa.throwError("user rejected signing",g.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(),P(e)])}catch(e){throw"string"==typeof e.message&&e.message.match(/user denied/i)&&Wa.throwError("user rejected signing",g.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 ln.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(ln.getPayload(n.domain,e,n.value))])}catch(t){throw"string"==typeof t.message&&t.message.match(/user denied/i)&&Wa.throwError("user rejected signing",g.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 el extends tl{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 rl={chainId:!0,data:!0,gasLimit:!0,gasPrice:!0,nonce:!0,to:!0,value:!0,type:!0,accessList:!0,maxFeePerGas:!0,maxPriorityFeePerGas:!0};class nl extends Ha{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=ut(this.constructor,"defaultUrl")()),ht(this,"connection","string"==typeof t?Object.freeze({url:t}):Object.freeze(pt(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 Qa(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=ut(this.constructor,"getNetwork");try{return e(H.from(t).toNumber())}catch(e){return Wa.throwError("could not detect network",g.errors.NETWORK_ERROR,{chainId:t,event:"invalidNetwork",serverError:e})}}return Wa.throwError("could not detect network",g.errors.NETWORK_ERROR,{event:"noNetwork"})})}getSigner(t){return new tl(Za,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:yt(r),provider:this});const n=["eth_chainId","eth_blockNumber"].indexOf(t)>=0;if(n&&this._cache[t])return this._cache[t];const i=la(this.connection,JSON.stringify(r),Ya).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",[Xa(e.address),e.blockTag]];case"getTransactionCount":return["eth_getTransactionCount",[Xa(e.address),e.blockTag]];case"getCode":return["eth_getCode",[Xa(e.address),e.blockTag]];case"getStorageAt":return["eth_getStorageAt",[Xa(e.address),F(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",[ut(this.constructor,"hexlifyTransaction")(e.transaction,{from:!0}),e.blockTag]];case"estimateGas":return["eth_estimateGas",[ut(this.constructor,"hexlifyTransaction")(e.transaction,{from:!0})]];case"getLogs":return e.filter&&null!=e.filter.address&&(e.filter.address=Xa(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&&H.from(t.type).isZero()&&null==t.maxFeePerGas&&null==t.maxPriorityFeePerGas){const r=yield this.getFeeData();null==r.maxFeePerGas&&null==r.maxPriorityFeePerGas&&((e=pt(e)).transaction=pt(t),delete e.transaction.type)}}const r=this.prepareRequest(t,e);null==r&&Wa.throwError(t+" not implemented",g.errors.NOT_IMPLEMENTED,{operation:t});try{return yield this.send(r[0],r[1])}catch(r){return $a(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 Qa(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=pt(rl);if(e)for(const t in e)e[t]&&(r[t]=!0);ft(t,r);const n={};return["chainId","gasLimit","gasPrice","type","maxFeePerGas","maxPriorityFeePerGas","nonce","value"].forEach(function(e){if(null==t[e])return;const r=B(H.from(t[e]));"gasLimit"===e&&(e="gas"),n[e]=r}),["from","to","data"].forEach(function(e){null!=t[e]&&(n[e]=P(t[e]))}),t.accessList&&(n.accessList=uo(t.accessList)),n}}let il=null;try{if(il=WebSocket,null==il)throw new Error("inject please")}catch(t){const e=new g(pa);il=function(){e.throwError("WebSockets not supported in this environment",g.errors.UNSUPPORTED_OPERATION,{operation:"new WebSocket()"})}}var ol=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 sl=new g(pa);let al=1;class ll extends nl{constructor(t,e){"any"===e&&sl.throwError("WebSocketProvider does not support 'any' network yet",g.errors.UNSUPPORTED_OPERATION,{operation:"network:any"}),super("string"==typeof t?t:"_websocket",e),this._pollingInterval=-1,this._wsReady=!1,ht(this,"_websocket","string"==typeof t?new il(this.connection.url):t),ht(this,"_requests",{}),ht(this,"_subs",{}),ht(this,"_subIds",{}),ht(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"),ht(t,"code",r.error.code||null),ht(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){sl.throwError("cannot reset events block on WebSocketProvider",g.errors.UNSUPPORTED_OPERATION,{operation:"resetEventBlock"})}set pollingInterval(t){sl.throwError("cannot set polling interval on WebSocketProvider",g.errors.UNSUPPORTED_OPERATION,{operation:"setPollingInterval"})}poll(){return ol(this,void 0,void 0,function*(){return null})}set polling(t){t&&sl.throwError("cannot set polling on WebSocketProvider",g.errors.UNSUPPORTED_OPERATION,{operation:"setPolling"})}send(t,e){const r=al++;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 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=H.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===il.CONNECTING&&(yield new Promise(t=>{this.websocket.onopen=function(){t(!0)},this.websocket.onerror=function(){t(!1)}})),this.websocket.close(1e3)})}}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 hl=new g(pa);class ul extends nl{detectNetwork(){const t=Object.create(null,{detectNetwork:{get:()=>super.detectNetwork}});return cl(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",g.errors.UNKNOWN_ERROR,{}),null==this._network&&(ht(this,"_network",e),this.emit("network",e,null))),e})}}class dl extends ul{constructor(t,e){hl.checkAbstract(new.target,dl),t=ut(new.target,"getNetwork")(t),e=ut(new.target,"getApiKey")(e);super(ut(new.target,"getUrl")(t,e),t),"string"==typeof e?ht(this,"apiKey",e):null!=e&&Object.keys(e).forEach(t=>{ht(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",g.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",g.errors.NOT_IMPLEMENTED,{operation:"getUrl"})}}const fl=new g(pa),pl="_gg7wSSi0KMBsdKnGVfHDueq6xMB9EkC";class ml extends ll{constructor(t,e){const r=new gl(t,e);super(r.connection.url.replace(/^http/i,"ws").replace(".alchemyapi.",".ws.alchemyapi."),r.network),ht(this,"apiKey",r.apiKey)}isCommunityResource(){return this.apiKey===pl}}class gl extends dl{static getWebSocketProvider(t,e){return new ml(t,e)}static getApiKey(t){return null==t?pl:(t&&"string"!=typeof t&&fl.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:fl.throwArgumentError("unsupported network","network",arguments[0])}return{allowGzip:!0,url:"https://"+r+e,throttleCallback:(t,r)=>(e===pl&&ba(),Promise.resolve(!0))}}isCommunityResource(){return this.apiKey===pl}}const vl=new g(pa),yl="9f7d929b018cdffb338517efa06f58359e86ff1ffd350bc889738523659e7972";function wl(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 bl extends dl{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://"+wl(t.name)+e,throttleCallback:(t,r)=>(e.apiKey===yl&&ba(),Promise.resolve(!0))};return null!=e.projectSecret&&(r.user="",r.password=e.projectSecret),r}}var El=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 g(pa);class kl extends dl{static getApiKey(t){return null!=t&&Al.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 Al.throwArgumentError("unsupported network","network",arguments[0]);return r}perform(t,e){const r=Object.create(null,{perform:{get:()=>super.perform}});return El(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 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 Cl=new g(pa);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]?B(P(n)):"accessList"===r?"["+uo(n).map(t=>`{address:"${t.address}",storageKeys:["${t.storageKeys.join('","')}"]}`).join(",")+"]":P(n),e[r]=n)}return e}function xl(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 Il(t,e,r){if("call"===t&&e.code===g.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,"")),x(r))return r;Cl.throwError("missing revert data in call exception",g.errors.CALL_EXCEPTION,{error:e,data:"0x"})}}let n=e.message;throw e.code===g.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/)&&Cl.throwError("insufficient funds for intrinsic transaction cost",g.errors.INSUFFICIENT_FUNDS,{error:e,method:t,transaction:r}),n.match(/same hash was already imported|transaction nonce is too low|nonce too low/)&&Cl.throwError("nonce has already been used",g.errors.NONCE_EXPIRED,{error:e,method:t,transaction:r}),n.match(/another transaction with same nonce/)&&Cl.throwError("replacement fee too low",g.errors.REPLACEMENT_UNDERPRICED,{error:e,method:t,transaction:r}),n.match(/execution failed due to an exception|execution reverted/)&&Cl.throwError("cannot estimate gas; transaction may fail or may require manual gas limit",g.errors.UNPREDICTABLE_GAS_LIMIT,{error:e,method:t,transaction:r}),e}class Nl extends Ha{constructor(t,e){super(t),ht(this,"baseUrl",this.getBaseUrl()),ht(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 Cl.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 Sl(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?Tl:xl;this.emit("debug",{action:"request",request:n,provider:this});const s={url:n,throttleSlotInterval:1e3,throttleCallback:(t,e)=>(this.isCommunityResource()&&ba(),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 la(s,a,o||Tl);return this.emit("debug",{action:"response",request:n,response:yt(l),provider:this}),l})}detectNetwork(){return Sl(this,void 0,void 0,function*(){return this.network})}perform(t,e){const r=Object.create(null,{perform:{get:()=>super.perform}});return Sl(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=>Il("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 Il("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 Il("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&&Cl.throwError("unsupported topic count",g.errors.UNSUPPORTED_OPERATION,{topics:e.filter.topics}),1===e.filter.topics.length)){const r=e.filter.topics[0];"string"==typeof r&&66===r.length||Cl.throwError("unsupported topic format",g.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 Sl(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,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 Bl=new g(pa);function Rl(){return(new Date).getTime()}function Fl(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)||Bl.throwArgumentError("provider mismatch","networks",t):e=n}return e}function Ol(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 Dl(t){if(null===t)return"null";if("number"==typeof t||"boolean"==typeof t)return JSON.stringify(t);if("string"==typeof t)return t;if(H.isBigNumber(t))return t.toString();if(Array.isArray(t))return JSON.stringify(t.map(t=>Dl(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]":Dl(r),JSON.stringify(e)+":"+r}).join(",")+"}"}throw new Error("unknown value type: "+typeof t)}let Ll=1;function Ul(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 ql=[g.errors.CALL_EXCEPTION,g.errors.INSUFFICIENT_FUNDS,g.errors.NONCE_EXPIRED,g.errors.REPLACEMENT_UNDERPRICED,g.errors.UNPREDICTABLE_GAS_LIMIT],Gl=["address","args","errorArgs","errorSignature","method","transaction"];function zl(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=Dl;switch(e){case"getBlockNumber":return function(e){const r=e.map(t=>t.result);let n=Ol(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 Ol(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=pt(t)).confirmations=-1,Dl(t))};break;case"getBlock":n=r.includeTransactions?function(t){return null==t?null:((t=pt(t)).transactions=t.transactions.map(t=>((t=pt(t)).confirmations=-1,t)),Dl(t))}:function(t){return null==t?null:Dl(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 Hl(t,e){return Ml(this,void 0,void 0,function*(){const r=t.provider;return null!=r.blockNumber&&r.blockNumber>=e||-1===e?r:ca(()=>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&&x(n.blockTag)&&(i=yield Hl(t,e)),i[r](n.address,n.blockTag||"latest");case"getStorageAt":return n.blockTag&&x(n.blockTag)&&(i=yield Hl(t,e)),i.getStorageAt(n.address,n.position,n.blockTag||"latest");case"getBlock":return n.blockTag&&x(n.blockTag)&&(i=yield Hl(t,e)),i[n.includeTransactions?"getBlockWithTransactions":"getBlock"](n.blockTag||n.blockHash);case"call":case"estimateGas":return n.blockTag&&x(n.blockTag)&&(i=yield Hl(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&&x(r.fromBlock)||r.toBlock&&x(r.toBlock))&&(i=yield Hl(t,e)),i.getLogs(r)}}return Bl.throwError("unknown method error",g.errors.UNKNOWN_ERROR,{method:r,params:n})})}class Wl extends Ha{constructor(t,e){0===t.length&&Bl.throwArgumentError("missing providers","providers",t);const r=t.map((t,e)=>{if(bn.isProvider(t)){const e=ya(t)?2e3:750,r=1;return Object.freeze({provider:t,weight:1,stallTimeout:e,priority:r})}const r=pt(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)&&Bl.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&&Bl.throwArgumentError("quorum will always fail; larger than total weight","quorum",e);let i=Fl(r.map(t=>t.provider.network));null==i&&(i=new Promise((t,e)=>{setTimeout(()=>{this.detectNetwork().then(t,e)},0)})),super(i),ht(this,"providerConfigs",Object.freeze(r)),ht(this,"quorum",e),this._highestBlockNumber=-1}detectNetwork(){return Ml(this,void 0,void 0,function*(){return Fl(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=jl(this,t,e),n=ps(this.providerConfigs.map(pt));n.sort((t,e)=>t.priority-e.priority);const i=this._highestBlockNumber;let o=0,s=!0;for(;;){const a=Rl();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=Rl(),r.staller=Ul(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:s,backend:zl(r,Rl()),request:{method:t,params:yt(e)},provider:this})},n=>{r.done=!0,r.error=n,this.listenerCount("debug")&&this.emit("debug",{action:"request",rid:s,backend:zl(r,Rl()),request:{method:t,params:yt(e)},provider:this})}),this.listenerCount("debug")&&this.emit("debug",{action:"request",rid:s,backend:zl(r,null),request:{method:t,params:yt(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;s||(yield Ul(100).getPromise()),s=!1}const u=n.reduce((t,e)=>{if(!e.done||null==e.error)return t;const r=e.error.code;return ql.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={};Gl.forEach(t=>{null!=r[t]&&(i[t]=r[t])}),Bl.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}),Bl.throwError("failed to meet quorum",g.errors.SERVER_ERROR,{method:t,params:e,results:n.map(t=>zl(t)),provider:this})})}}const Vl=new g(pa),Jl="84842078b09946638c03157f83405213";class $l extends ll{constructor(t,e){const r=new Ql(t,e),n=r.connection;n.password&&Vl.throwError("INFURA WebSocket project secrets unsupported",g.errors.UNSUPPORTED_OPERATION,{operation:"InfuraProvider.getWebSocketProvider()"});super(n.url.replace(/^http/i,"ws").replace("/v3/","/ws/v3/"),t),ht(this,"apiKey",r.projectId),ht(this,"projectId",r.projectId),ht(this,"projectSecret",r.projectSecret)}isCommunityResource(){return this.projectId===Jl}}class Ql extends dl{static getWebSocketProvider(t,e){return new $l(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",g.errors.INVALID_ARGUMENT,{argument:"network",value:t})}const n={allowGzip:!0,url:"https://"+r+"/v3/"+e.projectId,throttleCallback:(t,r)=>(e.projectId===Jl&&ba(),Promise.resolve(!0))};return null!=e.projectSecret&&(n.user="",n.password=e.projectSecret),n}isCommunityResource(){return this.projectId===Jl}}const Yl=new g(pa);class Xl extends dl{static getApiKey(t){return t&&"string"!=typeof t&&Yl.throwArgumentError("invalid apiKey","apiKey",t),t||"ETHERS_JS_SHARED"}static getUrl(t,e){Yl.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:Yl.throwArgumentError("unsupported network","network",arguments[0])}return r+"?apiKey="+e}}const Zl=new g(pa),tc="62e1ad51b37b8e00394bda3b";class ec extends dl{static getApiKey(t){const e={applicationId:null,loadBalancer:!0,applicationSecretKey:null};return null==t?e.applicationId=tc:"string"==typeof t?e.applicationId=t:null!=t.applicationSecretKey?(e.applicationId=t.applicationId,e.applicationSecretKey=t.applicationSecretKey):t.applicationId?e.applicationId=t.applicationId:Zl.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:Zl.throwError("unsupported network",g.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===tc}}const rc=new g(pa);class nc extends dl{static getApiKey(t){return t&&"string"!=typeof t&&rc.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:rc.throwArgumentError("unsupported network","network",arguments[0])}return"https://"+r+"/"+e}}const ic=new g(pa);let oc=1;function sc(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:yt(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 ac extends nl{constructor(t,e){null==t&&ic.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:yt(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=sc(0,t.sendAsync.bind(t)):t.send?n=sc(0,t.send.bind(t)):ic.throwArgumentError("unsupported provider","provider",t),r||(r="unknown:")),super(r,e),ht(this,"jsonRpcFetchFunc",n),ht(this,"provider",i)}send(t,e){return this.jsonRpcFetchFunc(t,e)}}const lc=new g(pa);function cc(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 nl(t);case"ws":case"wss":return new ll(t);default:lc.throwArgumentError("unsupported URL scheme","network",t)}}const r=ta(t);return r&&r._defaultProvider||lc.throwError("unsupported getDefaultProvider network",g.errors.NETWORK_ERROR,{operation:"getDefaultProvider",network:t}),r._defaultProvider({FallbackProvider:Wl,AlchemyProvider:gl,AnkrProvider:bl,CloudflareProvider:kl,EtherscanProvider:Nl,InfuraProvider:Ql,JsonRpcProvider:nl,NodesmithProvider:Xl,PocketProvider:ec,QuickNodeProvider:nc,Web3Provider:ac,IpcProvider:null},e)}var hc=Object.freeze({__proto__:null,AlchemyProvider:gl,AlchemyWebSocketProvider:ml,AnkrProvider:bl,BaseProvider:Ha,CloudflareProvider:kl,EtherscanProvider:Nl,FallbackProvider:Wl,Formatter:ga,InfuraProvider:Ql,InfuraWebSocketProvider:$l,IpcProvider:null,JsonRpcBatchProvider:class extends nl{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:yt(e),provider:this}),la(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:nl,JsonRpcSigner:tl,NodesmithProvider:Xl,PocketProvider:ec,Provider:bn,QuickNodeProvider:nc,Resolver:Ga,StaticJsonRpcProvider:ul,UrlJsonRpcProvider:dl,Web3Provider:ac,WebSocketProvider:ll,getDefaultProvider:cc,getNetwork:ta,isCommunityResourcable:va,isCommunityResource:ya,showThrottleMessage:ba});const uc=new RegExp("^bytes([0-9]+)$"),dc=new RegExp("^(u?int)([0-9]*)$"),fc=new RegExp("^(.*)\\[([0-9]*)\\]$"),pc=new g("solidity/5.8.0");function mc(t,e,r){switch(t){case"address":return r?_(e,32):k(e);case"string":return Ve(e);case"bytes":return k(e);case"bool":return e=e?"0x01":"0x00",r?_(e,32):k(e)}let n=t.match(dc);if(n){let i=parseInt(n[2]||"256");return(n[2]&&String(i)!==n[2]||i%8!=0||0===i||i>256)&&pc.throwArgumentError("invalid number type","type",t),r&&(i=256),_(e=H.from(e).toTwos(i),i/8)}if(n=t.match(uc),n){const i=parseInt(n[1]);return(String(i)!==n[1]||0===i||i>32)&&pc.throwArgumentError("invalid bytes type","type",t),k(e).byteLength!==i&&pc.throwArgumentError(`invalid value for ${t}`,"value",e),r?k((e+"0000000000000000000000000000000000000000000000000000000000000000").substring(0,66)):e}if(n=t.match(fc),n&&Array.isArray(e)){const r=n[1];parseInt(n[2]||String(e.length))!=e.length&&pc.throwArgumentError(`invalid array length for ${t}`,"value",e);const i=[];return e.forEach(function(t){i.push(mc(r,t,!0))}),S(i)}return pc.throwArgumentError("invalid type","type",t)}function gc(t,e){t.length!=e.length&&pc.throwArgumentError("wrong number of values; expected ${ types.length }","values",e);const r=[];return t.forEach(function(t,n){r.push(mc(t,e[n]))}),P(S(r))}const vc=new g("units/5.8.0"),yc=["wei","kwei","mwei","gwei","szabo","finney","ether"];function wc(t,e){if("string"==typeof e){const t=yc.indexOf(e);-1!==t&&(e=3*t)}return rt(t,null!=e?e:18)}function bc(t,e){if("string"!=typeof t&&vc.throwArgumentError("value must be a string","value",t),"string"==typeof e){const t=yc.indexOf(e);-1!==t&&(e=3*t)}return nt(t,null!=e?e:18)}function Ec(t){return wc(t,18)}function Ac(t){return bc(t,18)}var kc=Object.freeze({__proto__:null,AbiCoder:fr,ConstructorFragment:Ot,ErrorFragment:Ut,EventFragment:Mt,FormatTypes:xt,Fragment:Nt,FunctionFragment:Dt,HDNode:ss,Indexed:fn,Interface:gn,LogDescription:hn,Logger:g,ParamType:Pt,RLP:ce,SigningKey:Xi,get SupportedAlgorithm(){return Do},TransactionDescription:un,get TransactionTypes(){return ro},get UnicodeNormalizationForm(){return ze},Utf8ErrorFuncs:Ke,get Utf8ErrorReason(){return je},_TypedDataEncoder:ln,_fetchData:aa,_toEscapedUtf8String:function(t,e){return'"'+We(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:uo,arrayify:k,base58:Oo,base64:wr,checkProperties:ft,checkResultErrors:Kt,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 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:ao,computeHmac:Go,computePublicKey:to,concat:S,deepCopy:yt,defaultAbiCoder:pr,defaultPath:os,defineReadOnly:ht,dnsEncode:Hr,entropyToMnemonic:cs,fetchJson:la,formatBytes32String:function(t){const e=Ve(t);if(e.length>31)throw new Error("bytes32 string must be less than 32 bytes");return P(S([e,Le]).slice(0,32))},formatEther:Ec,formatUnits:wc,getAccountPath:function(t){return("number"!=typeof t||t<0||t>=Xo||t%1)&&$o.throwArgumentError("invalid account index","index",t),`m/44'/60'/${t}'/0/0`},getAddress:ge,getContractAddress:ve,getCreate2Address:function(t,e,r){return 32!==I(e)&&he.throwArgumentError("salt must be 32 bytes","salt",e),32!==I(r)&&he.throwArgumentError("initCodeHash must be 32 bytes","initCodeHash",r),ge(N(te(S(["0xff",ge(t),e,r])),12))},getIcapAddress:function(t){let e=(r=ge(t).substring(2),new U(r,16).toString(36)).toUpperCase();for(var r;e.length<30;)e="0"+e;return"XE"+me("XE00"+e)+e},getJsonWalletAddress:function(t){if(Ts(t))try{return ge(JSON.parse(t).ethaddr)}catch(t){return null}if(Ps(t))try{return ge(JSON.parse(t).address)}catch(t){return null}return null},getStatic:ut,hashMessage:Kr,hexConcat:M,hexDataLength:I,hexDataSlice:N,hexStripZeros:R,hexValue:B,hexZeroPad:F,hexlify:P,id:mr,isAddress:function(t){try{return ge(t),!0}catch(t){}return!1},isBytes:A,isBytesLike:b,isHexString:x,isValidMnemonic:function(t,e){try{return ls(t,e),!0}catch(t){}return!1},isValidName:function(t){try{return 0!==zr(t).length}catch(t){}return!1},joinSignature:D,keccak256:te,mnemonicToEntropy:ls,mnemonicToSeed:as,namehash:jr,nameprep:function(t){if(t.match(/^[a-z0-9-]*$/i)&&t.length<=59)return t.toLowerCase();let e=Ye(t);var r;r=e.map(t=>{if(rr.indexOf(t)>=0)return[];if(t>=65024&&t<=65039)return[];let e=function(t){let e=tr(t,nr);if(e)return[t+e.s];let r=ir[t];if(r)return r;let n=or[t];return n?[t+n[0]]:sr[t]||null}(t);return e||[t]}),e=r.reduce((t,e)=>(e.forEach(e=>{t.push(e)}),t),[]),e=Ye($e(e),ze.NFKC),e.forEach(t=>{if(tr(t,ar))throw new Error("STRINGPREP_CONTAINS_PROHIBITED")}),e.forEach(t=>{if(tr(t,er))throw new Error("STRINGPREP_CONTAINS_UNASSIGNED")});let n=$e(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=k(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 Qe(e.slice(0,r))},parseEther:Ac,parseTransaction:yo,parseUnits:bc,poll:ca,randomBytes:fs,recoverAddress:lo,recoverPublicKey:Zi,resolveProperties:dt,ripemd160:Uo,serializeTransaction:go,sha256:qo,sha512:function(t){return"0x"+di.sha512().update(k(t)).digest("hex")},shallowCopy:pt,shuffled:ps,solidityKeccak256:function(t,e){return te(gc(t,e))},solidityPack:gc,soliditySha256:function(t,e){return qo(gc(t,e))},splitSignature:O,stripZeros:C,toUtf8Bytes:Ve,toUtf8CodePoints:Ye,toUtf8String:Qe,verifyMessage:function(t,e){return lo(Kr(t),e)},verifyTypedData:function(t,e,r,n){return lo(ln.hash(t,e,r),n)},zeroPad:_});const Sc="ethers/5.8.0",Cc=new g(Sc);var _c=Object.freeze({__proto__:null,BaseContract:Bo,BigNumber:H,Contract:Ro,ContractFactory:class{constructor(t,e,r){let n=null;n="string"==typeof e?e:A(e)?P(e):e&&"string"==typeof e.object?e.object:"!","0x"!==n.substring(0,2)&&(n="0x"+n),(!x(n)||n.length%2)&&bo.throwArgumentError("invalid bytecode","bytecode",e),r&&!Cn.isSigner(r)&&bo.throwArgumentError("invalid signer","signer",r),ht(this,"bytecode",n),ht(this,"interface",ut(new.target,"getInterface")(t)),ht(this,"signer",r||null)}getDeployTransaction(...t){let e={};if(t.length===this.interface.deploy.inputs.length+1&&"object"==typeof t[t.length-1]){e=pt(t.pop());for(const t in e)if(!Eo[t])throw new Error("unknown transaction override "+t)}if(["data","from","to"].forEach(t=>{null!=e[t]&&bo.throwError("cannot override "+t,g.errors.UNSUPPORTED_OPERATION,{operation:t})}),e.value){H.from(e.value).isZero()||this.interface.deploy.payable||bo.throwError("non-payable constructor cannot override value",g.errors.UNSUPPORTED_OPERATION,{operation:"overrides.value",value:e.value})}return bo.checkArgumentCount(t.length,this.interface.deploy.inputs.length," in Contract constructor"),e.data=P(S([this.bytecode,this.interface.encodeDeploy(t)])),e}deploy(...t){return wo(this,void 0,void 0,function*(){let e={};t.length===this.interface.deploy.inputs.length+1&&(e=t.pop()),bo.checkArgumentCount(t.length,this.interface.deploy.inputs.length," in Contract constructor");const r=yield ko(this.signer,t,this.interface.deploy.inputs);r.push(e);const n=this.getDeployTransaction(...r),i=yield this.signer.sendTransaction(n),o=ut(this.constructor,"getContractAddress")(i),s=ut(this.constructor,"getContract")(o,this.interface,this.signer);return Co(s,i),ht(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&&bo.throwError("missing compiler output",g.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 Ro.getInterface(t)}static getContractAddress(t){return ve(t)}static getContract(t,e,r){return new Ro(t,e,r)}},FixedNumber:ot,Signer:Cn,VoidSigner:_n,Wallet:Ws,Wordlist:Ho,constants:Ue,get errors(){return p},getDefaultProvider:cc,logger:Cc,providers:hc,utils:kc,version:Sc,wordlists:Jo});try{const t=window;null==t._ethers&&(t._ethers=_c)}catch(t){}class xc{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.this.eventBus.emit("blockchain:initialized"),this.isInitializing=!1,!0}catch(t){throw this.connectionState="error",this.isInitializing=!1,this.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 ac(window.ethereum,"any");this.provider=e,this.signer=e.getSigner();const r=await this.provider.getNetwork();if(r.chainId!==t){this.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 ac(window.ethereum),this.signer=this.provider.getSigner(),this.this.eventBus.emit("network:switched",{from:r.chainId,to:t,success:!0})}catch(e){if(this.isInternalNetworkChange=!1,this.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 ac(window.ethereum),this.signer=this.provider.getSigner()}finally{this.isInternalNetworkChange=!1}}}else this.provider=new nl(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 Ro(t,e,this.provider);const i=await this.contract.mirrorERC721();this.mirrorContract=new Ro(i,r,this.provider),this.swapRouter=new Ro(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 Ro(o,t,this.provider)}else console.warn("Liquidity pool address is zero, skipping V2 pool contract initialization.");this.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 ac(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=Ac("1000000"),e=await this.executeContractCall("calculateCost",[t]);if(!e||!H.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=Ac(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=bc(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 Ac(t).toString()}formatEther(t){return parseFloat(Ec(t))}parseExec(t){return bc(t,18).toString()}formatExec(t){return parseFloat(wc(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}),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 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}}),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")}}}class Tc{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 ac(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 ac(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 ac(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")}}class Pc{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}}class Ic{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,h,u,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:h||"0",exec:u||"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)}}const Nc=["https://w3s.link/ipfs/","https://cloudflare-ipfs.com/ipfs/","https://ipfs.io/ipfs/","https://gateway.pinata.cloud/ipfs/","https://dweb.link/ipfs/"];function Mc(){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,...Nc]:Nc}function Bc(t){return!(!t||"string"!=typeof t)&&t.toLowerCase().startsWith("ipfs://")}function Rc(t){if(!Bc(t))return t;const e=t.substring(7);return e.startsWith("/")?e.substring(1):e}function Fc(t,e=0){if(!Bc(t))return t;const r=Mc();if(e<0||e>=r.length)return null;const n=Rc(t);return r[e]+n}function Oc(){return Mc()}var Dc=Object.freeze({__proto__:null,fetchJsonWithIpfsSupport:async function(t,e={}){const{timeout:r=1e4,...n}=e;if(!Bc(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=Mc(),o=Rc(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:Oc,isIpfsUri:Bc,normalizeIpfsPath:Rc,resolveIpfsToHttp:Fc,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 Lc extends t{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 Uc extends t{constructor(t){super(t),this.onConnected=t.onConnected,this.this.walletService=t.this.walletService,this.this.eventBus=t.this.eventBus,this.walletModal=null,this.state={walletConnected:!1,checking:!0,walletAvailable:!1,loadingLightNode:!1}}async onMount(){await this.checkWalletConnection(),this.setupEventListeners()}detectWalletType(){return void 0===window.ethereum?null:window.ethereum.isRabby?"rabby":window.ethereum.isRainbow?"rainbow":window.phantom&&window.phantom.ethereum?"phantom":(window.ethereum.isMetaMask,"metamask")}async checkWalletConnection(){try{const t=void 0!==window.ethereum;this.walletService.isInitialized||await this.walletService.initialize();let e=this.walletService.isConnected();if(!e&&void 0!==window.ethereum)try{const t=localStorage.getItem("ms2fun_lastWallet");if(t){let r=!1;try{const e={rabby:()=>window.ethereum?.isRabby?window.ethereum:null,rainbow:()=>window.ethereum?.isRainbow?window.ethereum:null,phantom:()=>window.phantom?.ethereum||null,metamask:()=>window.ethereum||null}[t];if(e){const t=e();if(t){const e=await t.request({method:"eth_accounts"});r=e&&e.length>0}}}catch(t){console.log("Could not check accounts for last wallet:",t)}if(r)try{await this.walletService.selectWallet(t),await this.walletService.connect(),e=this.walletService.isConnected(),e&&console.log("Auto-reconnected to",t)}catch(t){console.log("Auto-reconnect not possible, user will need to select wallet")}}}catch(t){console.log("Could not check existing accounts:",t)}this.setState({walletConnected:e,checking:!1,walletAvailable:t}),e&&this.onConnected?this.onConnected():this.setTimeout(()=>{this.setupWalletModal()},100)}catch(t){console.error("Error checking wallet connection:",t);const e=void 0!==window.ethereum;this.setState({walletConnected:!1,checking:!1,walletAvailable:e}),this.setTimeout(()=>{this.setupWalletModal()},100)}}setupEventListeners(){const t=this.eventBus.on("wallet:connected",()=>{this.setState({walletConnected:!0}),this.onConnected&&this.onConnected()}),e=this.eventBus.on("wallet:disconnected",()=>{this.setState({walletConnected:!1})});this.registerCleanup(()=>{t(),e()})}render(){if(this.state.checking)return'\n <div class="wallet-splash">\n <div class="splash-content marble-bg">\n <div class="splash-spinner"></div>\n <h2>Checking wallet connection...</h2>\n </div>\n </div>\n ';if(this.state.walletConnected)return'<div class="wallet-splash-connected" style="display: none;"></div>';const t=this.state.walletAvailable,e=this.state.loadingLightNode;return`\n <div class="wallet-splash">\n <div class="splash-content marble-bg">\n <div class="splash-header">\n <h1>Connect Your Wallet</h1>\n <p class="splash-subtitle">Connect your wallet to access the MS2.FUN launchpad</p>\n </div>\n \n <div class="splash-description">\n <p>This application requires a connected wallet to access on-chain data and interact with projects.</p>\n ${t?"<p>You can connect your wallet or continue using your wallet's RPC for read-only access.</p>":"<p>No wallet detected. You can continue with read-only mode using a light node.</p>"}\n </div>\n \n <div class="wallet-connector-container" data-ref="wallet-connector">\n <div class="contract-status">\n <div id="contractStatus" class="status-message">${e?"DOWNLOADING LIGHT NODE...":"INITIALIZING SYSTEM..."}</div>\n \n <div id="selectedWalletDisplay" class="selected-wallet-display" style="display: none;">\n <img id="selectedWalletIcon" src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71'/%3E%3Cpath d='M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71'/%3E%3C/svg%3E" alt="Selected Wallet">\n <span class="wallet-name" id="selectedWalletName"></span>\n </div>\n <div id="continuePrompt" class="continue-prompt" style="display: none;">\n CONTINUE IN YOUR WALLET\n </div>\n \n <button id="selectWallet" class="connect-button" ${t?"":"disabled"} style="${t?"":"opacity: 0.5; cursor: not-allowed;"}">\n <span class="button-text">SELECT WALLET</span>\n </button>\n \n <button id="continueButton" class="connect-button" style="margin-top: 1rem; ${e?"opacity: 0.7; cursor: wait;":""}">\n <span class="button-text">${e?"LOADING...":"CONTINUE"}</span>\n </button>\n \n ${t?"":'\n <p class="light-node-explainer" style="margin-top: 1rem; font-size: 0.875rem; color: rgba(255, 255, 255, 0.7); text-align: center; max-width: 400px; margin-left: auto; margin-right: auto;">\n This will download and run a light node to enable read-only blockchain access without a wallet.\n </p>\n '}\n </div>\n\n \x3c!-- Wallet Selection Modal (same as CultExecsPage) --\x3e\n <div id="walletModal" class="wallet-modal">\n <div class="wallet-modal-content">\n <div class="wallet-modal-header">\n <h3>Select Your Wallet</h3>\n <button class="wallet-modal-close" data-ref="modal-close">×</button>\n </div>\n <div class="wallet-options">\n <button class="wallet-option" data-wallet="rabby">\n <picture>\n <source srcset="public/wallets/rabby.avif" type="image/avif">\n <source srcset="public/wallets/rabby.webp" type="image/webp">\n <img src="public/wallets/rabby.png" alt="Rabby">\n </picture>\n <span>Rabby</span>\n </button>\n <button class="wallet-option" data-wallet="rainbow">\n <picture>\n <source srcset="public/wallets/rainbow.avif" type="image/avif">\n <source srcset="public/wallets/rainbow.webp" type="image/webp">\n <img src="public/wallets/rainbow.png" alt="Rainbow">\n </picture>\n <span>Rainbow</span>\n </button>\n <button class="wallet-option" data-wallet="phantom">\n <picture>\n <source srcset="public/wallets/phantom.avif" type="image/avif">\n <source srcset="public/wallets/phantom.webp" type="image/webp">\n <img src="public/wallets/phantom.png" alt="Phantom">\n </picture>\n <span>Phantom</span>\n </button>\n <button class="wallet-option" data-wallet="metamask">\n <picture>\n <source srcset="/public/wallets/MetaMask.avif" type="image/avif">\n <source srcset="/public/wallets/MetaMask.webp" type="image/webp">\n <img src="/public/wallets/MetaMask.webp" alt="MetaMask" onerror="this.src='/public/wallets/MetaMask.webp'">\n </picture>\n <span>MetaMask</span>\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n `}mount(t){super.mount(t),this.setTimeout(()=>{this.setupWalletModal()},0)}setupWalletModal(){this.state.walletConnected||(this._setupRetryCount||(this._setupRetryCount=0),this._setupRetryCount>10?console.error("Wallet modal setup failed after 10 retries - giving up"):(this._setupRetryCount++,this.setTimeout(()=>{const t=document.getElementById("walletModal"),e=document.getElementById("selectWallet");if(!t||!e)return console.error("Wallet modal or select button not found, retry",this._setupRetryCount),void(this.mounted&&this._setupRetryCount<=10&&this.setTimeout(()=>{this.setupWalletModal()},200));if(this._setupRetryCount=0,!this.walletModal){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=new Lc(t,e,async t=>{await this.handleWalletSelection(t)})}const r=e.cloneNode(!0);e.parentNode.replaceChild(r,e),r.addEventListener("click",t=>{if(t.preventDefault(),t.stopPropagation(),this.state.walletAvailable)if(console.log("SELECT WALLET button clicked"),this.walletModal){console.log("Calling walletModal.show()"),this.walletModal.show();const t=document.getElementById("walletModal");t?(console.log("Modal element found, checking visibility"),console.log("Modal classes:",t.className),console.log("Modal display:",window.getComputedStyle(t).display),t.style.display="flex",t.classList.add("active")):console.error("Modal element not found after show()")}else console.error("WalletModal not initialized")});const n=document.getElementById("continueButton");if(n){const t=n.cloneNode(!0);n.parentNode.replaceChild(t,n),t.addEventListener("click",async t=>{t.preventDefault(),t.stopPropagation(),this.state.walletAvailable?this.onConnected&&this.onConnected():this.state.walletAvailable||await this.handleContinueWithoutWallet()})}const i=t.querySelector(".wallet-modal-close");if(i){const t=i.cloneNode(!0);i.parentNode.replaceChild(t,i),t.addEventListener("click",t=>{if(t.preventDefault(),t.stopPropagation(),this.walletModal)this.walletModal.hide();else{const t=document.getElementById("walletModal");t&&(t.classList.remove("active"),t.style.display="none")}})}const o=e=>{e.target===t&&(this.walletModal?this.walletModal.hide():(t.classList.remove("active"),t.style.display="none"))};t.removeEventListener("click",o),t.addEventListener("click",o)},100)))}async handleWalletSelection(t){try{await this.walletService.selectWallet(t),localStorage.setItem("ms2fun_lastWallet",t),await this.walletService.connect(),this.setState({walletConnected:!0}),this.onConnected&&this.onConnected()}catch(t){console.error("Error connecting wallet:",t)}}async handleContinueWithoutWallet(){if(!this.state.loadingLightNode){this.setState({loadingLightNode:!0});try{console.log("[WalletSplash] Loading light node for read-only mode...");const{initializeReadOnlyMode:t}=await Promise.resolve().then(function(){return Yc});if(await t())console.log("[WalletSplash] Light node loaded successfully"),this.onConnected&&this.onConnected();else{console.error("[WalletSplash] Failed to load light node");const t=document.getElementById("contractStatus");t&&(t.textContent="FAILED TO LOAD LIGHT NODE. PLEASE TRY AGAIN."),this.setState({loadingLightNode:!1})}}catch(t){console.error("[WalletSplash] Error loading light node:",t);const e=document.getElementById("contractStatus");e&&(e.textContent="ERROR: "+t.message),this.setState({loadingLightNode:!1})}}}onStateUpdate(t,e){!t.walletConnected&&e.walletConnected&&(this.element&&(this.element.style.display="none"),this.walletModal&&this.walletModal.hide()),t.walletConnected&&!e.walletConnected&&(this.element&&(this.element.style.display="flex"),this.setTimeout(()=>{this.setupWalletModal()},0))}onUnmount(){this.walletModal&&(this.walletModal.hide(),this.walletModal=null)}}class qc extends t{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?Bc(t)?Fc(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=Oc(),{src:r}=this.props;if(!Bc(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=Fc(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(" "):""}}qc.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 Gc extends t{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 t{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 jc={PRICE:"price:updated",STATUS:"price:status"};class Hc extends t{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(jc.PRICE,this.handlePriceUpdate),this.eventBus.on(jc.STATUS,this.handleStatusUpdate))}onUnmount(){this.eventBus&&(this.eventBus.off(jc.PRICE,this.handlePriceUpdate),this.eventBus.off(jc.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 Kc extends t{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 Wc extends t{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 Vc extends t{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 Jc extends t{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 Gc,this.messagePopup=new zc("status-message"),this.priceDisplay=new Hc({price:this.state.price,contractData:this.state.contractData}),this.messagePopup.initialize(),this.swapInputs=null,this.swapButton=new Vc({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 Wc({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 $c extends t{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 Qc extends t{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})}}var Yc=Object.freeze({__proto__:null,ApprovalModal:Kc,BalanceDisplay:Qc,BlockchainService:xc,BondingCurve:$c,ContractCache:Pc,IpfsImage:qc,IpfsService:Dc,MessagePopup:zc,PriceDisplay:Hc,PriceService:Ic,SwapButton:Vc,SwapInputs:Wc,SwapInterface:Jc,TransactionOptions:Gc,WalletModal:Lc,WalletService:Tc,WalletSplash:Uc});export{Kc as ApprovalModal,Qc as BalanceDisplay,xc as BlockchainService,$c as BondingCurve,Pc as ContractCache,qc as IpfsImage,Dc as IpfsService,zc as MessagePopup,Hc as PriceDisplay,Ic as PriceService,Vc as SwapButton,Wc as SwapInputs,Jc as SwapInterface,Gc as TransactionOptions,Lc as WalletModal,Tc as WalletService,Uc as WalletSplash};
9
+ */var Xt,Zt=(Qt||(Qt=1,Xt=Yt,function(){var t="input is invalid type",e="object"==typeof window,n=e?window:{};n.JS_SHA3_NO_WINDOW&&(e=!1);var i=!e&&"object"==typeof self;!n.JS_SHA3_NO_NODE_JS&&"object"==typeof process&&process.versions&&process.versions.node?n=r:i&&(n=self);var o=!n.JS_SHA3_NO_COMMON_JS&&Xt.exports,s=!n.JS_SHA3_NO_ARRAY_BUFFER&&"undefined"!=typeof ArrayBuffer,a="0123456789abcdef".split(""),l=[4,1024,262144,67108864],c=[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],h=[224,256,384,512],d=[128,256],f=["hex","buffer","arrayBuffer","array","digest"],p={128:168,256:136};!n.JS_SHA3_NO_NODE_JS&&Array.isArray||(Array.isArray=function(t){return"[object Array]"===Object.prototype.toString.call(t)}),!s||!n.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 m=function(t,e,r){return function(n){return new I(t,e,t).update(n)[r]()}},g=function(t,e,r){return function(n,i){return new I(t,e,i).update(n)[r]()}},v=function(t,e,r){return function(e,n,i,o){return A["cshake"+t].update(e,n,i,o)[r]()}},w=function(t,e,r){return function(e,n,i,o){return A["kmac"+t].update(e,n,i,o)[r]()}},y=function(t,e,r,n){for(var i=0;i<f.length;++i){var o=f[i];t[o]=e(r,n,o)}return t},b=function(t,e){var r=m(t,e,"hex");return r.create=function(){return new I(t,e,t)},r.update=function(t){return r.create().update(t)},y(r,m,t,e)},E=[{name:"keccak",padding:[1,256,65536,16777216],bits:h,createMethod:b},{name:"sha3",padding:[6,1536,393216,100663296],bits:h,createMethod:b},{name:"shake",padding:[31,7936,2031616,520093696],bits:d,createMethod:function(t,e){var r=g(t,e,"hex");return r.create=function(r){return new I(t,e,r)},r.update=function(t,e){return r.create(e).update(t)},y(r,g,t,e)}},{name:"cshake",padding:l,bits:d,createMethod:function(t,e){var r=p[t],n=v(t,0,"hex");return n.create=function(n,i,o){return i||o?new I(t,e,n).bytepad([i,o],r):A["shake"+t].create(n)},n.update=function(t,e,r,i){return n.create(e,r,i).update(t)},y(n,v,t,e)}},{name:"kmac",padding:l,bits:d,createMethod:function(t,e){var r=p[t],n=w(t,0,"hex");return n.create=function(n,i,o){return new N(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)},y(n,w,t,e)}}],A={},k=[],S=0;S<E.length;++S)for(var C=E[S],x=C.bits,_=0;_<x.length;++_){var T=C.name+"_"+x[_];if(k.push(T),A[T]=C.createMethod(x[_],C.padding),"sha3"!==C.name){var P=C.name+x[_];k.push(P),A[P]=A[T]}}function I(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 N(t,e,r){I.call(this,t,e,r)}I.prototype.update=function(e){if(this.finalized)throw new Error("finalize already called");var r,n=typeof e;if("string"!==n){if("object"!==n)throw new Error(t);if(null===e)throw new Error(t);if(s&&e.constructor===ArrayBuffer)e=new Uint8Array(e);else if(!(Array.isArray(e)||s&&ArrayBuffer.isView(e)))throw new Error(t);r=!0}for(var i,o,a=this.blocks,l=this.byteCount,u=e.length,h=this.blockCount,d=0,f=this.s;d<u;){if(this.reset)for(this.reset=!1,a[0]=this.block,i=1;i<h+1;++i)a[i]=0;if(r)for(i=this.start;d<u&&i<l;++d)a[i>>2]|=e[d]<<c[3&i++];else for(i=this.start;d<u&&i<l;++d)(o=e.charCodeAt(d))<128?a[i>>2]|=o<<c[3&i++]:o<2048?(a[i>>2]|=(192|o>>6)<<c[3&i++],a[i>>2]|=(128|63&o)<<c[3&i++]):o<55296||o>=57344?(a[i>>2]|=(224|o>>12)<<c[3&i++],a[i>>2]|=(128|o>>6&63)<<c[3&i++],a[i>>2]|=(128|63&o)<<c[3&i++]):(o=65536+((1023&o)<<10|1023&e.charCodeAt(++d)),a[i>>2]|=(240|o>>18)<<c[3&i++],a[i>>2]|=(128|o>>12&63)<<c[3&i++],a[i>>2]|=(128|o>>6&63)<<c[3&i++],a[i>>2]|=(128|63&o)<<c[3&i++]);if(this.lastByteIndex=i,i>=l){for(this.start=i-l,this.block=a[h],i=0;i<h;++i)f[i]^=a[i];M(f),this.reset=!0}else this.start=i}return this},I.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},I.prototype.encodeString=function(e){var r,n=typeof e;if("string"!==n){if("object"!==n)throw new Error(t);if(null===e)throw new Error(t);if(s&&e.constructor===ArrayBuffer)e=new Uint8Array(e);else if(!(Array.isArray(e)||s&&ArrayBuffer.isView(e)))throw new Error(t);r=!0}var i=0,o=e.length;if(r)i=o;else for(var a=0;a<e.length;++a){var l=e.charCodeAt(a);l<128?i+=1:l<2048?i+=2:l<55296||l>=57344?i+=3:(l=65536+((1023&l)<<10|1023&e.charCodeAt(++a)),i+=4)}return i+=this.encode(8*i),this.update(e),i},I.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},I.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)}},I.prototype.toString=I.prototype.hex=function(){this.finalize();for(var t,e=this.blockCount,r=this.s,n=this.outputBlocks,i=this.extraBytes,o=0,s=0,l="";s<n;){for(o=0;o<e&&s<n;++o,++s)t=r[o],l+=a[t>>4&15]+a[15&t]+a[t>>12&15]+a[t>>8&15]+a[t>>20&15]+a[t>>16&15]+a[t>>28&15]+a[t>>24&15];s%e===0&&(M(r),o=0)}return i&&(t=r[o],l+=a[t>>4&15]+a[15&t],i>1&&(l+=a[t>>12&15]+a[t>>8&15]),i>2&&(l+=a[t>>20&15]+a[t>>16&15])),l},I.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&&M(r)}return i&&(l[o]=r[o],t=t.slice(0,a)),t},I.prototype.buffer=I.prototype.arrayBuffer,I.prototype.digest=I.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&&M(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},N.prototype=new I,N.prototype.finalize=function(){return this.encode(this.outputBits,!0),I.prototype.finalize.call(this)};var M=function(t){var e,r,n,i,o,s,a,l,c,h,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],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])^(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^(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|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]^=u[n],t[1]^=u[n+1]};if(o)Xt.exports=A;else for(S=0;S<k.length;++S)n[k[S]]=A[k[S]]}()),Yt.exports),te=n(Zt);function ee(t){return"0x"+te.keccak_256(S(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 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)}E(t)||re.throwArgumentError("RLP object must be BytesLike","object",t);const e=Array.prototype.slice.call(S(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 I(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",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:I(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:I(t.slice(e+1,e+1+r))}}return{consumed:1,result:I(t[e])}}function ce(t){const e=S(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 v("address/5.8.0");function de(t){T(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=S(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 q(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(M(ee(se([e,x(S(K.from(t.nonce).toHexString()))])),12))}class ye extends Vt{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(O(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(Et);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 $t(t.wordSize),o=new $t(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===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 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 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=S(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,I(super.decode(t)))}}class Te 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=S(e);return r.length!==this.size&&this._throwError("incorrect data length",e),t.writeBytes(r)}decode(t){return t.coerce(this.name,I(t.readBytes(this.size)))}}class Pe 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 Ie="0x0000000000000000000000000000000000000000",Ne=K.from(-1),Me=K.from(0),Be=K.from(1),Re=K.from(2),Fe=K.from("1000000000000000000"),Oe=K.from("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),De=K.from("-0x8000000000000000000000000000000000000000000000000000000000000000"),Ue=K.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 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(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 v("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=S(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 S(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 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 hr=new v(Et),dr=new RegExp(/^bytes([0-9]*)$/),fr=new RegExp(/^(u?int)([0-9]*)$/);class pr{constructor(t){ht(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 Jt(t,this._getWordSize(),this.coerceFunc,e)}_getWriter(){return new $t(this._getWordSize())}getDefaultValue(t){const e=t.map(t=>this._getCoder(It.from(t)));return new ur(e,"_").defaultValue()}encode(t,e){t.length!==e.length&&hr.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(It.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(It.from(t)));return new ur(n,"_").decode(this._getReader(S(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 S(e)}function yr(t){t=S(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 v(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(C([e,ee(r.pop())]));return I(e)}function Kr(t){return I(C(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(C([$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 v(vr),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=O(Xr.toHexString(),32),en=O(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 K.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=S(t);if(32!==e.length)throw new Error("bad length");return I(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=K.from(e);return(r.lt(o)||r.gt(i))&&$r.throwArgumentError(`value out-of-bounds for ${t}`,"value",e),O(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 S(e).length!==r&&$r.throwArgumentError(`invalid length for ${t}`,"value",e),function(t){const e=S(t),r=e.length%32;return r?B([e,Jr.slice(r)]):I(e)}(e)}}}switch(t){case"address":return function(t){return O(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){ht(this,"types",Object.freeze(yt(t))),ht(this,"_encoderCache",{}),ht(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),ht(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(B(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),B(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 B(["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=mt(t);const i={};t.verifyingContract&&!T(t.verifyingContract,20)&&(i[t.verifyingContract]="0x");const o=cn.from(e);o.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=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=mt(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 I(S(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&&$r.throwArgumentError("invalid string","value",e),e}return $r.throwArgumentError("unsupported type","type",t)})}}}const un=new v(Et);class hn extends bt{}class dn extends bt{}class fn extends bt{}class pn extends bt{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,ht(this,"fragments",e.map(t=>Mt.from(t)).filter(t=>null!=t)),ht(this,"_abiCoder",dt(new.target,"getAbiCoder")()),ht(this,"functions",{}),ht(this,"errors",{}),ht(this,"events",{}),ht(this,"structs",{}),this.fragments.forEach(t=>{let e=null;switch(t.type){case"constructor":return this.deploy?void un.warn("duplicate definition - constructor"):void ht(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||ht(this,"deploy",Dt.from({payable:!1,type:"constructor"})),ht(this,"_isInterface",!0)}format(t){t||(t=Tt.full),t===Tt.sighash&&un.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 ve(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];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[Ut.fromString(t).format()];return e||un.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];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[Bt.fromString(t).format()];return e||un.throwArgumentError("no matching event","signature",t),e}getError(t){if(T(t)){const e=dt(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[Ut.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 dt(this.constructor,"getSighash")(t)}getEventTopic(t){return"string"==typeof t&&(t=this.getEvent(t)),dt(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=S(e);return I(r.slice(0,4))!==this.getSighash(t)&&un.throwArgumentError(`data signature does not match error ${t.name}.`,"data",I(r)),this._decodeParams(t.inputs,r.slice(4))}encodeErrorResult(t,e){return"string"==typeof t&&(t=this.getError(t)),I(C([this.getSighash(t),this._encodeParams(t.inputs,e||[])]))}decodeFunctionData(t,e){"string"==typeof t&&(t=this.getFunction(t));const r=S(e);return I(r.slice(0,4))!==this.getSighash(t)&&un.throwArgumentError(`data signature does not match function ${t.name}.`,"data",I(r)),this._decodeParams(t.inputs,r.slice(4))}encodeFunctionData(t,e){return"string"==typeof t&&(t=this.getFunction(t)),I(C([this.getSighash(t),this._encodeParams(t.inputs,e||[])]))}decodeFunctionResult(t,e){"string"==typeof t&&(t=this.getFunction(t));let r=S(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=I(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,v.errors.CALL_EXCEPTION,{method:t.format(),data:I(e),errorArgs:o,errorName:s,errorSignature:a,reason:n})}encodeFunctionResult(t,e){return"string"==typeof t&&(t=this.getFunction(t)),I(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(),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(I(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]),O(I(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);T(r[0],32)&&r[0].toLowerCase()===e||un.throwError("fragment/topic mismatch",v.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(It.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,C(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:K.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=I(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 v("abstract-provider/5.8.0");class bn extends bt{static isForkEvent(t){return!(!t||!t._isForkEvent)}}class En{constructor(){yn.checkAbstract(new.target,En),ht(this,"_isProvider",!0)}getFeeData(){return wn(this,void 0,void 0,function*(){const{block:t,gasPrice:e}=yield ft({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,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 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),ht(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 ft(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 ft(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=mt(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 ft(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 ft(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(),ht(this,"address",t),ht(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 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(){var t=In;t.utils=Ln(),t.common=Gn(),t.sha=si(),t.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}(),t.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}(),t.sha1=t.sha.sha1,t.sha256=t.sha.sha256,t.sha224=t.sha.sha224,t.sha384=t.sha.sha384,t.sha512=t.sha.sha512,t.ripemd160=t.ripemd.ripemd160}()),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 a(t,"hex","le")}}),yi=wi.getNAF,bi=wi.getJSF,Ei=wi.assert;function Ai(t,e){this.type=t,this.p=new a(e.p,16),this.red=e.prime?a.red(e.prime):a.mont(this.p),this.zero=new a(0).toRed(this.red),this.one=new a(1).toRed(this.red),this.two=new a(2).toRed(this.red),this.n=e.n&&new a(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 a(t.a,16).toRed(this.red),this.b=new a(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 a(e,16),this.y=new a(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 a(0)):(this.x=new a(e,16),this.y=new a(r,16),this.z=new a(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 a(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 a(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 a(t.a,16),b:new a(t.b,16)}}):this._getEndoBasis(r)}}},_i.prototype._getEndoRoots=function(t){var e=t===this.p?this.red:a.mont(t),r=new a(2).toRed(e).redInvm(),n=r.redNeg(),i=new a(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,l,c,u,h=this.n.ushrn(Math.floor(this.n.bitLength()/2)),d=t,f=this.n.clone(),p=new a(1),m=new a(0),g=new a(0),v=new a(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=l.neg(),r=p,n=c.neg(),i=u;else if(n&&2===++w)break;l=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 a(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 a(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 a(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 a(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 a(t.r,16),this.s=new a(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 l=t.slice(r.place,s+r.place);if(0===o[0]){if(!(128&o[1]))return!1;o=o.slice(1)}if(0===l[0]){if(!(128&l[1]))return!1;l=l.slice(1)}return this.r=new a(o),this.s=new a(l),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 a(2));;){var i=new a(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(a.isBN(t)||"number"==typeof t)n=(t=new a(t,16)).byteLength();else if("object"==typeof t)n=t.length,t=new a(t,16);else{var i=t.toString();n=i.length+1>>>1,t=new a(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&&!a.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),l=t.toArray("be",o);Wi(new a(l).eq(t),"Can not sign message");for(var c=new Ri({hash:this.hash,entropy:s,nonce:l,pers:n.pers,persEnc:n.persEnc||"utf8"}),u=this.n.sub(new a(1)),h=0;;h++){var d=n.k?n.k(h):new a(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 a(t),s=e.r,l=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=l.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 v("signing-key/5.8.0");let Yi=null;function Xi(){return Yi||(Yi=new Ji("secp256k1")),Yi}class Zi{constructor(t){ht(this,"curve","secp256k1"),ht(this,"privateKey",I(t)),32!==N(this.privateKey)&&Qi.throwArgumentError("invalid private key","privateKey","[[ REDACTED ]]");const e=Xi().keyFromPrivate(S(this.privateKey));ht(this,"publicKey","0x"+e.getPublic(!1,"hex")),ht(this,"compressedPublicKey","0x"+e.getPublic(!0,"hex")),ht(this,"_isSigningKey",!0)}_addPoint(t){const e=Xi().keyFromPublic(S(this.publicKey)),r=Xi().keyFromPublic(S(t));return"0x"+e.pub.add(r.pub).encodeCompressed("hex")}signDigest(t){const e=Xi().keyFromPrivate(S(this.privateKey)),r=S(t);32!==r.length&&Qi.throwArgumentError("bad digest length","digest",t);const n=e.sign(r,{canonical:!0});return D({recoveryParam:n.recoveryParam,r:O("0x"+n.r.toString(16),32),s:O("0x"+n.s.toString(16),32)})}computeSharedSecret(t){const e=Xi().keyFromPrivate(S(this.privateKey)),r=Xi().keyFromPublic(S(eo(t)));return O("0x"+e.derive(r.getPublic()).toString(16),32)}static isSigningKey(t){return!(!t||!t._isSigningKey)}}function to(t,e){const r=D(e),n={r:S(r.r),s:S(r.s)};return"0x"+Xi().recoverPubKey(S(t),n,r.recoveryParam).encode("hex",!1)}function eo(t,e){const r=S(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?I(r):"0x"+Xi().keyFromPublic(r).getPublic(!1,"hex"):65===r.length?e?"0x"+Xi().keyFromPublic(r).getPublic(!0,"hex"):I(r):Qi.throwArgumentError("invalid public or private key","key","[REDACTED]")}const ro=new v("transactions/5.8.0");var no;function io(t){return"0x"===t?null:ve(t)}function oo(t){return"0x"===t?Me:K.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(M(ee(M(eo(t),1)),12))}function co(t,e){return lo(to(S(t),e))}function uo(t,e){const r=x(K.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!==N(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=K.from(t.gasPrice),r=K.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=D(e);r.push(uo(t.recoveryParam,"recoveryParam")),r.push(x(t.r)),r.push(x(t.s))}return B(["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=D(e);r.push(uo(t.recoveryParam,"recoveryParam")),r.push(x(t.r)),r.push(x(t.s))}return B(["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){pt(t,ao);const r=[];so.forEach(function(e){let n=t[e.name]||[];const i={};e.numeric&&(i.hexPad="left"),n=S(I(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=x(n),n.length>e.maxLength&&ro.throwArgumentError("invalid length for "+e.name,"transaction:"+e.name,n)),r.push(I(n))});let n=0;if(null!=t.chainId?(n=t.chainId,"number"!=typeof n&&ro.throwArgumentError("invalid transaction.chainId","transaction",t)):e&&!E(e)&&e.v>28&&(n=Math.floor((e.v-35)/2)),0!==n&&(r.push(I(n)),r.push("0x"),r.push("0x")),!e)return se(r);const i=D(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(I(o)),r.push(x(S(i.r))),r.push(x(S(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}`,v.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=O(e[1],32),t.s=O(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=S(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=K.from(e[6]).toNumber()}catch(t){return r}if(r.r=O(e[7],32),r.s=O(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(I(r.chainId)),i.push("0x"),i.push("0x"),n-=2*r.chainId+8);const o=ee(se(i));try{r.from=co(o,{r:I(r.r),s:I(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",I(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",I(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]}`,v.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 v("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",v.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",v.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=mt(r.pop())),Eo.checkArgumentCount(r.length,e.inputs.length,"passed to contract"),t.signer?n.from?n.from=ft({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",v.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 ft({args:So(t.signer||t.provider,r,e.inputs),address:t.resolvedAddress,overrides:ft(n)||{}}),o=t.interface.encodeFunctionData(e,i.args),s={data:o,to:i.address},a=i.overrides;if(null!=a.nonce&&(s.nonce=K.from(a.nonce).toNumber()),null!=a.gasLimit&&(s.gasLimit=K.from(a.gasLimit)),null!=a.gasPrice&&(s.gasPrice=K.from(a.gasPrice)),null!=a.maxFeePerGas&&(s.maxFeePerGas=K.from(a.maxFeePerGas)),null!=a.maxPriorityFeePerGas&&(s.maxPriorityFeePerGas=K.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=S(o);for(let e=0;e<r.length;e++)t+=4,r[e]&&(t+=64);s.gasLimit=K.from(e.gas).add(t)}if(a.value){const t=K.from(a.value);t.isZero()||e.payable||Eo.throwError("non-payable method cannot override value",v.errors.UNSUPPORTED_OPERATION,{operation:"overrides.value",value:n.value}),s.value=t}a.customData&&(s.customData=mt(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(",")}`,v.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=yt(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=mt(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===v.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",v.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){ht(this,"tag",t),ht(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),ht(this,"address",t),ht(this,"interface",e),ht(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=Wt(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}),ht(this,"address",t),ht(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){ht(this,"interface",dt(new.target,"getInterface")(e)),null==r?(ht(this,"provider",null),ht(this,"signer",null)):xn.isSigner(r)?(ht(this,"provider",r.provider||null),ht(this,"signer",r)):En.isProvider(r)?(ht(this,"provider",r),ht(this,"signer",null)):Eo.throwArgumentError("invalid signer or provider","signerOrProvider",r),ht(this,"callStatic",{}),ht(this,"estimateGas",{}),ht(this,"functions",{}),ht(this,"populateTransaction",{}),ht(this,"filters",{});{const t={};Object.keys(this.interface.events).forEach(e=>{const r=this.interface.events[e];ht(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?ht(this.filters,e,this.filters[r[0]]):Eo.warn(`Duplicate definition of ${e} (${r.join(", ")})`)})}if(ht(this,"_runningEvents",{}),ht(this,"_wrappedEmits",{}),null==t&&Eo.throwArgumentError("invalid contract address or ENS name","addressOrName",t),ht(this,"address",t),this.provider)ht(this,"resolvedAddress",ko(this.provider,t));else try{ht(this,"resolvedAddress",Promise.resolve(ve(t)))}catch(t){Eo.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])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]&&ht(this,t,To(this,e,!0)),null==this.functions[t]&&ht(this.functions,t,To(this,e,!1)),null==this.callStatic[t]&&ht(this.callStatic,t,_o(this,e,!0)),null==this.populateTransaction[t]&&ht(this.populateTransaction,t,function(t,e){return function(...r){return Co(t,e,r)}}(this,e)),null==this.estimateGas[t]&&ht(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",v.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]&&ht(this,t,this[r])}catch(t){}null==this.functions[t]&&ht(this.functions,t,this.functions[r]),null==this.callStatic[t]&&ht(this.callStatic,t,this.callStatic[r]),null==this.populateTransaction[t]&&ht(this.populateTransaction,t,this.populateTransaction[r]),null==this.estimateGas[t]&&ht(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",v.errors.UNSUPPORTED_OPERATION,{contractAddress:this.address,operation:"getDeployed"}),this))),this._deployedPromise}fallback(t){this.signer||Eo.throwError("sending a transactions require a signer",v.errors.UNSUPPORTED_OPERATION,{operation:"sendTransaction(fallback)"});const e=mt(t||{});return["from","to"].forEach(function(t){null!=e[t]&&Eo.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&&ht(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=yt(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",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=mt(n.filter);return"string"==typeof e&&T(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){ht(this,"alphabet",t),ht(this,"base",t.length),ht(this,"_alphabetMap",{}),ht(this,"_leader",t.charAt(0));for(let e=0;e<t.length;e++)this._alphabetMap[t.charAt(e)]=e}encode(t){let e=S(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 S(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 v("sha2/5.8.0");function qo(t){return"0x"+fi.ripemd160().update(S(t)).digest("hex")}function zo(t){return"0x"+fi.sha256().update(S(t)).digest("hex")}function Go(t,e,r){return Uo[t]||Lo.throwError("unsupported algorithm "+t,v.errors.UNSUPPORTED_OPERATION,{operation:"hmac",algorithm:t}),"0x"+fi.hmac(fi[t],S(e)).update(S(r)).digest("hex")}function Ho(t,e,r,n,i){let o;t=S(t),e=S(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=S(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=S(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(S(u).slice(0,p),f)}return I(a)}const jo=new v("wordlists/5.8.0");class Ko{constructor(t){jo.checkAbstract(new.target,Ko),ht(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 v("hdnode/5.8.0"),Yo=K.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 O(I(t),32)}function ns(t){return Do.encode(C([t,M(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);ht(this,"privateKey",t.privateKey),ht(this,"publicKey",t.compressedPublicKey)}else ht(this,"privateKey",null),ht(this,"publicKey",I(r));ht(this,"parentFingerprint",n),ht(this,"fingerprint",M(qo(zo(this.publicKey)),0,4)),ht(this,"address",lo(this.publicKey)),ht(this,"chainCode",i),ht(this,"index",o),ht(this,"depth",s),null==a?(ht(this,"mnemonic",null),ht(this,"path",null)):"string"==typeof a?(ht(this,"mnemonic",null),ht(this,"path",a)):(ht(this,"mnemonic",a),ht(this,"path",a.path))}get extendedKey(){if(this.depth>=256)throw new Error("Depth too large!");return ns(C([null!=this.privateKey?"0x0488ADE4":"0x0488B21E",I(this.depth),this.parentFingerprint,O(I(this.index),4),this.chainCode,null!=this.privateKey?C(["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(S(this.privateKey),1),e&&(e+="'")}else r.set(S(this.publicKey));for(let e=24;e>=0;e-=8)r[33+(e>>3)]=t>>24-e&255;const n=S(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(K.from(i).add(this.privateKey).mod(Yo));else{a=new Zi(I(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=S(t);if(r.length<16||r.length>64)throw new Error("invalid seed");const n=S(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=I(e.slice(5,9)),i=parseInt(I(e.slice(9,13)).substring(2),16),o=I(e.slice(13,45)),s=e.slice(45,78);switch(I(e.slice(0,4))){case"0x0488b21e":case"0x043587cf":return new as(os,null,I(s),n,o,i,r,null);case"0x0488ade4":case"0x04358394 ":if(0!==s[0])break;return new as(os,I(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=S(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((S(zo(n.slice(0,o/8)))[0]&s)!==(n[n.length-1]&s))throw new Error("invalid checksum");return I(n.slice(0,o/8))}function us(t,e){if(e=is(e),(t=S(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=S(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 v("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),S(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",v.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),S(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):S(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=S(t);e[6]=15&e[6]|64,e[8]=63&e[8]|128;const r=I(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 v(bs);class _s extends bt{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=S(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(S(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 v(bs);function Ds(t){return null!=t&&t.mnemonic&&t.mnemonic.phrase}class Us extends bt{isKeystoreAccount(t){return!(!t||!t._isKeystoreAccount)}}function Ls(t,e){const r=Es(Ss(t,"crypto/ciphertext"));if(I(ee(C([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 S(new ys.ModeOfOperation.ctr(e,i).decrypt(r))}return null}(t,e.slice(0,16),r);n||Os.throwError("unsupported cipher",v.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:I(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=S(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!==v.errors.INVALID_ARGUMENT||"wordlist"!==t.argument)throw t}}return new Us(s)}function qs(t,e,r,n,i){return S(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 v("wallet/5.8.0");class Vs extends xn{constructor(t,e){if(super(),null!=(r=t)&&T(r.privateKey,32)&&null!=r.address){const e=new Zi(t.privateKey);if(ht(this,"_signingKey",()=>e),ht(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;ht(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 ht(this,"_mnemonic",()=>null)}else{if(Zi.isSigningKey(t))"secp256k1"!==t.curve&&Ws.throwArgumentError("unsupported curve; must be secp256k1","privateKey","[REDACTED]"),ht(this,"_signingKey",()=>t);else{"string"==typeof t&&t.match(/^[0-9a-f]*$/i)&&64===t.length&&(t="0x"+t);const e=new Zi(t);ht(this,"_signingKey",()=>e)}ht(this,"_mnemonic",()=>null),ht(this,"address",lo(this.publicKey))}var r;e&&!En.isProvider(e)&&Ws.throwArgumentError("invalid provider","provider",e),ht(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 ft(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 U(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",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(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=S(t.privateKey),o=ks(e);let s=null,a=null,l=null;if(Ds(t)){const e=t.mnemonic;s=S(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?S(r.salt):ps(32);let h=null;if(r.iv){if(h=S(r.iv),16!==h.length)throw new Error("invalid iv")}else h=ps(16);let d=null;if(r.uuid){if(d=S(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=S(e)).slice(0,16),n=e.slice(16,32),o=e.slice(32,64),g=new ys.Counter(h),v=S(new ys.ModeOfOperation.ctr(r,g).encrypt(i)),w=ee(C([n,v])),y={address:t.address.substring(2).toLowerCase(),id:Cs(d),version:3,crypto:{cipher:"aes-128-ctr",cipherparams:{iv:I(h).substring(2)},ciphertext:I(v).substring(2),kdf:"scrypt",kdfparams:{salt:I(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=S(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:I(t).substring(2),mnemonicCiphertext:I(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=S(M(ee(C([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 v("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:S(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 v("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(E(t)){if(e&&("text"===e.split("/")[0]||"application/json"===e.split(";")[0].trim()))try{return Ye(t)}catch(t){}return I(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",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 "+yr($e(e))}}null!=t.skipFetchSetup&&(c.skipFetchSetup=!!t.skipFetchSetup),null!=t.fetchOptions&&(c.fetchOptions=mt(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",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){h&&(t=setTimeout(()=>{null!=t&&(t=null,r(oa.makeError("timeout",v.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)}}}(),w=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",v.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",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=o*parseInt(String(Math.random()*Math.pow(2,t)));yield sa(e);continue}}g.cancel(),oa.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 oa.throwError("failed response",v.errors.SERVER_ERROR,{requestBody:aa(c.body,m["content-type"]),requestMethod:c.method,url:l})})}();return Promise.race([g.promise,w])}function ca(t,e,r){let n=null;if(null!=e){n=$e(e);const r="string"==typeof t?{url:t}:mt(t);if(r.headers){0!==Object.keys(r.headers).filter(t=>"content-type"===t.toLowerCase()).length||(r.headers=mt(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",v.errors.SERVER_ERROR,{body:t,error:e})}return r&&(n=r(n,e)),n})}function ua(t,e){return e||(e={}),null==(e=mt(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 v(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=mt(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: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 ve(t)}callAddress(t){if(!T(t,32))return null;const e=ve(M(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||T(t))return R(t);throw new Error("invalid blockTag")}hash(t,e){const r=this.hex(t,e);return 32!==N(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 O(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: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 va.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=va.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 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=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 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 v(ma);function Sa(t){return null==t?"null":(32!==N(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===N(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){ht(this,"tag",t),ht(this,"listener",e),ht(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 O(K.from(t).toHexString(),32)}function Ba(t){return Do.encode(C([t,M(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=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 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=S(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=S(t[n]);e[n]=La(r),e.push(La(i.length)),e.push(qa(i)),r+=32+32*Math.ceil(i.length/32)}return B(e)}class Ga{constructor(t,e,r,n){ht(this,"provider",t),ht(this,"name",r),ht(this,"address",t.formatter.address(e)),ht(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:B([t,jr(this.name),e||"0x"])};let n=!1;(yield this.supportsWildcard())&&(n=!0,r.data=B(["0x9061b923",za([Kr(this.name),r.data])]));try{let t=yield this.provider.call(r);return S(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=S(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(C([[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(C([[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===v.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",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: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=O(K.from(s[1]).toHexString(),32);if("erc721"===i){const e=this.provider.formatter.callAddress(yield this.provider.call({to:a,data:B(["0x6352211e",l])}));if(o!==e)return null;t.push({type:"owner",content:e})}else if("erc1155"===i){const e=K.from(yield this.provider.call({to:a,data:B(["0x00fdd58e",O(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:B([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",v.errors.UNSUPPORTED_OPERATION,{operation:"getContentHash()",data:t})})}getText(t){return Aa(this,void 0,void 0,function*(){let e=$e(t);e=C([Ma(64),Ma(e.length),e]),e.length%32!=0&&(e=C([e,O("0x",32-t.length%32)]));const r=yield this._fetchBytes("0x59d1d43c",I(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(),ht(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=dt(new.target,"getNetwork")(t);e?(ht(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:ht(this,"_network",t),this.emit("network",t,null))}return this._network})}get ready(){return ua(()=>this._ready().then(t=>t,t=>{if(t.code!==v.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}`,v.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(", ")}`,v.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=ft({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=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",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 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",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 Ta(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,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",v.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",v.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 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 ft({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 ft({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 ft({address:this._getAddress(t),blockTag:this._getBlockTag(e)}),n=yield this.perform("getCode",r);try{return I(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 ft({address:this._getAddress(t),blockTag:this._getBlockTag(r),position:Promise.resolve(e).then(t=>R(t))}),i=yield this.perform("getStorageAt",n);try{return I(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!==N(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 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",v.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=>I(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?I(t):null))}),this.formatter.transactionRequest(yield ft(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 ft(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)&&N(i)%32==4)try{const o=M(i,4),s=M(o,0,32);K.from(s).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(o,32,64)).toNumber(),c=K.from(M(o,l,l+32)).toNumber(),u=M(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",v.errors.CALL_EXCEPTION,{name:"OffchainLookup",signature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",transaction:t,data:i}),a.push(r)}const h=Da(o,64);K.from(M(o,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(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",v.errors.CALL_EXCEPTION,{name:"OffchainLookup",signature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",transaction:t,data:i});const m={to:n,data:B([d,za([p,f])])};return this._call(m,e,r+1)}catch(t){if(t.code===v.errors.SERVER_ERROR)throw t}try{return I(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 ft({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 ft({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 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 ft({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",v.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(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"+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(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 Ga(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"+jr(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 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 v(ma),$a=["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;Va.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&&Va.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)&&Va.throwError("insufficient funds for intrinsic transaction cost",v.errors.INSUFFICIENT_FUNDS,{error:e,method:t,transaction:n}),i.match(/nonce (is )?too low/i)&&Va.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)&&Va.throwError("replacement fee too low",v.errors.REPLACEMENT_UNDERPRICED,{error:e,method:t,transaction:n}),i.match(/only replay-protected/i)&&Va.throwError("legacy pre-eip-155 transactions not supported",v.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",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");ht(this,"provider",e),null==r&&(r=0),"string"==typeof r?(ht(this,"_address",this.provider.formatter.address(r)),ht(this,"_index",null)):"number"==typeof r?(ht(this,"_index",r),ht(this,"_address",null)):Va.throwArgumentError("invalid address or index","addressOrIndex",r)}connect(t){return Va.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&&Va.throwError("unknown account #"+this._index,v.errors.UNSUPPORTED_OPERATION,{operation:"getAddress"}),this.provider.formatter.address(t[this._index])))}sendUncheckedTransaction(t){t=mt(t);const e=this.getAddress().then(t=>(t&&(t=t.toLowerCase()),t));if(null==t.gasLimit){const r=mt(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}))),ft({tx:ft(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",v.errors.ACTION_REJECTED,{action:"sendTransaction",transaction:e}),Qa("sendTransaction",t,n)))})}signTransaction(t){return Va.throwError("signing transactions is unsupported",v.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",[I(e),r.toLowerCase()])}catch(e){throw"string"==typeof e.message&&e.message.match(/user denied/i)&&Va.throwError("user rejected signing",v.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(),I(e)])}catch(e){throw"string"==typeof e.message&&e.message.match(/user denied/i)&&Va.throwError("user rejected signing",v.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",v.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=dt(this.constructor,"defaultUrl")()),ht(this,"connection","string"==typeof t?Object.freeze({url:t}):Object.freeze(mt(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=dt(this.constructor,"getNetwork");try{return e(K.from(t).toNumber())}catch(e){return Va.throwError("could not detect network",v.errors.NETWORK_ERROR,{chainId:t,event:"invalidNetwork",serverError:e})}}return Va.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:yt(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),O(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",[dt(this.constructor,"hexlifyTransaction")(e.transaction,{from:!0}),e.blockTag]];case"estimateGas":return["eth_estimateGas",[dt(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&&K.from(t.type).isZero()&&null==t.maxFeePerGas&&null==t.maxPriorityFeePerGas){const r=yield this.getFeeData();null==r.maxFeePerGas&&null==r.maxPriorityFeePerGas&&((e=mt(e)).transaction=mt(t),delete e.transaction.type)}}const r=this.prepareRequest(t,e);null==r&&Va.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=mt(nl);if(e)for(const t in e)e[t]&&(r[t]=!0);pt(t,r);const n={};return["chainId","gasLimit","gasPrice","type","maxFeePerGas","maxPriorityFeePerGas","nonce","value"].forEach(function(e){if(null==t[e])return;const r=R(K.from(t[e]));"gasLimit"===e&&(e="gas"),n[e]=r}),["from","to","data"].forEach(function(e){null!=t[e]&&(n[e]=I(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 v(ma);ol=function(){e.throwError("WebSockets not supported in this environment",v.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 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,ht(this,"_websocket","string"==typeof t?new ol(this.connection.url):t),ht(this,"_requests",{}),ht(this,"_subs",{}),ht(this,"_subIds",{}),ht(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"),ht(t,"code",r.error.code||null),ht(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 sl(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 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=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 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 v(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",v.errors.UNKNOWN_ERROR,{}),null==this._network&&(ht(this,"_network",e),this.emit("network",e,null))),e})}}class fl extends dl{constructor(t,e){hl.checkAbstract(new.target,fl),t=dt(new.target,"getNetwork")(t),e=dt(new.target,"getApiKey")(e);super(dt(new.target,"getUrl")(t,e),t),"string"==typeof e?ht(this,"apiKey",e):null!=e&&Object.keys(e).forEach(t=>{ht(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",v.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",v.errors.NOT_IMPLEMENTED,{operation:"getUrl"})}}const pl=new v(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),ht(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 v(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 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,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 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]?R(I(n)):"accessList"===r?"["+fo(n).map(t=>`{address:"${t.address}",storageKeys:["${t.storageKeys.join('","')}"]}`).join(",")+"]":I(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===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 Ml extends Ka{constructor(t,e){super(t),ht(this,"baseUrl",this.getBaseUrl()),ht(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:yt(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",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 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 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 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(K.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=[v.errors.CALL_EXCEPTION,v.errors.INSUFFICIENT_FUNDS,v.errors.NONCE_EXPIRED,v.errors.REPLACEMENT_UNDERPRICED,v.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=mt(t)).confirmations=-1,Ul(t))};break;case"getBlock":n=r.includeTransactions?function(t){return null==t?null:((t=mt(t)).transactions=t.transactions.map(t=>((t=mt(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&&T(n.blockTag)&&(i=yield Kl(t,e)),i[r](n.address,n.blockTag||"latest");case"getStorageAt":return n.blockTag&&T(n.blockTag)&&(i=yield Kl(t,e)),i.getStorageAt(n.address,n.position,n.blockTag||"latest");case"getBlock":return n.blockTag&&T(n.blockTag)&&(i=yield Kl(t,e)),i[n.includeTransactions?"getBlockWithTransactions":"getBlock"](n.blockTag||n.blockHash);case"call":case"estimateGas":return n.blockTag&&T(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&&T(r.fromBlock)||r.toBlock&&T(r.toBlock))&&(i=yield Kl(t,e)),i.getLogs(r)}}return Rl.throwError("unknown method error",v.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=mt(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),ht(this,"providerConfigs",Object.freeze(r)),ht(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(mt));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:yt(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:yt(e)},provider:this})}),this.listenerCount("debug")&&this.emit("debug",{action:"request",rid:s,backend:Hl(r,null),request:{method:t,params:yt(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",v.errors.SERVER_ERROR,{method:t,params:e,results:n.map(t=>Hl(t)),provider:this})})}}const $l=new v(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",v.errors.UNSUPPORTED_OPERATION,{operation:"InfuraProvider.getWebSocketProvider()"});super(n.url.replace(/^http/i,"ws").replace("/v3/","/ws/v3/"),t),ht(this,"apiKey",r.projectId),ht(this,"projectId",r.projectId),ht(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",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 oc=new v(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:yt(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:yt(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),ht(this,"jsonRpcFetchFunc",n),ht(this,"provider",i)}send(t,e){return this.jsonRpcFetchFunc(t,e)}}const cc=new v(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",v.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:yt(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 v("solidity/5.8.0");function gc(t,e,r){switch(t){case"address":return r?_(e,32):S(e);case"string":return $e(e);case"bytes":return S(e);case"bool":return e=e?"0x01":"0x00",r?_(e,32):S(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),_(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),S(e).byteLength!==i&&mc.throwArgumentError(`invalid value for ${t}`,"value",e),r?S((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))}),C(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]))}),I(C(r))}const wc=new v("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 nt(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 it(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:Dt,ErrorFragment:qt,EventFragment:Bt,FormatTypes:Tt,Fragment:Mt,FunctionFragment:Ut,HDNode:as,Indexed:pn,Interface:vn,LogDescription:hn,Logger:v,ParamType:It,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:S,base58:Do,base64:br,checkProperties:pt,checkResultErrors:Wt,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:C,deepCopy:yt,defaultAbiCoder:mr,defaultPath:ss,defineReadOnly:ht,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 I(C([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!==N(e)&&he.throwArgumentError("salt must be 32 bytes","salt",e),32!==N(r)&&he.throwArgumentError("initCodeHash must be 32 bytes","initCodeHash",r),ve(M(ee(C(["0xff",ve(t),e,r])),12))},getIcapAddress:function(t){let e=(r=ve(t).substring(2),new q(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:dt,hashMessage:Wr,hexConcat:B,hexDataLength:N,hexDataSlice:M,hexStripZeros:F,hexValue:R,hexZeroPad:O,hexlify:I,id:gr,isAddress:function(t){try{return ve(t),!0}catch(t){}return!1},isBytes:k,isBytesLike:E,isHexString:T,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:U,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=S(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:ft,ripemd160:qo,serializeTransaction:vo,sha256:zo,sha512:function(t){return"0x"+fi.sha512().update(S(t)).digest("hex")},shallowCopy:mt,shuffled:ms,solidityKeccak256:function(t,e){return ee(vc(t,e))},solidityPack:vc,soliditySha256:function(t,e){return zo(vc(t,e))},splitSignature:D,stripZeros:x,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:_});const Cc="ethers/5.8.0",xc=new v(Cc);var _c=Object.freeze({__proto__:null,BaseContract:Ro,BigNumber:K,Contract:Fo,ContractFactory:class{constructor(t,e,r){let n=null;n="string"==typeof e?e:k(e)?I(e):e&&"string"==typeof e.object?e.object:"!","0x"!==n.substring(0,2)&&(n="0x"+n),(!T(n)||n.length%2)&&Eo.throwArgumentError("invalid bytecode","bytecode",e),r&&!xn.isSigner(r)&&Eo.throwArgumentError("invalid signer","signer",r),ht(this,"bytecode",n),ht(this,"interface",dt(new.target,"getInterface")(t)),ht(this,"signer",r||null)}getDeployTransaction(...t){let e={};if(t.length===this.interface.deploy.inputs.length+1&&"object"==typeof t[t.length-1]){e=mt(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,v.errors.UNSUPPORTED_OPERATION,{operation:t})}),e.value){K.from(e.value).isZero()||this.interface.deploy.payable||Eo.throwError("non-payable constructor cannot override value",v.errors.UNSUPPORTED_OPERATION,{operation:"overrides.value",value:e.value})}return Eo.checkArgumentCount(t.length,this.interface.deploy.inputs.length," in Contract constructor"),e.data=I(C([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=dt(this.constructor,"getContractAddress")(i),s=dt(this.constructor,"getContract")(o,this.interface,this.signer);return xo(s,i),ht(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",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 Fo.getInterface(t)}static getContractAddress(t){return we(t)}static getContract(t,e,r){return new Fo(t,e,r)}},FixedNumber:st,Signer:xn,VoidSigner:_n,Wallet:Vs,Wordlist:Ko,constants:qe,get errors(){return m},getDefaultProvider:uc,logger:xc,providers:hc,utils:Sc,version:Cc,wordlists:Jo});try{const t=window;null==t._ethers&&(t._ethers=_c)}catch(t){}class Tc{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||!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),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")}}}class Pc{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")}}class Ic{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}}class Nc{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)}}const Mc=["https://w3s.link/ipfs/","https://cloudflare-ipfs.com/ipfs/","https://ipfs.io/ipfs/","https://gateway.pinata.cloud/ipfs/","https://dweb.link/ipfs/"];function Bc(){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,...Mc]:Mc}function Rc(t){return!(!t||"string"!=typeof t)&&t.toLowerCase().startsWith("ipfs://")}function Fc(t){if(!Rc(t))return t;const e=t.substring(7);return e.startsWith("/")?e.substring(1):e}function Oc(t,e=0){if(!Rc(t))return t;const r=Bc();if(e<0||e>=r.length)return null;const n=Fc(t);return r[e]+n}function Dc(){return Bc()}var Uc=Object.freeze({__proto__:null,fetchJsonWithIpfsSupport:async function(t,e={}){const{timeout:r=1e4,...n}=e;if(!Rc(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=Bc(),o=Fc(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:Dc,isIpfsUri:Rc,normalizeIpfsPath:Fc,resolveIpfsToHttp:Oc,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 Lc extends t{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 qc extends t{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.on("wallet:connected",async t=>{await this.loadWalletInfo(t.address)}),r=e.on("wallet:disconnected",()=>{this.setState({walletConnected:!1,address:null,balance:"0.00",menuOpen:!1,hasExecTokens:!1,isVaultBenefactor:!1})}),n=e.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 Lc({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 zc extends Lc{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 Gc extends qc{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 zc({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}}class Hc extends t{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?Rc(t)?Oc(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=Dc(),{src:r}=this.props;if(!Rc(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=Oc(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(" "):""}}Hc.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 jc extends t{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 Kc extends t{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 Wc={PRICE:"price:updated",STATUS:"price:status"};class Vc extends t{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(Wc.PRICE,this.handlePriceUpdate),this.eventBus.on(Wc.STATUS,this.handleStatusUpdate))}onUnmount(){this.eventBus&&(this.eventBus.off(Wc.PRICE,this.handlePriceUpdate),this.eventBus.off(Wc.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 $c extends t{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 Kc("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 t{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 Qc extends t{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 Yc extends t{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 jc,this.messagePopup=new Kc("status-message"),this.priceDisplay=new Vc({price:this.state.price,contractData:this.state.contractData}),this.messagePopup.initialize(),this.swapInputs=null,this.swapButton=new Qc({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 Xc extends t{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 Zc extends t{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})}}export{$c as ApprovalModal,Zc as BalanceDisplay,Tc as BlockchainService,Xc as BondingCurve,Ic as ContractCache,qc as FloatingWalletButton,Hc as IpfsImage,Uc as IpfsService,Kc as MessagePopup,Vc as PriceDisplay,Nc as PriceService,Qc as SwapButton,Jc as SwapInputs,Yc as SwapInterface,jc as TransactionOptions,Gc as WalletButton,Lc as WalletModal,Pc as WalletService};
10
10
  //# sourceMappingURL=micro-web3.esm.js.map