@imtbl/sdk 1.43.3 → 1.43.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/dist/Passport.d-011d5035.d.ts +224 -0
  2. package/dist/blockchain-data.d-1634b683.d.ts +3406 -0
  3. package/dist/blockchain_data-d989298c.js +1 -0
  4. package/dist/blockchain_data.d-d538f8d4.d.ts +4543 -0
  5. package/dist/blockchain_data.d.ts +3 -7950
  6. package/dist/blockchain_data.js +1 -6058
  7. package/dist/browser/checkout/sdk.js +4 -4
  8. package/dist/checkout-68675dd1.js +16 -0
  9. package/dist/checkout.d-ae9ca847.d.ts +3392 -0
  10. package/dist/checkout.d.ts +7 -16882
  11. package/dist/checkout.js +1 -37189
  12. package/dist/config-53a9a4ca.js +1 -0
  13. package/dist/config.d-65420620.d.ts +18 -0
  14. package/dist/config.d.ts +1 -30
  15. package/dist/config.js +1 -394
  16. package/dist/event-types.d-42520276.d.ts +332 -0
  17. package/dist/imxProvider.d-cac9e315.d.ts +12538 -0
  18. package/dist/index-14aad537.js +1 -0
  19. package/dist/index-3951cdf0.js +1 -0
  20. package/dist/index-3f40d7f6.js +1 -0
  21. package/dist/index-58a79c29.js +1 -0
  22. package/dist/index-96599707.js +1 -0
  23. package/dist/index-e7002486.js +1 -0
  24. package/dist/index.browser.js +4 -4
  25. package/dist/index.cjs +7 -7
  26. package/dist/index.d-c4a4c17d.d.ts +277 -0
  27. package/dist/index.d-f0845744.d.ts +30 -0
  28. package/dist/index.d-f1471830.d.ts +376 -0
  29. package/dist/index.d.ts +18 -32627
  30. package/dist/index.js +1 -64124
  31. package/dist/json-rpc-provider.d-5c038bd9.d.ts +249 -0
  32. package/dist/minting_backend-04aef147.js +1 -0
  33. package/dist/minting_backend.d-4754ffee.d.ts +104 -0
  34. package/dist/minting_backend.d.ts +5 -3535
  35. package/dist/minting_backend.js +1 -6756
  36. package/dist/orderbook-e71036df.js +1 -0
  37. package/dist/orderbook.d-77162c6c.d.ts +1257 -0
  38. package/dist/orderbook.d.ts +5 -1713
  39. package/dist/orderbook.js +1 -2479
  40. package/dist/passport-0f45e532.js +1 -0
  41. package/dist/passport.d-d3f44798.d.ts +67 -0
  42. package/dist/passport.d.ts +6 -13703
  43. package/dist/passport.js +1 -23137
  44. package/dist/transfer.d-87728423.d.ts +898 -0
  45. package/dist/webhook-a16541bb.js +1 -0
  46. package/dist/webhook.d-4c3cb340.d.ts +75 -0
  47. package/dist/webhook.d.ts +4 -1265
  48. package/dist/webhook.js +1 -488
  49. package/dist/x-a5b39578.js +1 -0
  50. package/dist/x.d-1b51f0c3.d.ts +4879 -0
  51. package/dist/x.d.ts +6 -18663
  52. package/dist/x.js +1 -19242
  53. package/package.json +1 -1
@@ -0,0 +1,16 @@
1
+ import{E as e,t,I as n}from"./index-14aad537.js";import{ethers as a,BigNumber as r,ContractFactory as i,utils as s,Contract as o}from"ethers";import d,{HttpStatusCode as u}from"axios";import{Web3Provider as c,JsonRpcProvider as f}from"@ethersproject/providers";import l from"@metamask/detect-provider";import*as p from"@uniswap/sdk-core";import{TradeType as h,Percent as m}from"@uniswap/sdk-core";import b from"assert";import{FeeAmount as y,Route as g,SwapQuoter as E,Pool as T,Trade as w,toHex as v,encodeRouteToPath as R}from"@uniswap/v3-sdk";import{keccak256 as I}from"@ethersproject/solidity";import{SwapRouter as A,PaymentsExtended as _}from"@uniswap/router-sdk";import{c as M,O as N,a as C,A as O,T as S,S as P}from"./index-e7002486.js";import{B as D}from"./index-96599707.js";function x(e,t){return function(){return e.apply(t,arguments)}}const{toString:k}=Object.prototype,{getPrototypeOf:L}=Object,U=(F=Object.create(null),e=>{const t=k.call(e);return F[t]||(F[t]=t.slice(8,-1).toLowerCase())});var F;const B=e=>(e=e.toLowerCase(),t=>U(t)===e),G=e=>t=>typeof t===e,{isArray:j}=Array,W=G("undefined");const V=B("ArrayBuffer");const z=G("string"),H=G("function"),q=G("number"),X=e=>null!==e&&"object"==typeof e,$=e=>{if("object"!==U(e))return!1;const t=L(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||Symbol.toStringTag in e||Symbol.iterator in e)},Z=B("Date"),K=B("File"),Q=B("Blob"),Y=B("FileList"),J=B("URLSearchParams");function ee(e,t,{allOwnKeys:n=!1}={}){if(null==e)return;let a,r;if("object"!=typeof e&&(e=[e]),j(e))for(a=0,r=e.length;a<r;a++)t.call(null,e[a],a,e);else{const r=n?Object.getOwnPropertyNames(e):Object.keys(e),i=r.length;let s;for(a=0;a<i;a++)s=r[a],t.call(null,e[s],s,e)}}function te(e,t){t=t.toLowerCase();const n=Object.keys(e);let a,r=n.length;for(;r-- >0;)if(a=n[r],t===a.toLowerCase())return a;return null}const ne="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,ae=e=>!W(e)&&e!==ne;const re=(ie="undefined"!=typeof Uint8Array&&L(Uint8Array),e=>ie&&e instanceof ie);var ie;const se=B("HTMLFormElement"),oe=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),de=B("RegExp"),ue=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),a={};ee(n,((n,r)=>{let i;!1!==(i=t(n,r,e))&&(a[r]=i||n)})),Object.defineProperties(e,a)},ce="abcdefghijklmnopqrstuvwxyz",fe="0123456789",le={DIGIT:fe,ALPHA:ce,ALPHA_DIGIT:ce+ce.toUpperCase()+fe};const pe=B("AsyncFunction");var he={isArray:j,isArrayBuffer:V,isBuffer:function(e){return null!==e&&!W(e)&&null!==e.constructor&&!W(e.constructor)&&H(e.constructor.isBuffer)&&e.constructor.isBuffer(e)},isFormData:e=>{let t;return e&&("function"==typeof FormData&&e instanceof FormData||H(e.append)&&("formdata"===(t=U(e))||"object"===t&&H(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){let t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&V(e.buffer),t},isString:z,isNumber:q,isBoolean:e=>!0===e||!1===e,isObject:X,isPlainObject:$,isUndefined:W,isDate:Z,isFile:K,isBlob:Q,isRegExp:de,isFunction:H,isStream:e=>X(e)&&H(e.pipe),isURLSearchParams:J,isTypedArray:re,isFileList:Y,forEach:ee,merge:function e(){const{caseless:t}=ae(this)&&this||{},n={},a=(a,r)=>{const i=t&&te(n,r)||r;$(n[i])&&$(a)?n[i]=e(n[i],a):$(a)?n[i]=e({},a):j(a)?n[i]=a.slice():n[i]=a};for(let e=0,t=arguments.length;e<t;e++)arguments[e]&&ee(arguments[e],a);return n},extend:(e,t,n,{allOwnKeys:a}={})=>(ee(t,((t,a)=>{n&&H(t)?e[a]=x(t,n):e[a]=t}),{allOwnKeys:a}),e),trim:e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""),stripBOM:e=>(65279===e.charCodeAt(0)&&(e=e.slice(1)),e),inherits:(e,t,n,a)=>{e.prototype=Object.create(t.prototype,a),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},toFlatObject:(e,t,n,a)=>{let r,i,s;const o={};if(t=t||{},null==e)return t;do{for(r=Object.getOwnPropertyNames(e),i=r.length;i-- >0;)s=r[i],a&&!a(s,e,t)||o[s]||(t[s]=e[s],o[s]=!0);e=!1!==n&&L(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},kindOf:U,kindOfTest:B,endsWith:(e,t,n)=>{e=String(e),(void 0===n||n>e.length)&&(n=e.length),n-=t.length;const a=e.indexOf(t,n);return-1!==a&&a===n},toArray:e=>{if(!e)return null;if(j(e))return e;let t=e.length;if(!q(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},forEachEntry:(e,t)=>{const n=(e&&e[Symbol.iterator]).call(e);let a;for(;(a=n.next())&&!a.done;){const n=a.value;t.call(e,n[0],n[1])}},matchAll:(e,t)=>{let n;const a=[];for(;null!==(n=e.exec(t));)a.push(n);return a},isHTMLForm:se,hasOwnProperty:oe,hasOwnProp:oe,reduceDescriptors:ue,freezeMethods:e=>{ue(e,((t,n)=>{if(H(e)&&-1!==["arguments","caller","callee"].indexOf(n))return!1;const a=e[n];H(a)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")}))}))},toObjectSet:(e,t)=>{const n={},a=e=>{e.forEach((e=>{n[e]=!0}))};return j(e)?a(e):a(String(e).split(t)),n},toCamelCase:e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,(function(e,t,n){return t.toUpperCase()+n})),noop:()=>{},toFiniteNumber:(e,t)=>(e=+e,Number.isFinite(e)?e:t),findKey:te,global:ne,isContextDefined:ae,ALPHABET:le,generateString:(e=16,t=le.ALPHA_DIGIT)=>{let n="";const{length:a}=t;for(;e--;)n+=t[Math.random()*a|0];return n},isSpecCompliantForm:function(e){return!!(e&&H(e.append)&&"FormData"===e[Symbol.toStringTag]&&e[Symbol.iterator])},toJSONObject:e=>{const t=new Array(10),n=(e,a)=>{if(X(e)){if(t.indexOf(e)>=0)return;if(!("toJSON"in e)){t[a]=e;const r=j(e)?[]:{};return ee(e,((e,t)=>{const i=n(e,a+1);!W(i)&&(r[t]=i)})),t[a]=void 0,r}}return e};return n(e,0)},isAsyncFn:pe,isThenable:e=>e&&(X(e)||H(e))&&H(e.then)&&H(e.catch)};function me(e,t,n,a,r){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),a&&(this.request=a),r&&(this.response=r)}he.inherits(me,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:he.toJSONObject(this.config),code:this.code,status:this.response&&this.response.status?this.response.status:null}}});const be=me.prototype,ye={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach((e=>{ye[e]={value:e}})),Object.defineProperties(me,ye),Object.defineProperty(be,"isAxiosError",{value:!0}),me.from=(e,t,n,a,r,i)=>{const s=Object.create(be);return he.toFlatObject(e,s,(function(e){return e!==Error.prototype}),(e=>"isAxiosError"!==e)),me.call(s,e.message,t,n,a,r),s.cause=e,s.name=e.name,i&&Object.assign(s,i),s};function ge(e){return he.isPlainObject(e)||he.isArray(e)}function Ee(e){return he.endsWith(e,"[]")?e.slice(0,-2):e}function Te(e,t,n){return e?e.concat(t).map((function(e,t){return e=Ee(e),!n&&t?"["+e+"]":e})).join(n?".":""):t}const we=he.toFlatObject(he,{},null,(function(e){return/^is[A-Z]/.test(e)}));function ve(e,t,n){if(!he.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;const a=(n=he.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,(function(e,t){return!he.isUndefined(t[e])}))).metaTokens,r=n.visitor||u,i=n.dots,s=n.indexes,o=(n.Blob||"undefined"!=typeof Blob&&Blob)&&he.isSpecCompliantForm(t);if(!he.isFunction(r))throw new TypeError("visitor must be a function");function d(e){if(null===e)return"";if(he.isDate(e))return e.toISOString();if(!o&&he.isBlob(e))throw new me("Blob is not supported. Use a Buffer instead.");return he.isArrayBuffer(e)||he.isTypedArray(e)?o&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function u(e,n,r){let o=e;if(e&&!r&&"object"==typeof e)if(he.endsWith(n,"{}"))n=a?n:n.slice(0,-2),e=JSON.stringify(e);else if(he.isArray(e)&&function(e){return he.isArray(e)&&!e.some(ge)}(e)||(he.isFileList(e)||he.endsWith(n,"[]"))&&(o=he.toArray(e)))return n=Ee(n),o.forEach((function(e,a){!he.isUndefined(e)&&null!==e&&t.append(!0===s?Te([n],a,i):null===s?n:n+"[]",d(e))})),!1;return!!ge(e)||(t.append(Te(r,n,i),d(e)),!1)}const c=[],f=Object.assign(we,{defaultVisitor:u,convertValue:d,isVisitable:ge});if(!he.isObject(e))throw new TypeError("data must be an object");return function e(n,a){if(!he.isUndefined(n)){if(-1!==c.indexOf(n))throw Error("Circular reference detected in "+a.join("."));c.push(n),he.forEach(n,(function(n,i){!0===(!(he.isUndefined(n)||null===n)&&r.call(t,n,he.isString(i)?i.trim():i,a,f))&&e(n,a?a.concat(i):[i])})),c.pop()}}(e),t}function Re(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,(function(e){return t[e]}))}function Ie(e,t){this._pairs=[],e&&ve(e,this,t)}const Ae=Ie.prototype;function _e(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function Me(e,t,n){if(!t)return e;const a=n&&n.encode||_e,r=n&&n.serialize;let i;if(i=r?r(t,n):he.isURLSearchParams(t)?t.toString():new Ie(t,n).toString(a),i){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+i}return e}Ae.append=function(e,t){this._pairs.push([e,t])},Ae.toString=function(e){const t=e?function(t){return e.call(this,t,Re)}:Re;return this._pairs.map((function(e){return t(e[0])+"="+t(e[1])}),"").join("&")};var Ne=class{constructor(){this.handlers=[]}use(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){he.forEach(this.handlers,(function(t){null!==t&&e(t)}))}},Ce={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},Oe={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:Ie,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]};const Se="undefined"!=typeof window&&"undefined"!=typeof document,Pe=(De="undefined"!=typeof navigator&&navigator.product,Se&&["ReactNative","NativeScript","NS"].indexOf(De)<0);var De;const xe="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts;var ke={...Object.freeze({__proto__:null,hasBrowserEnv:Se,hasStandardBrowserEnv:Pe,hasStandardBrowserWebWorkerEnv:xe}),...Oe};function Le(e){function t(e,n,a,r){let i=e[r++];if("__proto__"===i)return!0;const s=Number.isFinite(+i),o=r>=e.length;if(i=!i&&he.isArray(a)?a.length:i,o)return he.hasOwnProp(a,i)?a[i]=[a[i],n]:a[i]=n,!s;a[i]&&he.isObject(a[i])||(a[i]=[]);return t(e,n,a[i],r)&&he.isArray(a[i])&&(a[i]=function(e){const t={},n=Object.keys(e);let a;const r=n.length;let i;for(a=0;a<r;a++)i=n[a],t[i]=e[i];return t}(a[i])),!s}if(he.isFormData(e)&&he.isFunction(e.entries)){const n={};return he.forEachEntry(e,((e,a)=>{t(function(e){return he.matchAll(/\w+|\[(\w*)]/g,e).map((e=>"[]"===e[0]?"":e[1]||e[0]))}(e),a,n,0)})),n}return null}const Ue={transitional:Ce,adapter:["xhr","http"],transformRequest:[function(e,t){const n=t.getContentType()||"",a=n.indexOf("application/json")>-1,r=he.isObject(e);r&&he.isHTMLForm(e)&&(e=new FormData(e));if(he.isFormData(e))return a&&a?JSON.stringify(Le(e)):e;if(he.isArrayBuffer(e)||he.isBuffer(e)||he.isStream(e)||he.isFile(e)||he.isBlob(e))return e;if(he.isArrayBufferView(e))return e.buffer;if(he.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let i;if(r){if(n.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return ve(e,new ke.classes.URLSearchParams,Object.assign({visitor:function(e,t,n,a){return ke.isNode&&he.isBuffer(e)?(this.append(t,e.toString("base64")),!1):a.defaultVisitor.apply(this,arguments)}},t))}(e,this.formSerializer).toString();if((i=he.isFileList(e))||n.indexOf("multipart/form-data")>-1){const t=this.env&&this.env.FormData;return ve(i?{"files[]":e}:e,t&&new t,this.formSerializer)}}return r||a?(t.setContentType("application/json",!1),function(e,t,n){if(he.isString(e))try{return(t||JSON.parse)(e),he.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(n||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){const t=this.transitional||Ue.transitional,n=t&&t.forcedJSONParsing,a="json"===this.responseType;if(e&&he.isString(e)&&(n&&!this.responseType||a)){const n=!(t&&t.silentJSONParsing)&&a;try{return JSON.parse(e)}catch(e){if(n){if("SyntaxError"===e.name)throw me.from(e,me.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:ke.classes.FormData,Blob:ke.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};he.forEach(["delete","get","head","post","put","patch"],(e=>{Ue.headers[e]={}}));var Fe=Ue;const Be=he.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]);const Ge=Symbol("internals");function je(e){return e&&String(e).trim().toLowerCase()}function We(e){return!1===e||null==e?e:he.isArray(e)?e.map(We):String(e)}function Ve(e,t,n,a,r){return he.isFunction(a)?a.call(this,t,n):(r&&(t=n),he.isString(t)?he.isString(a)?-1!==t.indexOf(a):he.isRegExp(a)?a.test(t):void 0:void 0)}class ze{constructor(e){e&&this.set(e)}set(e,t,n){const a=this;function r(e,t,n){const r=je(t);if(!r)throw new Error("header name must be a non-empty string");const i=he.findKey(a,r);(!i||void 0===a[i]||!0===n||void 0===n&&!1!==a[i])&&(a[i||t]=We(e))}const i=(e,t)=>he.forEach(e,((e,n)=>r(e,n,t)));return he.isPlainObject(e)||e instanceof this.constructor?i(e,t):he.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim())?i((e=>{const t={};let n,a,r;return e&&e.split("\n").forEach((function(e){r=e.indexOf(":"),n=e.substring(0,r).trim().toLowerCase(),a=e.substring(r+1).trim(),!n||t[n]&&Be[n]||("set-cookie"===n?t[n]?t[n].push(a):t[n]=[a]:t[n]=t[n]?t[n]+", "+a:a)})),t})(e),t):null!=e&&r(t,e,n),this}get(e,t){if(e=je(e)){const n=he.findKey(this,e);if(n){const e=this[n];if(!t)return e;if(!0===t)return function(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let a;for(;a=n.exec(e);)t[a[1]]=a[2];return t}(e);if(he.isFunction(t))return t.call(this,e,n);if(he.isRegExp(t))return t.exec(e);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,t){if(e=je(e)){const n=he.findKey(this,e);return!(!n||void 0===this[n]||t&&!Ve(0,this[n],n,t))}return!1}delete(e,t){const n=this;let a=!1;function r(e){if(e=je(e)){const r=he.findKey(n,e);!r||t&&!Ve(0,n[r],r,t)||(delete n[r],a=!0)}}return he.isArray(e)?e.forEach(r):r(e),a}clear(e){const t=Object.keys(this);let n=t.length,a=!1;for(;n--;){const r=t[n];e&&!Ve(0,this[r],r,e,!0)||(delete this[r],a=!0)}return a}normalize(e){const t=this,n={};return he.forEach(this,((a,r)=>{const i=he.findKey(n,r);if(i)return t[i]=We(a),void delete t[r];const s=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,((e,t,n)=>t.toUpperCase()+n))}(r):String(r).trim();s!==r&&delete t[r],t[s]=We(a),n[s]=!0})),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const t=Object.create(null);return he.forEach(this,((n,a)=>{null!=n&&!1!==n&&(t[a]=e&&he.isArray(n)?n.join(", "):n)})),t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map((([e,t])=>e+": "+t)).join("\n")}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...t){const n=new this(e);return t.forEach((e=>n.set(e))),n}static accessor(e){const t=(this[Ge]=this[Ge]={accessors:{}}).accessors,n=this.prototype;function a(e){const a=je(e);t[a]||(!function(e,t){const n=he.toCamelCase(" "+t);["get","set","has"].forEach((a=>{Object.defineProperty(e,a+n,{value:function(e,n,r){return this[a].call(this,t,e,n,r)},configurable:!0})}))}(n,e),t[a]=!0)}return he.isArray(e)?e.forEach(a):a(e),this}}ze.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),he.reduceDescriptors(ze.prototype,(({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(e){this[n]=e}}})),he.freezeMethods(ze);var He=ze;function qe(e,t){const n=this||Fe,a=t||n,r=He.from(a.headers);let i=a.data;return he.forEach(e,(function(e){i=e.call(n,i,r.normalize(),t?t.status:void 0)})),r.normalize(),i}function Xe(e){return!(!e||!e.__CANCEL__)}function $e(e,t,n){me.call(this,null==e?"canceled":e,me.ERR_CANCELED,t,n),this.name="CanceledError"}he.inherits($e,me,{__CANCEL__:!0});var Ze=ke.hasStandardBrowserEnv?{write(e,t,n,a,r,i){const s=[e+"="+encodeURIComponent(t)];he.isNumber(n)&&s.push("expires="+new Date(n).toGMTString()),he.isString(a)&&s.push("path="+a),he.isString(r)&&s.push("domain="+r),!0===i&&s.push("secure"),document.cookie=s.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read:()=>null,remove(){}};function Ke(e,t){return e&&!/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)?function(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}(e,t):t}var Qe=ke.hasStandardBrowserEnv?function(){const e=/(msie|trident)/i.test(navigator.userAgent),t=document.createElement("a");let n;function a(n){let a=n;return e&&(t.setAttribute("href",a),a=t.href),t.setAttribute("href",a),{href:t.href,protocol:t.protocol?t.protocol.replace(/:$/,""):"",host:t.host,search:t.search?t.search.replace(/^\?/,""):"",hash:t.hash?t.hash.replace(/^#/,""):"",hostname:t.hostname,port:t.port,pathname:"/"===t.pathname.charAt(0)?t.pathname:"/"+t.pathname}}return n=a(window.location.href),function(e){const t=he.isString(e)?a(e):e;return t.protocol===n.protocol&&t.host===n.host}}():function(){return!0};function Ye(e,t){let n=0;const a=function(e,t){e=e||10;const n=new Array(e),a=new Array(e);let r,i=0,s=0;return t=void 0!==t?t:1e3,function(o){const d=Date.now(),u=a[s];r||(r=d),n[i]=o,a[i]=d;let c=s,f=0;for(;c!==i;)f+=n[c++],c%=e;if(i=(i+1)%e,i===s&&(s=(s+1)%e),d-r<t)return;const l=u&&d-u;return l?Math.round(1e3*f/l):void 0}}(50,250);return r=>{const i=r.loaded,s=r.lengthComputable?r.total:void 0,o=i-n,d=a(o);n=i;const u={loaded:i,total:s,progress:s?i/s:void 0,bytes:o,rate:d||void 0,estimated:d&&s&&i<=s?(s-i)/d:void 0,event:r};u[t?"download":"upload"]=!0,e(u)}}var Je="undefined"!=typeof XMLHttpRequest&&function(e){return new Promise((function(t,n){let a=e.data;const r=He.from(e.headers).normalize();let i,s,{responseType:o,withXSRFToken:d}=e;function u(){e.cancelToken&&e.cancelToken.unsubscribe(i),e.signal&&e.signal.removeEventListener("abort",i)}if(he.isFormData(a))if(ke.hasStandardBrowserEnv||ke.hasStandardBrowserWebWorkerEnv)r.setContentType(!1);else if(!1!==(s=r.getContentType())){const[e,...t]=s?s.split(";").map((e=>e.trim())).filter(Boolean):[];r.setContentType([e||"multipart/form-data",...t].join("; "))}let c=new XMLHttpRequest;if(e.auth){const t=e.auth.username||"",n=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";r.set("Authorization","Basic "+btoa(t+":"+n))}const f=Ke(e.baseURL,e.url);function l(){if(!c)return;const a=He.from("getAllResponseHeaders"in c&&c.getAllResponseHeaders());!function(e,t,n){const a=n.config.validateStatus;n.status&&a&&!a(n.status)?t(new me("Request failed with status code "+n.status,[me.ERR_BAD_REQUEST,me.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n)):e(n)}((function(e){t(e),u()}),(function(e){n(e),u()}),{data:o&&"text"!==o&&"json"!==o?c.response:c.responseText,status:c.status,statusText:c.statusText,headers:a,config:e,request:c}),c=null}if(c.open(e.method.toUpperCase(),Me(f,e.params,e.paramsSerializer),!0),c.timeout=e.timeout,"onloadend"in c?c.onloadend=l:c.onreadystatechange=function(){c&&4===c.readyState&&(0!==c.status||c.responseURL&&0===c.responseURL.indexOf("file:"))&&setTimeout(l)},c.onabort=function(){c&&(n(new me("Request aborted",me.ECONNABORTED,e,c)),c=null)},c.onerror=function(){n(new me("Network Error",me.ERR_NETWORK,e,c)),c=null},c.ontimeout=function(){let t=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded";const a=e.transitional||Ce;e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),n(new me(t,a.clarifyTimeoutError?me.ETIMEDOUT:me.ECONNABORTED,e,c)),c=null},ke.hasStandardBrowserEnv&&(d&&he.isFunction(d)&&(d=d(e)),d||!1!==d&&Qe(f))){const t=e.xsrfHeaderName&&e.xsrfCookieName&&Ze.read(e.xsrfCookieName);t&&r.set(e.xsrfHeaderName,t)}void 0===a&&r.setContentType(null),"setRequestHeader"in c&&he.forEach(r.toJSON(),(function(e,t){c.setRequestHeader(t,e)})),he.isUndefined(e.withCredentials)||(c.withCredentials=!!e.withCredentials),o&&"json"!==o&&(c.responseType=e.responseType),"function"==typeof e.onDownloadProgress&&c.addEventListener("progress",Ye(e.onDownloadProgress,!0)),"function"==typeof e.onUploadProgress&&c.upload&&c.upload.addEventListener("progress",Ye(e.onUploadProgress)),(e.cancelToken||e.signal)&&(i=t=>{c&&(n(!t||t.type?new $e(null,e,c):t),c.abort(),c=null)},e.cancelToken&&e.cancelToken.subscribe(i),e.signal&&(e.signal.aborted?i():e.signal.addEventListener("abort",i)));const p=function(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}(f);p&&-1===ke.protocols.indexOf(p)?n(new me("Unsupported protocol "+p+":",me.ERR_BAD_REQUEST,e)):c.send(a||null)}))};const et={http:null,xhr:Je};he.forEach(et,((e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch(e){}Object.defineProperty(e,"adapterName",{value:t})}}));const tt=e=>`- ${e}`,nt=e=>he.isFunction(e)||null===e||!1===e;var at=e=>{e=he.isArray(e)?e:[e];const{length:t}=e;let n,a;const r={};for(let i=0;i<t;i++){let t;if(n=e[i],a=n,!nt(n)&&(a=et[(t=String(n)).toLowerCase()],void 0===a))throw new me(`Unknown adapter '${t}'`);if(a)break;r[t||"#"+i]=a}if(!a){const e=Object.entries(r).map((([e,t])=>`adapter ${e} `+(!1===t?"is not supported by the environment":"is not available in the build")));throw new me("There is no suitable adapter to dispatch the request "+(t?e.length>1?"since :\n"+e.map(tt).join("\n"):" "+tt(e[0]):"as no adapter specified"),"ERR_NOT_SUPPORT")}return a};function rt(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new $e(null,e)}function it(e){rt(e),e.headers=He.from(e.headers),e.data=qe.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1);return at(e.adapter||Fe.adapter)(e).then((function(t){return rt(e),t.data=qe.call(e,e.transformResponse,t),t.headers=He.from(t.headers),t}),(function(t){return Xe(t)||(rt(e),t&&t.response&&(t.response.data=qe.call(e,e.transformResponse,t.response),t.response.headers=He.from(t.response.headers))),Promise.reject(t)}))}const st=e=>e instanceof He?e.toJSON():e;function ot(e,t){t=t||{};const n={};function a(e,t,n){return he.isPlainObject(e)&&he.isPlainObject(t)?he.merge.call({caseless:n},e,t):he.isPlainObject(t)?he.merge({},t):he.isArray(t)?t.slice():t}function r(e,t,n){return he.isUndefined(t)?he.isUndefined(e)?void 0:a(void 0,e,n):a(e,t,n)}function i(e,t){if(!he.isUndefined(t))return a(void 0,t)}function s(e,t){return he.isUndefined(t)?he.isUndefined(e)?void 0:a(void 0,e):a(void 0,t)}function o(n,r,i){return i in t?a(n,r):i in e?a(void 0,n):void 0}const d={url:i,method:i,data:i,baseURL:s,transformRequest:s,transformResponse:s,paramsSerializer:s,timeout:s,timeoutMessage:s,withCredentials:s,withXSRFToken:s,adapter:s,responseType:s,xsrfCookieName:s,xsrfHeaderName:s,onUploadProgress:s,onDownloadProgress:s,decompress:s,maxContentLength:s,maxBodyLength:s,beforeRedirect:s,transport:s,httpAgent:s,httpsAgent:s,cancelToken:s,socketPath:s,responseEncoding:s,validateStatus:o,headers:(e,t)=>r(st(e),st(t),!0)};return he.forEach(Object.keys(Object.assign({},e,t)),(function(a){const i=d[a]||r,s=i(e[a],t[a],a);he.isUndefined(s)&&i!==o||(n[a]=s)})),n}const dt="1.6.5",ut={};["object","boolean","number","function","string","symbol"].forEach(((e,t)=>{ut[e]=function(n){return typeof n===e||"a"+(t<1?"n ":" ")+e}}));const ct={};ut.transitional=function(e,t,n){function a(e,t){return"[Axios v1.6.5] Transitional option '"+e+"'"+t+(n?". "+n:"")}return(n,r,i)=>{if(!1===e)throw new me(a(r," has been removed"+(t?" in "+t:"")),me.ERR_DEPRECATED);return t&&!ct[r]&&(ct[r]=!0,console.warn(a(r," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(n,r,i)}};var ft={assertOptions:function(e,t,n){if("object"!=typeof e)throw new me("options must be an object",me.ERR_BAD_OPTION_VALUE);const a=Object.keys(e);let r=a.length;for(;r-- >0;){const i=a[r],s=t[i];if(s){const t=e[i],n=void 0===t||s(t,i,e);if(!0!==n)throw new me("option "+i+" must be "+n,me.ERR_BAD_OPTION_VALUE)}else if(!0!==n)throw new me("Unknown option "+i,me.ERR_BAD_OPTION)}},validators:ut};const lt=ft.validators;class pt{constructor(e){this.defaults=e,this.interceptors={request:new Ne,response:new Ne}}request(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{},t=ot(this.defaults,t);const{transitional:n,paramsSerializer:a,headers:r}=t;void 0!==n&&ft.assertOptions(n,{silentJSONParsing:lt.transitional(lt.boolean),forcedJSONParsing:lt.transitional(lt.boolean),clarifyTimeoutError:lt.transitional(lt.boolean)},!1),null!=a&&(he.isFunction(a)?t.paramsSerializer={serialize:a}:ft.assertOptions(a,{encode:lt.function,serialize:lt.function},!0)),t.method=(t.method||this.defaults.method||"get").toLowerCase();let i=r&&he.merge(r.common,r[t.method]);r&&he.forEach(["delete","get","head","post","put","patch","common"],(e=>{delete r[e]})),t.headers=He.concat(i,r);const s=[];let o=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(o=o&&e.synchronous,s.unshift(e.fulfilled,e.rejected))}));const d=[];let u;this.interceptors.response.forEach((function(e){d.push(e.fulfilled,e.rejected)}));let c,f=0;if(!o){const e=[it.bind(this),void 0];for(e.unshift.apply(e,s),e.push.apply(e,d),c=e.length,u=Promise.resolve(t);f<c;)u=u.then(e[f++],e[f++]);return u}c=s.length;let l=t;for(f=0;f<c;){const e=s[f++],t=s[f++];try{l=e(l)}catch(e){t.call(this,e);break}}try{u=it.call(this,l)}catch(e){return Promise.reject(e)}for(f=0,c=d.length;f<c;)u=u.then(d[f++],d[f++]);return u}getUri(e){return Me(Ke((e=ot(this.defaults,e)).baseURL,e.url),e.params,e.paramsSerializer)}}he.forEach(["delete","get","head","options"],(function(e){pt.prototype[e]=function(t,n){return this.request(ot(n||{},{method:e,url:t,data:(n||{}).data}))}})),he.forEach(["post","put","patch"],(function(e){function t(t){return function(n,a,r){return this.request(ot(r||{},{method:e,headers:t?{"Content-Type":"multipart/form-data"}:{},url:n,data:a}))}}pt.prototype[e]=t(),pt.prototype[e+"Form"]=t(!0)}));var ht=pt;class mt{constructor(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");let t;this.promise=new Promise((function(e){t=e}));const n=this;this.promise.then((e=>{if(!n._listeners)return;let t=n._listeners.length;for(;t-- >0;)n._listeners[t](e);n._listeners=null})),this.promise.then=e=>{let t;const a=new Promise((e=>{n.subscribe(e),t=e})).then(e);return a.cancel=function(){n.unsubscribe(t)},a},e((function(e,a,r){n.reason||(n.reason=new $e(e,a,r),t(n.reason))}))}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}static source(){let e;return{token:new mt((function(t){e=t})),cancel:e}}}var bt=mt;const yt={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(yt).forEach((([e,t])=>{yt[t]=e}));var gt=yt;const Et=function e(t){const n=new ht(t),a=x(ht.prototype.request,n);return he.extend(a,ht.prototype,n,{allOwnKeys:!0}),he.extend(a,n,null,{allOwnKeys:!0}),a.create=function(n){return e(ot(t,n))},a}(Fe);Et.Axios=ht,Et.CanceledError=$e,Et.CancelToken=bt,Et.isCancel=Xe,Et.VERSION=dt,Et.toFormData=ve,Et.AxiosError=me,Et.Cancel=Et.CanceledError,Et.all=function(e){return Promise.all(e)},Et.spread=function(e){return function(t){return e.apply(null,t)}},Et.isAxiosError=function(e){return he.isObject(e)&&!0===e.isAxiosError},Et.mergeConfig=ot,Et.AxiosHeaders=He,Et.formToJSON=e=>Le(he.isHTMLForm(e)?new FormData(e):e),Et.getAdapter=at,Et.HttpStatusCode=gt,Et.default=Et;var Tt=Et,wt="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function vt(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function Rt(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var n=function e(){if(this instanceof e){var n=[null];return n.push.apply(n,arguments),new(Function.bind.apply(t,n))}return t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach((function(t){var a=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,a.get?a:{enumerable:!0,get:function(){return e[t]}})})),n}var It={exports:{}},At=Rt(Object.freeze({__proto__:null,default:{}}));!function(e,t){function n(e,t){if(!e)throw new Error(t||"Assertion failed")}function a(e,t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}function r(e,t,n){if(r.isBN(e))return e;this.negative=0,this.words=null,this.length=0,this.red=null,null!==e&&("le"!==t&&"be"!==t||(n=t,t=10),this._init(e||0,t||10,n||"be"))}var i;"object"==typeof e?e.exports=r:t.BN=r,r.BN=r,r.wordSize=26;try{i="undefined"!=typeof window&&void 0!==window.Buffer?window.Buffer:At.Buffer}catch(e){}function s(e,t){var a=e.charCodeAt(t);return a>=48&&a<=57?a-48:a>=65&&a<=70?a-55:a>=97&&a<=102?a-87:void n(!1,"Invalid character in "+e)}function o(e,t,n){var a=s(e,n);return n-1>=t&&(a|=s(e,n-1)<<4),a}function d(e,t,a,r){for(var i=0,s=0,o=Math.min(e.length,a),d=t;d<o;d++){var u=e.charCodeAt(d)-48;i*=r,s=u>=49?u-49+10:u>=17?u-17+10:u,n(u>=0&&s<r,"Invalid character"),i+=s}return i}function u(e,t){e.words=t.words,e.length=t.length,e.negative=t.negative,e.red=t.red}if(r.isBN=function(e){return e instanceof r||null!==e&&"object"==typeof e&&e.constructor.wordSize===r.wordSize&&Array.isArray(e.words)},r.max=function(e,t){return e.cmp(t)>0?e:t},r.min=function(e,t){return e.cmp(t)<0?e:t},r.prototype._init=function(e,t,a){if("number"==typeof e)return this._initNumber(e,t,a);if("object"==typeof e)return this._initArray(e,t,a);"hex"===t&&(t=16),n(t===(0|t)&&t>=2&&t<=36);var r=0;"-"===(e=e.toString().replace(/\s+/g,""))[0]&&(r++,this.negative=1),r<e.length&&(16===t?this._parseHex(e,r,a):(this._parseBase(e,t,r),"le"===a&&this._initArray(this.toArray(),t,a)))},r.prototype._initNumber=function(e,t,a){e<0&&(this.negative=1,e=-e),e<67108864?(this.words=[67108863&e],this.length=1):e<4503599627370496?(this.words=[67108863&e,e/67108864&67108863],this.length=2):(n(e<9007199254740992),this.words=[67108863&e,e/67108864&67108863,1],this.length=3),"le"===a&&this._initArray(this.toArray(),t,a)},r.prototype._initArray=function(e,t,a){if(n("number"==typeof e.length),e.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(e.length/3),this.words=new Array(this.length);for(var r=0;r<this.length;r++)this.words[r]=0;var i,s,o=0;if("be"===a)for(r=e.length-1,i=0;r>=0;r-=3)s=e[r]|e[r-1]<<8|e[r-2]<<16,this.words[i]|=s<<o&67108863,this.words[i+1]=s>>>26-o&67108863,(o+=24)>=26&&(o-=26,i++);else if("le"===a)for(r=0,i=0;r<e.length;r+=3)s=e[r]|e[r+1]<<8|e[r+2]<<16,this.words[i]|=s<<o&67108863,this.words[i+1]=s>>>26-o&67108863,(o+=24)>=26&&(o-=26,i++);return this._strip()},r.prototype._parseHex=function(e,t,n){this.length=Math.ceil((e.length-t)/6),this.words=new Array(this.length);for(var a=0;a<this.length;a++)this.words[a]=0;var r,i=0,s=0;if("be"===n)for(a=e.length-1;a>=t;a-=2)r=o(e,t,a)<<i,this.words[s]|=67108863&r,i>=18?(i-=18,s+=1,this.words[s]|=r>>>26):i+=8;else for(a=(e.length-t)%2==0?t+1:t;a<e.length;a+=2)r=o(e,t,a)<<i,this.words[s]|=67108863&r,i>=18?(i-=18,s+=1,this.words[s]|=r>>>26):i+=8;this._strip()},r.prototype._parseBase=function(e,t,n){this.words=[0],this.length=1;for(var a=0,r=1;r<=67108863;r*=t)a++;a--,r=r/t|0;for(var i=e.length-n,s=i%a,o=Math.min(i,i-s)+n,u=0,c=n;c<o;c+=a)u=d(e,c,c+a,t),this.imuln(r),this.words[0]+u<67108864?this.words[0]+=u:this._iaddn(u);if(0!==s){var f=1;for(u=d(e,c,e.length,t),c=0;c<s;c++)f*=t;this.imuln(f),this.words[0]+u<67108864?this.words[0]+=u:this._iaddn(u)}this._strip()},r.prototype.copy=function(e){e.words=new Array(this.length);for(var t=0;t<this.length;t++)e.words[t]=this.words[t];e.length=this.length,e.negative=this.negative,e.red=this.red},r.prototype._move=function(e){u(e,this)},r.prototype.clone=function(){var e=new r(null);return this.copy(e),e},r.prototype._expand=function(e){for(;this.length<e;)this.words[this.length++]=0;return this},r.prototype._strip=function(){for(;this.length>1&&0===this.words[this.length-1];)this.length--;return this._normSign()},r.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},"undefined"!=typeof Symbol&&"function"==typeof Symbol.for)try{r.prototype[Symbol.for("nodejs.util.inspect.custom")]=c}catch(e){r.prototype.inspect=c}else r.prototype.inspect=c;function c(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"}var f=["","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"],l=[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],p=[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 h(e,t,n){n.negative=t.negative^e.negative;var a=e.length+t.length|0;n.length=a,a=a-1|0;var r=0|e.words[0],i=0|t.words[0],s=r*i,o=67108863&s,d=s/67108864|0;n.words[0]=o;for(var u=1;u<a;u++){for(var c=d>>>26,f=67108863&d,l=Math.min(u,t.length-1),p=Math.max(0,u-e.length+1);p<=l;p++){var h=u-p|0;c+=(s=(r=0|e.words[h])*(i=0|t.words[p])+f)/67108864|0,f=67108863&s}n.words[u]=0|f,d=0|c}return 0!==d?n.words[u]=0|d:n.length--,n._strip()}r.prototype.toString=function(e,t){var a;if(t=0|t||1,16===(e=e||10)||"hex"===e){a="";for(var r=0,i=0,s=0;s<this.length;s++){var o=this.words[s],d=(16777215&(o<<r|i)).toString(16);i=o>>>24-r&16777215,(r+=2)>=26&&(r-=26,s--),a=0!==i||s!==this.length-1?f[6-d.length]+d+a:d+a}for(0!==i&&(a=i.toString(16)+a);a.length%t!=0;)a="0"+a;return 0!==this.negative&&(a="-"+a),a}if(e===(0|e)&&e>=2&&e<=36){var u=l[e],c=p[e];a="";var h=this.clone();for(h.negative=0;!h.isZero();){var m=h.modrn(c).toString(e);a=(h=h.idivn(c)).isZero()?m+a:f[u-m.length]+m+a}for(this.isZero()&&(a="0"+a);a.length%t!=0;)a="0"+a;return 0!==this.negative&&(a="-"+a),a}n(!1,"Base should be between 2 and 36")},r.prototype.toNumber=function(){var e=this.words[0];return 2===this.length?e+=67108864*this.words[1]:3===this.length&&1===this.words[2]?e+=4503599627370496+67108864*this.words[1]:this.length>2&&n(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-e:e},r.prototype.toJSON=function(){return this.toString(16,2)},i&&(r.prototype.toBuffer=function(e,t){return this.toArrayLike(i,e,t)}),r.prototype.toArray=function(e,t){return this.toArrayLike(Array,e,t)},r.prototype.toArrayLike=function(e,t,a){this._strip();var r=this.byteLength(),i=a||Math.max(1,r);n(r<=i,"byte array longer than desired length"),n(i>0,"Requested array length <= 0");var s=function(e,t){return e.allocUnsafe?e.allocUnsafe(t):new e(t)}(e,i);return this["_toArrayLike"+("le"===t?"LE":"BE")](s,r),s},r.prototype._toArrayLikeLE=function(e,t){for(var n=0,a=0,r=0,i=0;r<this.length;r++){var s=this.words[r]<<i|a;e[n++]=255&s,n<e.length&&(e[n++]=s>>8&255),n<e.length&&(e[n++]=s>>16&255),6===i?(n<e.length&&(e[n++]=s>>24&255),a=0,i=0):(a=s>>>24,i+=2)}if(n<e.length)for(e[n++]=a;n<e.length;)e[n++]=0},r.prototype._toArrayLikeBE=function(e,t){for(var n=e.length-1,a=0,r=0,i=0;r<this.length;r++){var s=this.words[r]<<i|a;e[n--]=255&s,n>=0&&(e[n--]=s>>8&255),n>=0&&(e[n--]=s>>16&255),6===i?(n>=0&&(e[n--]=s>>24&255),a=0,i=0):(a=s>>>24,i+=2)}if(n>=0)for(e[n--]=a;n>=0;)e[n--]=0},Math.clz32?r.prototype._countBits=function(e){return 32-Math.clz32(e)}:r.prototype._countBits=function(e){var t=e,n=0;return t>=4096&&(n+=13,t>>>=13),t>=64&&(n+=7,t>>>=7),t>=8&&(n+=4,t>>>=4),t>=2&&(n+=2,t>>>=2),n+t},r.prototype._zeroBits=function(e){if(0===e)return 26;var t=e,n=0;return 0==(8191&t)&&(n+=13,t>>>=13),0==(127&t)&&(n+=7,t>>>=7),0==(15&t)&&(n+=4,t>>>=4),0==(3&t)&&(n+=2,t>>>=2),0==(1&t)&&n++,n},r.prototype.bitLength=function(){var e=this.words[this.length-1],t=this._countBits(e);return 26*(this.length-1)+t},r.prototype.zeroBits=function(){if(this.isZero())return 0;for(var e=0,t=0;t<this.length;t++){var n=this._zeroBits(this.words[t]);if(e+=n,26!==n)break}return e},r.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},r.prototype.toTwos=function(e){return 0!==this.negative?this.abs().inotn(e).iaddn(1):this.clone()},r.prototype.fromTwos=function(e){return this.testn(e-1)?this.notn(e).iaddn(1).ineg():this.clone()},r.prototype.isNeg=function(){return 0!==this.negative},r.prototype.neg=function(){return this.clone().ineg()},r.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},r.prototype.iuor=function(e){for(;this.length<e.length;)this.words[this.length++]=0;for(var t=0;t<e.length;t++)this.words[t]=this.words[t]|e.words[t];return this._strip()},r.prototype.ior=function(e){return n(0==(this.negative|e.negative)),this.iuor(e)},r.prototype.or=function(e){return this.length>e.length?this.clone().ior(e):e.clone().ior(this)},r.prototype.uor=function(e){return this.length>e.length?this.clone().iuor(e):e.clone().iuor(this)},r.prototype.iuand=function(e){var t;t=this.length>e.length?e:this;for(var n=0;n<t.length;n++)this.words[n]=this.words[n]&e.words[n];return this.length=t.length,this._strip()},r.prototype.iand=function(e){return n(0==(this.negative|e.negative)),this.iuand(e)},r.prototype.and=function(e){return this.length>e.length?this.clone().iand(e):e.clone().iand(this)},r.prototype.uand=function(e){return this.length>e.length?this.clone().iuand(e):e.clone().iuand(this)},r.prototype.iuxor=function(e){var t,n;this.length>e.length?(t=this,n=e):(t=e,n=this);for(var a=0;a<n.length;a++)this.words[a]=t.words[a]^n.words[a];if(this!==t)for(;a<t.length;a++)this.words[a]=t.words[a];return this.length=t.length,this._strip()},r.prototype.ixor=function(e){return n(0==(this.negative|e.negative)),this.iuxor(e)},r.prototype.xor=function(e){return this.length>e.length?this.clone().ixor(e):e.clone().ixor(this)},r.prototype.uxor=function(e){return this.length>e.length?this.clone().iuxor(e):e.clone().iuxor(this)},r.prototype.inotn=function(e){n("number"==typeof e&&e>=0);var t=0|Math.ceil(e/26),a=e%26;this._expand(t),a>0&&t--;for(var r=0;r<t;r++)this.words[r]=67108863&~this.words[r];return a>0&&(this.words[r]=~this.words[r]&67108863>>26-a),this._strip()},r.prototype.notn=function(e){return this.clone().inotn(e)},r.prototype.setn=function(e,t){n("number"==typeof e&&e>=0);var a=e/26|0,r=e%26;return this._expand(a+1),this.words[a]=t?this.words[a]|1<<r:this.words[a]&~(1<<r),this._strip()},r.prototype.iadd=function(e){var t,n,a;if(0!==this.negative&&0===e.negative)return this.negative=0,t=this.isub(e),this.negative^=1,this._normSign();if(0===this.negative&&0!==e.negative)return e.negative=0,t=this.isub(e),e.negative=1,t._normSign();this.length>e.length?(n=this,a=e):(n=e,a=this);for(var r=0,i=0;i<a.length;i++)t=(0|n.words[i])+(0|a.words[i])+r,this.words[i]=67108863&t,r=t>>>26;for(;0!==r&&i<n.length;i++)t=(0|n.words[i])+r,this.words[i]=67108863&t,r=t>>>26;if(this.length=n.length,0!==r)this.words[this.length]=r,this.length++;else if(n!==this)for(;i<n.length;i++)this.words[i]=n.words[i];return this},r.prototype.add=function(e){var t;return 0!==e.negative&&0===this.negative?(e.negative=0,t=this.sub(e),e.negative^=1,t):0===e.negative&&0!==this.negative?(this.negative=0,t=e.sub(this),this.negative=1,t):this.length>e.length?this.clone().iadd(e):e.clone().iadd(this)},r.prototype.isub=function(e){if(0!==e.negative){e.negative=0;var t=this.iadd(e);return e.negative=1,t._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(e),this.negative=1,this._normSign();var n,a,r=this.cmp(e);if(0===r)return this.negative=0,this.length=1,this.words[0]=0,this;r>0?(n=this,a=e):(n=e,a=this);for(var i=0,s=0;s<a.length;s++)i=(t=(0|n.words[s])-(0|a.words[s])+i)>>26,this.words[s]=67108863&t;for(;0!==i&&s<n.length;s++)i=(t=(0|n.words[s])+i)>>26,this.words[s]=67108863&t;if(0===i&&s<n.length&&n!==this)for(;s<n.length;s++)this.words[s]=n.words[s];return this.length=Math.max(this.length,s),n!==this&&(this.negative=1),this._strip()},r.prototype.sub=function(e){return this.clone().isub(e)};var m=function(e,t,n){var a,r,i,s=e.words,o=t.words,d=n.words,u=0,c=0|s[0],f=8191&c,l=c>>>13,p=0|s[1],h=8191&p,m=p>>>13,b=0|s[2],y=8191&b,g=b>>>13,E=0|s[3],T=8191&E,w=E>>>13,v=0|s[4],R=8191&v,I=v>>>13,A=0|s[5],_=8191&A,M=A>>>13,N=0|s[6],C=8191&N,O=N>>>13,S=0|s[7],P=8191&S,D=S>>>13,x=0|s[8],k=8191&x,L=x>>>13,U=0|s[9],F=8191&U,B=U>>>13,G=0|o[0],j=8191&G,W=G>>>13,V=0|o[1],z=8191&V,H=V>>>13,q=0|o[2],X=8191&q,$=q>>>13,Z=0|o[3],K=8191&Z,Q=Z>>>13,Y=0|o[4],J=8191&Y,ee=Y>>>13,te=0|o[5],ne=8191&te,ae=te>>>13,re=0|o[6],ie=8191&re,se=re>>>13,oe=0|o[7],de=8191&oe,ue=oe>>>13,ce=0|o[8],fe=8191&ce,le=ce>>>13,pe=0|o[9],he=8191&pe,me=pe>>>13;n.negative=e.negative^t.negative,n.length=19;var be=(u+(a=Math.imul(f,j))|0)+((8191&(r=(r=Math.imul(f,W))+Math.imul(l,j)|0))<<13)|0;u=((i=Math.imul(l,W))+(r>>>13)|0)+(be>>>26)|0,be&=67108863,a=Math.imul(h,j),r=(r=Math.imul(h,W))+Math.imul(m,j)|0,i=Math.imul(m,W);var ye=(u+(a=a+Math.imul(f,z)|0)|0)+((8191&(r=(r=r+Math.imul(f,H)|0)+Math.imul(l,z)|0))<<13)|0;u=((i=i+Math.imul(l,H)|0)+(r>>>13)|0)+(ye>>>26)|0,ye&=67108863,a=Math.imul(y,j),r=(r=Math.imul(y,W))+Math.imul(g,j)|0,i=Math.imul(g,W),a=a+Math.imul(h,z)|0,r=(r=r+Math.imul(h,H)|0)+Math.imul(m,z)|0,i=i+Math.imul(m,H)|0;var ge=(u+(a=a+Math.imul(f,X)|0)|0)+((8191&(r=(r=r+Math.imul(f,$)|0)+Math.imul(l,X)|0))<<13)|0;u=((i=i+Math.imul(l,$)|0)+(r>>>13)|0)+(ge>>>26)|0,ge&=67108863,a=Math.imul(T,j),r=(r=Math.imul(T,W))+Math.imul(w,j)|0,i=Math.imul(w,W),a=a+Math.imul(y,z)|0,r=(r=r+Math.imul(y,H)|0)+Math.imul(g,z)|0,i=i+Math.imul(g,H)|0,a=a+Math.imul(h,X)|0,r=(r=r+Math.imul(h,$)|0)+Math.imul(m,X)|0,i=i+Math.imul(m,$)|0;var Ee=(u+(a=a+Math.imul(f,K)|0)|0)+((8191&(r=(r=r+Math.imul(f,Q)|0)+Math.imul(l,K)|0))<<13)|0;u=((i=i+Math.imul(l,Q)|0)+(r>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,a=Math.imul(R,j),r=(r=Math.imul(R,W))+Math.imul(I,j)|0,i=Math.imul(I,W),a=a+Math.imul(T,z)|0,r=(r=r+Math.imul(T,H)|0)+Math.imul(w,z)|0,i=i+Math.imul(w,H)|0,a=a+Math.imul(y,X)|0,r=(r=r+Math.imul(y,$)|0)+Math.imul(g,X)|0,i=i+Math.imul(g,$)|0,a=a+Math.imul(h,K)|0,r=(r=r+Math.imul(h,Q)|0)+Math.imul(m,K)|0,i=i+Math.imul(m,Q)|0;var Te=(u+(a=a+Math.imul(f,J)|0)|0)+((8191&(r=(r=r+Math.imul(f,ee)|0)+Math.imul(l,J)|0))<<13)|0;u=((i=i+Math.imul(l,ee)|0)+(r>>>13)|0)+(Te>>>26)|0,Te&=67108863,a=Math.imul(_,j),r=(r=Math.imul(_,W))+Math.imul(M,j)|0,i=Math.imul(M,W),a=a+Math.imul(R,z)|0,r=(r=r+Math.imul(R,H)|0)+Math.imul(I,z)|0,i=i+Math.imul(I,H)|0,a=a+Math.imul(T,X)|0,r=(r=r+Math.imul(T,$)|0)+Math.imul(w,X)|0,i=i+Math.imul(w,$)|0,a=a+Math.imul(y,K)|0,r=(r=r+Math.imul(y,Q)|0)+Math.imul(g,K)|0,i=i+Math.imul(g,Q)|0,a=a+Math.imul(h,J)|0,r=(r=r+Math.imul(h,ee)|0)+Math.imul(m,J)|0,i=i+Math.imul(m,ee)|0;var we=(u+(a=a+Math.imul(f,ne)|0)|0)+((8191&(r=(r=r+Math.imul(f,ae)|0)+Math.imul(l,ne)|0))<<13)|0;u=((i=i+Math.imul(l,ae)|0)+(r>>>13)|0)+(we>>>26)|0,we&=67108863,a=Math.imul(C,j),r=(r=Math.imul(C,W))+Math.imul(O,j)|0,i=Math.imul(O,W),a=a+Math.imul(_,z)|0,r=(r=r+Math.imul(_,H)|0)+Math.imul(M,z)|0,i=i+Math.imul(M,H)|0,a=a+Math.imul(R,X)|0,r=(r=r+Math.imul(R,$)|0)+Math.imul(I,X)|0,i=i+Math.imul(I,$)|0,a=a+Math.imul(T,K)|0,r=(r=r+Math.imul(T,Q)|0)+Math.imul(w,K)|0,i=i+Math.imul(w,Q)|0,a=a+Math.imul(y,J)|0,r=(r=r+Math.imul(y,ee)|0)+Math.imul(g,J)|0,i=i+Math.imul(g,ee)|0,a=a+Math.imul(h,ne)|0,r=(r=r+Math.imul(h,ae)|0)+Math.imul(m,ne)|0,i=i+Math.imul(m,ae)|0;var ve=(u+(a=a+Math.imul(f,ie)|0)|0)+((8191&(r=(r=r+Math.imul(f,se)|0)+Math.imul(l,ie)|0))<<13)|0;u=((i=i+Math.imul(l,se)|0)+(r>>>13)|0)+(ve>>>26)|0,ve&=67108863,a=Math.imul(P,j),r=(r=Math.imul(P,W))+Math.imul(D,j)|0,i=Math.imul(D,W),a=a+Math.imul(C,z)|0,r=(r=r+Math.imul(C,H)|0)+Math.imul(O,z)|0,i=i+Math.imul(O,H)|0,a=a+Math.imul(_,X)|0,r=(r=r+Math.imul(_,$)|0)+Math.imul(M,X)|0,i=i+Math.imul(M,$)|0,a=a+Math.imul(R,K)|0,r=(r=r+Math.imul(R,Q)|0)+Math.imul(I,K)|0,i=i+Math.imul(I,Q)|0,a=a+Math.imul(T,J)|0,r=(r=r+Math.imul(T,ee)|0)+Math.imul(w,J)|0,i=i+Math.imul(w,ee)|0,a=a+Math.imul(y,ne)|0,r=(r=r+Math.imul(y,ae)|0)+Math.imul(g,ne)|0,i=i+Math.imul(g,ae)|0,a=a+Math.imul(h,ie)|0,r=(r=r+Math.imul(h,se)|0)+Math.imul(m,ie)|0,i=i+Math.imul(m,se)|0;var Re=(u+(a=a+Math.imul(f,de)|0)|0)+((8191&(r=(r=r+Math.imul(f,ue)|0)+Math.imul(l,de)|0))<<13)|0;u=((i=i+Math.imul(l,ue)|0)+(r>>>13)|0)+(Re>>>26)|0,Re&=67108863,a=Math.imul(k,j),r=(r=Math.imul(k,W))+Math.imul(L,j)|0,i=Math.imul(L,W),a=a+Math.imul(P,z)|0,r=(r=r+Math.imul(P,H)|0)+Math.imul(D,z)|0,i=i+Math.imul(D,H)|0,a=a+Math.imul(C,X)|0,r=(r=r+Math.imul(C,$)|0)+Math.imul(O,X)|0,i=i+Math.imul(O,$)|0,a=a+Math.imul(_,K)|0,r=(r=r+Math.imul(_,Q)|0)+Math.imul(M,K)|0,i=i+Math.imul(M,Q)|0,a=a+Math.imul(R,J)|0,r=(r=r+Math.imul(R,ee)|0)+Math.imul(I,J)|0,i=i+Math.imul(I,ee)|0,a=a+Math.imul(T,ne)|0,r=(r=r+Math.imul(T,ae)|0)+Math.imul(w,ne)|0,i=i+Math.imul(w,ae)|0,a=a+Math.imul(y,ie)|0,r=(r=r+Math.imul(y,se)|0)+Math.imul(g,ie)|0,i=i+Math.imul(g,se)|0,a=a+Math.imul(h,de)|0,r=(r=r+Math.imul(h,ue)|0)+Math.imul(m,de)|0,i=i+Math.imul(m,ue)|0;var Ie=(u+(a=a+Math.imul(f,fe)|0)|0)+((8191&(r=(r=r+Math.imul(f,le)|0)+Math.imul(l,fe)|0))<<13)|0;u=((i=i+Math.imul(l,le)|0)+(r>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,a=Math.imul(F,j),r=(r=Math.imul(F,W))+Math.imul(B,j)|0,i=Math.imul(B,W),a=a+Math.imul(k,z)|0,r=(r=r+Math.imul(k,H)|0)+Math.imul(L,z)|0,i=i+Math.imul(L,H)|0,a=a+Math.imul(P,X)|0,r=(r=r+Math.imul(P,$)|0)+Math.imul(D,X)|0,i=i+Math.imul(D,$)|0,a=a+Math.imul(C,K)|0,r=(r=r+Math.imul(C,Q)|0)+Math.imul(O,K)|0,i=i+Math.imul(O,Q)|0,a=a+Math.imul(_,J)|0,r=(r=r+Math.imul(_,ee)|0)+Math.imul(M,J)|0,i=i+Math.imul(M,ee)|0,a=a+Math.imul(R,ne)|0,r=(r=r+Math.imul(R,ae)|0)+Math.imul(I,ne)|0,i=i+Math.imul(I,ae)|0,a=a+Math.imul(T,ie)|0,r=(r=r+Math.imul(T,se)|0)+Math.imul(w,ie)|0,i=i+Math.imul(w,se)|0,a=a+Math.imul(y,de)|0,r=(r=r+Math.imul(y,ue)|0)+Math.imul(g,de)|0,i=i+Math.imul(g,ue)|0,a=a+Math.imul(h,fe)|0,r=(r=r+Math.imul(h,le)|0)+Math.imul(m,fe)|0,i=i+Math.imul(m,le)|0;var Ae=(u+(a=a+Math.imul(f,he)|0)|0)+((8191&(r=(r=r+Math.imul(f,me)|0)+Math.imul(l,he)|0))<<13)|0;u=((i=i+Math.imul(l,me)|0)+(r>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,a=Math.imul(F,z),r=(r=Math.imul(F,H))+Math.imul(B,z)|0,i=Math.imul(B,H),a=a+Math.imul(k,X)|0,r=(r=r+Math.imul(k,$)|0)+Math.imul(L,X)|0,i=i+Math.imul(L,$)|0,a=a+Math.imul(P,K)|0,r=(r=r+Math.imul(P,Q)|0)+Math.imul(D,K)|0,i=i+Math.imul(D,Q)|0,a=a+Math.imul(C,J)|0,r=(r=r+Math.imul(C,ee)|0)+Math.imul(O,J)|0,i=i+Math.imul(O,ee)|0,a=a+Math.imul(_,ne)|0,r=(r=r+Math.imul(_,ae)|0)+Math.imul(M,ne)|0,i=i+Math.imul(M,ae)|0,a=a+Math.imul(R,ie)|0,r=(r=r+Math.imul(R,se)|0)+Math.imul(I,ie)|0,i=i+Math.imul(I,se)|0,a=a+Math.imul(T,de)|0,r=(r=r+Math.imul(T,ue)|0)+Math.imul(w,de)|0,i=i+Math.imul(w,ue)|0,a=a+Math.imul(y,fe)|0,r=(r=r+Math.imul(y,le)|0)+Math.imul(g,fe)|0,i=i+Math.imul(g,le)|0;var _e=(u+(a=a+Math.imul(h,he)|0)|0)+((8191&(r=(r=r+Math.imul(h,me)|0)+Math.imul(m,he)|0))<<13)|0;u=((i=i+Math.imul(m,me)|0)+(r>>>13)|0)+(_e>>>26)|0,_e&=67108863,a=Math.imul(F,X),r=(r=Math.imul(F,$))+Math.imul(B,X)|0,i=Math.imul(B,$),a=a+Math.imul(k,K)|0,r=(r=r+Math.imul(k,Q)|0)+Math.imul(L,K)|0,i=i+Math.imul(L,Q)|0,a=a+Math.imul(P,J)|0,r=(r=r+Math.imul(P,ee)|0)+Math.imul(D,J)|0,i=i+Math.imul(D,ee)|0,a=a+Math.imul(C,ne)|0,r=(r=r+Math.imul(C,ae)|0)+Math.imul(O,ne)|0,i=i+Math.imul(O,ae)|0,a=a+Math.imul(_,ie)|0,r=(r=r+Math.imul(_,se)|0)+Math.imul(M,ie)|0,i=i+Math.imul(M,se)|0,a=a+Math.imul(R,de)|0,r=(r=r+Math.imul(R,ue)|0)+Math.imul(I,de)|0,i=i+Math.imul(I,ue)|0,a=a+Math.imul(T,fe)|0,r=(r=r+Math.imul(T,le)|0)+Math.imul(w,fe)|0,i=i+Math.imul(w,le)|0;var Me=(u+(a=a+Math.imul(y,he)|0)|0)+((8191&(r=(r=r+Math.imul(y,me)|0)+Math.imul(g,he)|0))<<13)|0;u=((i=i+Math.imul(g,me)|0)+(r>>>13)|0)+(Me>>>26)|0,Me&=67108863,a=Math.imul(F,K),r=(r=Math.imul(F,Q))+Math.imul(B,K)|0,i=Math.imul(B,Q),a=a+Math.imul(k,J)|0,r=(r=r+Math.imul(k,ee)|0)+Math.imul(L,J)|0,i=i+Math.imul(L,ee)|0,a=a+Math.imul(P,ne)|0,r=(r=r+Math.imul(P,ae)|0)+Math.imul(D,ne)|0,i=i+Math.imul(D,ae)|0,a=a+Math.imul(C,ie)|0,r=(r=r+Math.imul(C,se)|0)+Math.imul(O,ie)|0,i=i+Math.imul(O,se)|0,a=a+Math.imul(_,de)|0,r=(r=r+Math.imul(_,ue)|0)+Math.imul(M,de)|0,i=i+Math.imul(M,ue)|0,a=a+Math.imul(R,fe)|0,r=(r=r+Math.imul(R,le)|0)+Math.imul(I,fe)|0,i=i+Math.imul(I,le)|0;var Ne=(u+(a=a+Math.imul(T,he)|0)|0)+((8191&(r=(r=r+Math.imul(T,me)|0)+Math.imul(w,he)|0))<<13)|0;u=((i=i+Math.imul(w,me)|0)+(r>>>13)|0)+(Ne>>>26)|0,Ne&=67108863,a=Math.imul(F,J),r=(r=Math.imul(F,ee))+Math.imul(B,J)|0,i=Math.imul(B,ee),a=a+Math.imul(k,ne)|0,r=(r=r+Math.imul(k,ae)|0)+Math.imul(L,ne)|0,i=i+Math.imul(L,ae)|0,a=a+Math.imul(P,ie)|0,r=(r=r+Math.imul(P,se)|0)+Math.imul(D,ie)|0,i=i+Math.imul(D,se)|0,a=a+Math.imul(C,de)|0,r=(r=r+Math.imul(C,ue)|0)+Math.imul(O,de)|0,i=i+Math.imul(O,ue)|0,a=a+Math.imul(_,fe)|0,r=(r=r+Math.imul(_,le)|0)+Math.imul(M,fe)|0,i=i+Math.imul(M,le)|0;var Ce=(u+(a=a+Math.imul(R,he)|0)|0)+((8191&(r=(r=r+Math.imul(R,me)|0)+Math.imul(I,he)|0))<<13)|0;u=((i=i+Math.imul(I,me)|0)+(r>>>13)|0)+(Ce>>>26)|0,Ce&=67108863,a=Math.imul(F,ne),r=(r=Math.imul(F,ae))+Math.imul(B,ne)|0,i=Math.imul(B,ae),a=a+Math.imul(k,ie)|0,r=(r=r+Math.imul(k,se)|0)+Math.imul(L,ie)|0,i=i+Math.imul(L,se)|0,a=a+Math.imul(P,de)|0,r=(r=r+Math.imul(P,ue)|0)+Math.imul(D,de)|0,i=i+Math.imul(D,ue)|0,a=a+Math.imul(C,fe)|0,r=(r=r+Math.imul(C,le)|0)+Math.imul(O,fe)|0,i=i+Math.imul(O,le)|0;var Oe=(u+(a=a+Math.imul(_,he)|0)|0)+((8191&(r=(r=r+Math.imul(_,me)|0)+Math.imul(M,he)|0))<<13)|0;u=((i=i+Math.imul(M,me)|0)+(r>>>13)|0)+(Oe>>>26)|0,Oe&=67108863,a=Math.imul(F,ie),r=(r=Math.imul(F,se))+Math.imul(B,ie)|0,i=Math.imul(B,se),a=a+Math.imul(k,de)|0,r=(r=r+Math.imul(k,ue)|0)+Math.imul(L,de)|0,i=i+Math.imul(L,ue)|0,a=a+Math.imul(P,fe)|0,r=(r=r+Math.imul(P,le)|0)+Math.imul(D,fe)|0,i=i+Math.imul(D,le)|0;var Se=(u+(a=a+Math.imul(C,he)|0)|0)+((8191&(r=(r=r+Math.imul(C,me)|0)+Math.imul(O,he)|0))<<13)|0;u=((i=i+Math.imul(O,me)|0)+(r>>>13)|0)+(Se>>>26)|0,Se&=67108863,a=Math.imul(F,de),r=(r=Math.imul(F,ue))+Math.imul(B,de)|0,i=Math.imul(B,ue),a=a+Math.imul(k,fe)|0,r=(r=r+Math.imul(k,le)|0)+Math.imul(L,fe)|0,i=i+Math.imul(L,le)|0;var Pe=(u+(a=a+Math.imul(P,he)|0)|0)+((8191&(r=(r=r+Math.imul(P,me)|0)+Math.imul(D,he)|0))<<13)|0;u=((i=i+Math.imul(D,me)|0)+(r>>>13)|0)+(Pe>>>26)|0,Pe&=67108863,a=Math.imul(F,fe),r=(r=Math.imul(F,le))+Math.imul(B,fe)|0,i=Math.imul(B,le);var De=(u+(a=a+Math.imul(k,he)|0)|0)+((8191&(r=(r=r+Math.imul(k,me)|0)+Math.imul(L,he)|0))<<13)|0;u=((i=i+Math.imul(L,me)|0)+(r>>>13)|0)+(De>>>26)|0,De&=67108863;var xe=(u+(a=Math.imul(F,he))|0)+((8191&(r=(r=Math.imul(F,me))+Math.imul(B,he)|0))<<13)|0;return u=((i=Math.imul(B,me))+(r>>>13)|0)+(xe>>>26)|0,xe&=67108863,d[0]=be,d[1]=ye,d[2]=ge,d[3]=Ee,d[4]=Te,d[5]=we,d[6]=ve,d[7]=Re,d[8]=Ie,d[9]=Ae,d[10]=_e,d[11]=Me,d[12]=Ne,d[13]=Ce,d[14]=Oe,d[15]=Se,d[16]=Pe,d[17]=De,d[18]=xe,0!==u&&(d[19]=u,n.length++),n};function b(e,t,n){n.negative=t.negative^e.negative,n.length=e.length+t.length;for(var a=0,r=0,i=0;i<n.length-1;i++){var s=r;r=0;for(var o=67108863&a,d=Math.min(i,t.length-1),u=Math.max(0,i-e.length+1);u<=d;u++){var c=i-u,f=(0|e.words[c])*(0|t.words[u]),l=67108863&f;o=67108863&(l=l+o|0),r+=(s=(s=s+(f/67108864|0)|0)+(l>>>26)|0)>>>26,s&=67108863}n.words[i]=o,a=s,s=r}return 0!==a?n.words[i]=a:n.length--,n._strip()}function y(e,t,n){return b(e,t,n)}Math.imul||(m=h),r.prototype.mulTo=function(e,t){var n=this.length+e.length;return 10===this.length&&10===e.length?m(this,e,t):n<63?h(this,e,t):n<1024?b(this,e,t):y(this,e,t)},r.prototype.mul=function(e){var t=new r(null);return t.words=new Array(this.length+e.length),this.mulTo(e,t)},r.prototype.mulf=function(e){var t=new r(null);return t.words=new Array(this.length+e.length),y(this,e,t)},r.prototype.imul=function(e){return this.clone().mulTo(e,this)},r.prototype.imuln=function(e){var t=e<0;t&&(e=-e),n("number"==typeof e),n(e<67108864);for(var a=0,r=0;r<this.length;r++){var i=(0|this.words[r])*e,s=(67108863&i)+(67108863&a);a>>=26,a+=i/67108864|0,a+=s>>>26,this.words[r]=67108863&s}return 0!==a&&(this.words[r]=a,this.length++),t?this.ineg():this},r.prototype.muln=function(e){return this.clone().imuln(e)},r.prototype.sqr=function(){return this.mul(this)},r.prototype.isqr=function(){return this.imul(this.clone())},r.prototype.pow=function(e){var t=function(e){for(var t=new Array(e.bitLength()),n=0;n<t.length;n++){var a=n/26|0,r=n%26;t[n]=e.words[a]>>>r&1}return t}(e);if(0===t.length)return new r(1);for(var n=this,a=0;a<t.length&&0===t[a];a++,n=n.sqr());if(++a<t.length)for(var i=n.sqr();a<t.length;a++,i=i.sqr())0!==t[a]&&(n=n.mul(i));return n},r.prototype.iushln=function(e){n("number"==typeof e&&e>=0);var t,a=e%26,r=(e-a)/26,i=67108863>>>26-a<<26-a;if(0!==a){var s=0;for(t=0;t<this.length;t++){var o=this.words[t]&i,d=(0|this.words[t])-o<<a;this.words[t]=d|s,s=o>>>26-a}s&&(this.words[t]=s,this.length++)}if(0!==r){for(t=this.length-1;t>=0;t--)this.words[t+r]=this.words[t];for(t=0;t<r;t++)this.words[t]=0;this.length+=r}return this._strip()},r.prototype.ishln=function(e){return n(0===this.negative),this.iushln(e)},r.prototype.iushrn=function(e,t,a){var r;n("number"==typeof e&&e>=0),r=t?(t-t%26)/26:0;var i=e%26,s=Math.min((e-i)/26,this.length),o=67108863^67108863>>>i<<i,d=a;if(r-=s,r=Math.max(0,r),d){for(var u=0;u<s;u++)d.words[u]=this.words[u];d.length=s}if(0===s);else if(this.length>s)for(this.length-=s,u=0;u<this.length;u++)this.words[u]=this.words[u+s];else this.words[0]=0,this.length=1;var c=0;for(u=this.length-1;u>=0&&(0!==c||u>=r);u--){var f=0|this.words[u];this.words[u]=c<<26-i|f>>>i,c=f&o}return d&&0!==c&&(d.words[d.length++]=c),0===this.length&&(this.words[0]=0,this.length=1),this._strip()},r.prototype.ishrn=function(e,t,a){return n(0===this.negative),this.iushrn(e,t,a)},r.prototype.shln=function(e){return this.clone().ishln(e)},r.prototype.ushln=function(e){return this.clone().iushln(e)},r.prototype.shrn=function(e){return this.clone().ishrn(e)},r.prototype.ushrn=function(e){return this.clone().iushrn(e)},r.prototype.testn=function(e){n("number"==typeof e&&e>=0);var t=e%26,a=(e-t)/26,r=1<<t;return!(this.length<=a||!(this.words[a]&r))},r.prototype.imaskn=function(e){n("number"==typeof e&&e>=0);var t=e%26,a=(e-t)/26;if(n(0===this.negative,"imaskn works only with positive numbers"),this.length<=a)return this;if(0!==t&&a++,this.length=Math.min(a,this.length),0!==t){var r=67108863^67108863>>>t<<t;this.words[this.length-1]&=r}return this._strip()},r.prototype.maskn=function(e){return this.clone().imaskn(e)},r.prototype.iaddn=function(e){return n("number"==typeof e),n(e<67108864),e<0?this.isubn(-e):0!==this.negative?1===this.length&&(0|this.words[0])<=e?(this.words[0]=e-(0|this.words[0]),this.negative=0,this):(this.negative=0,this.isubn(e),this.negative=1,this):this._iaddn(e)},r.prototype._iaddn=function(e){this.words[0]+=e;for(var t=0;t<this.length&&this.words[t]>=67108864;t++)this.words[t]-=67108864,t===this.length-1?this.words[t+1]=1:this.words[t+1]++;return this.length=Math.max(this.length,t+1),this},r.prototype.isubn=function(e){if(n("number"==typeof e),n(e<67108864),e<0)return this.iaddn(-e);if(0!==this.negative)return this.negative=0,this.iaddn(e),this.negative=1,this;if(this.words[0]-=e,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var t=0;t<this.length&&this.words[t]<0;t++)this.words[t]+=67108864,this.words[t+1]-=1;return this._strip()},r.prototype.addn=function(e){return this.clone().iaddn(e)},r.prototype.subn=function(e){return this.clone().isubn(e)},r.prototype.iabs=function(){return this.negative=0,this},r.prototype.abs=function(){return this.clone().iabs()},r.prototype._ishlnsubmul=function(e,t,a){var r,i,s=e.length+a;this._expand(s);var o=0;for(r=0;r<e.length;r++){i=(0|this.words[r+a])+o;var d=(0|e.words[r])*t;o=((i-=67108863&d)>>26)-(d/67108864|0),this.words[r+a]=67108863&i}for(;r<this.length-a;r++)o=(i=(0|this.words[r+a])+o)>>26,this.words[r+a]=67108863&i;if(0===o)return this._strip();for(n(-1===o),o=0,r=0;r<this.length;r++)o=(i=-(0|this.words[r])+o)>>26,this.words[r]=67108863&i;return this.negative=1,this._strip()},r.prototype._wordDiv=function(e,t){var n=(this.length,e.length),a=this.clone(),i=e,s=0|i.words[i.length-1];0!=(n=26-this._countBits(s))&&(i=i.ushln(n),a.iushln(n),s=0|i.words[i.length-1]);var o,d=a.length-i.length;if("mod"!==t){(o=new r(null)).length=d+1,o.words=new Array(o.length);for(var u=0;u<o.length;u++)o.words[u]=0}var c=a.clone()._ishlnsubmul(i,1,d);0===c.negative&&(a=c,o&&(o.words[d]=1));for(var f=d-1;f>=0;f--){var l=67108864*(0|a.words[i.length+f])+(0|a.words[i.length+f-1]);for(l=Math.min(l/s|0,67108863),a._ishlnsubmul(i,l,f);0!==a.negative;)l--,a.negative=0,a._ishlnsubmul(i,1,f),a.isZero()||(a.negative^=1);o&&(o.words[f]=l)}return o&&o._strip(),a._strip(),"div"!==t&&0!==n&&a.iushrn(n),{div:o||null,mod:a}},r.prototype.divmod=function(e,t,a){return n(!e.isZero()),this.isZero()?{div:new r(0),mod:new r(0)}:0!==this.negative&&0===e.negative?(o=this.neg().divmod(e,t),"mod"!==t&&(i=o.div.neg()),"div"!==t&&(s=o.mod.neg(),a&&0!==s.negative&&s.iadd(e)),{div:i,mod:s}):0===this.negative&&0!==e.negative?(o=this.divmod(e.neg(),t),"mod"!==t&&(i=o.div.neg()),{div:i,mod:o.mod}):0!=(this.negative&e.negative)?(o=this.neg().divmod(e.neg(),t),"div"!==t&&(s=o.mod.neg(),a&&0!==s.negative&&s.isub(e)),{div:o.div,mod:s}):e.length>this.length||this.cmp(e)<0?{div:new r(0),mod:this}:1===e.length?"div"===t?{div:this.divn(e.words[0]),mod:null}:"mod"===t?{div:null,mod:new r(this.modrn(e.words[0]))}:{div:this.divn(e.words[0]),mod:new r(this.modrn(e.words[0]))}:this._wordDiv(e,t);var i,s,o},r.prototype.div=function(e){return this.divmod(e,"div",!1).div},r.prototype.mod=function(e){return this.divmod(e,"mod",!1).mod},r.prototype.umod=function(e){return this.divmod(e,"mod",!0).mod},r.prototype.divRound=function(e){var t=this.divmod(e);if(t.mod.isZero())return t.div;var n=0!==t.div.negative?t.mod.isub(e):t.mod,a=e.ushrn(1),r=e.andln(1),i=n.cmp(a);return i<0||1===r&&0===i?t.div:0!==t.div.negative?t.div.isubn(1):t.div.iaddn(1)},r.prototype.modrn=function(e){var t=e<0;t&&(e=-e),n(e<=67108863);for(var a=(1<<26)%e,r=0,i=this.length-1;i>=0;i--)r=(a*r+(0|this.words[i]))%e;return t?-r:r},r.prototype.modn=function(e){return this.modrn(e)},r.prototype.idivn=function(e){var t=e<0;t&&(e=-e),n(e<=67108863);for(var a=0,r=this.length-1;r>=0;r--){var i=(0|this.words[r])+67108864*a;this.words[r]=i/e|0,a=i%e}return this._strip(),t?this.ineg():this},r.prototype.divn=function(e){return this.clone().idivn(e)},r.prototype.egcd=function(e){n(0===e.negative),n(!e.isZero());var t=this,a=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var i=new r(1),s=new r(0),o=new r(0),d=new r(1),u=0;t.isEven()&&a.isEven();)t.iushrn(1),a.iushrn(1),++u;for(var c=a.clone(),f=t.clone();!t.isZero();){for(var l=0,p=1;0==(t.words[0]&p)&&l<26;++l,p<<=1);if(l>0)for(t.iushrn(l);l-- >0;)(i.isOdd()||s.isOdd())&&(i.iadd(c),s.isub(f)),i.iushrn(1),s.iushrn(1);for(var h=0,m=1;0==(a.words[0]&m)&&h<26;++h,m<<=1);if(h>0)for(a.iushrn(h);h-- >0;)(o.isOdd()||d.isOdd())&&(o.iadd(c),d.isub(f)),o.iushrn(1),d.iushrn(1);t.cmp(a)>=0?(t.isub(a),i.isub(o),s.isub(d)):(a.isub(t),o.isub(i),d.isub(s))}return{a:o,b:d,gcd:a.iushln(u)}},r.prototype._invmp=function(e){n(0===e.negative),n(!e.isZero());var t=this,a=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var i,s=new r(1),o=new r(0),d=a.clone();t.cmpn(1)>0&&a.cmpn(1)>0;){for(var u=0,c=1;0==(t.words[0]&c)&&u<26;++u,c<<=1);if(u>0)for(t.iushrn(u);u-- >0;)s.isOdd()&&s.iadd(d),s.iushrn(1);for(var f=0,l=1;0==(a.words[0]&l)&&f<26;++f,l<<=1);if(f>0)for(a.iushrn(f);f-- >0;)o.isOdd()&&o.iadd(d),o.iushrn(1);t.cmp(a)>=0?(t.isub(a),s.isub(o)):(a.isub(t),o.isub(s))}return(i=0===t.cmpn(1)?s:o).cmpn(0)<0&&i.iadd(e),i},r.prototype.gcd=function(e){if(this.isZero())return e.abs();if(e.isZero())return this.abs();var t=this.clone(),n=e.clone();t.negative=0,n.negative=0;for(var a=0;t.isEven()&&n.isEven();a++)t.iushrn(1),n.iushrn(1);for(;;){for(;t.isEven();)t.iushrn(1);for(;n.isEven();)n.iushrn(1);var r=t.cmp(n);if(r<0){var i=t;t=n,n=i}else if(0===r||0===n.cmpn(1))break;t.isub(n)}return n.iushln(a)},r.prototype.invm=function(e){return this.egcd(e).a.umod(e)},r.prototype.isEven=function(){return 0==(1&this.words[0])},r.prototype.isOdd=function(){return 1==(1&this.words[0])},r.prototype.andln=function(e){return this.words[0]&e},r.prototype.bincn=function(e){n("number"==typeof e);var t=e%26,a=(e-t)/26,r=1<<t;if(this.length<=a)return this._expand(a+1),this.words[a]|=r,this;for(var i=r,s=a;0!==i&&s<this.length;s++){var o=0|this.words[s];i=(o+=i)>>>26,o&=67108863,this.words[s]=o}return 0!==i&&(this.words[s]=i,this.length++),this},r.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},r.prototype.cmpn=function(e){var t,a=e<0;if(0!==this.negative&&!a)return-1;if(0===this.negative&&a)return 1;if(this._strip(),this.length>1)t=1;else{a&&(e=-e),n(e<=67108863,"Number is too big");var r=0|this.words[0];t=r===e?0:r<e?-1:1}return 0!==this.negative?0|-t:t},r.prototype.cmp=function(e){if(0!==this.negative&&0===e.negative)return-1;if(0===this.negative&&0!==e.negative)return 1;var t=this.ucmp(e);return 0!==this.negative?0|-t:t},r.prototype.ucmp=function(e){if(this.length>e.length)return 1;if(this.length<e.length)return-1;for(var t=0,n=this.length-1;n>=0;n--){var a=0|this.words[n],r=0|e.words[n];if(a!==r){a<r?t=-1:a>r&&(t=1);break}}return t},r.prototype.gtn=function(e){return 1===this.cmpn(e)},r.prototype.gt=function(e){return 1===this.cmp(e)},r.prototype.gten=function(e){return this.cmpn(e)>=0},r.prototype.gte=function(e){return this.cmp(e)>=0},r.prototype.ltn=function(e){return-1===this.cmpn(e)},r.prototype.lt=function(e){return-1===this.cmp(e)},r.prototype.lten=function(e){return this.cmpn(e)<=0},r.prototype.lte=function(e){return this.cmp(e)<=0},r.prototype.eqn=function(e){return 0===this.cmpn(e)},r.prototype.eq=function(e){return 0===this.cmp(e)},r.red=function(e){return new I(e)},r.prototype.toRed=function(e){return n(!this.red,"Already a number in reduction context"),n(0===this.negative,"red works only with positives"),e.convertTo(this)._forceRed(e)},r.prototype.fromRed=function(){return n(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},r.prototype._forceRed=function(e){return this.red=e,this},r.prototype.forceRed=function(e){return n(!this.red,"Already a number in reduction context"),this._forceRed(e)},r.prototype.redAdd=function(e){return n(this.red,"redAdd works only with red numbers"),this.red.add(this,e)},r.prototype.redIAdd=function(e){return n(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,e)},r.prototype.redSub=function(e){return n(this.red,"redSub works only with red numbers"),this.red.sub(this,e)},r.prototype.redISub=function(e){return n(this.red,"redISub works only with red numbers"),this.red.isub(this,e)},r.prototype.redShl=function(e){return n(this.red,"redShl works only with red numbers"),this.red.shl(this,e)},r.prototype.redMul=function(e){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.mul(this,e)},r.prototype.redIMul=function(e){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.imul(this,e)},r.prototype.redSqr=function(){return n(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},r.prototype.redISqr=function(){return n(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},r.prototype.redSqrt=function(){return n(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},r.prototype.redInvm=function(){return n(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},r.prototype.redNeg=function(){return n(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},r.prototype.redPow=function(e){return n(this.red&&!e.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,e)};var g={k256:null,p224:null,p192:null,p25519:null};function E(e,t){this.name=e,this.p=new r(t,16),this.n=this.p.bitLength(),this.k=new r(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function T(){E.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function w(){E.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function v(){E.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function R(){E.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function I(e){if("string"==typeof e){var t=r._prime(e);this.m=t.p,this.prime=t}else n(e.gtn(1),"modulus must be greater than 1"),this.m=e,this.prime=null}function A(e){I.call(this,e),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new r(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)}E.prototype._tmp=function(){var e=new r(null);return e.words=new Array(Math.ceil(this.n/13)),e},E.prototype.ireduce=function(e){var t,n=e;do{this.split(n,this.tmp),t=(n=(n=this.imulK(n)).iadd(this.tmp)).bitLength()}while(t>this.n);var a=t<this.n?-1:n.ucmp(this.p);return 0===a?(n.words[0]=0,n.length=1):a>0?n.isub(this.p):void 0!==n.strip?n.strip():n._strip(),n},E.prototype.split=function(e,t){e.iushrn(this.n,0,t)},E.prototype.imulK=function(e){return e.imul(this.k)},a(T,E),T.prototype.split=function(e,t){for(var n=4194303,a=Math.min(e.length,9),r=0;r<a;r++)t.words[r]=e.words[r];if(t.length=a,e.length<=9)return e.words[0]=0,void(e.length=1);var i=e.words[9];for(t.words[t.length++]=i&n,r=10;r<e.length;r++){var s=0|e.words[r];e.words[r-10]=(s&n)<<4|i>>>22,i=s}i>>>=22,e.words[r-10]=i,0===i&&e.length>10?e.length-=10:e.length-=9},T.prototype.imulK=function(e){e.words[e.length]=0,e.words[e.length+1]=0,e.length+=2;for(var t=0,n=0;n<e.length;n++){var a=0|e.words[n];t+=977*a,e.words[n]=67108863&t,t=64*a+(t/67108864|0)}return 0===e.words[e.length-1]&&(e.length--,0===e.words[e.length-1]&&e.length--),e},a(w,E),a(v,E),a(R,E),R.prototype.imulK=function(e){for(var t=0,n=0;n<e.length;n++){var a=19*(0|e.words[n])+t,r=67108863&a;a>>>=26,e.words[n]=r,t=a}return 0!==t&&(e.words[e.length++]=t),e},r._prime=function(e){if(g[e])return g[e];var t;if("k256"===e)t=new T;else if("p224"===e)t=new w;else if("p192"===e)t=new v;else{if("p25519"!==e)throw new Error("Unknown prime "+e);t=new R}return g[e]=t,t},I.prototype._verify1=function(e){n(0===e.negative,"red works only with positives"),n(e.red,"red works only with red numbers")},I.prototype._verify2=function(e,t){n(0==(e.negative|t.negative),"red works only with positives"),n(e.red&&e.red===t.red,"red works only with red numbers")},I.prototype.imod=function(e){return this.prime?this.prime.ireduce(e)._forceRed(this):(u(e,e.umod(this.m)._forceRed(this)),e)},I.prototype.neg=function(e){return e.isZero()?e.clone():this.m.sub(e)._forceRed(this)},I.prototype.add=function(e,t){this._verify2(e,t);var n=e.add(t);return n.cmp(this.m)>=0&&n.isub(this.m),n._forceRed(this)},I.prototype.iadd=function(e,t){this._verify2(e,t);var n=e.iadd(t);return n.cmp(this.m)>=0&&n.isub(this.m),n},I.prototype.sub=function(e,t){this._verify2(e,t);var n=e.sub(t);return n.cmpn(0)<0&&n.iadd(this.m),n._forceRed(this)},I.prototype.isub=function(e,t){this._verify2(e,t);var n=e.isub(t);return n.cmpn(0)<0&&n.iadd(this.m),n},I.prototype.shl=function(e,t){return this._verify1(e),this.imod(e.ushln(t))},I.prototype.imul=function(e,t){return this._verify2(e,t),this.imod(e.imul(t))},I.prototype.mul=function(e,t){return this._verify2(e,t),this.imod(e.mul(t))},I.prototype.isqr=function(e){return this.imul(e,e.clone())},I.prototype.sqr=function(e){return this.mul(e,e)},I.prototype.sqrt=function(e){if(e.isZero())return e.clone();var t=this.m.andln(3);if(n(t%2==1),3===t){var a=this.m.add(new r(1)).iushrn(2);return this.pow(e,a)}for(var i=this.m.subn(1),s=0;!i.isZero()&&0===i.andln(1);)s++,i.iushrn(1);n(!i.isZero());var o=new r(1).toRed(this),d=o.redNeg(),u=this.m.subn(1).iushrn(1),c=this.m.bitLength();for(c=new r(2*c*c).toRed(this);0!==this.pow(c,u).cmp(d);)c.redIAdd(d);for(var f=this.pow(c,i),l=this.pow(e,i.addn(1).iushrn(1)),p=this.pow(e,i),h=s;0!==p.cmp(o);){for(var m=p,b=0;0!==m.cmp(o);b++)m=m.redSqr();n(b<h);var y=this.pow(f,new r(1).iushln(h-b-1));l=l.redMul(y),f=y.redSqr(),p=p.redMul(f),h=b}return l},I.prototype.invm=function(e){var t=e._invmp(this.m);return 0!==t.negative?(t.negative=0,this.imod(t).redNeg()):this.imod(t)},I.prototype.pow=function(e,t){if(t.isZero())return new r(1).toRed(this);if(0===t.cmpn(1))return e.clone();var n=new Array(16);n[0]=new r(1).toRed(this),n[1]=e;for(var a=2;a<n.length;a++)n[a]=this.mul(n[a-1],e);var i=n[0],s=0,o=0,d=t.bitLength()%26;for(0===d&&(d=26),a=t.length-1;a>=0;a--){for(var u=t.words[a],c=d-1;c>=0;c--){var f=u>>c&1;i!==n[0]&&(i=this.sqr(i)),0!==f||0!==s?(s<<=1,s|=f,(4==++o||0===a&&0===c)&&(i=this.mul(i,n[s]),o=0,s=0)):o=0}d=26}return i},I.prototype.convertTo=function(e){var t=e.umod(this.m);return t===e?t.clone():t},I.prototype.convertFrom=function(e){var t=e.clone();return t.red=null,t},r.mont=function(e){return new A(e)},a(A,I),A.prototype.convertTo=function(e){return this.imod(e.ushln(this.shift))},A.prototype.convertFrom=function(e){var t=this.imod(e.mul(this.rinv));return t.red=null,t},A.prototype.imul=function(e,t){if(e.isZero()||t.isZero())return e.words[0]=0,e.length=1,e;var n=e.imul(t),a=n.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),r=n.isub(a).iushrn(this.shift),i=r;return r.cmp(this.m)>=0?i=r.isub(this.m):r.cmpn(0)<0&&(i=r.iadd(this.m)),i._forceRed(this)},A.prototype.mul=function(e,t){if(e.isZero()||t.isZero())return new r(0)._forceRed(this);var n=e.mul(t),a=n.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=n.isub(a).iushrn(this.shift),s=i;return i.cmp(this.m)>=0?s=i.isub(this.m):i.cmpn(0)<0&&(s=i.iadd(this.m)),s._forceRed(this)},A.prototype.invm=function(e){return this.imod(e._invmp(this.m).mul(this.r2))._forceRed(this)}}(It,wt);var _t=vt(It.exports);let Mt=!1,Nt=!1;const Ct={debug:1,default:2,info:2,warning:3,error:4,off:5};let Ot=Ct.default,St=null;const Pt=function(){try{const e=[];if(["NFD","NFC","NFKD","NFKC"].forEach((t=>{try{if("test"!=="test".normalize(t))throw new Error("bad normalize")}catch(n){e.push(t)}})),e.length)throw new Error("missing "+e.join(", "));if(String.fromCharCode(233).normalize("NFD")!==String.fromCharCode(101,769))throw new Error("broken implementation")}catch(e){return e.message}return null}();var Dt,xt;!function(e){e.DEBUG="DEBUG",e.INFO="INFO",e.WARNING="WARNING",e.ERROR="ERROR",e.OFF="OFF"}(Dt||(Dt={})),function(e){e.UNKNOWN_ERROR="UNKNOWN_ERROR",e.NOT_IMPLEMENTED="NOT_IMPLEMENTED",e.UNSUPPORTED_OPERATION="UNSUPPORTED_OPERATION",e.NETWORK_ERROR="NETWORK_ERROR",e.SERVER_ERROR="SERVER_ERROR",e.TIMEOUT="TIMEOUT",e.BUFFER_OVERRUN="BUFFER_OVERRUN",e.NUMERIC_FAULT="NUMERIC_FAULT",e.MISSING_NEW="MISSING_NEW",e.INVALID_ARGUMENT="INVALID_ARGUMENT",e.MISSING_ARGUMENT="MISSING_ARGUMENT",e.UNEXPECTED_ARGUMENT="UNEXPECTED_ARGUMENT",e.CALL_EXCEPTION="CALL_EXCEPTION",e.INSUFFICIENT_FUNDS="INSUFFICIENT_FUNDS",e.NONCE_EXPIRED="NONCE_EXPIRED",e.REPLACEMENT_UNDERPRICED="REPLACEMENT_UNDERPRICED",e.UNPREDICTABLE_GAS_LIMIT="UNPREDICTABLE_GAS_LIMIT",e.TRANSACTION_REPLACED="TRANSACTION_REPLACED",e.ACTION_REJECTED="ACTION_REJECTED"}(xt||(xt={}));const kt="0123456789abcdef";class Lt{constructor(e){Object.defineProperty(this,"version",{enumerable:!0,value:e,writable:!1})}_log(e,t){const n=e.toLowerCase();null==Ct[n]&&this.throwArgumentError("invalid log level name","logLevel",e),Ot>Ct[n]||console.log.apply(console,t)}debug(...e){this._log(Lt.levels.DEBUG,e)}info(...e){this._log(Lt.levels.INFO,e)}warn(...e){this._log(Lt.levels.WARNING,e)}makeError(e,t,n){if(Nt)return this.makeError("censored error",t,{});t||(t=Lt.errors.UNKNOWN_ERROR),n||(n={});const a=[];Object.keys(n).forEach((e=>{const t=n[e];try{if(t instanceof Uint8Array){let n="";for(let e=0;e<t.length;e++)n+=kt[t[e]>>4],n+=kt[15&t[e]];a.push(e+"=Uint8Array(0x"+n+")")}else a.push(e+"="+JSON.stringify(t))}catch(t){a.push(e+"="+JSON.stringify(n[e].toString()))}})),a.push(`code=${t}`),a.push(`version=${this.version}`);const r=e;let i="";switch(t){case xt.NUMERIC_FAULT:{i="NUMERIC_FAULT";const t=e;switch(t){case"overflow":case"underflow":case"division-by-zero":i+="-"+t;break;case"negative-power":case"negative-width":i+="-unsupported";break;case"unbound-bitwise-result":i+="-unbound-result"}break}case xt.CALL_EXCEPTION:case xt.INSUFFICIENT_FUNDS:case xt.MISSING_NEW:case xt.NONCE_EXPIRED:case xt.REPLACEMENT_UNDERPRICED:case xt.TRANSACTION_REPLACED:case xt.UNPREDICTABLE_GAS_LIMIT:i=t}i&&(e+=" [ See: https://links.ethers.org/v5-errors-"+i+" ]"),a.length&&(e+=" ("+a.join(", ")+")");const s=new Error(e);return s.reason=r,s.code=t,Object.keys(n).forEach((function(e){s[e]=n[e]})),s}throwError(e,t,n){throw this.makeError(e,t,n)}throwArgumentError(e,t,n){return this.throwError(e,Lt.errors.INVALID_ARGUMENT,{argument:t,value:n})}assert(e,t,n,a){e||this.throwError(t,n,a)}assertArgument(e,t,n,a){e||this.throwArgumentError(t,n,a)}checkNormalize(e){Pt&&this.throwError("platform missing String.prototype.normalize",Lt.errors.UNSUPPORTED_OPERATION,{operation:"String.prototype.normalize",form:Pt})}checkSafeUint53(e,t){"number"==typeof e&&(null==t&&(t="value not safe"),(e<0||e>=9007199254740991)&&this.throwError(t,Lt.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"out-of-safe-range",value:e}),e%1&&this.throwError(t,Lt.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"non-integer",value:e}))}checkArgumentCount(e,t,n){n=n?": "+n:"",e<t&&this.throwError("missing argument"+n,Lt.errors.MISSING_ARGUMENT,{count:e,expectedCount:t}),e>t&&this.throwError("too many arguments"+n,Lt.errors.UNEXPECTED_ARGUMENT,{count:e,expectedCount:t})}checkNew(e,t){e!==Object&&null!=e||this.throwError("missing new",Lt.errors.MISSING_NEW,{name:t.name})}checkAbstract(e,t){e===t?this.throwError("cannot instantiate abstract class "+JSON.stringify(t.name)+" directly; use a sub-class",Lt.errors.UNSUPPORTED_OPERATION,{name:e.name,operation:"new"}):e!==Object&&null!=e||this.throwError("missing new",Lt.errors.MISSING_NEW,{name:t.name})}static globalLogger(){return St||(St=new Lt("logger/5.7.0")),St}static setCensorship(e,t){if(!e&&t&&this.globalLogger().throwError("cannot permanently disable censorship",Lt.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"}),Mt){if(!e)return;this.globalLogger().throwError("error censorship permanent",Lt.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"})}Nt=!!e,Mt=!!t}static setLogLevel(e){const t=Ct[e.toLowerCase()];null!=t?Ot=t:Lt.globalLogger().warn("invalid log level - "+e)}static from(e){return new Lt(e)}}Lt.errors=xt,Lt.levels=Dt;const Ut=new Lt("bytes/5.7.0");function Ft(e){return!!e.toHexString}function Bt(e){return e.slice||(e.slice=function(){const t=Array.prototype.slice.call(arguments);return Bt(new Uint8Array(Array.prototype.slice.apply(e,t)))}),e}function Gt(e){return"number"==typeof e&&e==e&&e%1==0}function jt(e){if(null==e)return!1;if(e.constructor===Uint8Array)return!0;if("string"==typeof e)return!1;if(!Gt(e.length)||e.length<0)return!1;for(let t=0;t<e.length;t++){const n=e[t];if(!Gt(n)||n<0||n>=256)return!1}return!0}function Wt(e,t){if(t||(t={}),"number"==typeof e){Ut.checkSafeUint53(e,"invalid arrayify value");const t=[];for(;e;)t.unshift(255&e),e=parseInt(String(e/256));return 0===t.length&&t.push(0),Bt(new Uint8Array(t))}if(t.allowMissingPrefix&&"string"==typeof e&&"0x"!==e.substring(0,2)&&(e="0x"+e),Ft(e)&&(e=e.toHexString()),Ht(e)){let n=e.substring(2);n.length%2&&("left"===t.hexPad?n="0"+n:"right"===t.hexPad?n+="0":Ut.throwArgumentError("hex data is odd-length","value",e));const a=[];for(let e=0;e<n.length;e+=2)a.push(parseInt(n.substring(e,e+2),16));return Bt(new Uint8Array(a))}return jt(e)?Bt(new Uint8Array(e)):Ut.throwArgumentError("invalid arrayify value","value",e)}function Vt(e){const t=e.map((e=>Wt(e))),n=t.reduce(((e,t)=>e+t.length),0),a=new Uint8Array(n);return t.reduce(((e,t)=>(a.set(t,e),e+t.length)),0),Bt(a)}function zt(e,t){(e=Wt(e)).length>t&&Ut.throwArgumentError("value out of range","value",arguments[0]);const n=new Uint8Array(t);return n.set(e,t-e.length),Bt(n)}function Ht(e,t){return!("string"!=typeof e||!e.match(/^0x[0-9A-Fa-f]*$/))&&(!t||e.length===2+2*t)}const qt="0123456789abcdef";function Xt(e,t){if(t||(t={}),"number"==typeof e){Ut.checkSafeUint53(e,"invalid hexlify value");let t="";for(;e;)t=qt[15&e]+t,e=Math.floor(e/16);return t.length?(t.length%2&&(t="0"+t),"0x"+t):"0x00"}if("bigint"==typeof e)return(e=e.toString(16)).length%2?"0x0"+e:"0x"+e;if(t.allowMissingPrefix&&"string"==typeof e&&"0x"!==e.substring(0,2)&&(e="0x"+e),Ft(e))return e.toHexString();if(Ht(e))return e.length%2&&("left"===t.hexPad?e="0x0"+e.substring(2):"right"===t.hexPad?e+="0":Ut.throwArgumentError("hex data is odd-length","value",e)),e.toLowerCase();if(jt(e)){let t="0x";for(let n=0;n<e.length;n++){let a=e[n];t+=qt[(240&a)>>4]+qt[15&a]}return t}return Ut.throwArgumentError("invalid hexlify value","value",e)}function $t(e,t,n){return"string"!=typeof e?e=Xt(e):(!Ht(e)||e.length%2)&&Ut.throwArgumentError("invalid hexData","value",e),t=2+2*t,null!=n?"0x"+e.substring(t,2+2*n):"0x"+e.substring(t)}function Zt(e){const t=function(e){"string"!=typeof e&&(e=Xt(e));Ht(e)||Ut.throwArgumentError("invalid hex string","value",e);e=e.substring(2);let t=0;for(;t<e.length&&"0"===e[t];)t++;return"0x"+e.substring(t)}(Xt(e,{hexPad:"left"}));return"0x"===t?"0x0":t}function Kt(e,t){for("string"!=typeof e?e=Xt(e):Ht(e)||Ut.throwArgumentError("invalid hex string","value",e),e.length>2*t+2&&Ut.throwArgumentError("value out of range","value",arguments[1]);e.length<2*t+2;)e="0x0"+e.substring(2);return e}var Qt=_t.BN;const Yt=new Lt("bignumber/5.7.0"),Jt={},en=9007199254740991;let tn=!1;class nn{constructor(e,t){e!==Jt&&Yt.throwError("cannot call constructor directly; use BigNumber.from",Lt.errors.UNSUPPORTED_OPERATION,{operation:"new (BigNumber)"}),this._hex=t,this._isBigNumber=!0,Object.freeze(this)}fromTwos(e){return rn(sn(this).fromTwos(e))}toTwos(e){return rn(sn(this).toTwos(e))}abs(){return"-"===this._hex[0]?nn.from(this._hex.substring(1)):this}add(e){return rn(sn(this).add(sn(e)))}sub(e){return rn(sn(this).sub(sn(e)))}div(e){return nn.from(e).isZero()&&on("division-by-zero","div"),rn(sn(this).div(sn(e)))}mul(e){return rn(sn(this).mul(sn(e)))}mod(e){const t=sn(e);return t.isNeg()&&on("division-by-zero","mod"),rn(sn(this).umod(t))}pow(e){const t=sn(e);return t.isNeg()&&on("negative-power","pow"),rn(sn(this).pow(t))}and(e){const t=sn(e);return(this.isNegative()||t.isNeg())&&on("unbound-bitwise-result","and"),rn(sn(this).and(t))}or(e){const t=sn(e);return(this.isNegative()||t.isNeg())&&on("unbound-bitwise-result","or"),rn(sn(this).or(t))}xor(e){const t=sn(e);return(this.isNegative()||t.isNeg())&&on("unbound-bitwise-result","xor"),rn(sn(this).xor(t))}mask(e){return(this.isNegative()||e<0)&&on("negative-width","mask"),rn(sn(this).maskn(e))}shl(e){return(this.isNegative()||e<0)&&on("negative-width","shl"),rn(sn(this).shln(e))}shr(e){return(this.isNegative()||e<0)&&on("negative-width","shr"),rn(sn(this).shrn(e))}eq(e){return sn(this).eq(sn(e))}lt(e){return sn(this).lt(sn(e))}lte(e){return sn(this).lte(sn(e))}gt(e){return sn(this).gt(sn(e))}gte(e){return sn(this).gte(sn(e))}isNegative(){return"-"===this._hex[0]}isZero(){return sn(this).isZero()}toNumber(){try{return sn(this).toNumber()}catch(e){on("overflow","toNumber",this.toString())}return null}toBigInt(){try{return BigInt(this.toString())}catch(e){}return Yt.throwError("this platform does not support BigInt",Lt.errors.UNSUPPORTED_OPERATION,{value:this.toString()})}toString(){return arguments.length>0&&(10===arguments[0]?tn||(tn=!0,Yt.warn("BigNumber.toString does not accept any parameters; base-10 is assumed")):16===arguments[0]?Yt.throwError("BigNumber.toString does not accept any parameters; use bigNumber.toHexString()",Lt.errors.UNEXPECTED_ARGUMENT,{}):Yt.throwError("BigNumber.toString does not accept parameters",Lt.errors.UNEXPECTED_ARGUMENT,{})),sn(this).toString(10)}toHexString(){return this._hex}toJSON(e){return{type:"BigNumber",hex:this.toHexString()}}static from(e){if(e instanceof nn)return e;if("string"==typeof e)return e.match(/^-?0x[0-9a-f]+$/i)?new nn(Jt,an(e)):e.match(/^-?[0-9]+$/)?new nn(Jt,an(new Qt(e))):Yt.throwArgumentError("invalid BigNumber string","value",e);if("number"==typeof e)return e%1&&on("underflow","BigNumber.from",e),(e>=en||e<=-en)&&on("overflow","BigNumber.from",e),nn.from(String(e));const t=e;if("bigint"==typeof t)return nn.from(t.toString());if(jt(t))return nn.from(Xt(t));if(t)if(t.toHexString){const e=t.toHexString();if("string"==typeof e)return nn.from(e)}else{let e=t._hex;if(null==e&&"BigNumber"===t.type&&(e=t.hex),"string"==typeof e&&(Ht(e)||"-"===e[0]&&Ht(e.substring(1))))return nn.from(e)}return Yt.throwArgumentError("invalid BigNumber value","value",e)}static isBigNumber(e){return!(!e||!e._isBigNumber)}}function an(e){if("string"!=typeof e)return an(e.toString(16));if("-"===e[0])return"-"===(e=e.substring(1))[0]&&Yt.throwArgumentError("invalid hex","value",e),"0x00"===(e=an(e))?e:"-"+e;if("0x"!==e.substring(0,2)&&(e="0x"+e),"0x"===e)return"0x00";for(e.length%2&&(e="0x0"+e.substring(2));e.length>4&&"0x00"===e.substring(0,4);)e="0x"+e.substring(4);return e}function rn(e){return nn.from(an(e))}function sn(e){const t=nn.from(e).toHexString();return"-"===t[0]?new Qt("-"+t.substring(3),16):new Qt(t.substring(2),16)}function on(e,t,n){const a={fault:e,operation:t};return null!=n&&(a.value=n),Yt.throwError(e,Lt.errors.NUMERIC_FAULT,a)}var dn=function(e,t,n,a){return new(n||(n=Promise))((function(r,i){function s(e){try{d(a.next(e))}catch(e){i(e)}}function o(e){try{d(a.throw(e))}catch(e){i(e)}}function d(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,o)}d((a=a.apply(e,t||[])).next())}))};const un=new Lt("properties/5.7.0");function cn(e,t,n){Object.defineProperty(e,t,{enumerable:!0,value:n,writable:!1})}function fn(e,t){for(let n=0;n<32;n++){if(e[t])return e[t];if(!e.prototype||"object"!=typeof e.prototype)break;e=Object.getPrototypeOf(e.prototype).constructor}return null}function ln(e){return dn(this,void 0,void 0,(function*(){const t=Object.keys(e).map((t=>{const n=e[t];return Promise.resolve(n).then((e=>({key:t,value:e})))}));return(yield Promise.all(t)).reduce(((e,t)=>(e[t.key]=t.value,e)),{})}))}function pn(e){const t={};for(const n in e)t[n]=e[n];return t}const hn={bigint:!0,boolean:!0,function:!0,number:!0,string:!0};function mn(e){if(null==e||hn[typeof e])return!0;if(Array.isArray(e)||"object"==typeof e){if(!Object.isFrozen(e))return!1;const t=Object.keys(e);for(let n=0;n<t.length;n++){let a=null;try{a=e[t[n]]}catch(e){continue}if(!mn(a))return!1}return!0}return un.throwArgumentError("Cannot deepCopy "+typeof e,"object",e)}function bn(e){if(mn(e))return e;if(Array.isArray(e))return Object.freeze(e.map((e=>yn(e))));if("object"==typeof e){const t={};for(const n in e){const a=e[n];void 0!==a&&cn(t,n,yn(a))}return t}return un.throwArgumentError("Cannot deepCopy "+typeof e,"object",e)}function yn(e){return bn(e)}class gn{constructor(e){for(const t in e)this[t]=yn(e[t])}}const En="abi/5.7.0",Tn=new Lt(En),wn={};let vn={calldata:!0,memory:!0,storage:!0},Rn={calldata:!0,memory:!0};function In(e,t){if("bytes"===e||"string"===e){if(vn[t])return!0}else if("address"===e){if("payable"===t)return!0}else if((e.indexOf("[")>=0||"tuple"===e)&&Rn[t])return!0;return(vn[t]||"payable"===t)&&Tn.throwArgumentError("invalid modifier","name",t),!1}function An(e,t){for(let n in t)cn(e,n,t[n])}const _n=Object.freeze({sighash:"sighash",minimal:"minimal",full:"full",json:"json"}),Mn=new RegExp(/^(.*)\[([0-9]*)\]$/);class Nn{constructor(e,t){e!==wn&&Tn.throwError("use fromString",Lt.errors.UNSUPPORTED_OPERATION,{operation:"new ParamType()"}),An(this,t);let n=this.type.match(Mn);An(this,n?{arrayLength:parseInt(n[2]||"-1"),arrayChildren:Nn.fromObject({type:n[1],components:this.components}),baseType:"array"}:{arrayLength:null,arrayChildren:null,baseType:null!=this.components?"tuple":this.type}),this._isParamType=!0,Object.freeze(this)}format(e){if(e||(e=_n.sighash),_n[e]||Tn.throwArgumentError("invalid format type","format",e),e===_n.json){let t={type:"tuple"===this.baseType?"tuple":this.type,name:this.name||void 0};return"boolean"==typeof this.indexed&&(t.indexed=this.indexed),this.components&&(t.components=this.components.map((t=>JSON.parse(t.format(e))))),JSON.stringify(t)}let t="";return"array"===this.baseType?(t+=this.arrayChildren.format(e),t+="["+(this.arrayLength<0?"":String(this.arrayLength))+"]"):"tuple"===this.baseType?(e!==_n.sighash&&(t+=this.type),t+="("+this.components.map((t=>t.format(e))).join(e===_n.full?", ":",")+")"):t+=this.type,e!==_n.sighash&&(!0===this.indexed&&(t+=" indexed"),e===_n.full&&this.name&&(t+=" "+this.name)),t}static from(e,t){return"string"==typeof e?Nn.fromString(e,t):Nn.fromObject(e)}static fromObject(e){return Nn.isParamType(e)?e:new Nn(wn,{name:e.name||null,type:Bn(e.type),indexed:null==e.indexed?null:!!e.indexed,components:e.components?e.components.map(Nn.fromObject):null})}static fromString(e,t){return n=function(e,t){let n=e;function a(t){Tn.throwArgumentError(`unexpected character at position ${t}`,"param",e)}function r(e){let n={type:"",name:"",parent:e,state:{allowType:!0}};return t&&(n.indexed=!1),n}e=e.replace(/\s/g," ");let i={type:"",name:"",state:{allowType:!0}},s=i;for(let n=0;n<e.length;n++){let i=e[n];switch(i){case"(":s.state.allowType&&""===s.type?s.type="tuple":s.state.allowParams||a(n),s.state.allowType=!1,s.type=Bn(s.type),s.components=[r(s)],s=s.components[0];break;case")":delete s.state,"indexed"===s.name&&(t||a(n),s.indexed=!0,s.name=""),In(s.type,s.name)&&(s.name=""),s.type=Bn(s.type);let e=s;s=s.parent,s||a(n),delete e.parent,s.state.allowParams=!1,s.state.allowName=!0,s.state.allowArray=!0;break;case",":delete s.state,"indexed"===s.name&&(t||a(n),s.indexed=!0,s.name=""),In(s.type,s.name)&&(s.name=""),s.type=Bn(s.type);let o=r(s.parent);s.parent.components.push(o),delete s.parent,s=o;break;case" ":s.state.allowType&&""!==s.type&&(s.type=Bn(s.type),delete s.state.allowType,s.state.allowName=!0,s.state.allowParams=!0),s.state.allowName&&""!==s.name&&("indexed"===s.name?(t||a(n),s.indexed&&a(n),s.indexed=!0,s.name=""):In(s.type,s.name)?s.name="":s.state.allowName=!1);break;case"[":s.state.allowArray||a(n),s.type+=i,s.state.allowArray=!1,s.state.allowName=!1,s.state.readArray=!0;break;case"]":s.state.readArray||a(n),s.type+=i,s.state.readArray=!1,s.state.allowArray=!0,s.state.allowName=!0;break;default:s.state.allowType?(s.type+=i,s.state.allowParams=!0,s.state.allowArray=!0):s.state.allowName?(s.name+=i,delete s.state.allowArray):s.state.readArray?s.type+=i:a(n)}}return s.parent&&Tn.throwArgumentError("unexpected eof","param",e),delete i.state,"indexed"===s.name?(t||a(n.length-7),s.indexed&&a(n.length-7),s.indexed=!0,s.name=""):In(s.type,s.name)&&(s.name=""),i.type=Bn(i.type),i}(e,!!t),Nn.fromObject({name:n.name,type:n.type,indexed:n.indexed,components:n.components});var n}static isParamType(e){return!(null==e||!e._isParamType)}}function Cn(e,t){return function(e){e=e.trim();let t=[],n="",a=0;for(let r=0;r<e.length;r++){let i=e[r];","===i&&0===a?(t.push(n),n=""):(n+=i,"("===i?a++:")"===i&&(a--,-1===a&&Tn.throwArgumentError("unbalanced parenthesis","value",e)))}n&&t.push(n);return t}(e).map((e=>Nn.fromString(e,t)))}class On{constructor(e,t){e!==wn&&Tn.throwError("use a static from method",Lt.errors.UNSUPPORTED_OPERATION,{operation:"new Fragment()"}),An(this,t),this._isFragment=!0,Object.freeze(this)}static from(e){return On.isFragment(e)?e:"string"==typeof e?On.fromString(e):On.fromObject(e)}static fromObject(e){if(On.isFragment(e))return e;switch(e.type){case"function":return Ln.fromObject(e);case"event":return Sn.fromObject(e);case"constructor":return kn.fromObject(e);case"error":return Fn.fromObject(e);case"fallback":case"receive":return null}return Tn.throwArgumentError("invalid fragment object","value",e)}static fromString(e){return"event"===(e=(e=(e=e.replace(/\s/g," ")).replace(/\(/g," (").replace(/\)/g,") ").replace(/\s+/g," ")).trim()).split(" ")[0]?Sn.fromString(e.substring(5).trim()):"function"===e.split(" ")[0]?Ln.fromString(e.substring(8).trim()):"constructor"===e.split("(")[0].trim()?kn.fromString(e.trim()):"error"===e.split(" ")[0]?Fn.fromString(e.substring(5).trim()):Tn.throwArgumentError("unsupported fragment","value",e)}static isFragment(e){return!(!e||!e._isFragment)}}class Sn extends On{format(e){if(e||(e=_n.sighash),_n[e]||Tn.throwArgumentError("invalid format type","format",e),e===_n.json)return JSON.stringify({type:"event",anonymous:this.anonymous,name:this.name,inputs:this.inputs.map((t=>JSON.parse(t.format(e))))});let t="";return e!==_n.sighash&&(t+="event "),t+=this.name+"("+this.inputs.map((t=>t.format(e))).join(e===_n.full?", ":",")+") ",e!==_n.sighash&&this.anonymous&&(t+="anonymous "),t.trim()}static from(e){return"string"==typeof e?Sn.fromString(e):Sn.fromObject(e)}static fromObject(e){if(Sn.isEventFragment(e))return e;"event"!==e.type&&Tn.throwArgumentError("invalid event object","value",e);const t={name:jn(e.name),anonymous:e.anonymous,inputs:e.inputs?e.inputs.map(Nn.fromObject):[],type:"event"};return new Sn(wn,t)}static fromString(e){let t=e.match(Wn);t||Tn.throwArgumentError("invalid event string","value",e);let n=!1;return t[3].split(" ").forEach((e=>{switch(e.trim()){case"anonymous":n=!0;break;case"":break;default:Tn.warn("unknown modifier: "+e)}})),Sn.fromObject({name:t[1].trim(),anonymous:n,inputs:Cn(t[2],!0),type:"event"})}static isEventFragment(e){return e&&e._isFragment&&"event"===e.type}}function Pn(e,t){t.gas=null;let n=e.split("@");return 1!==n.length?(n.length>2&&Tn.throwArgumentError("invalid human-readable ABI signature","value",e),n[1].match(/^[0-9]+$/)||Tn.throwArgumentError("invalid human-readable ABI signature gas","value",e),t.gas=nn.from(n[1]),n[0]):e}function Dn(e,t){t.constant=!1,t.payable=!1,t.stateMutability="nonpayable",e.split(" ").forEach((e=>{switch(e.trim()){case"constant":t.constant=!0;break;case"payable":t.payable=!0,t.stateMutability="payable";break;case"nonpayable":t.payable=!1,t.stateMutability="nonpayable";break;case"pure":t.constant=!0,t.stateMutability="pure";break;case"view":t.constant=!0,t.stateMutability="view";break;case"external":case"public":case"":break;default:console.log("unknown modifier: "+e)}}))}function xn(e){let t={constant:!1,payable:!0,stateMutability:"payable"};return null!=e.stateMutability?(t.stateMutability=e.stateMutability,t.constant="view"===t.stateMutability||"pure"===t.stateMutability,null!=e.constant&&!!e.constant!==t.constant&&Tn.throwArgumentError("cannot have constant function with mutability "+t.stateMutability,"value",e),t.payable="payable"===t.stateMutability,null!=e.payable&&!!e.payable!==t.payable&&Tn.throwArgumentError("cannot have payable function with mutability "+t.stateMutability,"value",e)):null!=e.payable?(t.payable=!!e.payable,null!=e.constant||t.payable||"constructor"===e.type||Tn.throwArgumentError("unable to determine stateMutability","value",e),t.constant=!!e.constant,t.constant?t.stateMutability="view":t.stateMutability=t.payable?"payable":"nonpayable",t.payable&&t.constant&&Tn.throwArgumentError("cannot have constant payable function","value",e)):null!=e.constant?(t.constant=!!e.constant,t.payable=!t.constant,t.stateMutability=t.constant?"view":"payable"):"constructor"!==e.type&&Tn.throwArgumentError("unable to determine stateMutability","value",e),t}class kn extends On{format(e){if(e||(e=_n.sighash),_n[e]||Tn.throwArgumentError("invalid format type","format",e),e===_n.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((t=>JSON.parse(t.format(e))))});e===_n.sighash&&Tn.throwError("cannot format a constructor for sighash",Lt.errors.UNSUPPORTED_OPERATION,{operation:"format(sighash)"});let t="constructor("+this.inputs.map((t=>t.format(e))).join(e===_n.full?", ":",")+") ";return this.stateMutability&&"nonpayable"!==this.stateMutability&&(t+=this.stateMutability+" "),t.trim()}static from(e){return"string"==typeof e?kn.fromString(e):kn.fromObject(e)}static fromObject(e){if(kn.isConstructorFragment(e))return e;"constructor"!==e.type&&Tn.throwArgumentError("invalid constructor object","value",e);let t=xn(e);t.constant&&Tn.throwArgumentError("constructor cannot be constant","value",e);const n={name:null,type:e.type,inputs:e.inputs?e.inputs.map(Nn.fromObject):[],payable:t.payable,stateMutability:t.stateMutability,gas:e.gas?nn.from(e.gas):null};return new kn(wn,n)}static fromString(e){let t={type:"constructor"},n=(e=Pn(e,t)).match(Wn);return n&&"constructor"===n[1].trim()||Tn.throwArgumentError("invalid constructor string","value",e),t.inputs=Cn(n[2].trim(),!1),Dn(n[3].trim(),t),kn.fromObject(t)}static isConstructorFragment(e){return e&&e._isFragment&&"constructor"===e.type}}class Ln extends kn{format(e){if(e||(e=_n.sighash),_n[e]||Tn.throwArgumentError("invalid format type","format",e),e===_n.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((t=>JSON.parse(t.format(e)))),outputs:this.outputs.map((t=>JSON.parse(t.format(e))))});let t="";return e!==_n.sighash&&(t+="function "),t+=this.name+"("+this.inputs.map((t=>t.format(e))).join(e===_n.full?", ":",")+") ",e!==_n.sighash&&(this.stateMutability?"nonpayable"!==this.stateMutability&&(t+=this.stateMutability+" "):this.constant&&(t+="view "),this.outputs&&this.outputs.length&&(t+="returns ("+this.outputs.map((t=>t.format(e))).join(", ")+") "),null!=this.gas&&(t+="@"+this.gas.toString()+" ")),t.trim()}static from(e){return"string"==typeof e?Ln.fromString(e):Ln.fromObject(e)}static fromObject(e){if(Ln.isFunctionFragment(e))return e;"function"!==e.type&&Tn.throwArgumentError("invalid function object","value",e);let t=xn(e);const n={type:e.type,name:jn(e.name),constant:t.constant,inputs:e.inputs?e.inputs.map(Nn.fromObject):[],outputs:e.outputs?e.outputs.map(Nn.fromObject):[],payable:t.payable,stateMutability:t.stateMutability,gas:e.gas?nn.from(e.gas):null};return new Ln(wn,n)}static fromString(e){let t={type:"function"},n=(e=Pn(e,t)).split(" returns ");n.length>2&&Tn.throwArgumentError("invalid function string","value",e);let a=n[0].match(Wn);if(a||Tn.throwArgumentError("invalid function signature","value",e),t.name=a[1].trim(),t.name&&jn(t.name),t.inputs=Cn(a[2],!1),Dn(a[3].trim(),t),n.length>1){let a=n[1].match(Wn);""==a[1].trim()&&""==a[3].trim()||Tn.throwArgumentError("unexpected tokens","value",e),t.outputs=Cn(a[2],!1)}else t.outputs=[];return Ln.fromObject(t)}static isFunctionFragment(e){return e&&e._isFragment&&"function"===e.type}}function Un(e){const t=e.format();return"Error(string)"!==t&&"Panic(uint256)"!==t||Tn.throwArgumentError(`cannot specify user defined ${t} error`,"fragment",e),e}class Fn extends On{format(e){if(e||(e=_n.sighash),_n[e]||Tn.throwArgumentError("invalid format type","format",e),e===_n.json)return JSON.stringify({type:"error",name:this.name,inputs:this.inputs.map((t=>JSON.parse(t.format(e))))});let t="";return e!==_n.sighash&&(t+="error "),t+=this.name+"("+this.inputs.map((t=>t.format(e))).join(e===_n.full?", ":",")+") ",t.trim()}static from(e){return"string"==typeof e?Fn.fromString(e):Fn.fromObject(e)}static fromObject(e){if(Fn.isErrorFragment(e))return e;"error"!==e.type&&Tn.throwArgumentError("invalid error object","value",e);const t={type:e.type,name:jn(e.name),inputs:e.inputs?e.inputs.map(Nn.fromObject):[]};return Un(new Fn(wn,t))}static fromString(e){let t={type:"error"},n=e.match(Wn);return n||Tn.throwArgumentError("invalid error signature","value",e),t.name=n[1].trim(),t.name&&jn(t.name),t.inputs=Cn(n[2],!1),Un(Fn.fromObject(t))}static isErrorFragment(e){return e&&e._isFragment&&"error"===e.type}}function Bn(e){return e.match(/^uint($|[^1-9])/)?e="uint256"+e.substring(4):e.match(/^int($|[^1-9])/)&&(e="int256"+e.substring(3)),e}const Gn=new RegExp("^[a-zA-Z$_][a-zA-Z0-9$_]*$");function jn(e){return e&&e.match(Gn)||Tn.throwArgumentError(`invalid identifier "${e}"`,"value",e),e}const Wn=new RegExp("^([^)(]*)\\((.*)\\)([^)(]*)$");const Vn=new Lt(En);class zn{constructor(e,t,n,a){this.name=e,this.type=t,this.localName=n,this.dynamic=a}_throwError(e,t){Vn.throwArgumentError(e,this.localName,t)}}class Hn{constructor(e){cn(this,"wordSize",e||32),this._data=[],this._dataLength=0,this._padding=new Uint8Array(e)}get data(){return function(e){let t="0x";return e.forEach((e=>{t+=Xt(e).substring(2)})),t}(this._data)}get length(){return this._dataLength}_writeData(e){return this._data.push(e),this._dataLength+=e.length,e.length}appendWriter(e){return this._writeData(Vt(e._data))}writeBytes(e){let t=Wt(e);const n=t.length%this.wordSize;return n&&(t=Vt([t,this._padding.slice(n)])),this._writeData(t)}_getValue(e){let t=Wt(nn.from(e));return t.length>this.wordSize&&Vn.throwError("value out-of-bounds",Lt.errors.BUFFER_OVERRUN,{length:this.wordSize,offset:t.length}),t.length%this.wordSize&&(t=Vt([this._padding.slice(t.length%this.wordSize),t])),t}writeValue(e){return this._writeData(this._getValue(e))}writeUpdatableValue(){const e=this._data.length;return this._data.push(this._padding),this._dataLength+=this.wordSize,t=>{this._data[e]=this._getValue(t)}}}class qn{constructor(e,t,n,a){cn(this,"_data",Wt(e)),cn(this,"wordSize",t||32),cn(this,"_coerceFunc",n),cn(this,"allowLoose",a),this._offset=0}get data(){return Xt(this._data)}get consumed(){return this._offset}static coerce(e,t){let n=e.match("^u?int([0-9]+)$");return n&&parseInt(n[1])<=48&&(t=t.toNumber()),t}coerce(e,t){return this._coerceFunc?this._coerceFunc(e,t):qn.coerce(e,t)}_peekBytes(e,t,n){let a=Math.ceil(t/this.wordSize)*this.wordSize;return this._offset+a>this._data.length&&(this.allowLoose&&n&&this._offset+t<=this._data.length?a=t:Vn.throwError("data out-of-bounds",Lt.errors.BUFFER_OVERRUN,{length:this._data.length,offset:this._offset+a})),this._data.slice(this._offset,this._offset+a)}subReader(e){return new qn(this._data.slice(this._offset+e),this.wordSize,this._coerceFunc,this.allowLoose)}readBytes(e,t){let n=this._peekBytes(0,e,!!t);return this._offset+=n.length,n.slice(0,e)}readValue(){return nn.from(this.readBytes(this.wordSize))}}var Xn,$n={exports:{}};
2
+ /**
3
+ * [js-sha3]{@link https://github.com/emn178/js-sha3}
4
+ *
5
+ * @version 0.8.0
6
+ * @author Chen, Yi-Cyuan [emn178@gmail.com]
7
+ * @copyright Chen, Yi-Cyuan 2015-2018
8
+ * @license MIT
9
+ */Xn=$n,function(){var e="input is invalid type",t="object"==typeof window,n=t?window:{};n.JS_SHA3_NO_WINDOW&&(t=!1);var a=!t&&"object"==typeof self;!n.JS_SHA3_NO_NODE_JS&&"object"==typeof process&&process.versions&&process.versions.node?n=wt:a&&(n=self);var r=!n.JS_SHA3_NO_COMMON_JS&&Xn.exports,i=!n.JS_SHA3_NO_ARRAY_BUFFER&&"undefined"!=typeof ArrayBuffer,s="0123456789abcdef".split(""),o=[4,1024,262144,67108864],d=[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],c=[224,256,384,512],f=[128,256],l=["hex","buffer","arrayBuffer","array","digest"],p={128:168,256:136};!n.JS_SHA3_NO_NODE_JS&&Array.isArray||(Array.isArray=function(e){return"[object Array]"===Object.prototype.toString.call(e)}),!i||!n.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW&&ArrayBuffer.isView||(ArrayBuffer.isView=function(e){return"object"==typeof e&&e.buffer&&e.buffer.constructor===ArrayBuffer});for(var h=function(e,t,n){return function(a){return new C(e,t,e).update(a)[n]()}},m=function(e,t,n){return function(a,r){return new C(e,t,r).update(a)[n]()}},b=function(e,t,n){return function(t,a,r,i){return w["cshake"+e].update(t,a,r,i)[n]()}},y=function(e,t,n){return function(t,a,r,i){return w["kmac"+e].update(t,a,r,i)[n]()}},g=function(e,t,n,a){for(var r=0;r<l.length;++r){var i=l[r];e[i]=t(n,a,i)}return e},E=function(e,t){var n=h(e,t,"hex");return n.create=function(){return new C(e,t,e)},n.update=function(e){return n.create().update(e)},g(n,h,e,t)},T=[{name:"keccak",padding:[1,256,65536,16777216],bits:c,createMethod:E},{name:"sha3",padding:[6,1536,393216,100663296],bits:c,createMethod:E},{name:"shake",padding:[31,7936,2031616,520093696],bits:f,createMethod:function(e,t){var n=m(e,t,"hex");return n.create=function(n){return new C(e,t,n)},n.update=function(e,t){return n.create(t).update(e)},g(n,m,e,t)}},{name:"cshake",padding:o,bits:f,createMethod:function(e,t){var n=p[e],a=b(e,0,"hex");return a.create=function(a,r,i){return r||i?new C(e,t,a).bytepad([r,i],n):w["shake"+e].create(a)},a.update=function(e,t,n,r){return a.create(t,n,r).update(e)},g(a,b,e,t)}},{name:"kmac",padding:o,bits:f,createMethod:function(e,t){var n=p[e],a=y(e,0,"hex");return a.create=function(a,r,i){return new O(e,t,r).bytepad(["KMAC",i],n).bytepad([a],n)},a.update=function(e,t,n,r){return a.create(e,n,r).update(t)},g(a,y,e,t)}}],w={},v=[],R=0;R<T.length;++R)for(var I=T[R],A=I.bits,_=0;_<A.length;++_){var M=I.name+"_"+A[_];if(v.push(M),w[M]=I.createMethod(A[_],I.padding),"sha3"!==I.name){var N=I.name+A[_];v.push(N),w[N]=w[M]}}function C(e,t,n){this.blocks=[],this.s=[],this.padding=t,this.outputBits=n,this.reset=!0,this.finalized=!1,this.block=0,this.start=0,this.blockCount=1600-(e<<1)>>5,this.byteCount=this.blockCount<<2,this.outputBlocks=n>>5,this.extraBytes=(31&n)>>3;for(var a=0;a<50;++a)this.s[a]=0}function O(e,t,n){C.call(this,e,t,n)}C.prototype.update=function(t){if(this.finalized)throw new Error("finalize already called");var n,a=typeof t;if("string"!==a){if("object"!==a)throw new Error(e);if(null===t)throw new Error(e);if(i&&t.constructor===ArrayBuffer)t=new Uint8Array(t);else if(!(Array.isArray(t)||i&&ArrayBuffer.isView(t)))throw new Error(e);n=!0}for(var r,s,o=this.blocks,u=this.byteCount,c=t.length,f=this.blockCount,l=0,p=this.s;l<c;){if(this.reset)for(this.reset=!1,o[0]=this.block,r=1;r<f+1;++r)o[r]=0;if(n)for(r=this.start;l<c&&r<u;++l)o[r>>2]|=t[l]<<d[3&r++];else for(r=this.start;l<c&&r<u;++l)(s=t.charCodeAt(l))<128?o[r>>2]|=s<<d[3&r++]:s<2048?(o[r>>2]|=(192|s>>6)<<d[3&r++],o[r>>2]|=(128|63&s)<<d[3&r++]):s<55296||s>=57344?(o[r>>2]|=(224|s>>12)<<d[3&r++],o[r>>2]|=(128|s>>6&63)<<d[3&r++],o[r>>2]|=(128|63&s)<<d[3&r++]):(s=65536+((1023&s)<<10|1023&t.charCodeAt(++l)),o[r>>2]|=(240|s>>18)<<d[3&r++],o[r>>2]|=(128|s>>12&63)<<d[3&r++],o[r>>2]|=(128|s>>6&63)<<d[3&r++],o[r>>2]|=(128|63&s)<<d[3&r++]);if(this.lastByteIndex=r,r>=u){for(this.start=r-u,this.block=o[f],r=0;r<f;++r)p[r]^=o[r];S(p),this.reset=!0}else this.start=r}return this},C.prototype.encode=function(e,t){var n=255&e,a=1,r=[n];for(n=255&(e>>=8);n>0;)r.unshift(n),n=255&(e>>=8),++a;return t?r.push(a):r.unshift(a),this.update(r),r.length},C.prototype.encodeString=function(t){var n,a=typeof t;if("string"!==a){if("object"!==a)throw new Error(e);if(null===t)throw new Error(e);if(i&&t.constructor===ArrayBuffer)t=new Uint8Array(t);else if(!(Array.isArray(t)||i&&ArrayBuffer.isView(t)))throw new Error(e);n=!0}var r=0,s=t.length;if(n)r=s;else for(var o=0;o<t.length;++o){var d=t.charCodeAt(o);d<128?r+=1:d<2048?r+=2:d<55296||d>=57344?r+=3:(d=65536+((1023&d)<<10|1023&t.charCodeAt(++o)),r+=4)}return r+=this.encode(8*r),this.update(t),r},C.prototype.bytepad=function(e,t){for(var n=this.encode(t),a=0;a<e.length;++a)n+=this.encodeString(e[a]);var r=t-n%t,i=[];return i.length=r,this.update(i),this},C.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var e=this.blocks,t=this.lastByteIndex,n=this.blockCount,a=this.s;if(e[t>>2]|=this.padding[3&t],this.lastByteIndex===this.byteCount)for(e[0]=e[n],t=1;t<n+1;++t)e[t]=0;for(e[n-1]|=2147483648,t=0;t<n;++t)a[t]^=e[t];S(a)}},C.prototype.toString=C.prototype.hex=function(){this.finalize();for(var e,t=this.blockCount,n=this.s,a=this.outputBlocks,r=this.extraBytes,i=0,o=0,d="";o<a;){for(i=0;i<t&&o<a;++i,++o)e=n[i],d+=s[e>>4&15]+s[15&e]+s[e>>12&15]+s[e>>8&15]+s[e>>20&15]+s[e>>16&15]+s[e>>28&15]+s[e>>24&15];o%t==0&&(S(n),i=0)}return r&&(e=n[i],d+=s[e>>4&15]+s[15&e],r>1&&(d+=s[e>>12&15]+s[e>>8&15]),r>2&&(d+=s[e>>20&15]+s[e>>16&15])),d},C.prototype.arrayBuffer=function(){this.finalize();var e,t=this.blockCount,n=this.s,a=this.outputBlocks,r=this.extraBytes,i=0,s=0,o=this.outputBits>>3;e=r?new ArrayBuffer(a+1<<2):new ArrayBuffer(o);for(var d=new Uint32Array(e);s<a;){for(i=0;i<t&&s<a;++i,++s)d[s]=n[i];s%t==0&&S(n)}return r&&(d[i]=n[i],e=e.slice(0,o)),e},C.prototype.buffer=C.prototype.arrayBuffer,C.prototype.digest=C.prototype.array=function(){this.finalize();for(var e,t,n=this.blockCount,a=this.s,r=this.outputBlocks,i=this.extraBytes,s=0,o=0,d=[];o<r;){for(s=0;s<n&&o<r;++s,++o)e=o<<2,t=a[s],d[e]=255&t,d[e+1]=t>>8&255,d[e+2]=t>>16&255,d[e+3]=t>>24&255;o%n==0&&S(a)}return i&&(e=o<<2,t=a[s],d[e]=255&t,i>1&&(d[e+1]=t>>8&255),i>2&&(d[e+2]=t>>16&255)),d},O.prototype=new C,O.prototype.finalize=function(){return this.encode(this.outputBits,!0),C.prototype.finalize.call(this)};var S=function(e){var t,n,a,r,i,s,o,d,c,f,l,p,h,m,b,y,g,E,T,w,v,R,I,A,_,M,N,C,O,S,P,D,x,k,L,U,F,B,G,j,W,V,z,H,q,X,$,Z,K,Q,Y,J,ee,te,ne,ae,re,ie,se,oe,de,ue,ce;for(a=0;a<48;a+=2)r=e[0]^e[10]^e[20]^e[30]^e[40],i=e[1]^e[11]^e[21]^e[31]^e[41],s=e[2]^e[12]^e[22]^e[32]^e[42],o=e[3]^e[13]^e[23]^e[33]^e[43],d=e[4]^e[14]^e[24]^e[34]^e[44],c=e[5]^e[15]^e[25]^e[35]^e[45],f=e[6]^e[16]^e[26]^e[36]^e[46],l=e[7]^e[17]^e[27]^e[37]^e[47],t=(p=e[8]^e[18]^e[28]^e[38]^e[48])^(s<<1|o>>>31),n=(h=e[9]^e[19]^e[29]^e[39]^e[49])^(o<<1|s>>>31),e[0]^=t,e[1]^=n,e[10]^=t,e[11]^=n,e[20]^=t,e[21]^=n,e[30]^=t,e[31]^=n,e[40]^=t,e[41]^=n,t=r^(d<<1|c>>>31),n=i^(c<<1|d>>>31),e[2]^=t,e[3]^=n,e[12]^=t,e[13]^=n,e[22]^=t,e[23]^=n,e[32]^=t,e[33]^=n,e[42]^=t,e[43]^=n,t=s^(f<<1|l>>>31),n=o^(l<<1|f>>>31),e[4]^=t,e[5]^=n,e[14]^=t,e[15]^=n,e[24]^=t,e[25]^=n,e[34]^=t,e[35]^=n,e[44]^=t,e[45]^=n,t=d^(p<<1|h>>>31),n=c^(h<<1|p>>>31),e[6]^=t,e[7]^=n,e[16]^=t,e[17]^=n,e[26]^=t,e[27]^=n,e[36]^=t,e[37]^=n,e[46]^=t,e[47]^=n,t=f^(r<<1|i>>>31),n=l^(i<<1|r>>>31),e[8]^=t,e[9]^=n,e[18]^=t,e[19]^=n,e[28]^=t,e[29]^=n,e[38]^=t,e[39]^=n,e[48]^=t,e[49]^=n,m=e[0],b=e[1],X=e[11]<<4|e[10]>>>28,$=e[10]<<4|e[11]>>>28,C=e[20]<<3|e[21]>>>29,O=e[21]<<3|e[20]>>>29,oe=e[31]<<9|e[30]>>>23,de=e[30]<<9|e[31]>>>23,V=e[40]<<18|e[41]>>>14,z=e[41]<<18|e[40]>>>14,k=e[2]<<1|e[3]>>>31,L=e[3]<<1|e[2]>>>31,y=e[13]<<12|e[12]>>>20,g=e[12]<<12|e[13]>>>20,Z=e[22]<<10|e[23]>>>22,K=e[23]<<10|e[22]>>>22,S=e[33]<<13|e[32]>>>19,P=e[32]<<13|e[33]>>>19,ue=e[42]<<2|e[43]>>>30,ce=e[43]<<2|e[42]>>>30,te=e[5]<<30|e[4]>>>2,ne=e[4]<<30|e[5]>>>2,U=e[14]<<6|e[15]>>>26,F=e[15]<<6|e[14]>>>26,E=e[25]<<11|e[24]>>>21,T=e[24]<<11|e[25]>>>21,Q=e[34]<<15|e[35]>>>17,Y=e[35]<<15|e[34]>>>17,D=e[45]<<29|e[44]>>>3,x=e[44]<<29|e[45]>>>3,A=e[6]<<28|e[7]>>>4,_=e[7]<<28|e[6]>>>4,ae=e[17]<<23|e[16]>>>9,re=e[16]<<23|e[17]>>>9,B=e[26]<<25|e[27]>>>7,G=e[27]<<25|e[26]>>>7,w=e[36]<<21|e[37]>>>11,v=e[37]<<21|e[36]>>>11,J=e[47]<<24|e[46]>>>8,ee=e[46]<<24|e[47]>>>8,H=e[8]<<27|e[9]>>>5,q=e[9]<<27|e[8]>>>5,M=e[18]<<20|e[19]>>>12,N=e[19]<<20|e[18]>>>12,ie=e[29]<<7|e[28]>>>25,se=e[28]<<7|e[29]>>>25,j=e[38]<<8|e[39]>>>24,W=e[39]<<8|e[38]>>>24,R=e[48]<<14|e[49]>>>18,I=e[49]<<14|e[48]>>>18,e[0]=m^~y&E,e[1]=b^~g&T,e[10]=A^~M&C,e[11]=_^~N&O,e[20]=k^~U&B,e[21]=L^~F&G,e[30]=H^~X&Z,e[31]=q^~$&K,e[40]=te^~ae&ie,e[41]=ne^~re&se,e[2]=y^~E&w,e[3]=g^~T&v,e[12]=M^~C&S,e[13]=N^~O&P,e[22]=U^~B&j,e[23]=F^~G&W,e[32]=X^~Z&Q,e[33]=$^~K&Y,e[42]=ae^~ie&oe,e[43]=re^~se&de,e[4]=E^~w&R,e[5]=T^~v&I,e[14]=C^~S&D,e[15]=O^~P&x,e[24]=B^~j&V,e[25]=G^~W&z,e[34]=Z^~Q&J,e[35]=K^~Y&ee,e[44]=ie^~oe&ue,e[45]=se^~de&ce,e[6]=w^~R&m,e[7]=v^~I&b,e[16]=S^~D&A,e[17]=P^~x&_,e[26]=j^~V&k,e[27]=W^~z&L,e[36]=Q^~J&H,e[37]=Y^~ee&q,e[46]=oe^~ue&te,e[47]=de^~ce&ne,e[8]=R^~m&y,e[9]=I^~b&g,e[18]=D^~A&M,e[19]=x^~_&N,e[28]=V^~k&U,e[29]=z^~L&F,e[38]=J^~H&X,e[39]=ee^~q&$,e[48]=ue^~te&ae,e[49]=ce^~ne&re,e[0]^=u[a],e[1]^=u[a+1]};if(r)Xn.exports=w;else for(R=0;R<v.length;++R)n[v[R]]=w[v[R]]}();var Zn=vt($n.exports);function Kn(e){return"0x"+Zn.keccak_256(Wt(e))}const Qn=new Lt("rlp/5.7.0");function Yn(e){const t=[];for(;e;)t.unshift(255&e),e>>=8;return t}function Jn(e){if(Array.isArray(e)){let t=[];if(e.forEach((function(e){t=t.concat(Jn(e))})),t.length<=55)return t.unshift(192+t.length),t;const n=Yn(t.length);return n.unshift(247+n.length),n.concat(t)}var t;Ht(t=e)&&!(t.length%2)||jt(t)||Qn.throwArgumentError("RLP object must be BytesLike","object",e);const n=Array.prototype.slice.call(Wt(e));if(1===n.length&&n[0]<=127)return n;if(n.length<=55)return n.unshift(128+n.length),n;const a=Yn(n.length);return a.unshift(183+a.length),a.concat(n)}const ea=new Lt("address/5.7.0");function ta(e){Ht(e,20)||ea.throwArgumentError("invalid address","address",e);const t=(e=e.toLowerCase()).substring(2).split(""),n=new Uint8Array(40);for(let e=0;e<40;e++)n[e]=t[e].charCodeAt(0);const a=Wt(Kn(n));for(let e=0;e<40;e+=2)a[e>>1]>>4>=8&&(t[e]=t[e].toUpperCase()),(15&a[e>>1])>=8&&(t[e+1]=t[e+1].toUpperCase());return"0x"+t.join("")}const na={};for(let e=0;e<10;e++)na[String(e)]=String(e);for(let e=0;e<26;e++)na[String.fromCharCode(65+e)]=String(10+e);const aa=Math.floor((ra=9007199254740991,Math.log10?Math.log10(ra):Math.log(ra)/Math.LN10));var ra;function ia(e){let t=null;if("string"!=typeof e&&ea.throwArgumentError("invalid address","address",e),e.match(/^(0x)?[0-9a-fA-F]{40}$/))"0x"!==e.substring(0,2)&&(e="0x"+e),t=ta(e),e.match(/([A-F].*[a-f])|([a-f].*[A-F])/)&&t!==e&&ea.throwArgumentError("bad address checksum","address",e);else if(e.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)){for(e.substring(2,4)!==function(e){let t=(e=(e=e.toUpperCase()).substring(4)+e.substring(0,2)+"00").split("").map((e=>na[e])).join("");for(;t.length>=aa;){let e=t.substring(0,aa);t=parseInt(e,10)%97+t.substring(e.length)}let n=String(98-parseInt(t,10)%97);for(;n.length<2;)n="0"+n;return n}(e)&&ea.throwArgumentError("bad icap checksum","address",e),n=e.substring(4),t=new Qt(n,36).toString(16);t.length<40;)t="0"+t;t=ta("0x"+t)}else ea.throwArgumentError("invalid address","address",e);var n;return t}function sa(e){try{return ia(e),!0}catch(e){}return!1}function oa(e){let t=null;try{t=ia(e.from)}catch(t){ea.throwArgumentError("missing from address","transaction",e)}const n=function(e){let t=Wt(e);if(0===t.length)return t;let n=0;for(;n<t.length&&0===t[n];)n++;return n&&(t=t.slice(n)),t}(Wt(nn.from(e.nonce).toHexString()));return ia($t(Kn(Xt(Jn([t,n]))),12))}class da extends zn{constructor(e){super("address","address",e,!1)}defaultValue(){return"0x0000000000000000000000000000000000000000"}encode(e,t){try{t=ia(t)}catch(e){this._throwError(e.message,t)}return e.writeValue(t)}decode(e){return ia(Kt(e.readValue().toHexString(),20))}}class ua extends zn{constructor(e){super(e.name,e.type,void 0,e.dynamic),this.coder=e}defaultValue(){return this.coder.defaultValue()}encode(e,t){return this.coder.encode(e,t)}decode(e){return this.coder.decode(e)}}const ca=new Lt(En);function fa(e,t,n){let a=null;if(Array.isArray(n))a=n;else if(n&&"object"==typeof n){let e={};a=t.map((t=>{const a=t.localName;return a||ca.throwError("cannot encode object for signature with missing names",Lt.errors.INVALID_ARGUMENT,{argument:"values",coder:t,value:n}),e[a]&&ca.throwError("cannot encode object for signature with duplicate names",Lt.errors.INVALID_ARGUMENT,{argument:"values",coder:t,value:n}),e[a]=!0,n[a]}))}else ca.throwArgumentError("invalid tuple value","tuple",n);t.length!==a.length&&ca.throwArgumentError("types/value length mismatch","tuple",n);let r=new Hn(e.wordSize),i=new Hn(e.wordSize),s=[];t.forEach(((e,t)=>{let n=a[t];if(e.dynamic){let t=i.length;e.encode(i,n);let a=r.writeUpdatableValue();s.push((e=>{a(e+t)}))}else e.encode(r,n)})),s.forEach((e=>{e(r.length)}));let o=e.appendWriter(r);return o+=e.appendWriter(i),o}function la(e,t){let n=[],a=e.subReader(0);t.forEach((t=>{let r=null;if(t.dynamic){let n=e.readValue(),i=a.subReader(n.toNumber());try{r=t.decode(i)}catch(e){if(e.code===Lt.errors.BUFFER_OVERRUN)throw e;r=e,r.baseType=t.name,r.name=t.localName,r.type=t.type}}else try{r=t.decode(e)}catch(e){if(e.code===Lt.errors.BUFFER_OVERRUN)throw e;r=e,r.baseType=t.name,r.name=t.localName,r.type=t.type}null!=r&&n.push(r)}));const r=t.reduce(((e,t)=>{const n=t.localName;return n&&(e[n]||(e[n]=0),e[n]++),e}),{});t.forEach(((e,t)=>{let a=e.localName;if(!a||1!==r[a])return;if("length"===a&&(a="_length"),null!=n[a])return;const i=n[t];i instanceof Error?Object.defineProperty(n,a,{enumerable:!0,get:()=>{throw i}}):n[a]=i}));for(let e=0;e<n.length;e++){const t=n[e];t instanceof Error&&Object.defineProperty(n,e,{enumerable:!0,get:()=>{throw t}})}return Object.freeze(n)}class pa extends zn{constructor(e,t,n){super("array",e.type+"["+(t>=0?t:"")+"]",n,-1===t||e.dynamic),this.coder=e,this.length=t}defaultValue(){const e=this.coder.defaultValue(),t=[];for(let n=0;n<this.length;n++)t.push(e);return t}encode(e,t){Array.isArray(t)||this._throwError("expected array value",t);let n=this.length;-1===n&&(n=t.length,e.writeValue(t.length)),ca.checkArgumentCount(t.length,n,"coder array"+(this.localName?" "+this.localName:""));let a=[];for(let e=0;e<t.length;e++)a.push(this.coder);return fa(e,a,t)}decode(e){let t=this.length;-1===t&&(t=e.readValue().toNumber(),32*t>e._data.length&&ca.throwError("insufficient data length",Lt.errors.BUFFER_OVERRUN,{length:e._data.length,count:t}));let n=[];for(let e=0;e<t;e++)n.push(new ua(this.coder));return e.coerce(this.name,la(e,n))}}class ha extends zn{constructor(e){super("bool","bool",e,!1)}defaultValue(){return!1}encode(e,t){return e.writeValue(t?1:0)}decode(e){return e.coerce(this.type,!e.readValue().isZero())}}class ma extends zn{constructor(e,t){super(e,e,t,!0)}defaultValue(){return"0x"}encode(e,t){t=Wt(t);let n=e.writeValue(t.length);return n+=e.writeBytes(t),n}decode(e){return e.readBytes(e.readValue().toNumber(),!0)}}class ba extends ma{constructor(e){super("bytes",e)}decode(e){return e.coerce(this.name,Xt(super.decode(e)))}}class ya extends zn{constructor(e,t){let n="bytes"+String(e);super(n,n,t,!1),this.size=e}defaultValue(){return"0x0000000000000000000000000000000000000000000000000000000000000000".substring(0,2+2*this.size)}encode(e,t){let n=Wt(t);return n.length!==this.size&&this._throwError("incorrect data length",t),e.writeBytes(n)}decode(e){return e.coerce(this.name,Xt(e.readBytes(this.size)))}}class ga extends zn{constructor(e){super("null","",e,!1)}defaultValue(){return null}encode(e,t){return null!=t&&this._throwError("not null",t),e.writeBytes([])}decode(e){return e.readBytes(0),e.coerce(this.name,null)}}const Ea="0x0000000000000000000000000000000000000000",Ta=nn.from(-1),wa=nn.from(0),va=nn.from(1),Ra=nn.from("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");class Ia extends zn{constructor(e,t,n){const a=(t?"int":"uint")+8*e;super(a,a,n,!1),this.size=e,this.signed=t}defaultValue(){return 0}encode(e,t){let n=nn.from(t),a=Ra.mask(8*e.wordSize);if(this.signed){let e=a.mask(8*this.size-1);(n.gt(e)||n.lt(e.add(va).mul(Ta)))&&this._throwError("value out-of-bounds",t)}else(n.lt(wa)||n.gt(a.mask(8*this.size)))&&this._throwError("value out-of-bounds",t);return n=n.toTwos(8*this.size).mask(8*this.size),this.signed&&(n=n.fromTwos(8*this.size).toTwos(8*e.wordSize)),e.writeValue(n)}decode(e){let t=e.readValue().mask(8*this.size);return this.signed&&(t=t.fromTwos(8*this.size)),e.coerce(this.name,t)}}const Aa=new Lt("strings/5.7.0");var _a,Ma;function Na(e,t,n,a,r){if(e===Ma.BAD_PREFIX||e===Ma.UNEXPECTED_CONTINUE){let e=0;for(let a=t+1;a<n.length&&n[a]>>6==2;a++)e++;return e}return e===Ma.OVERRUN?n.length-t-1:0}!function(e){e.current="",e.NFC="NFC",e.NFD="NFD",e.NFKC="NFKC",e.NFKD="NFKD"}(_a||(_a={})),function(e){e.UNEXPECTED_CONTINUE="unexpected continuation byte",e.BAD_PREFIX="bad codepoint prefix",e.OVERRUN="string overrun",e.MISSING_CONTINUE="missing continuation byte",e.OUT_OF_RANGE="out of UTF-8 range",e.UTF16_SURROGATE="UTF-16 surrogate",e.OVERLONG="overlong representation"}(Ma||(Ma={}));const Ca=Object.freeze({error:function(e,t,n,a,r){return Aa.throwArgumentError(`invalid codepoint at offset ${t}; ${e}`,"bytes",n)},ignore:Na,replace:function(e,t,n,a,r){return e===Ma.OVERLONG?(a.push(r),0):(a.push(65533),Na(e,t,n))}});function Oa(e,t=_a.current){t!=_a.current&&(Aa.checkNormalize(),e=e.normalize(t));let n=[];for(let t=0;t<e.length;t++){const a=e.charCodeAt(t);if(a<128)n.push(a);else if(a<2048)n.push(a>>6|192),n.push(63&a|128);else if(55296==(64512&a)){t++;const r=e.charCodeAt(t);if(t>=e.length||56320!=(64512&r))throw new Error("invalid utf-8 string");const i=65536+((1023&a)<<10)+(1023&r);n.push(i>>18|240),n.push(i>>12&63|128),n.push(i>>6&63|128),n.push(63&i|128)}else n.push(a>>12|224),n.push(a>>6&63|128),n.push(63&a|128)}return Wt(n)}function Sa(e,t){return n=function(e,t){null==t&&(t=Ca.error),e=Wt(e);const n=[];let a=0;for(;a<e.length;){const r=e[a++];if(r>>7==0){n.push(r);continue}let i=null,s=null;if(192==(224&r))i=1,s=127;else if(224==(240&r))i=2,s=2047;else{if(240!=(248&r)){a+=t(128==(192&r)?Ma.UNEXPECTED_CONTINUE:Ma.BAD_PREFIX,a-1,e,n);continue}i=3,s=65535}if(a-1+i>=e.length){a+=t(Ma.OVERRUN,a-1,e,n);continue}let o=r&(1<<8-i-1)-1;for(let r=0;r<i;r++){let r=e[a];if(128!=(192&r)){a+=t(Ma.MISSING_CONTINUE,a,e,n),o=null;break}o=o<<6|63&r,a++}null!==o&&(o>1114111?a+=t(Ma.OUT_OF_RANGE,a-1-i,e,n,o):o>=55296&&o<=57343?a+=t(Ma.UTF16_SURROGATE,a-1-i,e,n,o):o<=s?a+=t(Ma.OVERLONG,a-1-i,e,n,o):n.push(o))}return n}(e,t),n.map((e=>e<=65535?String.fromCharCode(e):(e-=65536,String.fromCharCode(55296+(e>>10&1023),56320+(1023&e))))).join("");var n}class Pa extends ma{constructor(e){super("string",e)}defaultValue(){return""}encode(e,t){return super.encode(e,Oa(t))}decode(e){return Sa(super.decode(e))}}class Da extends zn{constructor(e,t){let n=!1;const a=[];e.forEach((e=>{e.dynamic&&(n=!0),a.push(e.type)}));super("tuple","tuple("+a.join(",")+")",t,n),this.coders=e}defaultValue(){const e=[];this.coders.forEach((t=>{e.push(t.defaultValue())}));const t=this.coders.reduce(((e,t)=>{const n=t.localName;return n&&(e[n]||(e[n]=0),e[n]++),e}),{});return this.coders.forEach(((n,a)=>{let r=n.localName;r&&1===t[r]&&("length"===r&&(r="_length"),null==e[r]&&(e[r]=e[a]))})),Object.freeze(e)}encode(e,t){return fa(e,this.coders,t)}decode(e){return e.coerce(this.name,la(e,this.coders))}}const xa=new Lt(En),ka=new RegExp(/^bytes([0-9]*)$/),La=new RegExp(/^(u?int)([0-9]*)$/);class Ua{constructor(e){cn(this,"coerceFunc",e||null)}_getCoder(e){switch(e.baseType){case"address":return new da(e.name);case"bool":return new ha(e.name);case"string":return new Pa(e.name);case"bytes":return new ba(e.name);case"array":return new pa(this._getCoder(e.arrayChildren),e.arrayLength,e.name);case"tuple":return new Da((e.components||[]).map((e=>this._getCoder(e))),e.name);case"":return new ga(e.name)}let t=e.type.match(La);if(t){let n=parseInt(t[2]||"256");return(0===n||n>256||n%8!=0)&&xa.throwArgumentError("invalid "+t[1]+" bit length","param",e),new Ia(n/8,"int"===t[1],e.name)}if(t=e.type.match(ka),t){let n=parseInt(t[1]);return(0===n||n>32)&&xa.throwArgumentError("invalid bytes length","param",e),new ya(n,e.name)}return xa.throwArgumentError("invalid type","type",e.type)}_getWordSize(){return 32}_getReader(e,t){return new qn(e,this._getWordSize(),this.coerceFunc,t)}_getWriter(){return new Hn(this._getWordSize())}getDefaultValue(e){const t=e.map((e=>this._getCoder(Nn.from(e))));return new Da(t,"_").defaultValue()}encode(e,t){e.length!==t.length&&xa.throwError("types/values length mismatch",Lt.errors.INVALID_ARGUMENT,{count:{types:e.length,values:t.length},value:{types:e,values:t}});const n=e.map((e=>this._getCoder(Nn.from(e)))),a=new Da(n,"_"),r=this._getWriter();return a.encode(r,t),r.data}decode(e,t,n){const a=e.map((e=>this._getCoder(Nn.from(e))));return new Da(a,"_").decode(this._getReader(Wt(t),n))}}const Fa=new Ua;function Ba(e){return Kn(Oa(e))}const Ga=new Lt(En);class ja extends gn{}class Wa extends gn{}class Va extends gn{}class za extends gn{static isIndexed(e){return!(!e||!e._isIndexed)}}const Ha={"0x08c379a0":{signature:"Error(string)",name:"Error",inputs:["string"],reason:!0},"0x4e487b71":{signature:"Panic(uint256)",name:"Panic",inputs:["uint256"]}};function qa(e,t){const n=new Error(`deferred error during ABI decoding triggered accessing ${e}`);return n.error=t,n}class Xa{constructor(e){let t=[];t="string"==typeof e?JSON.parse(e):e,cn(this,"fragments",t.map((e=>On.from(e))).filter((e=>null!=e))),cn(this,"_abiCoder",fn(new.target,"getAbiCoder")()),cn(this,"functions",{}),cn(this,"errors",{}),cn(this,"events",{}),cn(this,"structs",{}),this.fragments.forEach((e=>{let t=null;switch(e.type){case"constructor":return this.deploy?void Ga.warn("duplicate definition - constructor"):void cn(this,"deploy",e);case"function":t=this.functions;break;case"event":t=this.events;break;case"error":t=this.errors;break;default:return}let n=e.format();t[n]?Ga.warn("duplicate definition - "+n):t[n]=e})),this.deploy||cn(this,"deploy",kn.from({payable:!1,type:"constructor"})),cn(this,"_isInterface",!0)}format(e){e||(e=_n.full),e===_n.sighash&&Ga.throwArgumentError("interface does not support formatting sighash","format",e);const t=this.fragments.map((t=>t.format(e)));return e===_n.json?JSON.stringify(t.map((e=>JSON.parse(e)))):t}static getAbiCoder(){return Fa}static getAddress(e){return ia(e)}static getSighash(e){return $t(Ba(e.format()),0,4)}static getEventTopic(e){return Ba(e.format())}getFunction(e){if(Ht(e)){for(const t in this.functions)if(e===this.getSighash(t))return this.functions[t];Ga.throwArgumentError("no matching function","sighash",e)}if(-1===e.indexOf("(")){const t=e.trim(),n=Object.keys(this.functions).filter((e=>e.split("(")[0]===t));return 0===n.length?Ga.throwArgumentError("no matching function","name",t):n.length>1&&Ga.throwArgumentError("multiple matching functions","name",t),this.functions[n[0]]}const t=this.functions[Ln.fromString(e).format()];return t||Ga.throwArgumentError("no matching function","signature",e),t}getEvent(e){if(Ht(e)){const t=e.toLowerCase();for(const e in this.events)if(t===this.getEventTopic(e))return this.events[e];Ga.throwArgumentError("no matching event","topichash",t)}if(-1===e.indexOf("(")){const t=e.trim(),n=Object.keys(this.events).filter((e=>e.split("(")[0]===t));return 0===n.length?Ga.throwArgumentError("no matching event","name",t):n.length>1&&Ga.throwArgumentError("multiple matching events","name",t),this.events[n[0]]}const t=this.events[Sn.fromString(e).format()];return t||Ga.throwArgumentError("no matching event","signature",e),t}getError(e){if(Ht(e)){const t=fn(this.constructor,"getSighash");for(const n in this.errors){if(e===t(this.errors[n]))return this.errors[n]}Ga.throwArgumentError("no matching error","sighash",e)}if(-1===e.indexOf("(")){const t=e.trim(),n=Object.keys(this.errors).filter((e=>e.split("(")[0]===t));return 0===n.length?Ga.throwArgumentError("no matching error","name",t):n.length>1&&Ga.throwArgumentError("multiple matching errors","name",t),this.errors[n[0]]}const t=this.errors[Ln.fromString(e).format()];return t||Ga.throwArgumentError("no matching error","signature",e),t}getSighash(e){if("string"==typeof e)try{e=this.getFunction(e)}catch(t){try{e=this.getError(e)}catch(e){throw t}}return fn(this.constructor,"getSighash")(e)}getEventTopic(e){return"string"==typeof e&&(e=this.getEvent(e)),fn(this.constructor,"getEventTopic")(e)}_decodeParams(e,t){return this._abiCoder.decode(e,t)}_encodeParams(e,t){return this._abiCoder.encode(e,t)}encodeDeploy(e){return this._encodeParams(this.deploy.inputs,e||[])}decodeErrorResult(e,t){"string"==typeof e&&(e=this.getError(e));const n=Wt(t);return Xt(n.slice(0,4))!==this.getSighash(e)&&Ga.throwArgumentError(`data signature does not match error ${e.name}.`,"data",Xt(n)),this._decodeParams(e.inputs,n.slice(4))}encodeErrorResult(e,t){return"string"==typeof e&&(e=this.getError(e)),Xt(Vt([this.getSighash(e),this._encodeParams(e.inputs,t||[])]))}decodeFunctionData(e,t){"string"==typeof e&&(e=this.getFunction(e));const n=Wt(t);return Xt(n.slice(0,4))!==this.getSighash(e)&&Ga.throwArgumentError(`data signature does not match function ${e.name}.`,"data",Xt(n)),this._decodeParams(e.inputs,n.slice(4))}encodeFunctionData(e,t){return"string"==typeof e&&(e=this.getFunction(e)),Xt(Vt([this.getSighash(e),this._encodeParams(e.inputs,t||[])]))}decodeFunctionResult(e,t){"string"==typeof e&&(e=this.getFunction(e));let n=Wt(t),a=null,r="",i=null,s=null,o=null;switch(n.length%this._abiCoder._getWordSize()){case 0:try{return this._abiCoder.decode(e.outputs,n)}catch(e){}break;case 4:{const e=Xt(n.slice(0,4)),t=Ha[e];if(t)i=this._abiCoder.decode(t.inputs,n.slice(4)),s=t.name,o=t.signature,t.reason&&(a=i[0]),"Error"===s?r=`; VM Exception while processing transaction: reverted with reason string ${JSON.stringify(i[0])}`:"Panic"===s&&(r=`; VM Exception while processing transaction: reverted with panic code ${i[0]}`);else try{const t=this.getError(e);i=this._abiCoder.decode(t.inputs,n.slice(4)),s=t.name,o=t.format()}catch(e){}break}}return Ga.throwError("call revert exception"+r,Lt.errors.CALL_EXCEPTION,{method:e.format(),data:Xt(t),errorArgs:i,errorName:s,errorSignature:o,reason:a})}encodeFunctionResult(e,t){return"string"==typeof e&&(e=this.getFunction(e)),Xt(this._abiCoder.encode(e.outputs,t||[]))}encodeFilterTopics(e,t){"string"==typeof e&&(e=this.getEvent(e)),t.length>e.inputs.length&&Ga.throwError("too many arguments for "+e.format(),Lt.errors.UNEXPECTED_ARGUMENT,{argument:"values",value:t});let n=[];e.anonymous||n.push(this.getEventTopic(e));const a=(e,t)=>"string"===e.type?Ba(t):"bytes"===e.type?Kn(Xt(t)):("bool"===e.type&&"boolean"==typeof t&&(t=t?"0x01":"0x00"),e.type.match(/^u?int/)&&(t=nn.from(t).toHexString()),"address"===e.type&&this._abiCoder.encode(["address"],[t]),Kt(Xt(t),32));for(t.forEach(((t,r)=>{let i=e.inputs[r];i.indexed?null==t?n.push(null):"array"===i.baseType||"tuple"===i.baseType?Ga.throwArgumentError("filtering with tuples or arrays not supported","contract."+i.name,t):Array.isArray(t)?n.push(t.map((e=>a(i,e)))):n.push(a(i,t)):null!=t&&Ga.throwArgumentError("cannot filter non-indexed parameters; must be null","contract."+i.name,t)}));n.length&&null===n[n.length-1];)n.pop();return n}encodeEventLog(e,t){"string"==typeof e&&(e=this.getEvent(e));const n=[],a=[],r=[];return e.anonymous||n.push(this.getEventTopic(e)),t.length!==e.inputs.length&&Ga.throwArgumentError("event arguments/values mismatch","values",t),e.inputs.forEach(((e,i)=>{const s=t[i];if(e.indexed)if("string"===e.type)n.push(Ba(s));else if("bytes"===e.type)n.push(Kn(s));else{if("tuple"===e.baseType||"array"===e.baseType)throw new Error("not implemented");n.push(this._abiCoder.encode([e.type],[s]))}else a.push(e),r.push(s)})),{data:this._abiCoder.encode(a,r),topics:n}}decodeEventLog(e,t,n){if("string"==typeof e&&(e=this.getEvent(e)),null!=n&&!e.anonymous){let t=this.getEventTopic(e);Ht(n[0],32)&&n[0].toLowerCase()===t||Ga.throwError("fragment/topic mismatch",Lt.errors.INVALID_ARGUMENT,{argument:"topics[0]",expected:t,value:n[0]}),n=n.slice(1)}let a=[],r=[],i=[];e.inputs.forEach(((e,t)=>{e.indexed?"string"===e.type||"bytes"===e.type||"tuple"===e.baseType||"array"===e.baseType?(a.push(Nn.fromObject({type:"bytes32",name:e.name})),i.push(!0)):(a.push(e),i.push(!1)):(r.push(e),i.push(!1))}));let s=null!=n?this._abiCoder.decode(a,Vt(n)):null,o=this._abiCoder.decode(r,t,!0),d=[],u=0,c=0;e.inputs.forEach(((e,t)=>{if(e.indexed)if(null==s)d[t]=new za({_isIndexed:!0,hash:null});else if(i[t])d[t]=new za({_isIndexed:!0,hash:s[c++]});else try{d[t]=s[c++]}catch(e){d[t]=e}else try{d[t]=o[u++]}catch(e){d[t]=e}if(e.name&&null==d[e.name]){const n=d[t];n instanceof Error?Object.defineProperty(d,e.name,{enumerable:!0,get:()=>{throw qa(`property ${JSON.stringify(e.name)}`,n)}}):d[e.name]=n}}));for(let e=0;e<d.length;e++){const t=d[e];t instanceof Error&&Object.defineProperty(d,e,{enumerable:!0,get:()=>{throw qa(`index ${e}`,t)}})}return Object.freeze(d)}parseTransaction(e){let t=this.getFunction(e.data.substring(0,10).toLowerCase());return t?new Wa({args:this._abiCoder.decode(t.inputs,"0x"+e.data.substring(10)),functionFragment:t,name:t.name,signature:t.format(),sighash:this.getSighash(t),value:nn.from(e.value||"0")}):null}parseLog(e){let t=this.getEvent(e.topics[0]);return!t||t.anonymous?null:new ja({eventFragment:t,name:t.name,signature:t.format(),topic:this.getEventTopic(t),args:this.decodeEventLog(t,e.data,e.topics)})}parseError(e){const t=Xt(e);let n=this.getError(t.substring(0,10).toLowerCase());return n?new Va({args:this._abiCoder.decode(n.inputs,"0x"+t.substring(10)),errorFragment:n,name:n.name,signature:n.format(),sighash:this.getSighash(n)}):null}static isInterface(e){return!(!e||!e._isInterface)}}var $a=function(e,t,n,a){return new(n||(n=Promise))((function(r,i){function s(e){try{d(a.next(e))}catch(e){i(e)}}function o(e){try{d(a.throw(e))}catch(e){i(e)}}function d(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,o)}d((a=a.apply(e,t||[])).next())}))};const Za=new Lt("abstract-provider/5.7.0");class Ka{constructor(){Za.checkAbstract(new.target,Ka),cn(this,"_isProvider",!0)}getFeeData(){return $a(this,void 0,void 0,(function*(){const{block:e,gasPrice:t}=yield ln({block:this.getBlock("latest"),gasPrice:this.getGasPrice().catch((e=>null))});let n=null,a=null,r=null;return e&&e.baseFeePerGas&&(n=e.baseFeePerGas,r=nn.from("1500000000"),a=e.baseFeePerGas.mul(2).add(r)),{lastBaseFeePerGas:n,maxFeePerGas:a,maxPriorityFeePerGas:r,gasPrice:t}}))}addListener(e,t){return this.on(e,t)}removeListener(e,t){return this.off(e,t)}static isProvider(e){return!(!e||!e._isProvider)}}var Qa=function(e,t,n,a){return new(n||(n=Promise))((function(r,i){function s(e){try{d(a.next(e))}catch(e){i(e)}}function o(e){try{d(a.throw(e))}catch(e){i(e)}}function d(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,o)}d((a=a.apply(e,t||[])).next())}))};const Ya=new Lt("abstract-signer/5.7.0"),Ja=["accessList","ccipReadEnabled","chainId","customData","data","from","gasLimit","gasPrice","maxFeePerGas","maxPriorityFeePerGas","nonce","to","type","value"],er=[Lt.errors.INSUFFICIENT_FUNDS,Lt.errors.NONCE_EXPIRED,Lt.errors.REPLACEMENT_UNDERPRICED];class tr{constructor(){Ya.checkAbstract(new.target,tr),cn(this,"_isSigner",!0)}getBalance(e){return Qa(this,void 0,void 0,(function*(){return this._checkProvider("getBalance"),yield this.provider.getBalance(this.getAddress(),e)}))}getTransactionCount(e){return Qa(this,void 0,void 0,(function*(){return this._checkProvider("getTransactionCount"),yield this.provider.getTransactionCount(this.getAddress(),e)}))}estimateGas(e){return Qa(this,void 0,void 0,(function*(){this._checkProvider("estimateGas");const t=yield ln(this.checkTransaction(e));return yield this.provider.estimateGas(t)}))}call(e,t){return Qa(this,void 0,void 0,(function*(){this._checkProvider("call");const n=yield ln(this.checkTransaction(e));return yield this.provider.call(n,t)}))}sendTransaction(e){return Qa(this,void 0,void 0,(function*(){this._checkProvider("sendTransaction");const t=yield this.populateTransaction(e),n=yield this.signTransaction(t);return yield this.provider.sendTransaction(n)}))}getChainId(){return Qa(this,void 0,void 0,(function*(){this._checkProvider("getChainId");return(yield this.provider.getNetwork()).chainId}))}getGasPrice(){return Qa(this,void 0,void 0,(function*(){return this._checkProvider("getGasPrice"),yield this.provider.getGasPrice()}))}getFeeData(){return Qa(this,void 0,void 0,(function*(){return this._checkProvider("getFeeData"),yield this.provider.getFeeData()}))}resolveName(e){return Qa(this,void 0,void 0,(function*(){return this._checkProvider("resolveName"),yield this.provider.resolveName(e)}))}checkTransaction(e){for(const t in e)-1===Ja.indexOf(t)&&Ya.throwArgumentError("invalid transaction key: "+t,"transaction",e);const t=pn(e);return null==t.from?t.from=this.getAddress():t.from=Promise.all([Promise.resolve(t.from),this.getAddress()]).then((t=>(t[0].toLowerCase()!==t[1].toLowerCase()&&Ya.throwArgumentError("from address mismatch","transaction",e),t[0]))),t}populateTransaction(e){return Qa(this,void 0,void 0,(function*(){const t=yield ln(this.checkTransaction(e));null!=t.to&&(t.to=Promise.resolve(t.to).then((e=>Qa(this,void 0,void 0,(function*(){if(null==e)return null;const t=yield this.resolveName(e);return null==t&&Ya.throwArgumentError("provided ENS name resolves to null","tx.to",e),t})))),t.to.catch((e=>{})));const n=null!=t.maxFeePerGas||null!=t.maxPriorityFeePerGas;if(null==t.gasPrice||2!==t.type&&!n?0!==t.type&&1!==t.type||!n||Ya.throwArgumentError("pre-eip-1559 transaction do not support maxFeePerGas/maxPriorityFeePerGas","transaction",e):Ya.throwArgumentError("eip-1559 transaction do not support gasPrice","transaction",e),2!==t.type&&null!=t.type||null==t.maxFeePerGas||null==t.maxPriorityFeePerGas)if(0===t.type||1===t.type)null==t.gasPrice&&(t.gasPrice=this.getGasPrice());else{const e=yield this.getFeeData();if(null==t.type)if(null!=e.maxFeePerGas&&null!=e.maxPriorityFeePerGas)if(t.type=2,null!=t.gasPrice){const e=t.gasPrice;delete t.gasPrice,t.maxFeePerGas=e,t.maxPriorityFeePerGas=e}else null==t.maxFeePerGas&&(t.maxFeePerGas=e.maxFeePerGas),null==t.maxPriorityFeePerGas&&(t.maxPriorityFeePerGas=e.maxPriorityFeePerGas);else null!=e.gasPrice?(n&&Ya.throwError("network does not support EIP-1559",Lt.errors.UNSUPPORTED_OPERATION,{operation:"populateTransaction"}),null==t.gasPrice&&(t.gasPrice=e.gasPrice),t.type=0):Ya.throwError("failed to get consistent fee data",Lt.errors.UNSUPPORTED_OPERATION,{operation:"signer.getFeeData"});else 2===t.type&&(null==t.maxFeePerGas&&(t.maxFeePerGas=e.maxFeePerGas),null==t.maxPriorityFeePerGas&&(t.maxPriorityFeePerGas=e.maxPriorityFeePerGas))}else t.type=2;return null==t.nonce&&(t.nonce=this.getTransactionCount("pending")),null==t.gasLimit&&(t.gasLimit=this.estimateGas(t).catch((e=>{if(er.indexOf(e.code)>=0)throw e;return Ya.throwError("cannot estimate gas; transaction may fail or may require manual gas limit",Lt.errors.UNPREDICTABLE_GAS_LIMIT,{error:e,tx:t})}))),null==t.chainId?t.chainId=this.getChainId():t.chainId=Promise.all([Promise.resolve(t.chainId),this.getChainId()]).then((t=>(0!==t[1]&&t[0]!==t[1]&&Ya.throwArgumentError("chainId address mismatch","transaction",e),t[0]))),yield ln(t)}))}_checkProvider(e){this.provider||Ya.throwError("missing provider",Lt.errors.UNSUPPORTED_OPERATION,{operation:e||"_checkProvider"})}static isSigner(e){return!(!e||!e._isSigner)}}class nr extends tr{constructor(e,t){super(),cn(this,"address",e),cn(this,"provider",t||null)}getAddress(){return Promise.resolve(this.address)}_fail(e,t){return Promise.resolve().then((()=>{Ya.throwError(e,Lt.errors.UNSUPPORTED_OPERATION,{operation:t})}))}signMessage(e){return this._fail("VoidSigner cannot sign messages","signMessage")}signTransaction(e){return this._fail("VoidSigner cannot sign transactions","signTransaction")}_signTypedData(e,t,n){return this._fail("VoidSigner cannot sign typed data","signTypedData")}connect(e){return new nr(this.address,e)}}const ar=new Lt("transactions/5.7.0");var rr;function ir(e,t){return{address:ia(e),storageKeys:(t||[]).map(((t,n)=>(32!==function(e){if("string"!=typeof e)e=Xt(e);else if(!Ht(e)||e.length%2)return null;return(e.length-2)/2}(t)&&ar.throwArgumentError("invalid access list storageKey",`accessList[${e}:${n}]`,t),t.toLowerCase())))}}!function(e){e[e.legacy=0]="legacy",e[e.eip2930=1]="eip2930",e[e.eip1559=2]="eip1559"}(rr||(rr={}));var sr=function(e,t,n,a){return new(n||(n=Promise))((function(r,i){function s(e){try{d(a.next(e))}catch(e){i(e)}}function o(e){try{d(a.throw(e))}catch(e){i(e)}}function d(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,o)}d((a=a.apply(e,t||[])).next())}))};const or=new Lt("contracts/5.7.0");function dr(e,t){return sr(this,void 0,void 0,(function*(){const n=yield t;"string"!=typeof n&&or.throwArgumentError("invalid address or ENS name","name",n);try{return ia(n)}catch(e){}e||or.throwError("a provider or signer is needed to resolve ENS names",Lt.errors.UNSUPPORTED_OPERATION,{operation:"resolveName"});const a=yield e.resolveName(n);return null==a&&or.throwArgumentError("resolver or addr is not configured for ENS name","name",n),a}))}function ur(e,t,n){return sr(this,void 0,void 0,(function*(){return Array.isArray(n)?yield Promise.all(n.map(((n,a)=>ur(e,Array.isArray(t)?t[a]:t[n.name],n)))):"address"===n.type?yield dr(e,t):"tuple"===n.type?yield ur(e,t,n.components):"array"===n.baseType?Array.isArray(t)?yield Promise.all(t.map((t=>ur(e,t,n.arrayChildren)))):Promise.reject(or.makeError("invalid value for array",Lt.errors.INVALID_ARGUMENT,{argument:"value",value:t})):t}))}function cr(e,t,n){return sr(this,void 0,void 0,(function*(){let a={};n.length===t.inputs.length+1&&"object"==typeof n[n.length-1]&&(a=pn(n.pop())),or.checkArgumentCount(n.length,t.inputs.length,"passed to contract"),e.signer?a.from?a.from=ln({override:dr(e.signer,a.from),signer:e.signer.getAddress()}).then((e=>sr(this,void 0,void 0,(function*(){return ia(e.signer)!==e.override&&or.throwError("Contract with a Signer cannot override from",Lt.errors.UNSUPPORTED_OPERATION,{operation:"overrides.from"}),e.override})))):a.from=e.signer.getAddress():a.from&&(a.from=dr(e.provider,a.from));const r=yield ln({args:ur(e.signer||e.provider,n,t.inputs),address:e.resolvedAddress,overrides:ln(a)||{}}),i=e.interface.encodeFunctionData(t,r.args),s={data:i,to:r.address},o=r.overrides;if(null!=o.nonce&&(s.nonce=nn.from(o.nonce).toNumber()),null!=o.gasLimit&&(s.gasLimit=nn.from(o.gasLimit)),null!=o.gasPrice&&(s.gasPrice=nn.from(o.gasPrice)),null!=o.maxFeePerGas&&(s.maxFeePerGas=nn.from(o.maxFeePerGas)),null!=o.maxPriorityFeePerGas&&(s.maxPriorityFeePerGas=nn.from(o.maxPriorityFeePerGas)),null!=o.from&&(s.from=o.from),null!=o.type&&(s.type=o.type),null!=o.accessList&&(s.accessList=function(e){if(Array.isArray(e))return e.map(((e,t)=>Array.isArray(e)?(e.length>2&&ar.throwArgumentError("access list expected to be [ address, storageKeys[] ]",`value[${t}]`,e),ir(e[0],e[1])):ir(e.address,e.storageKeys)));const t=Object.keys(e).map((t=>{const n=e[t].reduce(((e,t)=>(e[t]=!0,e)),{});return ir(t,Object.keys(n).sort())}));return t.sort(((e,t)=>e.address.localeCompare(t.address))),t}(o.accessList)),null==s.gasLimit&&null!=t.gas){let e=21e3;const n=Wt(i);for(let t=0;t<n.length;t++)e+=4,n[t]&&(e+=64);s.gasLimit=nn.from(t.gas).add(e)}if(o.value){const e=nn.from(o.value);e.isZero()||t.payable||or.throwError("non-payable method cannot override value",Lt.errors.UNSUPPORTED_OPERATION,{operation:"overrides.value",value:a.value}),s.value=e}o.customData&&(s.customData=pn(o.customData)),o.ccipReadEnabled&&(s.ccipReadEnabled=!!o.ccipReadEnabled),delete a.nonce,delete a.gasLimit,delete a.gasPrice,delete a.from,delete a.value,delete a.type,delete a.accessList,delete a.maxFeePerGas,delete a.maxPriorityFeePerGas,delete a.customData,delete a.ccipReadEnabled;const d=Object.keys(a).filter((e=>null!=a[e]));return d.length&&or.throwError(`cannot override ${d.map((e=>JSON.stringify(e))).join(",")}`,Lt.errors.UNSUPPORTED_OPERATION,{operation:"overrides",overrides:d}),s}))}function fr(e,t,n){const a=e.signer||e.provider;return function(...r){return sr(this,void 0,void 0,(function*(){let i;if(r.length===t.inputs.length+1&&"object"==typeof r[r.length-1]){const e=pn(r.pop());null!=e.blockTag&&(i=yield e.blockTag),delete e.blockTag,r.push(e)}null!=e.deployTransaction&&(yield e._deployed(i));const s=yield cr(e,t,r),o=yield a.call(s,i);try{let a=e.interface.decodeFunctionResult(t,o);return n&&1===t.outputs.length&&(a=a[0]),a}catch(t){throw t.code===Lt.errors.CALL_EXCEPTION&&(t.address=e.address,t.args=r,t.transaction=s),t}}))}}function lr(e,t){return function(...n){return sr(this,void 0,void 0,(function*(){e.signer||or.throwError("sending a transaction requires a signer",Lt.errors.UNSUPPORTED_OPERATION,{operation:"sendTransaction"}),null!=e.deployTransaction&&(yield e._deployed());const a=yield cr(e,t,n),r=yield e.signer.sendTransaction(a);return function(e,t){const n=t.wait.bind(t);t.wait=t=>n(t).then((t=>(t.events=t.logs.map((n=>{let a=yn(n),r=null;try{r=e.interface.parseLog(n)}catch(e){}return r&&(a.args=r.args,a.decode=(t,n)=>e.interface.decodeEventLog(r.eventFragment,t,n),a.event=r.name,a.eventSignature=r.signature),a.removeListener=()=>e.provider,a.getBlock=()=>e.provider.getBlock(t.blockHash),a.getTransaction=()=>e.provider.getTransaction(t.transactionHash),a.getTransactionReceipt=()=>Promise.resolve(t),a})),t)))}(e,r),r}))}}function pr(e,t,n){return t.constant?fr(e,t,n):lr(e,t)}function hr(e){return!e.address||null!=e.topics&&0!==e.topics.length?(e.address||"*")+"@"+(e.topics?e.topics.map((e=>Array.isArray(e)?e.join("|"):e)).join(":"):""):"*"}class mr{constructor(e,t){cn(this,"tag",e),cn(this,"filter",t),this._listeners=[]}addListener(e,t){this._listeners.push({listener:e,once:t})}removeListener(e){let t=!1;this._listeners=this._listeners.filter((n=>!(!t&&n.listener===e)||(t=!0,!1)))}removeAllListeners(){this._listeners=[]}listeners(){return this._listeners.map((e=>e.listener))}listenerCount(){return this._listeners.length}run(e){const t=this.listenerCount();return this._listeners=this._listeners.filter((t=>{const n=e.slice();return setTimeout((()=>{t.listener.apply(this,n)}),0),!t.once})),t}prepareEvent(e){}getEmit(e){return[e]}}class br extends mr{constructor(){super("error",null)}}class yr extends mr{constructor(e,t,n,a){const r={address:e};let i=t.getEventTopic(n);a?(i!==a[0]&&or.throwArgumentError("topic mismatch","topics",a),r.topics=a.slice()):r.topics=[i],super(hr(r),r),cn(this,"address",e),cn(this,"interface",t),cn(this,"fragment",n)}prepareEvent(e){super.prepareEvent(e),e.event=this.fragment.name,e.eventSignature=this.fragment.format(),e.decode=(e,t)=>this.interface.decodeEventLog(this.fragment,e,t);try{e.args=this.interface.decodeEventLog(this.fragment,e.data,e.topics)}catch(t){e.args=null,e.decodeError=t}}getEmit(e){const t=function(e){const t=[],n=function(e,a){if(Array.isArray(a))for(let r in a){const i=e.slice();i.push(r);try{n(i,a[r])}catch(e){t.push({path:i,error:e})}}};return n([],e),t}(e.args);if(t.length)throw t[0].error;const n=(e.args||[]).slice();return n.push(e),n}}class gr extends mr{constructor(e,t){super("*",{address:e}),cn(this,"address",e),cn(this,"interface",t)}prepareEvent(e){super.prepareEvent(e);try{const t=this.interface.parseLog(e);e.event=t.name,e.eventSignature=t.signature,e.decode=(e,n)=>this.interface.decodeEventLog(t.eventFragment,e,n),e.args=t.args}catch(e){}}}class Er{constructor(e,t,n){cn(this,"interface",fn(new.target,"getInterface")(t)),null==n?(cn(this,"provider",null),cn(this,"signer",null)):tr.isSigner(n)?(cn(this,"provider",n.provider||null),cn(this,"signer",n)):Ka.isProvider(n)?(cn(this,"provider",n),cn(this,"signer",null)):or.throwArgumentError("invalid signer or provider","signerOrProvider",n),cn(this,"callStatic",{}),cn(this,"estimateGas",{}),cn(this,"functions",{}),cn(this,"populateTransaction",{}),cn(this,"filters",{});{const e={};Object.keys(this.interface.events).forEach((t=>{const n=this.interface.events[t];cn(this.filters,t,((...e)=>({address:this.address,topics:this.interface.encodeFilterTopics(n,e)}))),e[n.name]||(e[n.name]=[]),e[n.name].push(t)})),Object.keys(e).forEach((t=>{const n=e[t];1===n.length?cn(this.filters,t,this.filters[n[0]]):or.warn(`Duplicate definition of ${t} (${n.join(", ")})`)}))}if(cn(this,"_runningEvents",{}),cn(this,"_wrappedEmits",{}),null==e&&or.throwArgumentError("invalid contract address or ENS name","addressOrName",e),cn(this,"address",e),this.provider)cn(this,"resolvedAddress",dr(this.provider,e));else try{cn(this,"resolvedAddress",Promise.resolve(ia(e)))}catch(e){or.throwError("provider is required to use ENS name as contract address",Lt.errors.UNSUPPORTED_OPERATION,{operation:"new Contract"})}this.resolvedAddress.catch((e=>{}));const a={},r={};Object.keys(this.interface.functions).forEach((e=>{const t=this.interface.functions[e];if(r[e])or.warn(`Duplicate ABI entry for ${JSON.stringify(e)}`);else{r[e]=!0;{const n=t.name;a[`%${n}`]||(a[`%${n}`]=[]),a[`%${n}`].push(e)}null==this[e]&&cn(this,e,pr(this,t,!0)),null==this.functions[e]&&cn(this.functions,e,pr(this,t,!1)),null==this.callStatic[e]&&cn(this.callStatic,e,fr(this,t,!0)),null==this.populateTransaction[e]&&cn(this.populateTransaction,e,function(e,t){return function(...n){return cr(e,t,n)}}(this,t)),null==this.estimateGas[e]&&cn(this.estimateGas,e,function(e,t){const n=e.signer||e.provider;return function(...a){return sr(this,void 0,void 0,(function*(){n||or.throwError("estimate require a provider or signer",Lt.errors.UNSUPPORTED_OPERATION,{operation:"estimateGas"});const r=yield cr(e,t,a);return yield n.estimateGas(r)}))}}(this,t))}})),Object.keys(a).forEach((e=>{const t=a[e];if(t.length>1)return;e=e.substring(1);const n=t[0];try{null==this[e]&&cn(this,e,this[n])}catch(e){}null==this.functions[e]&&cn(this.functions,e,this.functions[n]),null==this.callStatic[e]&&cn(this.callStatic,e,this.callStatic[n]),null==this.populateTransaction[e]&&cn(this.populateTransaction,e,this.populateTransaction[n]),null==this.estimateGas[e]&&cn(this.estimateGas,e,this.estimateGas[n])}))}static getContractAddress(e){return oa(e)}static getInterface(e){return Xa.isInterface(e)?e:new Xa(e)}deployed(){return this._deployed()}_deployed(e){return this._deployedPromise||(this.deployTransaction?this._deployedPromise=this.deployTransaction.wait().then((()=>this)):this._deployedPromise=this.provider.getCode(this.address,e).then((e=>("0x"===e&&or.throwError("contract not deployed",Lt.errors.UNSUPPORTED_OPERATION,{contractAddress:this.address,operation:"getDeployed"}),this)))),this._deployedPromise}fallback(e){this.signer||or.throwError("sending a transactions require a signer",Lt.errors.UNSUPPORTED_OPERATION,{operation:"sendTransaction(fallback)"});const t=pn(e||{});return["from","to"].forEach((function(e){null!=t[e]&&or.throwError("cannot override "+e,Lt.errors.UNSUPPORTED_OPERATION,{operation:e})})),t.to=this.resolvedAddress,this.deployed().then((()=>this.signer.sendTransaction(t)))}connect(e){"string"==typeof e&&(e=new nr(e,this.provider));const t=new this.constructor(this.address,this.interface,e);return this.deployTransaction&&cn(t,"deployTransaction",this.deployTransaction),t}attach(e){return new this.constructor(e,this.interface,this.signer||this.provider)}static isIndexed(e){return za.isIndexed(e)}_normalizeRunningEvent(e){return this._runningEvents[e.tag]?this._runningEvents[e.tag]:e}_getRunningEvent(e){if("string"==typeof e){if("error"===e)return this._normalizeRunningEvent(new br);if("event"===e)return this._normalizeRunningEvent(new mr("event",null));if("*"===e)return this._normalizeRunningEvent(new gr(this.address,this.interface));const t=this.interface.getEvent(e);return this._normalizeRunningEvent(new yr(this.address,this.interface,t))}if(e.topics&&e.topics.length>0){try{const t=e.topics[0];if("string"!=typeof t)throw new Error("invalid topic");const n=this.interface.getEvent(t);return this._normalizeRunningEvent(new yr(this.address,this.interface,n,e.topics))}catch(e){}const t={address:this.address,topics:e.topics};return this._normalizeRunningEvent(new mr(hr(t),t))}return this._normalizeRunningEvent(new gr(this.address,this.interface))}_checkRunningEvents(e){if(0===e.listenerCount()){delete this._runningEvents[e.tag];const t=this._wrappedEmits[e.tag];t&&e.filter&&(this.provider.off(e.filter,t),delete this._wrappedEmits[e.tag])}}_wrapEvent(e,t,n){const a=yn(t);return a.removeListener=()=>{n&&(e.removeListener(n),this._checkRunningEvents(e))},a.getBlock=()=>this.provider.getBlock(t.blockHash),a.getTransaction=()=>this.provider.getTransaction(t.transactionHash),a.getTransactionReceipt=()=>this.provider.getTransactionReceipt(t.transactionHash),e.prepareEvent(a),a}_addEventListener(e,t,n){if(this.provider||or.throwError("events require a provider or a signer with a provider",Lt.errors.UNSUPPORTED_OPERATION,{operation:"once"}),e.addListener(t,n),this._runningEvents[e.tag]=e,!this._wrappedEmits[e.tag]){const n=n=>{let a=this._wrapEvent(e,n,t);if(null==a.decodeError)try{const t=e.getEmit(a);this.emit(e.filter,...t)}catch(e){a.decodeError=e.error}null!=e.filter&&this.emit("event",a),null!=a.decodeError&&this.emit("error",a.decodeError,a)};this._wrappedEmits[e.tag]=n,null!=e.filter&&this.provider.on(e.filter,n)}}queryFilter(e,t,n){const a=this._getRunningEvent(e),r=pn(a.filter);return"string"==typeof t&&Ht(t,32)?(null!=n&&or.throwArgumentError("cannot specify toBlock with blockhash","toBlock",n),r.blockHash=t):(r.fromBlock=null!=t?t:0,r.toBlock=null!=n?n:"latest"),this.provider.getLogs(r).then((e=>e.map((e=>this._wrapEvent(a,e,null)))))}on(e,t){return this._addEventListener(this._getRunningEvent(e),t,!1),this}once(e,t){return this._addEventListener(this._getRunningEvent(e),t,!0),this}emit(e,...t){if(!this.provider)return!1;const n=this._getRunningEvent(e),a=n.run(t)>0;return this._checkRunningEvents(n),a}listenerCount(e){return this.provider?null==e?Object.keys(this._runningEvents).reduce(((e,t)=>e+this._runningEvents[t].listenerCount()),0):this._getRunningEvent(e).listenerCount():0}listeners(e){if(!this.provider)return[];if(null==e){const e=[];for(let t in this._runningEvents)this._runningEvents[t].listeners().forEach((t=>{e.push(t)}));return e}return this._getRunningEvent(e).listeners()}removeAllListeners(e){if(!this.provider)return this;if(null==e){for(const e in this._runningEvents){const t=this._runningEvents[e];t.removeAllListeners(),this._checkRunningEvents(t)}return this}const t=this._getRunningEvent(e);return t.removeAllListeners(),this._checkRunningEvents(t),this}off(e,t){if(!this.provider)return this;const n=this._getRunningEvent(e);return n.removeListener(t),this._checkRunningEvents(n),this}removeListener(e,t){return this.off(e,t)}}class Tr extends Er{}const wr=[{inputs:[{internalType:"address",name:"_gateway",type:"address"},{internalType:"address",name:"_initializerAddress",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"CallerNotBridge",type:"error"},{inputs:[],name:"InvalidAddress",type:"error"},{inputs:[],name:"InvalidChildBridgeAdaptor",type:"error"},{inputs:[],name:"InvalidChildChain",type:"error"},{inputs:[],name:"InvalidSourceAddress",type:"error"},{inputs:[],name:"InvalidSourceChain",type:"error"},{inputs:[],name:"NoGas",type:"error"},{inputs:[],name:"NotApprovedByGateway",type:"error"},{inputs:[],name:"UnauthorizedInitializer",type:"error"},{inputs:[],name:"UnsupportedOperation",type:"error"},{inputs:[],name:"ZeroAddresses",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"string",name:"sourceChain",type:"string"},{indexed:!1,internalType:"string",name:"sourceAddress_",type:"string"},{indexed:!1,internalType:"bytes",name:"payload_",type:"bytes"}],name:"AdaptorExecute",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"string",name:"childChain",type:"string"},{indexed:!0,internalType:"string",name:"childBridgeAdaptor",type:"string"},{indexed:!0,internalType:"bytes",name:"payload",type:"bytes"}],name:"AxelarMessageSent",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"string",name:"oldChildBridgeAdaptor",type:"string"},{indexed:!1,internalType:"string",name:"newChildBridgeAdaptor",type:"string"}],name:"ChildBridgeAdaptorUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"string",name:"oldChildChain",type:"string"},{indexed:!0,internalType:"string",name:"newChildChain",type:"string"}],name:"ChildChainUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldGasService",type:"address"},{indexed:!0,internalType:"address",name:"newGasService",type:"address"}],name:"GasServiceUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint8",name:"version",type:"uint8"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"previousAdminRole",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"newAdminRole",type:"bytes32"}],name:"RoleAdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"address",name:"account",type:"address"},{indexed:!0,internalType:"address",name:"sender",type:"address"}],name:"RoleGranted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"address",name:"account",type:"address"},{indexed:!0,internalType:"address",name:"sender",type:"address"}],name:"RoleRevoked",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldRootBridge",type:"address"},{indexed:!0,internalType:"address",name:"newRootBridge",type:"address"}],name:"RootBridgeUpdated",type:"event"},{inputs:[],name:"BRIDGE_MANAGER_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"DEFAULT_ADMIN_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"GAS_SERVICE_MANAGER_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"TARGET_MANAGER_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"childBridgeAdaptor",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"childChainId",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"commandId",type:"bytes32"},{internalType:"string",name:"sourceChain",type:"string"},{internalType:"string",name:"sourceAddress",type:"string"},{internalType:"bytes",name:"payload",type:"bytes"}],name:"execute",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"commandId",type:"bytes32"},{internalType:"string",name:"sourceChain",type:"string"},{internalType:"string",name:"sourceAddress",type:"string"},{internalType:"bytes",name:"payload",type:"bytes"},{internalType:"string",name:"tokenSymbol",type:"string"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"executeWithToken",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"gasService",outputs:[{internalType:"contract IAxelarGasService",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"gateway",outputs:[{internalType:"contract IAxelarGateway",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"}],name:"getRoleAdmin",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"grantBridgeManagerRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"grantGasServiceManagerRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"grantRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"grantTargetManagerRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"hasRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{components:[{internalType:"address",name:"defaultAdmin",type:"address"},{internalType:"address",name:"bridgeManager",type:"address"},{internalType:"address",name:"gasServiceManager",type:"address"},{internalType:"address",name:"targetManager",type:"address"}],internalType:"struct IRootAxelarBridgeAdaptor.InitializationRoles",name:"_adaptorRoles",type:"tuple"},{internalType:"address",name:"_rootBridge",type:"address"},{internalType:"string",name:"_childChainId",type:"string"},{internalType:"string",name:"_childBridgeAdaptor",type:"string"},{internalType:"address",name:"_gasService",type:"address"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"initializerAddress",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"renounceRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"revokeBridgeManagerRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"revokeGasServiceManagerRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"revokeRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"revokeTargetManagerRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"rootBridge",outputs:[{internalType:"contract IRootERC20Bridge",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"payload",type:"bytes"},{internalType:"address",name:"refundRecipient",type:"address"}],name:"sendMessage",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"newChildBridgeAdaptor",type:"string"}],name:"updateChildBridgeAdaptor",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"newChildChain",type:"string"}],name:"updateChildChain",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newGasService",type:"address"}],name:"updateGasService",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newRootBridge",type:"address"}],name:"updateRootBridge",outputs:[],stateMutability:"nonpayable",type:"function"}];var vr,Rr,Ir,Ar;!function(e){e.SUCCESS="SUCCESS",e.PENDING="PENDING",e.FAILED="FAILED"}(vr||(vr={})),function(e){e.DEPOSIT="DEPOSIT",e.WITHDRAW="WITHDRAW",e.FINALISE_WITHDRAWAL="FINALISE_WITHDRAWAL"}(Rr||(Rr={})),function(e){e[e.DEPOSIT_SOURCE=15e4]="DEPOSIT_SOURCE",e[e.DEPOSIT_DESTINATION=25e4]="DEPOSIT_DESTINATION",e[e.WITHDRAW_SOURCE=25e4]="WITHDRAW_SOURCE",e[e.WITHDRAW_DESTINATION=25e4]="WITHDRAW_DESTINATION",e[e.MAP_TOKEN_SOURCE=2e5]="MAP_TOKEN_SOURCE",e[e.MAP_TOKEN_DESTINATION=2e5]="MAP_TOKEN_DESTINATION",e[e.FINALISE_WITHDRAWAL=2e5]="FINALISE_WITHDRAWAL",e[e.APPROVE_TOKEN=55e3]="APPROVE_TOKEN"}(Ir||(Ir={})),function(e){e.PENDING="PENDING",e.PROCESSING="PROCESSING",e.COMPLETE="COMPLETE",e.RETRY="RETRY",e.ERROR="ERROR",e.NOT_ENOUGH_GAS="NOT_ENOUGH_GAS",e.FLOW_RATE_CONTROLLED="FLOW_RATE_CONTROLLED"}(Ar||(Ar={}));const _r="NATIVE",Mr="11155111",Nr="15003",Cr="13473",Or="13371",Sr={mainnet:"0x3a0c2ba54d6cbd3121f01b96dfd20e99d1696c9d",testnet:"0x1CcCa691501174B4A623CeDA58cC8f1a76dc3439",devnet:""},Pr={mainnet:"0xf57e7e7c23978c3caec3c3548e3d615c346e79ff",testnet:"0xe2629e08f4125d14e446660028bD98ee60EE69F2",devnet:""},Dr={mainnet:"0x52a6c53869ce09a731cd772f245b97a4401d3348",testnet:"0xe9E96d1aad82562b7588F03f49aD34186f996478",devnet:""},xr={mainnet:"0x4f49b53928a71e553bb1b0f66a5bcb54fd4e8932",testnet:"0x6328Ac88ba8D466a0F551FC7C42C61d1aC7f92ab",devnet:""},kr={mainnet:"0x4f49b53928a71e553bb1b0f66a5bcb54fd4e8932",testnet:"0x6328Ac88ba8D466a0F551FC7C42C61d1aC7f92ab",devnet:""},Lr={mainnet:"immutable",testnet:"immutable",devnet:""},Ur={mainnet:"0x4F4495243837681061C4743b74B3eEdf548D56A5",testnet:"0xe432150cce91c13a887f7D836923d5597adD8E31",devnet:""},Fr={rootChainID:Mr,childChainID:Nr},Br={rootChainID:Mr,childChainID:Cr},Gr={rootChainID:"1",childChainID:Or},jr={mainnet:"https://api.gmp.axelarscan.io",testnet:"https://testnet.api.gmp.axelarscan.io",devnet:"https://stagenet.api.gmp.axelarscan.io"},Wr={mainnet:"https://bridge-api.immutable.com/v1/tenderly/estimate",testnet:"https://bridge-api.sandbox.immutable.com/v1/tenderly/estimate",devnet:"https://bridge-api.dev.immutable.com/v1/tenderly/estimate"},Vr={11155111:{id:"ethereum-sepolia",symbol:"ETH"},1:{id:"ethereum",symbol:"ETH"},15003:{id:"immutable",symbol:"IMX"},13473:{id:"immutable",symbol:"IMX"},13371:{id:"immutable",symbol:"IMX"}},zr={token:"deposit",tokenTo:"depositTo",native:"depositETH",nativeTo:"depositToETH"},Hr={token:"withdraw",tokenTo:"withdrawTo",native:"withdrawIMX",nativeTo:"withdrawIMXTo"};var qr;!function(e){e.UNSUPPORTED_ERROR="UNSUPPORTED_ERROR",e.INVALID_ADDRESS="INVALID_ADDRESS",e.INVALID_AMOUNT="INVALID_AMOUNT",e.INTERNAL_ERROR="INTERNAL_ERROR",e.PROVIDER_ERROR="PROVIDER_ERROR",e.ROOT_PROVIDER_ERROR="ROOT_PROVIDER_ERROR",e.CHILD_PROVIDER_ERROR="CHILD_PROVIDER_ERROR",e.TRANSACTION_REVERTED="TRANSACTION_REVERTED",e.INVALID_TOKEN="INVALID_TOKEN",e.INVALID_TRANSACTION="INVALID_TRANSACTION",e.INVALID_SOURCE_CHAIN_ID="INVALID_SOURCE_CHAIN_ID",e.INVALID_DESTINATION_CHAIN_ID="INVALID_DESTINATION_CHAIN_ID",e.INVALID_SOURCE_OR_DESTINATION_CHAIN="INVALID_SOURCE_OR_DESTINATION_CHAIN",e.CHAIN_IDS_MATCH="CHAIN_IDS_MATCH",e.AXELAR_CHAIN_NOT_FOUND="AXELAR_CHAIN_NOT_FOUND",e.AXELAR_GAS_ESTIMATE_FAILED="AXELAR_GAS_ESTIMATE_FAILED",e.TENDERLY_GAS_ESTIMATE_FAILED="TENDERLY_GAS_ESTIMATE_FAILED",e.INVALID_RECIPIENT="INVALID_RECIPIENT",e.FLOW_RATE_ERROR="FLOW_RATE_ERROR",e.INVALID_FLOWRATE_INDEX="INVALID_FLOWRATE_INDEX"}(qr||(qr={}));class Xr extends Error{type;constructor(e,t){super(e),this.type=t}}const $r=async(e,t,n)=>{try{return await e()}catch(e){let a=`${t}: ${e.message}`||"UnknownError";throw n&&(a=`${n}: ${a}`),new Xr(a,t)}};async function Zr(e,t,n){return await $r((async()=>new Tr(e,t,n)),qr.PROVIDER_ERROR)}function Kr(e,t){let n;return n=e===Gr.rootChainID||e===Gr.childChainID?t.mainnet:e===Br.rootChainID||e===Br.childChainID?t.testnet:t.devnet,n}function Qr(e,t){return e.toUpperCase()===function(e){return Kr(e,Dr)}(t).toUpperCase()}function Yr(e){return Kr(e,Pr)}function Jr(e){return Kr(e,jr)}function ei(e,t){return e.toUpperCase()===function(e){return Kr(e,Sr)}(t).toUpperCase()}function ti(e,t){return e.sourceChainId===t.rootChainID&&e.destinationChainId===t.childChainID&&e.action===Rr.DEPOSIT}function ni(e,t){return e.sourceChainId===t.childChainID&&e.destinationChainId===t.rootChainID&&e.action===Rr.WITHDRAW}async function ai(e,t,n,a){let r;if(t===a.bridgeInstance.rootChainID){if(!Qr(e,t))return;r=a.rootProvider}else{if(i=t,e.toUpperCase()!==Yr(i).toUpperCase())return;r=a.childProvider}var i;if((await r.getCode(n)).length<=2)return;const s=await Zr(n,["function receive()"],r);try{await s.estimateGas.receive()}catch{try{await r.estimateGas({to:n})}catch{throw new Xr(`address ${n} is not a valid receipient`,qr.INVALID_RECIPIENT)}}}async function ri(e,t,n){if(!(e===n.bridgeInstance.rootChainID||e===n.bridgeInstance.childChainID))throw new Xr(`the sourceChainId ${e} is not a valid`,qr.INVALID_SOURCE_CHAIN_ID);if(!(t===n.bridgeInstance.rootChainID||t===n.bridgeInstance.childChainID))throw new Xr(`the destinationChainId ${t} is not a valid`,qr.INVALID_DESTINATION_CHAIN_ID);if(e===t)throw new Xr(`the sourceChainId ${e} cannot be the same as the destinationChainId ${t}`,qr.CHAIN_IDS_MATCH)}async function ii(e,t){if(await ri(e.sourceChainId,e.destinationChainId,t),!sa(e.senderAddress)||!sa(e.recipientAddress))throw new Xr(`address ${e.senderAddress} or ${e.recipientAddress} is not a valid address`,qr.INVALID_ADDRESS);if(e.amount.isNegative()||e.amount.isZero())throw new Xr(`deposit amount ${e.amount.toString()} is invalid`,qr.INVALID_AMOUNT);if(e.token.toUpperCase()!==_r&&!sa(e.token))throw new Xr(`token address ${e.token} is not a valid address`,qr.INVALID_ADDRESS)}function si(e,t){const n=(e=>(e=>!!e.maxFeePerGas&&!!e.maxPriorityFeePerGas&&!!e.lastBaseFeePerGas)(e)?nn.from(e.lastBaseFeePerGas).add(nn.from(e.maxPriorityFeePerGas)):e.gasPrice?nn.from(e.gasPrice):null)(e);return n?n.mul(t):nn.from(0)}const oi=[{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint8",name:"version",type:"uint8"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"userAddress",type:"address"},{indexed:!1,internalType:"address",name:"relayerAddress",type:"address"},{indexed:!1,internalType:"bytes",name:"functionSignature",type:"bytes"}],name:"MetaTransactionExecuted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"bridge",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"burn",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"subtractedValue",type:"uint256"}],name:"decreaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"userAddress",type:"address"},{internalType:"bytes",name:"functionSignature",type:"bytes"},{internalType:"bytes32",name:"sigR",type:"bytes32"},{internalType:"bytes32",name:"sigS",type:"bytes32"},{internalType:"uint8",name:"sigV",type:"uint8"}],name:"executeMetaTransaction",outputs:[{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"getNonce",outputs:[{internalType:"uint256",name:"nonce",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"addedValue",type:"uint256"}],name:"increaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"rootToken_",type:"address"},{internalType:"string",name:"name_",type:"string"},{internalType:"string",name:"symbol_",type:"string"},{internalType:"uint8",name:"decimals_",type:"uint8"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"offset",type:"uint256"}],name:"invalidateNext",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"mint",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"rootToken",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"}];async function di(e,t,n){if(e.toUpperCase()===_r||ei(e,t))return Yr(t);const a=await async function(e,t){return Zr(e,oi,t)}(e,n);return $r((()=>a.rootToken()),qr.PROVIDER_ERROR)}async function ui(e,t,n){let a;const r=Kr(e,Wr);const i=n?function(e){const t={};return e.forEach((e=>{const{contractAddress:n,stateDiff:a}=e,{storageSlot:r,value:i}=a;void 0===t[n]&&(t[n]={stateDiff:{}}),t[n].stateDiff[r]=i})),t}(n):void 0;try{a=await Tt.post(r,{jsonrpc:"2.0",id:0,method:"tenderly_estimateGasBundle",params:[t,"latest",i]},{headers:{"Content-Type":"application/json"}})}catch(e){a=e.response}if(a.data.error)throw new Xr(`Estimating gas failed with the reason: ${a.data.error.message}`,qr.TENDERLY_GAS_ESTIMATE_FAILED);const s=a.data.result;if(s.length!==t.length)throw new Xr("Estimating gas failed with mismatched responses",qr.TENDERLY_GAS_ESTIMATE_FAILED);const o=[];for(let e=0;e<s.length;e++){if(s[e].error)throw new Xr(`Estimating deposit gas failed with the reason: ${s[e].error.message}`,qr.TENDERLY_GAS_ESTIMATE_FAILED);if(void 0===s[e].gasUsed)throw new Xr("Estimating gas did not return simulation results",qr.TENDERLY_GAS_ESTIMATE_FAILED);o.push(s[e].gasUsed)}return o}const ci=[{inputs:[{internalType:"address",name:"_initializerAddress",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyMapped",type:"error"},{inputs:[{internalType:"uint256",name:"actualBalance",type:"uint256"},{internalType:"uint256",name:"expectedBalance",type:"uint256"}],name:"BalanceInvariantCheckFailed",type:"error"},{inputs:[],name:"CantMapETH",type:"error"},{inputs:[],name:"CantMapIMX",type:"error"},{inputs:[],name:"CantMapWETH",type:"error"},{inputs:[],name:"ImxDepositLimitExceeded",type:"error"},{inputs:[],name:"ImxDepositLimitTooLow",type:"error"},{inputs:[{internalType:"uint256",name:"lengthOfQueue",type:"uint256"},{internalType:"uint256",name:"requestedIndex",type:"uint256"}],name:"IndexOutsideWithdrawalQueue",type:"error"},{inputs:[],name:"InsufficientValue",type:"error"},{inputs:[],name:"InvalidCapacity",type:"error"},{inputs:[],name:"InvalidChildChain",type:"error"},{inputs:[{internalType:"string",name:"reason",type:"string"}],name:"InvalidData",type:"error"},{inputs:[],name:"InvalidRefillRate",type:"error"},{inputs:[],name:"InvalidToken",type:"error"},{inputs:[{internalType:"address",name:"token",type:"address"},{internalType:"address",name:"actualToken",type:"address"}],name:"MixedTokens",type:"error"},{inputs:[],name:"NoGas",type:"error"},{inputs:[],name:"NonWrappedNativeTransfer",type:"error"},{inputs:[],name:"NotBridgeAdaptor",type:"error"},{inputs:[],name:"NotMapped",type:"error"},{inputs:[],name:"ProvideAtLeastOneIndex",type:"error"},{inputs:[{internalType:"address",name:"receiver",type:"address"}],name:"TokenIsZero",type:"error"},{inputs:[],name:"TokenNotSupported",type:"error"},{inputs:[],name:"UnauthorizedInitializer",type:"error"},{inputs:[{internalType:"address",name:"receiver",type:"address"},{internalType:"uint256",name:"index",type:"uint256"}],name:"WithdrawalAlreadyProcessed",type:"error"},{inputs:[{internalType:"uint256",name:"timeNow",type:"uint256"},{internalType:"uint256",name:"currentWithdrawalTime",type:"uint256"}],name:"WithdrawalRequestTooEarly",type:"error"},{inputs:[],name:"WrongInitializer",type:"error"},{inputs:[],name:"ZeroAddress",type:"error"},{inputs:[],name:"ZeroAmount",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"who",type:"address"}],name:"ActivatedWithdrawalQueue",type:"event"},{anonymous:!1,inputs:[],name:"AutoActivatedWithdrawalQueue",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"rootToken",type:"address"},{indexed:!0,internalType:"address",name:"childToken",type:"address"},{indexed:!1,internalType:"address",name:"depositor",type:"address"},{indexed:!0,internalType:"address",name:"receiver",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ChildChainERC20Deposit",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"who",type:"address"}],name:"DeactivatedWithdrawalQueue",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"token",type:"address"},{indexed:!0,internalType:"address",name:"withdrawer",type:"address"},{indexed:!0,internalType:"address",name:"receiver",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"timestamp",type:"uint256"},{indexed:!1,internalType:"uint256",name:"index",type:"uint256"}],name:"EnQueuedWithdrawal",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"rootToken",type:"address"},{indexed:!1,internalType:"address",name:"depositor",type:"address"},{indexed:!0,internalType:"address",name:"receiver",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"IMXDeposit",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint8",name:"version",type:"uint8"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"rootToken",type:"address"},{indexed:!0,internalType:"address",name:"childToken",type:"address"}],name:"L1TokenMapped",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"rootToken",type:"address"},{indexed:!0,internalType:"address",name:"childToken",type:"address"},{indexed:!1,internalType:"address",name:"depositor",type:"address"},{indexed:!0,internalType:"address",name:"receiver",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"NativeEthDeposit",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"oldImxDepositLimit",type:"uint256"},{indexed:!1,internalType:"uint256",name:"newImxDepositLimit",type:"uint256"}],name:"NewImxDepositLimit",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"account",type:"address"}],name:"Paused",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"token",type:"address"},{indexed:!0,internalType:"address",name:"withdrawer",type:"address"},{indexed:!0,internalType:"address",name:"receiver",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"timestamp",type:"uint256"},{indexed:!1,internalType:"uint256",name:"index",type:"uint256"}],name:"ProcessedWithdrawal",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"token",type:"address"},{indexed:!0,internalType:"address",name:"withdrawer",type:"address"},{indexed:!0,internalType:"address",name:"receiver",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"bool",name:"delayWithdrawalLargeAmount",type:"bool"},{indexed:!1,internalType:"bool",name:"delayWithdrawalUnknownToken",type:"bool"},{indexed:!1,internalType:"bool",name:"withdrawalQueueActivated",type:"bool"}],name:"QueuedWithdrawal",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"token",type:"address"},{indexed:!1,internalType:"uint256",name:"capacity",type:"uint256"},{indexed:!1,internalType:"uint256",name:"refillRate",type:"uint256"},{indexed:!1,internalType:"uint256",name:"largeTransferThreshold",type:"uint256"},{indexed:!1,internalType:"uint256",name:"previousCapacity",type:"uint256"},{indexed:!1,internalType:"uint256",name:"previousRefillRate",type:"uint256"},{indexed:!1,internalType:"uint256",name:"previousLargeTransferThreshold",type:"uint256"}],name:"RateControlThresholdSet",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"previousAdminRole",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"newAdminRole",type:"bytes32"}],name:"RoleAdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"address",name:"account",type:"address"},{indexed:!0,internalType:"address",name:"sender",type:"address"}],name:"RoleGranted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"address",name:"account",type:"address"},{indexed:!0,internalType:"address",name:"sender",type:"address"}],name:"RoleRevoked",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"oldRootBridgeAdaptor",type:"address"},{indexed:!1,internalType:"address",name:"newRootBridgeAdaptor",type:"address"}],name:"RootBridgeAdaptorUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"rootToken",type:"address"},{indexed:!0,internalType:"address",name:"childToken",type:"address"},{indexed:!1,internalType:"address",name:"withdrawer",type:"address"},{indexed:!0,internalType:"address",name:"receiver",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"RootChainERC20Withdraw",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"rootToken",type:"address"},{indexed:!0,internalType:"address",name:"childToken",type:"address"},{indexed:!1,internalType:"address",name:"withdrawer",type:"address"},{indexed:!0,internalType:"address",name:"receiver",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"RootChainETHWithdraw",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"account",type:"address"}],name:"Unpaused",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"rootToken",type:"address"},{indexed:!0,internalType:"address",name:"childToken",type:"address"},{indexed:!1,internalType:"address",name:"depositor",type:"address"},{indexed:!0,internalType:"address",name:"receiver",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"WETHDeposit",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"delay",type:"uint256"},{indexed:!1,internalType:"uint256",name:"previousDelay",type:"uint256"}],name:"WithdrawalDelayUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"token",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"WithdrawalForNonFlowRatedToken",type:"event"},{inputs:[],name:"ADAPTOR_MANAGER_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"DEFAULT_ADMIN_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"DEPOSIT_SIG",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"MAP_TOKEN_SIG",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"NATIVE_ETH",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"NATIVE_IMX",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"PAUSER_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"UNLIMITED_DEPOSIT",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"UNPAUSER_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"VARIABLE_MANAGER_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"WITHDRAW_SIG",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"activateWithdrawalQueue",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"childERC20Bridge",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"childETHToken",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"childTokenTemplate",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"deactivateWithdrawalQueue",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IERC20Metadata",name:"rootToken",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"deposit",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"depositETH",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"contract IERC20Metadata",name:"rootToken",type:"address"},{internalType:"address",name:"receiver",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"depositTo",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"receiver",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"depositToETH",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"receiver",type:"address"},{internalType:"uint256",name:"index",type:"uint256"}],name:"finaliseQueuedWithdrawal",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"receiver",type:"address"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256[]",name:"indices",type:"uint256[]"}],name:"finaliseQueuedWithdrawalsAggregated",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"receiver",type:"address"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"startIndex",type:"uint256"},{internalType:"uint256",name:"stopIndex",type:"uint256"},{internalType:"uint256",name:"maxFind",type:"uint256"}],name:"findPendingWithdrawals",outputs:[{components:[{internalType:"uint256",name:"index",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"timestamp",type:"uint256"}],internalType:"struct FlowRateWithdrawalQueue.FindPendingWithdrawal[]",name:"found",type:"tuple[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"flowRateBuckets",outputs:[{internalType:"uint256",name:"capacity",type:"uint256"},{internalType:"uint256",name:"depth",type:"uint256"},{internalType:"uint256",name:"refillTime",type:"uint256"},{internalType:"uint256",name:"refillRate",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"receiver",type:"address"},{internalType:"uint256[]",name:"indices",type:"uint256[]"}],name:"getPendingWithdrawals",outputs:[{components:[{internalType:"address",name:"withdrawer",type:"address"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"timestamp",type:"uint256"}],internalType:"struct FlowRateWithdrawalQueue.PendingWithdrawal[]",name:"pending",type:"tuple[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"receiver",type:"address"}],name:"getPendingWithdrawalsLength",outputs:[{internalType:"uint256",name:"length",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"}],name:"getRoleAdmin",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"grantAdaptorManagerRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"grantPauserRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"grantRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"grantUnpauserRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"grantVariableManagerRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"hasRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"imxCumulativeDepositLimit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{components:[{internalType:"address",name:"defaultAdmin",type:"address"},{internalType:"address",name:"pauser",type:"address"},{internalType:"address",name:"unpauser",type:"address"},{internalType:"address",name:"variableManager",type:"address"},{internalType:"address",name:"adaptorManager",type:"address"}],internalType:"struct IRootERC20Bridge.InitializationRoles",name:"newRoles",type:"tuple"},{internalType:"address",name:"newRootBridgeAdaptor",type:"address"},{internalType:"address",name:"newChildERC20Bridge",type:"address"},{internalType:"address",name:"newChildTokenTemplate",type:"address"},{internalType:"address",name:"newRootIMXToken",type:"address"},{internalType:"address",name:"newRootWETHToken",type:"address"},{internalType:"uint256",name:"newImxCumulativeDepositLimit",type:"uint256"},{internalType:"address",name:"rateAdmin",type:"address"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{internalType:"address",name:"defaultAdmin",type:"address"},{internalType:"address",name:"pauser",type:"address"},{internalType:"address",name:"unpauser",type:"address"},{internalType:"address",name:"variableManager",type:"address"},{internalType:"address",name:"adaptorManager",type:"address"}],internalType:"struct IRootERC20Bridge.InitializationRoles",name:"",type:"tuple"},{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"},{internalType:"uint256",name:"",type:"uint256"}],name:"initialize",outputs:[],stateMutability:"pure",type:"function"},{inputs:[],name:"initializerAddress",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"largeTransferThresholds",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract IERC20Metadata",name:"rootToken",type:"address"}],name:"mapToken",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data",type:"bytes"}],name:"onMessageReceive",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"pause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"paused",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"renounceRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"revokeAdaptorManagerRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"revokePauserRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"revokeRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"revokeUnpauserRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"revokeVariableManagerRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"rootBridgeAdaptor",outputs:[{internalType:"contract IRootBridgeAdaptor",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"rootIMXToken",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"rootTokenToChildToken",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"rootWETHToken",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"capacity",type:"uint256"},{internalType:"uint256",name:"refillRate",type:"uint256"},{internalType:"uint256",name:"largeTransferThreshold",type:"uint256"}],name:"setRateControlThreshold",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"delay",type:"uint256"}],name:"setWithdrawalDelay",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"unpause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"newImxCumulativeDepositLimit",type:"uint256"}],name:"updateImxCumulativeDepositLimit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newRootBridgeAdaptor",type:"address"}],name:"updateRootBridgeAdaptor",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"withdrawalDelay",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"withdrawalQueueActivated",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{stateMutability:"payable",type:"receive"}],fi=[{inputs:[{internalType:"string",name:"name_",type:"string"},{internalType:"string",name:"symbol_",type:"string"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"subtractedValue",type:"uint256"}],name:"decreaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"addedValue",type:"uint256"}],name:"increaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"}],li=[{inputs:[{internalType:"address",name:"_initializerAddress",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyMapped",type:"error"},{inputs:[{internalType:"uint256",name:"actualBalance",type:"uint256"},{internalType:"uint256",name:"expectedBalance",type:"uint256"}],name:"BalanceInvariantCheckFailed",type:"error"},{inputs:[],name:"BridgeNotSet",type:"error"},{inputs:[],name:"BurnFailed",type:"error"},{inputs:[],name:"CantMapETH",type:"error"},{inputs:[],name:"CantMapIMX",type:"error"},{inputs:[],name:"EmptyTokenContract",type:"error"},{inputs:[],name:"IncorrectBridgeAddress",type:"error"},{inputs:[],name:"InsufficientIMX",type:"error"},{inputs:[],name:"InsufficientValue",type:"error"},{inputs:[{internalType:"string",name:"reason",type:"string"}],name:"InvalidData",type:"error"},{inputs:[],name:"MintFailed",type:"error"},{inputs:[],name:"NoGas",type:"error"},{inputs:[],name:"NonWrappedNativeTransfer",type:"error"},{inputs:[],name:"NotBridgeAdaptor",type:"error"},{inputs:[],name:"NotMapped",type:"error"},{inputs:[],name:"TransferWIMXFailed",type:"error"},{inputs:[],name:"UnauthorizedInitializer",type:"error"},{inputs:[],name:"ZeroAddress",type:"error"},{inputs:[],name:"ZeroAddressRootToken",type:"error"},{inputs:[],name:"ZeroAmount",type:"error"},{inputs:[],name:"ZeroValue",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"oldChildBridgeAdaptor",type:"address"},{indexed:!1,internalType:"address",name:"newChildBridgeAdaptor",type:"address"}],name:"ChildBridgeAdaptorUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"rootToken",type:"address"},{indexed:!0,internalType:"address",name:"childToken",type:"address"},{indexed:!1,internalType:"address",name:"depositor",type:"address"},{indexed:!0,internalType:"address",name:"receiver",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ChildChainERC20Deposit",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"rootToken",type:"address"},{indexed:!0,internalType:"address",name:"childToken",type:"address"},{indexed:!1,internalType:"address",name:"depositor",type:"address"},{indexed:!0,internalType:"address",name:"receiver",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ChildChainERC20Withdraw",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"depositor",type:"address"},{indexed:!0,internalType:"address",name:"receiver",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ChildChainEthWithdraw",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"rootToken",type:"address"},{indexed:!0,internalType:"address",name:"depositor",type:"address"},{indexed:!0,internalType:"address",name:"receiver",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ChildChainNativeIMXWithdraw",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"rootToken",type:"address"},{indexed:!0,internalType:"address",name:"depositor",type:"address"},{indexed:!0,internalType:"address",name:"receiver",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ChildChainWrappedIMXWithdraw",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"rootToken",type:"address"},{indexed:!0,internalType:"address",name:"depositor",type:"address"},{indexed:!0,internalType:"address",name:"receiver",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"IMXDeposit",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint8",name:"version",type:"uint8"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"rootToken",type:"address"},{indexed:!1,internalType:"address",name:"childToken",type:"address"}],name:"L2TokenMapped",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"rootToken",type:"address"},{indexed:!0,internalType:"address",name:"childToken",type:"address"},{indexed:!1,internalType:"address",name:"depositor",type:"address"},{indexed:!0,internalType:"address",name:"receiver",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"NativeEthDeposit",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"account",type:"address"}],name:"Paused",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"depositor",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"PrivilegedDeposit",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"previousAdminRole",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"newAdminRole",type:"bytes32"}],name:"RoleAdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"address",name:"account",type:"address"},{indexed:!0,internalType:"address",name:"sender",type:"address"}],name:"RoleGranted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"address",name:"account",type:"address"},{indexed:!0,internalType:"address",name:"sender",type:"address"}],name:"RoleRevoked",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"account",type:"address"}],name:"Unpaused",type:"event"},{inputs:[],name:"ADAPTOR_MANAGER_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"DEFAULT_ADMIN_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"DEPOSIT_SIG",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"MAP_TOKEN_SIG",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"NATIVE_ETH",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"NATIVE_IMX",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"PAUSER_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"PRIVILEGED_DEPOSITOR_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"UNPAUSER_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"WITHDRAW_SIG",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"childBridgeAdaptor",outputs:[{internalType:"contract IChildBridgeAdaptor",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"childETHToken",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"childTokenTemplate",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"}],name:"getRoleAdmin",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"grantAdaptorManagerRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"grantPauserRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"grantRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"grantUnpauserRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"hasRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{components:[{internalType:"address",name:"defaultAdmin",type:"address"},{internalType:"address",name:"pauser",type:"address"},{internalType:"address",name:"unpauser",type:"address"},{internalType:"address",name:"adaptorManager",type:"address"},{internalType:"address",name:"initialDepositor",type:"address"},{internalType:"address",name:"treasuryManager",type:"address"}],internalType:"struct IChildERC20Bridge.InitializationRoles",name:"newRoles",type:"tuple"},{internalType:"address",name:"newBridgeAdaptor",type:"address"},{internalType:"address",name:"newChildTokenTemplate",type:"address"},{internalType:"address",name:"newRootIMXToken",type:"address"},{internalType:"address",name:"newWIMXToken",type:"address"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"initializerAddress",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data",type:"bytes"}],name:"onMessageReceive",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"pause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"paused",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"privilegedDeposit",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"renounceRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"revokeAdaptorManagerRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"revokePauserRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"revokeRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"revokeUnpauserRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"rootIMXToken",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"rootTokenToChildToken",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"unpause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newBridgeAdaptor",type:"address"}],name:"updateChildBridgeAdaptor",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"wIMXToken",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract IChildERC20",name:"childToken",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"withdraw",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"withdrawETH",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"receiver",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"withdrawETHTo",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"withdrawIMX",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"receiver",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"withdrawIMXTo",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"contract IChildERC20",name:"childToken",type:"address"},{internalType:"address",name:"receiver",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"withdrawTo",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"withdrawWIMX",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"receiver",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"withdrawWIMXTo",outputs:[],stateMutability:"payable",type:"function"},{stateMutability:"payable",type:"receive"}];var pi,hi;!function(e){e.SRC_GATEWAY_CALLED="source_gateway_called",e.DEST_GATEWAY_APPROVED="destination_gateway_approved",e.DEST_EXECUTED="destination_executed",e.EXPRESS_EXECUTED="express_executed",e.DEST_EXECUTE_ERROR="error",e.DEST_EXECUTING="executing",e.APPROVING="approving",e.FORECALLED="forecalled",e.FORECALLED_WITHOUT_GAS_PAID="forecalled_without_gas_paid",e.NOT_EXECUTED="not_executed",e.NOT_EXECUTED_WITHOUT_GAS_PAID="not_executed_without_gas_paid",e.INSUFFICIENT_FEE="insufficient_fee",e.UNKNOWN_ERROR="unknown_error",e.CANNOT_FETCH_STATUS="cannot_fetch_status",e.SRC_GATEWAY_CONFIRMED="confirmed"}(pi||(pi={})),function(e){e.GAS_UNPAID="gas_unpaid",e.GAS_PAID="gas_paid",e.GAS_PAID_NOT_ENOUGH_GAS="gas_paid_not_enough_gas",e.GAS_PAID_ENOUGH_GAS="gas_paid_enough_gas"}(hi||(hi={}));const mi=e=>{const{error:t,status:n}=e;return"error"===n&&t?pi.DEST_EXECUTE_ERROR:"executed"===n?pi.DEST_EXECUTED:"approved"===n?pi.DEST_GATEWAY_APPROVED:"called"===n?pi.SRC_GATEWAY_CALLED:"executing"===n?pi.DEST_EXECUTING:n},bi=async(e,t,n)=>(async(e,t)=>fetch(`${e}?${new URLSearchParams(t).toString()}`,{method:"GET",headers:{"Content-Type":"application/json"},cache:"no-store"}).then((e=>e.json())).then((e=>e.data)))(e,{method:"searchGMP",txHash:t,txLogIndex:n}).then((e=>e.find((e=>e.id.indexOf(t)>-1||e.call.transactionHash.indexOf(t)>-1)))).catch((()=>{})),yi=async(e,t,n)=>{const a=await bi(e,t,n);if(!a)return{status:pi.CANNOT_FETCH_STATUS};const{call:r,gas_status:i,gas_paid:s,executed:o,express_executed:d,approved:u,callback:c}=a,f={status:i,details:s},l=a.time_spent;return l&&(l.total=l.total||Object.values(l).reduce(((e,t)=>e+t),0)),{status:mi(a),error:(p=a,p.error?{message:p.error.error.message,txHash:p.error.error.transactionHash,chain:p.error.chain}:p.is_insufficient_fee?{message:"Insufficient fee",txHash:p.call.transaction.hash,chain:p.call.chain}:void 0),timeSpent:l,gasPaidInfo:f,callTx:r,executed:o,expressExecuted:d,approved:u,callback:c};var p};class gi{config;initialised;constructor(e){this.config=e,this.initialised=!1}async initialise(){this.initialised||(await async function(e){const t="Please upgrade to the latest version of the Bridge SDK or provide valid configuration",n=await $r((async()=>e.rootProvider.getNetwork()),qr.ROOT_PROVIDER_ERROR);if(n.chainId.toString()!==e.bridgeInstance.rootChainID)throw new Xr(`Rootchain provider chainID ${n.chainId} does not match expected chainID ${e.bridgeInstance.rootChainID}. ${t}`,qr.UNSUPPORTED_ERROR);const a=await $r((async()=>e.childProvider.getNetwork()),qr.CHILD_PROVIDER_ERROR);if(a.chainId.toString()!==e.bridgeInstance.childChainID)throw new Xr(`Childchain provider chainID ${a.chainId} does not match expected chainID ${e.bridgeInstance.childChainID}. ${t} `,qr.UNSUPPORTED_ERROR)}(this.config),this.initialised=!0)}async getFee(e){const[,,t]=await Promise.all([this.initialise(),async()=>{e.action!==Rr.FINALISE_WITHDRAWAL&&await ri(e.sourceChainId,e.destinationChainId,this.config)},this.getFeePrivate(e)]);return t}async getFinaliseWithdrawFee(){return si(await this.config.rootProvider.getFeeData(),Ir.FINALISE_WITHDRAWAL)}async getDepositOrWithdrawFee(e){let t;t=e.sourceChainId===this.config.bridgeInstance.rootChainID?await this.config.rootProvider.getFeeData():await this.config.childProvider.getFeeData();let n,a,r=nn.from(0),i=nn.from(0),s=nn.from(0);if(e.action===Rr.DEPOSIT)n={sourceChainId:e.sourceChainId,destinationChainId:e.destinationChainId,action:Rr.DEPOSIT};else{if(e.action!==Rr.WITHDRAW)throw new Xr("Invalid action",qr.INTERNAL_ERROR);n={sourceChainId:e.sourceChainId,destinationChainId:e.destinationChainId,action:Rr.WITHDRAW}}if(!ti(n,this.config.bridgeInstance)&&!ni(n,this.config.bridgeInstance))throw new Xr("Invalid direction",qr.INTERNAL_ERROR);return function(e){return!("token"in e)||e.token.toUpperCase()===_r}(e)||(ti(n,this.config.bridgeInstance)||"token"in e&&function(e,t,n){return ni(t,n)&&ei(e,t.sourceChainId)}(e.token,n,this.config.bridgeInstance))&&(i=si(t,Ir.APPROVE_TOKEN)),e.action===Rr.DEPOSIT?(r=si(t,Ir.DEPOSIT_SOURCE),a=Ir.DEPOSIT_DESTINATION):(r=si(t,Ir.WITHDRAW_SOURCE),a=Ir.WITHDRAW_DESTINATION),s=await this.getAxelarFee(e.sourceChainId,e.destinationChainId,a,e.gasMultiplier),{sourceChainFee:r,approvalFee:i,bridgeFee:s}}async getFeePrivate(e){!function(e,t){if(e.action===Rr.FINALISE_WITHDRAWAL&&e.sourceChainId!==t.bridgeInstance.rootChainID)throw new Xr(`Finalised withdrawals must be on the root chain (${t.bridgeInstance.rootChainID})`,qr.INVALID_SOURCE_CHAIN_ID);if(!("destinationChainId"in e))throw new Xr("DEPOSIT or WITHDRAW used without destinationChainId",qr.INVALID_DESTINATION_CHAIN_ID);const n={sourceChainId:e.sourceChainId,destinationChainId:e.destinationChainId,action:e.action};if(!ti(n,t.bridgeInstance)&&!ni(n,t.bridgeInstance))throw new Xr("This request is neither a valid deposit nor a valid withdrawal",qr.INVALID_SOURCE_OR_DESTINATION_CHAIN)}(e,this.config);let t=nn.from(0),n=nn.from(0),a=nn.from(0);if(e.action===Rr.FINALISE_WITHDRAWAL)t=await this.getFinaliseWithdrawFee();else{const r=await this.getDepositOrWithdrawFee(e);t=r.sourceChainFee,n=r.approvalFee,a=r.bridgeFee}const r=t.add(n).add(a);return{sourceChainGas:t,approvalFee:n,bridgeFee:a,imtblFee:nn.from("0"),totalFees:r}}async getUnsignedApproveBridgeTx(e){const t=await this.getUnsignedBridgeBundledTx({senderAddress:e.senderAddress,recipientAddress:e.senderAddress,token:e.token,amount:e.amount,sourceChainId:e.sourceChainId,destinationChainId:e.destinationChainId,gasMultiplier:1.1});return{contractToApprove:t.contractToApprove,unsignedTx:t.unsignedApprovalTx}}async getBridgeMethods(e){let t;return t=ti(e,this.config.bridgeInstance)?zr:Hr,t}async getBridgeContract(e){if(ti(e,this.config.bridgeInstance)){const e=this.config.bridgeContracts.rootERC20BridgeFlowRate;return await Zr(e,ci,this.config.rootProvider)}const t=this.config.bridgeContracts.childERC20Bridge;return await Zr(t,li,this.config.childProvider)}async getConfigAndBridgeTxCalldata(e,t,n,a,r){return async function(e,t,n,a,r,i){let s,o;if(a.toUpperCase()===_r)e===t?(s=r.native,o=[n]):(s=r.nativeTo,o=[t,n]);else{const i=ia(a);e===t?(s=r.token,o=[i,n]):(s=r.tokenTo,o=[i,t,n])}return await $r((async()=>i.interface.encodeFunctionData(s,o)),qr.INTERNAL_ERROR)}(e,t,n,a,await this.getBridgeMethods(r),await this.getBridgeContract(r))}async getUnsignedBridgeTx(e){const t=await this.getUnsignedBridgeBundledTx({senderAddress:e.senderAddress,recipientAddress:e.senderAddress,token:e.token,amount:e.amount,sourceChainId:e.sourceChainId,destinationChainId:e.destinationChainId,gasMultiplier:e.gasMultiplier});return{feeData:t.feeData,unsignedTx:t.unsignedBridgeTx}}async getUnsignedBridgeBundledTx(e){const[,,,t]=await Promise.all([this.initialise(),ii(e,this.config),ai(e.token,e.destinationChainId,e.recipientAddress,this.config),this.getUnsignedBridgeBundledTxPrivate(e)]);return t}async getUnsignedBridgeBundledTxPrivate(e){let t;var n,a;if(n=e.sourceChainId,a=this.config.bridgeInstance,t=n===a.rootChainID?{sourceChainId:e.sourceChainId,destinationChainId:e.destinationChainId,action:Rr.DEPOSIT}:{sourceChainId:e.sourceChainId,destinationChainId:e.destinationChainId,action:Rr.WITHDRAW},ti(t,this.config.bridgeInstance))return this.getUnsignedBridgeDepositBundledTxPrivate(t,e.senderAddress,e.recipientAddress,e.token,e.amount,e.gasMultiplier);if(ni(t,this.config.bridgeInstance))return this.getUnsignedBridgeWithdrawBundledTxPrivate(t,e.senderAddress,e.recipientAddress,e.token,e.amount,e.gasMultiplier);throw new Xr("Invalid Bridge Bundled TX",qr.INVALID_TRANSACTION)}async getUnsignedBridgeDepositBundledTxPrivate(e,t,n,a,r,i){const[s,o,d,u]=await Promise.all([this.getAllowance(e,a,t),this.config.rootProvider.getFeeData(),this.getDynamicDepositGas(this.config.bridgeInstance.rootChainID,t,n,a,r),this.getAxelarFee(this.config.bridgeInstance.rootChainID,this.config.bridgeInstance.childChainID,Ir.DEPOSIT_DESTINATION,i)]);let c,f,l=nn.from(0),p=nn.from(0);const h=u,m=nn.from(0);if(a.toUpperCase()!==_r&&s.lt(r)){c=a;const e=await Zr(a,fi,this.config.rootProvider);f={data:await $r((async()=>e.interface.encodeFunctionData("approve",[this.config.bridgeContracts.rootERC20BridgeFlowRate,r])),qr.INTERNAL_ERROR),to:a,value:0,from:t,chainId:parseInt(this.config.bridgeInstance.rootChainID,10)},p=si(o,d.approvalGas)}else c=null,f=null;const b=await this.getConfigAndBridgeTxCalldata(t,n,r,a,e),y=a.toUpperCase()===_r?r.add(h).toString():h.toString(),g={data:b,to:this.config.bridgeContracts.rootERC20BridgeFlowRate,value:y,from:t,chainId:parseInt(this.config.bridgeInstance.rootChainID,10)};l=si(o,d.sourceChainGas);const E=l.add(p).add(h).add(m);return{feeData:{sourceChainGas:l,approvalFee:p,bridgeFee:h,imtblFee:m,totalFees:E},contractToApprove:c,unsignedApprovalTx:f,unsignedBridgeTx:g}}async getUnsignedBridgeWithdrawBundledTxPrivate(e,t,n,a,r,i){const[s,o,d]=await Promise.all([this.getAllowance(e,a,t),this.config.childProvider.getFeeData(),await this.getDynamicWithdrawGasRootChain(e.destinationChainId,t,n,a,r)]),u=await this.getAxelarFee(this.config.bridgeInstance.childChainID,this.config.bridgeInstance.rootChainID,d,i);let c,f,l=nn.from(0),p=nn.from(0);const h=u,m=nn.from(0);if(ei(a,this.config.bridgeInstance.childChainID)&&s.lt(r)){c=a;const e=await Zr(a,fi,this.config.childProvider);f={data:await $r((async()=>e.interface.encodeFunctionData("approve",[this.config.bridgeContracts.childERC20Bridge,r])),qr.INTERNAL_ERROR),to:a,value:0,from:t,chainId:parseInt(this.config.bridgeInstance.childChainID,10)},p=si(o,Ir.APPROVE_TOKEN)}else c=null,f=null;const b=await this.getConfigAndBridgeTxCalldata(t,n,r,a,e),y=a.toUpperCase()===_r?r.add(h).toString():h.toString(),g={data:b,to:this.config.bridgeContracts.rootERC20BridgeFlowRate,value:y,from:t,chainId:parseInt(this.config.bridgeInstance.rootChainID,10)};l=si(o,Ir.WITHDRAW_SOURCE);const E=l.add(p).add(h).add(m);return{feeData:{sourceChainGas:l,approvalFee:p,bridgeFee:h,imtblFee:m,totalFees:E},contractToApprove:c,unsignedApprovalTx:f,unsignedBridgeTx:g}}async getDynamicDepositGas(e,t,n,a,r){const i=[];if(a.toUpperCase()!==_r){const e=await Zr(a,fi,this.config.rootProvider),n=await $r((async()=>e.interface.encodeFunctionData("approve",[this.config.bridgeContracts.rootERC20BridgeFlowRate,r])),qr.INTERNAL_ERROR);i.push({from:t,to:a,data:n})}const s={action:Rr.DEPOSIT,sourceChainId:e,destinationChainId:this.config.bridgeInstance.childChainID},o=await this.getConfigAndBridgeTxCalldata(t,n,r,a,s),d=a.toUpperCase()!==_r?"0x1":Zt(r.add("1").toHexString());i.push({from:t,to:this.config.bridgeContracts.rootERC20BridgeFlowRate,data:o,value:d});const u=await ui(e,i),c={};return 1===u.length?(c.approvalGas=0,[c.sourceChainGas]=u):[c.approvalGas,c.sourceChainGas]=u,c}async getDynamicWithdrawGasRootChain(e,t,n,a,r){const i=function(e,t,n,a){return Fa.encode(["bytes32","address","address","address","uint256"],["0x7a8dc26796a1e50e6e190b70259f58f6a4edd5b22280ceecc82b687b8e982869",e,t,n,a])}(await di(a,e,this.config.childProvider),t,n,r.toString()),s=function(e){return Kn(Fa.encode(["bytes","uint256"],[e,(new Date).getTime()]))}(i),o=Kr(e,Lr);const d=ia(function(e){return Kr(e,xr)}(e)).toString(),u=function(e){return Kr(e,kr)}(e),c=Kn(i),f=Kn(Fa.encode(["bytes32","bytes32","string","string","address","bytes32"],["0x07b0d4304f82012bd3b70b1d531c160e326067c90829e2a3d386722ad10b89c3",s,o,d,u,c])),l=Kn(Vt([f,Xt(zt(Xt(4),32))])),p=await Zr(u,wr,this.config.rootProvider),h=await $r((async()=>p.interface.encodeFunctionData("execute",[s,o,d,i])),qr.INTERNAL_ERROR),m=function(e){return Kr(e,Ur)}(e),b=[{from:t,to:u,data:h}],y={contractAddress:m,stateDiff:{storageSlot:l,value:"0x0000000000000000000000000000000000000000000000000000000000000001"}};return(await ui(e,b,[y]))[0]}async getAllowance(e,t,n){if(t.toUpperCase()===_r)return nn.from(0);if(function(e,t,n){return ni(t,n)&&!ei(e,t.sourceChainId)}(t,e,this.config.bridgeInstance))return nn.from(0);let a,r;ti(e,this.config.bridgeInstance)?(a=this.config.rootProvider,r=this.config.bridgeContracts.rootERC20BridgeFlowRate):(a=this.config.childProvider,r=this.config.bridgeContracts.childERC20Bridge);const i=await Zr(t,fi,a);return await $r((()=>i.allowance(n,r)),qr.PROVIDER_ERROR)}async getAxelarFee(e,t,n,a="auto"){const r=Vr[e],i=Vr[t];if(!r)throw new Xr(`Source chainID ${e} can not be matched to an Axelar chain.`,qr.AXELAR_CHAIN_NOT_FOUND);if(!i)throw new Xr(`Destination chainID ${t} can not be matched to an Axelar chain.`,qr.AXELAR_CHAIN_NOT_FOUND);const s=Jr(e),o={method:"estimateGasFee",sourceChain:r.id,destinationChain:i.id,symbol:r.symbol,gasLimit:n,gasMultiplier:a};let d;try{d=await Tt.post(s,o)}catch(e){d=e.response}if(d.data.error)throw new Xr(`Estimating Axelar Gas failed with the reason: ${d.data.message}`,qr.AXELAR_GAS_ESTIMATE_FAILED);try{return nn.from(`${d.data}`)}catch(e){throw new Xr(`Estimating Axelar Gas failed with the reason: ${e}`,qr.AXELAR_GAS_ESTIMATE_FAILED)}}async getTransactionStatus(e){const t={transactions:[]},n=await this.getAxelarStatus(e.transactions,e.sourceChainId),a=await this.getUniqueReceivers(n,e.sourceChainId),r=[];for(const e of a)r.push(this.getPendingWithdrawals({recipient:e}));let i=[];try{i=await Promise.all(r)}catch(e){throw new Xr(`Failed to fetch the pending withdrawals with: ${e}`,qr.FLOW_RATE_ERROR)}t.transactions=n;for(const e of t.transactions)e.status===Ar.COMPLETE&&(()=>{for(const t of i){const n=t.pending.findIndex((t=>t.amount.toString()===e.amount.toString()&&t.token===e.token&&t.withdrawer===e.sender&&t.recipient===e.recipient));if(-1!==n)return e.status=Ar.FLOW_RATE_CONTROLLED,e.data={canWithdraw:t.pending[n].canWithdraw,timeoutStart:t.pending[n].timeoutStart,timeoutEnd:t.pending[n].timeoutEnd},void t.pending.splice(n,1)}})();return t}async getUniqueReceivers(e,t){const n=[],a=[Nr,Cr,Or].includes(t);for(let t=0,r=e.length;t<r;t++)if(e[t].status===Ar.COMPLETE&&a&&e[t].recipient){-1===n.findIndex((n=>n===e[t].recipient))&&n.push(e[t].recipient)}return n}async getAxelarStatus(e,t){const n=[],a=[],r=Jr(t),i=[hi.GAS_UNPAID,hi.GAS_PAID_NOT_ENOUGH_GAS],s=new Ua;for(const t of e)a.push(yi(r,t.txHash));let o;try{o=await Promise.all(a)}catch(e){throw new Xr(`Failed to fetch the Axelar Status with the reason: ${e}`,qr.AXELAR_GAS_ESTIMATE_FAILED)}for(let t=0,a=o.length;t<a;t++){let a;switch(o[t].status){case pi.CANNOT_FETCH_STATUS:a=Ar.PENDING;break;case pi.SRC_GATEWAY_CALLED:case pi.DEST_GATEWAY_APPROVED:case pi.DEST_EXECUTING:case pi.SRC_GATEWAY_CONFIRMED:case pi.APPROVING:a=Ar.PROCESSING;break;case pi.NOT_EXECUTED:a=Ar.RETRY;break;case pi.NOT_EXECUTED_WITHOUT_GAS_PAID:case pi.INSUFFICIENT_FEE:a=Ar.NOT_ENOUGH_GAS;break;case pi.DEST_EXECUTED:a=Ar.COMPLETE;break;default:a=Ar.ERROR}o[t].gasPaidInfo&&i.includes(o[t].gasPaidInfo.status)&&(a=Ar.NOT_ENOUGH_GAS);let r,d={txHash:e[t].txHash,status:a,data:{gmpResponse:o[t].status}};o[t]?.callTx?.returnValues?.payload&&(r=s.decode(["bytes32","address","address","address","uint256"],o[t].callTx.returnValues.payload),d={...d,token:r[1],sender:r[2],recipient:r[3],amount:r[4]}),n.push(d)}return n}async getFlowRateInfo(e){if(!e.tokens||0===e.tokens.length)throw new Xr(`invalid tokens array ${e.tokens}`,qr.INVALID_TOKEN);const t=this.config.bridgeContracts.rootERC20BridgeFlowRate,n=await Zr(t,ci,this.config.rootProvider),a=[];a.push(n.withdrawalQueueActivated()),a.push(n.withdrawalDelay());for(let t of e.tokens)t.toUpperCase()===_r&&(t="0x0000000000000000000000000000000000000eee"),a.push(n.flowRateBuckets(t)),a.push(n.largeTransferThresholds(t));let r;try{r=await Promise.all(a)}catch(e){throw new Xr("unable to query contract for flowrate info",qr.INTERNAL_ERROR)}const i={},s=r[0],o=r[1].toNumber();r.splice(0,2);for(let t=0,n=e.tokens.length;t<n;t++){const n=2*t;i[e.tokens[t]]={capacity:r[n].capacity,depth:r[n].depth,refillTime:r[n].refillTime.toNumber(),refillRate:r[n].refillRate,largeTransferThreshold:r[n+1]}}return{withdrawalQueueActivated:s,withdrawalDelay:o,tokens:i}}async getPendingWithdrawals(e){if(!e.recipient)throw new Xr(`invalid recipient ${e.recipient}`,qr.INVALID_RECIPIENT);const t=this.config.bridgeContracts.rootERC20BridgeFlowRate,n=await Zr(t,ci,this.config.rootProvider),a=await n.getPendingWithdrawalsLength(e.recipient),r={pending:[]};if(0===a.toNumber())return r;const i=[];for(let e=0;e<a.toNumber();e++)i.push(e);const s=await n.getPendingWithdrawals(e.recipient,i),o=Math.floor(Date.now()/1e3),d=await n.withdrawalDelay();for(let t=0,n=s.length;t<n;t++){const n=s[t].timestamp.add(d).toNumber();r.pending[t]=n>o?{canWithdraw:!1}:{canWithdraw:!0},r.pending[t].recipient=e.recipient,r.pending[t].withdrawer=s[t].withdrawer,r.pending[t].token=s[t].token,r.pending[t].amount=s[t].amount,r.pending[t].timeoutStart=s[t].timestamp.toNumber(),r.pending[t].timeoutEnd=n}return r}async getFlowRateWithdrawTx(e){if(!e.recipient)throw new Xr(`invalid recipient ${e.recipient}`,qr.INVALID_RECIPIENT);if(e.index<0)throw new Xr(`invalid index ${e.index}`,qr.INVALID_FLOWRATE_INDEX);const t=this.config.bridgeContracts.rootERC20BridgeFlowRate,n=await Zr(t,ci,this.config.rootProvider),a=await n.getPendingWithdrawals(e.recipient,[e.index]);if(a[0].withdrawer===Ea||a[0].token===Ea||a[0].amount===nn.from(0)||a[0].timestamp===nn.from(0))throw new Xr(`pending withdrawal not found for ${e.recipient} at index ${e.index}`,qr.FLOW_RATE_ERROR);const r=await n.withdrawalDelay(),i=a[0].timestamp.add(r).toNumber();if(i>Math.floor(Date.now()/1e3))return{pendingWithdrawal:{canWithdraw:!1,withdrawer:a[0].withdrawer,recipient:e.recipient,token:a[0].token,amount:a[0].amount,timeoutStart:a[0].timestamp.toNumber(),timeoutEnd:i},unsignedTx:null};const s=await $r((async()=>n.interface.encodeFunctionData("finaliseQueuedWithdrawal",[e.recipient,e.index])),qr.INTERNAL_ERROR);return{pendingWithdrawal:{canWithdraw:!0,withdrawer:a[0].withdrawer,recipient:e.recipient,token:a[0].token,amount:a[0].amount,timeoutStart:a[0].timestamp.toNumber(),timeoutEnd:i},unsignedTx:{data:s,to:this.config.bridgeContracts.rootERC20BridgeFlowRate,value:0,chainId:parseInt(this.config.bridgeInstance.rootChainID,10)}}}async getTokenMapping(e){if(e.rootToken.toUpperCase()===_r||e.rootToken===this.config.bridgeContracts.rootChainWrappedETH){const t=this.config.bridgeContracts.childERC20Bridge,n=await Zr(t,li,this.config.childProvider),a=await n.childETHToken();return{rootToken:e.rootToken,childToken:a}}const t=this.config.bridgeContracts.rootERC20BridgeFlowRate,n=await Zr(t,ci,this.config.rootProvider),a=await n.rootTokenToChildToken(e.rootToken);return a===Ea?{rootToken:e.rootToken,childToken:null}:a===e.rootToken?{rootToken:e.rootToken,childToken:_r}:{rootToken:e.rootToken,childToken:a}}}
10
+ /**
11
+ * tiny-lru
12
+ *
13
+ * @copyright 2023 Jason Mulligan <jason.mulligan@avoidwork.com>
14
+ * @license BSD-3-Clause
15
+ * @version 11.2.5
16
+ */class Ei{constructor(e=0,t=0,n=!1){this.first=null,this.items=Object.create(null),this.last=null,this.max=e,this.resetTtl=n,this.size=0,this.ttl=t}clear(){return this.first=null,this.items=Object.create(null),this.last=null,this.size=0,this}delete(e){if(this.has(e)){const t=this.items[e];delete this.items[e],this.size--,null!==t.prev&&(t.prev.next=t.next),null!==t.next&&(t.next.prev=t.prev),this.first===t&&(this.first=t.next),this.last===t&&(this.last=t.prev)}return this}entries(e=this.keys()){return e.map((e=>[e,this.get(e)]))}evict(e=!1){if(e||this.size>0){const e=this.first;delete this.items[e.key],0==--this.size?(this.first=null,this.last=null):(this.first=e.next,this.first.prev=null)}return this}expiresAt(e){let t;return this.has(e)&&(t=this.items[e].expiry),t}get(e){let t;if(this.has(e)){const n=this.items[e];this.ttl>0&&n.expiry<=Date.now()?this.delete(e):(t=n.value,this.set(e,t,!0))}return t}has(e){return e in this.items}keys(){const e=[];let t=this.first;for(;null!==t;)e.push(t.key),t=t.next;return e}set(e,t,n=!1,a=this.resetTtl){let r;if(n||this.has(e)){if(r=this.items[e],r.value=t,!1===n&&a&&(r.expiry=this.ttl>0?Date.now()+this.ttl:this.ttl),this.last!==r){const e=this.last,t=r.next,n=r.prev;this.first===r&&(this.first=r.next),r.next=null,r.prev=this.last,e.next=r,null!==n&&(n.next=t),null!==t&&(t.prev=n)}}else this.max>0&&this.size===this.max&&this.evict(!0),r=this.items[e]={expiry:this.ttl>0?Date.now()+this.ttl:this.ttl,key:e,prev:this.last,next:null,value:t},1==++this.size?this.first=r:this.last.next=r;return this.last=r,this}values(e=this.keys()){return e.map((e=>this.get(e)))}}const Ti={max:1e3},wi=(e,t={})=>{const{cache:n,cacheKeyResolver:a=vi,onHit:r,lruOptions:i={}}=t,s={...Ti,...i},o=n||function(e=1e3,t=0,n=!1){if(isNaN(e)||e<0)throw new TypeError("Invalid max value");if(isNaN(t)||t<0)throw new TypeError("Invalid ttl value");if("boolean"!=typeof n)throw new TypeError("Invalid resetTtl value");return new Ei(e,t,n)}(s.max,s.ttl);function d(...t){const n=a(...t),i=o.get(n);if(o.has(n))return r&&r(n,i,o),i;const s=e.apply(this,t);return o.set(n,s),s}return d._cache=o,d},vi=(...e)=>0===e.length?"no-args":e.map((e=>void 0===e?"undefined":null===e?"null":Array.isArray(e)?`[${vi(...e)}]`:"object"==typeof e?`{${vi(...Ri(e))}}`:JSON.stringify(e))).join(","),Ri=e=>Object.entries(e).sort(((e,t)=>e[0]<t[0]?-1:1));var Ii={};Object.defineProperty(Ii,"__esModule",{value:!0}),Ii.clearGlobalNamespace=Ci=Ii.getGlobalisedValue=void 0;const Ai={},_i=()=>"undefined"!=typeof window?window:"undefined"!=typeof globalThis?globalThis:Ai,Mi=e=>`globalise__singleton__${e}`,Ni=e=>{const t=_i(),n=Mi(e);return t[n]||(t[n]={}),t[n]};var Ci=Ii.getGlobalisedValue=(e,t,n)=>{((e,t)=>{if("string"!=typeof e)throw"Invalid namespace key";if("string"!=typeof t)throw"Invalid item key"})(e,t);const a=((e,t)=>Ni(e)[t]||void 0)(e,t);return void 0!==a?a:(((e,t,n)=>{Ni(e)[t]=n})(e,t,n),n)};Ii.clearGlobalNamespace=e=>{const t=_i(),n=Mi(e);void 0!==t[n]&&delete t[n]};const Oi=()=>"undefined"==typeof window,Si=()=>!Oi();var Pi;!function(e){e.RUNTIME_ID="rid",e.PASSPORT_CLIENT_ID="passportClientId",e.ENVIRONMENT="env",e.PUBLISHABLE_API_KEY="pak",e.IDENTITY="uid",e.DOMAIN="domain",e.SDK_VERSION="sdkVersion"}(Pi||(Pi={}));async function Di(e,t){const n=Tt.create({baseURL:"https://api.immutable.com"}),a=JSON.stringify(t),r={payload:Buffer.from(a).toString("base64")};return(await n.post(e,r)).data}const xi=()=>Si()&&window.localStorage,ki=e=>`__IMX-${e}`;function Li(e){if(xi())return(e=>{if(null!==e)try{return JSON.parse(e)}catch(t){return e}})(window.localStorage.getItem(ki(e)))}const Ui=(e,t)=>!!xi()&&(window.localStorage.setItem(ki(e),(e=>"string"==typeof e?e:JSON.stringify(e))(t)),!0);var Fi;let Bi,Gi;!function(e){e.EVENTS="events",e.RUNTIME="runtime"}(Fi||(Fi={}));Bi=Li(Fi.EVENTS)||[],Gi=Li(Fi.RUNTIME)||{};const ji=(e,t)=>{Gi={...Gi,[e]:t},Ui(Fi.RUNTIME,Gi)},Wi=e=>{if(void 0!==Gi[e])return Gi[e]},Vi=e=>{const t=[];return Object.entries(e).forEach((([e,n])=>{"string"!=typeof e&&"string"!=typeof n&&"number"!=typeof n&&"boolean"!=typeof n||t.push([e,n.toString()])})),t},zi="1.43.4",Hi=()=>{if(Oi())return"";let e;try{window.self!==window.top&&(e=Oi()?"":window.location.ancestorOrigins&&window.location.ancestorOrigins.length>0?new URL(window.location.ancestorOrigins[0]).hostname:document.referrer?new URL(window.document.referrer).hostname:"")}catch(e){}return e||(e=window.location.hostname),e};let qi=!1;const Xi=async()=>{qi=!0;try{const e=Vi((()=>{if(ji(Pi.SDK_VERSION,zi),Oi())return{browser:"nodejs",sdkVersion:zi};const e=Hi();return e&&ji(Pi.DOMAIN,e),{sdkVersion:zi,browser:window.navigator.userAgent,domain:e,tz:Intl.DateTimeFormat().resolvedOptions().timeZone,screen:`${window.screen.width}x${window.screen.height}`}})()),t={version:1,data:{runtimeDetails:e,runtimeId:Wi(Pi.RUNTIME_ID)}},n=await Di("/v1/sdk/initialise",t),{runtimeId:a}=n;ji(Pi.RUNTIME_ID,a)}catch(e){qi=!1}};function $i(e,t){return(...n)=>{try{const a=e(...n);return a instanceof Promise?a.catch((()=>t)):a}catch(e){return t}}}const Zi=$i((function(){return!Si()&&("undefined"!=typeof process&&void 0!==process.env.JEST_WORKER_ID)}),!1),Ki="imtbl__metrics",Qi=(e,t)=>Ci(Ki,e,t);$i(((e,t)=>{const n=wi(t,{lruOptions:{ttl:5e3,max:1e3}});return Ci(Ki,e,n)})("track",((e,t,n)=>{(e=>{Bi.push(e),Ui(Fi.EVENTS,Bi)})({event:`${e}.${t}`,time:(new Date).toISOString(),...n&&{properties:Vi(n)}})})));const Yi=$i((async()=>{if(!1===qi)return void await Xi();const e=Bi;if(0===e.length)return;const t=e.length,n={version:1,data:{events:e,details:Gi}};var a;await Di("/v1/sdk/metrics",n)instanceof Error||(a=t,Bi=Bi.slice(a),Ui(Fi.EVENTS,Bi))})),Ji=async()=>{await Yi(),setTimeout(Ji,5e3)};let es=!1;const ts=()=>{es||(es=!0,Ji())};Zi()||$i(Qi("startFlushing",ts))();$i(Qi("setEnvironment",(e=>{ji(Pi.ENVIRONMENT,e)})));$i(Qi("setPassportClientId",(e=>{ji(Pi.PASSPORT_CLIENT_ID,e)})));var ns,as;$i(Qi("setPublishableApiKey",(e=>{ji(Pi.PUBLISHABLE_API_KEY,e)}))),$i(Qi("getDetail",Wi)),function(e){e.PRODUCTION="production",e.SANDBOX="sandbox"}(ns||(ns={})),function(e){e.API_KEY="x-immutable-api-key",e.PUBLISHABLE_KEY="x-immutable-publishable-key",e.RATE_LIMITING_KEY="x-api-key"}(as||(as={}));const rs=[Fr,Br],is=[Gr],ss={[ns.SANDBOX]:rs,[ns.PRODUCTION]:is},os=(new Map).set(Fr,{rootERC20BridgeFlowRate:"0x0",childERC20Bridge:"0x0",rootChainIMX:"0x0",rootChainWrappedETH:"0x0",childChainWrappedETH:"0x0",childChainWrappedIMX:"0x0"}).set(Br,{rootERC20BridgeFlowRate:"0x0D3C59c779Fd552C27b23F723E80246c840100F5",childERC20Bridge:"0x0D3C59c779Fd552C27b23F723E80246c840100F5",rootChainIMX:"0xe2629e08f4125d14e446660028bD98ee60EE69F2",rootChainWrappedETH:"0x7b79995e5f793A07Bc00c21412e50Ecae098E7f9",childChainWrappedETH:"0xe9E96d1aad82562b7588F03f49aD34186f996478",childChainWrappedIMX:"0x1CcCa691501174B4A623CeDA58cC8f1a76dc3439"}).set(Gr,{rootERC20BridgeFlowRate:"0xBa5E35E26Ae59c7aea6F029B68c6460De2d13eB6",childERC20Bridge:"0xBa5E35E26Ae59c7aea6F029B68c6460De2d13eB6",rootChainIMX:"0xF57e7e7C23978C3cAEC3C3548E3D615c346e79fF",rootChainWrappedETH:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",childChainWrappedETH:"0x52a6c53869ce09a731cd772f245b97a4401d3348",childChainWrappedIMX:"0x3a0c2ba54d6cbd3121f01b96dfd20e99d1696c9d"});class ds{baseConfig;bridgeInstance;bridgeContracts;rootProvider;childProvider;constructor({bridgeInstance:e,rootProvider:t,childProvider:n,baseConfig:a,overrides:r}){if(this.baseConfig=a,this.bridgeInstance=e,this.rootProvider=t,this.childProvider=n,r)return void(this.bridgeContracts=r.bridgeContracts);if(!ss[a.environment].includes(e))throw new Error(`Bridge instance with rootchain ${e.rootChainID} and childchain ${e.childChainID} is not supported in environment ${a.environment}`);if(!os.has(e))throw new Error(`Bridge instance with rootchain ${e.rootChainID} and childchain ${e.childChainID} is not supported in environment ${a.environment}`);const i=os.get(e);if(!i)throw new Error(`Bridge instance with rootchain ${e.rootChainID} and childchain ${e.childChainID} is not supported in environment ${a.environment}`);this.bridgeContracts=i}}var us;!function(e){e.INVALID_CONFIGURATION="INVALID_CONFIGURATION",e.INVALID_SLIPPAGE="INVALID_SLIPPAGE",e.INVALID_MAX_HOPS="INVALID_MAX_HOPS",e.INVALID_ADDRESS="INVALID_ADDRESS",e.DUPLICATE_ADDRESSES="DUPLICATE_ADDRESSES",e.CHAIN_NOT_SUPPORTED="CHAIN_NOT_SUPPORTED",e.NO_ROUTES_AVAILABLE="NO_ROUTES_AVAILABLE",e.PROVIDER_CALL_ERROR="PROVIDER_CALL_ERROR",e.APPROVE_ERROR="APPROVE_ERROR",e.ALREADY_APPROVED_ERROR="ALREADY_APPROVED_ERROR"}(us||(us={}));class cs extends Error{message;code;constructor(e,t){super(e),this.message=e,this.code=t}}class fs extends cs{constructor(e){super(e||"Invalid configuration",us.INVALID_CONFIGURATION)}}class ls extends cs{constructor(e,t){super(`Chain with ID ${e} is not a supported chain in environment ${t}`,us.CHAIN_NOT_SUPPORTED)}}class ps extends cs{constructor(e){super(e,us.INVALID_SLIPPAGE)}}class hs extends cs{constructor(e){super(e,us.INVALID_MAX_HOPS)}}class ms extends cs{constructor(e){super(e,us.INVALID_ADDRESS)}}class bs extends cs{constructor(){super("token in and token out addresses must be different",us.DUPLICATE_ADDRESSES)}}class ys extends cs{constructor(){super("no routes available",us.NO_ROUTES_AVAILABLE)}}class gs extends cs{constructor(e){super(e,us.PROVIDER_CALL_ERROR)}}class Es extends cs{constructor(e){super(e,us.APPROVE_ERROR)}}const Ts={"0xcdca1753":["uint256","uint160[]","uint32[]","uint256"],"0xc6a5026a":["uint256","uint160","uint32","uint256"],"0x2f80bb1d":["uint256","uint160[]","uint32[]","uint256"],"0xbd21704a":["uint256","uint160","uint32","uint256"]};const ws=a.utils.id("decimals()").substring(0,10);async function vs(e,t,n){if("native"===e)return n.decimals;try{const n=await t.call({to:e,data:ws});return parseInt(n,16)}catch(e){const t=e instanceof Error?e.message:"Unknown Error";throw new gs(`failed to get ERC20 decimals: ${t}`)}}function Rs(e){if(e===a.constants.AddressZero)return!1;try{return a.utils.getAddress(e),!0}catch(e){return!1}}const Is=e=>"native"===e||Rs(e),As=e=>new p.Token(e.chainId,e.address,e.decimals,e.symbol,e.name),_s=e=>({chainId:e.chainId,address:e.address,decimals:e.decimals,symbol:e.symbol,name:e.name,type:"erc20"}),Ms=e=>{const t=As(e.token);return p.CurrencyAmount.fromRawAmount(t,e.value.toString())},Ns=(e,t)=>({value:e,token:t}),Cs=e=>"erc20"===e.token.type,Os=e=>"native"===e.token.type,Ss=e=>"native"===e.type,Ps=(e,t)=>{if(Cs(e)&&Cs(t))return((e,t)=>{if(e.token.address!==t.token.address)throw new Error("Token mismatch: token addresses must be the same");return{value:e.value.add(t.value),token:e.token}})(e,t);if(Os(e)&&Os(t))return((e,t)=>({value:e.value.add(t.value),token:e.token}))(e,t);throw new Error("Token mismatch: token types must be the same")},Ds=(e,t)=>{if(Cs(e)&&Cs(t))return((e,t)=>{if(e.token.address!==t.token.address)throw new Error("Token mismatch: token addresses must be the same");return{value:e.value.sub(t.value),token:e.token}})(e,t);if(Os(e)&&Os(t))return((e,t)=>({value:e.value.sub(t.value),token:e.token}))(e,t);throw new Error("Token mismatch: token types must be the same")},xs=e=>{return{token:(t=e.token,"native"===t.type?{address:"native",chainId:t.chainId,decimals:t.decimals,symbol:t.symbol,name:t.name}:t),value:e.value};var t},ks=()=>Math.floor(Date.now()/1e3)+900,Ls=13473,Us=13371,Fs={chainId:Ls,decimals:18,symbol:"tIMX",name:"Immutable Testnet Token",type:"native"},Bs={chainId:Ls,address:"0x1CcCa691501174B4A623CeDA58cC8f1a76dc3439",decimals:18,symbol:"WIMX",name:"Wrapped Immutable Testnet Token",type:"erc20"},Gs=[Bs],js={chainId:Us,decimals:18,symbol:"IMX",name:"Immutable Token",type:"native"},Ws={chainId:Us,address:"0x3a0c2ba54d6cbd3121f01b96dfd20e99d1696c9d",decimals:18,symbol:"WIMX",name:"Wrapped Immutable Token",type:"erc20"},Vs=[Ws,{chainId:Us,address:"0x52a6c53869ce09a731cd772f245b97a4401d3348",decimals:18,symbol:"ETH",name:"Ethereum",type:"erc20"}],zs=async(e,t)=>{const n=await(async e=>{const[t,n]=await Promise.all([e.getBlock("latest"),e.send("eth_maxPriorityFeePerGas",[])]);if(!t.baseFeePerGas)throw new Error("Base fee per gas not found in block");return{maxFeePerGas:t.baseFeePerGas.mul(2).add(n),maxPriorityFeePerGas:n,lastBaseFeePerGas:t.baseFeePerGas}})(e).catch((()=>null));return n?Ns(n.maxFeePerGas,t):null},Hs=(e,t,n)=>{const a=Ns(n.mul(t.value),t.token);return e?Ns(a.value.add(t.value.mul(50876)),t.token):a},qs=[{constant:!0,inputs:[],name:"name",outputs:[{name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_spender",type:"address"},{name:"_value",type:"uint256"}],name:"approve",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"totalSupply",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_from",type:"address"},{name:"_to",type:"address"},{name:"_value",type:"uint256"}],name:"transferFrom",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"decimals",outputs:[{name:"",type:"uint8"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{name:"_owner",type:"address"}],name:"balanceOf",outputs:[{name:"balance",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"symbol",outputs:[{name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_to",type:"address"},{name:"_value",type:"uint256"}],name:"transfer",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{name:"_owner",type:"address"},{name:"_spender",type:"address"}],name:"allowance",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{payable:!0,stateMutability:"payable",type:"fallback"},{anonymous:!1,inputs:[{indexed:!0,name:"owner",type:"address"},{indexed:!0,name:"spender",type:"address"},{indexed:!1,name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"from",type:"address"},{indexed:!0,name:"to",type:"address"},{indexed:!1,name:"value",type:"uint256"}],name:"Transfer",type:"event"}];class Xs{static abi=qs;static createInterface(){return new s.Interface(qs)}static connect(e,t){return new o(e,qs,t)}}const $s=async(e,t,n,a)=>{const r=await(async(e,t,n,a)=>{const r=Xs.connect(n.token.address,e);let i;try{i=await r.allowance(t,a)}catch(e){const t=e instanceof Error?e.message:"Unknown Error";throw new Es(`failed to get allowance: ${t}`)}const s=n.value.sub(i);return!s.isNegative()&&!s.isZero()})(e,t,n,a);return r?((e,t,n)=>{if(e===n)throw new Es("owner and spender addresses are the same");return{data:Xs.createInterface().encodeFunctionData("approve",[n,t.value]),to:t.token.address,value:0,from:e}})(t,n,a):null};const Zs=async(e,t,n,r)=>{const i=await $s(e,t,n.amount,n.spender);if(!i)return null;const s=await async function(e,t,n,r){const i=Xs.connect(r,e);return await i.estimateGas.approve(n,a.constants.MaxUint256,{from:t})}(e,t,n.spender,n.amount.token.address),o=r?Hs(!1,r,s):null;return{transaction:i,gasFeeEstimate:o?xs(o):null}},Ks=e=>"native"===e.type;class Qs{nativeToken;wrappedToken;constructor(e,t){this.nativeToken=e,this.wrappedToken=t}wrapAmount(e){return Ns(e.value,this.wrappedToken)}unwrapAmount(e){if(e.token.address.toLowerCase()!==this.wrappedToken.address.toLowerCase())throw new Error(`cannot unwrap non-wrapped token ${e.token.address}`);return Ns(e.value,this.nativeToken)}maybeWrapToken(e){return Ks(e)?this.wrappedToken:e}maybeWrapAmount(e){return Ns(e.value,this.maybeWrapToken(e.token))}isWrappedNative(e){return"erc20"===e.type&&e.address.toLowerCase()===this.wrappedToken.address.toLowerCase()}isWrapOrUnwrap(e,t){return e===this.nativeToken&&this.isWrappedNative(t)||this.isWrappedNative(e)&&t===this.nativeToken}}const Ys=e=>{if(1===e.toString().split(".").length)return new m(e,100);const t=(e/100).toString().split("."),n=t[0]+t[1],a=10**t[1].length;return new m(n,a)};const Js=(e,t,n,r)=>{const i=function(e){return e.tradeType===h.EXACT_INPUT?e.amountOut:e.amountIn}(t),s=Ks(r)?e.unwrapAmount(i):i,o=Ns(function(e,t,n){const r=Ys(n).add(1),i=(e===h.EXACT_INPUT?r.invert():r).multiply(t.toString()).quotient;return a.BigNumber.from(i.toString())}(t.tradeType,s.value,n),r);return{quotedAmount:s,quotedAmountWithMaxSlippage:o}};class eo{secondaryFees;amount;constructor(e,t){this.secondaryFees=e,this.amount=Ns(r.from(0),t)}get token(){return this.amount.token}addAmount(e){this.amount=Ps(this.amount,e)}amountWithFeesApplied(){return Ps(this.amount,this.total())}amountLessFees(){return Ds(this.amount,this.total())}withAmounts(){return this.secondaryFees.map((e=>{const t=this.amount.value.mul(e.basisPoints).div(1e4);return{...e,amount:Ns(t,this.amount.token)}}))}total(){let e=Ns(r.from(0),this.amount.token);for(const t of this.secondaryFees){const n=this.amount.value.mul(t.basisPoints).div(1e4);e=Ps(e,Ns(n,this.amount.token))}return e}}const to=[{inputs:[{internalType:"address",name:"_admin",type:"address"},{internalType:"address",name:"_uniRouter",type:"address"},{internalType:"address",name:"_wimx",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"ContractPaused",type:"error"},{inputs:[],name:"DeadlinePassed",type:"error"},{inputs:[],name:"FailedToRefundNativeTokens",type:"error"},{inputs:[{internalType:"address payable",name:"recipient",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"FailedToSendFees",type:"error"},{inputs:[{internalType:"uint256",name:"required",type:"uint256"},{internalType:"uint256",name:"actual",type:"uint256"}],name:"FailedToUnwrapNativeTokens",type:"error"},{inputs:[],name:"FailedToWithdrawNativeTokens",type:"error"},{inputs:[],name:"FeeTooHigh",type:"error"},{inputs:[],name:"IncorrectRecipient",type:"error"},{inputs:[],name:"InputTokenNotWrapped",type:"error"},{inputs:[],name:"NativeTokenAmountMismatch",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"feeToken",type:"address"},{indexed:!0,internalType:"address",name:"feePayer",type:"address"},{indexed:!0,internalType:"address",name:"feeRecipient",type:"address"},{indexed:!1,internalType:"uint256",name:"feeAmount",type:"uint256"}],name:"FeeTaken",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"feePayer",type:"address"},{indexed:!0,internalType:"address",name:"feeRecipient",type:"address"},{indexed:!1,internalType:"uint256",name:"feeAmount",type:"uint256"}],name:"FeeTaken",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"account",type:"address"}],name:"Paused",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"previousAdminRole",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"newAdminRole",type:"bytes32"}],name:"RoleAdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"address",name:"account",type:"address"},{indexed:!0,internalType:"address",name:"sender",type:"address"}],name:"RoleGranted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"address",name:"account",type:"address"},{indexed:!0,internalType:"address",name:"sender",type:"address"}],name:"RoleRevoked",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"account",type:"address"}],name:"Unpaused",type:"event"},{inputs:[],name:"DEFAULT_ADMIN_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{components:[{internalType:"address payable",name:"recipient",type:"address"},{internalType:"uint256",name:"feeBasisPoints",type:"uint256"}],internalType:"struct IImmutableSwapProxy.SecondaryFeeParams[]",name:"secondaryFees",type:"tuple[]"},{components:[{internalType:"address",name:"tokenIn",type:"address"},{internalType:"address",name:"tokenOut",type:"address"},{internalType:"uint24",name:"fee",type:"uint24"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amountIn",type:"uint256"},{internalType:"uint256",name:"amountOutMinimum",type:"uint256"},{internalType:"uint160",name:"sqrtPriceLimitX96",type:"uint160"}],internalType:"struct IV3SwapRouter.ExactInputSingleParams",name:"swapParams",type:"tuple"}],name:"exactInputSingleWithSecondaryFee",outputs:[{internalType:"uint256",name:"amountOut",type:"uint256"}],stateMutability:"payable",type:"function"},{inputs:[{components:[{internalType:"address payable",name:"recipient",type:"address"},{internalType:"uint256",name:"feeBasisPoints",type:"uint256"}],internalType:"struct IImmutableSwapProxy.SecondaryFeeParams[]",name:"secondaryFees",type:"tuple[]"},{components:[{internalType:"bytes",name:"path",type:"bytes"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amountIn",type:"uint256"},{internalType:"uint256",name:"amountOutMinimum",type:"uint256"}],internalType:"struct IV3SwapRouter.ExactInputParams",name:"swapParams",type:"tuple"}],name:"exactInputWithSecondaryFee",outputs:[{internalType:"uint256",name:"amountOut",type:"uint256"}],stateMutability:"payable",type:"function"},{inputs:[{components:[{internalType:"address payable",name:"recipient",type:"address"},{internalType:"uint256",name:"feeBasisPoints",type:"uint256"}],internalType:"struct IImmutableSwapProxy.SecondaryFeeParams[]",name:"secondaryFees",type:"tuple[]"},{components:[{internalType:"address",name:"tokenIn",type:"address"},{internalType:"address",name:"tokenOut",type:"address"},{internalType:"uint24",name:"fee",type:"uint24"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amountOut",type:"uint256"},{internalType:"uint256",name:"amountInMaximum",type:"uint256"},{internalType:"uint160",name:"sqrtPriceLimitX96",type:"uint160"}],internalType:"struct IV3SwapRouter.ExactOutputSingleParams",name:"swapParams",type:"tuple"}],name:"exactOutputSingleWithSecondaryFee",outputs:[{internalType:"uint256",name:"amountIn",type:"uint256"}],stateMutability:"payable",type:"function"},{inputs:[{components:[{internalType:"address payable",name:"recipient",type:"address"},{internalType:"uint256",name:"feeBasisPoints",type:"uint256"}],internalType:"struct IImmutableSwapProxy.SecondaryFeeParams[]",name:"secondaryFees",type:"tuple[]"},{components:[{internalType:"bytes",name:"path",type:"bytes"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amountOut",type:"uint256"},{internalType:"uint256",name:"amountInMaximum",type:"uint256"}],internalType:"struct IV3SwapRouter.ExactOutputParams",name:"swapParams",type:"tuple"}],name:"exactOutputWithSecondaryFee",outputs:[{internalType:"uint256",name:"amountIn",type:"uint256"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"}],name:"getRoleAdmin",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"grantRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"hasRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"bytes[]",name:"data",type:"bytes[]"}],name:"multicall",outputs:[{internalType:"bytes[]",name:"",type:"bytes[]"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes[]",name:"data",type:"bytes[]"}],name:"multicall",outputs:[{internalType:"bytes[]",name:"results",type:"bytes[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"pause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"paused",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"renounceRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"revokeRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"unpause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amountMinimum",type:"uint256"}],name:"unwrapNativeToken",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"address",name:"erc20",type:"address"}],name:"withdrawFunds",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"}],name:"withdrawFunds",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}],no="0x60806040523480156200001157600080fd5b50604051620034dd380380620034dd83398101604081905262000034916200015c565b6001805460ff191690556200004b6000846200009e565b600180546001600160a01b039384166101008102610100600160a81b03199092169190911790915560038054929093166001600160a01b03199283161790925560028054909116909117905550620001a6565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166200013b576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620000fa3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b80516001600160a01b03811681146200015757600080fd5b919050565b6000806000606084860312156200017257600080fd5b6200017d846200013f565b92506200018d602085016200013f565b91506200019d604085016200013f565b90509250925092565b61332780620001b66000396000f3fe6080604052600436106101175760003560e01c806358e81a50116100a05780638456cb59116100645780638456cb59146102c457806391d14854146102d9578063a217fddf146102f9578063ac9650d81461030e578063d547741f1461032e57600080fd5b806358e81a50146102465780635ae401dc146102595780635c975abb146102795780635ebca7991461029157806368742da6146102a457600080fd5b80632f2ff15d116100e75780632f2ff15d146101cb57806336568abe146101eb578063383ebb0b1461020b5780633f4ba83a1461021e5780635640f6591461023357600080fd5b80620fa9fb1461012357806301ffc9a714610145578063116944b21461017a578063248a9ca31461019b57600080fd5b3661011e57005b600080fd5b34801561012f57600080fd5b5061014361013e366004612ab8565b61034e565b005b34801561015157600080fd5b50610165610160366004612af1565b61041a565b60405190151581526020015b60405180910390f35b61018d610188366004612c89565b610451565b604051908152602001610171565b3480156101a757600080fd5b5061018d6101b6366004612cde565b60009081526020819052604090206001015490565b3480156101d757600080fd5b506101436101e6366004612cf7565b610771565b3480156101f757600080fd5b50610143610206366004612cf7565b610796565b61018d610219366004612ddf565b610819565b34801561022a57600080fd5b50610143610b86565b61018d610241366004612ddf565b610bd6565b61018d610254366004612c89565b610ee4565b61026c610267366004612e8b565b61121e565b6040516101719190612f26565b34801561028557600080fd5b5060015460ff16610165565b61014361029f366004612cde565b611255565b3480156102b057600080fd5b506101436102bf366004612f88565b6113ad565b3480156102d057600080fd5b50610143611428565b3480156102e557600080fd5b506101656102f4366004612cf7565b611476565b34801561030557600080fd5b5061018d600081565b34801561031a57600080fd5b5061026c610329366004612fa5565b61149f565b34801561033a57600080fd5b50610143610349366004612cf7565b611593565b6103787f7a8dc26796a1e50e6e190b70259f58f6a4edd5b22280ceecc82b687b8e98286933611476565b610394576040516282b42960e81b815260040160405180910390fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156103db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ff9190612fe6565b90506104156001600160a01b03831684836115b8565b505050565b60006001600160e01b03198216637965db0b60e01b148061044b57506301ffc9a760e01b6001600160e01b03198316145b92915050565b600061045f60015460ff1690565b1561047d5760405163ab35696f60e01b815260040160405180910390fd5b61048a826060015161161b565b6104a75760405163519bdea760e01b815260040160405180910390fd5b608082015134801561065a57836080015181146104d7576040516342f7487960e11b815260040160405180910390fd5b60035484516001600160a01b03908116911614610507576040516324d0121760e01b815260040160405180910390fd5b60008061056f866000015187608001518a8a808060200260200160405190810160405280939291908181526020016000905b828210156105655761055660408302860136819003810190612fff565b81526020019060010190610539565b5050505050611641565b608088018290526001546040516304e45aaf60e01b815292945090925061010090046001600160a01b0316906304e45aaf9084906105b1908a90600401613056565b60206040518083038185885af11580156105cf573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906105f49190612fe6565b945061065384828a8a808060200260200160405190810160405280939291908181526020016000905b828210156106495761063a60408302860136819003810190612fff565b8152602001906001019061061d565b5050505050611679565b5050610768565b6000806106b8866000015187608001518a8a808060200260200160405190810160405280939291908181526020016000905b82821015610565576106a960408302860136819003810190612fff565b8152602001906001019061068c565b60808801829052875191935091506106db906001600160a01b031633308561170c565b6001546040516304e45aaf60e01b81526101009091046001600160a01b0316906304e45aaf9061070f908990600401613056565b6020604051808303816000875af115801561072e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107529190612fe6565b9450610765866000015185838b8b61174a565b50505b50509392505050565b60008281526020819052604090206001015461078c8161184b565b6104158383611855565b6001600160a01b038116331461080b5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b61081582826118d9565b5050565b600061082760015460ff1690565b156108455760405163ab35696f60e01b815260040160405180910390fd5b610852826020015161161b565b61086f5760405163519bdea760e01b815260040160405180910390fd5b600061087e836000015161193e565b606084015190915034908115610a30576003546001600160a01b038481169116146108bc576040516324d0121760e01b815260040160405180910390fd5b846060015182146108e0576040516342f7487960e11b815260040160405180910390fd5b600061094286606001518989808060200260200160405190810160405280939291908181526020016000905b828210156109385761092960408302860136819003810190612fff565b8152602001906001019061090c565b5050505050611974565b606087018190526001546040516304dc09a360e11b81529192506000916101009091046001600160a01b0316906309b81346908490610985908b906004016130fc565b60206040518083038185885af11580156109a3573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906109c89190612fe6565b9050610a2781848b8b808060200260200160405190810160405280939291908181526020016000905b82821015610a1d57610a0e60408302860136819003810190612fff565b815260200190600101906109f1565b50505050506119c3565b95505050610b7c565b6000610a938487606001518a8a808060200260200160405190810160405280939291908181526020016000905b82821015610a8957610a7a60408302860136819003810190612fff565b81526020019060010190610a5d565b5050505050611aab565b606087018190526001546040516304dc09a360e11b81529192506000916101009091046001600160a01b0316906309b8134690610ad4908a906004016130fc565b6020604051808303816000875af1158015610af3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b179190612fe6565b9050610b778582858c8c808060200260200160405190810160405280939291908181526020016000905b82821015610b6d57610b5e60408302860136819003810190612fff565b81526020019060010190610b41565b5050505050611b03565b955050505b5050509392505050565b610bb07fe7276a2a84d8de556657ec9cf93a55a7d66f096e529d0582ed08e9e2208b92b533611476565b610bcc576040516282b42960e81b815260040160405180910390fd5b610bd4611b57565b565b6000610be460015460ff1690565b15610c025760405163ab35696f60e01b815260040160405180910390fd5b610c0f826020015161161b565b610c2c5760405163519bdea760e01b815260040160405180910390fd5b6000610c3b8360000151611ba9565b6040840151909150348015610dd75784604001518114610c6e576040516342f7487960e11b815260040160405180910390fd5b6003546001600160a01b03848116911614610c9c576040516324d0121760e01b815260040160405180910390fd5b600080610cf68588604001518b8b808060200260200160405190810160405280939291908181526020016000905b8282101561056557610ce760408302860136819003810190612fff565b81526020019060010190610cca565b6040898101839052600154905163b858183f60e01b815292945090925061010090046001600160a01b03169063b858183f908490610d38908b906004016130fc565b60206040518083038185885af1158015610d56573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d7b9190612fe6565b9550610dd084828b8b808060200260200160405190810160405280939291908181526020016000905b8282101561064957610dc160408302860136819003810190612fff565b81526020019060010190610da4565b5050610b7c565b600080610e318588604001518b8b808060200260200160405190810160405280939291908181526020016000905b8282101561056557610e2260408302860136819003810190612fff565b81526020019060010190610e05565b604089018290529092509050610e526001600160a01b03861633308561170c565b60015460405163b858183f60e01b81526101009091046001600160a01b03169063b858183f90610e86908a906004016130fc565b6020604051808303816000875af1158015610ea5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec99190612fe6565b9550610ed88585838c8c61174a565b50505050509392505050565b6000610ef260015460ff1690565b15610f105760405163ab35696f60e01b815260040160405180910390fd5b610f1d826060015161161b565b610f3a5760405163519bdea760e01b815260040160405180910390fd5b60a0820151349081156110d75760035484516001600160a01b03908116911614610f77576040516324d0121760e01b815260040160405180910390fd5b8360a001518214610f9b576040516342f7487960e11b815260040160405180910390fd5b6000610ff38560a001518888808060200260200160405190810160405280939291908181526020016000905b8282101561093857610fe460408302860136819003810190612fff565b81526020019060010190610fc7565b60a08601819052600154604051635023b4df60e01b81529192506000916101009091046001600160a01b031690635023b4df908490611036908a90600401613056565b60206040518083038185885af1158015611054573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906110799190612fe6565b90506110ce81848a8a808060200260200160405190810160405280939291908181526020016000905b82821015610a1d576110bf60408302860136819003810190612fff565b815260200190600101906110a2565b94505050610768565b600061113485600001518660a001518989808060200260200160405190810160405280939291908181526020016000905b82821015610a895761112560408302860136819003810190612fff565b81526020019060010190611108565b60a08601819052600154604051635023b4df60e01b81529192506000916101009091046001600160a01b031690635023b4df90611175908990600401613056565b6020604051808303816000875af1158015611194573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b89190612fe6565b9050611212866000015182858b8b808060200260200160405190810160405280939291908181526020016000905b82821015610b6d5761120360408302860136819003810190612fff565b815260200190600101906111e6565b98975050505050505050565b6060834211156112415760405163387b2e5560e11b815260040160405180910390fd5b61124b838361149f565b90505b9392505050565b60015460ff16156112795760405163ab35696f60e01b815260040160405180910390fd5b6003546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156112c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e69190612fe6565b905081811015611313576040516342fb4ceb60e11b81526004810183905260248101829052604401610802565b801561081557600354604051632e1a7d4d60e01b8152600481018390526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561135f57600080fd5b505af1158015611373573d6000803e3d6000fd5b5050505060006113833383611bb5565b905080610415576040516342fb4ceb60e11b81526004810184905260248101839052604401610802565b6113d77f7a8dc26796a1e50e6e190b70259f58f6a4edd5b22280ceecc82b687b8e98286933611476565b6113f3576040516282b42960e81b815260040160405180910390fd5b47156114255760006114058247611bb5565b90508061081557604051633398652560e11b815260040160405180910390fd5b50565b6114527ffcb9fcbfa83b897fb2d5cf4b58962164105c1e71489a37ef3ae0db3fdce576f633611476565b61146e576040516282b42960e81b815260040160405180910390fd5b610bd4611c5f565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6060816001600160401b038111156114b9576114b9612b66565b6040519080825280602002602001820160405280156114ec57816020015b60608152602001906001900390816114d75790505b50905060005b8281101561158c5761155c308585848181106115105761151061310f565b90506020028101906115229190613125565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611c9a92505050565b82828151811061156e5761156e61310f565b6020026020010181905250808061158490613181565b9150506114f2565b5092915050565b6000828152602081905260409020600101546115ae8161184b565b61041583836118d9565b6040516001600160a01b03831660248201526044810182905261041590849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611cbf565b60006001600160a01b03821633148061044b57506001600160a01b038216301492915050565b60008061164d83611d94565b506116588484611e07565b509050611665818561319a565b91506116718583611f30565b935093915050565b600061168361202d565b905060006116928583866120a4565b90506000806116a18386611e07565b915091506116ae816120d0565b8315611703576000826116c1858a61319a565b6116cb919061319a565b905080156117015760006116df3383611bb5565b9050806116ff576040516382e4f46960e01b815260040160405180910390fd5b505b505b50505050505050565b6040516001600160a01b03808516602483015283166044820152606481018290526117449085906323b872dd60e01b906084016115e4565b50505050565b6040516370a0823160e01b81523060048201526000906001600160a01b038716906370a0823190602401602060405180830381865afa158015611791573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b59190612fe6565b905060006117c48683876120a4565b90506000611824828686808060200260200160405190810160405280939291908181526020016000905b8282101561181a5761180b60408302860136819003810190612fff565b815260200190600101906117ee565b5050505050611e07565b91505061183188826121af565b8215611701576117016001600160a01b03891633856115b8565b61142581336122b8565b61185f8282611476565b610815576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556118953390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6118e38282611476565b15610815576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000806014835161194f919061319a565b9050600061195f84836014612311565b905061196c81600061241e565b949350505050565b60008061198083611d94565b90506000611990826127106131ad565b905060006119a18661271084612483565b6003549091506119ba906001600160a01b031682611f30565b95945050505050565b60008060006119d28685611e07565b915091506119df816120d0565b600260009054906101000a90046001600160a01b03166001600160a01b03166312210e8a6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611a2f57600080fd5b505af1158015611a43573d6000803e3d6000fd5b505050506000828787611a56919061319a565b611a60919061319a565b90508015611a96576000611a743383611bb5565b905080611a94576040516382e4f46960e01b815260040160405180910390fd5b505b611aa083886131ad565b979650505050505050565b600080611ab783611d94565b90506000611ac7826127106131ad565b90506000611ad88661271084612483565b9050611ae48782611f30565b611af96001600160a01b03881633308961170c565b9695505050505050565b6000806000611b128685611e07565b91509150611b2087826124c3565b600082611b2d888861319a565b611b37919061319a565b9050611b4d6001600160a01b03891633836115b8565b61121283886131ad565b611b5f6125ca565b6001805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600061044b828261241e565b600081471015611c075760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610802565b6040516001600160a01b038416908390600081818185875af1925050503d8060008114611c50576040519150601f19603f3d011682016040523d82523d6000602084013e611c55565b606091505b5090949350505050565b611c67612613565b6001805460ff1916811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611b8c565b606061124e83836040518060600160405280602781526020016132cb60279139612659565b6000611d14826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166126c79092919063ffffffff16565b9050805160001480611d35575080806020019051810190611d3591906131c0565b6104155760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610802565b6000805b8251811015611dde57828181518110611db357611db361310f565b60200260200101516020015182611dca91906131ad565b915080611dd681613181565b915050611d98565b506103e8811115611e025760405163cd4e616760e01b815260040160405180910390fd5b919050565b6000606082516001600160401b03811115611e2457611e24612b66565b604051908082528060200260200182016040528015611e6957816020015b6040805180820190915260008082526020820152815260200190600190039081611e425790505b50905060005b8351811015611f28576000611eae858381518110611e8f57611e8f61310f565b602002602001015160200151612710886126d69092919063ffffffff16565b90506040518060400160405280868481518110611ecd57611ecd61310f565b6020026020010151600001516001600160a01b0316815260200182815250838381518110611efd57611efd61310f565b6020908102919091010152611f1281856131ad565b9350508080611f2090613181565b915050611e6f565b509250929050565b600154604051636eb1769f60e11b81523060048201526001600160a01b0361010090920482166024820152829184169063dd62ed3e90604401602060405180830381865afa158015611f86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611faa9190612fe6565b10156108155760015460405163095ea7b360e01b81526101009091046001600160a01b039081166004830152600019602483015283169063095ea7b3906044016020604051808303816000875af1158015612009573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061041591906131c0565b60025460408051630910874560e11b8152905160009247926001600160a01b03909116916312210e8a91600480820192879290919082900301818387803b15801561207757600080fd5b505af115801561208b573d6000803e3d6000fd5b5047925061209d91508390508261319a565b9250505090565b600082156120c857816120b7848661319a565b6120c1919061319a565b905061124e565b509192915050565b60005b81518110156108155760008282815181106120f0576120f061310f565b60200260200101519050600061210e82600001518360200151611bb5565b90508061214557815160208301516040516208c3b360e61b81526001600160a01b0390921660048301526024820152604401610802565b81600001516001600160a01b0316336001600160a01b03167fe0e765ab26c1caf691c510426951246128b96830e49cc81d8c093fd551abac35846020015160405161219291815260200190565b60405180910390a3505080806121a790613181565b9150506120d3565b60005b815181101561041557612215338383815181106121d1576121d161310f565b6020026020010151600001518484815181106121ef576121ef61310f565b602002602001015160200151866001600160a01b031661170c909392919063ffffffff16565b8181815181106122275761222761310f565b6020026020010151600001516001600160a01b0316336001600160a01b0316846001600160a01b03167f1f9a9fdac86b6ca3c5300bec0b61555cded1f1a234378602dcca6c27085eac8e8585815181106122835761228361310f565b60200260200101516020015160405161229e91815260200190565b60405180910390a4806122b081613181565b9150506121b2565b6122c28282611476565b610815576122cf81612778565b6122da83602061278a565b6040516020016122eb9291906131e2565b60408051601f198184030181529082905262461bcd60e51b825261080291600401613257565b60608161231f81601f6131ad565b101561235e5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606401610802565b61236882846131ad565b845110156123ac5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610802565b6060821580156123cb5760405191506000825260208201604052612415565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156124045780518352602092830192016123ec565b5050858452601f01601f1916604052505b50949350505050565b600061242b8260146131ad565b835110156124735760405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606401610802565b500160200151600160601b900490565b60006124908484846126d6565b9050600082806124a2576124a261326a565b848609111561124e5760001981106124b957600080fd5b6001019392505050565b60005b8151811015610415576125278282815181106124e4576124e461310f565b6020026020010151600001518383815181106125025761250261310f565b602002602001015160200151856001600160a01b03166115b89092919063ffffffff16565b8181815181106125395761253961310f565b6020026020010151600001516001600160a01b0316336001600160a01b0316846001600160a01b03167f1f9a9fdac86b6ca3c5300bec0b61555cded1f1a234378602dcca6c27085eac8e8585815181106125955761259561310f565b6020026020010151602001516040516125b091815260200190565b60405180910390a4806125c281613181565b9150506124c6565b60015460ff16610bd45760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610802565b60015460ff1615610bd45760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610802565b6060600080856001600160a01b0316856040516126769190613280565b600060405180830381855af49150503d80600081146126b1576040519150601f19603f3d011682016040523d82523d6000602084013e6126b6565b606091505b5091509150611af986838387612925565b606061124b848460008561299e565b600083830281600019858709828110838203039150508084116126f857600080fd5b8060000361270b5750829004905061124e565b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b606061044b6001600160a01b03831660145b6060600061279983600261329c565b6127a49060026131ad565b6001600160401b038111156127bb576127bb612b66565b6040519080825280601f01601f1916602001820160405280156127e5576020820181803683370190505b509050600360fc1b816000815181106128005761280061310f565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061282f5761282f61310f565b60200101906001600160f81b031916908160001a905350600061285384600261329c565b61285e9060016131ad565b90505b60018111156128d6576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106128925761289261310f565b1a60f81b8282815181106128a8576128a861310f565b60200101906001600160f81b031916908160001a90535060049490941c936128cf816132b3565b9050612861565b50831561124e5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610802565b6060831561299457825160000361298d576001600160a01b0385163b61298d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610802565b508161196c565b61196c8383612a6e565b6060824710156129ff5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610802565b600080866001600160a01b03168587604051612a1b9190613280565b60006040518083038185875af1925050503d8060008114612a58576040519150601f19603f3d011682016040523d82523d6000602084013e612a5d565b606091505b5091509150611aa087838387612925565b815115612a7e5781518083602001fd5b8060405162461bcd60e51b81526004016108029190613257565b6001600160a01b038116811461142557600080fd5b8035611e0281612a98565b60008060408385031215612acb57600080fd5b8235612ad681612a98565b91506020830135612ae681612a98565b809150509250929050565b600060208284031215612b0357600080fd5b81356001600160e01b03198116811461124e57600080fd5b60008083601f840112612b2d57600080fd5b5081356001600160401b03811115612b4457600080fd5b6020830191508360208260061b8501011115612b5f57600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715612b9e57612b9e612b66565b60405290565b604051608081016001600160401b0381118282101715612b9e57612b9e612b66565b604051601f8201601f191681016001600160401b0381118282101715612bee57612bee612b66565b604052919050565b600060e08284031215612c0857600080fd5b612c10612b7c565b90508135612c1d81612a98565b81526020820135612c2d81612a98565b6020820152604082013562ffffff81168114612c4857600080fd5b6040820152612c5960608301612aad565b60608201526080820135608082015260a082013560a0820152612c7e60c08301612aad565b60c082015292915050565b60008060006101008486031215612c9f57600080fd5b83356001600160401b03811115612cb557600080fd5b612cc186828701612b1b565b9094509250612cd590508560208601612bf6565b90509250925092565b600060208284031215612cf057600080fd5b5035919050565b60008060408385031215612d0a57600080fd5b823591506020830135612ae681612a98565b600060808284031215612d2e57600080fd5b612d36612ba4565b905081356001600160401b0380821115612d4f57600080fd5b818401915084601f830112612d6357600080fd5b8135602082821115612d7757612d77612b66565b612d89601f8301601f19168201612bc6565b92508183528681838601011115612d9f57600080fd5b81818501828501376000818385010152828552612dbd818701612aad565b8186015250505050604082013560408201526060820135606082015292915050565b600080600060408486031215612df457600080fd5b83356001600160401b0380821115612e0b57600080fd5b612e1787838801612b1b565b90955093506020860135915080821115612e3057600080fd5b50612e3d86828701612d1c565b9150509250925092565b60008083601f840112612e5957600080fd5b5081356001600160401b03811115612e7057600080fd5b6020830191508360208260051b8501011115612b5f57600080fd5b600080600060408486031215612ea057600080fd5b8335925060208401356001600160401b03811115612ebd57600080fd5b612ec986828701612e47565b9497909650939450505050565b60005b83811015612ef1578181015183820152602001612ed9565b50506000910152565b60008151808452612f12816020860160208601612ed6565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015612f7b57603f19888603018452612f69858351612efa565b94509285019290850190600101612f4d565b5092979650505050505050565b600060208284031215612f9a57600080fd5b813561124e81612a98565b60008060208385031215612fb857600080fd5b82356001600160401b03811115612fce57600080fd5b612fda85828601612e47565b90969095509350505050565b600060208284031215612ff857600080fd5b5051919050565b60006040828403121561301157600080fd5b604051604081018181106001600160401b038211171561303357613033612b66565b604052823561304181612a98565b81526020928301359281019290925250919050565b60e0810161044b828480516001600160a01b03908116835260208083015182169084015260408083015162ffffff16908401526060808301518216908401526080808301519084015260a0828101519084015260c09182015116910152565b60008151608084526130ca6080850182612efa565b6020848101516001600160a01b0316908601526040808501519086015260609384015193909401929092525090919050565b60208152600061124e60208301846130b5565b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261313c57600080fd5b8301803591506001600160401b0382111561315657600080fd5b602001915036819003821315612b5f57600080fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016131935761319361316b565b5060010190565b8181038181111561044b5761044b61316b565b8082018082111561044b5761044b61316b565b6000602082840312156131d257600080fd5b8151801515811461124e57600080fd5b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161321a816017850160208801612ed6565b7001034b99036b4b9b9b4b733903937b6329607d1b601791840191820152835161324b816028840160208801612ed6565b01602801949350505050565b60208152600061124e6020830184612efa565b634e487b7160e01b600052601260045260246000fd5b60008251613292818460208701612ed6565b9190910192915050565b808202811582820484141761044b5761044b61316b565b6000816132c2576132c261316b565b50600019019056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220162c0f9d1b47c666f486fc65c7c7502bb0e7378e3166be6f93d98943154831c364736f6c63430008130033";class ao extends i{constructor(...e){e.length>1?super(...e):super(to,no,e[0])}deploy(e,t,n,a){return super.deploy(e,t,n,a||{})}getDeployTransaction(e,t,n,a){return super.getDeployTransaction(e,t,n,a||{})}attach(e){return super.attach(e)}connect(e){return super.connect(e)}static bytecode=no;static abi=to;static createInterface(){return new s.Interface(to)}static connect(e,t){return new o(e,to,t)}}const ro=[{inputs:[],name:"getCurrentBlockTimestamp",outputs:[{internalType:"uint256",name:"timestamp",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"addr",type:"address"}],name:"getEthBalance",outputs:[{internalType:"uint256",name:"balance",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{components:[{internalType:"address",name:"target",type:"address"},{internalType:"uint256",name:"gasLimit",type:"uint256"},{internalType:"bytes",name:"callData",type:"bytes"}],internalType:"struct UniswapInterfaceMulticall.Call[]",name:"calls",type:"tuple[]"}],name:"multicall",outputs:[{internalType:"uint256",name:"blockNumber",type:"uint256"},{components:[{internalType:"bool",name:"success",type:"bool"},{internalType:"uint256",name:"gasUsed",type:"uint256"},{internalType:"bytes",name:"returnData",type:"bytes"}],internalType:"struct UniswapInterfaceMulticall.Result[]",name:"returnData",type:"tuple[]"}],stateMutability:"nonpayable",type:"function"}],io="0x608060405234801561001057600080fd5b50610567806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630f28c97d146100465780631749e1e3146100645780634d2301cc14610085575b600080fd5b61004e610098565b60405161005b919061041f565b60405180910390f35b6100776100723660046102a7565b61009c565b60405161005b929190610428565b61004e610093366004610286565b610220565b4290565b8051439060609067ffffffffffffffff811180156100b957600080fd5b506040519080825280602002602001820160405280156100f357816020015b6100e061023a565b8152602001906001900390816100d85790505b50905060005b835181101561021a57600080600086848151811061011357fe5b60200260200101516000015187858151811061012b57fe5b60200260200101516020015188868151811061014357fe5b60200260200101516040015192509250925060005a90506000808573ffffffffffffffffffffffffffffffffffffffff1685856040516101839190610403565b60006040518083038160008787f1925050503d80600081146101c1576040519150601f19603f3d011682016040523d82523d6000602084013e6101c6565b606091505b509150915060005a8403905060405180606001604052808415158152602001828152602001838152508989815181106101fb57fe5b60200260200101819052505050505050505080806001019150506100f9565b50915091565b73ffffffffffffffffffffffffffffffffffffffff163190565b604051806060016040528060001515815260200160008152602001606081525090565b803573ffffffffffffffffffffffffffffffffffffffff8116811461028157600080fd5b919050565b600060208284031215610297578081fd5b6102a08261025d565b9392505050565b600060208083850312156102b9578182fd5b823567ffffffffffffffff808211156102d0578384fd5b818501915085601f8301126102e3578384fd5b8135818111156102ef57fe5b6102fc8485830201610506565b81815284810190848601875b848110156103f457813587017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0606081838f03011215610346578a8bfd5b60408051606081018181108b8211171561035c57fe5b8252610369848d0161025d565b8152818401358c82015260608401358a811115610384578d8efd5b8085019450508e603f850112610398578c8dfd5b8b8401358a8111156103a657fe5b6103b68d85601f84011601610506565b93508084528f838287010111156103cb578d8efd5b808386018e86013783018c018d9052908101919091528552509287019290870190600101610308565b50909998505050505050505050565b6000825161041581846020870161052a565b9190910192915050565b90815260200190565b600060408083018584526020828186015281865180845260609350838701915083838202880101838901875b838110156104f6578983037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa001855281518051151584528681015187850152880151888401889052805188850181905260806104b582828801858c0161052a565b96880196601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01694909401909301925090850190600101610454565b50909a9950505050505050505050565b60405181810167ffffffffffffffff8111828210171561052257fe5b604052919050565b60005b8381101561054557818101518382015260200161052d565b83811115610554576000848401525b5050505056fea164736f6c6343000706000a";class so extends i{constructor(...e){e.length>1?super(...e):super(ro,io,e[0])}deploy(e){return super.deploy(e||{})}getDeployTransaction(e){return super.getDeployTransaction(e||{})}attach(e){return super.attach(e)}connect(e){return super.connect(e)}static bytecode=io;static abi=ro;static createInterface(){return new s.Interface(ro)}static connect(e,t){return new o(e,ro,t)}}const oo=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"int24",name:"tickLower",type:"int24"},{indexed:!0,internalType:"int24",name:"tickUpper",type:"int24"},{indexed:!1,internalType:"uint128",name:"amount",type:"uint128"},{indexed:!1,internalType:"uint256",name:"amount0",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1",type:"uint256"}],name:"Burn",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!1,internalType:"address",name:"recipient",type:"address"},{indexed:!0,internalType:"int24",name:"tickLower",type:"int24"},{indexed:!0,internalType:"int24",name:"tickUpper",type:"int24"},{indexed:!1,internalType:"uint128",name:"amount0",type:"uint128"},{indexed:!1,internalType:"uint128",name:"amount1",type:"uint128"}],name:"Collect",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"uint128",name:"amount0",type:"uint128"},{indexed:!1,internalType:"uint128",name:"amount1",type:"uint128"}],name:"CollectProtocol",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"uint256",name:"amount0",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1",type:"uint256"},{indexed:!1,internalType:"uint256",name:"paid0",type:"uint256"},{indexed:!1,internalType:"uint256",name:"paid1",type:"uint256"}],name:"Flash",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint16",name:"observationCardinalityNextOld",type:"uint16"},{indexed:!1,internalType:"uint16",name:"observationCardinalityNextNew",type:"uint16"}],name:"IncreaseObservationCardinalityNext",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint160",name:"sqrtPriceX96",type:"uint160"},{indexed:!1,internalType:"int24",name:"tick",type:"int24"}],name:"Initialize",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"int24",name:"tickLower",type:"int24"},{indexed:!0,internalType:"int24",name:"tickUpper",type:"int24"},{indexed:!1,internalType:"uint128",name:"amount",type:"uint128"},{indexed:!1,internalType:"uint256",name:"amount0",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1",type:"uint256"}],name:"Mint",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint8",name:"feeProtocol0Old",type:"uint8"},{indexed:!1,internalType:"uint8",name:"feeProtocol1Old",type:"uint8"},{indexed:!1,internalType:"uint8",name:"feeProtocol0New",type:"uint8"},{indexed:!1,internalType:"uint8",name:"feeProtocol1New",type:"uint8"}],name:"SetFeeProtocol",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"int256",name:"amount0",type:"int256"},{indexed:!1,internalType:"int256",name:"amount1",type:"int256"},{indexed:!1,internalType:"uint160",name:"sqrtPriceX96",type:"uint160"},{indexed:!1,internalType:"uint128",name:"liquidity",type:"uint128"},{indexed:!1,internalType:"int24",name:"tick",type:"int24"}],name:"Swap",type:"event"},{inputs:[{internalType:"int24",name:"tickLower",type:"int24"},{internalType:"int24",name:"tickUpper",type:"int24"},{internalType:"uint128",name:"amount",type:"uint128"}],name:"burn",outputs:[{internalType:"uint256",name:"amount0",type:"uint256"},{internalType:"uint256",name:"amount1",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"recipient",type:"address"},{internalType:"int24",name:"tickLower",type:"int24"},{internalType:"int24",name:"tickUpper",type:"int24"},{internalType:"uint128",name:"amount0Requested",type:"uint128"},{internalType:"uint128",name:"amount1Requested",type:"uint128"}],name:"collect",outputs:[{internalType:"uint128",name:"amount0",type:"uint128"},{internalType:"uint128",name:"amount1",type:"uint128"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"recipient",type:"address"},{internalType:"uint128",name:"amount0Requested",type:"uint128"},{internalType:"uint128",name:"amount1Requested",type:"uint128"}],name:"collectProtocol",outputs:[{internalType:"uint128",name:"amount0",type:"uint128"},{internalType:"uint128",name:"amount1",type:"uint128"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"factory",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"fee",outputs:[{internalType:"uint24",name:"",type:"uint24"}],stateMutability:"view",type:"function"},{inputs:[],name:"feeGrowthGlobal0X128",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"feeGrowthGlobal1X128",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amount0",type:"uint256"},{internalType:"uint256",name:"amount1",type:"uint256"},{internalType:"bytes",name:"data",type:"bytes"}],name:"flash",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint16",name:"observationCardinalityNext",type:"uint16"}],name:"increaseObservationCardinalityNext",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint160",name:"sqrtPriceX96",type:"uint160"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"liquidity",outputs:[{internalType:"uint128",name:"",type:"uint128"}],stateMutability:"view",type:"function"},{inputs:[],name:"maxLiquidityPerTick",outputs:[{internalType:"uint128",name:"",type:"uint128"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"recipient",type:"address"},{internalType:"int24",name:"tickLower",type:"int24"},{internalType:"int24",name:"tickUpper",type:"int24"},{internalType:"uint128",name:"amount",type:"uint128"},{internalType:"bytes",name:"data",type:"bytes"}],name:"mint",outputs:[{internalType:"uint256",name:"amount0",type:"uint256"},{internalType:"uint256",name:"amount1",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"observations",outputs:[{internalType:"uint32",name:"blockTimestamp",type:"uint32"},{internalType:"int56",name:"tickCumulative",type:"int56"},{internalType:"uint160",name:"secondsPerLiquidityCumulativeX128",type:"uint160"},{internalType:"bool",name:"initialized",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint32[]",name:"secondsAgos",type:"uint32[]"}],name:"observe",outputs:[{internalType:"int56[]",name:"tickCumulatives",type:"int56[]"},{internalType:"uint160[]",name:"secondsPerLiquidityCumulativeX128s",type:"uint160[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"",type:"bytes32"}],name:"positions",outputs:[{internalType:"uint128",name:"liquidity",type:"uint128"},{internalType:"uint256",name:"feeGrowthInside0LastX128",type:"uint256"},{internalType:"uint256",name:"feeGrowthInside1LastX128",type:"uint256"},{internalType:"uint128",name:"tokensOwed0",type:"uint128"},{internalType:"uint128",name:"tokensOwed1",type:"uint128"}],stateMutability:"view",type:"function"},{inputs:[],name:"protocolFees",outputs:[{internalType:"uint128",name:"token0",type:"uint128"},{internalType:"uint128",name:"token1",type:"uint128"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint8",name:"feeProtocol0",type:"uint8"},{internalType:"uint8",name:"feeProtocol1",type:"uint8"}],name:"setFeeProtocol",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"slot0",outputs:[{internalType:"uint160",name:"sqrtPriceX96",type:"uint160"},{internalType:"int24",name:"tick",type:"int24"},{internalType:"uint16",name:"observationIndex",type:"uint16"},{internalType:"uint16",name:"observationCardinality",type:"uint16"},{internalType:"uint16",name:"observationCardinalityNext",type:"uint16"},{internalType:"uint8",name:"feeProtocol",type:"uint8"},{internalType:"bool",name:"unlocked",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"int24",name:"tickLower",type:"int24"},{internalType:"int24",name:"tickUpper",type:"int24"}],name:"snapshotCumulativesInside",outputs:[{internalType:"int56",name:"tickCumulativeInside",type:"int56"},{internalType:"uint160",name:"secondsPerLiquidityInsideX128",type:"uint160"},{internalType:"uint32",name:"secondsInside",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"recipient",type:"address"},{internalType:"bool",name:"zeroForOne",type:"bool"},{internalType:"int256",name:"amountSpecified",type:"int256"},{internalType:"uint160",name:"sqrtPriceLimitX96",type:"uint160"},{internalType:"bytes",name:"data",type:"bytes"}],name:"swap",outputs:[{internalType:"int256",name:"amount0",type:"int256"},{internalType:"int256",name:"amount1",type:"int256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"int16",name:"",type:"int16"}],name:"tickBitmap",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"tickSpacing",outputs:[{internalType:"int24",name:"",type:"int24"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"int24",name:"",type:"int24"}],name:"ticks",outputs:[{internalType:"uint128",name:"liquidityGross",type:"uint128"},{internalType:"int128",name:"liquidityNet",type:"int128"},{internalType:"uint256",name:"feeGrowthOutside0X128",type:"uint256"},{internalType:"uint256",name:"feeGrowthOutside1X128",type:"uint256"},{internalType:"int56",name:"tickCumulativeOutside",type:"int56"},{internalType:"uint160",name:"secondsPerLiquidityOutsideX128",type:"uint160"},{internalType:"uint32",name:"secondsOutside",type:"uint32"},{internalType:"bool",name:"initialized",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"token0",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"token1",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"}],uo="0x6101606040523480156200001257600080fd5b503060601b60805260408051630890357360e41b81529051600091339163890357309160048082019260a092909190829003018186803b1580156200005657600080fd5b505afa1580156200006b573d6000803e3d6000fd5b505050506040513d60a08110156200008257600080fd5b508051602080830151604084015160608086015160809096015160e896871b6001600160e81b0319166101005291811b6001600160601b031990811660e05292811b831660c0529390931b1660a052600282810b900b90921b610120529150620000f79082906200010f811b62002b8417901c565b60801b6001600160801b03191661014052506200017d565b60008082600281900b620d89e719816200012557fe5b05029050600083600281900b620d89e8816200013d57fe5b0502905060008460020b83830360020b816200015557fe5b0560010190508062ffffff166001600160801b038016816200017357fe5b0495945050505050565b60805160601c60a05160601c60c05160601c60e05160601c6101005160e81c6101205160e81c6101405160801c61567e6200024a60003980611fee5280614b5f5280614b96525080610c0052806128fd5280614bca5280614bfc525080610cef52806119cb5280611a0252806129455250806111c75280611a855280611ef4528061244452806129215280613e6b5250806108d252806112f55280611a545280611e8e52806123be5280613d2252508061207b528061227d52806128d9525080612bfb525061567e6000f3fe608060405234801561001057600080fd5b50600436106101ae5760003560e01c806370cf754a116100ee578063c45a015511610097578063ddca3f4311610071578063ddca3f4314610800578063f305839914610820578063f30dba9314610828578063f637731d146108aa576101ae565b8063c45a0155146107d1578063d0c93a7c146107d9578063d21220a7146107f8576101ae565b8063883bdbfd116100c8578063883bdbfd14610633578063a34123a71461073c578063a38807f214610776576101ae565b806370cf754a146105c65780638206a4d1146105ce57806385b66729146105f6576101ae565b80633850c7bd1161015b578063490e6cbc11610135578063490e6cbc146104705780634f1eb3d8146104fc578063514ea4bf1461054d5780635339c296146105a6576101ae565b80633850c7bd1461035b5780633c8a7d8d146103b45780634614131914610456576101ae565b80631ad8b03b1161018c5780631ad8b03b146102aa578063252c09d7146102e157806332148f6714610338576101ae565b80630dfe1681146101b3578063128acb08146101d75780631a68650214610286575b600080fd5b6101bb6108d0565b604080516001600160a01b039092168252519081900360200190f35b61026d600480360360a08110156101ed57600080fd5b6001600160a01b0382358116926020810135151592604082013592606083013516919081019060a08101608082013564010000000081111561022e57600080fd5b82018360208201111561024057600080fd5b8035906020019184600183028401116401000000008311171561026257600080fd5b5090925090506108f4565b6040805192835260208301919091528051918290030190f35b61028e6114ad565b604080516001600160801b039092168252519081900360200190f35b6102b26114bc565b60405180836001600160801b03168152602001826001600160801b031681526020019250505060405180910390f35b6102fe600480360360208110156102f757600080fd5b50356114d6565b6040805163ffffffff909516855260069390930b60208501526001600160a01b039091168383015215156060830152519081900360800190f35b6103596004803603602081101561034e57600080fd5b503561ffff1661151c565b005b610363611616565b604080516001600160a01b03909816885260029690960b602088015261ffff9485168787015292841660608701529216608085015260ff90911660a0840152151560c0830152519081900360e00190f35b61026d600480360360a08110156103ca57600080fd5b6001600160a01b03823516916020810135600290810b92604083013590910b916001600160801b036060820135169181019060a08101608082013564010000000081111561041757600080fd5b82018360208201111561042957600080fd5b8035906020019184600183028401116401000000008311171561044b57600080fd5b509092509050611666565b61045e611922565b60408051918252519081900360200190f35b6103596004803603608081101561048657600080fd5b6001600160a01b0382351691602081013591604082013591908101906080810160608201356401000000008111156104bd57600080fd5b8201836020820111156104cf57600080fd5b803590602001918460018302840111640100000000831117156104f157600080fd5b509092509050611928565b6102b2600480360360a081101561051257600080fd5b506001600160a01b03813516906020810135600290810b91604081013590910b906001600160801b0360608201358116916080013516611d83565b61056a6004803603602081101561056357600080fd5b5035611f9d565b604080516001600160801b0396871681526020810195909552848101939093529084166060840152909216608082015290519081900360a00190f35b61045e600480360360208110156105bc57600080fd5b503560010b611fda565b61028e611fec565b610359600480360360408110156105e457600080fd5b5060ff81358116916020013516612010565b6102b26004803603606081101561060c57600080fd5b506001600160a01b03813516906001600160801b036020820135811691604001351661220f565b6106a36004803603602081101561064957600080fd5b81019060208101813564010000000081111561066457600080fd5b82018360208201111561067657600080fd5b8035906020019184602083028401116401000000008311171561069857600080fd5b5090925090506124dc565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156106e75781810151838201526020016106cf565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561072657818101518382015260200161070e565b5050505090500194505050505060405180910390f35b61026d6004803603606081101561075257600080fd5b508035600290810b91602081013590910b90604001356001600160801b0316612569565b6107a06004803603604081101561078c57600080fd5b508035600290810b9160200135900b6126e0565b6040805160069490940b84526001600160a01b03909216602084015263ffffffff1682820152519081900360600190f35b6101bb6128d7565b6107e16128fb565b6040805160029290920b8252519081900360200190f35b6101bb61291f565b610808612943565b6040805162ffffff9092168252519081900360200190f35b61045e612967565b6108486004803603602081101561083e57600080fd5b503560020b61296d565b604080516001600160801b039099168952600f9790970b602089015287870195909552606087019390935260069190910b60808601526001600160a01b031660a085015263ffffffff1660c0840152151560e083015251908190036101000190f35b610359600480360360208110156108c057600080fd5b50356001600160a01b03166129db565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806108ff612bf0565b85610936576040805162461bcd60e51b8152602060048201526002602482015261415360f01b604482015290519081900360640190fd5b6040805160e0810182526000546001600160a01b0381168252600160a01b8104600290810b810b900b602083015261ffff600160b81b8204811693830193909352600160c81b810483166060830152600160d81b8104909216608082015260ff600160e81b8304811660a0830152600160f01b909204909116151560c082018190526109ef576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b87610a3a5780600001516001600160a01b0316866001600160a01b0316118015610a35575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038716105b610a6c565b80600001516001600160a01b0316866001600160a01b0316108015610a6c57506401000276a36001600160a01b038716115b610aa3576040805162461bcd60e51b815260206004820152600360248201526214d41360ea1b604482015290519081900360640190fd5b6000805460ff60f01b191681556040805160c08101909152808a610ad25760048460a0015160ff16901c610ae5565b60108460a0015160ff1681610ae357fe5b065b60ff1681526004546001600160801b03166020820152604001610b06612c27565b63ffffffff168152602001600060060b815260200160006001600160a01b031681526020016000151581525090506000808913905060006040518060e001604052808b81526020016000815260200185600001516001600160a01b03168152602001856020015160020b81526020018c610b8257600254610b86565b6001545b815260200160006001600160801b0316815260200184602001516001600160801b031681525090505b805115801590610bd55750886001600160a01b031681604001516001600160a01b031614155b15610f9f57610be261560e565b60408201516001600160a01b031681526060820151610c25906006907f00000000000000000000000000000000000000000000000000000000000000008f612c2b565b15156040830152600290810b810b60208301819052620d89e719910b1215610c5657620d89e7196020820152610c75565b6020810151620d89e860029190910b1315610c7557620d89e860208201525b610c828160200151612d6d565b6001600160a01b031660608201526040820151610d13908d610cbc578b6001600160a01b031683606001516001600160a01b031611610cd6565b8b6001600160a01b031683606001516001600160a01b0316105b610ce4578260600151610ce6565b8b5b60c085015185517f000000000000000000000000000000000000000000000000000000000000000061309f565b60c085015260a084015260808301526001600160a01b031660408301528215610d7557610d498160c00151826080015101613291565b825103825260a0810151610d6b90610d6090613291565b6020840151906132a7565b6020830152610db0565b610d828160a00151613291565b825101825260c08101516080820151610daa91610d9f9101613291565b6020840151906132c3565b60208301525b835160ff1615610df6576000846000015160ff168260c0015181610dd057fe5b60c0840180519290910491829003905260a0840180519091016001600160801b03169052505b60c08201516001600160801b031615610e3557610e298160c00151600160801b8460c001516001600160801b03166132d9565b60808301805190910190525b80606001516001600160a01b031682604001516001600160a01b03161415610f5e57806040015115610f35578360a00151610ebf57610e9d846040015160008760200151886040015188602001518a606001516008613389909695949392919063ffffffff16565b6001600160a01b03166080860152600690810b900b6060850152600160a08501525b6000610f0b82602001518e610ed657600154610edc565b84608001515b8f610eeb578560800151610eef565b6002545b608089015160608a015160408b0151600595949392919061351c565b90508c15610f17576000035b610f258360c00151826135ef565b6001600160801b031660c0840152505b8b610f44578060200151610f4d565b60018160200151035b600290810b900b6060830152610f99565b80600001516001600160a01b031682604001516001600160a01b031614610f9957610f8c82604001516136a5565b600290810b900b60608301525b50610baf565b836020015160020b816060015160020b1461107a57600080610fed86604001518660400151886020015188602001518a606001518b6080015160086139d1909695949392919063ffffffff16565b604085015160608601516000805461ffff60c81b1916600160c81b61ffff958616021761ffff60b81b1916600160b81b95909416949094029290921762ffffff60a01b1916600160a01b62ffffff60029490940b93909316929092029190911773ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03909116179055506110ac9050565b60408101516000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039092169190911790555b8060c001516001600160801b031683602001516001600160801b0316146110f25760c0810151600480546001600160801b0319166001600160801b039092169190911790555b8a1561114257608081015160015560a08101516001600160801b03161561113d5760a0810151600380546001600160801b031981166001600160801b03918216909301169190911790555b611188565b608081015160025560a08101516001600160801b0316156111885760a0810151600380546001600160801b03808216600160801b92839004821690940116029190911790555b8115158b1515146111a157602081015181518b036111ae565b80600001518a0381602001515b90965094508a156112e75760008512156111f0576111f07f00000000000000000000000000000000000000000000000000000000000000008d87600003613b86565b60006111fa613cd4565b9050336001600160a01b031663fa461e3388888c8c6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561127e57600080fd5b505af1158015611292573d6000803e3d6000fd5b5050505061129e613cd4565b6112a88289613e0d565b11156112e1576040805162461bcd60e51b815260206004820152600360248201526249494160e81b604482015290519081900360640190fd5b50611411565b600086121561131e5761131e7f00000000000000000000000000000000000000000000000000000000000000008d88600003613b86565b6000611328613e1d565b9050336001600160a01b031663fa461e3388888c8c6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156113ac57600080fd5b505af11580156113c0573d6000803e3d6000fd5b505050506113cc613e1d565b6113d68288613e0d565b111561140f576040805162461bcd60e51b815260206004820152600360248201526249494160e81b604482015290519081900360640190fd5b505b60408082015160c083015160608085015184518b8152602081018b90526001600160a01b03948516818701526001600160801b039093169183019190915260020b60808201529151908e169133917fc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca679181900360a00190a350506000805460ff60f01b1916600160f01b17905550919890975095505050505050565b6004546001600160801b031681565b6003546001600160801b0380821691600160801b90041682565b60088161ffff81106114e757600080fd5b015463ffffffff81169150640100000000810460060b90600160581b81046001600160a01b031690600160f81b900460ff1684565b600054600160f01b900460ff16611560576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b19169055611575612bf0565b60008054600160d81b900461ffff169061159160088385613eb5565b6000805461ffff808416600160d81b810261ffff60d81b19909316929092179092559192508316146115fe576040805161ffff80851682528316602082015281517fac49e518f90a358f652e4400164f05a5d8f7e35e7747279bc3a93dbf584e125a929181900390910190a15b50506000805460ff60f01b1916600160f01b17905550565b6000546001600160a01b03811690600160a01b810460020b9061ffff600160b81b8204811691600160c81b8104821691600160d81b8204169060ff600160e81b8204811691600160f01b90041687565b600080548190600160f01b900460ff166116ad576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b191690556001600160801b0385166116cd57600080fd5b60008061171b60405180608001604052808c6001600160a01b031681526020018b60020b81526020018a60020b81526020016117118a6001600160801b0316613f58565b600f0b9052613f69565b9250925050819350809250600080600086111561173d5761173a613cd4565b91505b841561174e5761174b613e1d565b90505b336001600160a01b031663d348799787878b8b6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156117d057600080fd5b505af11580156117e4573d6000803e3d6000fd5b50505050600086111561183b576117f9613cd4565b6118038388613e0d565b111561183b576040805162461bcd60e51b815260206004820152600260248201526104d360f41b604482015290519081900360640190fd5b841561188b57611849613e1d565b6118538287613e0d565b111561188b576040805162461bcd60e51b81526020600482015260026024820152614d3160f01b604482015290519081900360640190fd5b8960020b8b60020b8d6001600160a01b03167f7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde338d8b8b60405180856001600160a01b03168152602001846001600160801b0316815260200183815260200182815260200194505050505060405180910390a450506000805460ff60f01b1916600160f01b17905550919890975095505050505050565b60025481565b600054600160f01b900460ff1661196c576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b19169055611981612bf0565b6004546001600160801b0316806119c3576040805162461bcd60e51b81526020600482015260016024820152601360fa1b604482015290519081900360640190fd5b60006119f8867f000000000000000000000000000000000000000000000000000000000000000062ffffff16620f42406141a9565b90506000611a2f867f000000000000000000000000000000000000000000000000000000000000000062ffffff16620f42406141a9565b90506000611a3b613cd4565b90506000611a47613e1d565b90508815611a7a57611a7a7f00000000000000000000000000000000000000000000000000000000000000008b8b613b86565b8715611aab57611aab7f00000000000000000000000000000000000000000000000000000000000000008b8a613b86565b336001600160a01b031663e9cbafb085858a8a6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611b2d57600080fd5b505af1158015611b41573d6000803e3d6000fd5b505050506000611b4f613cd4565b90506000611b5b613e1d565b905081611b688588613e0d565b1115611ba0576040805162461bcd60e51b8152602060048201526002602482015261046360f41b604482015290519081900360640190fd5b80611bab8487613e0d565b1115611be3576040805162461bcd60e51b8152602060048201526002602482015261463160f01b604482015290519081900360640190fd5b8382038382038115611c725760008054600160e81b9004600f16908115611c16578160ff168481611c1057fe5b04611c19565b60005b90506001600160801b03811615611c4c57600380546001600160801b038082168401166001600160801b03199091161790555b611c66818503600160801b8d6001600160801b03166132d9565b60018054909101905550505b8015611cfd5760008054600160e81b900460041c600f16908115611ca2578160ff168381611c9c57fe5b04611ca5565b60005b90506001600160801b03811615611cd757600380546001600160801b03600160801b8083048216850182160291161790555b611cf1818403600160801b8d6001600160801b03166132d9565b60028054909101905550505b8d6001600160a01b0316336001600160a01b03167fbdbdb71d7860376ba52b25a5028beea23581364a40522f6bcfb86bb1f2dca6338f8f86866040518085815260200184815260200183815260200182815260200194505050505060405180910390a350506000805460ff60f01b1916600160f01b179055505050505050505050505050565b600080548190600160f01b900460ff16611dca576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b19168155611de460073389896141e3565b60038101549091506001600160801b0390811690861611611e055784611e14565b60038101546001600160801b03165b60038201549093506001600160801b03600160801b909104811690851611611e3c5783611e52565b6003810154600160801b90046001600160801b03165b91506001600160801b03831615611eb7576003810180546001600160801b031981166001600160801b03918216869003821617909155611eb7907f0000000000000000000000000000000000000000000000000000000000000000908a908616613b86565b6001600160801b03821615611f1d576003810180546001600160801b03600160801b808304821686900382160291811691909117909155611f1d907f0000000000000000000000000000000000000000000000000000000000000000908a908516613b86565b604080516001600160a01b038a1681526001600160801b0380861660208301528416818301529051600288810b92908a900b9133917f70935338e69775456a85ddef226c395fb668b63fa0115f5f20610b388e6ca9c0919081900360600190a4506000805460ff60f01b1916600160f01b17905590969095509350505050565b60076020526000908152604090208054600182015460028301546003909301546001600160801b0392831693919281811691600160801b90041685565b60066020526000908152604090205481565b7f000000000000000000000000000000000000000000000000000000000000000081565b600054600160f01b900460ff16612054576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916905560408051638da5cb5b60e01b815290516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691638da5cb5b916004808301926020929190829003018186803b1580156120c157600080fd5b505afa1580156120d5573d6000803e3d6000fd5b505050506040513d60208110156120eb57600080fd5b50516001600160a01b0316331461210157600080fd5b60ff82161580612124575060048260ff16101580156121245750600a8260ff1611155b801561214e575060ff8116158061214e575060048160ff161015801561214e5750600a8160ff1611155b61215757600080fd5b60008054610ff0600484901b16840160ff908116600160e81b9081027fffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff841617909355919004167f973d8d92bb299f4af6ce49b52a8adb85ae46b9f214c4c4fc06ac77401237b1336010826040805160ff9390920683168252600f600486901c16602083015286831682820152918516606082015290519081900360800190a150506000805460ff60f01b1916600160f01b17905550565b600080548190600160f01b900460ff16612256576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916905560408051638da5cb5b60e01b815290516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691638da5cb5b916004808301926020929190829003018186803b1580156122c357600080fd5b505afa1580156122d7573d6000803e3d6000fd5b505050506040513d60208110156122ed57600080fd5b50516001600160a01b0316331461230357600080fd5b6003546001600160801b039081169085161161231f578361232c565b6003546001600160801b03165b6003549092506001600160801b03600160801b9091048116908416116123525782612366565b600354600160801b90046001600160801b03165b90506001600160801b038216156123e7576003546001600160801b038381169116141561239557600019909101905b600380546001600160801b031981166001600160801b039182168590038216179091556123e7907f00000000000000000000000000000000000000000000000000000000000000009087908516613b86565b6001600160801b0381161561246d576003546001600160801b03828116600160801b90920416141561241857600019015b600380546001600160801b03600160801b80830482168590038216029181169190911790915561246d907f00000000000000000000000000000000000000000000000000000000000000009087908416613b86565b604080516001600160801b0380851682528316602082015281516001600160a01b0388169233927f596b573906218d3411850b26a6b437d6c4522fdb43d2d2386263f86d50b8b151929081900390910190a36000805460ff60f01b1916600160f01b1790559094909350915050565b6060806124e7612bf0565b61255e6124f2612c27565b858580806020026020016040519081016040528093929190818152602001838360200280828437600092018290525054600454600896959450600160a01b820460020b935061ffff600160b81b8304811693506001600160801b0390911691600160c81b900416614247565b915091509250929050565b600080548190600160f01b900460ff166125b0576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916815560408051608081018252338152600288810b602083015287900b918101919091528190819061260990606081016125fc6001600160801b038a16613f58565b600003600f0b9052613f69565b925092509250816000039450806000039350600085118061262a5750600084115b15612669576003830180546001600160801b038082168089018216600160801b93849004831689019092169092029091176001600160801b0319161790555b604080516001600160801b0388168152602081018790528082018690529051600289810b92908b900b9133917f0c396cd989a39f4459b5fa1aed6a9a8dcdbc45908acfd67e028cd568da98982c919081900360600190a450506000805460ff60f01b1916600160f01b179055509094909350915050565b60008060006126ed612bf0565b6126f785856143a1565b600285810b810b60009081526005602052604080822087840b90930b825281206003830154600681900b9367010000000000000082046001600160a01b0316928492600160d81b810463ffffffff169284929091600160f81b900460ff168061275f57600080fd5b6003820154600681900b985067010000000000000081046001600160a01b03169650600160d81b810463ffffffff169450600160f81b900460ff16806127a457600080fd5b50506040805160e0810182526000546001600160a01b0381168252600160a01b8104600290810b810b810b6020840181905261ffff600160b81b8404811695850195909552600160c81b830485166060850152600160d81b8304909416608084015260ff600160e81b8304811660a0850152600160f01b909204909116151560c08301529093508e810b91900b1215905061284d575093909403965090039350900390506128d0565b8a60020b816020015160020b12156128c1576000612869612c27565b602083015160408401516004546060860151939450600093849361289f936008938893879392916001600160801b031690613389565b9a9003989098039b5050949096039290920396509091030392506128d0915050565b50949093039650039350900390505b9250925092565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60015481565b60056020526000908152604090208054600182015460028301546003909301546001600160801b03831693600160801b909304600f0b9290600681900b9067010000000000000081046001600160a01b031690600160d81b810463ffffffff1690600160f81b900460ff1688565b6000546001600160a01b031615612a1e576040805162461bcd60e51b8152602060048201526002602482015261414960f01b604482015290519081900360640190fd5b6000612a29826136a5565b9050600080612a41612a39612c27565b60089061446a565b6040805160e0810182526001600160a01b038816808252600288810b6020808501829052600085870181905261ffff898116606088018190529089166080880181905260a08801839052600160c0909801979097528154600160f01b73ffffffffffffffffffffffffffffffffffffffff19909116871762ffffff60a01b1916600160a01b62ffffff9787900b9790971696909602959095177fffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffff16600160c81b9091021761ffff60d81b1916600160d81b909602959095177fff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1692909217909355835191825281019190915281519395509193507f98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c9592918290030190a150505050565b60008082600281900b620d89e71981612b9957fe5b05029050600083600281900b620d89e881612bb057fe5b0502905060008460020b83830360020b81612bc757fe5b0560010190508062ffffff166001600160801b03801681612be457fe5b0493505050505b919050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614612c2557600080fd5b565b4290565b60008060008460020b8660020b81612c3f57fe5b05905060008660020b128015612c6657508460020b8660020b81612c5f57fe5b0760020b15155b15612c7057600019015b8315612ce557600080612c82836144b6565b600182810b810b600090815260208d9052604090205460ff83169190911b80016000190190811680151597509294509092509085612cc757888360ff16860302612cda565b88612cd1826144c8565b840360ff168603025b965050505050612d63565b600080612cf4836001016144b6565b91509150600060018260ff166001901b031990506000818b60008660010b60010b8152602001908152602001600020541690508060001415955085612d4657888360ff0360ff16866001010102612d5c565b8883612d5183614568565b0360ff168660010101025b9650505050505b5094509492505050565b60008060008360020b12612d84578260020b612d8c565b8260020b6000035b9050620d89e8811115612dca576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b600060018216612dde57600160801b612df0565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615612e24576ffff97272373d413259a46990580e213a0260801c5b6004821615612e43576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615612e62576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615612e81576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615612ea0576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615612ebf576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615612ede576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615612efe576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615612f1e576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615612f3e576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615612f5e576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615612f7e576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615612f9e576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615612fbe576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615612fde576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615612fff576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b6202000082161561301f576e5d6af8dedb81196699c329225ee6040260801c5b6204000082161561303e576d2216e584f5fa1ea926041bedfe980260801c5b6208000082161561305b576b048a170391f7dc42444e8fa20260801c5b60008460020b131561307657806000198161307257fe5b0490505b64010000000081061561308a57600161308d565b60005b60ff16602082901c0192505050919050565b60008080806001600160a01b03808916908a1610158187128015906131245760006130d88989620f42400362ffffff16620f42406132d9565b9050826130f1576130ec8c8c8c6001614652565b6130fe565b6130fe8b8d8c60016146cd565b955085811061310f578a965061311e565b61311b8c8b838661478a565b96505b5061316e565b8161313b576131368b8b8b60006146cd565b613148565b6131488a8c8b6000614652565b935083886000031061315c5789955061316e565b61316b8b8a8a600003856147d6565b95505b6001600160a01b038a81169087161482156131d15780801561318d5750815b6131a35761319e878d8c60016146cd565b6131a5565b855b95508080156131b2575081155b6131c8576131c3878d8c6000614652565b6131ca565b845b945061321b565b8080156131db5750815b6131f1576131ec8c888c6001614652565b6131f3565b855b9550808015613200575081155b613216576132118c888c60006146cd565b613218565b845b94505b8115801561322b57508860000385115b15613237578860000394505b81801561325657508a6001600160a01b0316876001600160a01b031614155b15613265578589039350613282565b61327f868962ffffff168a620f42400362ffffff166141a9565b93505b50505095509550955095915050565b6000600160ff1b82106132a357600080fd5b5090565b808203828113156000831215146132bd57600080fd5b92915050565b818101828112156000831215146132bd57600080fd5b600080806000198587098686029250828110908390030390508061330f576000841161330457600080fd5b508290049050613382565b80841161331b57600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b60008063ffffffff8716613430576000898661ffff1661ffff81106133aa57fe5b60408051608081018252919092015463ffffffff8082168084526401000000008304600690810b810b900b6020850152600160581b83046001600160a01b031694840194909452600160f81b90910460ff16151560608301529092508a161461341c57613419818a8988614822565b90505b806020015181604001519250925050613510565b8688036000806134458c8c858c8c8c8c6148d2565b91509150816000015163ffffffff168363ffffffff161415613477578160200151826040015194509450505050613510565b805163ffffffff8481169116141561349f578060200151816040015194509450505050613510565b8151815160208085015190840151918390039286039163ffffffff80841692908516910360060b816134cd57fe5b05028460200151018263ffffffff168263ffffffff1686604001518660400151036001600160a01b031602816134ff57fe5b048560400151019650965050505050505b97509795505050505050565b600295860b860b60009081526020979097526040909620600181018054909503909455938301805490920390915560038201805463ffffffff600160d81b6001600160a01b036701000000000000008085048216909603169094027fffffffffff0000000000000000000000000000000000000000ffffffffffffff90921691909117600681810b90960390950b66ffffffffffffff1666ffffffffffffff199095169490941782810485169095039093160263ffffffff60d81b1990931692909217905554600160801b9004600f0b90565b60008082600f0b121561365457826001600160801b03168260000384039150816001600160801b03161061364f576040805162461bcd60e51b81526020600482015260026024820152614c5360f01b604482015290519081900360640190fd5b6132bd565b826001600160801b03168284019150816001600160801b031610156132bd576040805162461bcd60e51b81526020600482015260026024820152614c4160f01b604482015290519081900360640190fd5b60006401000276a36001600160a01b038316108015906136e1575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b613716576040805162461bcd60e51b81526020600482015260016024820152602960f91b604482015290519081900360640190fd5b77ffffffffffffffffffffffffffffffffffffffff00000000602083901b166001600160801b03811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c979088119617909417909217179091171717608081106137b757607f810383901c91506137c1565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b146139c257886001600160a01b03166139a682612d6d565b6001600160a01b031611156139bb57816139bd565b805b6139c4565b815b9998505050505050505050565b6000806000898961ffff1661ffff81106139e757fe5b60408051608081018252919092015463ffffffff8082168084526401000000008304600690810b810b900b6020850152600160581b83046001600160a01b031694840194909452600160f81b90910460ff161515606083015290925089161415613a575788859250925050613510565b8461ffff168461ffff16118015613a7857506001850361ffff168961ffff16145b15613a8557839150613a89565b8491505b8161ffff168960010161ffff1681613a9d57fe5b069250613aac81898989614822565b8a8461ffff1661ffff8110613abd57fe5b825191018054602084015160408501516060909501511515600160f81b027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001600160a01b03909616600160581b027fff0000000000000000000000000000000000000000ffffffffffffffffffffff60069390930b66ffffffffffffff16640100000000026affffffffffffff000000001963ffffffff90971663ffffffff199095169490941795909516929092171692909217929092161790555097509795505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1781529251825160009485949389169392918291908083835b60208310613c025780518252601f199092019160209182019101613be3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613c64576040519150601f19603f3d011682016040523d82523d6000602084013e613c69565b606091505b5091509150818015613c97575080511580613c975750808060200190516020811015613c9457600080fd5b50515b613ccd576040805162461bcd60e51b81526020600482015260026024820152612a2360f11b604482015290519081900360640190fd5b5050505050565b604080513060248083019190915282518083039091018152604490910182526020810180516001600160e01b03166370a0823160e01b17815291518151600093849384936001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001693919290918291908083835b60208310613d6d5780518252601f199092019160209182019101613d4e565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114613dcd576040519150601f19603f3d011682016040523d82523d6000602084013e613dd2565b606091505b5091509150818015613de657506020815110155b613def57600080fd5b808060200190516020811015613e0457600080fd5b50519250505090565b808201828110156132bd57600080fd5b604080513060248083019190915282518083039091018152604490910182526020810180516001600160e01b03166370a0823160e01b17815291518151600093849384936001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016939192909182919080838360208310613d6d5780518252601f199092019160209182019101613d4e565b6000808361ffff1611613ef3576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b8261ffff168261ffff1611613f09575081613382565b825b8261ffff168161ffff161015613f4f576001858261ffff1661ffff8110613f2e57fe5b01805463ffffffff191663ffffffff92909216919091179055600101613f0b565b50909392505050565b80600f81900b8114612beb57600080fd5b6000806000613f76612bf0565b613f88846020015185604001516143a1565b6040805160e0810182526000546001600160a01b0381168252600160a01b8104600290810b810b900b602080840182905261ffff600160b81b8404811685870152600160c81b84048116606080870191909152600160d81b8504909116608086015260ff600160e81b8504811660a0870152600160f01b909404909316151560c08501528851908901519489015192890151939461402c9491939092909190614acf565b93508460600151600f0b6000146141a157846020015160020b816020015160020b12156140815761407a6140638660200151612d6d565b6140708760400151612d6d565b8760600151614c84565b92506141a1565b846040015160020b816020015160020b12156141775760045460408201516001600160801b03909116906140d3906140b7612c27565b60208501516060860151608087015160089493929187916139d1565b6000805461ffff60c81b1916600160c81b61ffff938416021761ffff60b81b1916600160b81b939092169290920217905581516040870151614123919061411990612d6d565b8860600151614c84565b93506141416141358760200151612d6d565b83516060890151614cc8565b92506141518187606001516135ef565b600480546001600160801b0319166001600160801b0392909216919091179055506141a1565b61419e6141878660200151612d6d565b6141948760400151612d6d565b8760600151614cc8565b91505b509193909250565b60006141b68484846132d9565b9050600082806141c257fe5b84860911156133825760001981106141d957600080fd5b6001019392505050565b6040805160609490941b6bffffffffffffffffffffffff1916602080860191909152600293840b60e890811b60348701529290930b90911b60378401528051808403601a018152603a90930181528251928201929092206000908152929052902090565b60608060008361ffff1611614287576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b865167ffffffffffffffff8111801561429f57600080fd5b506040519080825280602002602001820160405280156142c9578160200160208202803683370190505b509150865167ffffffffffffffff811180156142e457600080fd5b5060405190808252806020026020018201604052801561430e578160200160208202803683370190505b50905060005b87518110156143945761433f8a8a8a848151811061432e57fe5b60200260200101518a8a8a8a613389565b84838151811061434b57fe5b6020026020010184848151811061435e57fe5b60200260200101826001600160a01b03166001600160a01b03168152508260060b60060b81525050508080600101915050614314565b5097509795505050505050565b8060020b8260020b126143e1576040805162461bcd60e51b8152602060048201526003602482015262544c5560e81b604482015290519081900360640190fd5b620d89e719600283900b1215614424576040805162461bcd60e51b8152602060048201526003602482015262544c4d60e81b604482015290519081900360640190fd5b620d89e8600282900b1315614466576040805162461bcd60e51b815260206004820152600360248201526254554d60e81b604482015290519081900360640190fd5b5050565b6040805160808101825263ffffffff9283168082526000602083018190529282019290925260016060909101819052835463ffffffff1916909117909116600160f81b17909155908190565b60020b600881901d9161010090910790565b60008082116144d657600080fd5b600160801b82106144e957608091821c91015b68010000000000000000821061450157604091821c91015b640100000000821061451557602091821c91015b62010000821061452757601091821c91015b610100821061453857600891821c91015b6010821061454857600491821c91015b6004821061455857600291821c91015b60028210612beb57600101919050565b600080821161457657600080fd5b5060ff6001600160801b0382161561459157607f1901614599565b608082901c91505b67ffffffffffffffff8216156145b257603f19016145ba565b604082901c91505b63ffffffff8216156145cf57601f19016145d7565b602082901c91505b61ffff8216156145ea57600f19016145f2565b601082901c91505b60ff821615614604576007190161460c565b600882901c91505b600f82161561461e5760031901614626565b600482901c91505b60038216156146385760011901614640565b600282901c91505b6001821615612beb5760001901919050565b6000836001600160a01b0316856001600160a01b03161115614672579293925b8161469f5761469a836001600160801b03168686036001600160a01b0316600160601b6132d9565b6146c2565b6146c2836001600160801b03168686036001600160a01b0316600160601b6141a9565b90505b949350505050565b6000836001600160a01b0316856001600160a01b031611156146ed579293925b7bffffffffffffffffffffffffffffffff000000000000000000000000606084901b166001600160a01b03868603811690871661472957600080fd5b8361475957866001600160a01b031661474c8383896001600160a01b03166132d9565b8161475357fe5b0461477f565b61477f6147708383896001600160a01b03166141a9565b886001600160a01b0316614cf7565b979650505050505050565b600080856001600160a01b0316116147a157600080fd5b6000846001600160801b0316116147b757600080fd5b816147c95761469a8585856001614d02565b6146c28585856001614de3565b600080856001600160a01b0316116147ed57600080fd5b6000846001600160801b03161161480357600080fd5b816148155761469a8585856000614de3565b6146c28585856000614d02565b61482a61564a565b600085600001518503905060405180608001604052808663ffffffff1681526020018263ffffffff168660020b0288602001510160060b81526020016000856001600160801b03161161487e576001614880565b845b6001600160801b031673ffffffff00000000000000000000000000000000608085901b16816148ab57fe5b048860400151016001600160a01b0316815260200160011515815250915050949350505050565b6148da61564a565b6148e261564a565b888561ffff1661ffff81106148f357fe5b60408051608081018252919092015463ffffffff81168083526401000000008204600690810b810b900b6020840152600160581b82046001600160a01b031693830193909352600160f81b900460ff1615156060820152925061495890899089614ed8565b15614990578663ffffffff16826000015163ffffffff16141561497a57613510565b8161498783898988614822565b91509150613510565b888361ffff168660010161ffff16816149a557fe5b0661ffff1661ffff81106149b557fe5b60408051608081018252929091015463ffffffff811683526401000000008104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b90910416151560608201819052909250614a6c57604080516080810182528a5463ffffffff811682526401000000008104600690810b810b900b6020830152600160581b81046001600160a01b031692820192909252600160f81b90910460ff161515606082015291505b614a7b88836000015189614ed8565b614ab2576040805162461bcd60e51b815260206004820152600360248201526213d31160ea1b604482015290519081900360640190fd5b614abf8989898887614f9b565b9150915097509795505050505050565b6000614ade60078787876141e3565b60015460025491925090600080600f87900b15614c24576000614aff612c27565b6000805460045492935090918291614b499160089186918591600160a01b810460020b9161ffff600160b81b83048116926001600160801b0390921691600160c81b900416613389565b9092509050614b8360058d8b8d8b8b87898b60007f000000000000000000000000000000000000000000000000000000000000000061513b565b9450614bba60058c8b8d8b8b87898b60017f000000000000000000000000000000000000000000000000000000000000000061513b565b93508415614bee57614bee60068d7f0000000000000000000000000000000000000000000000000000000000000000615325565b8315614c2057614c2060068c7f0000000000000000000000000000000000000000000000000000000000000000615325565b5050505b600080614c3660058c8c8b8a8a61538b565b9092509050614c47878a8484615437565b600089600f0b1215614c75578315614c6457614c6460058c6155cc565b8215614c7557614c7560058b6155cc565b50505050505095945050505050565b60008082600f0b12614caa57614ca5614ca085858560016146cd565b613291565b6146c5565b614cbd614ca085858560000360006146cd565b600003949350505050565b60008082600f0b12614ce457614ca5614ca08585856001614652565b614cbd614ca08585856000036000614652565b808204910615150190565b60008115614d755760006001600160a01b03841115614d3857614d3384600160601b876001600160801b03166132d9565b614d50565b6001600160801b038516606085901b81614d4e57fe5b045b9050614d6d614d686001600160a01b03881683613e0d565b6155f8565b9150506146c5565b60006001600160a01b03841115614da357614d9e84600160601b876001600160801b03166141a9565b614dba565b614dba606085901b6001600160801b038716614cf7565b905080866001600160a01b031611614dd157600080fd5b6001600160a01b0386160390506146c5565b600082614df15750836146c5565b7bffffffffffffffffffffffffffffffff000000000000000000000000606085901b168215614e91576001600160a01b03861684810290858281614e3157fe5b041415614e6257818101828110614e6057614e5683896001600160a01b0316836141a9565b93505050506146c5565b505b614e8882614e83878a6001600160a01b03168681614e7c57fe5b0490613e0d565b614cf7565b925050506146c5565b6001600160a01b03861684810290858281614ea857fe5b04148015614eb557508082115b614ebe57600080fd5b808203614e56614d68846001600160a01b038b16846141a9565b60008363ffffffff168363ffffffff1611158015614f0257508363ffffffff168263ffffffff1611155b15614f1e578163ffffffff168363ffffffff1611159050613382565b60008463ffffffff168463ffffffff1611614f46578363ffffffff1664010000000001614f4e565b8363ffffffff165b64ffffffffff16905060008563ffffffff168463ffffffff1611614f7f578363ffffffff1664010000000001614f87565b8363ffffffff165b64ffffffffff169091111595945050505050565b614fa361564a565b614fab61564a565b60008361ffff168560010161ffff1681614fc157fe5b0661ffff169050600060018561ffff16830103905060005b506002818301048961ffff87168281614fee57fe5b0661ffff8110614ffa57fe5b60408051608081018252929091015463ffffffff811683526401000000008104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b9091041615156060820181905290955061506557806001019250614fd9565b898661ffff16826001018161507657fe5b0661ffff811061508257fe5b60408051608081018252929091015463ffffffff811683526401000000008104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b909104161515606082015285519094506000906150ed908b908b614ed8565b905080801561510657506151068a8a8760000151614ed8565b15615111575061512e565b8061512157600182039250615128565b8160010193505b50614fd9565b5050509550959350505050565b60028a810b900b600090815260208c90526040812080546001600160801b031682615166828d6135ef565b9050846001600160801b0316816001600160801b031611156151b4576040805162461bcd60e51b81526020600482015260026024820152614c4f60f01b604482015290519081900360640190fd5b6001600160801b03828116159082161581141594501561528a578c60020b8e60020b1361525a57600183018b9055600283018a90556003830180547fffffffffff0000000000000000000000000000000000000000ffffffffffffff166701000000000000006001600160a01b038c16021766ffffffffffffff191666ffffffffffffff60068b900b161763ffffffff60d81b1916600160d81b63ffffffff8a16021790555b6003830180547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160f81b1790555b82546001600160801b0319166001600160801b038216178355856152d35782546152ce906152c990600160801b9004600f90810b810b908f900b6132c3565b613f58565b6152f4565b82546152f4906152c990600160801b9004600f90810b810b908f900b6132a7565b8354600f9190910b6001600160801b03908116600160801b0291161790925550909c9b505050505050505050505050565b8060020b8260020b8161533457fe5b0760020b1561534257600080fd5b60008061535d8360020b8560020b8161535757fe5b056144b6565b600191820b820b60009081526020979097526040909620805460ff9097169190911b90951890945550505050565b600285810b80820b60009081526020899052604080822088850b850b83529082209193849391929184918291908a900b126153d1575050600182015460028301546153e4565b8360010154880391508360020154870390505b6000808b60020b8b60020b121561540657505060018301546002840154615419565b84600101548a0391508460020154890390505b92909803979097039b96909503949094039850939650505050505050565b6040805160a08101825285546001600160801b0390811682526001870154602083015260028701549282019290925260038601548083166060830152600160801b900490911660808201526000600f85900b6154d65781516001600160801b03166154ce576040805162461bcd60e51b815260206004820152600260248201526104e560f41b604482015290519081900360640190fd5b5080516154e5565b81516154e290866135ef565b90505b60006155098360200151860384600001516001600160801b0316600160801b6132d9565b9050600061552f8460400151860385600001516001600160801b0316600160801b6132d9565b905086600f0b6000146155565787546001600160801b0319166001600160801b0384161788555b60018801869055600288018590556001600160801b03821615158061558457506000816001600160801b0316115b156155c2576003880180546001600160801b031981166001600160801b039182168501821617808216600160801b9182900483168501909216021790555b5050505050505050565b600290810b810b6000908152602092909252604082208281556001810183905590810182905560030155565b806001600160a01b0381168114612beb57600080fd5b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915290565b6040805160808101825260008082526020820181905291810182905260608101919091529056fea164736f6c6343000706000a";class co extends i{constructor(...e){e.length>1?super(...e):super(oo,uo,e[0])}deploy(e){return super.deploy(e||{})}getDeployTransaction(e){return super.getDeployTransaction(e||{})}attach(e){return super.attach(e)}connect(e){return super.connect(e)}static bytecode=uo;static abi=oo;static createInterface(){return new s.Interface(oo)}static connect(e,t){return new o(e,oo,t)}}const fo=[{constant:!0,inputs:[],name:"name",outputs:[{name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"guy",type:"address"},{name:"wad",type:"uint256"}],name:"approve",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"totalSupply",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"src",type:"address"},{name:"dst",type:"address"},{name:"wad",type:"uint256"}],name:"transferFrom",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{name:"wad",type:"uint256"}],name:"withdraw",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"decimals",outputs:[{name:"",type:"uint8"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{name:"",type:"address"}],name:"balanceOf",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"symbol",outputs:[{name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"dst",type:"address"},{name:"wad",type:"uint256"}],name:"transfer",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[],name:"deposit",outputs:[],payable:!0,stateMutability:"payable",type:"function"},{constant:!0,inputs:[{name:"",type:"address"},{name:"",type:"address"}],name:"allowance",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{payable:!0,stateMutability:"payable",type:"fallback"},{anonymous:!1,inputs:[{indexed:!0,name:"src",type:"address"},{indexed:!0,name:"guy",type:"address"},{indexed:!1,name:"wad",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"src",type:"address"},{indexed:!0,name:"dst",type:"address"},{indexed:!1,name:"wad",type:"uint256"}],name:"Transfer",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"dst",type:"address"},{indexed:!1,name:"wad",type:"uint256"}],name:"Deposit",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"src",type:"address"},{indexed:!1,name:"wad",type:"uint256"}],name:"Withdrawal",type:"event"}];class lo{static abi=fo;static createInterface(){return new s.Interface(fo)}static connect(e,t){return new o(e,fo,t)}}async function po(e,t,n){const a=co.createInterface(),i=ho(t,a),s=[];return i&&n.forEach((e=>{e&&s.push({target:e,callData:i,gasLimit:r.from("1000000")})})),e.callStatic.multicall(s)}const ho=(e,t)=>{const n=t?.getFunction(e);return n?t?.encodeFunctionData(n):void 0};function mo({factoryAddress:e,erc20Pair:t,fee:n,initCodeHashManualOverride:r}){return t=bo(t),a.utils.getCreate2Address(e,I(["bytes"],[a.utils.defaultAbiCoder.encode(["address","address","uint24"],[t[0].address,t[1].address,n])]),r??"0xe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54")}const bo=e=>{if(e[0].address.toLowerCase()>e[1].address.toLowerCase()){const t=e[0];e[0]=e[1],e[1]=t}return e},yo=[y.LOWEST,y.LOW,y.MEDIUM,y.HIGH],go=(e,t,n)=>{const a=((e,t)=>{const n=new Map,a=[];[...e,...t].forEach((e=>{n.set(e.address,e),a.push(e.address)}));const r=[...new Set([...a])],i=[];for(let e=0;e<r.length;e++)for(let t=e+1;t<r.length;t++){const a=n.get(r[e]),s=n.get(r[t]);a&&s&&i.push([a,s])}return i})(e,t),r=[];for(let e=0;e<a.length;e++)for(let t=0;t<yo.length;t++){const i=mo({factoryAddress:n,erc20Pair:a[e],fee:yo[t]});r.push({erc20Pair:a[e],fee:yo[t],poolAddress:i})}return r},Eo="liquidity",To="slot0";class wo{provider;multicallContract;routingTokens;routingContracts;constructor(e,t,n,a){this.provider=e,this.multicallContract=t,this.routingTokens=n,this.routingContracts=a,this.provider=e,this.multicallContract=t,this.routingTokens=n,this.routingContracts=a}async findOptimalRoute(e,t,n,a=2){const[r,i]=this.determineERC20InAndERC20Out(n,e,t),s=[r,i],o=await(async(e,t,n,a)=>{const r=go(t,n,a),i=r.map((e=>e.poolAddress));let s,o;try{[s,o]=await Promise.all([po(e,To,i),po(e,Eo,i)])}catch(e){const t=e instanceof Error?e.message:"Unknown Error";throw new gs(`failed multicall: ${t}`)}const d=s.returnData,u=o.returnData,c=co.createInterface(),f=[];return r.forEach(((e,t)=>{const n="0x"===s.returnData[t].returnData,a="0x"===o.returnData[t].returnData;if(n||a)return;const r=c.decodeFunctionResult(To,d[t].returnData),i=c.decodeFunctionResult(Eo,u[t].returnData),l=r.sqrtPriceX96.isZero(),p=i[0].isZero();if(l||p)return;const h=new T(As(e.erc20Pair[0]),As(e.erc20Pair[1]),e.fee,r.sqrtPriceX96.toString(),i.toString(),r.tick);f.push(h)})),f})(this.multicallContract,s,this.routingTokens,this.routingContracts.coreFactory);if(0===o.length)throw new ys;const d=vo(r,i,o,a,[],[],r);if(0===d.length)throw new ys;return await this.getBestQuoteFromRoutes(d,e,n)}async getBestQuoteFromRoutes(e,t,n){const a=await async function(e,t,n,a,i){const o=n.map((e=>E.quoteCallParameters(e,Ms(a),i,{useQuoterV2:!0}).calldata));return(await Promise.allSettled(o.map((n=>e.send("eth_call",[{to:t,data:n},"latest"]))))).reduce(((e,t,d)=>{if("rejected"===t.status)return e;const u=o[d].substring(0,10),c=Ts[u];if(!c)throw new Error("No quoting function signature found");if("0x"===t.value)return e;try{const o=s.defaultAbiCoder.decode(c,t.value);if(o){const t=o[0];if(!(t instanceof r))throw new Error("Expected BigNumber");const s=_s(n[d].input),u=_s(n[d].output);e.push({route:n[d],amountIn:i===h.EXACT_INPUT?a:Ns(t,s),amountOut:i===h.EXACT_INPUT?Ns(t,u):a,gasEstimate:r.from(o[3]),tradeType:i})}}catch{}return e}),new Array)}(this.provider,this.routingContracts.quoter,e,t,n);if(0===a.length)throw new ys;if(n===h.EXACT_INPUT)return this.bestQuoteForAmountIn(a);if(n===h.EXACT_OUTPUT)return this.bestQuoteForAmountOut(a);throw new Error("Invalid trade type")}bestQuoteForAmountIn(e){let t=e[0];for(let n=1;n<e.length;n++)e[n].amountOut.value.gt(t.amountOut.value)&&(t=e[n]);return t}bestQuoteForAmountOut(e){let t=e[0];for(let n=1;n<e.length;n++)e[n].amountIn.value.lt(t.amountIn.value)&&(t=e[n]);return t}determineERC20InAndERC20Out(e,t,n){return e===h.EXACT_INPUT?[t.token,n]:[n,t.token]}}const vo=(e,t,n,a,r=[],i=[],s=e)=>{const o=As(e),d=As(t),u=As(s);for(const e of n){const c=e.involvesToken(o),f=r.find((t=>{return(n=e)===(a=t)||n.token0.equals(a.token0)&&n.token1.equals(a.token1)&&n.fee===a.fee;var n,a}));if(!c||f)continue;const l=e.token0.equals(o)?e.token1:e.token0;l.equals(d)?i.push(new g([...r,e],u,d)):a>1&&vo(_s(l),t,n,a-1,[...r,e],i,s)}return i},Ro="multicall(uint256,bytes[])";function Io(e,t,n,a,r,i,s,o,d,u){const{route:c}=a.swaps[0],f=1===c.pools.length,l=r.length>0;return f?l?function(e,t,n,a,r,i,s,o){const d=i.map((e=>({feeBasisPoints:e.basisPoints,recipient:e.recipient}))),u=[];return t.tradeType===p.TradeType.EXACT_INPUT&&u.push(s.encodeFunctionData("exactInputSingleWithSecondaryFee",[d,{tokenIn:n.tokenPath[0].address,tokenOut:n.tokenPath[1].address,fee:n.pools[0].fee,recipient:e,amountIn:a,amountOutMinimum:r,sqrtPriceLimitX96:0}])),t.tradeType===p.TradeType.EXACT_OUTPUT&&u.push(s.encodeFunctionData("exactOutputSingleWithSecondaryFee",[d,{tokenIn:n.tokenPath[0].address,tokenOut:n.tokenPath[1].address,fee:n.pools[0].fee,recipient:e,amountInMaximum:a,amountOut:r,sqrtPriceLimitX96:0}])),Ss(o)&&u.push(s.encodeFunctionData("unwrapNativeToken",[r])),u}(n,a,c,d,u,r,i,t):function(e,t,n,a,r,i,s,o,d){const u=[];return a.tradeType===p.TradeType.EXACT_INPUT&&u.push(o.encodeFunctionData("exactInputSingle",[{tokenIn:r.tokenPath[0].address,tokenOut:r.tokenPath[1].address,fee:r.pools[0].fee,recipient:n,amountIn:i,amountOutMinimum:s,sqrtPriceLimitX96:0}])),a.tradeType===p.TradeType.EXACT_OUTPUT&&u.push(o.encodeFunctionData("exactOutputSingle",[{tokenIn:r.tokenPath[0].address,tokenOut:r.tokenPath[1].address,fee:r.pools[0].fee,recipient:n,amountInMaximum:i,amountOut:s,sqrtPriceLimitX96:0}])),Ss(e)&&u.push(d.encodeFunctionData("refundETH")),Ss(t)&&u.push(d.encodeFunctionData("unwrapWETH9(uint256)",[s])),u}(e,t,n,a,c,d,u,s,o):l?function(e,t,n,a,r,i,s,o){const d=R(n,t.tradeType===p.TradeType.EXACT_OUTPUT),u=i.map((e=>({feeBasisPoints:e.basisPoints,recipient:e.recipient}))),c=[];return t.tradeType===p.TradeType.EXACT_INPUT&&c.push(s.encodeFunctionData("exactInputWithSecondaryFee",[u,{path:d,recipient:e,amountIn:a,amountOutMinimum:r}])),t.tradeType===p.TradeType.EXACT_OUTPUT&&c.push(s.encodeFunctionData("exactOutputWithSecondaryFee",[u,{path:d,recipient:e,amountInMaximum:a,amountOut:r}])),Ss(o)&&c.push(s.encodeFunctionData("unwrapNativeToken",[r])),c}(n,a,c,d,u,r,i,t):function(e,t,n,a,r,i,s,o,d){const u=R(r,a.tradeType===p.TradeType.EXACT_OUTPUT),c=[];return a.tradeType===p.TradeType.EXACT_INPUT&&c.push(o.encodeFunctionData("exactInput",[{path:u,recipient:n,amountIn:i,amountOutMinimum:s}])),a.tradeType===p.TradeType.EXACT_OUTPUT&&c.push(o.encodeFunctionData("exactOutput",[{path:u,recipient:n,amountInMaximum:i,amountOut:s}])),Ss(e)&&c.push(d.encodeFunctionData("refundETH")),Ss(t)&&c.push(d.encodeFunctionData("unwrapWETH9(uint256)",[s])),c}(e,t,n,a,c,d,u,s,o)}function Ao(e,t,n,a,r,i,s,o){const d=ao.createInterface(),u=Io(e,t,a,n,i,d,A.INTERFACE,_.INTERFACE,s,o);return d.encodeFunctionData(Ro,[r.deadlineOrPreviousBlockhash,u])}function _o(e,t,n,a,r,i,s,o,d,u){const c=((e,t,n,a,r)=>Ss(e)?0===r.length?n:a:t)(t,a,s,o,u),{calldata:f,maximumAmountIn:l}=function(e,t,n,a,r,i,s){const o=w.createUncheckedTrade({route:n.route,inputAmount:Ms(n.amountIn),outputAmount:Ms(n.amountOut),tradeType:n.tradeType}),d={slippageTolerance:Ys(r),recipient:a,deadlineOrPreviousBlockhash:i},u=v(o.maximumAmountIn(d.slippageTolerance).quotient),c=v(o.minimumAmountOut(d.slippageTolerance).quotient);return{calldata:Ao(e,t,o,a,d,s,u,c),maximumAmountIn:u}}(e,t,n,c,r,i,u),p=u.length>0,h=d?Hs(p,d,n.gasEstimate):null,m=((e,t)=>"native"===e.type?t:"0x00")(e,l);return{transaction:{data:f,to:u.length>0?o:s,value:m,from:a},gasFeeEstimate:h?xs(h):null}}function Mo(e,t,n,a){const r=((e,t,n,a)=>{if(e.tradeType===p.TradeType.EXACT_OUTPUT){const t=Ks(n.token)?a.unwrapAmount(e.amountIn):e.amountIn;return n.addAmount(t),a.maybeWrapAmount(n.amountWithFeesApplied())}return a.maybeWrapAmount(t)})(e,t,n,a);return{gasEstimate:e.gasEstimate,route:e.route,amountIn:r,amountOut:e.amountOut,tradeType:e.tradeType}}const No={[Ls]:{multicall:"0x4857Dfd11c712e862eC362cEee29F7974B70EfcD",coreFactory:"0x56c2162254b0E4417288786eE402c2B41d4e181e",quoter:"0xF6Ad3CcF71Abb3E12beCf6b3D2a74C963859ADCd",swapRouter:"0x0b012055F770AE7BB7a8303968A7Fb6088A2296e",immutableSwapProxy:"0xDdBDa144cEbe1cCd68E746CDff8a6e4Be51A9e98"},[Us]:{multicall:"0xc7efb32470dEE601959B15f1f923e017C6A918cA",coreFactory:"0x56c2162254b0E4417288786eE402c2B41d4e181e",quoter:"0xF6Ad3CcF71Abb3E12beCf6b3D2a74C963859ADCd",swapRouter:"0xE5a02c2Be08406c3fB36F9Aa29bF7C7A09CAe50B",immutableSwapProxy:"0xD67cc11151dBccCC424A16F8963ece3D0539BD61"}},Co={[Ls]:{chainId:Ls,rpcUrl:"https://rpc.testnet.immutable.com",contracts:No[13473],commonRoutingTokens:Gs,nativeToken:Fs,wrappedNativeToken:Bs}},Oo={[Us]:{chainId:Us,rpcUrl:"https://rpc.immutable.com",contracts:No[13371],commonRoutingTokens:Vs,nativeToken:js,wrappedNativeToken:Ws}},So={[e.SANDBOX]:Co,[e.PRODUCTION]:Oo};class Po{baseConfig;chain;secondaryFees=[];constructor({chainId:e,baseConfig:t,secondaryFees:n,overrides:a}){if(this.baseConfig=t,this.secondaryFees=n||[],function(e){let t=0;for(const n of e){if(!Rs(n.recipient))throw new fs(`Invalid secondary fee recipient address: ${n.recipient}`);if(n.basisPoints<=0||n.basisPoints>1e3)throw new fs(`Invalid secondary fee basis points: ${n.basisPoints}`);t+=n.basisPoints}if(t>1e3)throw new fs(`Invalid total secondary fee basis points: ${t}`)}(this.secondaryFees),a)return function(e){const t=["rpcURL","exchangeContracts","commonRoutingTokens","nativeToken"];for(const n of t)if(!e[n])throw new fs(`Missing override: ${n}`);Object.entries(e.exchangeContracts).forEach((([e,t])=>{if(!Rs(t))throw new fs(`Invalid exchange contract address for ${e}`)}))}(a),this.chain={chainId:e,rpcUrl:a.rpcURL,contracts:a.exchangeContracts,commonRoutingTokens:a.commonRoutingTokens,nativeToken:a.nativeToken,wrappedNativeToken:a.wrappedNativeToken},void(this.secondaryFees=n||[]);const r=So[t.environment][e];if(!r)throw new ls(e,t.environment);this.chain=r}}class Do{provider;batchProvider;router;chainId;nativeToken;wrappedNativeToken;secondaryFees;nativeTokenService;swapProxyContractAddress;routerContractAddress;constructor(e){const t=new Po(e);this.chainId=t.chain.chainId,this.nativeToken=t.chain.nativeToken,this.wrappedNativeToken=t.chain.wrappedNativeToken,this.nativeTokenService=new Qs(this.nativeToken,this.wrappedNativeToken),this.secondaryFees=t.secondaryFees,this.routerContractAddress=t.chain.contracts.swapRouter,this.swapProxyContractAddress=t.chain.contracts.immutableSwapProxy,this.provider=new a.providers.StaticJsonRpcProvider({url:t.chain.rpcUrl,skipFetchSetup:!0},t.chain.chainId),this.batchProvider=new a.providers.JsonRpcBatchProvider({url:t.chain.rpcUrl,skipFetchSetup:!0},t.chain.chainId);const n=so.connect(t.chain.contracts.multicall,this.provider);this.router=new wo(this.batchProvider,n,t.chain.commonRoutingTokens,t.chain.contracts)}static validate(e,t,n,a,r){b(Rs(r),new ms("invalid from address")),b(Is(e),new ms("invalid token in address")),b(Is(t),new ms("invalid token out address")),b(e.toLocaleLowerCase()!==t.toLocaleLowerCase(),new bs),b(n<=10,new hs("max hops must be less than or equal to 10")),b(n>=1,new hs("max hops must be greater than or equal to 1")),b(a<=50,new ps("slippage percent must be less than or equal to 50")),b(a>=0,new ps("slippage percent must be greater than or equal to 0"))}async getSecondaryFees(e){if(0===this.secondaryFees.length)return[];const t=ao.connect(this.swapProxyContractAddress,e);return await t.paused()?[]:this.secondaryFees}parseTokenLiteral(e,t){return"native"===e?this.nativeToken:{type:"erc20",address:e,chainId:this.chainId,decimals:t}}async getUnwrapTransaction(e,t,n,r){const i=n.encodeFunctionData("withdraw",[t]),s=a.BigNumber.from(35216),o=r?xs(Hs(!1,r,s)):null;return{transaction:{transaction:{data:i,to:this.wrappedNativeToken.address,from:e},gasFeeEstimate:o},approval:null}}getWrapTransaction(e,t,n,r){const i=n.encodeFunctionData("deposit"),s=a.BigNumber.from(45038),o=r?xs(Hs(!1,r,s)):null;return{transaction:{transaction:{data:i,to:this.wrappedNativeToken.address,value:t,from:e},gasFeeEstimate:o},approval:null}}async getUnsignedWrapUnwrapTx(e,t,n,a){const r="native"===t.token.type,i={token:"native"===e.type?this.wrappedNativeToken:this.nativeToken,value:t.value},s={amount:xs(i),amountWithMaxSlippage:xs(i),slippage:0,fees:[]},o=lo.createInterface();let d;return d=r?this.getWrapTransaction(n,i.value,o,a):await this.getUnwrapTransaction(n,i.value,o,a),{quote:s,approval:d.approval,swap:d.transaction}}async getUnsignedSwapTx(e,t,n,a,r,i,s,o){Do.validate(t,n,i,r,e);const d=[vs(t,this.batchProvider,this.nativeToken),vs(n,this.batchProvider,this.nativeToken),this.getSecondaryFees(this.batchProvider),zs(this.batchProvider,this.nativeToken)],[u,c,f,l]=await Promise.all(d),p=this.parseTokenLiteral(t,u),m=this.parseTokenLiteral(n,c),[b,y]=o===h.EXACT_INPUT?[p,m]:[m,p],g=Ns(a,b);if(this.nativeTokenService.isWrapOrUnwrap(p,m))return this.getUnsignedWrapUnwrapTx(b,Ns(a,p),e,l);const E=new eo(f,p),T=function(e,t,n,a){return n===h.EXACT_OUTPUT?a.maybeWrapAmount(e):(t.addAmount(e),a.maybeWrapAmount(t.amountLessFees()))}(g,E,o,this.nativeTokenService),w=Mo(await this.router.findOptimalRoute(T,this.nativeTokenService.maybeWrapToken(y),o,i),g,E,this.nativeTokenService),v=_o(p,m,w,e,r,s,this.routerContractAddress,this.swapProxyContractAddress,l,f),{quotedAmount:R,quotedAmountWithMaxSlippage:I}=Js(this.nativeTokenService,w,r,y),A=((e,t,n,a,r)=>{const i=e===h.EXACT_INPUT?t:n;return Cs(i)?{spender:0===r.length?a.routerAddress:a.secondaryFeeAddress,amount:i}:null})(o,g,I,{routerAddress:this.routerContractAddress,secondaryFeeAddress:this.swapProxyContractAddress},f),_=A?await Zs(this.provider,e,A,l):null,M=((e,t,n,a)=>({amount:xs(e),amountWithMaxSlippage:xs(t),slippage:n,fees:a.withAmounts().map((e=>({...e,amount:xs(e.amount)})))}))(R,I,r,E);return{quote:M,approval:_,swap:v}}async getUnsignedSwapTxFromAmountIn(e,t,n,r,i=.1,s=2,o=ks()){return await this.getUnsignedSwapTx(e,t,n,a.BigNumber.from(r),i,s,o,h.EXACT_INPUT)}async getUnsignedSwapTxFromAmountOut(e,t,n,r,i=.1,s=2,o=ks()){return await this.getUnsignedSwapTx(e,t,n,a.BigNumber.from(r),i,s,o,h.EXACT_OUTPUT)}}var xo,ko,Lo,Uo,Fo,Bo,Go,jo,Wo,Vo,zo,Ho,qo,Xo,$o,Zo,Ko,Qo,Yo,Jo,ed,td,nd,ad;!function(e){e.IMTBL_WIDGETS_PROVIDER="imtbl-widgets-provider",e.IMTBL_CONNECT_WIDGET_EVENT="imtbl-connect-widget",e.IMTBL_WALLET_WIDGET_EVENT="imtbl-wallet-widget",e.IMTBL_SWAP_WIDGET_EVENT="imtbl-swap-widget",e.IMTBL_BRIDGE_WIDGET_EVENT="imtbl-bridge-widget",e.IMTBL_ONRAMP_WIDGET_EVENT="imtbl-onramp-widget",e.IMTBL_SALE_WIDGET_EVENT="imtbl-sale-widget"}(xo||(xo={})),function(e){e.PROVIDER_UPDATED="PROVIDER_UPDATED"}(ko||(ko={})),function(e){e.CLOSE_WIDGET="close-widget",e.SUCCESS="success",e.FAILURE="failure",e.LANGUAGE_CHANGED="language-changed",e.WALLETCONNECT_PROVIDER_UPDATED="walletconnect-provider-updated"}(Lo||(Lo={})),function(e){e.CLOSE_WIDGET="close-widget",e.NETWORK_SWITCH="network-switch",e.DISCONNECT_WALLET="disconnect-wallet",e.LANGUAGE_CHANGED="language-changed"}(Uo||(Uo={})),function(e){e.CLOSE_WIDGET="close-widget",e.SUCCESS="success",e.FAILURE="failure",e.REJECTED="rejected",e.LANGUAGE_CHANGED="language-changed"}(Fo||(Fo={})),function(e){e.CLOSE_WIDGET="close-widget",e.SUCCESS="success",e.FAILURE="failure",e.REJECTED="rejected",e.TRANSACTION_SUCCESS="transaction-success",e.LANGUAGE_CHANGED="language-changed",e.PAYMENT_METHOD="payment-method",e.REQUEST_BRIDGE="request-bridge",e.REQUEST_ONRAMP="request-onramp",e.REQUEST_SWAP="request-swap",e.PAYMENT_TOKEN="payment-token"}(Bo||(Bo={})),function(e){e.CRYPTO="crypto",e.DEBIT="debit",e.CREDIT="credit"}(Go||(Go={})),function(e){e.CLOSE_WIDGET="close-widget",e.FAILURE="failure",e.TRANSACTION_SENT="transaction-sent",e.LANGUAGE_CHANGED="language-changed",e.CLAIM_WITHDRAWAL_SUCCESS="claim-withdrawal-success",e.CLAIM_WITHDRAWAL_FAILURE="claim-withdrawal-failure"}(jo||(jo={})),function(e){e.REQUEST_CONNECT="request-connect",e.REQUEST_WALLET="request-wallet",e.REQUEST_SWAP="request-swap",e.REQUEST_BRIDGE="request-bridge",e.REQUEST_ONRAMP="request-onramp"}(Wo||(Wo={})),function(e){e.CLOSE_WIDGET="close-widget",e.SUCCESS="success",e.FAILURE="failure",e.LANGUAGE_CHANGED="language-changed"}(Vo||(Vo={})),function(e){e.CONNECT="connect",e.WALLET="wallet",e.SWAP="swap",e.BRIDGE="bridge",e.ONRAMP="onramp",e.SALE="sale"}(zo||(zo={})),function(e){e.LAYER1="LAYER1",e.LAYER2="LAYER2"}(Ho||(Ho={})),function(e){e.LIGHT="light",e.DARK="dark"}(qo||(qo={})),function(e){e[e.IMTBL_ZKEVM_MAINNET=13371]="IMTBL_ZKEVM_MAINNET",e[e.IMTBL_ZKEVM_TESTNET=13473]="IMTBL_ZKEVM_TESTNET",e[e.IMTBL_ZKEVM_DEVNET=15003]="IMTBL_ZKEVM_DEVNET",e[e.ETHEREUM=1]="ETHEREUM",e[e.SEPOLIA=11155111]="SEPOLIA"}(Xo||(Xo={})),function(e){e.ETHEREUM="Ethereum",e.SEPOLIA="Sepolia",e.IMTBL_ZKEVM_TESTNET="Immutable zkEVM Testnet",e.IMTBL_ZKEVM_DEVNET="Immutable zkEVM Dev",e.IMTBL_ZKEVM_MAINNET="Immutable zkEVM"}($o||($o={})),function(e){e.ETHEREUM="ethereum",e.SEPOLIA="sepolia",e.IMTBL_ZKEVM_MAINNET="imtbl-zkevm-mainnet",e.IMTBL_ZKEVM_TESTNET="imtbl-zkevm-testnet",e.IMTBL_ZKEVM_DEVNET="imtbl-zkevm-devnet"}(Zo||(Zo={})),function(e){e.TRANSAK="201811419111"}(Ko||(Ko={})),function(e){e.BRIDGE_TO_L2="BRIDGE_TO_L2",e.SWAP="SWAP"}(Qo||(Qo={})),function(e){e.ALL="all"}(Yo||(Yo={})),function(e){e.ALL="all",e.SWAP="swap",e.BRIDGE="bridge",e.ONRAMP="onramp"}(Jo||(Jo={})),function(e){e.CHECK_CONNECTION="eth_accounts",e.CONNECT="eth_requestAccounts",e.ADD_NETWORK="wallet_addEthereumChain",e.SWITCH_NETWORK="wallet_switchEthereumChain",e.GET_CHAINID="eth_chainId",e.REQUEST_PERMISSIONS="wallet_requestPermissions"}(ed||(ed={})),function(e){e.ALL="all"}(td||(td={})),function(e){e.PASSPORT="passport",e.METAMASK="metamask",e.WALLETCONNECT="walletconnect"}(nd||(nd={})),function(e){e.PASSPORT="com.immutable.passport",e.METAMASK="io.metamask",e.WALLETCONNECT="walletconnect"}(ad||(ad={}));const rd={allowMistmatchedChainId:!1,allowUnsupportedProvider:!1};var id,sd,od,dd,ud,cd,fd,ld,pd,hd;!function(e){e.SUCCESS="SUCCESS",e.FAILED="FAILED",e.INSUFFICIENT_FUNDS="INSUFFICIENT_FUNDS",e.FULFILLMENTS_UNSETTLED="FULFILLMENTS_UNSETTLED"}(id||(id={})),function(e){e.NATIVE="NATIVE",e.ERC20="ERC20",e.ERC721="ERC721",e.ERC1155="ERC1155"}(sd||(sd={})),function(e){e.TRANSACTION="TRANSACTION",e.GAS="GAS"}(od||(od={})),function(e){e.NATIVE="NATIVE",e.ERC20="ERC20"}(dd||(dd={})),function(e){e.ROUTES_FOUND="ROUTES_FOUND",e.NO_ROUTES_FOUND="NO_ROUTES_FOUND",e.NO_ROUTE_OPTIONS="NO_ROUTE_OPTIONS"}(ud||(ud={})),function(e){e.GAS="GAS",e.BRIDGE_FEE="BRIDGE_FEE",e.SWAP_FEE="SWAP_FEE",e.IMMUTABLE_FEE="IMMUTABLE_FEE"}(cd||(cd={})),function(e){e.BRIDGE="BRIDGE",e.SWAP="SWAP",e.ONRAMP="ONRAMP"}(fd||(fd={})),function(e){e.ONRAMP="onramp"}(ld||(ld={})),function(e){e.MISSING_PARAMS="MISSING_PARAMS",e.WEB3_PROVIDER_ERROR="WEB3_PROVIDER_ERROR",e.PROVIDER_ERROR="PROVIDER_ERROR",e.DEFAULT_PROVIDER_ERROR="DEFAULT_PROVIDER_ERROR",e.CONNECT_PROVIDER_ERROR="CONNECT_PROVIDER_ERROR",e.GET_BALANCE_ERROR="GET_BALANCE_ERROR",e.GET_INDEXER_BALANCE_ERROR="GET_INDEXER_BALANCE_ERROR",e.GET_ERC20_INFO_ERROR="GET_ERC20_INFO_ERROR",e.GET_ERC20_BALANCE_ERROR="GET_ERC20_BALANCE_ERROR",e.GET_ERC721_BALANCE_ERROR="GET_ERC721_BALANCE_ERROR",e.GET_NETWORK_INFO_ERROR="GET_NETWORK_INFO_ERROR",e.METAMASK_PROVIDER_ERROR="METAMASK_PROVIDER_ERROR",e.CHAIN_NOT_SUPPORTED_ERROR="CHAIN_NOT_SUPPORTED_ERROR",e.PROVIDER_REQUEST_MISSING_ERROR="PROVIDER_REQUEST_MISSING_ERROR",e.PROVIDER_REQUEST_FAILED_ERROR="PROVIDER_REQUEST_FAILED_ERROR",e.USER_REJECTED_REQUEST_ERROR="USER_REJECTED_REQUEST_ERROR",e.TRANSACTION_FAILED="TRANSACTION_FAILED",e.INSUFFICIENT_FUNDS="INSUFFICIENT_FUNDS",e.UNPREDICTABLE_GAS_LIMIT="UNPREDICTABLE_GAS_LIMIT",e.INVALID_GAS_ESTIMATE_TYPE="INVALID_GAS_ESTIMATE_TYPE",e.UNSUPPORTED_TOKEN_TYPE_ERROR="UNSUPPORTED_TOKEN_TYPE_ERROR",e.UNSUPPORTED_BALANCE_REQUIREMENT_ERROR="UNSUPPORTED_BALANCE_REQUIREMENT_ERROR",e.GET_ORDER_LISTING_ERROR="GET_ORDER_LISTING_ERROR",e.CANCEL_ORDER_LISTING_ERROR="CANCEL_ORDER_LISTING_ERROR",e.PREPARE_ORDER_LISTING_ERROR="PREPARE_ORDER_LISTING_ERROR",e.CREATE_ORDER_LISTING_ERROR="CREATE_ORDER_LISTING_ERROR",e.FULFILL_ORDER_LISTING_ERROR="FULFILL_ORDER_LISTING_ERROR",e.SWITCH_NETWORK_UNSUPPORTED="SWITCH_NETWORK_UNSUPPORTED",e.GET_ERC20_ALLOWANCE_ERROR="GET_ERC20_ALLOWANCE_ERROR",e.GET_ERC721_ALLOWANCE_ERROR="GET_ERC721_ALLOWANCE_ERROR",e.GET_ERC1155_ALLOWANCE_ERROR="GET_ERC1155_ALLOWANCE_ERROR",e.EXECUTE_APPROVAL_TRANSACTION_ERROR="EXECUTE_APPROVAL_TRANSACTION_ERROR",e.EXECUTE_FULFILLMENT_TRANSACTION_ERROR="EXECUTE_FULFILLMENT_TRANSACTION_ERROR",e.SIGN_MESSAGE_ERROR="SIGN_MESSAGE_ERROR",e.BRIDGE_GAS_ESTIMATE_ERROR="BRIDGE_GAS_ESTIMATE_ERROR",e.ORDER_FEE_ERROR="ORDER_FEE_ERROR",e.ITEM_REQUIREMENTS_ERROR="ITEM_REQUIREMENTS_ERROR",e.API_ERROR="API_ERROR",e.ORDER_EXPIRED_ERROR="ORDER_EXPIRED_ERROR",e.WIDGETS_SCRIPT_LOAD_ERROR="WIDGETS_SCRIPT_LOAD_ERROR"}(pd||(pd={}));class md extends Error{message;type;data;constructor(e,t,n){super(e),this.message=e,this.type=t,this.data=n}}!function(e){e.REJECTED_SWITCH_AFTER_ADDING_NETWORK="REJECTED_SWITCH_AFTER_ADDING_NETWORK"}(hd||(hd={}));const bd=async(e,t)=>{try{return await e()}catch(e){const n=`${e.message}`||"UnknownError",a=t.message?`[${t.type}]:${t.message}. Cause:${n}`:`[${t.type}] Cause:${n}`;if(e instanceof md)throw new md(a,t.type,{...t.data,innerErrorType:e.type,...e.data});throw new md(a,t.type,{...t.data})}},yd=e=>{if("number"==typeof e)return e;if("string"==typeof e&&!Number.isNaN(Number(e)))return e.startsWith("0x")?parseInt(e,16):Number(e);throw new md("Invalid chainId",pd.WEB3_PROVIDER_ERROR)};async function gd(e){const t=e.provider?.chainId;return t?yd(t):async function(e){if(!e.provider?.request)throw new md("Parsed provider is not a valid Web3Provider",pd.WEB3_PROVIDER_ERROR);const t=await e.provider.request({method:ed.GET_CHAINID,params:[]});return yd(t)}(e)}async function Ed(e,t,n){if(t.provider?.request){const a=e.get(n),r={chainId:a?.chainIdHex,chainName:a?.chainName,rpcUrls:a?.rpcUrls,nativeCurrency:a?.nativeCurrency,blockExplorerUrls:a?.blockExplorerUrls};return await t.provider.request({method:ed.ADD_NETWORK,params:[r]})}return Promise.reject("Provider does not support request method")}async function Td(e,{type:t=Yo.ALL,exclude:n}){const{networkMap:a}=e,r=await e.remote.getConfig("allowedNetworks");r||console.warn("No allowed networks configured");const i=(r||[]).filter((e=>{const a=t===Yo.ALL,r=!(n||[]).map((e=>e.chainId)).includes(e.chainId);return a&&r})),s=[];return i.forEach((e=>{const t=a.get(e.chainId);t&&s.push({name:t.chainName,chainId:parseInt(t.chainIdHex,16),nativeCurrency:t.nativeCurrency,isSupported:!0})})),{networks:s}}async function wd(e,t){const{networkMap:n}=e;return bd((async()=>{try{const e=await t.getNetwork();if(Array.from(n.keys()).includes(e.chainId)){const t=n.get(e.chainId);return{name:t.chainName,chainId:parseInt(t.chainIdHex,16),nativeCurrency:t.nativeCurrency,isSupported:!0}}return{chainId:e.chainId,name:e.name,isSupported:!1}}catch(e){const a=await gd(t);return{chainId:a,isSupported:Array.from(n.keys()).includes(a)}}}),{type:pd.GET_NETWORK_INFO_ERROR})}async function vd(e,t,n){const{networkMap:a}=e;if(!(await Td(e,{type:Yo.ALL})).networks.some((e=>e.chainId===n)))throw new md(`Chain:${n} is not a supported chain`,pd.CHAIN_NOT_SUPPORTED_ERROR);if(t.provider?.isPassport)throw new md("Switching networks with Passport provider is not supported",pd.SWITCH_NETWORK_UNSUPPORTED);try{await async function(e,t,n){if(t.provider?.request)return await t.provider.request({method:ed.SWITCH_NETWORK,params:[{chainId:e.get(n)?.chainIdHex}]})}(a,t,n)}catch(e){if(console.error(e),4902!==e.code)throw new md("User cancelled switch network request",pd.USER_REJECTED_REQUEST_ERROR);try{await Ed(a,t,n)}catch(e){throw new md("User cancelled add network request",pd.USER_REJECTED_REQUEST_ERROR,{error:e})}}const r=new c(t.provider);if((await r.getNetwork()).chainId!==n)throw new md("User cancelled switch network request",pd.USER_REJECTED_REQUEST_ERROR);return{network:await wd(e,r),provider:r}}const Rd="development",Id=18,Ad="native",_d={name:"IMX",symbol:"IMX",decimals:Id,address:Ad},Md={name:"tIMX",symbol:"tIMX",decimals:Id,address:Ad},Nd={[Rd]:"https://api.dev.immutable.com",[e.SANDBOX]:"https://api.sandbox.immutable.com",[e.PRODUCTION]:"https://api.immutable.com"},Cd={[Rd]:"https://checkout-api.dev.immutable.com",[e.SANDBOX]:"https://checkout-api.sandbox.immutable.com",[e.PRODUCTION]:"https://checkout-api.immutable.com"},Od={[e.SANDBOX]:"https://global-stg.transak.com",[e.PRODUCTION]:"https://global.transak.com/"},Sd=new Map([[Xo.ETHEREUM,{chainIdHex:`0x${Xo.ETHEREUM.toString(16)}`,chainName:$o.ETHEREUM,rpcUrls:["https://checkout-api.immutable.com/v1/rpc/eth-mainnet"],nativeCurrency:{name:$o.ETHEREUM,symbol:"ETH",decimals:18},blockExplorerUrls:["https://etherscan.io/"]}],[Xo.IMTBL_ZKEVM_MAINNET,{chainIdHex:`0x${Xo.IMTBL_ZKEVM_MAINNET.toString(16)}`,chainName:$o.IMTBL_ZKEVM_MAINNET,rpcUrls:["https://rpc.immutable.com"],nativeCurrency:_d}]]),Pd=new Map([[Xo.SEPOLIA,{chainIdHex:`0x${Xo.SEPOLIA.toString(16)}`,chainName:$o.SEPOLIA,rpcUrls:["https://checkout-api.sandbox.immutable.com/v1/rpc/eth-sepolia"],nativeCurrency:{name:"Sep Eth",symbol:"ETH",decimals:18},blockExplorerUrls:["https://sepolia.etherscan.io/"]}],[Xo.IMTBL_ZKEVM_TESTNET,{chainIdHex:`0x${Xo.IMTBL_ZKEVM_TESTNET.toString(16)}`,chainName:$o.IMTBL_ZKEVM_TESTNET,rpcUrls:["https://rpc.testnet.immutable.com"],nativeCurrency:Md}]]),Dd=new Map([[Xo.SEPOLIA,{chainIdHex:`0x${Xo.SEPOLIA.toString(16)}`,chainName:$o.SEPOLIA,rpcUrls:["https://checkout-api.dev.immutable.com/v1/rpc/eth-sepolia"],nativeCurrency:{name:"Sep Eth",symbol:"ETH",decimals:18},blockExplorerUrls:["https://sepolia.etherscan.io/"]}],[Xo.IMTBL_ZKEVM_DEVNET,{chainIdHex:`0x${Xo.IMTBL_ZKEVM_DEVNET.toString(16)}`,chainName:$o.IMTBL_ZKEVM_DEVNET,rpcUrls:["https://rpc.dev.immutable.com"],nativeCurrency:_d}]]),xd={[Xo.IMTBL_ZKEVM_TESTNET]:{url:"https://explorer.testnet.immutable.com",nativeToken:Pd.get(Xo.IMTBL_ZKEVM_TESTNET).nativeCurrency},[Xo.IMTBL_ZKEVM_MAINNET]:{url:"https://explorer.immutable.com",nativeToken:Sd.get(Xo.IMTBL_ZKEVM_MAINNET).nativeCurrency},[Xo.SEPOLIA]:{url:"https://eth-sepolia.blockscout.com",nativeToken:Pd.get(Xo.SEPOLIA).nativeCurrency},[Xo.ETHEREUM]:{url:"https://eth.blockscout.com/",nativeToken:Sd.get(Xo.ETHEREUM).nativeCurrency}},kd=[{constant:!0,inputs:[],name:"name",outputs:[{name:"",type:"string"}],payable:!1,type:"function"},{constant:!0,inputs:[],name:"decimals",outputs:[{name:"",type:"uint8"}],payable:!1,type:"function"},{constant:!0,inputs:[{name:"_owner",type:"address"}],name:"balanceOf",outputs:[{name:"balance",type:"uint256"}],payable:!1,type:"function"},{constant:!0,inputs:[],name:"symbol",outputs:[{name:"",type:"string"}],payable:!1,type:"function"},{constant:!0,inputs:[{name:"_owner",type:"address"},{name:"_spender",type:"address"}],name:"allowance",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_spender",type:"address"},{name:"_value",type:"uint256"}],name:"approve",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"}],Ld=[{constant:!1,inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"approve",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"operator",type:"address"}],name:"isApprovedForAll",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"getApproved",outputs:[{internalType:"address",name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"ownerOf",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"}],Ud=[{inputs:[{internalType:"address",name:"account",type:"address"},{internalType:"address",name:"operator",type:"address"}],name:"isApprovedForAll",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"operator",type:"address"},{internalType:"bool",name:"approved",type:"bool"}],name:"setApprovalForAll",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"},{internalType:"uint256",name:"id",type:"uint256"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"}],Fd={maxFeePerGas:r.from(15e9),maxPriorityFeePerGas:r.from(1e10)},Bd=()=>"1.43.4";class Gd{httpClient;isDevelopment;isProduction;configCache;tokensCache;version="v1";constructor(e,t){this.isDevelopment=t.isDevelopment,this.isProduction=t.isProduction,this.httpClient=e}getEndpoint=()=>this.isDevelopment?Cd[Rd]:this.isProduction?Cd[e.PRODUCTION]:Cd[e.SANDBOX];parseResponse(e){let t=e.data;if(e.data&&"object"!=typeof e.data)try{t=JSON.parse(e.data)}catch(e){throw new md("Invalid configuration",pd.API_ERROR,{error:e})}return t}async loadConfig(){if(this.configCache)return this.configCache;let e;try{e=await this.httpClient.get(`${this.getEndpoint()}/${this.version}/config`)}catch(e){throw new md(`Error: ${e.message}`,pd.API_ERROR,{error:e})}return this.configCache=this.parseResponse(e),this.configCache}async loadConfigTokens(){if(this.tokensCache)return this.tokensCache;let e;try{e=await this.httpClient.get(`${this.getEndpoint()}/${this.version}/config/tokens`)}catch(e){throw new md(`Error: ${e.message}`,pd.API_ERROR,{error:e})}return this.tokensCache=this.parseResponse(e),this.tokensCache}async getConfig(e){const t=await this.loadConfig();if(t)return e?t[e]:t}async getTokensConfig(e){const t=await this.loadConfigTokens();return t&&t[e]?t[e]??[]:{}}getHttpClient=()=>this.httpClient}class jd extends Error{message;constructor(e){super(e),this.message=e}}const Wd=e=>e.isProduction?Xo.ETHEREUM:Xo.SEPOLIA,Vd=e=>e.isDevelopment?Xo.IMTBL_ZKEVM_DEVNET:e.isProduction?Xo.IMTBL_ZKEVM_MAINNET:Xo.IMTBL_ZKEVM_TESTNET;class zd{isDevelopment=!1;isProduction;isOnRampEnabled;isSwapEnabled;isBridgeEnabled;remote;environment;networkMap;constructor(t,n){if(!Object.values(e).includes(t.baseConfig.environment))throw new jd("Invalid checkout configuration of environment");var a;this.environment=t.baseConfig.environment,this.isProduction=!this.isDevelopment&&this.environment===e.PRODUCTION,this.isOnRampEnabled=t.onRamp?.enable??true,this.isSwapEnabled=t.swap?.enable??true,this.isBridgeEnabled=t.bridge?.enable??true,this.networkMap=(a=this.isProduction,this.isDevelopment?Dd:a?Sd:Pd),this.remote=new Gd(n,{isDevelopment:this.isDevelopment,isProduction:this.isProduction})}}const Hd=(e="",t="")=>e.toLowerCase()===t.toLowerCase(),qd=(e,t=6)=>{if(-1===e.indexOf("."))return e;const n=((e,t)=>{const n=e.indexOf("."),a=e.substring(n+t+1);if(a&&parseFloat(a)>=1){const a=e.substring(0,n+t+1),r=1/10**t;return(parseFloat(a)+r).toString()}return parseFloat(e.substring(0,n+t+1)).toString()})(e,t);return n},Xd=async(e,{type:t=Jo.ALL,chainId:n,exclude:a})=>{let r,i,s=[];const o=n??Wd(e);switch(t){case Jo.SWAP:s=(await e.remote.getConfig("dex")).tokens||[];break;case Jo.ONRAMP:r=await e.remote.getConfig("onramp"),r||(s=[]),s=r[Ko.TRANSAK]?.tokens||[];break;case Jo.BRIDGE:i=await e.remote.getConfig("bridge"),i||(s=[]),s=i[o]?.tokens||[];break;case Jo.ALL:default:s=(await e.remote.getTokensConfig(o)).allowed}return a&&0!==a?.length?{tokens:s.filter((e=>!a.map((e=>e.address)).includes(e.address||"")))}:{tokens:s}},$d=e=>!e||Hd(e,Ad);async function Zd(e,t){return await bd((async()=>{const n=new o(t,JSON.stringify(kd),e),[a,r,i]=await Promise.all([n.name(),n.symbol(),n.decimals()]);return{name:a,symbol:r,decimals:i,address:t}}),{type:pd.GET_ERC20_INFO_ERROR})}class Kd{url;nativeToken;ttl;chainId;cacheMap;httpClient;setCache(e,t){this.cacheMap[e]={data:t,ttl:(new Date).getTime()+1e3*this.ttl}}getCache(e){const t=this.cacheMap[e];return!t||t.ttl<=(new Date).getTime()?null:t.data}constructor(e,t,n){this.httpClient=e,this.chainId=t,this.url=xd[this.chainId].url;const a=xd[this.chainId].nativeToken;this.nativeToken={address:a.address??"",decimals:a.decimals.toString(),name:a.name,symbol:a.symbol},this.cacheMap={},this.ttl=void 0!==n?n:5}static isChainSupported=e=>Boolean(xd[e]);static isBlockscoutError=e=>"code"in e;async getTokensByWalletAddress(e){try{let t=`${this.url}/api/v2/addresses/${e.walletAddress}/tokens?type=${e.tokenType}`;e.nextPage&&(t+=`&${new URLSearchParams(e.nextPage)}`);const n=this.getCache(t);if(n)return Promise.resolve(n);const a=await this.httpClient.get(t),r={items:a.data?.items?.filter((e=>e.token.address&&e.token.address!==this.nativeToken.address)),next_page_params:a.data?.next_page_params};return this.setCache(t,r),Promise.resolve(r)}catch(e){let t=u.InternalServerError,n="InternalServerError";return d.isAxiosError(e)&&(t=e.response?.status||t,n=e.message),Promise.reject({code:t,message:n})}}async getNativeTokenByWalletAddress(e){try{const t=`${this.url}/api/v2/addresses/${e.walletAddress}`,n=this.getCache(t);if(n)return Promise.resolve(n);const a=await this.httpClient.get(t),r={token:this.nativeToken,value:a.data.coin_balance};return this.setCache(t,r),Promise.resolve(r)}catch(e){let t=u.InternalServerError,n="InternalServerError";return d.isAxiosError(e)&&(t=e.response?.status||t,n=e.message),Promise.reject({code:t,message:n})}}}var Qd;!function(e){e.ERC20="ERC-20"}(Qd||(Qd={}));const Yd=(e,t,n)=>{e.isProduction||console.info(t,n)},Jd=async(e,t,n)=>{const a=performance.now(),r=await n,i=performance.now();return Yd(e,t,(i-a)/1e3),r},eu=async(e,t,n)=>await bd((async()=>{const a=await wd(e,t);if(!a.isSupported)throw new md(`Chain:${a.chainId} is not a supported chain`,pd.CHAIN_NOT_SUPPORTED_ERROR,{chainName:a.name});const r=await t.getBalance(n);return{balance:r,formattedBalance:s.formatUnits(r,a.nativeCurrency.decimals),token:a.nativeCurrency}}),{type:pd.GET_BALANCE_ERROR});async function tu(e,t,n){return await bd((async()=>{const a=new o(n,JSON.stringify(kd),e);return Promise.all([Zd(e,n),a.balanceOf(t)]).then((([e,t])=>({balance:t,formattedBalance:s.formatUnits(t,e.decimals),token:{name:e.name,symbol:e.symbol,decimals:e.decimals,address:n}})))}),{type:pd.GET_ERC20_BALANCE_ERROR})}const nu=new Map,au=()=>nu.clear(),ru=async(e,t,n,a,r)=>{if(!t)throw new md("indexer is disabled for this chain, you must provide a provider.",pd.MISSING_PARAMS);let i=n;return i||(i=await(t?.getSigner().getAddress())),await Jd(e,`Time to fetch balances using RPC for ${a}`,(async(e,t,n,a)=>{const r=[];return a.forEach((a=>{!a.address||Hd(a.address,Ad)?r.push(eu(e,t,n)):r.push(tu(t,n,a.address))})),{balances:(await Promise.allSettled(r)).filter((e=>"fulfilled"===e.status)).map((e=>{const t=e,{token:n}=t.value;return n.address&&!Hd(n.address,Ad)||(t.value.token.address=Ad),t.value}))}})(e,t,i,r))},iu=async(e,t,n,a,i=!1)=>{if(!n&&!t)throw new md("both walletAddress and provider are missing. At least one must be provided.",pd.MISSING_PARAMS);if(!e.networkMap.get(a))throw new md(`chain ID ${a} not supported by the environment`,pd.CHAIN_NOT_SUPPORTED_ERROR);const{tokens:o}=await Xd(e,{type:Jo.ALL,chainId:a});let d=!1;try{d=(await e.remote.getTokensConfig(a)).blockscout||d}catch(e){console.error(e)}i&&au();let c=n;if(d&&Kd.isChainSupported(a)){const i=Wd(e)===a;c||(c=await(t?.getSigner().getAddress()));try{return await Jd(e,`Time to fetch balances using blockscout for ${a}`,(async(e,t,n,a)=>{const i=void 0!==a,o=Object.assign({},...(a??[]).map((e=>({[e.address||Ad]:e}))));let d=nu.get(n);if(!d){const t=e.remote.getHttpClient();d=new Kd(t,n),nu.set(n,d)}const c=[],f=Qd.ERC20;await Promise.all([(async e=>{let n;try{do{n=await e.getTokensByWalletAddress({walletAddress:t,tokenType:f,nextPage:n?.next_page_params}),c.push(...n.items)}while(n.next_page_params)}catch(e){if(e?.code!==u.NotFound)throw new md(e.message||"InternalServerError | getTokensByWalletAddress",pd.GET_INDEXER_BALANCE_ERROR,{error:e})}})(d),(async e=>{try{const n=await e.getNativeTokenByWalletAddress({walletAddress:t});n.token.address||=Ad,c.push(n)}catch(e){if(e?.code!==u.NotFound)throw new md(e.message||"InternalServerError | getNativeTokenByWalletAddress",pd.GET_INDEXER_BALANCE_ERROR,{error:e})}})(d)]);const l=[];return c.forEach((e=>{if(i&&!o[e.token.address])return;const t=e.token||{};if(null==e.value)return;const n=r.from(e.value);let a=parseInt(t.decimals,10);Number.isNaN(a)&&(a=Id);const d={...t,decimals:a},u=s.formatUnits(e.value,d.decimals);l.push({balance:n,formattedBalance:u,token:d})})),{balances:l}})(e,c,a,i?o:void 0))}catch(r){if(r.type===pd.GET_INDEXER_BALANCE_ERROR&&r.data?.error?.code===u.TooManyRequests)return ru(e,t,n,a,o);throw r}}return ru(e,t,n,a,o)};function su(){const e=new Set;let t=[];const n=()=>function(e){if("undefined"==typeof window)return;const t=t=>e(t.detail);return window.addEventListener("eip6963:announceProvider",t),window.dispatchEvent(new CustomEvent("eip6963:requestProvider")),()=>window.removeEventListener("eip6963:announceProvider",t)}((n=>{t.some((({info:e})=>e.uuid===n.info.uuid))||(t=[...t,n],e.forEach((e=>e(t,{added:[n]}))))}));let a=n();return{_listeners:()=>e,clear(){e.forEach((e=>e([],{removed:[...t]}))),t=[]},destroy(){this.clear(),e.clear(),a?.()},findProvider:({rdns:e})=>t.find((t=>t.info.rdns===e)),getProviders:()=>t,reset(){this.clear(),a?.(),a=n()},subscribe:(n,{emitImmediately:a}={})=>(e.add(n),a&&n(t,{added:t}),()=>e.delete(n))}}class ou{static instance;store;resetTimeout;isInit=!1;constructor(){this.store=su(),this.store.reset()}static getInstance(){return ou.instance||(ou.instance=new ou),ou.instance}findProvider(e){return this.store.findProvider(e)}getProviders(){return this.store.getProviders()}subscribe(e){return this.store.subscribe(e)}clear(){this.store.clear()}reset(){clearTimeout(this.resetTimeout),this.resetTimeout=setTimeout((()=>{this.store.reset()}),200)}initialise(){this.isInit||(this.isInit=!0,this.reset())}requestProviders(){window.dispatchEvent(new CustomEvent("eip6963:requestProvider"))}destroy(){this.store.destroy()}}const du={name:"MetaMask",rdns:"io.metamask",icon:"data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjMzIiB2aWV3Qm94PSIwIDAgMzUgMzMiIHdpZHRoPSIzNSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iLjI1Ij48cGF0aCBkPSJtMzIuOTU4MiAxLTEzLjEzNDEgOS43MTgzIDIuNDQyNC01LjcyNzMxeiIgZmlsbD0iI2UxNzcyNiIgc3Ryb2tlPSIjZTE3NzI2Ii8+PGcgZmlsbD0iI2UyNzYyNSIgc3Ryb2tlPSIjZTI3NjI1Ij48cGF0aCBkPSJtMi42NjI5NiAxIDEzLjAxNzE0IDkuODA5LTIuMzI1NC01LjgxODAyeiIvPjxwYXRoIGQ9Im0yOC4yMjk1IDIzLjUzMzUtMy40OTQ3IDUuMzM4NiA3LjQ4MjkgMi4wNjAzIDIuMTQzNi03LjI4MjN6Ii8+PHBhdGggZD0ibTEuMjcyODEgMjMuNjUwMSAyLjEzMDU1IDcuMjgyMyA3LjQ2OTk0LTIuMDYwMy0zLjQ4MTY2LTUuMzM4NnoiLz48cGF0aCBkPSJtMTAuNDcwNiAxNC41MTQ5LTIuMDc4NiAzLjEzNTggNy40MDUuMzM2OS0uMjQ2OS03Ljk2OXoiLz48cGF0aCBkPSJtMjUuMTUwNSAxNC41MTQ5LTUuMTU3NS00LjU4NzA0LS4xNjg4IDguMDU5NzQgNy40MDQ5LS4zMzY5eiIvPjxwYXRoIGQ9Im0xMC44NzMzIDI4Ljg3MjEgNC40ODE5LTIuMTYzOS0zLjg1ODMtMy4wMDYyeiIvPjxwYXRoIGQ9Im0yMC4yNjU5IDI2LjcwODIgNC40Njg5IDIuMTYzOS0uNjEwNS01LjE3MDF6Ii8+PC9nPjxwYXRoIGQ9Im0yNC43MzQ4IDI4Ljg3MjEtNC40NjktMi4xNjM5LjM2MzggMi45MDI1LS4wMzkgMS4yMzF6IiBmaWxsPSIjZDViZmIyIiBzdHJva2U9IiNkNWJmYjIiLz48cGF0aCBkPSJtMTAuODczMiAyOC44NzIxIDQuMTU3MiAxLjk2OTYtLjAyNi0xLjIzMS4zNTA4LTIuOTAyNXoiIGZpbGw9IiNkNWJmYjIiIHN0cm9rZT0iI2Q1YmZiMiIvPjxwYXRoIGQ9Im0xNS4xMDg0IDIxLjc4NDItMy43MTU1LTEuMDg4NCAyLjYyNDMtMS4yMDUxeiIgZmlsbD0iIzIzMzQ0NyIgc3Ryb2tlPSIjMjMzNDQ3Ii8+PHBhdGggZD0ibTIwLjUxMjYgMjEuNzg0MiAxLjA5MTMtMi4yOTM1IDIuNjM3MiAxLjIwNTF6IiBmaWxsPSIjMjMzNDQ3IiBzdHJva2U9IiMyMzM0NDciLz48cGF0aCBkPSJtMTAuODczMyAyOC44NzIxLjY0OTUtNS4zMzg2LTQuMTMxMTcuMTE2N3oiIGZpbGw9IiNjYzYyMjgiIHN0cm9rZT0iI2NjNjIyOCIvPjxwYXRoIGQ9Im0yNC4wOTgyIDIzLjUzMzUuNjM2NiA1LjMzODYgMy40OTQ2LTUuMjIxOXoiIGZpbGw9IiNjYzYyMjgiIHN0cm9rZT0iI2NjNjIyOCIvPjxwYXRoIGQ9Im0yNy4yMjkxIDE3LjY1MDctNy40MDUuMzM2OS42ODg1IDMuNzk2NiAxLjA5MTMtMi4yOTM1IDIuNjM3MiAxLjIwNTF6IiBmaWxsPSIjY2M2MjI4IiBzdHJva2U9IiNjYzYyMjgiLz48cGF0aCBkPSJtMTEuMzkyOSAyMC42OTU4IDIuNjI0Mi0xLjIwNTEgMS4wOTEzIDIuMjkzNS42ODg1LTMuNzk2Ni03LjQwNDk1LS4zMzY5eiIgZmlsbD0iI2NjNjIyOCIgc3Ryb2tlPSIjY2M2MjI4Ii8+PHBhdGggZD0ibTguMzkyIDE3LjY1MDcgMy4xMDQ5IDYuMDUxMy0uMTAzOS0zLjAwNjJ6IiBmaWxsPSIjZTI3NTI1IiBzdHJva2U9IiNlMjc1MjUiLz48cGF0aCBkPSJtMjQuMjQxMiAyMC42OTU4LS4xMTY5IDMuMDA2MiAzLjEwNDktNi4wNTEzeiIgZmlsbD0iI2UyNzUyNSIgc3Ryb2tlPSIjZTI3NTI1Ii8+PHBhdGggZD0ibTE1Ljc5NyAxNy45ODc2LS42ODg2IDMuNzk2Ny44NzA0IDQuNDgzMy4xOTQ5LTUuOTA4N3oiIGZpbGw9IiNlMjc1MjUiIHN0cm9rZT0iI2UyNzUyNSIvPjxwYXRoIGQ9Im0xOS44MjQyIDE3Ljk4NzYtLjM2MzggMi4zNTg0LjE4MTkgNS45MjE2Ljg3MDQtNC40ODMzeiIgZmlsbD0iI2UyNzUyNSIgc3Ryb2tlPSIjZTI3NTI1Ii8+PHBhdGggZD0ibTIwLjUxMjcgMjEuNzg0Mi0uODcwNCA0LjQ4MzQuNjIzNi40NDA2IDMuODU4NC0zLjAwNjIuMTE2OS0zLjAwNjJ6IiBmaWxsPSIjZjU4NDFmIiBzdHJva2U9IiNmNTg0MWYiLz48cGF0aCBkPSJtMTEuMzkyOSAyMC42OTU4LjEwNCAzLjAwNjIgMy44NTgzIDMuMDA2Mi42MjM2LS40NDA2LS44NzA0LTQuNDgzNHoiIGZpbGw9IiNmNTg0MWYiIHN0cm9rZT0iI2Y1ODQxZiIvPjxwYXRoIGQ9Im0yMC41OTA2IDMwLjg0MTcuMDM5LTEuMjMxLS4zMzc4LS4yODUxaC00Ljk2MjZsLS4zMjQ4LjI4NTEuMDI2IDEuMjMxLTQuMTU3Mi0xLjk2OTYgMS40NTUxIDEuMTkyMSAyLjk0ODkgMi4wMzQ0aDUuMDUzNmwyLjk2Mi0yLjAzNDQgMS40NDItMS4xOTIxeiIgZmlsbD0iI2MwYWM5ZCIgc3Ryb2tlPSIjYzBhYzlkIi8+PHBhdGggZD0ibTIwLjI2NTkgMjYuNzA4Mi0uNjIzNi0uNDQwNmgtMy42NjM1bC0uNjIzNi40NDA2LS4zNTA4IDIuOTAyNS4zMjQ4LS4yODUxaDQuOTYyNmwuMzM3OC4yODUxeiIgZmlsbD0iIzE2MTYxNiIgc3Ryb2tlPSIjMTYxNjE2Ii8+PHBhdGggZD0ibTMzLjUxNjggMTEuMzUzMiAxLjEwNDMtNS4zNjQ0Ny0xLjY2MjktNC45ODg3My0xMi42OTIzIDkuMzk0NCA0Ljg4NDYgNC4xMjA1IDYuODk4MyAyLjAwODUgMS41Mi0xLjc3NTItLjY2MjYtLjQ3OTUgMS4wNTIzLS45NTg4LS44MDU0LS42MjIgMS4wNTIzLS44MDM0eiIgZmlsbD0iIzc2M2UxYSIgc3Ryb2tlPSIjNzYzZTFhIi8+PHBhdGggZD0ibTEgNS45ODg3MyAxLjExNzI0IDUuMzY0NDctLjcxNDUxLjUzMTMgMS4wNjUyNy44MDM0LS44MDU0NS42MjIgMS4wNTIyOC45NTg4LS42NjI1NS40Nzk1IDEuNTE5OTcgMS43NzUyIDYuODk4MzUtMi4wMDg1IDQuODg0Ni00LjEyMDUtMTIuNjkyMzMtOS4zOTQ0eiIgZmlsbD0iIzc2M2UxYSIgc3Ryb2tlPSIjNzYzZTFhIi8+PHBhdGggZD0ibTMyLjA0ODkgMTYuNTIzNC02Ljg5ODMtMi4wMDg1IDIuMDc4NiAzLjEzNTgtMy4xMDQ5IDYuMDUxMyA0LjEwNTItLjA1MTloNi4xMzE4eiIgZmlsbD0iI2Y1ODQxZiIgc3Ryb2tlPSIjZjU4NDFmIi8+PHBhdGggZD0ibTEwLjQ3MDUgMTQuNTE0OS02Ljg5ODI4IDIuMDA4NS0yLjI5OTQ0IDcuMTI2N2g2LjExODgzbDQuMTA1MTkuMDUxOS0zLjEwNDg3LTYuMDUxM3oiIGZpbGw9IiNmNTg0MWYiIHN0cm9rZT0iI2Y1ODQxZiIvPjxwYXRoIGQ9Im0xOS44MjQxIDE3Ljk4NzYuNDQxNy03LjU5MzIgMi4wMDA3LTUuNDAzNGgtOC45MTE5bDIuMDAwNiA1LjQwMzQuNDQxNyA3LjU5MzIuMTY4OSAyLjM4NDIuMDEzIDUuODk1OGgzLjY2MzVsLjAxMy01Ljg5NTh6IiBmaWxsPSIjZjU4NDFmIiBzdHJva2U9IiNmNTg0MWYiLz48L2c+PC9zdmc+",uuid:"fb8e904e-1a71-454a-af65-dc1ee86311c3"},uu={icon:'data:image/svg+xml,<svg viewBox="0 0 48 48" class="SvgIcon undefined Logo Logo--PassportSymbolOutlined css-1dn9atd" xmlns="http://www.w3.org/2000/svg"><g data-testid="undefined__g"><circle cx="24" cy="24" r="22.5" fill="url(%23paint0_radial_6324_83922)"></circle><circle cx="24" cy="24" r="22.5" fill="url(%23paint1_radial_6324_83922)"></circle><path d="M24 0C10.7452 0 0 10.7452 0 24C0 37.2548 10.7452 48 24 48C37.2548 48 48 37.2548 48 24C48 10.7452 37.2548 0 24 0ZM23.0718 9.16608C23.7383 8.83951 24.4406 8.86188 25.087 9.2287C27.3282 10.5059 29.5627 11.7942 31.786 13.096C32.5018 13.5165 32.8686 14.1897 32.8708 15.0173C32.8843 17.9184 32.8798 20.8171 32.8708 23.7182C32.8708 23.8255 32.8015 23.9821 32.7143 24.0335C31.8531 24.548 30.9808 25.0423 30.0347 25.5881V25.1318C30.0347 22.148 30.0257 19.1664 30.0414 16.1827C30.0436 15.6101 29.8468 15.241 29.339 14.9525C26.7377 13.474 24.1499 11.9687 21.5575 10.4723C21.4457 10.4075 21.3361 10.3381 21.1661 10.2352C21.8326 9.85722 22.4321 9.47698 23.0673 9.16608H23.0718ZM22.5953 38.8451C22.45 38.7713 22.3426 38.7198 22.2375 38.6595C18.8041 36.68 15.3752 34.687 11.9307 32.7232C10.9644 32.173 10.5238 31.3879 10.5349 30.2852C10.5551 27.9411 10.5484 25.597 10.5372 23.2507C10.5327 22.1927 10.9622 21.4255 11.8926 20.8977C14.3105 19.5221 16.715 18.1264 19.1195 16.7284C19.3275 16.6076 19.4796 16.5875 19.6965 16.7172C20.5264 17.216 21.3719 17.6924 22.2554 18.2024C22.0876 18.3031 21.9601 18.3791 21.8304 18.4552C19.2268 19.9582 16.6278 21.4658 14.0175 22.9599C13.5903 23.2037 13.3912 23.5213 13.3957 24.0179C13.4091 25.8654 13.4114 27.713 13.3957 29.5605C13.3912 30.0705 13.5948 30.3948 14.0332 30.6453C16.7866 32.2199 19.5288 33.8125 22.28 35.3916C22.5126 35.5258 22.611 35.6645 22.6065 35.9418C22.5864 36.888 22.5998 37.8363 22.5998 38.8473L22.5953 38.8451ZM22.5953 33.553C22.356 33.4166 22.1838 33.3204 22.0116 33.2198C19.8285 31.9605 17.6477 30.6967 15.4602 29.4464C15.2231 29.3122 15.1359 29.1668 15.1381 28.8917C15.1538 27.4714 15.1471 26.0511 15.1426 24.6308C15.1426 24.4384 15.1717 24.3064 15.3618 24.1991C16.167 23.7495 16.9633 23.2798 17.7618 22.8212C17.8199 22.7877 17.8826 22.7631 17.9877 22.7116V24.3064C17.9877 25.1698 18.0011 26.0354 17.9832 26.8988C17.972 27.3909 18.1622 27.7241 18.5916 27.9657C19.8285 28.6636 21.0498 29.3883 22.2867 30.0839C22.5305 30.2203 22.6043 30.3724 22.5998 30.6408C22.5842 31.5847 22.5931 32.5308 22.5931 33.5508L22.5953 33.553ZM20.0746 14.91C19.6116 14.6371 19.2157 14.6393 18.7527 14.91C16.1581 16.4265 13.5523 17.9228 10.9487 19.4259C10.8391 19.4908 10.7251 19.5489 10.5305 19.6541C10.5998 18.6654 10.3873 17.7327 10.7251 16.8291C10.9085 16.3348 11.2529 15.9635 11.7092 15.6995C13.8811 14.4447 16.0507 13.1877 18.227 11.9396C19.0211 11.4833 19.8308 11.4945 20.6248 11.953C23.0964 13.3756 25.5657 14.8026 28.0306 16.2341C28.1357 16.2945 28.2677 16.4309 28.2677 16.5338C28.2856 17.5493 28.2788 18.567 28.2788 19.6563C27.3819 19.1396 26.5543 18.6609 25.7267 18.1823C23.8412 17.093 21.9512 16.0149 20.0746 14.91ZM37.4427 30.8779C37.3778 31.6764 36.9103 32.2423 36.2192 32.6404C33.5732 34.1614 30.9294 35.6913 28.2856 37.2168C27.4557 37.6954 26.6259 38.1741 25.7938 38.6527C25.6932 38.7109 25.5903 38.7601 25.4539 38.8317C25.4449 38.693 25.4337 38.5924 25.4337 38.4917C25.4337 37.6149 25.4382 36.7404 25.4293 35.8636C25.4293 35.6645 25.4762 35.5437 25.6596 35.4386C29.5157 33.2198 33.3696 30.9942 37.2212 28.7709C37.2794 28.7374 37.3443 28.7105 37.4539 28.6591C37.4539 29.4375 37.4986 30.1622 37.4427 30.8779ZM37.4628 25.3577C37.4561 26.2658 36.9663 26.9033 36.1901 27.3506C33.175 29.0841 30.1622 30.8265 27.1493 32.5666C26.5991 32.8842 26.0466 33.1996 25.4561 33.5396C25.4472 33.3897 25.436 33.2913 25.436 33.1907C25.436 32.3273 25.4449 31.4617 25.4293 30.5983C25.4248 30.3523 25.5075 30.2226 25.72 30.0995C28.46 28.5271 31.1911 26.9368 33.9355 25.3733C34.4231 25.096 34.6378 24.7538 34.6334 24.1812C34.6132 21.1974 34.6244 18.2136 34.6244 15.2298V14.7087C35.3402 15.1404 36.0112 15.496 36.624 15.9299C37.1832 16.3258 37.465 16.9253 37.4673 17.6164C37.4762 20.1976 37.4829 22.7788 37.465 25.3599L37.4628 25.3577Z" fill="%230D0D0D"></path><path fill-rule="evenodd" d="M24 0C10.7452 0 0 10.7452 0 24C0 37.2548 10.7452 48 24 48C37.2548 48 48 37.2548 48 24C48 10.7452 37.2548 0 24 0ZM24 2C11.8497 2 2 11.8497 2 24C2 36.1503 11.8497 46 24 46C36.1503 46 46 36.1503 46 24C46 11.8497 36.1503 2 24 2Z" fill="url(%23paint2_radial_6324_83922)"></path><path fill-rule="evenodd" d="M24 0C10.7452 0 0 10.7452 0 24C0 37.2548 10.7452 48 24 48C37.2548 48 48 37.2548 48 24C48 10.7452 37.2548 0 24 0ZM24 2C11.8497 2 2 11.8497 2 24C2 36.1503 11.8497 46 24 46C36.1503 46 46 36.1503 46 24C46 11.8497 36.1503 2 24 2Z" fill="url(%23paint3_radial_6324_83922)"></path><defs><radialGradient id="paint0_radial_6324_83922" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(13.4442 13.3899) rotate(44.9817) scale(46.7487 99.1435)"><stop stop-color="%23A3EEF8"></stop><stop offset="0.177083" stop-color="%23A4DCF5"></stop><stop offset="0.380208" stop-color="%23A6AEEC"></stop><stop offset="1" stop-color="%23ECBEE1"></stop></radialGradient><radialGradient id="paint1_radial_6324_83922" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(25.9515 43.7068) rotate(84.265) scale(24.2138 46.3215)"><stop stop-color="%23FCF5EE"></stop><stop offset="0.715135" stop-color="%23ECBEE1" stop-opacity="0"></stop></radialGradient><radialGradient id="paint2_radial_6324_83922" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(12.7405 12.6825) rotate(44.9817) scale(49.8653 105.753)"><stop stop-color="%23A3EEF8"></stop><stop offset="0.177083" stop-color="%23A4DCF5"></stop><stop offset="0.380208" stop-color="%23A6AEEC"></stop><stop offset="1" stop-color="%23ECBEE1"></stop></radialGradient><radialGradient id="paint3_radial_6324_83922" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(26.0816 45.0206) rotate(84.265) scale(25.828 49.4096)"><stop stop-color="%23FCF5EE"></stop><stop offset="0.715135" stop-color="%23ECBEE1" stop-opacity="0"></stop></radialGradient></defs></g></svg>',name:"Immutable Passport",rdns:"com.immutable.passport",uuid:"b90118be-7234-4c89-b89b-d5d267663eb5"},cu=e=>({info:uu,provider:e}),fu=e=>({info:du,provider:e});async function lu(e,t){let n,a=null;switch(e){case nd.PASSPORT:if(n=ou.getInstance().findProvider({rdns:uu.rdns}),!n){if(!t)throw console.error("WalletProviderName was PASSPORT but the passport instance was not provided to the Checkout constructor"),new md("Passport not provided",pd.DEFAULT_PROVIDER_ERROR);a=new c(t.connectEvm({announceProvider:!1}))}break;case nd.METAMASK:n=ou.getInstance().findProvider({rdns:du.rdns}),n||(a=await async function(){const e=await bd((async()=>await l()),{type:pd.METAMASK_PROVIDER_ERROR});if(!e||!e.request)throw new md("No MetaMask provider installed.",pd.METAMASK_PROVIDER_ERROR);return new c(e)}());break;default:if(n=ou.getInstance().findProvider({rdns:e}),!n)throw console.error("The WalletProviderName that was provided is not supported"),new md("Provider not supported",pd.DEFAULT_PROVIDER_ERROR)}return!a&&n&&(a=new c(n.provider)),{provider:a,walletProviderName:e}}function pu(e){return!(!e||!e.provider?.request||"function"!=typeof e.provider.request)}async function hu(e,t,n){return bd((async()=>{if(t.provider?.isPassport)return t;if(!pu(t))throw new md("Parsed provider is not a valid Web3Provider",pd.WEB3_PROVIDER_ERROR);const a={...rd,...n},r=await gd(t);let i=t.network?.chainId;try{i=t.network?.chainId,i||(i=(await t.getNetwork()).chainId)}catch(e){throw new md("Unable to detect the web3Provider network",pd.WEB3_PROVIDER_ERROR,{error:e})}if(i!==r&&!a.allowMistmatchedChainId)throw console.error("web3ChainId",i,"underlyingChainId",r,a),new md("Your wallet has changed network, please switch to a supported network",pd.WEB3_PROVIDER_ERROR);if(!(await Td(e,{type:Yo.ALL})).networks.some((e=>e.chainId===r))&&!a.allowUnsupportedProvider)throw new md("Your wallet is connected to an unsupported network, please switch to a supported network",pd.WEB3_PROVIDER_ERROR);return t}),{type:pd.WEB3_PROVIDER_ERROR})}const mu=async(e,t)=>{const n=t,{chainId:a}=await e.getNetwork();return(e=>e===Xo.IMTBL_ZKEVM_DEVNET||e===Xo.IMTBL_ZKEVM_TESTNET||e===Xo.IMTBL_ZKEVM_MAINNET)(a)?(void 0!==n.gasPrice||(n.maxFeePerGas=Fd.maxFeePerGas,n.maxPriorityFeePerGas=Fd.maxPriorityFeePerGas),n):n},bu=e=>e.code===a.errors.INSUFFICIENT_FUNDS?new md(e.message,pd.INSUFFICIENT_FUNDS,{error:e}):e.code===a.errors.ACTION_REJECTED?new md(e.message,pd.USER_REJECTED_REQUEST_ERROR,{error:e}):e.code===a.errors.UNPREDICTABLE_GAS_LIMIT?new md(e.message,pd.UNPREDICTABLE_GAS_LIMIT,{error:e}):new md(e.message,pd.TRANSACTION_FAILED,{error:e}),yu=async(e,t)=>{try{const n=e.getSigner(),a=await mu(e,t);return{transactionResponse:await n.sendTransaction(a)}}catch(e){throw bu(e)}};function gu(e,t,a,r){const i=a.get(e),s=a.get(t);if(!i)throw new md(`Chain:${e} is not a supported chain`,pd.CHAIN_NOT_SUPPORTED_ERROR);if(!s)throw new md(`Chain:${t} is not a supported chain`,pd.CHAIN_NOT_SUPPORTED_ERROR);let o=Br;r.isDevelopment&&(o=Fr),r.isProduction&&(o=Gr);const d=new ds({baseConfig:new n({environment:r.environment}),bridgeInstance:o,rootProvider:i,childProvider:s});return new gi(d)}async function Eu(e,t){const a=await t.remote.getConfig("dex");return new Do({chainId:e,baseConfig:new n({environment:t.environment}),overrides:a?.overrides,secondaryFees:a?.secondaryFees})}function Tu(e){return new C({baseConfig:{environment:e.environment}})}function wu(e){return new D({baseConfig:{environment:e.environment}})}const vu="0x0000000000000000000000000000000000000001",Ru=18;async function Iu(e,t){const n=Wd(t),a=Vd(t);if(!e.get(n))throw new Error(`Missing JsonRpcProvider for chain id: ${n}`);try{const i=gu(n,a,e,t),s=await async function(e,t,n,a){const i=t===Wd(a)?Rr.DEPOSIT:Rr.WITHDRAW;return await e.getFee({action:i,gasMultiplier:"auto",sourceChainId:t.toString(),destinationChainId:n.toString(),token:Ad.toUpperCase(),amount:r.from(0)})}(i,n,a,t);return{gasEstimateType:Qo.BRIDGE_TO_L2,fees:s,token:t.networkMap.get(n)?.nativeCurrency}}catch{return{gasEstimateType:Qo.BRIDGE_TO_L2,fees:{sourceChainGas:r.from(0),approvalFee:r.from(0),bridgeFee:r.from(0),imtblFee:r.from(0),totalFees:r.from(0)},token:t.networkMap.get(n)?.nativeCurrency}}}async function Au(e,t,n){switch(e.gasEstimateType){case Qo.BRIDGE_TO_L2:return await Iu(t,n);case Qo.SWAP:return await async function(e){const t=Vd(e),n=await e.remote.getConfig("gasEstimateTokens"),{inAddress:a,outAddress:i}=n[t].swapAddresses;try{const n=await Eu(t,e),{swap:o}=await n.getUnsignedSwapTxFromAmountIn(vu,a,i,r.from(s.parseUnits("1",Ru)));return o.gasFeeEstimate?{gasEstimateType:Qo.SWAP,fees:{totalFees:o.gasFeeEstimate.value?r.from(o.gasFeeEstimate.value):void 0,token:{address:o.gasFeeEstimate.token.address,symbol:o.gasFeeEstimate.token.symbol??"",name:o.gasFeeEstimate.token.name??"",decimals:o.gasFeeEstimate.token.decimals??Ru}}}:{gasEstimateType:Qo.SWAP,fees:{}}}catch{return{gasEstimateType:Qo.SWAP,fees:{}}}}(n);default:throw new md("Invalid type provided for gasEstimateType",pd.INVALID_GAS_ESTIMATE_TYPE)}}const _u=e=>(e=>{const t=new Map,n=[];return e.forEach((e=>{const{type:a}=e;if(a!==sd.ERC1155)return void n.push(e);const{contractAddress:i,spenderAddress:s,id:o,amount:d}=e,u=`${i}${s}${o}`,c=t.get(u);c&&c.type===sd.ERC1155?c.amount=r.from(c.amount).add(d):t.set(u,{...e})})),n.concat(Array.from(t.values()))})((e=>{const t=new Map,n=[];return e.forEach((e=>{const{type:a}=e;if(a!==sd.ERC721)return void n.push(e);const{contractAddress:r,spenderAddress:i,id:s}=e,o=`${r}${i}${s}`;t.get(o)||t.set(o,{...e})})),n.concat(Array.from(t.values()))})((e=>{const t=new Map,n=[];return e.forEach((e=>{const{type:a}=e;if(a!==sd.ERC20)return void n.push(e);const{tokenAddress:i,spenderAddress:s,amount:o}=e,d=`${i}${s}`,u=t.get(d);u&&u.type===sd.ERC20?u.amount=r.from(u.amount).add(o):t.set(d,{...e})})),n.concat(Array.from(t.values()))})((e=>{const t=new Map,n=[];return e.forEach((e=>{const{type:a}=e;if(a!==sd.NATIVE)return void n.push(e);const{amount:i}=e,s=t.get(a);s&&s.type===sd.NATIVE?s.amount=r.from(s.amount).add(i):t.set(a,{...e})})),n.concat(Array.from(t.values()))})(e)))),Mu=async(e,t,n,a)=>{try{const r=new o(n,JSON.stringify(kd),e);return await r.allowance(t,a)}catch(e){throw new md("Failed to get the allowance for ERC20",pd.GET_ERC20_ALLOWANCE_ERROR,{contractAddress:n,error:e})}},Nu=async(e,t,n,a,r)=>{try{const i=new o(n,JSON.stringify(kd),e),s=await i.populateTransaction.approve(a,r);return s&&(s.from=t),s}catch(e){throw new md("Failed to get the approval transaction for ERC20",pd.GET_ERC20_ALLOWANCE_ERROR,{contractAddress:n,error:e})}},Cu=async(e,t,n,a)=>{try{const r=new o(n,JSON.stringify(Ld),e);return await r.isApprovedForAll(t,a)}catch(e){throw new md("Failed to check approval for all ERC721s of collection",pd.GET_ERC721_ALLOWANCE_ERROR,{ownerAddress:t,contractAddress:n,spenderAddress:a,error:e})}},Ou=async(e,t,n,a,r)=>{try{const i=new o(n,JSON.stringify(Ld),e),s=await i.populateTransaction.approve(a,r);return s&&(s.from=t),s}catch(e){throw new md("Failed to get the approval transaction for ERC721",pd.GET_ERC721_ALLOWANCE_ERROR,{id:r.toString(),contractAddress:n,spenderAddress:a,ownerAddress:t,error:e})}},Su=async(e,t,n)=>{try{const a=new o(t,JSON.stringify(Ld),e);return await a.getApproved(n)}catch(e){throw new md("Failed to get approved address for ERC721",pd.GET_ERC721_ALLOWANCE_ERROR,{id:n.toString(),contractAddress:t,error:e})}},Pu=(e,t)=>{try{return r.from(e)}catch(n){throw new md("Invalid ERC721 ID",pd.GET_ERC721_ALLOWANCE_ERROR,{id:e,contractAddress:t})}},Du=async(e,t,n)=>{let a=!0;const r=[],i=new Map,s=new Map,o=new Map,d=new Map,u=await(async(e,t,n)=>{const a=new Map,r=new Map;for(const i of t){if(i.type!==sd.ERC721)continue;const{contractAddress:t,spenderAddress:s}=i,o=`${t}-${s}`;a.set(o,!1),r.has(o)||r.set(o,Cu(e,n,t,s))}const i=await Promise.all(r.values()),s=Array.from(r.keys());return i.forEach(((e,t)=>{a.set(s[t],e)})),a})(e,n,t);for(const t of n){if(t.type!==sd.ERC721)continue;const{contractAddress:n,id:a,spenderAddress:o}=t,d=`${n}-${o}`;if(u.get(d)){r.push({sufficient:!0,itemRequirement:t});continue}const c=`${n}-${a}`,f=Pu(a,n);i.set(c,t),s.set(c,Su(e,n,f))}const c=await Promise.all(s.values()),f=Array.from(s.keys());for(let n=0;n<c.length;n++){const s=i.get(f[n]);if(!s||s.type!==sd.ERC721)continue;if(c[n]===s.spenderAddress){r.push({sufficient:!0,itemRequirement:s});continue}a=!1;const{contractAddress:u,id:l,spenderAddress:p}=s,h=`${u}-${l}`,m=Pu(l,u);o.set(h,{type:sd.ERC721,sufficient:!1,itemRequirement:s,approvalTransaction:void 0}),d.set(h,Ou(e,t,u,p,m))}const l=await Promise.all(d.values()),p=Array.from(d.keys());return l.forEach(((e,t)=>{const n=o.get(p[t]);n&&(n.sufficient||(n.approvalTransaction=e))})),{sufficient:a,allowances:r.concat(Array.from(o.values()))}},xu=async(e,t,n)=>{const a=n.filter((e=>e.type===sd.ERC1155)),r=await Promise.all(a.map((async n=>{const a=await(async(e,t,n,a)=>{try{const r=new o(n,JSON.stringify(Ud),e);return await r.isApprovedForAll(t,a)}catch(e){throw new md("Failed to check approval for all ERC1155s of collection",pd.GET_ERC1155_ALLOWANCE_ERROR,{ownerAddress:t,contractAddress:n,spenderAddress:a,error:e})}})(e,t,n.contractAddress,n.spenderAddress);if(a)return{sufficient:!0,itemRequirement:n};const r=await(async(e,t,n,a)=>{try{const r=new o(n,JSON.stringify(Ud),e),i=await r.populateTransaction.setApprovalForAll(a,!0);return i&&(i.from=t),i}catch(e){throw new md("Failed to get the approval transaction for ERC1155",pd.GET_ERC1155_ALLOWANCE_ERROR,{contractAddress:n,spenderAddress:a,ownerAddress:t,error:e})}})(e,t,n.contractAddress,n.spenderAddress);return{type:sd.ERC1155,sufficient:!1,itemRequirement:n,approvalTransaction:r}})));return{sufficient:r.some((e=>e.sufficient)),allowances:r}},ku=e=>(e=>{const t=new Map,n=[];return e.forEach((e=>{const{type:a}=e;if(a!==sd.ERC721)return void n.push(e);const{contractAddress:r,id:i}=e,s=`${r}${i}`;t.get(s)||t.set(s,{...e})})),n.concat(Array.from(t.values()))})((e=>{const t=new Map,n=[];return e.forEach((e=>{const{type:a}=e;if(a!==sd.ERC20)return void n.push(e);const{tokenAddress:i,amount:s}=e,o=`${i}`,d=t.get(o);d&&d.type===sd.ERC20?d.amount=r.from(d.amount).add(s):t.set(o,{...e})})),n.concat(Array.from(t.values()))})((e=>{const t=new Map,n=[];return e.forEach((e=>{const{type:a}=e;if(a!==sd.NATIVE)return void n.push(e);const{amount:i}=e,s=t.get(a);s&&s.type===sd.NATIVE?s.amount=r.from(s.amount).add(i):t.set(a,{...e})})),n.concat(Array.from(t.values()))})(e))),Lu=async(e,t,n,a,r=!1)=>{try{const i=new Map;(e=>e.map((e=>{switch(e.type){case sd.ERC20:return{address:e.tokenAddress};case sd.NATIVE:return{address:Ad};case sd.ERC721:default:return{address:e.contractAddress}}})))(a).forEach((e=>{e.address&&i.set(e.address.toLocaleLowerCase(),e)}));const{balances:s}=await iu(e,t,n,Vd(e),r);return s.filter((e=>i.get((e.token.address||Ad).toLocaleLowerCase())))}catch(e){throw new md("Failed to get balances",pd.GET_BALANCE_ERROR,{error:e})}},Uu=async(e,t,n,a,i=!1)=>{const d=ku(a),u=[],c=[];if(d.forEach((e=>{switch(e.type){case sd.ERC20:case sd.NATIVE:u.push(e);break;case sd.ERC721:c.push(e)}})),0===c.length&&0===u.length)throw new md("Unsupported item requirement balance check",pd.UNSUPPORTED_BALANCE_REQUIREMENT_ERROR);const f=[];u.length>0&&f.push(Lu(e,t,n,d,i)),c.length>0&&f.push((async(e,t,n)=>{const a=[],i=new Map,s=new Map;n.forEach((t=>{if(t.type!==sd.ERC721)return;const n=new o(t.contractAddress,JSON.stringify(Ld),e);i.set(t.contractAddress,t),s.set(t.contractAddress,n.ownerOf(t.id))}));try{const e=await Promise.all(s.values()),n=Array.from(s.keys());e.forEach(((e,s)=>{const o=i.get(n[s]);let d=0;o&&Hd(t,e)&&(d=1),a.push({type:sd.ERC721,balance:r.from(d),formattedBalance:d.toString(),contractAddress:o.contractAddress,id:o.id})}))}catch(e){throw new md("Failed to get ERC721 balances",pd.GET_ERC721_BALANCE_ERROR,{error:e})}return a})(t,n,d));const l=await Promise.all(f),p=[],h=[];if(u.length>0&&l.length>0){const e=l.shift();e&&u.forEach((n=>{h.push((async(e,t,n)=>{let a;e.type===sd.ERC20?a=t.find((t=>Hd(t.token?.address,e.tokenAddress))):e.type===sd.NATIVE&&(a=t.find((e=>$d(e.token?.address))));const i=e.amount,d=i.isNegative()||i.isZero()||(a?.balance.gte(i)??!1),u=i.sub(a?.balance??r.from(0));let c="",f="",l=Id;if(a)l=a.token?.decimals??Id,c=a.token.name,f=a.token.symbol;else if(e.type===sd.ERC20)try{const t=new o(e.tokenAddress,JSON.stringify(kd),n),[a,r,i]=await Promise.all([t.name(),t.symbol(),t.decimals()]);l=i,c=a,f=r}catch(t){console.error("Failed to query contract information",e.tokenAddress)}let p=a;return e.type===sd.NATIVE?(p||(p={type:sd.NATIVE,balance:r.from(0),formattedBalance:"0",token:_d}),{sufficient:d,type:sd.NATIVE,delta:{balance:u,formattedBalance:s.formatUnits(u,l)},current:{...p,type:sd.NATIVE},required:{...p,type:sd.NATIVE,balance:r.from(e.amount),formattedBalance:s.formatUnits(e.amount,l)}}):(p||(p={type:e.type,balance:r.from(0),formattedBalance:"0",token:{name:c,symbol:f,address:e.tokenAddress,decimals:l}}),{sufficient:d,type:sd.ERC20,delta:{balance:u,formattedBalance:s.formatUnits(u,l)},current:{...p,token:{address:e.tokenAddress,name:c,symbol:f,decimals:l}},required:{...p,token:{address:e.tokenAddress,name:c,symbol:f,decimals:l},balance:r.from(e.amount),formattedBalance:s.formatUnits(e.amount,l)}})})(n,e,t))}))}if(c.length>0&&l.length>0){const e=l.shift();e&&c.forEach((t=>{p.push(((e,t)=>{const n=r.from(1),a=t.find((t=>{const n=t;return Hd(n.contractAddress,e.contractAddress)&&n.id===e.id})),i=n.isNegative()||n.isZero()||(a?.balance.gte(n)??!1),s=n.sub(a?.balance??r.from(0));let o=a;return o||(o={type:sd.ERC721,balance:r.from(0),formattedBalance:"0",contractAddress:e.contractAddress,id:e.id}),{sufficient:i,type:sd.ERC721,delta:{balance:s,formattedBalance:s.toString()},current:o,required:{...o,balance:r.from(1),formattedBalance:"1"}}})(t,e))}))}const m=[...p,...await Promise.all(h)];return{sufficient:void 0===m.find((e=>!1===e.sufficient)),balanceRequirements:m}},Fu=async(e,t)=>{try{return await e.estimateGas(t)}catch(e){throw new md("Failed to estimate gas for transaction",pd.UNPREDICTABLE_GAS_LIMIT,{error:e})}},Bu=async(e,t,n)=>{const a=[];let i=r.from(0);for(const n of t)void 0!==n.approvalTransaction&&a.push(Fu(e,n.approvalTransaction));if(n.type===od.TRANSACTION)a.push(Fu(e,n.transaction));else{const t=(e=>(e=>!!e.maxFeePerGas&&!!e.maxPriorityFeePerGas)(e)?r.from(e.lastBaseFeePerGas).add(r.from(e.maxPriorityFeePerGas)):e.gasPrice?r.from(e.gasPrice):null)(await e.getFeeData());if(null!==t){const e=t?.mul(n.gasToken.limit);e&&(i=i.add(e))}}return(await Promise.all(a)).forEach((e=>{i=i.add(e)})),i.eq(0)?null:((e,t)=>t.type===od.TRANSACTION||t.gasToken.type===dd.NATIVE?{type:sd.NATIVE,amount:e}:{type:sd.ERC20,amount:e,tokenAddress:t.gasToken.tokenAddress,spenderAddress:""})(i,n)},Gu=(t,n)=>({checkDexAvailability:async()=>{let a;try{a=await d.post(`${t?Nd[Rd]:n?Nd[e.PRODUCTION]:Nd[e.SANDBOX]}/v1/availability/checkout/swap`)}catch(e){if(a=e.response,403===a.status)return!1;throw new md(`Error fetching from api: ${a.status} ${a.statusText}`,pd.API_ERROR,{error:e})}return!0}}),ju=async()=>!0,Wu=async e=>{const t=Gu(e.isDevelopment,e.isProduction);try{return await t.checkDexAvailability()}catch{return!1}};async function Vu(e,t){if(e.isProduction&&t?.has(Xo.ETHEREUM))return t;if(t?.has(Xo.SEPOLIA))return t;const n=new Map;return(await Td(e,{type:Yo.ALL})).networks.forEach((t=>{const a=e.networkMap.get(t.chainId)?.rpcUrls[0],r=new f(a);n.set(t.chainId,r)})),n}const zu=async(e,t,n,a,r)=>{const i=new Map;try{const s=await Eu(t,e),o=[],d=[];for(const e of r)e!==a.address&&(o.push(s.getUnsignedSwapTxFromAmountOut(n,e,a.address,a.amount,1)),d.push(e));return(await Jd(e,"Time to resolve swap quotes from the dex",Promise.allSettled(o))).forEach(((e,t)=>{if("rejected"===e.status)return;const n=d[t];i.set(n,{quote:e.value.quote,approval:e.value.approval?.gasFeeEstimate??null,swap:e.value.swap.gasFeeEstimate})})),i}catch{return i}},Hu=(e,t,n)=>{let a,i=r.from(0),o="0";e&&(i=e.value,o=s.formatUnits(e.value,e.token.decimals),a={name:e.token.name??"",symbol:e.token.symbol??"",address:e.token.address,decimals:e.token.decimals});let d,u=r.from(0),c="0";t&&(u=t.value,c=s.formatUnits(t.value,t.token.decimals),d={name:t.token.name??"",symbol:t.token.symbol??"",address:t.token.address,decimals:t.token.decimals});const f=[];for(const e of n)f.push({type:cd.SWAP_FEE,amount:e.amount.value,formattedAmount:s.formatUnits(e.amount.value,e.amount.token.decimals),basisPoints:e.basisPoints,token:{name:e.amount.token.name??"",symbol:e.amount.token.symbol??"",address:e.amount.token.address,decimals:e.amount.token.decimals}});return{approvalGasFee:{type:cd.GAS,amount:i,formattedAmount:o,token:a},swapGasFee:{type:cd.GAS,amount:u,formattedAmount:c,token:d},swapFees:f}},qu=(e,t,n,a)=>{const r=n.token.address;let i=sd.ERC20;return $d(r)&&(i=sd.NATIVE),{type:fd.SWAP,chainId:e,fundingItem:{type:i,fundsRequired:{amount:t,formattedAmount:qd(s.formatUnits(t,n.token.decimals))},userBalance:{balance:n.balance,formattedBalance:n.formattedBalance},token:n.token},fees:a}},Xu=(e,t)=>{if(!t)return{sufficient:!0,approvalGasFee:r.from(0),approvalGasTokenAddress:""};const n=t.value,a=t.token.address;if(0===e.length)return{sufficient:!1,approvalGasFee:n,approvalGasTokenAddress:a};const i=e.find((e=>$d(e.token.address)&&$d(a)||Hd(e.token.address,a)));return i?i.balance.lt(n)?{sufficient:!1,approvalGasFee:n,approvalGasTokenAddress:a}:{sufficient:!0,approvalGasFee:n,approvalGasTokenAddress:a}:{sufficient:!1,approvalGasFee:n,approvalGasTokenAddress:a}},$u=(e,t,n,a,i)=>{const s=new Map;if(t.approvalGasFee.gt(r.from(0))&&s.set(t.approvalGasTokenAddress,t.approvalGasFee),n){const e=s.get(n.token.address);e?s.set(n.token.address,e.add(n.value)):s.set(n.token.address,n.value)}if(i){const e=s.get(i.address);e?s.set(i.address,e.add(i.amount)):s.set(i.address,i.amount)}for(const e of a){const t=s.get(e.amount.token.address);t?s.set(e.amount.token.address,t.add(e.amount.value)):s.set(e.amount.token.address,e.amount.value)}for(const[t,n]of s.entries()){if(n===r.from(0))continue;const a=e.find((e=>$d(e.token.address)&&$d(t)||Hd(e.token.address,t)));if(!a)return!1;if(a.balance.lt(n))return!1}return!0},Zu=(e,t,n,a,i,s)=>{let o=r.from(0),d="",u=!1;if(t.balanceRequirements.forEach((t=>{t.type!==sd.NATIVE&&t.type!==sd.ERC20||t.required.token.address&&Hd(t.required.token.address,n)&&(d=t.required.token.address,u=!0,o=e.sub(t.required.balance))})),!u)return!0;Hd(i.approvalGasTokenAddress,d)&&(o=o.sub(i.approvalGasFee));for(const e of s)Hd(e.amount.token.address,d)&&(o=o.sub(e.amount.value));return o.gte(a)},Ku=async(e,t,n,a,i,s,o)=>{const d=[];if(!t.swap)return d;if(0===s.length)return d;if(!(e=>e.type===sd.ERC20?!!e.required.token.address:e.type===sd.NATIVE&&$d(e.required.token.address))(a))return d;const u=(e=>{let t="",n=r.from(0);switch(e.type){case sd.ERC20:t=e.required.token.address,n=e.delta.balance;break;case sd.NATIVE:n=e.delta.balance}return{address:t,amount:n}})(a),c=Vd(e),f=i.get(c);if(!f)return d;const l=f.balances;if(0===l.length)return d;const p=await zu(e,Vd(e),n,u,s),h=Array.from(p.keys());for(const e of h){const t=p.get(e);if(!t)continue;const n=l.find((t=>Hd(t.token.address,e)));if(!n)continue;const a=t.quote.amountWithMaxSlippage;if(n.balance.lt(a.value))continue;const r=Xu(l,t.approval);if(!r.sufficient)continue;if(!$u(l,r,t.swap,t.quote.fees,{amount:a.value,address:e}))continue;if(!Zu(n.balance,o,e,a.value,r,t.quote.fees))continue;const i=Hu(t.approval,t.swap,t.quote.fees);d.push(qu(c,a.value,n,i))}return d},Qu=(e,t)=>t&&t.success?e.filter((e=>"address"in e?t.balances.find((t=>Hd(t.token.address,e.address)&&t.balance.gt(0))):t.balances.find((e=>!("address"in e.token)&&e.balance.gt(0))))):[],Yu=async(e,t)=>{if(t.onRamp){return(await Xd(e,{type:Jo.ONRAMP})).tokens}return[]},Ju=async(e,t,n)=>{if(n.bridge){const n=Wd(e),a=(await Xd(e,{type:Jo.BRIDGE,chainId:n})).tokens,r=t.get(n);return Qu(a,r)}return[]},ec=async(e,t,n)=>{const a={};return a.swap=await(async(e,t,n)=>{if(n.swap){const n=(await Xd(e,{type:Jo.SWAP})).tokens,a=t.get(Vd(e));return Qu(n,a)}return[]})(e,t,n),a.bridge=await Ju(e,t,n),a.onRamp=await Yu(e,n),a},tc="0x0000000000000000000000000000000000000eee",nc=async(e,t)=>(await t.remote.getConfig("imxAddressMapping"))[e]??"",ac=async(e,t)=>{if($d(t))return{l1address:await nc(Wd(e),e),l2address:Ad};const n=(a=Vd(e))===Xo.IMTBL_ZKEVM_MAINNET?Zo.IMTBL_ZKEVM_MAINNET:a===Xo.IMTBL_ZKEVM_TESTNET?Zo.IMTBL_ZKEVM_TESTNET:a===Xo.IMTBL_ZKEVM_DEVNET?Zo.IMTBL_ZKEVM_DEVNET:"";var a;const r=wu(e),i=(await r.getToken({chainName:n,contractAddress:t})).result.root_contract_address;return Hd(i??"",tc)?{l1address:"native",l2address:t}:null!==i?{l1address:i,l2address:t}:void 0},rc=(e,t)=>(e=>{for(const t of e.balances)if($d(t.token.address))return t.balance;return r.from(0)})(e).gte(t),ic=(e,t,n,a,r)=>{const i=r?.decimals??Id,o=[];return t.gt(0)&&o.push({type:cd.BRIDGE_FEE,amount:t,formattedAmount:s.formatUnits(t,i),token:r}),n.gt(0)&&o.push({type:cd.IMMUTABLE_FEE,amount:n,formattedAmount:s.formatUnits(n,i),token:r}),{approvalGasFee:{type:cd.GAS,amount:a,formattedAmount:s.formatUnits(a,Id),token:r},bridgeGasFee:{type:cd.GAS,amount:e,formattedAmount:s.formatUnits(e,Id),token:r},bridgeFees:o}},sc=(e,t,n,a,r)=>({type:fd.BRIDGE,chainId:e,fundingItem:{type:a,fundsRequired:{amount:n.amount,formattedAmount:qd(n.formattedAmount)},userBalance:{balance:t.balance,formattedBalance:t.formattedBalance},token:{name:t.token.name,symbol:t.token.symbol,address:t.token.address,decimals:t.token.decimals}},fees:r}),oc=async(e,t,n,a,i)=>{if(!n.bridge)return;const s=Wd(e),o=Vd(e),d=e.networkMap.get(s)?.nativeCurrency,u=i.get(s);if(!t.get(s))throw new md("No L1 provider available",pd.PROVIDER_ERROR,{chainId:s.toString()});if(void 0===u||!1===u.success)return;const c=await Ju(e,i,n);if(0===c.length)return;const f=await ac(e,a.l2address);if(!f)return;const{l1address:l}=f;if($d(l)){if(!c.find((e=>$d(e.address))))return}else if(!c.find((e=>Hd(e.address,l))))return;const p=await(async(e,t,n,a)=>{const i=gu(n,a,t,e);try{return{...await i.getFee({action:Rr.DEPOSIT,gasMultiplier:"auto",sourceChainId:n.toString(),destinationChainId:a.toString()}),approvalGas:r.from(0)}}catch(e){throw new md("Error estimating gas for bridge",pd.BRIDGE_GAS_ESTIMATE_ERROR,{error:e})}})(e,t,s,o),{sourceChainGas:h,approvalGas:m,bridgeFee:b,imtblFee:y,totalFees:g}=p;if(!rc(u,g))return;if($d(l)){const e=u.balances.find((e=>$d(e.token.address)));if(e&&e.balance.gte(a.amount.add(g))){const t=ic(h,b,y,m,d);return sc(s,e,a,sd.NATIVE,t)}return}const E=u.balances.find((e=>Hd(e.token.address,l)));if(E&&E.balance.gte(a.amount)){const e=ic(h,b,y,m,d);return sc(s,E,a,sd.ERC20,e)}},dc=(e,t)=>{let n=r.from(0);return e.quote.fees.forEach((e=>{Hd(e.amount.token.address,t)&&(n=n.add(e.amount.value))})),e.approval&&Hd(e.approval.token.address,t)&&(n=n.add(e.approval.value)),n},uc=(e,t)=>{for(const n of e.balanceRequirements)if((n.type===sd.NATIVE||n.type===sd.ERC20)&&Hd(n.required.token.address,t))return n.required.balance;return r.from(0)},cc=(e,t,n)=>{const a=n?.balance??r.from(0);if(a.gte(e.add(t)))return r.from(0);if(a.lte(0))return e.add(t);const i=a.sub(t);return i.gte(0)?e.sub(i):e.add(t).sub(a)},fc=async(e,t,n,a,i,o,d,u,c)=>{const{l1balances:f,l2balances:l}=((e,t)=>{const n={l1balances:[],l2balances:[]},a=t.get(Wd(e)),r=t.get(Vd(e));return a?void 0!==a.error?n:a.success&&r?void 0!==r.error?n:r.success?{l1balances:a.balances,l2balances:r.balances}:n:n:n})(e,o),p=a.required.token.address;if(((e,t,n,a,r,i)=>0===e.length||0===t.length||0===n.length||0===a.length||!r.bridge||!r.swap||void 0===i||""===i)(d,u,f,l,n,p))return[];const h=await(async(e,t)=>{const n=t.map((t=>ac(e,t.address??"")));return(await Promise.all(n)).filter((e=>void 0!==e))})(e,u),m=((e,t,n,a)=>{const r=[];for(const i of a){if(!t.includes(i.l1address))continue;if(Hd(i.l2address,e))continue;const a=n.find((e=>Hd(e.address,i.l2address)));a&&r.push(a)}return r})(p,d,u,h);if(0===m.length)return[];const b=await(async(e,t,n,a,r)=>{const i=[];for(const e of r)e.address&&i.push(e.address);return await zu(e,Vd(e),t,{address:n,amount:a.delta.balance},i)})(e,i,p,a,m),y=((e,t,n,a,r)=>{const i=[];for(const[o,d]of e){const e=n.find((e=>Hd(e.token.address,o))),u=a.find((e=>Hd(e.l2address,o)));if(!u)continue;const{l1address:c,l2address:f}=u;if(!c)continue;const l=t.find((e=>!(void 0!==e.token.address||!Hd(c,tc))||Hd(e.token.address,c)));if(!l)continue;const p=d.quote.amountWithMaxSlippage.value,h=dc(d,o),m=p.add(h),b=uc(r,o),y=cc(m,b,e);y.lte(0)||y.gte(l.balance)||i.push({amount:y,formattedAmount:qd(s.formatUnits(y,l.token.decimals)),l2address:f})}return i})(b,f,l,h,c);if(0===y.length)return[];const g=new Map,E=new Map,T=[];for(const a of y)a.l2address&&(g.set(a.l2address,oc(e,t,n,a,o)),E.set(a.l2address,{amount:a.amount,formattedAmount:a.formattedAmount,l2address:a.l2address}));const w=await Promise.all(g.values()),v=Array.from(g.keys()),R=[];if(w.forEach(((e,t)=>{const n=v[t];if(void 0===e)return;R.push(n);const a=E.get(n);a&&T.push({amount:a.amount,formattedAmount:a.formattedAmount,l2address:a.l2address})})),0===R.length)return[];if(0===T.length)return[];const I=((e,t,n,a,i)=>{const o=new Map;for(const[e,n]of t)o.set(e,{success:n.success,balances:n.balances});const d=new Map;for(const e of n)e.token.address&&d.set(e.token.address,e);for(const e of a){const{amount:t,l2address:n}=e;if(""===n)continue;let a=r.from(0);const o=d.get(n);o&&(a=o.balance);const u=a.add(t),c=i.find((e=>Hd(e.address,n)));d.set(n,{balance:u,formattedBalance:s.formatUnits(u,c.decimals),token:c})}const u=Array.from(d.values());return o.set(Vd(e),{success:!0,balances:u}),o})(e,o,l,T,u),A=await Ku(e,n,i,a,I,R,c);if(!A)return[];const _=((e,t)=>{const n=[];for(const a of t){const{chainId:t,fundingItem:i}=a,{userBalance:s}=a.fundingItem,o=e.get(t);if(!o)continue;let d=r.from(0),u="0";const c=o.balances.find((e=>Hd(e.token.address,i.token.address)));c&&(d=c.balance,u=c.formattedBalance),s.balance=d,s.formattedBalance=u,n.push(a)}return n})(o,A);return((e,t,n)=>{const a=[];for(const r of e){if(!r)continue;const e=n.find((e=>void 0===r.fundingItem.token.address?Hd(e.l1address,tc)&&e.l2address:Hd(e.l1address,r.fundingItem.token.address)&&e.l2address));if(!e)continue;const i=t.find((t=>Hd(t.fundingItem.token.address,e.l2address)));i&&a.push({bridgeFundingStep:r,swapFundingStep:i})}return a})(w,_,h)},lc=async(e,t,n)=>{if(!t.onRamp)return;if(void 0===n)return;const a=await(async(e,t,n)=>{if(![sd.ERC20,sd.NATIVE].includes(n.type))return;const{required:a,current:r,delta:i}=n;let s=!1;return(await Yu(e,t)).forEach((e=>{e.address&&a.token&&($d(a.token.address)||Hd(e.address,a.token.address))&&(s=!0)})),s?{type:fd.ONRAMP,chainId:Vd(e),fundingItem:{type:$d(a.token.address)?sd.NATIVE:sd.ERC20,fundsRequired:{amount:i.balance,formattedAmount:qd(i.formattedBalance)},userBalance:{balance:r.balance,formattedBalance:r.formattedBalance},token:a.token}}:void 0})(e,t,n);return a},pc=1,hc=2,mc=3,bc=4,yc=(e,t,n,a)=>{if(!e)return;let r;r="bridgeFundingStep"in e&&"swapFundingStep"in e?[e.bridgeFundingStep,e.swapFundingStep]:[e];const i={priority:t,steps:r};n.push(i),a?.(i)},gc=async(e,t,n,a,r)=>{if(!(e=>e.bridge||e.swap||e.onRamp)(a))return{type:ud.NO_ROUTE_OPTIONS,message:"No routing options are available"};let i;try{i=await Vu(e)}catch(e){throw new md("Error occurred while creating read only providers",pd.PROVIDER_ERROR,{error:e})}const s=await Jd(e,"Time to get token balances inside router",(async(e,t,n,a)=>{const r=new Map,i=new Map;if(0===t.size){const t={success:!1,error:new md("No L1 or L2 provider available",pd.PROVIDER_ERROR),balances:[]};return r.set(Wd(e),t),r.set(Vd(e),t),r}if(a.bridge){const a=Wd(e);t.has(a)?i.set(a,iu(e,t.get(a),n,a)):r.set(Wd(e),{success:!1,error:new md(`No L1 provider available for ${a}`,pd.PROVIDER_ERROR),balances:[]})}const s=Vd(e);if(t.has(s)?i.set(s,iu(e,t.get(s),n,s)):r.set(Vd(e),{success:!1,error:new md(`No L2 provider available for ${s}`,pd.PROVIDER_ERROR),balances:[]}),i.size>0){const e=Array.from(i.keys());(await Promise.allSettled(i.values())).forEach(((t,n)=>{const a=e[n];"fulfilled"===t.status?r.set(a,{success:!0,balances:t.value.balances}):r.set(a,{success:!1,error:new md(`Error getting ${s} balances`,pd.GET_BALANCE_ERROR),balances:[]})}))}return r})(e,i,t,a)),o=await Jd(e,"Time to get routing allowlist",ec(e,s,a)),d=(e=>{let t,n=0;for(const a of e.balanceRequirements)a.sufficient||(n++,t=a);if(1===n)return t})(n),u=[],c=[];return a.swap&&u.push((async(e,t,n,a,r,i,s)=>{const o=[];if(!t.swap)return o;if(void 0===n)return o;if(void 0===i)return o;const d=r.get(Vd(e));if(!d)return o;if(void 0!==d.error||!d.success)return o;if(0===i.length)return o;const u=i.filter((e=>e.address)).map((e=>e.address));return 0===u.length?o:await Ku(e,t,a,n,r,u,s)})(e,a,d,t,s,o.swap,n).then((e=>{e.forEach((e=>{yc(e,pc,c,r)}))}))),a.bridge&&u.push((async(e,t,n,a,r)=>{let i;if(void 0===a)return;if(a.type!==sd.NATIVE&&a.type!==sd.ERC20)return;const s={amount:a.delta.balance,formattedAmount:a.delta.formattedBalance,l2address:a.required.token.address??""};return n.bridge&&a&&(i=await oc(e,t,n,s,r)),i})(e,i,a,d,s).then((e=>{yc(e,hc,c,r)}))),a.onRamp&&u.push(lc(e,a,d).then((e=>{yc(e,mc,c,r)}))),a.swap&&a.bridge&&u.push((async(e,t,n,a,r,i,s,o)=>{if(!a)return[];const d=i.get(Wd(e)),u=i.get(Vd(e));if(!d)return[];if(void 0!==d.error||!d.success)return[];if(!u)return[];if(void 0!==u.error||!u.success)return[];const c=(s?.bridge??[]).map((e=>void 0===e.address?tc:e.address)),f=s?.swap??[];return a.type!==sd.NATIVE&&a.type!==sd.ERC20?[]:await fc(e,t,n,a,r,i,c,f,o)})(e,i,a,d,t,s,o,n).then((e=>{e.forEach((e=>{yc(e,bc,c,r)}))}))),await Jd(e,"Time to resolve all routes",Promise.all(u)),0===c.length?{type:ud.NO_ROUTES_FOUND,message:"Smart Checkout did not find any funding routes to fulfill the transaction"}:{type:ud.ROUTES_FOUND,fundingRoutes:c}},Ec=async(e,t,n,a,r,i,s,o,d)=>{const u=!s||n&&o?(e=>({sufficient:!1,balanceRequirements:e.balanceRequirements.map((e=>e.type===sd.ERC20&&e.sufficient?{...e,sufficient:!1,delta:{balance:e.required.balance,formattedBalance:e.required.formattedBalance}}:e))}))(i):i,c=await Jd(e,"Total time to run the routing calculator",gc(e,t,u,a,d));return o?.({sufficient:n,transactionRequirements:r,router:{availableRoutingOptions:a,routingOutcome:c}}),c},Tc=async(e,t,n,a,r,i,s,o=!1)=>{const d=await t.getSigner().getAddress();let u=_u(n);const c=(async(e,t,n)=>{let a=!0;const r=[],i=new Map,s=new Map,o=new Map,d=new Map;for(const a of n){if(a.type!==sd.ERC20)continue;const{tokenAddress:n,spenderAddress:r}=a,o=`${n}${r}`;i.set(o,a),s.set(o,Mu(e,t,n,r))}const u=await Promise.all(s.values()),c=Array.from(s.keys());for(let n=0;n<u.length;n++){const s=i.get(c[n]);if(!s||s.type!==sd.ERC20)continue;if(u[n].gte(s.amount)){r.push({sufficient:!0,itemRequirement:s});continue}a=!1;const{tokenAddress:f,spenderAddress:l}=s,p=`${f}${l}`,h=s.amount.sub(u[n]);o.set(p,{type:sd.ERC20,sufficient:!1,delta:h,itemRequirement:s,approvalTransaction:void 0}),d.set(p,Nu(e,t,f,l,h))}const f=await Promise.all(d.values()),l=Array.from(d.keys());return f.forEach(((e,t)=>{const n=o.get(l[t]);n&&(n.sufficient||(n.approvalTransaction=e))})),{sufficient:a,allowances:r.concat(Array.from(o.values()))}})(t,d,u),f=Du(t,d,u),l=xu(t,d,u),p=await Jd(e,"Time to calculate token allowances",Promise.all([c,f,l])),h=((e,t,n)=>{const a=[];if(!e.sufficient)for(const t of e.allowances)t.sufficient||a.push(t);if(!t.sufficient)for(const e of t.allowances)e.sufficient||a.push(e);if(!n.sufficient)for(const e of n.allowances)e.sufficient||a.push(e);return a})(p[0],p[1],p[2]);let m=null;a&&(m=await Jd(e,"Time to run gas calculator",Bu(t,h,a)),null!==m&&(u.push(m),u=_u(u)));const b=await Jd(e,"Time to run balance checks",Uu(e,t,d,u,!0)),{sufficient:y}=b,g=b.balanceRequirements,E=await Jd(e,"Time to fetch available routing options",(async(e,t)=>{const n={onRamp:e.isOnRampEnabled,swap:e.isSwapEnabled,bridge:e.isBridgeEnabled},a=[];if(n.onRamp&&a.push({id:"onRamp",promise:ju()}),n.swap&&a.push({id:"swap",promise:Wu(e)}),a.length>0){const e=a.map((e=>e.promise));(await Promise.allSettled(e)).forEach(((e,t)=>{const r=a[t].id;n[r]=n[r]&&"fulfilled"===e.status&&e.value}))}return n.bridge=n.bridge&&!(e=>!0===e.provider?.isPassport??!1)(t),n})(e,t));if(!1===r?.onRamp&&(E.onRamp=!1),!1===r?.swap&&(E.swap=!1),!1===r?.bridge&&(E.bridge=!1),i)return Ec(e,d,y,E,g,b,o,i,s),{sufficient:y,transactionRequirements:g};if(y)return{sufficient:y,transactionRequirements:g};return{sufficient:y,transactionRequirements:g,router:{availableRoutingOptions:E,routingOutcome:await Ec(e,d,y,E,g,b,o,i,s)}}};var wc;!function(e){e.SUCCESS="SUCCESS",e.FAILED="FAILED"}(wc||(wc={}));const vc=async(e,t)=>{let n=[];try{const a=await Promise.all(t.map((t=>yu(e,t))));n=await Promise.all(a.map((e=>e.transactionResponse.wait())))}catch(e){throw new md("An error occurred while executing the approval transaction",pd.EXECUTE_APPROVAL_TRANSACTION_ERROR,{error:e})}for(const e of n)if(0===e.status)return{type:wc.FAILED,transactionHash:e.transactionHash,reason:"Approval transaction failed and was reverted"};return{type:wc.SUCCESS}},Rc=async(e,t)=>{let n=[];try{const a=await Promise.all(t.map((t=>yu(e,t))));n=await Promise.all(a.map((e=>e.transactionResponse.wait())))}catch(e){throw new md("An error occurred while executing the fulfillment transaction",pd.EXECUTE_FULFILLMENT_TRANSACTION_ERROR,{error:e})}for(const e of n)if(0===e.status)return{type:wc.FAILED,transactionHash:e.transactionHash,reason:"Fulfillment transaction failed and was reverted"};return{type:wc.SUCCESS}},Ic=async e=>{let t=[];const n=[];for(const t of e)t.type===O.TRANSACTION&&t.purpose===S.FULFILL_ORDER&&n.push(t.buildTransaction());return t=await Promise.all(n),t},Ac=(e,t,n=r.from(1))=>{const a=e.amount,i=Math.round(a.percentageDecimal*10**6),s=t.mul(r.from(i)).div(10**6);return s.sub(s.mod(n))},_c=(e,t)=>{const n=e.amount;return s.parseUnits(n.token,t)},Mc=(e,t,n=18,a=r.from(1))=>{let i=r.from(0);const s=r.from(t),o=s.mul(1e6).div(10**6),d=[];for(const t of e){let e=r.from(0);if(Object.hasOwn(t.amount,"percentageDecimal"))e=Ac(t,s,a),i=i.add(e);else{if(!Object.hasOwn(t.amount,"token"))throw new md("Unknown fee type parsed, must be percentageDecimal or token",pd.ORDER_FEE_ERROR);e=_c(t,n),i=i.add(e)}if(i.gt(o))throw new md("The combined fees are above the allowed maximum of 100%",pd.ORDER_FEE_ERROR);e.gt(0)&&d.push({amount:e.toString(),recipientAddress:t.recipient})}return d},Nc=(e,t,n,a)=>{switch(e){case sd.ERC20:return{type:e,amount:n,tokenAddress:t,spenderAddress:a};case sd.NATIVE:default:return{type:sd.NATIVE,amount:n}}},Cc=async(e,n,a,i={waitFulfillmentSettlements:!0})=>{if(t("checkout_sdk","buy_initiated"),0===a.length)throw new md("No orders were provided to the orders array. Please provide at least one order.",pd.FULFILL_ORDER_LISTING_ERROR);let s,o="",d=18;const u=M.estimatedFulfillmentGasGwei,c=Tu(e),f=wu(e),l=await Jd(e,"Time to get the address from the provider",n.getSigner().getAddress());au(),iu(e,n,l,Wd(e)),iu(e,n,l,Vd(e));const{id:p,takerFees:h,fillAmount:m}=a[0];let b;try{s=await Jd(e,"Time to fetch the listing from the orderbook",c.getListing(p));const{seaportContractAddress:t,chainName:n}=c.config();b=n,o=t}catch(e){throw new md("An error occurred while getting the order listing",pd.GET_ORDER_LISTING_ERROR,{error:e,orderId:p})}if(0===s.result.buy.length)throw new md("An error occurred with the get order listing",pd.GET_ORDER_LISTING_ERROR,{orderId:p,message:"No buy side tokens found on order"});const y=s.result.buy[0];if("ERC20"===y.type){const t=await Jd(e,"Time to get decimals of token contract for the buy token",f.getToken({contractAddress:y.contractAddress,chainName:b}));t.result.decimals&&(d=t.result.decimals)}let g=[];if(h&&h.length>0){const e=s.result.sell[0].type===sd.ERC721?r.from(1):r.from(s.result.sell[0].amount);g=Mc(h,y.amount,d,e)}let E=[],T=[],w=[];const v=performance.now();try{const{actions:t}=await Jd(e,"Time to call fulfillOrder from the orderbook",c.fulfillOrder(p,l,g,m));w=t,E=await Jd(e,"Time to construct the unsigned approval transactions",(async e=>{let t=[];const n=[];for(const t of e)t.type===O.TRANSACTION&&t.purpose===S.APPROVAL&&n.push(t.buildTransaction());return t=await Promise.all(n),t})(t))}catch(t){const n=(performance.now()-v)/1e3;if(Yd(e,"Time to call fulfillOrder from the orderbook",n),t.message.includes(N.EXPIRED))throw new md("Order is expired",pd.ORDER_EXPIRED_ERROR,{orderId:p});if(!t.message.includes("The fulfiller does not have the balances needed to fulfill"))throw new md("Error occurred while trying to fulfill the order",pd.FULFILL_ORDER_LISTING_ERROR,{orderId:p,error:t})}try{T=await Jd(e,"Time to construct the unsigned fulfillment transactions",Ic(w))}catch{}let R=r.from("0"),I=sd.NATIVE,A="";const _=s.result.buy;if(_.length>0)switch(_[0].type){case"NATIVE":I=sd.NATIVE;break;case"ERC20":I=sd.ERC20,A=_[0].contractAddress;break;default:throw new md("Purchasing token type is unsupported",pd.UNSUPPORTED_TOKEN_TYPE_ERROR,{orderId:p})}_.forEach((e=>{e.type!==sd.ERC721&&(R=R.add(r.from(e.amount)))}));s.result.fees.forEach((e=>{R=R.add(r.from(e.amount))})),"ERC1155"===s.result.sell[0].type&&m&&(R=R.mul(r.from(m)).div(r.from(s.result.sell[0].amount)));const C=[Nc(I,A,R,o)],P=await Jd(e,"Total time running smart checkout",Tc(e,n,C,((e,t)=>t.length>0?{type:od.TRANSACTION,transaction:t[0]}:{type:od.GAS,gasToken:{type:dd.NATIVE,limit:r.from(e)}})(u,T)));if(P.sufficient){const e=await vc(n,E);if(e.type===wc.FAILED)return{status:id.FAILED,transactionHash:e.transactionHash,reason:e.reason,smartCheckoutResult:P};try{0===T.length&&(T=await Ic(w))}catch(e){throw new md("Error fetching fulfillment transaction",pd.FULFILL_ORDER_LISTING_ERROR,{error:e})}if(i.waitFulfillmentSettlements){const e=await Rc(n,T);return e.type===wc.FAILED?{status:id.FAILED,transactionHash:e.transactionHash,reason:e.reason,smartCheckoutResult:P}:{status:id.SUCCESS,smartCheckoutResult:P}}let t;try{t=(await Promise.all(T.map((e=>yu(n,e))))).map((e=>e.transactionResponse))}catch(e){throw new md("An error occurred while executing the fulfillment transaction",pd.EXECUTE_FULFILLMENT_TRANSACTION_ERROR,{message:e.message})}return{status:id.FULFILLMENTS_UNSETTLED,smartCheckoutResult:P,transactions:t}}return{status:id.INSUFFICIENT_FUNDS,smartCheckoutResult:P}},Oc=async(e,t,n,a={waitFulfillmentSettlements:!0,useGaslessCancel:!1})=>{const r=Tu(e);return a.useGaslessCancel?await(async(e,t,n)=>{try{const a=t.getSigner(),r=await a.getAddress(),{signableAction:i}=await e.prepareOrderCancellations(n),s=await a._signTypedData(i.message.domain,i.message.types,i.message.value),{result:o}=await e.cancelOrders(n,r,s),d=[],u=[],c=[];for(const e of o.successful_cancellations)d.push({orderId:e});for(const e of o.failed_cancellations)u.push({orderId:e.order,reason:e.reason_code});for(const e of o.pending_cancellations)c.push({orderId:e});return{successfulCancellations:d,failedCancellations:u,pendingCancellations:c}}catch(e){throw new md("An error occurred while cancelling the order listing",pd.CANCEL_ORDER_LISTING_ERROR,{orderIds:n,error:e})}})(r,t,n):await(async(e,t,n,a,r)=>{let i;if(0===a.length)throw new md("No orderIds were provided to the orderIds array. Please provide at least one orderId.",pd.CANCEL_ORDER_LISTING_ERROR);const s=a[0];try{const a=await Jd(e,"Time to get the address from the provider",n.getSigner().getAddress()),r=await Jd(e,"Time to get the cancel order from the orderbook",t.cancelOrdersOnChain([s],a));i=await r.cancellationAction.buildTransaction()}catch(e){throw new md("An error occurred while cancelling the order listing",pd.CANCEL_ORDER_LISTING_ERROR,{orderId:s,error:e})}if(r){const e=await Rc(n,[i]);return e.type===wc.FAILED?{status:id.FAILED,transactionHash:e.transactionHash,reason:e.reason}:{status:id.SUCCESS}}let o;try{o=(await Promise.all([i].map((e=>yu(n,e))))).map((e=>e.transactionResponse))}catch(e){throw new md("An error occurred while executing the fulfillment transaction",pd.EXECUTE_FULFILLMENT_TRANSACTION_ERROR,{message:e.message})}return{status:id.FULFILLMENTS_UNSETTLED,transactions:o}})(e,r,t,n,a.waitFulfillmentSettlements??!0)},Sc=async(e,n,a)=>{let i,d,u="";if(t("checkout_sdk","sell_initiated"),0===a.length)throw new md("No orders were provided to the orders array. Please provide at least one order.",pd.PREPARE_ORDER_LISTING_ERROR);const{buyToken:c,sellToken:f,makerFees:l,orderExpiry:p}=a[0];let h=18;if(c.type===sd.ERC20){const t=new o(c.tokenAddress,JSON.stringify(kd),n);h=await Jd(e,"Time to get decimals of token contract for the buy token",t.decimals())}const m=((e,t=18)=>{const n=s.parseUnits(e.amount,t);return e.type===sd.NATIVE?{type:sd.NATIVE,amount:n.toString()}:{type:sd.ERC20,amount:n.toString(),contractAddress:e.tokenAddress}})(c,h),b="type"in f;try{const t=await Jd(e,"Time to get the address from the provider",n.getSigner().getAddress());i=Tu(e);const{seaportContractAddress:a}=i.config();u=a;const r=b&&f.type===sd.ERC1155?{type:sd.ERC1155,contractAddress:f.collectionAddress,tokenId:f.id,amount:f.amount}:{type:sd.ERC721,contractAddress:f.collectionAddress,tokenId:f.id};d=await Jd(e,"Time to prepare the listing from the orderbook",i.prepareListing({makerAddress:t,buy:m,sell:r,orderExpiry:p}))}catch(e){throw new md("An error occurred while preparing the listing",pd.PREPARE_ORDER_LISTING_ERROR,{error:e,id:f.id,collectionAddress:f.collectionAddress})}const y=[];if(b&&f.type===sd.ERC1155){const e=((e,t,n,a)=>({type:sd.ERC1155,id:e,contractAddress:t,spenderAddress:n,amount:r.from(a)}))(f.id,f.collectionAddress,u,f.amount);y.push(e)}else{const e=((e,t,n)=>({type:sd.ERC721,id:e,contractAddress:t,spenderAddress:n}))(f.id,f.collectionAddress,u);y.push(e)}let g;const E=n.provider?.isPassport;if(g=E?{sufficient:!0,transactionRequirements:[]}:await Jd(e,"Total time running smart checkout",Tc(e,n,y,{type:od.GAS,gasToken:{type:dd.NATIVE,limit:r.from(M.estimatedFulfillmentGasGwei)}})),g.sufficient){const e=await(async e=>{let t=[],n=[];const a=[],r=[];for(const t of e)t.type===O.TRANSACTION&&(t.purpose===S.APPROVAL&&a.push(t.buildTransaction()),t.purpose===S.FULFILL_ORDER&&r.push(t.buildTransaction()));return t=await Promise.all(a),n=await Promise.all(r),{approvalTransactions:t,fulfillmentTransactions:n}})(d.actions),t=await vc(n,e.approvalTransactions);if(t.type===wc.FAILED)return{status:id.FAILED,transactionHash:t.transactionHash,reason:t.reason,smartCheckoutResult:g};const a=((e,t,n)=>{let a;for(const e of n)e.type===O.SIGNABLE&&e.purpose===P.CREATE_LISTING&&(a={domain:e.message.domain,types:e.message.types,value:e.message.value});if(a)return{orderHash:e,orderComponents:t,unsignedMessage:a}})(d.orderHash,d.orderComponents,d.actions);if(!a)throw new md("The unsigned message is missing after preparing the listing",pd.SIGN_MESSAGE_ERROR,{id:f.id,collectionAddress:f.collectionAddress});const s=await(async(e,t)=>{try{const n=await e.getSigner()._signTypedData(t.unsignedMessage.domain,t.unsignedMessage.types,t.unsignedMessage.value);return{orderComponents:t.orderComponents,orderHash:t.orderHash,signedMessage:n}}catch(e){throw new md("An error occurred while signing the message",pd.SIGN_MESSAGE_ERROR,{error:e})}})(n,a);let o="";const u={orderComponents:s.orderComponents,orderHash:s.orderHash,orderSignature:s.signedMessage,makerFees:[]};if(void 0!==l){let e=r.from(1);b&&f.type===sd.ERC1155&&(e=r.from(f.amount));const t=Mc(l,m.amount,h,e);if(t.length!==l.length)throw new md("One of the fees is too small, must be greater than 0.000001",pd.CREATE_ORDER_LISTING_ERROR);u.makerFees=t}try{o=(await i.createListing(u)).result.id}catch(e){throw new md("An error occurred while creating the listing",pd.CREATE_ORDER_LISTING_ERROR,{error:e,collectionId:f.id,collectionAddress:f.collectionAddress})}return{status:id.SUCCESS,orderIds:[o],smartCheckoutResult:g}}return{status:id.INSUFFICIENT_FUNDS,smartCheckoutResult:g}};class Pc{config;constructor(e){this.config=e}async feeEstimate(){const e=await this.config.remote.getConfig("onramp");return e[Ko.TRANSAK]?.fees}async createWidgetUrl(e){return await this.getTransakWidgetUrl(e)}async getTransakWidgetUrl(e){const t=await this.config.remote.getConfig("onramp"),n=Od[this.config.environment];let a={apiKey:t[Ko.TRANSAK].publishableApiKey,network:"immutablezkevm",defaultPaymentMethod:"credit_debit_card",disablePaymentMethods:"",productsAvailed:"buy",exchangeScreenTitle:"Buy",themeColor:"0D0D0D",defaultCryptoCurrency:e.tokenSymbol||"IMX"};return e.isPassport&&e.email&&(a={...a,email:encodeURIComponent(e.email),isAutoFillUserData:!0,disableWalletAddressForm:!0}),a=e.tokenAmount&&e.tokenSymbol?{...a,defaultCryptoAmount:e.tokenAmount,cryptoCurrencyCode:e.tokenSymbol}:{...a,defaultFiatAmount:50,defaultFiatCurrency:"usd"},e.walletAddress&&(a={...a,walletAddress:e.walletAddress}),e.allowedTokens&&(a={...a,cryptoCurrencyList:e.allowedTokens?.join(",").toLowerCase()}),`${n}?${new URLSearchParams(a).toString()}`}}async function Dc(e,t){const n=[];t.forEach((t=>{if(t.type===sd.ERC20){const{tokenAddress:s}=t;n.push((a=s,r=kd,i=e,new o(a,r,i)).decimals())}var a,r,i}));const a=await Promise.all(n);return t.map(((e,t)=>e.type===sd.NATIVE?{...e,amount:s.parseUnits(e.amount,18)}:e.type===sd.ERC20?{...e,amount:s.parseUnits(e.amount,a[t])}:e))}function xc(e){const t=Bd();if(void 0===e||void 0===e.major)return t;if(!Number.isInteger(e.major)||e.major<0)return t;if(void 0!==e.minor&&e.minor<0)return t;if(void 0!==e.patch&&e.patch<0)return t;if(0===e.major&&void 0===e.minor)return t;if(0===e.major&&0===e.minor&&void 0===e.patch)return t;if(0===e.major&&void 0===e.minor&&void 0===e.patch)return t;if(0===e.major&&0===e.minor&&0===e.patch)return t;let n=e.major.toString();return void 0===e.minor?n:(Number.isInteger(e.minor)&&(n+=`.${e.minor.toString()}`),void 0===e.patch?n:(Number.isInteger(e.patch)&&(n+=`.${e.patch.toString()}`),void 0===e.prerelease||"alpha"!==e.prerelease?n:("alpha"===e.prerelease&&(n+=`-${e.prerelease}`),void 0===e.build||Number.isInteger(e.build)&&e.build>=0&&(n+=`.${e.build.toString()}`),n)))}const kc=["https://checkout-api.dev.immutable.com","https://checkout-api.sandbox.immutable.com","https://checkout-api.immutable.com"];class Lc{config;axiosInstance;constructor(e){this.config=e,this.axiosInstance=d.create(),this.setupInterceptors()}shouldAddPublishableKey(e){return kc.some((t=>e.startsWith(t)))}setupInterceptors(){this.axiosInstance.interceptors.request.use((e=>{const t=this.config?.baseConfig?.publishableKey;if(t&&this.shouldAddPublishableKey(e.url||"")){if(!t.startsWith("pk_imapik-"))throw new Error("Invalid Publishable key. Create your Publishable key in Immutable developer hub. https://hub.immutable.com");e.headers["x-immutable-publishable-key"]=t}return e}),(e=>Promise.reject(e)))}async request(e){return await this.axiosInstance.request(e)}async get(e,t){const n={...t,url:e};return await this.request(n)}async post(e,t,n){const a={...n,data:t,url:e};return await this.request(a)}async put(e,t,n){const a={...n,data:t,url:e};return await this.request(a)}async delete(e,t,n){const a={...n,data:t,url:e};return await this.request(a)}}const Uc={baseConfig:{environment:e.SANDBOX},passport:void 0};class Fc{readOnlyProviders;httpClient;config;fiatRampService;availability;passport;constructor(e=Uc){this.httpClient=new Lc(e),this.config=new zd(e,this.httpClient),this.fiatRampService=new Pc(this.config),this.readOnlyProviders=new Map,this.availability=Gu(this.config.isDevelopment,this.config.isProduction),this.passport=e.passport,ou.getInstance().initialise(),t("checkout_sdk","initialised")}async widgets(e){await this.config.remote.getConfig();try{return await this.loadEsModules(e.config,e.version)}catch(e){throw new md("Failed to load widgets script",pd.WIDGETS_SCRIPT_LOAD_ERROR,{error:e})}}async loadUmdBundle(e,t){const n=this;return new Promise(((a,r)=>{try{const i="immutable-checkout-widgets-bundle",s=xc(t);document.getElementById(i)&&("undefined"!=typeof ImmutableCheckoutWidgets?a(new ImmutableCheckoutWidgets.WidgetsFactory(n,e)):r(new md("Failed to find ImmutableCheckoutWidgets script",pd.WIDGETS_SCRIPT_LOAD_ERROR)));const o=document.createElement("script");o.addEventListener("load",(()=>{"undefined"!=typeof ImmutableCheckoutWidgets?a(new ImmutableCheckoutWidgets.WidgetsFactory(n,e)):r(new md("Failed to find ImmutableCheckoutWidgets script",pd.WIDGETS_SCRIPT_LOAD_ERROR))})),o.addEventListener("error",(e=>{r(new md("Failed to load widgets script",pd.WIDGETS_SCRIPT_LOAD_ERROR,{error:e}))})),function(e,t,n){if(void 0===window)throw new Error("missing window object: please run Checkout client side");if(void 0===document)throw new Error("missing document object: please run Checkout client side");let a=`https://cdn.jsdelivr.net/npm/@imtbl/sdk@${n}/dist/browser/checkout/widgets.js`;e.setAttribute("id",t),e.setAttribute("data-version",n),e.setAttribute("src",a),document.head.appendChild(e)}(o,i,s)}catch(e){r(new md("Failed to load widgets script",pd.WIDGETS_SCRIPT_LOAD_ERROR,{error:e}))}}))}async loadEsModules(e,t){const n=this;try{const a=function(e){return`https://cdn.jsdelivr.net/npm/@imtbl/sdk@${xc(e)}/dist/browser/checkout/widgets-esm.js`}(t),r=await import(a);if(r&&r.WidgetsFactory)return new r.WidgetsFactory(n,e)}catch(e){console.warn(`Failed to resolve checkout widgets module, falling back to UMD bundle. Error: ${e.message}`)}return await n.loadUmdBundle(e,t)}async createProvider(e){return await lu(e.walletProviderName,this.passport)}getInjectedProviders(){return ou.getInstance().getProviders()}findInjectedProvider(e){return ou.getInstance().findProvider(e)}onInjectedProvidersChange(e){return ou.getInstance().subscribe(e)}async checkIsWalletConnected(e){return async function(e){if(!e?.provider?.request)throw new md("Check wallet connection request failed",pd.PROVIDER_REQUEST_FAILED_ERROR,{rpcMethod:ed.CHECK_CONNECTION});let t=[];try{t=await e.provider.request({method:ed.CHECK_CONNECTION,params:[]})}catch(e){throw new md("Check wallet connection request failed",pd.PROVIDER_REQUEST_FAILED_ERROR,{error:e,rpcMethod:ed.CHECK_CONNECTION})}return{isConnected:t&&t.length>0,walletAddress:t[0]??""}}(await hu(this.config,e.provider,{allowMistmatchedChainId:!0,allowUnsupportedProvider:!0}))}async connect(e){const t=await hu(this.config,e.provider,{allowUnsupportedProvider:!0,allowMistmatchedChainId:!0});return e.requestWalletPermissions&&!t.provider?.isPassport?await async function(e){if(!e||!e.provider?.request)throw new md("Incompatible provider",pd.PROVIDER_REQUEST_MISSING_ERROR,{details:"Attempting to connect with an incompatible provider"});return await bd((async()=>{e.provider.request&&await e.provider.request({method:ed.REQUEST_PERMISSIONS,params:[{eth_accounts:{}}]})}),{type:pd.USER_REJECTED_REQUEST_ERROR}),e}(t):await async function(e){if(!e||!e.provider?.request)throw new md("Incompatible provider",pd.PROVIDER_REQUEST_MISSING_ERROR,{details:"Attempting to connect with an incompatible provider"});return await bd((async()=>{e.provider.request&&await e.provider.request({method:ed.CONNECT,params:[]})}),{type:pd.USER_REJECTED_REQUEST_ERROR}),e}(t),{provider:t}}async addNetwork(e){return await Ed(this.config.networkMap,e.provider,e.chainId)}async switchNetwork(e){const t=await hu(this.config,e.provider,{allowUnsupportedProvider:!0,allowMistmatchedChainId:!0});return await vd(this.config,t,e.chainId)}async getTokenInfo(e){return await Zd(e.provider,e.tokenAddress)}async getBalance(e){const t=await hu(this.config,e.provider);return e.tokenAddress&&""!==e.tokenAddress?await tu(t,e.walletAddress,e.tokenAddress):await eu(this.config,t,e.walletAddress)}async getAllBalances(e){return iu(this.config,e.provider,e.walletAddress,e.chainId)}async getNetworkAllowList(e){return await Td(this.config,e)}async getTokenAllowList(e){return await Xd(this.config,e)}async getWalletAllowList(e){return await async function(e){const t=[],n=e.exclude?.map((e=>e.walletProviderName))??[];let a=Object.values(nd);0!==n.length&&(a=a.filter((e=>!n.includes(e))));for(const e of a)t.push({walletProviderName:e});return{wallets:t}}(e)}async sendTransaction(e){const t=await hu(this.config,e.provider,{allowUnsupportedProvider:!0,allowMistmatchedChainId:!0});return await yu(t,e.transaction)}async providerCall(e,t){const n=await hu(this.config,e,{allowUnsupportedProvider:!0,allowMistmatchedChainId:!0});try{return await t(n)}catch(e){throw bu(e)}}async getNetworkInfo(e){const t=await hu(this.config,e.provider,{allowUnsupportedProvider:!0,allowMistmatchedChainId:!0});return await wd(this.config,t)}async buy(e){e.orders.length>1&&console.warn("This endpoint currently only processes the first order in the array.");const t=await hu(this.config,e.provider);return await Cc(this.config,t,e.orders,e.overrides)}async sell(e){e.orders.length>1&&console.warn("This endpoint currently only processes the first order in the array.");const t=await hu(this.config,e.provider);return await Sc(this.config,t,e.orders)}async cancel(e){console.warn("This endpoint currently only processes the first order in the array.");const t=await hu(this.config,e.provider);return await Oc(this.config,t,e.orderIds,e.overrides)}async smartCheckout(e){const t=await hu(this.config,e.provider);let n=[];try{n=await Dc(t,e.itemRequirements)}catch(e){throw new md("Failed to map item requirements",pd.ITEM_REQUIREMENTS_ERROR,{error:e})}return await Tc(this.config,t,n,e.transactionOrGasAmount,e.routingOptions,e.onComplete,e.onFundingRoute,e.fundingRouteFullAmount)}static isWeb3Provider(e){return pu(e)}async gasEstimate(e){return this.readOnlyProviders=await Vu(this.config,this.readOnlyProviders),await Au(e,this.readOnlyProviders,this.config)}async createFiatRampUrl(e){let t,n,a="IMX";const r=await e.web3Provider.getSigner().getAddress(),i=e.web3Provider.provider?.isPassport||!1;if(i&&e.passport){const t=await e.passport.getUserInfo();n=t?.email}const s=await Xd(this.config,{type:Jo.ONRAMP}),o=s.tokens?.find((t=>Hd(t.address,e.tokenAddress)));o&&(t=e.tokenAmount,a=o.symbol);const d=s?.tokens?.filter((e=>e.symbol)).map((e=>e.symbol));return await this.fiatRampService.createWidgetUrl({exchangeType:e.exchangeType,isPassport:i,walletAddress:r,tokenAmount:t,tokenSymbol:a,email:n,allowedTokens:d})}async getExchangeFeeEstimate(){return await this.fiatRampService.feeEstimate()}async isSwapAvailable(){return this.availability.checkDexAvailability()}}class Bc{static getTransactionLink(e,t){const n=xd?.[e]?.url;if(n&&t)return`${n}/tx/${t}`}}var Gc=Object.freeze({__proto__:null,BlockExplorerService:Bc,get BridgeEventType(){return jo},get ChainId(){return Xo},get ChainName(){return $o},get ChainSlug(){return Zo},Checkout:Fc,CheckoutConfiguration:zd,get CheckoutErrorType(){return pd},get CheckoutStatus(){return id},get ConnectEventType(){return Lo},get ConnectTargetLayer(){return Ho},get ExchangeType(){return ld},get FeeType(){return cd},get FundingStepType(){return fd},get GasEstimateType(){return Qo},get GasTokenType(){return dd},IMMUTABLE_API_BASE_URL:Nd,get IMTBLWidgetEvents(){return xo},get ItemType(){return sd},get NetworkFilterTypes(){return Yo},get OnRampEventType(){return Vo},get OrchestrationEventType(){return Wo},get ProviderEventType(){return ko},get RoutingOutcomeType(){return ud},get SaleEventType(){return Bo},get SalePaymentTypes(){return Go},get SwapEventType(){return Fo},get TokenFilterTypes(){return Jo},get TransactionOrGasType(){return od},get WalletEventType(){return Uo},get WalletFilterTypes(){return td},get WalletProviderName(){return nd},get WalletProviderRdns(){return ad},get WidgetTheme(){return qo},get WidgetType(){return zo},getMetaMaskProviderDetail:fu,getPassportProviderDetail:cu,validateProvider:hu});export{Bc as B,Xo as C,ld as E,cd as F,Qo as G,Nd as I,Yo as N,Vo as O,ko as P,ud as R,Bo as S,Jo as T,Uo as W,jo as a,$o as b,Gc as c,Zo as d,Fc as e,zd as f,pd as g,id as h,Lo as i,Ho as j,fd as k,dd as l,xo as m,sd as n,Wo as o,Go as p,Fo as q,od as r,td as s,nd as t,ad as u,qo as v,zo as w,fu as x,cu as y,hu as z};